rfc9555.original.xml | rfc9555.xml | |||
---|---|---|---|---|
<?xml version="1.0" encoding="utf-8"?> | <?xml version="1.0" encoding="UTF-8"?> | |||
<!DOCTYPE rfc [ | <!DOCTYPE rfc [ | |||
<!ENTITY nbsp " "> | <!ENTITY nbsp " "> | |||
<!ENTITY zwsp "​"> | <!ENTITY zwsp "​"> | |||
<!ENTITY nbhy "‑"> | <!ENTITY nbhy "‑"> | |||
<!ENTITY wj "⁠"> | <!ENTITY wj "⁠"> | |||
]> | ]> | |||
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt"?> | ||||
<?rfc toc="yes"?> | <rfc xmlns:xi="http://www.w3.org/2001/XInclude" submissionType="IETF" category=" | |||
<?rfc tocompact="yes"?> | std" consensus="true" docName="draft-ietf-calext-jscontact-vcard-14" number="955 | |||
<?rfc tocdepth="4"?> | 5" ipr="pre5378Trust200902" tocInclude="true" tocDepth="4" sortRefs="true" symRe | |||
<?rfc compact="yes"?> | fs="true" updates="6350" obsoletes="" xml:lang="en" version="3"> | |||
<?rfc subcompact="yes"?> | ||||
<?rfc sortrefs="yes"?> | <!--[rfced] *AD, please review the following changes that were | |||
<?rfc symrefs="yes"?> | submitted after the document was approved and let us know if you | |||
<?rfc iprnotified="no"?> | approve. The updates can be viewed in this diff file: | |||
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" submissionType="IETF" category=" | https://www.rfc-editor.org/authors/rfc9555-ad-diff.html | |||
std" consensus="true" docName="draft-ietf-calext-jscontact-vcard-13" ipr="pre537 | ||||
8Trust200902" tocInclude="true" tocDepth="4" sortRefs="true" symRefs="true" upda | Section 2.3.10 ("Novelist" instead of "Boss" and "Écrivain" | |||
tes="6350" version="3"> | instead of "Patron" in Figure 5) | |||
Section 2.5.2 (removal of comma in Figure 11) | ||||
Section 2.6.1 (removal of comma in Figure 16) | ||||
Section 2.9.6 ("organizationId" instead of "organization" - two | ||||
instances; "Research Scientist" instead of "Project Leader" and | ||||
"Project Leader" instead of "Research Scientist" in Figure 28) | ||||
Section 3.2.1 (addition of comma in Figure 51) | ||||
Section 3.3.1 (addition of text under "Format definition") | ||||
Appendix A ("organizationId" instead of "organization") | ||||
--> | ||||
<!--[rfced] Would you like to update the short title that spans the | ||||
header of the PDF file to be more descriptive? Note that there is | ||||
ample room if you want to use the document's title instead. | ||||
Please let us know your preference. | ||||
Original: | ||||
jscontact-vcard | ||||
Perhaps: | ||||
Converting JSContact and vCard | ||||
--> | ||||
<!-- xml2rfc v2v3 conversion 3.12.10 --> | <!-- xml2rfc v2v3 conversion 3.12.10 --> | |||
<front> | <front> | |||
<title abbrev="jscontact-vcard">JSContact: Converting from and to vCard</tit | <title abbrev="JSContact-vCard">JSContact: Converting from and to vCard</tit | |||
le> | le> | |||
<seriesInfo name="Internet-Draft" value="draft-ietf-calext-jscontact-vcard-1 | <seriesInfo name="RFC" value="9555"/> | |||
3"/> | ||||
<author fullname="Mario Loffredo" initials="M." surname="Loffredo"> | <author fullname="Mario Loffredo" initials="M." surname="Loffredo"> | |||
<organization>IIT-CNR/Registro.it</organization> | <organization>IIT-CNR/Registro.it</organization> | |||
<address> | <address> | |||
<postal> | <postal> | |||
<street>Via Moruzzi,1</street> | <street>Via Moruzzi, 1</street> | |||
<city>Pisa</city> | <city>Pisa</city> | |||
<country>IT</country> | <country>Italy</country> | |||
<code>56124</code> | <code>56124</code> | |||
</postal> | </postal> | |||
<email>mario.loffredo@iit.cnr.it</email> | <email>mario.loffredo@iit.cnr.it</email> | |||
<uri>https://www.iit.cnr.it</uri> | <uri>https://www.iit.cnr.it</uri> | |||
</address> | </address> | |||
</author> | </author> | |||
<author fullname="Robert Stepanek" initials="R." surname="Stepanek"> | <author fullname="Robert Stepanek" initials="R." surname="Stepanek"> | |||
<organization>Fastmail</organization> | <organization>Fastmail</organization> | |||
<address> | <address> | |||
<postal> | <postal> | |||
<street>PO Box 234, Collins St West</street> | <extaddr>PO Box 234</extaddr> | |||
<street>Collins St. West</street> | ||||
<city>Melbourne</city> | <city>Melbourne</city> | |||
<country>AU</country> | <region>VIC</region> | |||
<code>VIC 8007</code> | <code>8007</code> | |||
<country>Australia</country> | ||||
</postal> | </postal> | |||
<email>rsto@fastmailteam.com</email> | <email>rsto@fastmailteam.com</email> | |||
<uri>https://www.fastmail.com</uri> | <uri>https://www.fastmail.com</uri> | |||
</address> | </address> | |||
</author> | </author> | |||
<date year="2023" month="September" day="18"/> | <date year="2024" month="March"/> | |||
<area>Applications</area> | <area>art</area> | |||
<workgroup>calext</workgroup> | <workgroup>calext</workgroup> | |||
<keyword>JSON</keyword> | <keyword>JSON</keyword> | |||
<keyword>contacts</keyword> | <keyword>contacts</keyword> | |||
<keyword>vCard</keyword> | <keyword>vCard</keyword> | |||
<keyword>jCard</keyword> | <keyword>jCard</keyword> | |||
<abstract> | <abstract> | |||
<t>This document defines how to convert contact information between the JS | ||||
Contact and vCard data formats. To achieve this, it updates RFC I-D.ietf-calext | <!--[rfced] Since this document does not officially "update" RFC 9553, | |||
-jscontact (JSContact) by registering new JSContact properties. Similarly, it u | should "it updates" be changed to "it expands on" or "it builds | |||
pdates RFC 6350 (vCard) by registering new vCard properties and parameters.</t> | upon" to avoid any confusion for the reader? Please review and | |||
let us know your preference. | ||||
Original: | ||||
To achieve this, it updates RFC I-D.ietf-calext-jscontact | ||||
(JSContact) by registering new JSContact properties. | ||||
Perhaps: | ||||
To achieve this, it expands on RFC 9553 ("JSContact: A JSON | ||||
Representation of Contact Data") by registering new JSContact | ||||
properties. | ||||
--> | ||||
<t>This document defines how to convert contact information between the JS | ||||
Contact and vCard data formats. To achieve this, it updates <xref target="RFC955 | ||||
3"/> ("JSContact: A JSON Representation of Contact Data") by registering new JSC | ||||
ontact properties. Similarly, it updates RFC 6350 ("vCard Format Specification" | ||||
) by registering new vCard properties and parameters.</t> | ||||
</abstract> | </abstract> | |||
</front> | </front> | |||
<middle> | <middle> | |||
<section> | <section> | |||
<name>Introduction</name> | <name>Introduction</name> | |||
<section> | <section> | |||
<name>Motivation</name> | <name>Motivation</name> | |||
<t>The JSContact data model and format <xref target="I-D.ietf-calext-jsc | <t>The JSContact data model and format <xref target="RFC9553"/> aims to | |||
ontact"/> aims to be an alternative to the widely used vCard <xref target="RFC63 | be an alternative to the widely used vCard standard <xref target="RFC6350"/> and | |||
50"/> standard and jCard <xref target="RFC7095"/>.</t> | jCard format <xref target="RFC7095"/>.</t> | |||
<t>While applications might prefer JSContact to exchange contact card da | <t>While applications might prefer JSContact to exchange contact card da | |||
ta with other systems, they are likely to interoperate with services and clients | ta with other systems, they are likely to interoperate with services and clients | |||
that only support vCard or jCard. Similarly, existing contact data providers a | that only support vCard or jCard. Similarly, existing contact data providers a | |||
nd consumers already using vCard or jCard might want to represent their contact | nd consumers already using vCard or jCard might also want to represent their con | |||
data also in JSContact.</t> | tact data in JSContact.</t> | |||
<t>To achieve this, this document defines standard rules to convert cont act data between JSContact and vCard (and consequently jCard). </t> | <t>To achieve this, this document defines standard rules to convert cont act data between JSContact and vCard (and consequently jCard). </t> | |||
</section> | </section> | |||
<section anchor="notational-conventions" numbered="true" toc="default"> | <section anchor="notational-conventions" numbered="true" toc="default"> | |||
<name>Notational Conventions</name> | <name>Notational Conventions</name> | |||
<t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp 14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL NOT</bcp14>", "<bcp1 4>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "< bcp14>NOT RECOMMENDED</bcp14>", "<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp1 4>" in this document are to be interpreted as described in BCP 14 <xref target=" RFC2119" format="default" sectionFormat="of" derivedContent="RFC2119"/> <xref ta rget="RFC8174" format="default" sectionFormat="of" derivedContent="RFC8174"/> wh en, and only when, they appear in all capitals, as shown here.</t> | <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp 14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL NOT</bcp14>", "<bcp1 4>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "< bcp14>NOT RECOMMENDED</bcp14>", "<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp1 4>" in this document are to be interpreted as described in BCP 14 <xref target=" RFC2119" format="default" sectionFormat="of" derivedContent="RFC2119"/> <xref ta rget="RFC8174" format="default" sectionFormat="of" derivedContent="RFC8174"/> wh en, and only when, they appear in all capitals, as shown here.</t> | |||
</section> | </section> | |||
<section anchor="abnf-notations"> | <section anchor="abnf-notations"> | |||
<name>ABNF Notations</name> | <name>ABNF Notations</name> | |||
<t>The ABNF definitions in this document use the notations of <xref targ et="RFC5234"/>. ABNF rules not defined in this document either are defined in <x ref target="RFC5234"/> (such as the ABNF for CRLF, WSP, DQUOTE, VCHAR, ALPHA, an d DIGIT) or <xref target="RFC6350"/>. | <t>The ABNF definitions in this document use the notations of <xref targ et="RFC5234"/>. ABNF rules not defined in this document are defined in either <x ref target="RFC5234"/> (such as the ABNF for CRLF, WSP, DQUOTE, VCHAR, ALPHA, an d DIGIT) or <xref target="RFC6350"/>. | |||
</t> | </t> | |||
</section> | </section> | |||
</section> | </section> | |||
<section anchor="vcard-jscontact-conversion"> | <section anchor="vcard-jscontact-conversion"> | |||
<name>Converting vCard to JSContact</name> | <name>Converting vCard to JSContact</name> | |||
<t>This section contains the conversion rules from vCard to JSContact Card . It follows the same structure as the <xref target="RFC6350">vCard v4</xref>. Properties and parameters of vCard extension RFCs, including the <xref target=" I-D.ietf-calext-vcard-jscontact-extensions">vCard JSContact Extension</xref> are added to appropriate subsections.</t> | <t>This section contains the conversion rules from the vCard to the JSCont act Card. It follows the same structure as vCard v4 <xref target="RFC6350"/>. Properties and parameters of vCard extension RFCs, including those described in "vCard Format Extension for JSContact" <xref target="RFC9554"/>, have been added to the appropriate subsections.</t> | |||
<section> | <section> | |||
<name>General rules</name> | <name>General Rules</name> | |||
<section> | <section> | |||
<name>The <tt>uid</tt> property</name> | ||||
<t>The UID property in vCard is optional, but the <tt>uid</tt> propert | <!-- [rfced] In the html and pdf outputs, the text enclosed in <tt> is output | |||
y in JSContact is mandatory. Implementations that convert a vCard without UID p | in fixed-width font. In the txt output, there are no changes to the font, | |||
roperty <bcp14>MUST</bcp14> generate a unique identifier as a value for the <tt> | and the quotation marks have been removed. | |||
uid</tt> property. This value <bcp14>SHOULD</bcp14> be the same when converting | ||||
the same vCard multiple times, but how to achieve this is implementation-specif | In the html and pdf outputs, the text enclosed in <em> is output in | |||
ic.</t> | italics. In the txt output, the text enclosed in <em> appears with an | |||
underscore before and after. | ||||
Please review carefully and let us know if the output is acceptable. | ||||
Also, please review if each term is consistently tagged and let us | ||||
know if any updates are needed. For instance, we notice that some | ||||
terms are enclosed with <tt> whereas others are not or are enclosed | ||||
with quote marks. Below are a few examples; please see the text for | ||||
more instances. | ||||
In the XML file (Sections 2.4.3, 2.10.3, and 2.10.4, respectively): | ||||
The <tt>kind</tt> property is set to <tt>entry</tt> | ||||
The <tt>kind</tt> property is set to "interest". | ||||
The kind property is set to directory. | ||||
--> | ||||
<name>The <tt>uid</tt> Property</name> | ||||
<t>The UID property in vCard is optional, but the <tt>uid</tt> propert | ||||
y in JSContact is mandatory. Implementations that convert a vCard without a UID | ||||
property <bcp14>MUST</bcp14> generate a unique identifier as a value for the <t | ||||
t>uid</tt> property. This value <bcp14>SHOULD</bcp14> be the same when converti | ||||
ng the same vCard multiple times, but how to achieve this is implementation-spec | ||||
ific.</t> | ||||
</section> | </section> | |||
<section> | <section> | |||
<name>Choosing identifiers</name> | <name>Choosing Identifiers</name> | |||
<t>Multivalued properties in JSContact typically are represented as a | <t>Multivalued properties in JSContact are typically represented as a | |||
JSON object where the object keys are of the <tt>Id</tt> type and the object val | JSON object where the object keys are of the <tt>Id</tt> type and the object val | |||
ues are the converted vCard property. In absence of the PROP-ID parameter (see | ues are the converted vCard property. In the absence of the PROP-ID parameter ( | |||
<xref target="vcard-param-propid"/>), implementations are free to choose any ide | see <xref target="vcard-param-propid"/>), implementations are free to choose any | |||
ntifier for such entries. Whatever identifier generation scheme implementations | identifier for such entries. Whatever identifier generation scheme implementat | |||
use, they <bcp14>MUST</bcp14> generate values that are valid according to the d | ions use, they <bcp14>MUST</bcp14> generate values that are valid according to t | |||
efinition of the <tt>Id</tt> type in <xref target="I-D.ietf-calext-jscontact"/>. | he definition of the <tt>Id</tt> type in <xref target="RFC9553"/>. For example, | |||
For example, this could be an incrementing number across all <tt>Id</tt>s or o | this could be an incrementing number across all <tt>Id</tt>s or only unique wit | |||
nly unique within one JSON object.</t> | hin one JSON object.</t> | |||
</section> | </section> | |||
</section> | </section> | |||
<!--[rfced] Within Sections 2.1 to 2.14, there is inconsistency in the | ||||
way the property and parameter names are introduced, i.e., some | ||||
of the lead-in sentences begin with "This" and some begin with | ||||
the names. We made this consistent by replacing "This" with the | ||||
property/parameter names. Please review. | ||||
One example | ||||
Original: | ||||
This converts to the JSContact Boolean type. | ||||
Current: | ||||
The BOOLEAN type converts to the JSContact Boolean type. | ||||
--> | ||||
<section anchor="vcard-types"> | <section anchor="vcard-types"> | |||
<name>vCard Value Data Types</name> | <name>vCard Value Data Types</name> | |||
<section> | <section> | |||
<name>BOOLEAN</name> | <name>BOOLEAN</name> | |||
<t>This converts to the JSContact <tt>Boolean</tt> type.</t> | <t>The BOOLEAN type converts to the JSContact <tt>Boolean</tt> type.</ t> | |||
</section> | </section> | |||
<section anchor="vcard-type-datetime"> | <section anchor="vcard-type-datetime"> | |||
<name>DATE, TIME, DATE-TIME, DATE-AND-OR-TIME, and TIMESTAMP</name> | <name>DATE, TIME, DATE-TIME, DATE-AND-OR-TIME, and TIMESTAMP</name> | |||
<t>The TIMESTAMP type generally converts to the <tt>UTCDateTime</tt>. | <t>The TIMESTAMP type generally converts to the <tt>UTCDateTime</tt> t | |||
It converts to the <tt>Timestamp</tt> type for anniversaries.</t> | ype. It converts to the <tt>Timestamp</tt> type for anniversaries.</t> | |||
<t>The DATE type converts to the <tt>PartialDate</tt> type, which only | <t>The DATE type converts to the <tt>PartialDate</tt> type, which is o | |||
is relevant for anniversaries. This does not apply to DATE values that only de | nly relevant for anniversaries. This does not apply to DATE values that only de | |||
fine a month or a day.</t> | fine a month or day.</t> | |||
<t>The TIME, DATE-TIME, DATE-AND-OR-TIME types and DATE type values th | <t>The TIME, DATE-TIME, and DATE-AND-OR-TIME types and DATE type value | |||
at only define a month or day do not convert to a JSContact datetime type. Inst | s that only define a month or day do not convert to a JSContact datetime type. | |||
ead, vCard properties or parameters having such values convert to the properties | Instead, vCard properties or parameters having such values convert to the proper | |||
defined in <xref target="new-jscontact"/>.</t> | ties defined in <xref target="new-jscontact"/>.</t> | |||
</section> | </section> | |||
<section> | <section> | |||
<name>INTEGER</name> | <name>INTEGER</name> | |||
<t>This converts to the JSContact <tt>Int</tt> and <tt>UnsignedInt</tt > types.</t> | <t>The INTEGER type converts to the JSContact <tt>Int</tt> and <tt>Uns ignedInt</tt> types.</t> | |||
</section> | </section> | |||
<section> | <section> | |||
<name>FLOAT</name> | <name>FLOAT</name> | |||
<t>This converts to the JSContact <tt>Number</tt> type.</t> | <t>The FLOAT type converts to the JSContact <tt>Number</tt> type.</t> | |||
</section> | </section> | |||
<section> | <section> | |||
<name>LANGUAGE-TAG</name> | <name>LANGUAGE-TAG</name> | |||
<t>This converts to the JSContact <tt>String</tt> type.</t> | <t>The LANGUAGE-TAG type converts to the JSContact <tt>String</tt> typ e.</t> | |||
</section> | </section> | |||
<section> | <section> | |||
<name>TEXT</name> | <name>TEXT</name> | |||
<t>This converts to the JSContact <tt>String</tt> type.</t> | <t>The TEXT type converts to the JSContact <tt>String</tt> type.</t> | |||
</section> | </section> | |||
<section> | <section> | |||
<name>URI</name> | <name>URI</name> | |||
<t>This converts to the JSContact <tt>String</tt> type.</t> | <t>The URI type converts to the JSContact <tt>String</tt> type.</t> | |||
</section> | </section> | |||
<section> | <section> | |||
<name>UTC-OFFSET</name> | <name>UTC-OFFSET</name> | |||
<t>This either converts to a <tt>String</tt> containing an IANA TimeZo ne Database entry name (see <xref target="vcard-prop-tz"/>), or it does not conv ert to any JSContact type. For the latter, vCard properties or parameters havin g such values <bcp14>MAY</bcp14> convert to JSContact as defined in <xref target ="new-jscontact"/>. </t> | <t>The UTC-OFFSET type either converts to a <tt>String</tt> containing an IANA Time Zone Database entry name (see <xref target="vcard-prop-tz"/>) or d oes not convert to any JSContact type. For the latter, vCard properties or para meters having such values <bcp14>MAY</bcp14> convert to JSContact as defined in <xref target="new-jscontact"/>. </t> | |||
</section> | </section> | |||
</section> | </section> | |||
<section anchor="vcard-parameters"> | <section anchor="vcard-parameters"> | |||
<name>vCard Parameters</name> | <name>vCard Parameters</name> | |||
<t>This section contains the conversion rules for vCard parameters. A r ule typically only applies for specific vCard properties. To convert a vCard pa rameter on an arbitrary vCard property, see <xref target="jscontact-prop-vcardpa rams"/>.</t> | <t>This section contains the conversion rules for vCard parameters. A r ule typically applies only for specific vCard properties. To convert a vCard pa rameter on an arbitrary vCard property, see <xref target="jscontact-prop-vcardpa rams"/>.</t> | |||
<section anchor="vcard-param-altid"> | <section anchor="vcard-param-altid"> | |||
<name>ALTID</name> | <name>ALTID</name> | |||
<t>This does not convert to an IANA-registered property in JSContact, but several conversion rules make use of this parameter to combine multiple vCar d properties into a single JSContact object instance. For an example of this se e <xref target="vcard-prop-adr"/>. To preserve the verbatim value of the ALTID parameter, set the JSContact properties defined in <xref target="new-jscontact"/ >.</t> | <t>The ALTID parameter does not convert to an IANA-registered property in JSContact, but several conversion rules make use of this parameter to combin e multiple vCard properties into a single JSContact object instance. For an exa mple of this, see <xref target="vcard-prop-adr"/>. To preserve the verbatim val ue of the ALTID parameter, set the JSContact properties defined in <xref target= "new-jscontact"/>.</t> | |||
</section> | </section> | |||
<section anchor="vcard-param-author"> | <section anchor="vcard-param-author"> | |||
<name>AUTHOR</name> | <name>AUTHOR</name> | |||
<t>The AUTHOR parameter value of a vCard NOTE property converts to the <tt>uri</tt> property of the Author object for this note.</t> | <t>The AUTHOR parameter value of a vCard NOTE property converts to the <tt>uri</tt> property of the Author object for this note.</t> | |||
<t>Note: This parameter is defined in <xref target="I-D.ietf-calext-vc | ||||
ard-jscontact-extensions"/>.</t> | <!-- [rfced] Please review whether any of the notes in this document | |||
should be in the <aside> element. It is defined as "a container for | ||||
content that is semantically less important or tangential to the | ||||
content that surrounds it" (https://authors.ietf.org/en/rfcxml-vocabulary#aside) | ||||
. | ||||
Please also consider if any of the notes should perhaps be combined with | ||||
the preceding paragraphs. For example: | ||||
Original: | ||||
The AUTHOR parameter value of a vCard NOTE property converts | ||||
to the uri property of the Author object for this note. | ||||
Note: This parameter is defined in [RFCYYY2]. | ||||
Perhaps: | ||||
A) The AUTHOR parameter value [RFC9554] of a vCard NOTE property | ||||
converts to the uri property of the Author object for this note. | ||||
or | ||||
B) The AUTHOR parameter value of a vCard NOTE property converts | ||||
to the uri property of the Author object for this note. The | ||||
AUTHOR parameter is defined in [RFC9554]. | ||||
--> | ||||
<t>Note: This parameter is defined in <xref target="RFC9554"/>.</t> | ||||
</section> | </section> | |||
<section anchor="vcard-param-author-name"> | <section anchor="vcard-param-author-name"> | |||
<name>AUTHOR-NAME</name> | <name>AUTHOR-NAME</name> | |||
<t>The AUTHOR-NAME parameter value of a vCard NOTE property converts t o the <tt>name</tt> property of the Author object for this note.</t> | <t>The AUTHOR-NAME parameter value of a vCard NOTE property converts t o the <tt>name</tt> property of the Author object for this note.</t> | |||
<t>Note: This parameter is defined in <xref target="I-D.ietf-calext-vc ard-jscontact-extensions"/>.</t> | <t>Note: This parameter is defined in <xref target="RFC9554"/>.</t> | |||
</section> | </section> | |||
<section anchor="vcard-param-calscale"> | <section anchor="vcard-param-calscale"> | |||
<name>CALSCALE</name> | <name>CALSCALE</name> | |||
<t>This parameter set on a BDAY, DEATHDATE or ANNIVERSARY property con verts to the <tt>calendarScale</tt> property of the <tt>PartialDate</tt> object type.</t> | <t>The CALSCALE parameter set on a BDAY, DEATHDATE, or ANNIVERSARY pro perty converts to the <tt>calendarScale</tt> property of the <tt>PartialDate</tt > object type.</t> | |||
</section> | </section> | |||
<section anchor="vcard-param-created"> | <section anchor="vcard-param-created"> | |||
<name>CREATED</name> | <name>CREATED</name> | |||
<t>The CREATED parameter value of a vCard NOTE property converts to th e <tt>created</tt> property of the Note object.</t> | <t>The CREATED parameter value of a vCard NOTE property converts to th e <tt>created</tt> property of the Note object.</t> | |||
<t>Note: This parameter is defined in <xref target="I-D.ietf-calext-vc ard-jscontact-extensions"/>.</t> | <t>Note: This parameter is defined in <xref target="RFC9554"/>.</t> | |||
</section> | </section> | |||
<section anchor="vcard-param-derived"> | <section anchor="vcard-param-derived"> | |||
<name>DERIVED</name> | <name>DERIVED</name> | |||
<t>If this parameter is set to <tt>true</tt> on a vCard property, then | <t>If the DERIVED parameter is set to <tt>true</tt> on a vCard propert | |||
implementations <bcp14>MAY</bcp14> choose to not convert that property. Note: | y, then implementations <bcp14>MAY</bcp14> choose not to convert that property.< | |||
This parameter is defined in <xref target="I-D.ietf-calext-vcard-jscontact-exten | /t> | |||
sions"/>.</t> | ||||
<t>Note: This parameter is defined in <xref target="RFC9554"/>.</t> | ||||
</section> | </section> | |||
<section anchor="vcard-param-geo"> | <section anchor="vcard-param-geo"> | |||
<name>GEO</name> | <name>GEO</name> | |||
<t>This parameter set on an ADR property converts to the JSContact <tt >coordinates</tt> property of the <tt>Address</tt> object that represents the vC ard ADR.</t> | <t>The GEO parameter set on an ADR property converts to the JSContact <tt>coordinates</tt> property of the <tt>Address</tt> object that represents the vCard ADR.</t> | |||
</section> | </section> | |||
<section anchor="vcard-param-group"> | <section anchor="vcard-param-group"> | |||
<name>GROUP</name> | <name>GROUP</name> | |||
<t>This parameter exclusively is for use in jCard (see <xref target="R FC7095" section="7.1"/>). It <bcp14>MUST NOT</bcp14> be set in a vCard. Preser ving the exact group name when converting from vCard to JSContact and back to vC ard is not necessary. Any group identifiers will do, as long as the resulting v Card groups its properties equally to the original vCard. Implementations that still wish to preserve the exact property group name of a vCard property <bcp14 >MAY</bcp14> set the <tt>group</tt> parameter in the JSContact properties <tt>vC ardProps</tt> or <tt>vCardParams</tt> defined in <xref target="new-jscontact"/>. </t> | <t>The GROUP parameter is exclusively for use in jCard (see <xref targ et="RFC7095" sectionFormat="of" section="7.1"/>). It <bcp14>MUST NOT</bcp14> be set in a vCard. Preserving the exact group name when converting from vCard to JSContact and back to vCard is not necessary. Any group identifiers will do, as long as the resulting vCard groups its properties equally to the original vCar d. Implementations that still wish to preserve the exact property group name of a vCard property <bcp14>MAY</bcp14> set the <tt>group</tt> parameter in the JSC ontact properties <tt>vCardProps</tt> or <tt>vCardParams</tt> as defined in <xre f target="new-jscontact"/>.</t> | |||
<figure anchor="group_conversion_params"> | <figure anchor="group_conversion_params"> | |||
<name>An example how to preserve the group name in <tt>vCardParams</ | <name>Example of How to Preserve the Group Name in <tt>vCardParams</ | |||
tt> during conversion.</name> | tt> during Conversion</name> | |||
<artwork><![CDATA[ | ||||
<!-- [rfced] We updated <artwork> to <sourcecode> for all examples; please revie | ||||
w | ||||
and let us know if any further updates are needed. | ||||
In addition, please consider whether the "type" attribute should be set for all | ||||
sourcecode elements in the XML file. The current list of preferred values for | ||||
"type" is available at | ||||
https://www.rfc-editor.org/materials/sourcecode-types.txt. If the current | ||||
list does not contain an applicable type, feel free to suggest additions | ||||
for consideration. Note that it is also acceptable to leave the "type" | ||||
attribute not set. | ||||
--> | ||||
<sourcecode type=""><![CDATA[ | ||||
item1.TEL;VALUE=uri:tel:+1-555-555-5555 | item1.TEL;VALUE=uri:tel:+1-555-555-5555 | |||
"phones": { | "phones": { | |||
"p1": { | "p1": { | |||
"number": "tel:+1-555-555-5555", | "number": "tel:+1-555-555-5555", | |||
"vCardParams" : { | "vCardParams" : { | |||
"group" : "item1" | "group" : "item1" | |||
} | } | |||
} | } | |||
} | } | |||
]]></artwork> | ]]></sourcecode> | |||
</figure> | </figure> | |||
<figure anchor="group_conversion_props"> | <figure anchor="group_conversion_props"> | |||
<name>An example how to preserve the group name in <tt>vCardProps</t | <name>Example of How to Preserve the Group Name in <tt>vCardProps</t | |||
t> during conversion.</name> | t> during Conversion</name> | |||
<artwork><![CDATA[ | <sourcecode><![CDATA[ | |||
item2.X-FOO:bar | item2.X-FOO:bar | |||
"vCardProps": [ | "vCardProps": [ | |||
["x-foo", { | ["x-foo", { | |||
"group": "item2" | "group": "item2" | |||
}, "unknown", "bar"] | }, "unknown", "bar"] | |||
] | ] | |||
]]></artwork> | ]]></sourcecode> | |||
</figure> | </figure> | |||
</section> | </section> | |||
<section anchor="vcard-param-index"> | <section anchor="vcard-param-index"> | |||
<name>INDEX</name> | <name>INDEX</name> | |||
<t>This parameter set on the EXPERTISE, HOBBY, INTEREST and ORG-DIRECT ORY properties defined in <xref target="RFC6715"/> converts to the JSContact <tt >listAs</tt> property of the <tt>PersonalInfo</tt> and <tt>Directory</tt> object s.</t> | <t>The INDEX parameter set on the EXPERTISE, HOBBY, INTEREST, and ORG- DIRECTORY properties defined in <xref target="RFC6715"/> converts to the JSConta ct <tt>listAs</tt> property of the <tt>PersonalInfo</tt> and <tt>Directory</tt> objects.</t> | |||
</section> | </section> | |||
<section anchor="vcard-param-language"> | <section anchor="vcard-param-language"> | |||
<name>LANGUAGE</name> | <name>LANGUAGE</name> | |||
<t>This converts to an entry in the <tt>localizations</tt> property fo r the vCard property that this parameter is set on. The value of the LANGUAGE p arameter defines the language tag key in the <tt>localizations</tt> property.</t > | <t>The LANGUAGE parameter converts to an entry in the <tt>localization s</tt> property for the vCard property that this parameter is set on. The value of the LANGUAGE parameter defines the language tag key in the <tt>localizations </tt> property.</t> | |||
<t>This specification does not define a single standard conversion rul e for how to convert the property values. Instead, building the localizations v alue is implementation-specific.</t> | <t>This specification does not define a single standard conversion rul e for how to convert the property values. Instead, building the localizations v alue is implementation-specific.</t> | |||
<t>Two options to populate the localizations property are:</t> | <t>Two options to populate the localizations property are:</t> | |||
<ul> | <ul> | |||
<li>One Patch Per Property: For each vCard property with a LANGUAGE parameter, set the complete path in the PatchObject to the JSContact property th at the vCard property converts to. The value of the patch is the converted prop erty value. This is simple to process and adequate if the vCard only contains a few properties with LANGUAGE parameter.</li> | <li>One Patch per Property: For each vCard property with a LANGUAGE parameter, set the complete path in the PatchObject to the JSContact property th at the vCard property converts to. The value of the patch is the converted prop erty value. This is simple to process and adequate if the vCard only contains a few properties with the LANGUAGE parameter.</li> | |||
<li>Bundle Patches by Parent: If a PatchObject contains multiple pat hs that have the same parent paths, then it might be possible to combine these p atches into one patch that patches the parent property. This is possible if the property in the Card is patched in its entirety.</li> | <li>Bundle Patches by Parent: If a PatchObject contains multiple pat hs that have the same parent paths, then it might be possible to combine these p atches into one patch that patches the parent property. This is possible if the property in the Card is patched in its entirety.</li> | |||
</ul> | </ul> | |||
<t>Generally, localizations only localize properties that are present in the non-localized version of this Card. <xref target="language-patch-dominan t-language"/> illustrates this.</t> | <t>Generally, localizations only localize properties that are present in the non-localized version of this Card. <xref target="language-patch-dominan t-language"/> illustrates this.</t> | |||
<figure anchor="language-patch-dominant-language"> | <figure anchor="language-patch-dominant-language"> | |||
<name>LANGUAGE conversion example: one dominant language</name> | <name>LANGUAGE Conversion Example: One Dominant Language</name> | |||
<artwork><![CDATA[ | <sourcecode type=""><![CDATA[ | |||
FN;LANGUAGE=EN:John Doe | FN;LANGUAGE=EN:John Doe | |||
TITLE;LANGUAGE=EN:Boss | TITLE;LANGUAGE=EN:Boss | |||
TITLE;LANGUAGE=fr:Patron | TITLE;LANGUAGE=fr:Patron | |||
"language": "en", | "language": "en", | |||
"name": { | "name": { | |||
"full": "John Doe" | "full": "John Doe" | |||
}, | }, | |||
"titles": { | "titles": { | |||
"t1": { | "t1": { | |||
"name": "Boss" | "name": "Boss" | |||
} | } | |||
}, | }, | |||
"localizations": { | "localizations": { | |||
"fr": { | "fr": { | |||
"titles/t1/name": "Patron" | "titles/t1/name": "Patron" | |||
} | } | |||
} | } | |||
]]></artwork> | ]]></sourcecode> | |||
</figure> | </figure> | |||
<!--[rfced] Please clarify "choose them to" in the following | ||||
sentence. Does this perhaps mean "add them to" or "place them | ||||
under"? | ||||
Original: | ||||
As a special case, if one or more vCard properties of the | ||||
same type do not have the LANGUAGE parameter set, then | ||||
choose them to the non-localized Card. | ||||
Perhaps: | ||||
As a special case, if one or more vCard properties of the | ||||
same type do not have the LANGUAGE parameter set, add | ||||
them to the non-localized Card. | ||||
--> | ||||
<t>As a special case, if one or more vCard properties of the same type do not have the LANGUAGE parameter set, then choose them to the non-localized C ard. Convert any with LANGUAGE parameters to the localizations property. <xref target="language-patch-no-language"/> illustrates this.</t> | <t>As a special case, if one or more vCard properties of the same type do not have the LANGUAGE parameter set, then choose them to the non-localized C ard. Convert any with LANGUAGE parameters to the localizations property. <xref target="language-patch-no-language"/> illustrates this.</t> | |||
<figure anchor="language-patch-no-language"> | <figure anchor="language-patch-no-language"> | |||
<name>LANGUAGE conversion example: property without language</name> | <name>LANGUAGE Conversion Example: Property without Language</name> | |||
<artwork><![CDATA[ | <sourcecode type=""><![CDATA[ | |||
FN:John Doe | FN:John Doe | |||
TITLE:Boss | TITLE:Boss | |||
TITLE;LANGUAGE=fr:Patron | TITLE;LANGUAGE=fr:Patron | |||
"name": { | "name": { | |||
"full": "John Doe" | "full": "John Doe" | |||
}, | }, | |||
"titles": { | "titles": { | |||
"t1": { | "t1": { | |||
"name": "Boss" | "name": "Boss" | |||
} | } | |||
}, | }, | |||
"localizations": { | "localizations": { | |||
"fr": { | "fr": { | |||
"titles/t1/name": "Patron" | "titles/t1/name": "Patron" | |||
} | } | |||
} | } | |||
]]></artwork> | ]]></sourcecode> | |||
</figure> | </figure> | |||
<t>As the least preferred option, <xref target="language-patch-no-domi | <t>As the least-preferred option, <xref target="language-patch-no-domi | |||
nant"/> illustrates how all vCard properties of the same type have the LANGUAGE | nant"/> illustrates how all vCard properties of the same type have the LANGUAGE | |||
parameter set, but none of their language tags match the language of the main Ca | parameter set, but none of their language tags match the language of the main Ca | |||
rd. In this case, implementations <bcp14>MAY</bcp14> choose to add the localize | rd. In this case, implementations <bcp14>MAY</bcp14> choose to add the localize | |||
d vCard properties only to the localizations object.</t> | d vCard properties only to the localizations object.</t> | |||
<t>The following example uses non-ASCII characters to demonstrate mult | ||||
ilingual content. The ASCII-formatted version of this specification might not s | <!--[rfced] We updated the following text as shown below since the | |||
how the correct characters. Please refer to the HTML or PDF versions instead.</ | non-ASCII characters (in Figures 5 and 6) display in the .txt | |||
t> | file as well as in the HTML and PDF files. Please let us know | |||
of any concerns. | ||||
Original: | ||||
The following example uses non-ASCII characters to demonstrate | ||||
multilingual content. The ASCII-formatted version of this | ||||
specification might not show the correct characters. Please refer to | ||||
the HTML or PDF versions instead. | ||||
Current: | ||||
The following example uses non-ASCII characters to demonstrate | ||||
multilingual content. | ||||
--> | ||||
<t>The following example uses non-ASCII characters to demonstrate mult | ||||
ilingual content.</t> | ||||
<figure anchor="language-patch-no-dominant"> | <figure anchor="language-patch-no-dominant"> | |||
<name>LANGUAGE conversion example: conflicting LANGUAGE property and | <name>LANGUAGE Conversion Example: Conflicting LANGUAGE Property and | |||
parameter values</name> | Parameter Values</name> | |||
<artwork><![CDATA[ | <sourcecode type=""><![CDATA[ | |||
LANGUAGE:es | LANGUAGE:es | |||
FN:Gabriel García Márquez | FN:Gabriel García Márquez | |||
TITLE;LANGUAGE=en:Boss | TITLE;LANGUAGE=en:Novelist | |||
TITLE;LANGUAGE=fr:Patron | TITLE;LANGUAGE=fr:Écrivain | |||
"language": "es", | "language": "es", | |||
"name" { | "name" { | |||
"full": "Gabriel García Márquez" | "full": "Gabriel García Márquez" | |||
}, | }, | |||
"localizations": { | "localizations": { | |||
"en": { | "en": { | |||
"titles": { | "titles": { | |||
"t1": { | "t1": { | |||
"name": "Novelist" | "name": "Novelist" | |||
} | } | |||
}, | }, | |||
"fr": { | "fr": { | |||
"titles": { | "titles": { | |||
"t1": { | "t1": { | |||
"name": "Écrivain" | "name": "Écrivain" | |||
} | } | |||
} | } | |||
} | } | |||
]]></artwork> | ]]></sourcecode> | |||
</figure> | </figure> | |||
</section> | </section> | |||
<section anchor="vcard-param-level"> | <section anchor="vcard-param-level"> | |||
<name>LEVEL</name> | <name>LEVEL</name> | |||
<t>The LEVEL parameter <xref target="RFC6715"/> converts to the <tt>le vel</tt> property of the <tt>PersonalInfo</tt> type. If this parameter is set o n the EXPERTISE property, then its values convert as: | <t>The LEVEL parameter <xref target="RFC6715"/> converts to the <tt>le vel</tt> property of the <tt>PersonalInfo</tt> type. If this parameter is set o n the EXPERTISE property, then its values convert as follows: | |||
</t> | </t> | |||
<ul spacing="compact"> | <ul spacing="compact"> | |||
<li>"beginner" converts to "low";</li> | <li>"beginner" converts to "low";</li> | |||
<li>"average" converts to "medium";</li> | <li>"average" converts to "medium"; and</li> | |||
<li>"expert" converts to "high".</li> | <li>"expert" converts to "high".</li> | |||
</ul> | </ul> | |||
<t>In all other cases the values convert verbatim, but lowercase <bcp1 4>MUST</bcp14> be used for the JSContact value.</t> | <t>In all other cases, the values convert verbatim, but lowercase <bcp 14>MUST</bcp14> be used for the JSContact value.</t> | |||
</section> | </section> | |||
<section anchor="vcard-param-mediatype"> | <section anchor="vcard-param-mediatype"> | |||
<name>MEDIATYPE</name> | <name>MEDIATYPE</name> | |||
<t>This converts to the <tt>mediaType</tt> property of the <tt>Resourc e</tt> object type.</t> | <t>The MEDIATYPE parameter converts to the <tt>mediaType</tt> property of the <tt>Resource</tt> object type.</t> | |||
</section> | </section> | |||
<section anchor="vcard-param-phonetic"> | <section anchor="vcard-param-phonetic"> | |||
<name>PHONETIC</name> | <name>PHONETIC</name> | |||
<t>This parameter as well as the <xref target="vcard-param-script">SCR | ||||
IPT</xref> parameter set on a N or ADR property convert to JSContact as follows: | <!-- [rfced] May we update these 2 sentences for clarity by rephrasing | |||
</t> | the lead-in sentence and making the second sentence a complete | |||
sentence as shown below? | ||||
Original: | ||||
This parameter as well as the SCRIPT (Section 2.3.17) parameter set | ||||
on a N or ADR property convert to JSContact as follows: | ||||
the values of the phonetic, phoneticScript and phoneticSystem | ||||
properties of the NameComponent and Name or AddressComponent and | ||||
Address object types, respectively. | ||||
Perhaps: | ||||
When the PHONETIC parameter as well as the SCRIPT (Section 2.3.17) | ||||
parameter are set on an N or ADR property, they convert to JSContact | ||||
as described below. | ||||
The values of the phonetic, phoneticScript, and phoneticSystem properties | ||||
convert to values in the NameComponent, Name or AddressComponent, and | ||||
Address object types, respectively. | ||||
--> | ||||
<t>The PHONETIC parameter as well as the <xref target="vcard-param-scr | ||||
ipt">SCRIPT</xref> parameter set on an N or ADR property convert to JSContact as | ||||
follows:</t> | ||||
<t>the values of the <tt>phonetic</tt>, <tt>phoneticScript</tt> and <t t>phoneticSystem</tt> properties of the NameComponent and Name or AddressCompone nt and Address object types, respectively.</t> | <t>the values of the <tt>phonetic</tt>, <tt>phoneticScript</tt> and <t t>phoneticSystem</tt> properties of the NameComponent and Name or AddressCompone nt and Address object types, respectively.</t> | |||
<t>The related N or ADR property is defined by the vCard ALTID paramet er. The conversion rules for the <xref target="vcard-prop-n">N</xref> and <xref target="vcard-prop-adr">ADR</xref> properties define how the vCard components co nvert to JSContact.</t> | <t>The related N or ADR property is defined by the vCard ALTID paramet er. The conversion rules for the <xref target="vcard-prop-n">N</xref> and <xref target="vcard-prop-adr">ADR</xref> properties define how the vCard components co nvert to JSContact.</t> | |||
<t>The value of the PHONETIC parameter converts to the <tt>phoneticSys tem</tt> property unless it is <tt>script</tt>, in which case the <tt>phoneticSy stem</tt> property is not set. The value of the SCRIPT parameter converts to th e <tt>phoneticScript</tt> property.</t> | <t>The value of the PHONETIC parameter converts to the <tt>phoneticSys tem</tt> property unless it is <tt>script</tt>, in which case the <tt>phoneticSy stem</tt> property is not set. The value of the SCRIPT parameter converts to th e <tt>phoneticScript</tt> property.</t> | |||
<t>The values of the components in the property value convert to value | <t>The values of the components in the property value convert to value | |||
s the <tt>phonetic</tt> properties for the respective NameComponent or AddressCo | s in the <tt>phonetic</tt> properties for the respective NameComponent or Addres | |||
mponent.</t> | sComponent.</t> | |||
<t>If more than one property having the PHONETIC parameter set relates | <t>If more than one property has the PHONETIC parameter set and relate | |||
to the same property, then they convert to the Card <tt>localizations</tt> prop | s to the same property, then they convert to the Card <tt>localizations</tt> pro | |||
erty according their LANGUAGE parameter values as outlined in <xref target="vcar | perty according to their LANGUAGE parameter values as outlined in <xref target=" | |||
d-param-language"/>.</t> | vcard-param-language"/>.</t> | |||
<figure anchor="phonetic_conversion"> | <figure anchor="phonetic_conversion"> | |||
<name>PHONETIC conversion example</name> | <name>PHONETIC Conversion Example</name> | |||
<artwork><![CDATA[ | <sourcecode type=""><![CDATA[ | |||
LANGUAGE=zh-Hant | LANGUAGE=zh-Hant | |||
N;ALTID=1;LANGUAGE=zh-Hant:孫;中山;文,逸仙;; | N;ALTID=1;LANGUAGE=zh-Hant:孫;中山;文,逸仙;; | |||
N;ALTID=1;PHONETIC=jyut; | N;ALTID=1;PHONETIC=jyut; | |||
SCRIPT=Latn;LANGUAGE=yue:syun1;zung1saan1;man4,jat6sin1;; | SCRIPT=Latn;LANGUAGE=yue:syun1;zung1saan1;man4,jat6sin1;; | |||
"language": "zh-Hant", | "language": "zh-Hant", | |||
"name": { | "name": { | |||
"components": [ | "components": [ | |||
{ "kind": "surname", "value": "孫" }, | { "kind": "surname", "value": "孫" }, | |||
{ "kind": "given", "value": "中山" }, | { "kind": "given", "value": "中山" }, | |||
skipping to change at line 335 ¶ | skipping to change at line 519 ¶ | |||
"localizations": { | "localizations": { | |||
"yue": { | "yue": { | |||
"name/phoneticSystem": "jyut", | "name/phoneticSystem": "jyut", | |||
"name/phoneticScript": "Latn", | "name/phoneticScript": "Latn", | |||
"name/components/0/phonetic": "syun1", | "name/components/0/phonetic": "syun1", | |||
"name/components/1/phonetic": "zung1saan1", | "name/components/1/phonetic": "zung1saan1", | |||
"name/components/2/phonetic": "man4", | "name/components/2/phonetic": "man4", | |||
"name/components/3/phonetic": "jat6sin1" | "name/components/3/phonetic": "jat6sin1" | |||
} | } | |||
} | } | |||
]]></artwork> | ]]></sourcecode> | |||
</figure> | </figure> | |||
</section> | </section> | |||
<section anchor="vcard-param-pid"> | <section anchor="vcard-param-pid"> | |||
<name>PID</name> | <name>PID</name> | |||
<t>This converts to an entry in the <tt>vCardParams</tt> property, see <xref target="jscontact-prop-vcardparams"/>.</t> | <t>The PID parameter converts to an entry in the <tt>vCardParams</tt> property; see <xref target="jscontact-prop-vcardparams"/>.</t> | |||
</section> | </section> | |||
<section anchor="vcard-param-pref"> | <section anchor="vcard-param-pref"> | |||
<name>PREF</name> | <name>PREF</name> | |||
<t>This converts to the <tt>pref</tt> property.</t> | <t>The PREF parameter converts to the <tt>pref</tt> property.</t> | |||
</section> | </section> | |||
<section anchor="vcard-param-propid"> | <section anchor="vcard-param-propid"> | |||
<name>PROP-ID</name> | <name>PROP-ID</name> | |||
<t>The PROP-ID parameter value of a vCard property converts to the <tt >Id</tt> of the JSContact property to which the vCard property converts.</t> | <t>The PROP-ID parameter value of a vCard property converts to the <tt >Id</tt> of the JSContact property to which the vCard property converts.</t> | |||
<figure anchor="propid_conversion"> | <figure anchor="propid_conversion"> | |||
<name>PROP-ID conversion example</name> | <name>PROP-ID Conversion Example</name> | |||
<artwork><![CDATA[ | <sourcecode type=""><![CDATA[ | |||
TEL;PROP-ID=PHONE-A;VALUE=uri;PREF=1;TYPE="voice,home" | TEL;PROP-ID=PHONE-A;VALUE=uri;PREF=1;TYPE="voice,home" | |||
:tel:+1-555-555-5555;ext=5555 | :tel:+1-555-555-5555;ext=5555 | |||
TEL;PROP-ID=PHONE-B;VALUE=uri;TYPE=home | TEL;PROP-ID=PHONE-B;VALUE=uri;TYPE=home | |||
:tel:+33-01-23-45-67 | :tel:+33-01-23-45-67 | |||
"phones": { | "phones": { | |||
"PHONE-A": { | "PHONE-A": { | |||
"contexts": { "private": true }, | "contexts": { "private": true }, | |||
"features": { "voice": true }, | "features": { "voice": true }, | |||
"number": "tel:+1-555-555-5555;ext=5555", | "number": "tel:+1-555-555-5555;ext=5555", | |||
"pref": 1 | "pref": 1 | |||
}, | }, | |||
"PHONE-B": { | "PHONE-B": { | |||
"contexts": { "private": true }, | "contexts": { "private": true }, | |||
"number": "tel:+33-01-23-45-67" | "number": "tel:+33-01-23-45-67" | |||
} | } | |||
} | } | |||
]]></artwork> | ]]></sourcecode> | |||
</figure> | </figure> | |||
<t>Note: This parameter is defined in <xref target="I-D.ietf-calext-vc ard-jscontact-extensions"/>.</t> | <t>Note: This parameter is defined in <xref target="RFC9554"/>.</t> | |||
</section> | </section> | |||
<section anchor="vcard-param-script"> | <section anchor="vcard-param-script"> | |||
<name>SCRIPT</name> | <name>SCRIPT</name> | |||
<t>See <xref target="vcard-param-phonetic"/>.</t> | <t>For the SCRIPT parameter, see <xref target="vcard-param-phonetic"/> .</t> | |||
</section> | </section> | |||
<section anchor="vcard-param-service-type"> | <section anchor="vcard-param-service-type"> | |||
<name>SERVICE-TYPE</name> | <name>SERVICE-TYPE</name> | |||
<t>This converts to the <tt>service</tt> property of the <tt>OnlineSer | <t>The SERVICE-TYPE parameter converts to the <tt>service</tt> propert | |||
vice</tt> object type. Note: This parameter is defined in <xref target="I-D.iet | y of the <tt>OnlineService</tt> object type. | |||
f-calext-vcard-jscontact-extensions"/>.</t> | </t> | |||
<t>Note: This parameter is defined in <xref target="RFC9554"/>.</t> | ||||
</section> | </section> | |||
<section anchor="vcard-param-sortas"> | <section anchor="vcard-param-sortas"> | |||
<name>SORT-AS</name> | <name>SORT-AS</name> | |||
<t>This converts to the <tt>sortAs</tt> properties defined for the <tt >Name</tt>, <tt>Organization</tt> and <tt>OrgUnit</tt> object types.</t> | <t>The SORT-AS parameter converts to the <tt>sortAs</tt> properties de fined for the <tt>Name</tt>, <tt>Organization</tt>, and <tt>OrgUnit</tt> object types.</t> | |||
</section> | </section> | |||
<section anchor="vcard-param-type"> | <section anchor="vcard-param-type"> | |||
<name>TYPE</name> | <name>TYPE</name> | |||
<t>This converts to the <tt>contexts</tt> property as well as property | ||||
-specific <tt>kind</tt> property values defined in later sections. If not specif | <!--[rfced] Would it be correct to say "property-specific kind values" | |||
ied otherwise for a specific JSContact property, the vCard <tt>home</tt> and <tt | instead of "property-specific kind property values" to avoid | |||
>work</tt> parameter values convert to the JSContact <tt>private</tt> and <tt>wo | redundancy? | |||
rk</tt> contexts, respectively.</t> | ||||
Original: | ||||
This converts to the contexts property as well as property-specific | ||||
kind property values defined in later sections. | ||||
Perhaps: | ||||
The TYPE parameter converts to the contexts property as well as | ||||
property-specific kind values defined in later sections. | ||||
--> | ||||
<t>The TYPE parameter converts to the <tt>contexts</tt> property as we | ||||
ll as property-specific <tt>kind</tt> property values defined in later sections. | ||||
If not specified otherwise for a specific JSContact property, the vCard <tt>hom | ||||
e</tt> and <tt>work</tt> parameter values convert to the JSContact <tt>private</ | ||||
tt> and <tt>work</tt> contexts, respectively.</t> | ||||
</section> | </section> | |||
<section anchor="vcard-param-tz"> | <section anchor="vcard-param-tz"> | |||
<name>TZ</name> | <name>TZ</name> | |||
<t>This parameter set on an ADR property converts to the JSContact <tt >timeZone</tt> property of the <tt>Address</tt> object that represents the vCard ADR. Also see the conversion of the TZ property in <xref target="vcard-prop-tz "/>.</t> | <t>The TZ parameter set on an ADR property converts to the JSContact < tt>timeZone</tt> property of the <tt>Address</tt> object that represents the vCa rd ADR. Also see the conversion of the TZ property in <xref target="vcard-prop- tz"/>.</t> | |||
</section> | </section> | |||
<section anchor="vcard-param-username"> | <section anchor="vcard-param-username"> | |||
<name>USERNAME</name> | <name>USERNAME</name> | |||
<t>This converts to the <tt>user</tt> property of the <tt>OnlineServic | <t>The USERNAME parameter converts to the <tt>user</tt> property of th | |||
e</tt> object type. Note: This parameter is defined in <xref target="I-D.ietf-c | e <tt>OnlineService</tt> object type.</t> | |||
alext-vcard-jscontact-extensions"/>.</t> | ||||
<t>Note: This parameter is defined in <xref target="RFC9554"/>.</t> | ||||
</section> | </section> | |||
<section anchor="vcard-param-value"> | <section anchor="vcard-param-value"> | |||
<name>VALUE</name> | <name>VALUE</name> | |||
<t>This does not convert to an IANA-registered property in JSContact. To preserve properties with experimental values, see <xref target="jscontact-pr op-vcardparams"/> and <xref target="jscontact-prop-vcardprops"/>.</t> | <t>The VALUE parameter does not convert to an IANA-registered property in JSContact. To preserve properties with experimental values, see Sections <x ref target="jscontact-prop-vcardprops" format="counter"/> and <xref target="jsco ntact-prop-vcardparams" format="counter"/>.</t> | |||
</section> | </section> | |||
</section> | </section> | |||
<section> | <section> | |||
<name>General Properties</name> | <name>General Properties</name> | |||
<section> | <section> | |||
<name>BEGIN and END</name> | <name>BEGIN and END</name> | |||
<t>These do not convert to IANA-registered properties in JSContact.</t > | <t>The BEGIN and END properties do not convert to IANA-registered prop erties in JSContact.</t> | |||
</section> | </section> | |||
<section anchor="vcard-prop-kind"> | <section anchor="vcard-prop-kind"> | |||
<name>KIND</name> | <name>KIND</name> | |||
<t>The KIND property converts to the <tt>kind</tt> property (<xref tar get="kind_conversion"/>). Allowed values are those described in Section 6.1.4 o f <xref target="RFC6350"/> and extended with the values declared in <xref target ="RFC6473"/> and <xref target="RFC6869"/>.</t> | <t>The KIND property converts to the <tt>kind</tt> property (<xref tar get="kind_conversion"/>). Allowed values are those described in <xref target="R FC6350" sectionFormat="of" section="6.1.4"/> and extended with the values declar ed in <xref target="RFC6473"/> and <xref target="RFC6869"/>.</t> | |||
<figure anchor="kind_conversion"> | <figure anchor="kind_conversion"> | |||
<name>KIND conversion example</name> | <name>KIND Conversion Example</name> | |||
<artwork><![CDATA[ | <sourcecode type=""><![CDATA[ | |||
KIND:individual | KIND:individual | |||
"kind": "individual" | "kind": "individual" | |||
]]></artwork> | ]]></sourcecode> | |||
</figure> | </figure> | |||
</section> | </section> | |||
<section anchor="vcard-prop-source"> | <section anchor="vcard-prop-source"> | |||
<name>SOURCE</name> | <name>SOURCE</name> | |||
<t>The SOURCE property converts to a Directory object in the <tt>direc tories</tt> property (<xref target="source_conversion"/>). The <tt>kind</tt> pr operty is set to <tt>entry</tt>. The <tt>uri</tt> property is set to the SOURCE property value.</t> | <t>The SOURCE property converts to a Directory object in the <tt>direc tories</tt> property (<xref target="source_conversion"/>). The <tt>kind</tt> pr operty is set to <tt>entry</tt>. The <tt>uri</tt> property is set to the SOURCE property value.</t> | |||
<t>The PREF and MEDIATYPE parameters convert according to the rules as defined in <xref target="vcard-parameters"/>.</t> | <t>The PREF and MEDIATYPE parameters convert according to the rules de fined in <xref target="vcard-parameters"/>.</t> | |||
<figure anchor="source_conversion"> | <figure anchor="source_conversion"> | |||
<name>SOURCE conversion example</name> | <name>SOURCE Conversion Example</name> | |||
<artwork><![CDATA[ | <sourcecode type=""><![CDATA[ | |||
SOURCE:https://dir.example.com/addrbook/jdoe/Jean%20Dupont.vcf | SOURCE:https://dir.example.com/addrbook/jdoe/Jean%20Dupont.vcf | |||
"directories": { | "directories": { | |||
"ENTRY-1": { | "ENTRY-1": { | |||
"kind": "entry", | "kind": "entry", | |||
"uri": "https://dir.example.com/addrbook/jdoe/Jean%20Dupont.vcf" | "uri": "https://dir.example.com/addrbook/jdoe/Jean%20Dupont.vcf" | |||
} | } | |||
} | } | |||
]]></artwork> | ]]></sourcecode> | |||
</figure> | </figure> | |||
</section> | </section> | |||
<section anchor="vcard-prop-xml"> | <section anchor="vcard-prop-xml"> | |||
<name>XML</name> | <name>XML</name> | |||
<t>This converts to an entry in the <tt>vCardProps</tt> property, see <xref target="jscontact-prop-vcardprops"/>.</t> | <t>The XML property converts to an entry in the <tt>vCardProps</tt> pr operty; see <xref target="jscontact-prop-vcardprops"/>.</t> | |||
</section> | </section> | |||
</section> | </section> | |||
<section> | <section> | |||
<name>Identification Properties</name> | <name>Identification Properties</name> | |||
<section anchor="vcard-prop-anniversary"> | <section anchor="vcard-prop-anniversary"> | |||
<name>BDAY, BIRTHPLACE, DEATHDATE, DEATHPLACE, ANNIVERSARY</name> | <name>BDAY, BIRTHPLACE, DEATHDATE, DEATHPLACE, and ANNIVERSARY</name> | |||
<t>The BDAY and ANNIVERSARY properties and the extensions BIRTHPLACE, | <t>The BDAY and ANNIVERSARY properties and the extensions BIRTHPLACE, | |||
DEATHDATE, DEATHPLACE described in <xref target="RFC6474"/> are represented as < | DEATHDATE, and DEATHPLACE described in <xref target="RFC6474"/> are represented | |||
tt>Anniversary</tt> objects included in the <tt>anniversaries</tt> property (<xr | as <tt>Anniversary</tt> objects and are included in the <tt>anniversaries</tt> p | |||
ef target="anniversary_conversion"/>):</t> | roperty (<xref target="anniversary_conversion"/>):</t> | |||
<ul spacing="compact"> | <ul spacing="compact"> | |||
<li> | <li>BDAY and BIRTHPLACE convert to <tt>date</tt> and <tt>place</tt> | |||
<t>BDAY and BIRTHPLACE convert to <tt>date</tt> and <tt>place</tt> | where <tt>kind</tt> is set to "birth"; | |||
where <tt>kind</tt> is set to "birth";</t> | ||||
<t/> | ||||
</li> | </li> | |||
<li> | <li>DEATHDATE and DEATHPLACE convert to <tt>date</tt> and <tt>place< | |||
<t>DEATHDATE and DEATHPLACE convert to <tt>date</tt> and <tt>place | /tt> where <tt>kind</tt> is set to "death"; and | |||
</tt> where <tt>kind</tt> is set to "death";</t> | ||||
<t/> | ||||
</li> | </li> | |||
<li>ANNIVERSARY converts to <tt>date</tt> where <tt>kind</tt> is "we dding".</li> | <li>ANNIVERSARY converts to <tt>date</tt> where <tt>kind</tt> is set to "wedding".</li> | |||
</ul> | </ul> | |||
<t>Both birth and death places are represented as instances of the <tt >Address</tt> object.</t> | <t>Both birth and death places are represented as instances of the <tt >Address</tt> object.</t> | |||
<t>The BIRTHPLACE and DEATHPLACE properties that are represented as ge | <t>The BIRTHPLACE and DEATHPLACE properties that are represented as ge | |||
o URIs convert to <tt>Address</tt> instances including only the <tt>coordinates< | o URIs convert to <tt>Address</tt> instances that only include the <tt>coordinat | |||
/tt> property. If the URI value is not a geo URI, the place is ignored.</t> | es</tt> property. If the URI value is not a geo URI, the place is ignored.</t> | |||
<t>The ALTID and LANGUAGE parameters of both BIRTHPLACE and DEATHPLACE | <t>The ALTID and LANGUAGE parameters of both the BIRTHPLACE and DEATHP | |||
properties convert according to the rules as defined in <xref target="vcard-par | LACE properties convert according to the rules defined in <xref target="vcard-pa | |||
ameters"/>.</t> | rameters"/>.</t> | |||
<figure anchor="anniversary_conversion"> | <figure anchor="anniversary_conversion"> | |||
<name>BDAY, BIRTHPLACE, DEATHDATE, DEATHPLACE, ANNIVERSARY conversio | <name>BDAY, BIRTHPLACE, DEATHDATE, DEATHPLACE, and ANNIVERSARY Conve | |||
n example</name> | rsion Example</name> | |||
<artwork><![CDATA[ | <sourcecode type=""><![CDATA[ | |||
BDAY:19531015T231000Z | BDAY:19531015T231000Z | |||
BIRTHPLACE: | BIRTHPLACE: | |||
123 Main Street\nAny Town, CA 91921-1234\nU.S.A. | 123 Main Street\nAny Town, CA 91921-1234\nU.S.A. | |||
DEATHDATE:19960415 | DEATHDATE:19960415 | |||
DEATHPLACE: | DEATHPLACE: | |||
5 Court Street\nNew England, ND 58647\nU.S.A. | 5 Court Street\nNew England, ND 58647\nU.S.A. | |||
ANNIVERSARY:19860201 | ANNIVERSARY:19860201 | |||
"anniversaries": { | "anniversaries": { | |||
"ANNIVERSARY-1" : { | "ANNIVERSARY-1" : { | |||
skipping to change at line 505 ¶ | skipping to change at line 704 ¶ | |||
}, | }, | |||
"ANNIVERSARY-3" : { | "ANNIVERSARY-3" : { | |||
"kind": "wedding", | "kind": "wedding", | |||
"date": { | "date": { | |||
"year": 1986, | "year": 1986, | |||
"month": 2, | "month": 2, | |||
"day": 1 | "day": 1 | |||
} | } | |||
} | } | |||
} | } | |||
]]></artwork> | ]]></sourcecode> | |||
</figure> | </figure> | |||
</section> | </section> | |||
<section anchor="vcard-prop-fn"> | <section anchor="vcard-prop-fn"> | |||
<name>FN</name> | <name>FN</name> | |||
<t>The FN property converts to the Name object in the <tt>name</tt> pr operty. Its value converts to the Name object <tt>full</tt> property (<xref tar get="fn_conversion"/>). If the LANGUAGE parameter is set, then the FN property converts as outlined in <xref target="vcard-param-language"/>. In the unexpecte d case that the vCard contains more than one FN property without LANGUAGE parame ter, then convert the FN property that has the least parameters set to the <tt>f ull</tt> property. If multiple such FN properties are present, choose any of th em. All other FN properties convert to the <xref target="jscontact-prop-vcardpr ops"><tt>vCardProps</tt></xref> property.</t> | <t>The FN property converts to the Name object in the <tt>name</tt> pr operty. Its value converts to the Name object <tt>full</tt> property (<xref tar get="fn_conversion"/>). If the LANGUAGE parameter is set, then the FN property converts as outlined in <xref target="vcard-param-language"/>. In the unexpecte d case where the vCard contains more than one FN property without the LANGUAGE p arameter, convert the FN property that has the least parameters set to the <tt>f ull</tt> property. If multiple such FN properties are present, choose any of th em. All other FN properties convert to the <xref target="jscontact-prop-vcardpr ops"><tt>vCardProps</tt></xref> property.</t> | |||
<figure anchor="fn_conversion"> | <figure anchor="fn_conversion"> | |||
<name>FN conversion example</name> | <name>FN Conversion Example</name> | |||
<artwork><![CDATA[ | <sourcecode type=""><![CDATA[ | |||
FN:John Q. Public, Esq. | FN:John Q. Public, Esq. | |||
"name": { | "name": { | |||
"full": "John Q. Public, Esq.", | "full": "John Q. Public, Esq." | |||
} | } | |||
]]></artwork> | ]]></sourcecode> | |||
</figure> | </figure> | |||
</section> | </section> | |||
<section anchor="vcard-prop-gender"> | <section anchor="vcard-prop-gender"> | |||
<name>GENDER</name> | <name>GENDER</name> | |||
<t>This does not map to an IANA-registered property in JSContact. To convert this property, see <xref target="jscontact-prop-vcardprops"/>. Note the alternative JSContact <tt>speakToAs</tt> property which defines how to address and refer to an individual represented by the card, as do the newly defined vCar d GRAMGENDER and PRONOUNS properties of <xref target="I-D.ietf-calext-vcard-jsco ntact-extensions"/>.</t> | <t>The GENDER property does not map to an IANA-registered property in JSContact. To convert this property, see <xref target="jscontact-prop-vcardprop s"/>. Note the alternative JSContact <tt>speakToAs</tt> property that defines h ow to address and refer to an individual represented by the card, as do the newl y defined vCard GRAMGENDER and PRONOUNS properties of <xref target="RFC9554"/>.< /t> | |||
</section> | </section> | |||
<section anchor="vcard-prop-gramgender"> | <section anchor="vcard-prop-gramgender"> | |||
<name>GRAMGENDER and PRONOUNS</name> | <name>GRAMGENDER and PRONOUNS</name> | |||
<t>The GRAMGENDER property converts to the <tt>grammaticalGender</tt> property of the <tt>SpeakToAs</tt> object (<xref target="grammatical_gender_pron ouns_conversion"/>).</t> | <t>The GRAMGENDER property converts to the <tt>grammaticalGender</tt> property of the <tt>SpeakToAs</tt> object (<xref target="grammatical_gender_pron ouns_conversion"/>).</t> | |||
<t>The PRONOUNS property converts to an entry in the <tt>pronouns</tt> property of the <tt>SpeakToAs</tt> object (<xref target="grammatical_gender_pro nouns_conversion"/>).</t> | <t>The PRONOUNS property converts to an entry in the <tt>pronouns</tt> property of the <tt>SpeakToAs</tt> object (<xref target="grammatical_gender_pro nouns_conversion"/>).</t> | |||
<figure anchor="grammatical_gender_pronouns_conversion"> | <figure anchor="grammatical_gender_pronouns_conversion"> | |||
<name>GRAMGENDER and PRONOUNS conversion example</name> | <name>GRAMGENDER and PRONOUNS Conversion Example</name> | |||
<artwork><![CDATA[ | <sourcecode type=""><![CDATA[ | |||
GRAMGENDER:NEUTER | GRAMGENDER:NEUTER | |||
PRONOUNS;PREF=2:they/them | PRONOUNS;PREF=2:they/them | |||
PRONOUNS;PREF=1:xe/xir | PRONOUNS;PREF=1:xe/xir | |||
"speakToAs": { | "speakToAs": { | |||
"grammaticalGender": "neuter", | "grammaticalGender": "neuter", | |||
"pronouns": { | "pronouns": { | |||
"PRONOUNS-1": { | "PRONOUNS-1": { | |||
"pronouns": "they/them", | "pronouns": "they/them", | |||
"pref": 2 | "pref": 2 | |||
}, | }, | |||
"PRONOUNS-2": { | "PRONOUNS-2": { | |||
"pronouns": "xe/xir", | "pronouns": "xe/xir", | |||
"pref": 1 | "pref": 1 | |||
} | } | |||
} | } | |||
} | } | |||
]]></artwork> | ]]></sourcecode> | |||
</figure> | </figure> | |||
</section> | </section> | |||
<section anchor="vcard-prop-n"> | <section anchor="vcard-prop-n"> | |||
<name>N</name> | <name>N</name> | |||
<t>The N property converts to the Name object in the <tt>name</tt> pro | <t>The N property converts to the Name object in the <tt>name</tt> pro | |||
perty. Each component in the N property structured value converts to a NameComp | perty. | |||
onent in the Name <tt>components</tt> property. The following table shows this | Each component in the N property structured value converts to a NameCom | |||
relation:</t> | ponent in the Name <tt>components</tt> property. The following table shows this | |||
relation:</t> | ||||
<!--[rfced] In Table 1, does "in here" mean "listed in this table" as | ||||
shown below? | ||||
Original: | ||||
To vCard: add any surname2 NameComponent value in here, | ||||
after all surname values. | ||||
To vCard: add any generation NameComponent value also in here. | ||||
Perhaps: | ||||
To vCard: add any surname2 NameComponent value listed in this | ||||
table, after all surname values. | ||||
To vCard: add any generation NameComponent value listed in this | ||||
table. | ||||
--> | ||||
<table anchor="n_kind_conversion"> | <table anchor="n_kind_conversion"> | |||
<name>N components conversion</name> | <name>N Components Conversion</name> | |||
<thead> | <thead> | |||
<tr> | <tr> | |||
<th align="left">N component</th> | <th align="left">N component</th> | |||
<th align="left">NameComponent kind</th> | <th align="left">NameComponent kind</th> | |||
<th align="left">Remarks</th> | <th align="left">Remarks</th> | |||
</tr> | </tr> | |||
</thead> | </thead> | |||
<tbody> | <tbody> | |||
<tr> | <tr> | |||
<td align="left">Family name</td> | <td align="left">Family name</td> | |||
skipping to change at line 604 ¶ | skipping to change at line 821 ¶ | |||
<td align="left"/> | <td align="left"/> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">Generation</td> | <td align="left">Generation</td> | |||
<td align="left">generation</td> | <td align="left">generation</td> | |||
<td align="left"/> | <td align="left"/> | |||
</tr> | </tr> | |||
</tbody> | </tbody> | |||
</table> | </table> | |||
<t>If the <xref target="vcard-param-jscomps">JSCOMPS</xref> parameter is set, then the Name <tt>isOrdered</tt> property value is "true", and the <tt>d efaultSeparator</tt> and any separator name components are set according to the parameter value. The <tt>components</tt> list <bcp14>MUST</bcp14> adhere to the order of the JSCOMPS parameter value.</t> | <t>If the <xref target="vcard-param-jscomps">JSCOMPS</xref> parameter is set, then the Name <tt>isOrdered</tt> property value is "true", and the <tt>d efaultSeparator</tt> and any separator name components are set according to the parameter value. The <tt>components</tt> list <bcp14>MUST</bcp14> adhere to the order of the JSCOMPS parameter value.</t> | |||
<t>If the JSCOMPS parameter is not set, then the Name <tt>isOrdered</t t> property value is "false" and the <tt>defaultSeparator</tt> property <bcp14>M UST NOT</bcp14> be set. The <tt>components</tt> list <bcp14>MUST</bcp14> follow the order of values in the N structured value when read from left to right.</t> | <t>If the JSCOMPS parameter is not set, then the Name <tt>isOrdered</t t> property value is "false", and the <tt>defaultSeparator</tt> property <bcp14> MUST NOT</bcp14> be set. The <tt>components</tt> list <bcp14>MUST</bcp14> follo w the order of values in the N structured value when read from left to right.</t > | |||
<t>If the SORT-AS parameter is set, then its structured value converts to the Name <tt>sortAs</tt> property according to <xref target="n_kind_conversi on"/>. An empty or non-existent component value indicates that no sort is defin ed for this kind.</t> | <t>If the SORT-AS parameter is set, then its structured value converts to the Name <tt>sortAs</tt> property according to <xref target="n_kind_conversi on"/>. An empty or non-existent component value indicates that no sort is defin ed for this kind.</t> | |||
<!--[rfced] The following lines are longer than the 72-character limit | ||||
for sourcecode. Please let us know where breaks should be placed | ||||
for the following lines: | ||||
Original: | ||||
(Figure 13) | ||||
N;SORT-AS="Stevenson,John Philip":Stevenson;John;Philip,Paul;Dr.;Jr.,M.D.,A.C | ||||
.P.;;Jr. (16 over) | ||||
(Figure 16) | ||||
ADR;TYPE=work;CC=US:;;54321 Oak St;Reston;VA;20190;USA;;;;Oak St;54321;;;;; ( | ||||
6 over) | ||||
(Under "Format definition" in Section 3.3.1) | ||||
(jscomps-entry-sep / "") ";" jscomps-entrylist (4 over) | ||||
jscomps-entry-verb = *QSAFE-CHAR ; encode special characters according to RFC | ||||
6868 (16 over) | ||||
(Figure 53) | ||||
N;JSCOMPS=";1;2;2,1;0;6;4,1":Stevenson;John;Philip,Paul;;Jr.,M.D.;;Jr. (4 ove | ||||
r) | ||||
(Figure 54) | ||||
ADR;JSCOMPS="s,\, ;11;s, ;10;3":;;54321 Oak St;Reston;;;;;;;Oak St;54321;;;;; | ||||
; (12 over) | ||||
--> | ||||
<figure anchor="n_conversion"> | <figure anchor="n_conversion"> | |||
<name>N conversion example</name> | <name>N Conversion Example</name> | |||
<artwork><![CDATA[ | <sourcecode type=""><![CDATA[ | |||
N;SORT-AS="Stevenson,John Philip":Stevenson;John;Philip,Paul;Dr.;Jr.,M.D.,A.C.P. ;;Jr. | N;SORT-AS="Stevenson,John Philip":Stevenson;John;Philip,Paul;Dr.;Jr.,M.D.,A.C.P. ;;Jr. | |||
"name": { | "name": { | |||
"components":[ | "components":[ | |||
{ "kind": "surname", "value": "Stevenson" }, | { "kind": "surname", "value": "Stevenson" }, | |||
{ "kind": "given", "value": "John" }, | { "kind": "given", "value": "John" }, | |||
{ "kind": "given2", "value": "Philip" }, | { "kind": "given2", "value": "Philip" }, | |||
{ "kind": "given2", "value": "Paul" }, | { "kind": "given2", "value": "Paul" }, | |||
{ "kind": "title", "value": "Dr." }, | { "kind": "title", "value": "Dr." }, | |||
{ "kind": "credential", "value": "M.D." }, | { "kind": "credential", "value": "M.D." }, | |||
{ "kind": "credential", "value": "A.C.P." }, | { "kind": "credential", "value": "A.C.P." }, | |||
{ "kind": "generation", "value": "Jr." } | { "kind": "generation", "value": "Jr." } | |||
], | ], | |||
"sortAs": { | "sortAs": { | |||
"surname": "Stevenson", | "surname": "Stevenson", | |||
"given": "John Philip" | "given": "John Philip" | |||
} | } | |||
} | } | |||
]]></artwork> | ]]></sourcecode> | |||
</figure> | </figure> | |||
<t>See <xref target="vcard-param-jscomps-examples"/> for examples of u sing the JSCOMPS parameter for vCard structured property values.</t> | <t>See <xref target="vcard-param-jscomps-examples"/> for examples of u sing the JSCOMPS parameter for vCard-structured property values.</t> | |||
</section> | </section> | |||
<section anchor="vcard-prop-nickname"> | <section anchor="vcard-prop-nickname"> | |||
<name>NICKNAME</name> | <name>NICKNAME</name> | |||
<t>A NICKNAME property converts to Nickname object in the <tt>nickname | <t>The NICKNAME property converts to a Nickname object in the <tt>nick | |||
s</tt> property (<xref target="nickname_conversion"/>). The <tt>name</tt> prope | names</tt> property (<xref target="nickname_conversion"/>). The <tt>name</tt> p | |||
rty is set to the NICKNAME property value.</t> | roperty is set to the NICKNAME property value.</t> | |||
<t>The PREF and TYPE parameters convert according to the rules as defi | <t>The PREF and TYPE parameters convert according to the rules defined | |||
ned in <xref target="vcard-parameters"/>.</t> | in <xref target="vcard-parameters"/>.</t> | |||
<figure anchor="nickname_conversion"> | <figure anchor="nickname_conversion"> | |||
<name>NICKNAME conversion example</name> | <name>NICKNAME Conversion Example</name> | |||
<artwork><![CDATA[ | <sourcecode type=""><![CDATA[ | |||
NICKNAME:Johnny | NICKNAME:Johnny | |||
"nicknames": { | "nicknames": { | |||
"NICK-1": { | "NICK-1": { | |||
"name": "Johnny" | "name": "Johnny" | |||
} | } | |||
} | } | |||
]]></artwork> | ]]></sourcecode> | |||
</figure> | </figure> | |||
</section> | </section> | |||
<section anchor="vcard-prop-photo"> | <section anchor="vcard-prop-photo"> | |||
<name>PHOTO</name> | <name>PHOTO</name> | |||
<t>A PHOTO property converts to an entry in the <tt>media</tt> propert | <t>The PHOTO property converts to an entry in the <tt>media</tt> prope | |||
y (<xref target="photo_conversion"/>). The entry value is a <tt>Media</tt> obje | rty (<xref target="photo_conversion"/>). The entry value is a <tt>Media</tt> ob | |||
ct whose <tt>kind</tt> property is set to <tt>photo</tt> and <tt>uri</tt> proper | ject whose <tt>kind</tt> property is set to <tt>photo</tt> and <tt>uri</tt> prop | |||
ty is set to the PHOTO value.</t> | erty is set to the PHOTO value.</t> | |||
<t>The PREF and MEDIATYPE parameters convert according to the rules as | <t>The PREF and MEDIATYPE parameters convert according to the rules de | |||
defined in <xref target="vcard-parameters"/>.</t> | fined in <xref target="vcard-parameters"/>.</t> | |||
<figure anchor="photo_conversion"> | <figure anchor="photo_conversion"> | |||
<name>PHOTO conversion example</name> | <name>PHOTO Conversion Example</name> | |||
<artwork><![CDATA[ | <sourcecode type=""><![CDATA[ | |||
PHOTO:https://www.example.com/pub/photos/jqpublic.gif | PHOTO:https://www.example.com/pub/photos/jqpublic.gif | |||
"media": { | "media": { | |||
"PHOTO-1": { | "PHOTO-1": { | |||
"kind": "photo", | "kind": "photo", | |||
"uri": "https://www.example.com/pub/photos/jqpublic.gif" | "uri": "https://www.example.com/pub/photos/jqpublic.gif" | |||
} | } | |||
} | } | |||
]]></artwork> | ]]></sourcecode> | |||
</figure> | </figure> | |||
</section> | </section> | |||
</section> | </section> | |||
<section> | <section> | |||
<name>Delivery Addressing Properties</name> | <name>Delivery Addressing Properties</name> | |||
<section anchor="vcard-prop-adr"> | <section anchor="vcard-prop-adr"> | |||
<name>ADR</name> | <name>ADR</name> | |||
<t>The ADR property converts to an Address object in the <tt>addresses | <t>The ADR property converts to an Address object in the <tt>addresses | |||
</tt> property. Each component in the ADR property structured value converts to | </tt> property. Each component in the ADR-structured property value converts to | |||
an AddressComponent in the Address <tt>components</tt> property.</t> | an AddressComponent in the Address <tt>components</tt> property.</t> | |||
<t><xref target="I-D.ietf-calext-vcard-jscontact-extensions"/> defines | <t><xref target="RFC9554"/> defines new components for the ADR propert | |||
new component for the ADR property. Implementations <bcp14>SHOULD</bcp14> set | y. Implementations <bcp14>SHOULD</bcp14> set these new components, even if all | |||
these new components, even if all their values are the empty string.</t> | their values are the empty string.</t> | |||
<t>The following table shows how ADR component and AddressComponent ki | <t>The following table shows how the ADR component and AddressComponen | |||
nd relate:</t> | t kind relate:</t> | |||
<!--[rfced] In Table 2 (Section 2.6.1), is it necessary to include two | ||||
instances of "see Remarks" since the Remarks column is adjacent | ||||
to the cells? Please review and let us know these instances may | ||||
be deleted as shown below. | ||||
Original: | ||||
apartment (see Remarks) | ||||
name (see Remarks) | ||||
Perhaps: | ||||
apartment | ||||
name | ||||
--> | ||||
<table anchor="adr_kind_conversion"> | <table anchor="adr_kind_conversion"> | |||
<name>ADR components conversion</name> | <name>ADR Components Conversion</name> | |||
<thead> | <thead> | |||
<tr> | <tr> | |||
<th align="left">ADR component</th> | <th align="left">ADR component</th> | |||
<th align="left">AddressComponent kind</th> | <th align="left">AddressComponent kind</th> | |||
<th align="left">Remarks</th> | <th align="left">Remarks</th> | |||
</tr> | </tr> | |||
</thead> | </thead> | |||
<tbody> | <tbody> | |||
<tr> | <tr> | |||
<td align="left">post office box</td> | <td align="left">post office box</td> | |||
<td align="left">postOfficeBox</td> | <td align="left">postOfficeBox</td> | |||
<td align="left"><xref target="RFC6350"/> recommends this compon ent not be set, but this now is disputable given the new components. Instead, s et this component and use the new ADR value format defined in <xref target="I-D. ietf-calext-vcard-jscontact-extensions"/>.</td> | <td align="left"><xref target="RFC6350"/> recommends that this c omponent not be set, but this is now disputable given the new components. Inste ad, set this component and use the new ADR value format defined in <xref target= "RFC9554"/>.</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">extended address</td> | <td align="left">extended address</td> | |||
<td align="left">apartment (see Remarks)</td> | <td align="left">apartment (see Remarks)</td> | |||
<td align="left"><t>To vCard: Set the values of the following co mponents:</t> | <td align="left"><t>To vCard: set the values of the following co mponents:</t> | |||
<ul> | <ul> | |||
<li>room</li> | <li>room</li> | |||
<li>floor</li> | <li>floor</li> | |||
<li>apartment</li> | <li>apartment</li> | |||
<li>building</li> | <li>building</li> | |||
</ul> | </ul> | |||
<t>From vCard: Ignore if the ADR structured value is of the form at defined in <xref target="I-D.ietf-calext-vcard-jscontact-extensions"/>. Othe rwise convert to <tt>apartment</tt>.</t></td> | <t>From vCard: ignore if the ADR structured value is of the form at defined in <xref target="RFC9554"/>. Otherwise, convert to <tt>apartment</tt >.</t></td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">street address</td> | <td align="left">street address</td> | |||
<td align="left">name (see Remarks)</td> | <td align="left">name (see Remarks)</td> | |||
<td align="left"><t>To vCard: Set the values of the following co mponents:</t> | <td align="left"><t>To vCard: set the values of the following co mponents:</t> | |||
<ul> | <ul> | |||
<li>number</li> | <li>number</li> | |||
<li>name</li> | <li>name</li> | |||
<li>block</li> | <li>block</li> | |||
<li>direction</li> | <li>direction</li> | |||
<li>landmark</li> | <li>landmark</li> | |||
<li>subdistrict</li> | <li>subdistrict</li> | |||
<li>district</li> | <li>district</li> | |||
</ul> | </ul> | |||
<t>From vCard: Ignore if the ADR structured value is of the form at defined in <xref target="I-D.ietf-calext-vcard-jscontact-extensions"/>. Othe rwise convert to <tt>name</tt>.</t></td> | <t>From vCard: ignore if the ADR structured value is of the form at defined in <xref target="RFC9554"/>. Otherwise, convert to <tt>name</tt>.</t ></td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">locality</td> | <td align="left">locality</td> | |||
<td align="left">locality</td> | <td align="left">locality</td> | |||
<td align="left"/> | <td align="left"/> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">region</td> | <td align="left">region</td> | |||
<td align="left">region</td> | <td align="left">region</td> | |||
<td align="left"/> | <td align="left"/> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">postal code</td> | <td align="left">postal code</td> | |||
<td align="left">postcode</td> | <td align="left">postcode</td> | |||
<td align="left"/> | <td align="left"/> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">apartment</td> | <td align="left">apartment</td> | |||
<td align="left">apartment</td> | <td align="left">apartment</td> | |||
<td>Defined in <xref target="I-D.ietf-calext-vcard-jscontact-ext ensions"/>.</td> | <td>Defined in <xref target="RFC9554"/>.</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">block</td> | <td align="left">block</td> | |||
<td align="left">block</td> | <td align="left">block</td> | |||
<td>Defined in <xref target="I-D.ietf-calext-vcard-jscontact-ext ensions"/>.</td> | <td>Defined in <xref target="RFC9554"/>.</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">building</td> | <td align="left">building</td> | |||
<td align="left">building</td> | <td align="left">building</td> | |||
<td>Defined in <xref target="I-D.ietf-calext-vcard-jscontact-ext ensions"/>.</td> | <td>Defined in <xref target="RFC9554"/>.</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">direction</td> | <td align="left">direction</td> | |||
<td align="left">direction</td> | <td align="left">direction</td> | |||
<td>Defined in <xref target="I-D.ietf-calext-vcard-jscontact-ext ensions"/>.</td> | <td>Defined in <xref target="RFC9554"/>.</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">district</td> | <td align="left">district</td> | |||
<td align="left">district</td> | <td align="left">district</td> | |||
<td>Defined in <xref target="I-D.ietf-calext-vcard-jscontact-ext ensions"/>.</td> | <td>Defined in <xref target="RFC9554"/>.</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">floor</td> | <td align="left">floor</td> | |||
<td align="left">floor</td> | <td align="left">floor</td> | |||
<td>Defined in <xref target="I-D.ietf-calext-vcard-jscontact-ext ensions"/>.</td> | <td>Defined in <xref target="RFC9554"/>.</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">landmark</td> | <td align="left">landmark</td> | |||
<td align="left">landmark</td> | <td align="left">landmark</td> | |||
<td>Defined in <xref target="I-D.ietf-calext-vcard-jscontact-ext ensions"/>.</td> | <td>Defined in <xref target="RFC9554"/>.</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">room</td> | <td align="left">room</td> | |||
<td align="left">room</td> | <td align="left">room</td> | |||
<td>Defined in <xref target="I-D.ietf-calext-vcard-jscontact-ext ensions"/>.</td> | <td>Defined in <xref target="RFC9554"/>.</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">street number</td> | <td align="left">street number</td> | |||
<td align="left">number</td> | <td align="left">number</td> | |||
<td>Defined in <xref target="I-D.ietf-calext-vcard-jscontact-ext ensions"/>.</td> | <td>Defined in <xref target="RFC9554"/>.</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">subdistrict</td> | <td align="left">subdistrict</td> | |||
<td align="left">subdistrict</td> | <td align="left">subdistrict</td> | |||
<td>Defined in <xref target="I-D.ietf-calext-vcard-jscontact-ext ensions"/>.</td> | <td>Defined in <xref target="RFC9554"/>.</td> | |||
</tr> | </tr> | |||
</tbody> | </tbody> | |||
</table> | </table> | |||
<t>If the <xref target="vcard-param-jscomps">JSCOMPS</xref> parameter is set, then the Address <tt>isOrdered</tt> property value is "true", and the <t t>defaultSeparator</tt> and any separator name components are set according to t he parameter value. The <tt>components</tt> list <bcp14>MUST</bcp14> adhere to the order of the JSCOMPS parameter value.</t> | <t>If the <xref target="vcard-param-jscomps">JSCOMPS</xref> parameter is set, then the Address <tt>isOrdered</tt> property value is "true", and the <t t>defaultSeparator</tt> and any separator name components are set according to t he parameter value. The <tt>components</tt> list <bcp14>MUST</bcp14> adhere to the order of the JSCOMPS parameter value.</t> | |||
<t>If the JSCOMPS parameter is not set, then the Address <tt>isOrdered | <t>If the JSCOMPS parameter is not set, then the Address <tt>isOrdered | |||
</tt> property value is "false" and the <tt>defaultSeparator</tt> property <bcp1 | </tt> property value is "false", and the <tt>defaultSeparator</tt> property <bcp | |||
4>MUST NOT</bcp14> be set. The <tt>components</tt> list <bcp14>MUST</bcp14> fol | 14>MUST NOT</bcp14> be set. The <tt>components</tt> list <bcp14>MUST</bcp14> fo | |||
low the order of values in the ADR structured value when read from left to right | llow the order of values in the ADR structured value when read from left to righ | |||
.</t> | t.</t> | |||
<t>The LABEL parameter converts to the Address <tt>full</tt> property. | <ul empty="true"> | |||
</t> | <li>The LABEL parameter converts to the Address <tt>full</tt> property | |||
<t>The GEO parameter converts to the Address <tt>coordinates</tt> prop | .</li> | |||
erty.</t> | <li>The GEO parameter converts to the Address <tt>coordinates</tt> pro | |||
<t>The TZ parameter converts to the Address <tt>timeZone</tt> property | perty.</li> | |||
.</t> | <li>The TZ parameter converts to the Address <tt>timeZone</tt> propert | |||
<t>The CC parameter as defined in <xref target="RFC8605"/> converts to | y.</li> | |||
the Address <tt>countryCode</tt> property.</t> | <li>The CC parameter, as defined in <xref target="RFC8605"/>, converts | |||
<t>The PREF and TYPE parameters convert according to the rules as defi | to the Address <tt>countryCode</tt> property.</li> | |||
ned in <xref target="vcard-parameters"/>. The ADR-specific values of the TYPE p | </ul> | |||
arameter defined in Sections 5.1 and 5.2 of <xref target="I-D.ietf-calext-vcard- | <t>The PREF and TYPE parameters convert according to the rules defined | |||
jscontact-extensions"/> convert to the corresponding entries of the <tt>contexts | in <xref target="vcard-parameters"/>. The ADR-specific values of the TYPE para | |||
</tt> property as defined in Section 2.5.1 of <xref target="I-D.ietf-calext-jsco | meter defined in Sections <xref target="RFC9554" sectionFormat="bare" section="5 | |||
ntact"/>.</t> | .1"/> and <xref target="RFC9554" sectionFormat="bare" section="5.2"/> of <xref t | |||
<t>The ALTID and LANGUAGE parameters convert according to the rules as | arget="RFC9554"/> convert to the corresponding entries of the <tt>contexts</tt> | |||
defined in <xref target="vcard-parameters"/>. Each possible language-dependent | property as defined in <xref target="RFC9553" sectionFormat="of" section="2.5.1" | |||
alternative is represented as an entry of the PatchObject map where the key ref | />.</t> | |||
erences the <tt>full</tt> property.</t> | <t>The ALTID and LANGUAGE parameters convert according to the rules de | |||
fined in <xref target="vcard-parameters"/>. Each possible language-dependent al | ||||
ternative is represented as an entry of the PatchObject map where the key refere | ||||
nces the <tt>full</tt> property.</t> | ||||
<figure anchor="adr_conversion"> | <figure anchor="adr_conversion"> | |||
<name>ADR conversion example</name> | <name>ADR Conversion Example</name> | |||
<artwork><![CDATA[ | <sourcecode type=""><![CDATA[ | |||
ADR;TYPE=work;CC=US:;;54321 Oak St;Reston;VA;20190;USA;;;;Oak St;54321;;;;; | ADR;TYPE=work;CC=US:;;54321 Oak St;Reston;VA;20190;USA;;;;Oak St;54321;;;;; | |||
"addresses": { | "addresses": { | |||
"ADDR-1" : { | "ADDR-1" : { | |||
"contexts": { "work": true }, | "contexts": { "work": true }, | |||
"components": [ | "components": [ | |||
{ "kind": "number", "value": "54321" }, | { "kind": "number", "value": "54321" }, | |||
{ "kind": "name", "value": "Oak St" }, | { "kind": "name", "value": "Oak St" }, | |||
{ "kind": "locality", "value": "Reston" }, | { "kind": "locality", "value": "Reston" }, | |||
{ "kind": "region", "value": "VA" }, | { "kind": "region", "value": "VA" }, | |||
{ "kind": "postcode", "value": "20190" }, | { "kind": "postcode", "value": "20190" }, | |||
{ "kind": "country", "value": "USA" } | { "kind": "country", "value": "USA" } | |||
], | ], | |||
"countryCode": "US", | "countryCode": "US" | |||
} | } | |||
} | } | |||
]]></artwork> | ]]></sourcecode> | |||
</figure> | </figure> | |||
<t>See <xref target="vcard-param-jscomps-examples"/> for examples of u sing the JSCOMPS parameter for vCard structured property values.</t> | <t>See <xref target="vcard-param-jscomps-examples"/> for examples of u sing the JSCOMPS parameter for vCard-structured property values.</t> | |||
</section> | </section> | |||
</section> | </section> | |||
<section> | <section> | |||
<name>Communications Properties</name> | <name>Communications Properties</name> | |||
<section anchor="vcard-prop-email"> | <section anchor="vcard-prop-email"> | |||
<name>EMAIL</name> | <name>EMAIL</name> | |||
<t>An EMAIL property converts to an entry in the <tt>emails</tt> prope | <t>The EMAIL property converts to an entry in the <tt>emails</tt> prop | |||
rty (<xref target="email_conversion"/>). The entry value is an <tt>EmailAddress | erty (<xref target="email_conversion"/>). The entry value is an <tt>EmailAddres | |||
</tt> object. The <tt>address</tt> property is set to the EMAIL value.</t> | s</tt> object. The <tt>address</tt> property is set to the EMAIL value.</t> | |||
<t>The PREF and TYPE parameters convert according to the rules as defi | <t>The PREF and TYPE parameters convert according to the rules defined | |||
ned in <xref target="vcard-parameters"/>.</t> | in <xref target="vcard-parameters"/>.</t> | |||
<figure anchor="email_conversion"> | <figure anchor="email_conversion"> | |||
<name>EMAIL conversion example</name> | <name>EMAIL Conversion Example</name> | |||
<artwork><![CDATA[ | <sourcecode type=""><![CDATA[ | |||
EMAIL;TYPE=work:jqpublic@xyz.example.com | EMAIL;TYPE=work:jqpublic@xyz.example.com | |||
EMAIL;PREF=1:jane_doe@example.com | EMAIL;PREF=1:jane_doe@example.com | |||
"emails": { | "emails": { | |||
"EMAIL-1": { | "EMAIL-1": { | |||
"contexts": { "work": true }, | "contexts": { "work": true }, | |||
"address": "jqpublic@xyz.example.com" | "address": "jqpublic@xyz.example.com" | |||
}, | }, | |||
"EMAIL-2": { | "EMAIL-2": { | |||
"address": "jane_doe@example.com", | "address": "jane_doe@example.com", | |||
"pref": 1 | "pref": 1 | |||
} | } | |||
} | } | |||
]]></artwork> | ]]></sourcecode> | |||
</figure> | </figure> | |||
</section> | </section> | |||
<section anchor="vcard-prop-impp"> | <section anchor="vcard-prop-impp"> | |||
<name>IMPP</name> | <name>IMPP</name> | |||
<t>An IMPP property converts to an entry in the <tt>onlineServices</tt | <t>The IMPP property converts to an entry in the <tt>onlineServices</t | |||
> property (<xref target="impp_conversion"/>). The entry value is an <tt>Online | t> property (<xref target="impp_conversion"/>). The entry value is an <tt>Onlin | |||
Service</tt> object. The <tt>vCardName</tt> property is set to "impp" and the < | eService</tt> object. The <tt>vCardName</tt> property is set to "impp", and the | |||
tt>uri</tt> property is set to the IMPP value.</t> | <tt>uri</tt> property is set to the IMPP value.</t> | |||
<t>The SERVICE-TYPE, USERNAME, PREF and TYPE parameters convert accord | <t>The SERVICE-TYPE, USERNAME, PREF, and TYPE parameters convert accor | |||
ing to the rules as defined in <xref target="vcard-parameters"/>.</t> | ding to the rules defined in <xref target="vcard-parameters"/>.</t> | |||
<figure anchor="impp_conversion"> | <figure anchor="impp_conversion"> | |||
<name>IMPP conversion example</name> | <name>IMPP Conversion Example</name> | |||
<artwork><![CDATA[ | <sourcecode type=""><![CDATA[ | |||
IMPP;PREF=1:xmpp:alice@example.com | IMPP;PREF=1:xmpp:alice@example.com | |||
"onlineServices": { | "onlineServices": { | |||
"OS-1": { | "OS-1": { | |||
"uri": "xmpp:alice@example.com", | "uri": "xmpp:alice@example.com", | |||
"pref": 1, | "pref": 1, | |||
"vCardName": "impp" | "vCardName": "impp" | |||
} | } | |||
} | } | |||
]]></artwork> | ]]></sourcecode> | |||
</figure> | </figure> | |||
</section> | </section> | |||
<section anchor="vcard-prop-lang"> | <section anchor="vcard-prop-lang"> | |||
<name>LANG</name> | <name>LANG</name> | |||
<t>A LANG property converts to an entry in the <tt>preferredLanguages< | <t>The LANG property converts to an entry in the <tt>preferredLanguage | |||
/tt> property (<xref target="lang_conversion"/>). The entry value is an <tt>Lan | s</tt> property (<xref target="lang_conversion"/>). The entry value is a <tt>La | |||
guagePref</tt> object. The LanguagePref <tt>language</tt> property value is the | nguagePref</tt> object. The LanguagePref <tt>language</tt> property value is th | |||
LANG property value.</t> | e LANG property value.</t> | |||
<t>The PREF and TYPE parameters convert according to the rules as defi | <t>The PREF and TYPE parameters convert according to the rules defined | |||
ned in <xref target="vcard-parameters"/>.</t> | in <xref target="vcard-parameters"/>.</t> | |||
<figure anchor="lang_conversion"> | <figure anchor="lang_conversion"> | |||
<name>LANG conversion example</name> | <name>LANG Conversion Example</name> | |||
<artwork><![CDATA[ | <sourcecode type=""><![CDATA[ | |||
LANG;TYPE=work;PREF=1:en | LANG;TYPE=work;PREF=1:en | |||
LANG;TYPE=work;PREF=2:fr | LANG;TYPE=work;PREF=2:fr | |||
LANG;TYPE=home:fr | LANG;TYPE=home:fr | |||
"preferredLanguages": { | "preferredLanguages": { | |||
"LANG-1": { | "LANG-1": { | |||
"language": "en", | "language": "en", | |||
"contexts": { "work": true }, | "contexts": { "work": true }, | |||
"pref": 1 | "pref": 1 | |||
}, | }, | |||
"LANG-2": { | "LANG-2": { | |||
"language": "fr", | "language": "fr", | |||
"contexts": { "work": true }, | "contexts": { "work": true }, | |||
"pref": 2 | "pref": 2 | |||
}, | }, | |||
"LANG-3": { | "LANG-3": { | |||
"language": "fr", | "language": "fr", | |||
"contexts": { "private": true } | "contexts": { "private": true } | |||
} | } | |||
} | } | |||
]]></artwork> | ]]></sourcecode> | |||
</figure> | </figure> | |||
</section> | </section> | |||
<section anchor="vcard-prop-language"> | <section anchor="vcard-prop-language"> | |||
<name>LANGUAGE</name> | <name>LANGUAGE</name> | |||
<t>The LANGUAGE property converts to the <tt>language</tt> property (< xref target="languageprop_conversion"/>).</t> | <t>The LANGUAGE property converts to the <tt>language</tt> property (< xref target="languageprop_conversion"/>).</t> | |||
<figure anchor="languageprop_conversion"> | <figure anchor="languageprop_conversion"> | |||
<name>LANGUAGE conversion example</name> | <name>LANGUAGE Conversion Example</name> | |||
<artwork><![CDATA[ | <sourcecode type=""><![CDATA[ | |||
LANGUAGE:de-AT | LANGUAGE:de-AT | |||
"language": "de-AT" | "language": "de-AT" | |||
]]></artwork> | ]]></sourcecode> | |||
</figure> | </figure> | |||
<t>Note: This property is defined in <xref target="I-D.ietf-calext-vca rd-jscontact-extensions"/>.</t> | <t>Note: This property is defined in <xref target="RFC9554"/>.</t> | |||
</section> | </section> | |||
<section anchor="vcard-prop-socialprofile"> | <section anchor="vcard-prop-socialprofile"> | |||
<name>SOCIALPROFILE</name> | <name>SOCIALPROFILE</name> | |||
<t>A SOCIALPROFILE property converts to an entry in the <tt>onlineServ | <t>The SOCIALPROFILE property converts to an entry in the <tt>onlineSe | |||
ices</tt> property (<xref target="socialprofile_conversion"/>). The entry value | rvices</tt> property (<xref target="socialprofile_conversion"/>). The entry val | |||
is an <tt>OnlineService</tt> object. The <tt>vCardName</tt> property is set to | ue is an <tt>OnlineService</tt> object. The <tt>vCardName</tt> property is set | |||
"socialprofile" or can be omitted. If the value type of the SOCIALPROFILE is U | to "socialprofile", or it can be omitted. If the value type of the SOCIALPROFIL | |||
RI, the <tt>uri</tt> property is set to the SOCIALPROFILE value. Otherwise, the | E is URI, the <tt>uri</tt> property is set to the SOCIALPROFILE value. Otherwis | |||
<tt>user</tt> property is set to the SOCIALPROFILE value.</t> | e, the <tt>user</tt> property is set to the SOCIALPROFILE value.</t> | |||
<t>The SERVICE-TYPE, USERNAME, PREF and TYPE parameters convert accord | <t>The SERVICE-TYPE, USERNAME, PREF, and TYPE parameters convert accor | |||
ing to the rules as defined in <xref target="vcard-parameters"/>.</t> | ding to the rules defined in <xref target="vcard-parameters"/>.</t> | |||
<figure anchor="socialprofile_conversion"> | <figure anchor="socialprofile_conversion"> | |||
<name>SOCIALPROFILE conversion example</name> | <name>SOCIALPROFILE Conversion Example</name> | |||
<artwork><![CDATA[ | <sourcecode type=""><![CDATA[ | |||
SOCIALPROFILE;SERVICE-TYPE=Mastodon:https://example.com/@foo | SOCIALPROFILE;SERVICE-TYPE=Mastodon:https://example.com/@foo | |||
"onlineServices": { | "onlineServices": { | |||
... | ... | |||
"OS-1": { | "OS-1": { | |||
"service": "Mastodon", | "service": "Mastodon", | |||
"uri": "https://example.com/@foo" | "uri": "https://example.com/@foo" | |||
} | } | |||
} | } | |||
]]></artwork> | ]]></sourcecode> | |||
</figure> | </figure> | |||
<t>Note: This property is defined in <xref target="I-D.ietf-calext-vca rd-jscontact-extensions"/>.</t> | <t>Note: This property is defined in <xref target="RFC9554"/>.</t> | |||
</section> | </section> | |||
<section anchor="vcard-prop-tel"> | <section anchor="vcard-prop-tel"> | |||
<name>TEL</name> | <name>TEL</name> | |||
<t>A TEL property converts to an entry in the <tt>phones</tt> property | <t>The TEL property converts to an entry in the <tt>phones</tt> proper | |||
(<xref target="tel_conversion"/>). The entry value is a <tt>Phone</tt> object. | ty (<xref target="tel_conversion"/>). The entry value is a <tt>Phone</tt> objec | |||
</t> | t.</t> | |||
<t>The TEL-specific values of the TYPE parameter convert to the <tt>fe | <t>The TEL-specific values of the TYPE parameter convert to the <tt>fe | |||
atures</tt> property keys as outlined in table <xref target="tel_type_conversion | atures</tt> property keys as outlined in <xref target="tel_type_conversion"/>. | |||
"/>. Note that <xref target="RFC6350" section="6.4.1"/> defines the default TYP | Note that <xref target="RFC6350" sectionFormat="of" section="6.4.1"/> defines th | |||
E of TEL to be <tt>voice</tt>, but the default Phone features property is absent | e default TYPE of TEL to be <tt>voice</tt>, but the default Phone features prope | |||
by default. Accordingly, an implementation <bcp14>SHOULD</bcp14> only set the | rty is absent by default. Accordingly, an implementation <bcp14>SHOULD</bcp14> | |||
Phone <tt>features</tt> property if the TEL property actually has a TEL-specific | only set the Phone <tt>features</tt> property if the TEL property actually has a | |||
TYPE parameter set.</t> | TEL-specific TYPE parameter set.</t> | |||
<table anchor="tel_type_conversion"> | <table anchor="tel_type_conversion"> | |||
<name>TEL TYPE conversion</name> | <name>TEL TYPE Conversion</name> | |||
<thead> | <thead> | |||
<tr> | <tr> | |||
<th align="left">TYPE value</th> | <th align="left">TYPE value</th> | |||
<th align="left">Phone feature</th> | <th align="left">Phone feature</th> | |||
</tr> | </tr> | |||
</thead> | </thead> | |||
<tbody> | <tbody> | |||
<tr> | <tr> | |||
<td align="left">cell</td> | <td align="left">cell</td> | |||
<td align="left">mobile</td> | <td align="left">mobile</td> | |||
skipping to change at line 971 ¶ | skipping to change at line 1230 ¶ | |||
<td align="left">video</td> | <td align="left">video</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">voice</td> | <td align="left">voice</td> | |||
<td align="left">voice</td> | <td align="left">voice</td> | |||
</tr> | </tr> | |||
</tbody> | </tbody> | |||
</table> | </table> | |||
<t>The value of the TEL property converts to the Phone <tt>number</tt> property.</t> | <t>The value of the TEL property converts to the Phone <tt>number</tt> property.</t> | |||
<t>The PREF and TYPE parameters convert according to the rules as defi ned in <xref target="vcard-parameters"/>.</t> | <t>The PREF and TYPE parameters convert according to the rules defined in <xref target="vcard-parameters"/>.</t> | |||
<figure anchor="tel_conversion"> | <figure anchor="tel_conversion"> | |||
<name>TEL conversion example</name> | <name>TEL Conversion Example</name> | |||
<artwork><![CDATA[ | <sourcecode type=""><![CDATA[ | |||
TEL;VALUE=uri;PREF=1;TYPE="voice,home":tel:+1-555-555-5555;ext=5555 | TEL;VALUE=uri;PREF=1;TYPE="voice,home":tel:+1-555-555-5555;ext=5555 | |||
TEL;VALUE=uri;TYPE=home:tel:+33-01-23-45-67 | TEL;VALUE=uri;TYPE=home:tel:+33-01-23-45-67 | |||
"phones": { | "phones": { | |||
"PHONE-1": { | "PHONE-1": { | |||
"contexts": { "private": true }, | "contexts": { "private": true }, | |||
"features": { "voice": true }, | "features": { "voice": true }, | |||
"number": "tel:+1-555-555-5555;ext=5555", | "number": "tel:+1-555-555-5555;ext=5555", | |||
"pref": 1 | "pref": 1 | |||
}, | }, | |||
"PHONE-2": { | "PHONE-2": { | |||
"contexts": { "private": true }, | "contexts": { "private": true }, | |||
"number": "tel:+33-01-23-45-67" | "number": "tel:+33-01-23-45-67" | |||
} | } | |||
} | } | |||
]]></artwork> | ]]></sourcecode> | |||
</figure> | </figure> | |||
</section> | </section> | |||
</section> | </section> | |||
<section> | <section> | |||
<name>Geographical Properties</name> | <name>Geographical Properties</name> | |||
<section anchor="vcard-prop-geo"> | <section anchor="vcard-prop-geo"> | |||
<name>GEO</name> | <name>GEO</name> | |||
<t>This converts to the <tt>coordinates</tt> property of the <tt>Addre ss</tt> object. Also see <xref target="combine-geo-props"/> to determine which <tt>Address</tt> object instance to convert to.</t> | <t>The GEO property converts to the <tt>coordinates</tt> property of t he <tt>Address</tt> object. Also see <xref target="combine-geo-props"/> to dete rmine which <tt>Address</tt> object instance to convert to.</t> | |||
</section> | </section> | |||
<section anchor="vcard-prop-tz"> | <section anchor="vcard-prop-tz"> | |||
<name>TZ</name> | <name>TZ</name> | |||
<t>A value of type TEXT converts to the <tt>timeZone</tt> property in the <tt>Address</tt> object.</t> | <t>A value of type TEXT converts to the <tt>timeZone</tt> property in the <tt>Address</tt> object.</t> | |||
<t>A value of type UTC-OFFSET converts to the <tt>timeZone</tt> proper ty in the <tt>Address</tt> object if the offset has zero minutes and the hour of fset is in the range -12 <= 14:</t> | <t>A value of type UTC-OFFSET converts to the <tt>timeZone</tt> proper ty in the <tt>Address</tt> object if the offset has zero minutes and the hour of fset is in the range -12 <= 14. Note that:</t> | |||
<ul> | <ul> | |||
<li>If the hour offset is zero, use the time zone name <tt>Etc/UTC</ tt>.</li> | <li>If the hour offset is zero, use the time zone name <tt>Etc/UTC</ tt>.</li> | |||
<li>Otherwise construct the time zone name with <tt>Etc/GMT</tt> suf fixed with the string representation of the reversed sign hour offset, including the sign but excluding leading zeros and minutes. For example, the UTC offset value <tt>-0500</tt> converts to <tt>Etc/GMT+5</tt>.</li> | <li>Otherwise, construct the time zone name with <tt>Etc/GMT</tt> su ffixed with the string representation of the reversed sign hour offset, includin g the sign but excluding leading zeros and minutes. For example, the UTC offset value <tt>-0500</tt> converts to <tt>Etc/GMT+5</tt>.</li> | |||
</ul> | </ul> | |||
<t>For such property values, also see <xref target="combine-geo-props" /> to determine which <tt>Address</tt> object instance to convert to.</t> | <t>For such property values, also see <xref target="combine-geo-props" /> to determine which <tt>Address</tt> object instance to convert to.</t> | |||
<t>Any other value of type UTC-OFFSET or URI does not convert to an IA NA-registered property in JSContact. To convert such property, see <xref target ="jscontact-prop-vcardprops"/>.</t> | <t>Any other value of type UTC-OFFSET or URI does not convert to an IA NA-registered property in JSContact. To convert such property, see <xref target ="jscontact-prop-vcardprops"/>.</t> | |||
</section> | </section> | |||
<section anchor="combine-geo-props"> | <section anchor="combine-geo-props"> | |||
<name>Combining geographical properties</name> | <name>Combining Geographical Properties</name> | |||
<t>In vCard the properties ADR, GEO and TZ occur independently of each | <t>In vCard, the properties ADR, GEO, and TZ occur independently of ea | |||
other. In JSContact, they all convert to properties of an <tt>Address</tt> obj | ch other. In JSContact, they all convert to properties of an <tt>Address</tt> o | |||
ect. It is implementation-specific if these vCard properties convert to <em>sep | bject. It is implementation-specific if these vCard properties convert to <em>s | |||
arate</em> address instances in JSContact, or if some or all of them convert to | eparate</em> address instances in JSContact or if some or all of them convert to | |||
the <em>same</em> address. That being said, implementations <bcp14>MUST</bcp14> | the <em>same</em> address. That being said, implementations <bcp14>MUST</bcp14 | |||
convert the properties to the <em>same</em> address for the following cases:</t | > convert the properties to the <em>same</em> address for the following cases:</ | |||
> | t> | |||
<ul> | <ul> | |||
<li>The GROUP parameter values of the properties match.</li> | <li>The GROUP parameter values of the properties match.</li> | |||
<li>The GROUP parameters are not set, but are set on any other ADR, GEO and TZ properties.</li> | <li>The GROUP parameters are not set, but they are set on any other ADR, GEO, and TZ properties.</li> | |||
</ul> | </ul> | |||
</section> | </section> | |||
</section> | </section> | |||
<section> | <section> | |||
<name>Organizational Properties</name> | <name>Organizational Properties</name> | |||
<section anchor="vcard-prop-contact-uri"> | <section anchor="vcard-prop-contact-uri"> | |||
<name>CONTACT-URI</name> | <name>CONTACT-URI</name> | |||
<t>A CONTACT-URI property as defined in <xref target="RFC8605"/> is re | <t>The CONTACT-URI property, as defined in <xref target="RFC8605"/>, i | |||
presented as an entry of the <tt>links</tt> property (<xref target="contact_uri_ | s represented as an entry of the <tt>links</tt> property (<xref target="contact_ | |||
conversion"/>). The entry value is a <tt>Link</tt> object whose <tt>kind</tt> | uri_conversion"/>). The entry value is a <tt>Link</tt> object whose <tt>kind</ | |||
property is set to <tt>contact</tt> and <tt>uri</tt> property is set to the CONT | tt> property is set to <tt>contact</tt> and <tt>uri</tt> property is set to the | |||
ACT-URI value.</t> | CONTACT-URI value.</t> | |||
<t>The PREF and TYPE parameters convert according to the rules as defi | <t>The PREF and TYPE parameters convert according to the rules defined | |||
ned in <xref target="vcard-parameters"/>.</t> | in <xref target="vcard-parameters"/>.</t> | |||
<figure anchor="contact_uri_conversion"> | <figure anchor="contact_uri_conversion"> | |||
<name>CONTACT-URI conversion example</name> | <name>CONTACT-URI Conversion Example</name> | |||
<artwork><![CDATA[ | <sourcecode type=""><![CDATA[ | |||
CONTACT-URI;PREF=1:mailto:contact@example.com | CONTACT-URI;PREF=1:mailto:contact@example.com | |||
"links": { | "links": { | |||
"CONTACT-1": { | "CONTACT-1": { | |||
"kind": "contact", | "kind": "contact", | |||
"uri": "mailto:contact@example.com", | "uri": "mailto:contact@example.com", | |||
"pref": 1 | "pref": 1 | |||
} | } | |||
} | } | |||
]]></artwork> | ]]></sourcecode> | |||
</figure> | </figure> | |||
</section> | </section> | |||
<section anchor="vcard-prop-logo"> | <section anchor="vcard-prop-logo"> | |||
<name>LOGO</name> | <name>LOGO</name> | |||
<t>A LOGO property converts to an entry in the <tt>media</tt> property | <t>The LOGO property converts to an entry in the <tt>media</tt> proper | |||
(<xref target="logo_conversion"/>). The entry value is a <tt>Media</tt> object | ty (<xref target="logo_conversion"/>). The entry value is a <tt>Media</tt> obje | |||
whose <tt>kind</tt> property is set to <tt>logo</tt> and <tt>uri</tt> property | ct whose <tt>kind</tt> property is set to <tt>logo</tt> and <tt>uri</tt> propert | |||
is set to the LOGO value.</t> | y is set to the LOGO value.</t> | |||
<t>The PREF and TYPE parameters convert according to the rules as defi | <t>The PREF and TYPE parameters convert according to the rules defined | |||
ned in <xref target="vcard-parameters"/>.</t> | in <xref target="vcard-parameters"/>.</t> | |||
<figure anchor="logo_conversion"> | <figure anchor="logo_conversion"> | |||
<name>LOGO conversion example</name> | <name>LOGO Conversion Example</name> | |||
<artwork><![CDATA[ | <sourcecode type=""><![CDATA[ | |||
LOGO:https://www.example.com/pub/logos/abccorp.jpg | LOGO:https://www.example.com/pub/logos/abccorp.jpg | |||
"media": { | "media": { | |||
"LOGO-1": { | "LOGO-1": { | |||
"kind": "logo", | "kind": "logo", | |||
"uri": "https://www.example.com/pub/logos/abccorp.jpg" | "uri": "https://www.example.com/pub/logos/abccorp.jpg" | |||
} | } | |||
} | } | |||
]]></artwork> | ]]></sourcecode> | |||
</figure> | </figure> | |||
</section> | </section> | |||
<section anchor="vcard-prop-member"> | <section anchor="vcard-prop-member"> | |||
<name>MEMBER</name> | <name>MEMBER</name> | |||
<t>The uids of the contact cards composing the group are included in t he <tt>members</tt> property (<xref target="group_example"/>).</t> | <t>The uids of the contact cards composing the group are included in t he <tt>members</tt> property (<xref target="group_example"/>).</t> | |||
<t>In this case, the PREF parameter does not have a JSContact counterp art; however, the implementors <bcp14>MAY</bcp14> insert the map entries by orde r of preference.</t> | <t>In this case, the PREF parameter does not have a JSContact counterp art; however, the implementors <bcp14>MAY</bcp14> insert the map entries by orde r of preference.</t> | |||
<figure anchor="group_example"> | <figure anchor="group_example"> | |||
<name>Group example</name> | <name>Group Example</name> | |||
<artwork><![CDATA[ | <sourcecode type=""><![CDATA[ | |||
KIND:group | KIND:group | |||
FN:The Doe family | FN:The Doe family | |||
MEMBER:urn:uuid:03a0e51f-d1aa-4385-8a53-e29025acd8af | MEMBER:urn:uuid:03a0e51f-d1aa-4385-8a53-e29025acd8af | |||
MEMBER:urn:uuid:b8767877-b4a1-4c70-9acc-505d3819e519 | MEMBER:urn:uuid:b8767877-b4a1-4c70-9acc-505d3819e519 | |||
"kind": "group", | "kind": "group", | |||
"name": { | "name": { | |||
"full": "The Doe family" | "full": "The Doe family" | |||
}, | }, | |||
"uid": "urn:uuid:ab4310aa-fa43-11e9-8f0b-362b9e155667", | "uid": "urn:uuid:ab4310aa-fa43-11e9-8f0b-362b9e155667", | |||
"members": { | "members": { | |||
"urn:uuid:03a0e51f-d1aa-4385-8a53-e29025acd8af": true, | "urn:uuid:03a0e51f-d1aa-4385-8a53-e29025acd8af": true, | |||
"urn:uuid:b8767877-b4a1-4c70-9acc-505d3819e519": true | "urn:uuid:b8767877-b4a1-4c70-9acc-505d3819e519": true | |||
} | } | |||
]]></artwork> | ]]></sourcecode> | |||
</figure> | </figure> | |||
</section> | </section> | |||
<section anchor="vcard-prop-org"> | <section anchor="vcard-prop-org"> | |||
<name>ORG</name> | <name>ORG</name> | |||
<t>An ORG property converts to an entry in the <tt>organizations</tt> property (<xref target="org_conversion"/>). The entry value is an <tt>Organizat ion</tt> object whose <tt>name</tt> property contains the organizational name, a nd the <tt>units</tt> property is an array of <tt>OrgUnit</tt> objects each cont aining the organizational unit name in the <tt>name</tt> property.</t> | <t>The ORG property converts to an entry in the <tt>organizations</tt> property (<xref target="org_conversion"/>). The entry value is an <tt>Organiza tion</tt> object whose <tt>name</tt> property contains the organizational name, and the <tt>units</tt> property is an array of <tt>OrgUnit</tt> objects that eac h contain the organizational unit name in the <tt>name</tt> property.</t> | |||
<t>Implementations <bcp14>MAY</bcp14> allow representation of organiza tional units without the organizational name. In this case, the first component of the ORG value <bcp14>MUST</bcp14> be an empty string (e.g., ORG:;Department A).</t> | <t>Implementations <bcp14>MAY</bcp14> allow representation of organiza tional units without the organizational name. In this case, the first component of the ORG value <bcp14>MUST</bcp14> be an empty string (e.g., ORG:;Department A).</t> | |||
<t>The ALTID, LANGUAGE parameters convert according to the rules as de fined in <xref target="vcard-parameters"/>.</t> | <t>The ALTID and LANGUAGE parameters convert according to the rules de fined in <xref target="vcard-parameters"/>.</t> | |||
<t>The first item of the comma-separated SORT-AS parameter value conve rts to the <tt>sortAs</tt> property of the <tt>Organization</tt> object. The su bsequent items convert to the <tt>sortAs</tt> property of the corresponding <tt> OrgUnit</tt> object.</t> | <t>The first item of the comma-separated SORT-AS parameter value conve rts to the <tt>sortAs</tt> property of the <tt>Organization</tt> object. The su bsequent items convert to the <tt>sortAs</tt> property of the corresponding <tt> OrgUnit</tt> object.</t> | |||
<t>The TYPE parameter converts according to the rules as defined in <x ref target="vcard-parameters"/>.</t> | <t>The TYPE parameter converts according to the rules defined in <xref target="vcard-parameters"/>.</t> | |||
<figure anchor="org_conversion"> | <figure anchor="org_conversion"> | |||
<name>ORG conversion example</name> | <name>ORG Conversion Example</name> | |||
<artwork><![CDATA[ | <sourcecode type=""><![CDATA[ | |||
ORG;SORT-AS="ABC":ABC\, Inc.;North American Division;Marketing | ORG;SORT-AS="ABC":ABC\, Inc.;North American Division;Marketing | |||
"organizations": { | "organizations": { | |||
"ORG-1": { | "ORG-1": { | |||
"name": "ABC, Inc.", | "name": "ABC, Inc.", | |||
"units":[ | "units":[ | |||
{ "name": "North American Division" }, | { "name": "North American Division" }, | |||
{ "name": "Marketing" } | { "name": "Marketing" } | |||
], | ], | |||
"sortAs": "ABC" | "sortAs": "ABC" | |||
} | } | |||
} | } | |||
]]></artwork> | ]]></sourcecode> | |||
</figure> | </figure> | |||
</section> | </section> | |||
<section anchor="vcard-prop-related"> | <section anchor="vcard-prop-related"> | |||
<name>RELATED</name> | <name>RELATED</name> | |||
<t>This converts to an entry in the <tt>relatedTo</tt> property (<xref target="related_conversion"/>). The property value converts to the key in the <tt>relatedTo</tt> property. The TYPE parameters convert to the <tt>relation</t t> of the <tt>Relation</tt> object value. Any other parameters convert as defin ed in <xref target="jscontact-prop-vcardparams"/>.</t> | <t>The RELATED property converts to an entry in the <tt>relatedTo</tt> property (<xref target="related_conversion"/>). The property value converts to the key in the <tt>relatedTo</tt> property. The TYPE parameters convert to the <tt>relation</tt> of the <tt>Relation</tt> object value. Any other parameters convert as defined in <xref target="jscontact-prop-vcardparams"/>.</t> | |||
<figure anchor="related_conversion"> | <figure anchor="related_conversion"> | |||
<name>RELATED conversion example</name> | <name>RELATED Conversion Example</name> | |||
<artwork><![CDATA[ | <sourcecode type=""><![CDATA[ | |||
RELATED;TYPE=friend:urn:uuid:f81d4fae-7dec-11d0-a765-00a0c91e6bf6 | RELATED;TYPE=friend:urn:uuid:f81d4fae-7dec-11d0-a765-00a0c91e6bf6 | |||
RELATED;TYPE=contact:https://example.com/directory/john.vcf | RELATED;TYPE=contact:https://example.com/directory/john.vcf | |||
RELATED;VALUE=text:Please contact my deputy John for any inquiries. | RELATED;VALUE=text:Please contact my deputy John for any inquiries. | |||
"relatedTo" : { | "relatedTo" : { | |||
"urn:uuid:f81d4fae-7dec-11d0-a765-00a0c91e6bf6" : { | "urn:uuid:f81d4fae-7dec-11d0-a765-00a0c91e6bf6" : { | |||
"relation" : { | "relation" : { | |||
"friend" : true | "friend" : true | |||
} | } | |||
}, | }, | |||
"https://example.com/directory/john.vcf" : { | "https://example.com/directory/john.vcf" : { | |||
"relation" : { | "relation" : { | |||
"contact" : true | "contact" : true | |||
} | } | |||
}, | }, | |||
"Please contact my deputy John for any inquiries." : { | "Please contact my deputy John for any inquiries." : { | |||
"relation" : { } | "relation" : { } | |||
} | } | |||
} | } | |||
]]></artwork> | ]]></sourcecode> | |||
</figure> | </figure> | |||
</section> | </section> | |||
<section anchor="vcard-prop-title"> | <section anchor="vcard-prop-title"> | |||
<name>TITLE and ROLE</name> | <name>TITLE and ROLE</name> | |||
<t>Both TITLE and ROLE properties are represented as entries of the <t | <t>Both TITLE and ROLE properties are represented as entries of the <t | |||
t>titles</tt> property (<xref target="title_role_conversion"/>). The entry valu | t>titles</tt> property (<xref target="title_role_conversion"/>). The entry valu | |||
e is a <tt>Title</tt> object whose <tt>kind</tt> property is set to <tt>title</t | e is a <tt>Title</tt> object whose <tt>kind</tt> property is set to <tt>title</t | |||
t> or <tt>role</tt> for TITLE and ROLE vCard properties, respectively. The <tt> | t> or <tt>role</tt> for the TITLE and ROLE vCard properties, respectively. The | |||
name</tt> property is set to the vCard property value.</t> | <tt>name</tt> property is set to the vCard property value.</t> | |||
<t>The value of the <tt>organization</tt> property can be derived if t | <t>The value of the <tt>organizationId</tt> property can be derived if | |||
he TITLE or ROLE property is member of a vCard property group and exactly one ot | the TITLE or ROLE property is a member of a vCard property group and if exactly | |||
her ORG property also is part of that group.</t> | one other ORG property is also a part of that group.</t> | |||
<t>The ALTID and LANGUAGE parameters convert according to the rules as | <t>The ALTID and LANGUAGE parameters convert according to the rules de | |||
defined in <xref target="vcard-parameters"/>.</t> | fined in <xref target="vcard-parameters"/>.</t> | |||
<figure anchor="title_role_conversion"> | <figure anchor="title_role_conversion"> | |||
<name>TITLE and ROLE conversion example</name> | <name>TITLE and ROLE Conversion Example</name> | |||
<artwork><![CDATA[ | <sourcecode type=""><![CDATA[ | |||
TITLE:Research Scientist | TITLE:Research Scientist | |||
group1.ROLE:Project Leader | group1.ROLE:Project Leader | |||
group1.ORG:ABC, Inc. | group1.ORG:ABC, Inc. | |||
"titles": { | "titles": { | |||
"TITLE-1": { | "TITLE-1": { | |||
"kind": "title", | "kind": "title", | |||
"name": "Project Leader" | "name": "Research Scientist" | |||
}, | }, | |||
"TITLE-2": { | "TITLE-2": { | |||
"kind": "role", | "kind": "role", | |||
"name": "Research Scientist", | "name": "Project Leader", | |||
"organization": "ORG-1" | "organizationId": "ORG-1" | |||
} | } | |||
}, | }, | |||
"organizations": { | "organizations": { | |||
"ORG-1": { | "ORG-1": { | |||
"name": "ABC, Inc." | "name": "ABC, Inc." | |||
} | } | |||
} | } | |||
]]></artwork> | ]]></sourcecode> | |||
</figure> | </figure> | |||
</section> | </section> | |||
</section> | </section> | |||
<section> | <section> | |||
<name>Personal Information Properties</name> | <name>Personal Information Properties</name> | |||
<section anchor="vcard-prop-expertise"> | <section anchor="vcard-prop-expertise"> | |||
<name>EXPERTISE</name> | <name>EXPERTISE</name> | |||
<t>An EXPERTISE property as defined in <xref target="RFC6715"/> is rep | <t>The EXPERTISE property, as defined in <xref target="RFC6715"/>, is | |||
resented as a <tt>PersonalInfo</tt> object in the <tt>personalInfo</tt> property | represented as a <tt>PersonalInfo</tt> object in the <tt>personalInfo</tt> prope | |||
(<xref target="expertise_conversion"/>). The <tt>kind</tt> property is set to | rty (<xref target="expertise_conversion"/>). The <tt>kind</tt> property is set | |||
"expertise".</t> | to "expertise".</t> | |||
<t>The INDEX parameter converts according to the rules as defined in < | <t>The INDEX parameter converts according to the rules defined in <xre | |||
xref target="vcard-parameters"/>.</t> | f target="vcard-parameters"/>.</t> | |||
<figure anchor="expertise_conversion"> | <figure anchor="expertise_conversion"> | |||
<name>EXPERTISE conversion example</name> | <name>EXPERTISE Conversion Example</name> | |||
<artwork><![CDATA[ | <sourcecode type=""><![CDATA[ | |||
EXPERTISE;LEVEL=beginner;INDEX=2:Chinese literature | EXPERTISE;LEVEL=beginner;INDEX=2:Chinese literature | |||
EXPERTISE;INDEX=1;LEVEL=expert:chemistry | EXPERTISE;INDEX=1;LEVEL=expert:chemistry | |||
"personalInfo": { | "personalInfo": { | |||
"PERSINFO-1" : { | "PERSINFO-1" : { | |||
"kind": "expertise", | "kind": "expertise", | |||
"value": "Chinese literature", | "value": "Chinese literature", | |||
"level": "low", | "level": "low", | |||
"listAs": 2 | "listAs": 2 | |||
}, | }, | |||
"PERSINFO-2" : { | "PERSINFO-2" : { | |||
"kind": "expertise", | "kind": "expertise", | |||
"value": "chemistry", | "value": "chemistry", | |||
"level": "high", | "level": "high", | |||
"listAs": 1 | "listAs": 1 | |||
} | } | |||
} | } | |||
]]></artwork> | ]]></sourcecode> | |||
</figure> | </figure> | |||
</section> | </section> | |||
<section anchor="vcard-prop-hobby"> | <section anchor="vcard-prop-hobby"> | |||
<name>HOBBY</name> | <name>HOBBY</name> | |||
<t>A HOBBY property as defined in <xref target="RFC6715"/> is represen | <t>The HOBBY property, as defined in <xref target="RFC6715"/>, is repr | |||
ted as a <tt>PersonalInfo</tt> object in the <tt>personalInfo</tt> property (<xr | esented as a <tt>PersonalInfo</tt> object in the <tt>personalInfo</tt> property | |||
ef target="hobby_conversion"/>). The <tt>kind</tt> property is set to "hobby".< | (<xref target="hobby_conversion"/>). The <tt>kind</tt> property is set to "hobb | |||
/t> | y".</t> | |||
<t>The INDEX parameter converts according to the rules as defined in < | <t>The INDEX parameter converts according to the rules defined in <xre | |||
xref target="vcard-parameters"/>.</t> | f target="vcard-parameters"/>.</t> | |||
<figure anchor="hobby_conversion"> | <figure anchor="hobby_conversion"> | |||
<name>HOBBY conversion example</name> | <name>HOBBY Conversion Example</name> | |||
<artwork><![CDATA[ | <sourcecode type=""><![CDATA[ | |||
HOBBY;INDEX=1;LEVEL=high:reading | HOBBY;INDEX=1;LEVEL=high:reading | |||
HOBBY;INDEX=2;LEVEL=high:sewing | HOBBY;INDEX=2;LEVEL=high:sewing | |||
"personalInfo": { | "personalInfo": { | |||
"PERSINFO-1" : { | "PERSINFO-1" : { | |||
"kind": "hobby", | "kind": "hobby", | |||
"value": "reading", | "value": "reading", | |||
"level": "high", | "level": "high", | |||
"listAs": 1 | "listAs": 1 | |||
}, | }, | |||
"PERSINFO-2" : { | "PERSINFO-2" : { | |||
"kind": "hobby", | "kind": "hobby", | |||
"value": "sewing", | "value": "sewing", | |||
"level": "high", | "level": "high", | |||
"listAs": 2 | "listAs": 2 | |||
} | } | |||
} | } | |||
]]></artwork> | ]]></sourcecode> | |||
</figure> | </figure> | |||
</section> | </section> | |||
<section anchor="vcard-prop-interest"> | <section anchor="vcard-prop-interest"> | |||
<name>INTEREST</name> | <name>INTEREST</name> | |||
<t>An INTEREST property as defined in <xref target="RFC6715"/> is repr | <t>The INTEREST property, as defined in <xref target="RFC6715"/>, is r | |||
esented as a <tt>PersonalInfo</tt> object in the <tt>personalInfo</tt> property | epresented as a <tt>PersonalInfo</tt> object in the <tt>personalInfo</tt> proper | |||
(<xref target="interest_conversion"/>). The <tt>kind</tt> property is set to "i | ty (<xref target="interest_conversion"/>). The <tt>kind</tt> property is set to | |||
nterest".</t> | "interest".</t> | |||
<t>The INDEX parameter converts according to the rules as defined in < | <t>The INDEX parameter converts according to the rules defined in <xre | |||
xref target="vcard-parameters"/>.</t> | f target="vcard-parameters"/>.</t> | |||
<figure anchor="interest_conversion"> | <figure anchor="interest_conversion"> | |||
<name>INTEREST conversion example</name> | <name>INTEREST Conversion Example</name> | |||
<artwork><![CDATA[ | <sourcecode type=""><![CDATA[ | |||
INTEREST;INDEX=1;LEVEL=medium:r&b music | INTEREST;INDEX=1;LEVEL=medium:r&b music | |||
INTEREST;INDEX=2;LEVEL=high:rock&roll music | INTEREST;INDEX=2;LEVEL=high:rock&roll music | |||
"personalInfo": { | "personalInfo": { | |||
"PERSINFO-1" : { | "PERSINFO-1" : { | |||
"kind": "interest", | "kind": "interest", | |||
"value": "r&b music", | "value": "r&b music", | |||
"level": "medium", | "level": "medium", | |||
"listAs": 1 | "listAs": 1 | |||
}, | }, | |||
"PERSINFO-2" : { | "PERSINFO-2" : { | |||
"kind": "interest", | "kind": "interest", | |||
"value": "rock&roll music", | "value": "rock&roll music", | |||
"level": "high", | "level": "high", | |||
"listAs": 2 | "listAs": 2 | |||
} | } | |||
} | } | |||
]]></artwork> | ]]></sourcecode> | |||
</figure> | </figure> | |||
</section> | </section> | |||
<section anchor="vcard-prop-org-directory"> | <section anchor="vcard-prop-org-directory"> | |||
<name>ORG-DIRECTORY</name> | <name>ORG-DIRECTORY</name> | |||
<t>The ORG-DIRECTORY property <xref target="RFC6715"/> converts to a D irectory object in the <tt>directories</tt> property (<xref target="org_director y_conversion"/>). The <tt>kind</tt> property is set to <tt>directory</tt>. The <tt>uri</tt> property is set to the ORG-DIRECTORY property value.</t> | <t>The ORG-DIRECTORY property <xref target="RFC6715"/> converts to a D irectory object in the <tt>directories</tt> property (<xref target="org_director y_conversion"/>). The <tt>kind</tt> property is set to <tt>directory</tt>. The <tt>uri</tt> property is set to the ORG-DIRECTORY property value.</t> | |||
<t>The INDEX, PREF and TYPE parameters convert according to the rules as defined in <xref target="vcard-parameters"/>.</t> | <t>The INDEX, PREF, and TYPE parameters convert according to the rules defined in <xref target="vcard-parameters"/>.</t> | |||
<figure anchor="org_directory_conversion"> | <figure anchor="org_directory_conversion"> | |||
<name>ORG-DIRECTORY conversion example</name> | <name>ORG-DIRECTORY Conversion Example</name> | |||
<artwork><![CDATA[ | <sourcecode type=""><![CDATA[ | |||
ORG-DIRECTORY;INDEX=1:https://directory.mycompany.example.com | ORG-DIRECTORY;INDEX=1:https://directory.mycompany.example.com | |||
ORG-DIRECTORY;PREF=1:ldap://ldap.tech.example/o=Tech,ou=Engineering | ORG-DIRECTORY;PREF=1:ldap://ldap.tech.example/o=Tech,ou=Engineering | |||
"directories": { | "directories": { | |||
"DIRECTORY-1": { | "DIRECTORY-1": { | |||
"kind": "directory", | "kind": "directory", | |||
"uri": "https://directory.mycompany.example.com", | "uri": "https://directory.mycompany.example.com", | |||
"listAs": 1 | "listAs": 1 | |||
}, | }, | |||
"DIRECTORY-2": { | "DIRECTORY-2": { | |||
"kind": "directory", | "kind": "directory", | |||
"uri": "ldap://ldap.tech.example/o=Tech,ou=Engineering", | "uri": "ldap://ldap.tech.example/o=Tech,ou=Engineering", | |||
"pref": 1 | "pref": 1 | |||
} | } | |||
} | } | |||
]]></artwork> | ]]></sourcecode> | |||
</figure> | </figure> | |||
</section> | </section> | |||
</section> | </section> | |||
<section> | <section> | |||
<!--[rfced] Section Titles | ||||
a) Should the title of Section 2.11 ("Explanatory Properties") be | ||||
updated to include "Parameters" since Section 2.11.2 discusses the | ||||
CLIENTPIDMAP and PID parameters? And should "Parameter" be removed | ||||
from the title of Section 2.11.2 for consistency with the other | ||||
titles as shown below? | ||||
Original: | ||||
2.11 Explanatory Properties | ||||
2.11.1 CATEGORIES | ||||
2.11.2 CLIENTPIDMAP and PID Parameter | ||||
Perhaps: | ||||
2.11 Explanatory Properties and Parameters | ||||
2.11.1 CATEGORIES | ||||
2.11.2 CLIENTPIDMAP and PID | ||||
b) In the titles of Sections 2.15.1, 2.15.2, and 2.15.3, | ||||
should "Property" be removed for consistency with the | ||||
other section titles? | ||||
Original: | ||||
2.15. New JSContact properties | ||||
2.15.1. Property vCardProps | ||||
2.15.2. Property vCardParams | ||||
2.15.3. Property vCardName | ||||
Perhaps: | ||||
2.15. New JSContact Properties | ||||
2.15.1. vCardProps | ||||
2.15.2. vCardParams | ||||
2.15.3. vCardName | ||||
--> | ||||
<name>Explanatory Properties</name> | <name>Explanatory Properties</name> | |||
<section anchor="vcard-prop-categories"> | <section anchor="vcard-prop-categories"> | |||
<name>CATEGORIES</name> | <name>CATEGORIES</name> | |||
<t>A CATEGORIES property converts to a set of entries of the <tt>keywo rds</tt> property (<xref target="categories_conversion"/>). The keys are the co mma-separated text values of the CATEGORIES property.</t> | <t>The CATEGORIES property converts to a set of entries of the <tt>key words</tt> property (<xref target="categories_conversion"/>). The keys are the comma-separated text values of the CATEGORIES property.</t> | |||
<t>In this case, the PREF parameter does not have a JSContact counterp art; however, the implementors <bcp14>MAY</bcp14> insert the map entries by orde r of preference.</t> | <t>In this case, the PREF parameter does not have a JSContact counterp art; however, the implementors <bcp14>MAY</bcp14> insert the map entries by orde r of preference.</t> | |||
<figure anchor="categories_conversion"> | <figure anchor="categories_conversion"> | |||
<name>CATEGORIES conversion example</name> | <name>CATEGORIES Conversion Example</name> | |||
<artwork><![CDATA[ | <sourcecode type=""><![CDATA[ | |||
CATEGORIES:internet,IETF,Industry,Information Technology | CATEGORIES:internet,IETF,Industry,Information Technology | |||
"keywords": { | "keywords": { | |||
"internet": true, | "internet": true, | |||
"IETF": true, | "IETF": true, | |||
"Industry": true, | "Industry": true, | |||
"Information Technology": true | "Information Technology": true | |||
} | } | |||
]]></artwork> | ]]></sourcecode> | |||
</figure> | </figure> | |||
</section> | </section> | |||
<section anchor="vcard-prop-pid"> | <section anchor="vcard-prop-pid"> | |||
<name>CLIENTPIDMAP and PID Parameter</name> | <name>CLIENTPIDMAP and PID Parameters</name> | |||
<t>These convert to the <xref target="jscontact-prop-vcardprops"><tt>v | <t>The CLIENTPIDMAP and PID parameters convert to the <xref target="js | |||
CardProps</tt></xref> and <xref target="jscontact-prop-vcardparams"><tt>vCardPar | contact-prop-vcardprops"><tt>vCardProps</tt></xref> and <xref target="jscontact- | |||
ams</tt></xref> properties.</t> | prop-vcardparams"><tt>vCardParams</tt></xref> properties.</t> | |||
</section> | </section> | |||
<section anchor="vcard-prop-created"> | <section anchor="vcard-prop-created"> | |||
<name>CREATED</name> | <name>CREATED</name> | |||
<t>The CREATED property converts to the <tt>created</tt> property (<xr ef target="created_conversion"/>).</t> | <t>The CREATED property converts to the <tt>created</tt> property (<xr ef target="created_conversion"/>).</t> | |||
<figure anchor="created_conversion"> | <figure anchor="created_conversion"> | |||
<name>CREATED conversion example</name> | <name>CREATED Conversion Example</name> | |||
<artwork><![CDATA[ | <sourcecode type=""><![CDATA[ | |||
CREATED:19940930T143510Z | CREATED:19940930T143510Z | |||
"created": "1994-09-30T14:35:10Z" | "created": "1994-09-30T14:35:10Z" | |||
]]></artwork> | ]]></sourcecode> | |||
</figure> | </figure> | |||
<t>Note: This property is defined in <xref target="I-D.ietf-calext-vca rd-jscontact-extensions"/>.</t> | <t>Note: This property is defined in <xref target="RFC9554"/>.</t> | |||
</section> | </section> | |||
<section anchor="vcard-prop-note"> | <section anchor="vcard-prop-note"> | |||
<name>NOTE</name> | <name>NOTE</name> | |||
<t>A NOTE property converts to a <tt>Note</tt> object in the <tt>notes | <t>The NOTE property converts to a <tt>Note</tt> object in the <tt>not | |||
</tt> map (<xref target="notes_conversion"/>).</t> | es</tt> map (<xref target="notes_conversion"/>).</t> | |||
<t>The ALTID and LANGUAGE parameters convert according to the rules as | <t>The ALTID and LANGUAGE parameters convert according to the rules de | |||
defined in <xref target="vcard-parameters"/>.</t> | fined in <xref target="vcard-parameters"/>.</t> | |||
<figure anchor="notes_conversion"> | <figure anchor="notes_conversion"> | |||
<name>NOTE conversion example</name> | <name>NOTE Conversion Example</name> | |||
<artwork><![CDATA[ | <sourcecode type=""><![CDATA[ | |||
NOTE;CREATED=20221123T150132Z;AUTHOR-NAME="John": | NOTE;CREATED=20221123T150132Z;AUTHOR-NAME="John": | |||
Office hours are from 0800 to 1715 EST\, Mon-Fri. | Office hours are from 0800 to 1715 EST\, Mon-Fri. | |||
"notes": { | "notes": { | |||
"NOTE-1" : { | "NOTE-1" : { | |||
"note": "Office hours are from 0800 to 1715 EST, Mon-Fri.", | "note": "Office hours are from 0800 to 1715 EST, Mon-Fri.", | |||
"created": "2022-11-23T15:01:32Z", | "created": "2022-11-23T15:01:32Z", | |||
"author": { | "author": { | |||
"name": "John" | "name": "John" | |||
} | } | |||
} | } | |||
} | } | |||
]]></artwork> | ]]></sourcecode> | |||
</figure> | </figure> | |||
</section> | </section> | |||
<section anchor="vcard-prop-prodid"> | <section anchor="vcard-prop-prodid"> | |||
<name>PRODID</name> | <name>PRODID</name> | |||
<t>The PRODID property converts to the <tt>prodId</tt> property (<xref target="prodid_conversion"/>).</t> | <t>The PRODID property converts to the <tt>prodId</tt> property (<xref target="prodid_conversion"/>).</t> | |||
<figure anchor="prodid_conversion"> | <figure anchor="prodid_conversion"> | |||
<name>PRODID conversion example</name> | <name>PRODID Conversion Example</name> | |||
<artwork><![CDATA[ | <sourcecode type=""><![CDATA[ | |||
PRODID:ACME Contacts App version 1.23.5 | PRODID:ACME Contacts App version 1.23.5 | |||
"prodId": "ACME Contacts App version 1.23.5" | "prodId": "ACME Contacts App version 1.23.5" | |||
]]></artwork> | ]]></sourcecode> | |||
</figure> | </figure> | |||
</section> | </section> | |||
<section anchor="vcard-prop-rev"> | <section anchor="vcard-prop-rev"> | |||
<name>REV</name> | <name>REV</name> | |||
<t>The REV property converts to the <tt>updated</tt> property (<xref t arget="rev_conversion"/>).</t> | <t>The REV property converts to the <tt>updated</tt> property (<xref t arget="rev_conversion"/>).</t> | |||
<figure anchor="rev_conversion"> | <figure anchor="rev_conversion"> | |||
<name>REV conversion example</name> | <name>REV Conversion Example</name> | |||
<artwork><![CDATA[ | <sourcecode type=""><![CDATA[ | |||
REV:19951031T222710Z | REV:19951031T222710Z | |||
"updated": "1995-10-31T22:27:10Z" | "updated": "1995-10-31T22:27:10Z" | |||
]]></artwork> | ]]></sourcecode> | |||
</figure> | </figure> | |||
</section> | </section> | |||
<section anchor="vcard-prop-sound"> | <section anchor="vcard-prop-sound"> | |||
<name>SOUND</name> | <name>SOUND</name> | |||
<t>A SOUND property converts to an entry in the <tt>media</tt> propert | <t>The SOUND property converts to an entry in the <tt>media</tt> prope | |||
y (<xref target="sound_conversion"/>). The entry value is a <tt>Media</tt> obje | rty (<xref target="sound_conversion"/>). The entry value is a <tt>Media</tt> ob | |||
ct whose <tt>kind</tt> property is set to <tt>sound</tt> and <tt>uri</tt> proper | ject whose <tt>kind</tt> property is set to <tt>sound</tt> and <tt>uri</tt> prop | |||
ty is set to the SOUND value.</t> | erty is set to the SOUND value.</t> | |||
<t>The PREF and TYPE parameters convert according to the rules as defi | <t>The PREF and TYPE parameters convert according to the rules defined | |||
ned in <xref target="vcard-parameters"/>.</t> | in <xref target="vcard-parameters"/>.</t> | |||
<figure anchor="sound_conversion"> | <figure anchor="sound_conversion"> | |||
<name>SOUND conversion example</name> | <name>SOUND Conversion Example</name> | |||
<artwork><![CDATA[ | <sourcecode type=""><![CDATA[ | |||
SOUND:CID:JOHNQPUBLIC.19960229T080000.xyzMail@example.com | SOUND:CID:JOHNQPUBLIC.19960229T080000.xyzMail@example.com | |||
"media": { | "media": { | |||
... | ... | |||
"SOUND-1": { | "SOUND-1": { | |||
"kind": "sound", | "kind": "sound", | |||
"uri": "CID:JOHNQPUBLIC.19960229T080000.xyzMail@example.com" | "uri": "CID:JOHNQPUBLIC.19960229T080000.xyzMail@example.com" | |||
} | } | |||
} | } | |||
]]></artwork> | ]]></sourcecode> | |||
</figure> | </figure> | |||
</section> | </section> | |||
<!--[rfced] Is "corresponds" the correct wording or should it be | ||||
"converts" for consistency with the other related sections? | ||||
Original: | ||||
The UID property corresponds to the uid property (Figure 39). | ||||
Perhaps: | ||||
The UID property converts to the uid property (Figure 39). | ||||
--> | ||||
<section anchor="vcard-prop-uid"> | <section anchor="vcard-prop-uid"> | |||
<name>UID</name> | <name>UID</name> | |||
<t>The UID property corresponds to the <tt>uid</tt> property (<xref ta rget="uid_conversion"/>).</t> | <t>The UID property corresponds to the <tt>uid</tt> property (<xref ta rget="uid_conversion"/>).</t> | |||
<figure anchor="uid_conversion"> | <figure anchor="uid_conversion"> | |||
<name>UID conversion example</name> | <name>UID Conversion Example</name> | |||
<artwork><![CDATA[ | <sourcecode type=""><![CDATA[ | |||
UID:urn:uuid:f81d4fae-7dec-11d0-a765-00a0c91e6bf6 | UID:urn:uuid:f81d4fae-7dec-11d0-a765-00a0c91e6bf6 | |||
"uid": "urn:uuid:f81d4fae-7dec-11d0-a765-00a0c91e6bf6" | "uid": "urn:uuid:f81d4fae-7dec-11d0-a765-00a0c91e6bf6" | |||
]]></artwork> | ]]></sourcecode> | |||
</figure> | </figure> | |||
</section> | </section> | |||
<section anchor="vcard-prop-url"> | <section anchor="vcard-prop-url"> | |||
<name>URL</name> | <name>URL</name> | |||
<t>A URL property converts to an entry in the <tt>links</tt> property | <t>The URL property converts to an entry in the <tt>links</tt> propert | |||
(<xref target="url_conversion"/>). The entry value is a <tt>Link</tt> object wh | y (<xref target="url_conversion"/>). The entry value is a <tt>Link</tt> object | |||
ose <tt>uri</tt> property is set to the URL value.</t> | whose <tt>uri</tt> property is set to the URL value.</t> | |||
<t>The PREF and TYPE parameters convert according to the rules as defi | <t>The PREF and TYPE parameters convert according to the rules defined | |||
ned in <xref target="vcard-parameters"/>.</t> | in <xref target="vcard-parameters"/>.</t> | |||
<figure anchor="url_conversion"> | <figure anchor="url_conversion"> | |||
<name>URL conversion example</name> | <name>URL Conversion Example</name> | |||
<artwork><![CDATA[ | <sourcecode type=""><![CDATA[ | |||
URL:https://example.org/restaurant.french/~chezchic.html | URL:https://example.org/restaurant.french/~chezchic.html | |||
"links": { | "links": { | |||
"LINK-1": { | "LINK-1": { | |||
"uri": "https://example.org/restaurant.french/~chezchic.html" | "uri": "https://example.org/restaurant.french/~chezchic.html" | |||
} | } | |||
} | } | |||
]]></artwork> | ]]></sourcecode> | |||
</figure> | </figure> | |||
</section> | </section> | |||
<section anchor="vcard-prop-version"> | <section anchor="vcard-prop-version"> | |||
<name>VERSION</name> | <name>VERSION</name> | |||
<t>This converts to an entry in the <xref target="jscontact-prop-vcard props"><tt>vCardProps</tt></xref> property.</t> | <t>The VERSION property converts to an entry in the <xref target="jsco ntact-prop-vcardprops"><tt>vCardProps</tt></xref> property.</t> | |||
</section> | </section> | |||
<section anchor="vcard-prop-xablabel"> | <section anchor="vcard-prop-xablabel"> | |||
<name>X-ABLabel</name> | <name>X-ABLabel</name> | |||
<t>This property is experimental but widely in use in existing vCard d | <t>The X-ABLabel property is experimental but widely in use in existin | |||
ata. It converts to the <tt>label</tt> property of a JSContact object type. Th | g vCard data. It converts to the <tt>label</tt> property of a JSContact object | |||
e X-ABLabel property is preceded by a vCard property group name, and the label c | type. | |||
onverts to the JSContact object which got converted from a vCard property having | ||||
the same group.</t> | <!--[rfced] We are having some trouble understanding "a vCard | |||
<t>The group name is not preserved, implementations are free to choose | property having the same group". To clarify, may we update | |||
any unique group name when converting back to vCard. For an example how to pre | the sentence as follows? | |||
serve the group name see <xref target="vcard-param-group"/>.</t> | ||||
Original: | ||||
The X-ABLabel property is preceded by a vCard property group name, | ||||
and the label converts to the JSContact object which got converted | ||||
from a vCard property having the same group. | ||||
Perhaps: | ||||
The X-ABLabel property is preceded by a vCard property group name, | ||||
and the label converts to the JSContact object, which was converted | ||||
from a vCard property of the same group. | ||||
--> | ||||
The X-ABLabel property is preceded by a vCard property group name, and | ||||
the label converts to the JSContact object, which was converted from a vCard pro | ||||
perty having the same group.</t> | ||||
<t>The group name is not preserved; implementations are free to choose | ||||
any unique group name when converting back to vCard. For an example on how to | ||||
preserve the group name, see <xref target="vcard-param-group"/>.</t> | ||||
<figure anchor="xablabel_conversion"> | <figure anchor="xablabel_conversion"> | |||
<name>X-ABLabel conversion example</name> | <name>X-ABLabel Conversion Example</name> | |||
<artwork><![CDATA[ | <sourcecode type=""><![CDATA[ | |||
item1.TEL;VALUE=uri:tel:+1-555-555-5555 | item1.TEL;VALUE=uri:tel:+1-555-555-5555 | |||
item1.X-ABLabel:foo | item1.X-ABLabel:foo | |||
"phones": { | "phones": { | |||
"p1": { | "p1": { | |||
"number": "tel:+1-555-555-5555", | "number": "tel:+1-555-555-5555", | |||
"label": "foo" | "label": "foo" | |||
} | } | |||
} | } | |||
]]></artwork> | ]]></sourcecode> | |||
</figure> | </figure> | |||
</section> | </section> | |||
</section> | </section> | |||
<section> | <section> | |||
<name>Security Properties</name> | <name>Security Properties</name> | |||
<section anchor="vcard-prop-key"> | <section anchor="vcard-prop-key"> | |||
<name>KEY</name> | <name>KEY</name> | |||
<t>A KEY property converts to an entry in the <tt>cryptoKeys</tt> prop | <t>The KEY property converts to an entry in the <tt>cryptoKeys</tt> pr | |||
erty (<xref target="key_conversion"/>). The entry value is a <tt>CryptoKey</tt> | operty (<xref target="key_conversion"/>). The entry value is a <tt>CryptoKey</t | |||
object whose <tt>uri</tt> property is set to the KEY value.</t> | t> object whose <tt>uri</tt> property is set to the KEY value.</t> | |||
<t>The PREF and TYPE parameters convert according to the rules as defi | <t>The PREF and TYPE parameters convert according to the rules defined | |||
ned in <xref target="vcard-parameters"/>.</t> | in <xref target="vcard-parameters"/>.</t> | |||
<figure anchor="key_conversion"> | <figure anchor="key_conversion"> | |||
<name>KEY conversion example</name> | <name>KEY Conversion Example</name> | |||
<artwork><![CDATA[ | <sourcecode type=""><![CDATA[ | |||
KEY:https://www.example.com/keys/jdoe.cer | KEY:https://www.example.com/keys/jdoe.cer | |||
"cryptoKeys": { | "cryptoKeys": { | |||
"KEY-1": { | "KEY-1": { | |||
"uri": "https://www.example.com/keys/jdoe.cer" | "uri": "https://www.example.com/keys/jdoe.cer" | |||
} | } | |||
} | } | |||
]]></artwork> | ]]></sourcecode> | |||
</figure> | </figure> | |||
</section> | </section> | |||
</section> | </section> | |||
<section> | <section> | |||
<name>Calendar Properties</name> | <name>Calendar Properties</name> | |||
<section anchor="vcard-prop-caladruri"> | <section anchor="vcard-prop-caladruri"> | |||
<name>CALADRURI</name> | <name>CALADRURI</name> | |||
<t>A CALADRURI property converts to an entry in the <tt>schedulingAddr | <t>The CALADRURI property converts to an entry in the <tt>schedulingAd | |||
esses</tt> property (<xref target="caladruri_conversion"/>). The entry value is | dresses</tt> property (<xref target="caladruri_conversion"/>). The entry value | |||
a <tt>SchedulingAddress</tt> object whose <tt>uri</tt> property is set to the C | is a <tt>SchedulingAddress</tt> object whose <tt>uri</tt> property is set to the | |||
ALADRURI value.</t> | CALADRURI value.</t> | |||
<t>The PREF parameter converts according to the rules as defined in <x | <t>The PREF parameter converts according to the rules defined in <xref | |||
ref target="vcard-parameters"/>.</t> | target="vcard-parameters"/>.</t> | |||
<figure anchor="caladruri_conversion"> | <figure anchor="caladruri_conversion"> | |||
<name>CALADRURI conversion example</name> | <name>CALADRURI Conversion Example</name> | |||
<artwork><![CDATA[ | <sourcecode type=""><![CDATA[ | |||
CALADRURI;PREF=1:mailto:janedoe@example.com | CALADRURI;PREF=1:mailto:janedoe@example.com | |||
CALADRURI:https://example.com/calendar/jdoe | CALADRURI:https://example.com/calendar/jdoe | |||
"schedulingAddresses": { | "schedulingAddresses": { | |||
"SCHEDULING-1": { | "SCHEDULING-1": { | |||
"uri": "mailto:janedoe@example.com", | "uri": "mailto:janedoe@example.com", | |||
"pref": 1 | "pref": 1 | |||
}, | }, | |||
"SCHEDULING-2": { | "SCHEDULING-2": { | |||
"uri": "https://example.com/calendar/jdoe" | "uri": "https://example.com/calendar/jdoe" | |||
} | } | |||
} | } | |||
]]></artwork> | ]]></sourcecode> | |||
</figure> | </figure> | |||
</section> | </section> | |||
<section anchor="vcard-prop-caluri"> | <section anchor="vcard-prop-caluri"> | |||
<name>CALURI</name> | <name>CALURI</name> | |||
<t>A CALURI property converts to an entry in the <tt>calendars</tt> pr | <t>The CALURI property converts to an entry in the <tt>calendars</tt> | |||
operty (<xref target="caluri_conversion"/>). The entry value is a <tt>Calendar< | property (<xref target="caluri_conversion"/>). The entry value is a <tt>Calenda | |||
/tt> object whose <tt>kind</tt> property is set to <tt>calendar</tt> and <tt>uri | r</tt> object whose <tt>kind</tt> property is set to <tt>calendar</tt> and <tt>u | |||
</tt> property is set to the CALURI value.</t> | ri</tt> property is set to the CALURI value.</t> | |||
<t>The PREF and TYPE parameters convert according to the rules as defi | <t>The PREF and TYPE parameters convert according to the rules defined | |||
ned in <xref target="vcard-parameters"/>.</t> | in <xref target="vcard-parameters"/>.</t> | |||
<figure anchor="caluri_conversion"> | <figure anchor="caluri_conversion"> | |||
<name>CALURI conversion example</name> | <name>CALURI Conversion Example</name> | |||
<artwork><![CDATA[ | <sourcecode type=""><![CDATA[ | |||
CALURI;PREF=1:https://cal.example.com/calA | CALURI;PREF=1:https://cal.example.com/calA | |||
CALURI;MEDIATYPE=text/calendar:https://ftp.example.com/calA.ics | CALURI;MEDIATYPE=text/calendar:https://ftp.example.com/calA.ics | |||
"calendars": { | "calendars": { | |||
"CAL-1": { | "CAL-1": { | |||
"kind": "calendar", | "kind": "calendar", | |||
"uri": "https://cal.example.com/calA", | "uri": "https://cal.example.com/calA", | |||
"pref": 1 | "pref": 1 | |||
}, | }, | |||
"CAL-2": { | "CAL-2": { | |||
"kind": "calendar", | "kind": "calendar", | |||
"uri": "https://ftp.example.com/calA.ics", | "uri": "https://ftp.example.com/calA.ics", | |||
"mediaType": "text/calendar" | "mediaType": "text/calendar" | |||
} | } | |||
} | } | |||
]]></artwork> | ]]></sourcecode> | |||
</figure> | </figure> | |||
</section> | </section> | |||
<section anchor="vcard-prop-fburl"> | <section anchor="vcard-prop-fburl"> | |||
<name>FBURL</name> | <name>FBURL</name> | |||
<t>An FBURL property converts to an entry in the <tt>calendars</tt> pr | <t>The FBURL property converts to an entry in the <tt>calendars</tt> p | |||
operty (<xref target="fburl_conversion"/>). The entry value is a <tt>Calendar</ | roperty (<xref target="fburl_conversion"/>). The entry value is a <tt>Calendar< | |||
tt> object whose <tt>kind</tt> property is set to <tt>freeBusy</tt> and <tt>uri< | /tt> object whose <tt>kind</tt> property is set to <tt>freeBusy</tt> and <tt>uri | |||
/tt> property is set to the FBURL value.</t> | </tt> property is set to the FBURL value.</t> | |||
<t>The PREF and TYPE parameters convert according to the rules as defi | <t>The PREF and TYPE parameters convert according to the rules defined | |||
ned in <xref target="vcard-parameters"/>.</t> | in <xref target="vcard-parameters"/>.</t> | |||
<figure anchor="fburl_conversion"> | <figure anchor="fburl_conversion"> | |||
<name>FBURL conversion example</name> | <name>FBURL Conversion Example</name> | |||
<artwork><![CDATA[ | <sourcecode type=""><![CDATA[ | |||
FBURL;PREF=1:https://www.example.com/busy/janedoe | FBURL;PREF=1:https://www.example.com/busy/janedoe | |||
FBURL;MEDIATYPE=text/calendar:https://example.com/busy/project-a.ifb | FBURL;MEDIATYPE=text/calendar:https://example.com/busy/project-a.ifb | |||
"calendars": { | "calendars": { | |||
"FBURL-1": { | "FBURL-1": { | |||
"kind": "freeBusy", | "kind": "freeBusy", | |||
"uri": "https://www.example.com/busy/janedoe", | "uri": "https://www.example.com/busy/janedoe", | |||
"pref": 1 | "pref": 1 | |||
}, | }, | |||
"FBURL-2": { | "FBURL-2": { | |||
"kind": "freeBusy", | "kind": "freeBusy", | |||
"uri": "https://example.com/busy/project-a.ifb", | "uri": "https://example.com/busy/project-a.ifb", | |||
"mediaType": "text/calendar" | "mediaType": "text/calendar" | |||
} | } | |||
} | } | |||
]]></artwork> | ]]></sourcecode> | |||
</figure> | </figure> | |||
</section> | </section> | |||
</section> | </section> | |||
<section anchor="vcard-extended"> | <section anchor="vcard-extended"> | |||
<name>Extended Properties and Parameters</name> | <name>Extended Properties and Parameters</name> | |||
<t>These convert as specified in <xref target="new-jscontact"/>.</t> | <t>Extended properties and parameters convert as specified in <xref targ et="new-jscontact"/>.</t> | |||
</section> | </section> | |||
<section anchor="new-jscontact"> | <section anchor="new-jscontact"> | |||
<name>New JSContact properties</name> | <name>New JSContact Properties</name> | |||
<t>vCards may contain properties or parameters for which no IANA-registe | <t>vCards may contain properties or parameters for which no IANA-registe | |||
red JSContact property is defined. For example, a vCard may contain properties | red JSContact property is defined. For example, a vCard may contain properties | |||
and parameters of which the semantics or purposes are unknown to the implementat | and parameters of which the semantics or purposes are unknown to the implementat | |||
ion; see <xref target="RFC6350" section="6.10"/>.</t> | ion; see <xref target="RFC6350" sectionFormat="of" section="6.10"/>.</t> | |||
<t>This section defines JSContact properties by which such vCard propert ies and parameters <bcp14>MAY</bcp14> be represented in JSContact. Implementati ons <bcp14>MAY</bcp14> choose to convert differently if they deem that more appr opriate.</t> | <t>This section defines JSContact properties by which such vCard propert ies and parameters <bcp14>MAY</bcp14> be represented in JSContact. Implementati ons <bcp14>MAY</bcp14> choose to convert differently if they deem that more appr opriate.</t> | |||
<section anchor="jscontact-prop-vcardprops"> | <section anchor="jscontact-prop-vcardprops"> | |||
<name>Property <tt>vCardProps</tt></name> | <name>Property <tt>vCardProps</tt></name> | |||
<dl> | <dl> | |||
<dt>Name:</dt> | <dt>Name:</dt> | |||
<dd> | <dd> | |||
<tt>vCardProps</tt> | <tt>vCardProps</tt> | |||
</dd> | </dd> | |||
<dt>Type:</dt> | <dt>Type:</dt> | |||
<dd><tt>JCardProp[]</tt>, where <tt>JCardProp</tt> denotes a jCard-e ncoded vCard property as defined in <xref target="RFC7095" section="3.3"/>. | <dd><tt>JCardProp[]</tt>, where <tt>JCardProp</tt> denotes a jCard-e ncoded vCard property as defined in <xref target="RFC7095" sectionFormat="of" se ction="3.3"/>. | |||
</dd> | </dd> | |||
<dt>Definition:</dt> | <dt>Definition:</dt> | |||
<dd>This property is set on a JSContact object that represents a vCa rd. It contains properties that are set in the vCard represented by this JSCont act object. Each entry in this list typically represents a vCard property for w hich no conversion to an IANA-registered JSContact property is defined.</dd> | <dd>This property is set on a JSContact object that represents a vCa rd. It contains properties that are set in the vCard represented by this JSCont act object. Each entry in this list typically represents a vCard property for w hich no conversion to an IANA-registered JSContact property is defined.</dd> | |||
<dt>Example:</dt> | <dt>Example:</dt> | |||
<dd> | <dd> | |||
<t>This illustrates how to convert a vCard extension property:</t> | <t>This illustrates how to convert a vCard extension property:</t> | |||
<figure anchor="props_conversion"> | <figure anchor="props_conversion"> | |||
<name>JSContact <tt>vCardProps</tt> example</name> | <name>JSContact <tt>vCardProps</tt> Example</name> | |||
<artwork><![CDATA[ | <sourcecode type=""><![CDATA[ | |||
item1.X-FOO;X-BAR=Hello:World! | item1.X-FOO;X-BAR=Hello:World! | |||
"vCardProps": [ | "vCardProps": [ | |||
["x-foo", { | ["x-foo", { | |||
"x-bar": "Hello", | "x-bar": "Hello", | |||
"group": "item1" | "group": "item1" | |||
}, "unknown", "World!"] | }, "unknown", "World!"] | |||
] | ] | |||
]]></artwork> | ]]></sourcecode> | |||
</figure> | </figure> | |||
</dd> | </dd> | |||
</dl> | </dl> | |||
</section> | </section> | |||
<section anchor="jscontact-prop-vcardparams"> | <section anchor="jscontact-prop-vcardparams"> | |||
<name>Property <tt>vCardParams</tt></name> | <name>Property <tt>vCardParams</tt></name> | |||
<dl> | <dl> | |||
<dt>Name:</dt> | <dt>Name:</dt> | |||
<dd> | <dd> | |||
<tt>vCardParams</tt> | <tt>vCardParams</tt> | |||
</dd> | </dd> | |||
<dt>Type:</dt> | <dt>Type:</dt> | |||
<dd> | <dd> | |||
<tt>String[String|String[]]</tt> | <tt>String[String|String[]]</tt> | |||
</dd> | </dd> | |||
<dt>Definition:</dt> | <dt>Definition:</dt> | |||
<dd>This property is set on a JSContact object that represents a vCa | ||||
rd property. Its value <bcp14>MUST</bcp14> be a JSON object containing vCard pr | <!--[rfced] We do not see mention of "array element 2" in Section 3.3 | |||
operty parameters, defined as array element 2 in <xref target="RFC7095" section= | of RFC 7095. We do see mention of "array element values" in | |||
"3.3"/>. Each entry represents a parameter of the vCard property that converts | Section 3.3.1.3. Please confirm if an update is needed to the | |||
to the JSContact object.</dd> | name of the term or section number. | |||
Original: | ||||
This property is set on a JSContact object that represents a | ||||
vCard property. Its value MUST be a JSON object containing | ||||
vCard property parameters, defined as array element 2 | ||||
in Section 3.3 of [RFC7095]. | ||||
--> | ||||
<dd>This property is set on a JSContact object that represents a vCa | ||||
rd property. Its value <bcp14>MUST</bcp14> be a JSON object containing vCard pr | ||||
operty parameters, defined as array element 2 in <xref target="RFC7095" sectionF | ||||
ormat="of" section="3.3"/>. Each entry represents a parameter of the vCard prop | ||||
erty that converts to the JSContact object.</dd> | ||||
<dt>Example:</dt> | <dt>Example:</dt> | |||
<dd> | <dd> | |||
<t>This illustrates how to convert a vCard extension parameter:</t > | <t>This illustrates how to convert a vCard extension parameter:</t > | |||
<figure anchor="params_conversion"> | <figure anchor="params_conversion"> | |||
<name>JSContact <tt>vCardParams</tt> example</name> | <name>JSContact <tt>vCardParams</tt> Example</name> | |||
<artwork><![CDATA[ | <sourcecode type=""><![CDATA[ | |||
EMAIL;X-FOO=Bar:jane_doe@example.com | EMAIL;X-FOO=Bar:jane_doe@example.com | |||
"emails": { | "emails": { | |||
"email1": { | "email1": { | |||
"address": "jane_doe@example.com", | "address": "jane_doe@example.com", | |||
"vCardParams": { | "vCardParams": { | |||
"x-foo": "Bar" | "x-foo": "Bar" | |||
} | } | |||
} | } | |||
} | } | |||
]]></artwork> | ]]></sourcecode> | |||
</figure> | </figure> | |||
</dd> | </dd> | |||
</dl> | </dl> | |||
</section> | </section> | |||
<section anchor="jscontact-prop-vcardname"> | <section anchor="jscontact-prop-vcardname"> | |||
<name>Property <tt>vCardName</tt></name> | <name>Property <tt>vCardName</tt></name> | |||
<dl> | <dl> | |||
<dt>Name:</dt> | <dt>Name:</dt> | |||
<dd> | <dd> | |||
<tt>vCardName</tt> | <tt>vCardName</tt> | |||
</dd> | </dd> | |||
<dt>Type:</dt> | <dt>Type:</dt> | |||
<dd> | <dd> | |||
<tt>String</tt> | <tt>String</tt> | |||
</dd> | </dd> | |||
<dt>Definition:</dt> | <dt>Definition:</dt> | |||
<dd>This property is set on a JSContact object that represents a vCa rd property or parameter and its value contains the name of that vCard element. This allows to preserve the name of a vCard element when multiple elements conv ert the same JSContact object type. The case-insensitive value <bcp14>MUST</bcp 14> be valid according to the <tt>name</tt> ABNF defined in <xref target="RFC635 0" section="3.3"/>.</dd> | <dd>This property is set on a JSContact object that represents a vCa rd property or parameter, and its value contains the name of that vCard element. This allows the name of a vCard element to be preserved when multiple elements convert the same JSContact object type. The case-insensitive value <bcp14>MUST </bcp14> be valid according to the <tt>name</tt> ABNF defined in <xref target="R FC6350" sectionFormat="of" section="3.3"/>.</dd> | |||
<dt>Example:</dt> | <dt>Example:</dt> | |||
<!--[rfced] In the following sentence, should "OnlineService" perhaps | ||||
be updated as "OnlineService object" or "OnlineService object | ||||
type" for consistency? | ||||
Original: | ||||
Example: Both vCard IMPP and SOCIALPROFILE convert to OnlineService | ||||
in JSContact. | ||||
Perhaps: | ||||
Example: Both vCard IMPP and SOCIALPROFILE convert to an OnlineService | ||||
object in JSContact. | ||||
--> | ||||
<dd> | <dd> | |||
<t>Both vCard IMPP and SOCIALPROFILE convert to OnlineService in J SContact. The <tt>vCardName</tt> property value indicates that the vCard source element was IMPP:</t> | <t>Both vCard IMPP and SOCIALPROFILE convert to OnlineService in J SContact. The <tt>vCardName</tt> property value indicates that the vCard source element was IMPP as follows:</t> | |||
<figure anchor="example-vcardname"> | <figure anchor="example-vcardname"> | |||
<name>JSContact <tt>vCardName</tt> example</name> | <name>JSContact <tt>vCardName</tt> Example</name> | |||
<artwork><![CDATA[ | <sourcecode type=""><![CDATA[ | |||
IMPP:xmpp:alice@example.com | IMPP:xmpp:alice@example.com | |||
"onlineServices": { | "onlineServices": { | |||
"os1": { | "os1": { | |||
"uri": "xmpp:alice@example.com", | "uri": "xmpp:alice@example.com", | |||
"vCardName": "impp" | "vCardName": "impp" | |||
}, | }, | |||
} | } | |||
]]></artwork> | ]]></sourcecode> | |||
</figure> | </figure> | |||
</dd> | </dd> | |||
</dl> | </dl> | |||
</section> | </section> | |||
</section> | </section> | |||
</section> | </section> | |||
<section anchor="convert-jscontact-to-vcard"> | <section anchor="convert-jscontact-to-vcard"> | |||
<name>Converting JSContact to vCard</name> | <name>Converting JSContact to vCard</name> | |||
<section> | <section> | |||
<name>Conversion Rules</name> | <name>Conversion Rules</name> | |||
<t>A <tt>Card</tt> converts to vCard by applying the reverse rules of co nverting vCard to JSContact. In addition to those listed in <xref target="conve rt_jscontact_to_vcard-reverse-rules"/>, the following rules apply:</t> | <t>A <tt>Card</tt> converts to vCard by applying the reverse rules of co nverting vCard to JSContact. In addition to those listed in <xref target="conve rt_jscontact_to_vcard-reverse-rules"/>, the following rules apply:</t> | |||
<ul> | <ul> | |||
<li>Multivalued JSContact properties convert to separate instances of their equivalent vCard property, and for each the PROP-ID parameter <bcp14>MUST< /bcp14> be set to the <tt>Id</tt> of the converted value (see <xref target="vcar d-param-propid"/>).</li> | <li>Multivalued JSContact properties convert to separate instances of their equivalent vCard property, and each of the PROP-ID parameters <bcp14>MUST< /bcp14> be set to the <tt>Id</tt> of the converted value (see <xref target="vcar d-param-propid"/>).</li> | |||
<li> | <li> | |||
<t>The <tt>full</tt> property of the <tt>name</tt> property in JSCon tact is optional, but the FN property is mandatory in vCard. The following rule s apply:</t> | <t>The <tt>full</tt> property of the <tt>name</tt> property in JSCon tact is optional, but the FN property is mandatory in vCard. The following rule s apply:</t> | |||
<ul> | <ul> | |||
<li>If the Name <tt>full</tt> property is set, then implementation s <bcp14>MUST</bcp14> use its value for the vCard FN property.</li> | <li>If the Name <tt>full</tt> property is set, then implementation s <bcp14>MUST</bcp14> use its value for the vCard FN property.</li> | |||
<li>If the Name <tt>full</tt> property is not set, then implementa | <li>If the Name <tt>full</tt> property is not set, then implementa | |||
tions <bcp14>SHOULD</bcp14> derive the full name from the Name <tt>components</t | tions <bcp14>SHOULD</bcp14> derive the full name from the Name <tt>components</t | |||
t> values. If the <tt>isOrdered</tt> property is true, then this can be done by | t> values. If the <tt>isOrdered</tt> property is "true", then this can be done | |||
concatenating the name component values. Otherwise, or alternatively, an imple | by concatenating the name component values. Otherwise, or alternatively, an imp | |||
mentation can choose any other heuristic to generate the full name from its comp | lementation can choose any other heuristic to generate the full name from its co | |||
onents, such as <xref target="CLDRPersonName"/>. Implementations <bcp14>MUST</b | mponents such as <xref target="CLDRPersonName"/>. Implementations <bcp14>MUST</ | |||
cp14> set the DERIVED parameter on the FN property.</li> | bcp14> set the DERIVED parameter on the FN property.</li> | |||
<li>Otherwise, they <bcp14>MUST</bcp14> set the FN property to the | <li>Otherwise, the FN property <bcp14>MUST</bcp14> be set to the e | |||
empty value.</li> | mpty value.</li> | |||
</ul> | </ul> | |||
</li> | </li> | |||
<li>Vendor-specific and unknown properties convert to vCard as outline d in <xref target="jscontact-convert-unknown"/>.</li> | <li>Vendor-specific and unknown properties convert to vCard as outline d in <xref target="jscontact-convert-unknown"/>.</li> | |||
</ul> | </ul> | |||
<section anchor="jscontact-convert-unknown"> | <section anchor="jscontact-convert-unknown"> | |||
<name>Converting unknown properties</name> | <name>Converting Unknown Properties</name> | |||
<t>JSContact object types may contain properties for which no IANA-reg istered vCard property is defined. For example, a JSContact object may contain vendor-specific properties of which the semantics or purpose are unknown.</t> | <t>JSContact object types may contain properties for which no IANA-reg istered vCard property is defined. For example, a JSContact object may contain vendor-specific properties of which the semantics or purpose are unknown.</t> | |||
<t>This specification defines the new <xref target="vcard-prop-jsprop" ><tt>JSPROP</tt></xref> vCard property and <xref target="vcard-param-jsptr"><tt> JSPTR</tt></xref> vCard parameter by which such JSContact properties <bcp14>MAY< /bcp14> be represented in vCard. Implementations <bcp14>MAY</bcp14> choose to c onvert differently if they deem that more appropriate.</t> | <t>This specification defines the new <xref target="vcard-prop-jsprop" ><tt>JSPROP</tt></xref> vCard property and <xref target="vcard-param-jsptr"><tt> JSPTR</tt></xref> vCard parameter by which such JSContact properties <bcp14>MAY< /bcp14> be represented in vCard. Implementations <bcp14>MAY</bcp14> choose to c onvert differently if they deem that more appropriate.</t> | |||
</section> | </section> | |||
</section> | </section> | |||
<section anchor="new-vcard-props"> | <section anchor="new-vcard-props"> | |||
<name>New vCard Properties</name> | <name>New vCard Properties</name> | |||
<section anchor="vcard-prop-jsprop"> | <section anchor="vcard-prop-jsprop"> | |||
<name>JSPROP</name> | <name>JSPROP</name> | |||
<dl> | <dl> | |||
<dt>Property name:</dt> | <dt>Property name:</dt> | |||
<dd>JSPROP</dd> | <dd>JSPROP</dd> | |||
<dt>Purpose:</dt> | <dt>Purpose:</dt> | |||
<dd>This property represents a JSContact property in vCard.</dd> | <dd>Represents a JSContact property in vCard.</dd> | |||
<dt>Value type:</dt> | <dt>Value type:</dt> | |||
<dd>TEXT, also see Format Definition for value restrictions.</dd> | <dd>TEXT; also see "Format definition" below for value restrictions. </dd> | |||
<dt>Conformance:</dt> | <dt>Conformance:</dt> | |||
<dd>The property can be specified multiple times in a vCard.</dd> | <dd>Can be specified multiple times in a vCard.</dd> | |||
<dt>Property parameters:</dt> | <dt>Property parameters:</dt> | |||
<dd> | <dd> | |||
The JSPTR parameter <bcp14>MUST</bcp14> be set for this property. | The JSPTR parameter <bcp14>MUST</bcp14> be set for this property. | |||
Other IANA-registered and experimental property parameters can be spec ified on this property. | Other IANA-registered and experimental property parameters can be spec ified on this property. | |||
</dd> | </dd> | |||
<dt>Description:</dt> | <dt>Description:</dt> | |||
<dd> | <dd> | |||
<t>This property converts an arbitrary JSContact property from and to vCard. The vCard property value is the JSON-encoded value of the JSContact property, represented as a TEXT value. The format of the JSON value <bcp14>MUST </bcp14> be compact, e.g., without insignificant whitespace. The value of the J SPTR parameter points to the JSContact property within the Card.</t> | <t>This property converts an arbitrary JSContact property from and to vCard. The vCard property value is the JSON-encoded value of the JSContact property, represented as a TEXT value. The format of the JSON value <bcp14>MUST </bcp14> be compact, e.g., without insignificant whitespace. The value of the J SPTR parameter points to the JSContact property within the Card.</t> | |||
<t>The root of the JSON pointer is always the Card object that t his vCard converts to, irrespective if the JSON pointer starts with the SOLIDUS (U+002F) character. The pointer <bcp14>MUST NOT</bcp14> reference into an array .</t> | <t>The root of the JSON pointer is always the Card object that t his vCard converts to, irrespective if the JSON pointer starts with the SOLIDUS (U+002F) character. The pointer <bcp14>MUST NOT</bcp14> reference into an array .</t> | |||
<t>All JSPROP properties in a vCard together form a PatchObject as defined in <xref target="I-D.ietf-calext-jscontact"/>. The value of its JSPT R parameter corresponds to a key in the PatchObject, the value of the JSPROP pro perty corresponds to the value for that key. When converting from vCard to JSCo ntact, the PatchObject <bcp14>MUST</bcp14> only be applied after all other vCard properties have already been converted. The PatchObject <bcp14>MUST</bcp14> be valid, including the restriction that an invalid PatchObject <bcp14>MUST NOT</b cp14> be applied.</t> | <t>All JSPROP properties in a vCard together form a PatchObject as defined in <xref target="RFC9553"/>. The value of its JSPTR parameter corres ponds to a key in the PatchObject; the value of the JSPROP property corresponds to the value for that key. When converting from vCard to JSContact, the PatchOb ject <bcp14>MUST</bcp14> only be applied after all other vCard properties have a lready been converted. The PatchObject <bcp14>MUST</bcp14> be valid, including the restriction that an invalid PatchObject <bcp14>MUST NOT</bcp14> be applied.< /t> | |||
</dd> | </dd> | |||
<dt>Format definition:</dt> | <dt>Format definition:</dt> | |||
<dd> | <dd> | |||
<t>This property is defined by the following notation:</t> | <t>This property is defined by the following notation:</t> | |||
<!--[rfced] When we attempted to validate the ABNF using | ||||
<https://author-tools.ietf.org/abnf>, we received the following error. | ||||
Please review and let us know how we may fix this. | ||||
(20:53): warning: zero-length char-val | ||||
--> | ||||
<sourcecode name="" type="abnf"><![CDATA[ | <sourcecode name="" type="abnf"><![CDATA[ | |||
jsprop = "JSPROP" jsprop-param ":" TEXT | jsprop = "JSPROP" jsprop-param ":" TEXT | |||
jsprop-param = *( | jsprop-param = *( | |||
; The following are MANDATORY and MUST NOT | ; The following are MANDATORY and MUST NOT | |||
; occur more than once | ; occur more than once | |||
( ";" jsptr-param ) / ; see next section | ( ";" jsptr-param ) / ; see next section | |||
( ";" "VALUE" "=" "TEXT") | ( ";" "VALUE" "=" "TEXT") | |||
; | ; | |||
; The following is OPTIONAL, | ; The following is OPTIONAL | |||
; and MAY occur more than once. | ; and MAY occur more than once. | |||
; | ; | |||
(";" other-param) | (";" other-param) | |||
; | ; | |||
) | ) | |||
]]></sourcecode> | ]]></sourcecode> | |||
</dd> | </dd> | |||
<dt anchor="vcard-prop-jsprop-examples">Example(s):</dt> | <dt anchor="vcard-prop-jsprop-examples">Example(s):</dt> | |||
<dd> | <dd> | |||
<t>This illustrates how to convert a property at the top-level in a Card object that is unknown to the implementation.</t> | <t>This illustrates how to convert a property at the top level in a Card object that is unknown to the implementation.</t> | |||
<figure anchor="jscontact-prop-unknown"> | <figure anchor="jscontact-prop-unknown"> | |||
<name>Unknown property example</name> | <name>Unknown Property Example</name> | |||
<artwork><![CDATA[ | <sourcecode type=""><![CDATA[ | |||
"someUnknownProperty": true | "someUnknownProperty": true | |||
JSPROP;JSPTR="someUnknownProperty":true | JSPROP;JSPTR="someUnknownProperty":true | |||
]]></artwork> | ]]></sourcecode> | |||
</figure> | </figure> | |||
<t>This illustrates how to convert a vendor-specific property at t he top-level of a Card object. Note the required use of quoted string for the J SPTR value which allows the path to include the COLON (U+003A) character.</t> | <t>This illustrates how to convert a vendor-specific property at t he top level of a Card object. Note the required use of quoted string for the J SPTR value, which allows the path to include the COLON (U+003A) character.</t> | |||
<figure anchor="jscontact-prop-vendor-specific"> | <figure anchor="jscontact-prop-vendor-specific"> | |||
<name>Vendor-specific property conversion example</name> | <name>Vendor-Specific Property Conversion Example</name> | |||
<artwork><![CDATA[ | <sourcecode type=""><![CDATA[ | |||
"example.com:foo": { | "example.com:foo": { | |||
"bar": 1234 | "bar": 1234 | |||
} | } | |||
JSPROP;JSPTR="example.com:foo":{"bar":1234} | JSPROP;JSPTR="example.com:foo":{"bar":1234} | |||
]]></artwork> | ]]></sourcecode> | |||
</figure> | </figure> | |||
<t>This illustrates how to convert a vendor-specific property at a nested level in a Card object using a path relative to the Card object. Althou gh not recommended, the property name includes the SOLIDUS (U+002F) character wh ich requires escaping in the JSON pointer.</t> | <t>This illustrates how to convert a vendor-specific property at a nested level in a Card object using a path relative to the Card object. Althou gh not recommended, the property name includes the SOLIDUS (U+002F) character, w hich requires escaping in the JSON pointer.</t> | |||
<figure anchor="jscontact-prop-nested"> | <figure anchor="jscontact-prop-nested"> | |||
<name>Nested vendor-specific property example with path relative | <name>Nested Vendor-Specific Property Example with a Path Relati | |||
to Card</name> | ve to Card</name> | |||
<artwork><![CDATA[ | <sourcecode type=""><![CDATA[ | |||
"phones": { | "phones": { | |||
"phone1": { | "phone1": { | |||
"number": "tel:+33-01-23-45-67" | "number": "tel:+33-01-23-45-67", | |||
"example.com:foo/bar": "tux hux" | "example.com:foo/bar": "tux hux" | |||
} | } | |||
} | } | |||
TEL:tel:+33-01-23-45-67 | TEL:tel:+33-01-23-45-67 | |||
JSPROP;JSPTR="phones/phone1/example.com:foo~1bar": | JSPROP;JSPTR="phones/phone1/example.com:foo~1bar": | |||
"tux hux" | "tux hux" | |||
]]></artwork> | ]]></sourcecode> | |||
</figure> | </figure> | |||
</dd> | </dd> | |||
</dl> | </dl> | |||
</section> | </section> | |||
</section> | </section> | |||
<section> | <section> | |||
<name>New vCard Parameter</name> | <name>New vCard Parameters</name> | |||
<section anchor="vcard-param-jscomps"> | <section anchor="vcard-param-jscomps"> | |||
<name>JSCOMPS</name> | <name>JSCOMPS</name> | |||
<dl> | <dl> | |||
<dt>Parameter name:</dt> | <dt>Parameter name:</dt> | |||
<dd>JSCOMPS</dd> | <dd>JSCOMPS</dd> | |||
<dt>Purpose:</dt> | <dt>Purpose:</dt> | |||
<dd>This parameter defines the order and separators for the elements of a structured property value.</dd> | <dd>Defines the order and separators for the elements of a structure d property value.</dd> | |||
<dt>Description:</dt> | <dt>Description:</dt> | |||
<dd> | <dd> | |||
<t>The JSCOMPS parameter value facilitates converting name and add | <t>The JSCOMPS parameter value facilitates converting name and add | |||
ress components between JSContact and vCard. It preserves the order of the comp | ress components between JSContact and vCard. It preserves the order of the comp | |||
onents the JSContact property and contains the verbatim values of separator comp | onents of the JSContact property and contains the verbatim values of separator c | |||
onents.</t> | omponents.</t> | |||
<t>If this parameter is set and its value is valid (see later), th | <t>If this parameter is set and its value is valid (see later), th | |||
en implementations <bcp14>MUST</bcp14> set the <tt>isOrdered</tt> property of th | en implementations <bcp14>MUST</bcp14> set the <tt>isOrdered</tt> property of th | |||
e Name or Address object to "true". Otherwise, they <bcp14>MUST</bcp14> set the | e Name or Address object to "true". Otherwise, they <bcp14>MUST</bcp14> set the | |||
<tt>isOrdered</tt> property value to "false".</t> | <tt>isOrdered</tt> property value to "false".</t> | |||
<t>The JSCOMPS parameter value is a structured type value. Its val | <t>The JSCOMPS parameter value is a structured type value. Its val | |||
ue <bcp14>MUST</bcp14> be quoted. The parameter value consists of a sequence of | ue <bcp14>MUST</bcp14> be quoted. The parameter value consists of a sequence of | |||
entries, separated by the SEMICOLON character (U+003B). The first entry define | entries, separated by the SEMICOLON character (U+003B). The first entry define | |||
s the value of the <tt>defaultSeparator</tt> property. If it is the empty strin | s the value of the <tt>defaultSeparator</tt> property. If it is the empty strin | |||
g then no default separator is defined. Otherwise, the first entry <bcp14>MUST< | g, then no default separator is defined. Otherwise, the first entry <bcp14>MUST< | |||
/bcp14> be a separator entry. All following entries processed in order result i | /bcp14> be a separator entry. All following entries processed in order result i | |||
n an ordered list of JSContact components, and <bcp14>MUST</bcp14> be one of two | n an ordered list of JSContact components and <bcp14>MUST</bcp14> be one of the | |||
following two kinds:</t> | following two kinds:</t> | |||
<ol> | <ol> | |||
<li> | <li> | |||
<t>A positional. This refers to a component value in the vCar | <t>A positional. This refers to a component value in the vCar | |||
d structured value A position consists of the numeric index of a component in | d structured value. A position consists of the numeric index of a component in | |||
the structured value, optionally followed by a COMMA (U+002C) character and the | the structured value, optionally followed by a COMMA (U+002C) character and the | |||
non-zero index of a value within that component. The zero index selects the fir | non-zero index of a value within that component. The zero index selects the fir | |||
st component or value, respectively. The second index by default is zero, in wh | st component or value, respectively. The second index is zero by default, in wh | |||
ich case it <bcp14>MUST</bcp14> be omitted (as well as the leading COMMA).</t> | ich case it <bcp14>MUST</bcp14> be omitted (as well as the leading COMMA).</t> | |||
<t>The resulting JSContact component is formed by determining | <t>The resulting JSContact component is formed by determining | |||
its kind by the position in the vCard structured value. The component value is | its kind by the position in the vCard structured value. The component value is | |||
the verbatim value of the vCard component. <xref target="vcard-param-jscomps-ex | the verbatim value of the vCard component. Figures <xref target="vcard-param-js | |||
ample-positional"/> and <xref target="vcard-param-jscomps-example-n-secondary-in | comps-example-positional" format="counter"/> and <xref target="vcard-param-jscom | |||
dex"/> illustrate this by example.</t> | ps-example-n-secondary-index" format="counter"/> illustrate this by example.</t> | |||
</li> | </li> | |||
<li> | <li> | |||
<t>A separator. This contains the verbatim value of a separat or component. It starts with the LATIN SMALL LETTER S (U+0073) character, follo wed by COMMA (U+002C), followed by zero or more <xref target="RFC6350" section=" 3.3"><tt>param-value</tt></xref> characters, where the COMMA (U+002c) and SEMICO LON (U+003B) character <bcp14>MUST</bcp14> be escaped according to the rules def ined in <xref target="RFC6350" section="3.4"/>. <xref target="vcard-param-jscom ps-example-separator"/> illustrates this by example.</t> | <t>A separator. This contains the verbatim value of a separat or component. It starts with the LATIN SMALL LETTER S (U+0073) character, follo wed by the COMMA (U+002C) character, followed by zero or more <tt>param-value</t t> characters (see <xref target="RFC6350" sectionFormat="of" section="3.3"/>), w here the COMMA (U+002C) and SEMICOLON (U+003B) characters <bcp14>MUST</bcp14> be escaped according to the rules defined in <xref target="RFC6350" sectionFormat= "of" section="3.4"/>. <xref target="vcard-param-jscomps-example-separator"/> il lustrates this by example.</t> | |||
<t>The resulting JSContact component is formed by setting its kind to <tt>separator</tt> and its value to the verbatim value of the entry.</t> | <t>The resulting JSContact component is formed by setting its kind to <tt>separator</tt> and its value to the verbatim value of the entry.</t> | |||
</li> | </li> | |||
</ol> | </ol> | |||
<t>A JSCOMPS parameter value is valid if and only if:</t> | <t>A JSCOMPS parameter value is valid if and only if:</t> | |||
<ul> | <ul> | |||
<li>All indexes in the positional entries refer to an existing c omponent value in the vCard property value.</li> | <li>All indexes in the positional entries refer to an existing c omponent value in the vCard property value.</li> | |||
<li> | <li> | |||
<t>The count of positional entries equals the count of dedupli cated component values. Deduplication is required because some values may occur in both their designated and backwards-compatible components in the vCard prope rty value:</t> | <t>The count of positional entries equals the count of dedupli cated component values. Deduplication is required because some values may occur in both their designated and backwards-compatible components in the vCard prope rty value:</t> | |||
<ul> | <ul> | |||
<li>A value that occurs in both the N property secondary sur name component and the family name component only counts once.</li> | <li>A value that occurs in both the N property secondary sur name component and the family name component only counts once.</li> | |||
<li>A value that occurs in both the N property generation co mponent and the honorific suffix component only counts once.</li> | <li>A value that occurs in both the N property generation co mponent and the honorific suffix component only counts once.</li> | |||
<li>A value in the ADR property street address component doe s not count if the ADR property value contains a value in one of the new compone nts defined in <xref target="I-D.ietf-calext-vcard-jscontact-extensions"/>.</li> | <li>A value in the ADR property street address component doe s not count if the ADR property value contains a value in one of the new compone nts defined in <xref target="RFC9554"/>.</li> | |||
<li>All other values count once each.</li> | <li>All other values count once each.</li> | |||
</ul> | </ul> | |||
</li> | </li> | |||
</ul> | </ul> | |||
</dd> | </dd> | |||
<dt>Format definition:</dt> | <dt>Format definition:</dt> | |||
<dd> | <dd> | |||
<sourcecode name="" type="abnf"><![CDATA[ | <sourcecode name="" type="abnf"><![CDATA[ | |||
jscomps-param = "JSCOMPS" "=" | jscomps-param = "JSCOMPS" "=" | |||
DQUOTE ( | DQUOTE ( | |||
(jscomps-entry-sep / "") ";" jscomps-entrylist | (jscomps-entry-sep / "") ";" jscomps-entrylist | |||
) DQUOTE | ) DQUOTE | |||
jscomps-entrylist = jscomps-entry *(";" jscomps-entry) | jscomps-entrylist = jscomps-entry *(";" jscomps-entry) | |||
jscomps-entry = jscomps-entry-pos / jscomps-entry-sep | jscomps-entry = jscomps-entry-pos / jscomps-entry-sep | |||
jscomps-entry-pos = 1*DIGIT [ "," 1*DIGIT ] | jscomps-entry-pos = 1*DIGIT [ "," 1*DIGIT ] | |||
jscomps-entry-sep = "s" "," jscomps-entry-verb | jscomps-entry-sep = "s" "," jscomps-entry-verb | |||
jscomps-entry-verb = *QSAFE-CHAR | jscomps-entry-verb = *QSAFE-CHAR ; encode special characters according to RFC 68 68 | |||
]]></sourcecode> | ]]></sourcecode> | |||
</dd> | </dd> | |||
<dt anchor="vcard-param-jscomps-examples">Example(s):</dt> | <dt anchor="vcard-param-jscomps-examples">Example(s):</dt> | |||
<dd> | <dd> | |||
<t>The following example demonstrates the use of positional entrie s for the name "Jane Doe". The given name is ordered before the surname. No se condary index is required for either positional because both are zero.</t> | <t>The following example demonstrates the use of positional entrie s for the name "Jane Doe". The given name is ordered before the surname. No se condary index is required for either positional because both are zero.</t> | |||
<figure anchor="vcard-param-jscomps-example-positional"> | <figure anchor="vcard-param-jscomps-example-positional"> | |||
<name>Example for positional entries</name> | <name>Example of Positional Entries</name> | |||
<sourcecode name=""><![CDATA[ | <sourcecode name=""><![CDATA[ | |||
"name": { | "name": { | |||
"components": [ | "components": [ | |||
{ "kind": "given", "value": "Jane" }, | { "kind": "given", "value": "Jane" }, | |||
{ "kind": "surname", "value": "Doe" } | { "kind": "surname", "value": "Doe" } | |||
], | ], | |||
"isOrdered": true | "isOrdered": true | |||
} | } | |||
N;JSCOMPS=";1;0":Doe;Jane;;;;;; | N;JSCOMPS=";1;0":Doe;Jane;;;;;; | |||
FN;DERIVED=TRUE:Jane Doe | FN;DERIVED=TRUE:Jane Doe | |||
]]></sourcecode> | ]]></sourcecode> | |||
</figure> | </figure> | |||
<t>The following example demonstrates a secondary positional index . The "Jr." generation marker only counts once because it occurs in both the de signated generation component and the backwards-compatible honorific suffixes co mponent.</t> | <t>The following example demonstrates a secondary positional index . The "Jr." generation marker only counts once because it occurs in both the de signated generation component and the backwards-compatible honorific suffixes co mponent.</t> | |||
<!--[rfced] The title of Figures 52 and 53 are the same. Should | ||||
Figure 53 be updated as follows to denote the difference between | ||||
the figures? | ||||
Original: | ||||
Figure 53: Example for Positional Entries | ||||
Perhaps: | ||||
Figure 53: Example of a Secondary Positional Index | ||||
--> | ||||
<figure anchor="vcard-param-jscomps-example-n-secondary-index"> | <figure anchor="vcard-param-jscomps-example-n-secondary-index"> | |||
<name>Example for positional entries</name> | <name>Example of Positional Entries</name> | |||
<sourcecode name=""><![CDATA[ | <sourcecode name=""><![CDATA[ | |||
"name": { | "name": { | |||
"components": [ | "components": [ | |||
{ "kind": "given", "value": "John" }, | { "kind": "given", "value": "John" }, | |||
{ "kind": "given2", "value": "Philip" }, | { "kind": "given2", "value": "Philip" }, | |||
{ "kind": "given2", "value": "Paul" }, | { "kind": "given2", "value": "Paul" }, | |||
{ "kind": "surname", "value": "Stevenson" }, | { "kind": "surname", "value": "Stevenson" }, | |||
{ "kind": "generation", "value": "Jr." }, | { "kind": "generation", "value": "Jr." }, | |||
{ "kind": "credential", "value": "M.D." } | { "kind": "credential", "value": "M.D." } | |||
], | ], | |||
"isOrdered": true | "isOrdered": true | |||
} | } | |||
N;JSCOMPS=";1;2;2,1;0;6;4,1":Stevenson;John;Philip,Paul;;Jr.,M.D.;;Jr. | N;JSCOMPS=";1;2;2,1;0;6;4,1":Stevenson;John;Philip,Paul;;Jr.,M.D.;;Jr. | |||
]]></sourcecode> | ]]></sourcecode> | |||
</figure> | </figure> | |||
<t>The following example demonstrates the use of separator entries for the (shortened for brevity) address "54321 Oak St, Reston". The first entry defines the default separator to be ", ". The second and fourth positional ent ries are separated with the separator value " ". For backwards-compatibility, t he street address component of the ADR property contains both the street number and name, but it is not referred to in the JSCOMPS parameter and does not contri bute to the count of values.</t> | <t>The following example demonstrates the use of separator entries for the (shortened for brevity) address "54321 Oak St, Reston". The first entry defines the default separator to be ", ". The second and fourth positional ent ries are separated with the separator value " ". For backwards compatibility, t he street address component of the ADR property contains both the street number and name, but it is not referred to in the JSCOMPS parameter and does not contri bute to the count of values.</t> | |||
<figure anchor="vcard-param-jscomps-example-separator"> | <figure anchor="vcard-param-jscomps-example-separator"> | |||
<name>Example for separator entries</name> | <name>Example of Separator Entries</name> | |||
<sourcecode name=""><![CDATA[ | <sourcecode name=""><![CDATA[ | |||
"addresses": { | "addresses": { | |||
"a1": { | "a1": { | |||
"components": [ | "components": [ | |||
{ "kind": "number", "value": "54321" }, | { "kind": "number", "value": "54321" }, | |||
{ "kind": "separator", "value": " " }, | { "kind": "separator", "value": " " }, | |||
{ "kind": "name", "value": "Oak St" }, | { "kind": "name", "value": "Oak St" }, | |||
{ "kind": "locality", "value": "Reston" } | { "kind": "locality", "value": "Reston" } | |||
], | ], | |||
"defaultSeparator": ", ", | "defaultSeparator": ", ", | |||
skipping to change at line 1862 ¶ | skipping to change at line 2231 ¶ | |||
</figure> | </figure> | |||
</dd> | </dd> | |||
</dl> | </dl> | |||
</section> | </section> | |||
<section anchor="vcard-param-jsptr"> | <section anchor="vcard-param-jsptr"> | |||
<name>JSPTR</name> | <name>JSPTR</name> | |||
<dl> | <dl> | |||
<dt>Parameter name:</dt> | <dt>Parameter name:</dt> | |||
<dd>JSPTR</dd> | <dd>JSPTR</dd> | |||
<dt>Purpose:</dt> | <dt>Purpose:</dt> | |||
<dd> | ||||
This parameter contains a JSON pointer <xref target="RFC6901"/> th | <!--[rfced] Is "relates" the correct wording here or should it be | |||
at relates the vCard <xref target="vcard-prop-jsprop">JSPROP</xref> property to | "converts" for consistency with the other related sections? | |||
a JSContact property. | ||||
Original: | ||||
Parameter name: JSPTR | ||||
Purpose: This parameter contains a JSON pointer [RFC6901] that | ||||
relates the vCard JSPROP (Section 3.2.1) property to a JSContact | ||||
property. | ||||
Perhaps: | ||||
Parameter name: JSPTR | ||||
Purpose: Contains a JSON pointer [RFC6901] that converts | ||||
the vCard JSPROP (Section 3.2.1) property to a JSContact | ||||
property. | ||||
--> | ||||
<dd>Contains a JSON pointer <xref target="RFC6901"/> that relates th | ||||
e vCard <xref target="vcard-prop-jsprop">JSPROP</xref> property to a JSContact p | ||||
roperty. | ||||
</dd> | </dd> | |||
<dt>Description:</dt> | <dt>Description:</dt> | |||
<dd> | <dd> | |||
<t>This parameter has a single value that <bcp14>MUST</bcp14> be a valid JSON pointer as defined in <xref target="RFC6901"/>. Note that the value <bcp14>MUST</bcp14> be quoted according to the <tt>param-value</tt> ABNF in <xr ef target="RFC6350"/>.</t> | <t>This parameter has a single value that <bcp14>MUST</bcp14> be a valid JSON pointer as defined in <xref target="RFC6901"/>. Note that the value <bcp14>MUST</bcp14> be quoted according to the <tt>param-value</tt> ABNF in <xr ef target="RFC6350"/>.</t> | |||
</dd> | </dd> | |||
<dt>Format definition:</dt> | <dt>Format definition:</dt> | |||
<dd> | <dd> | |||
<sourcecode name="" type="abnf"><![CDATA[ | <sourcecode name="" type="abnf"><![CDATA[ | |||
jsptr-param = "JSPTR" "=" param-value | jsptr-param = "JSPTR" "=" param-value | |||
; also see param-value in RFC 6350, section 3.3 | ; also see param-value in RFC 6350, Section 3.3 | |||
]]></sourcecode> | ]]></sourcecode> | |||
</dd> | </dd> | |||
<dt>Example(s):</dt> | <dt>Example(s):</dt> | |||
<dd> | <dd> | |||
<t>This illustrates a simple example. For further examples see <x ref target="vcard-prop-jsprop-examples"/>.</t> | <t>This illustrates a simple example. For further examples, see < xref target="vcard-prop-jsprop-examples"/>.</t> | |||
<sourcecode name=""><![CDATA[ | <sourcecode name=""><![CDATA[ | |||
JSPROP;JSPTR="example.com:foo":"bar" | JSPROP;JSPTR="example.com:foo":"bar" | |||
]]></sourcecode> | ]]></sourcecode> | |||
</dd> | </dd> | |||
</dl> | </dl> | |||
</section> | </section> | |||
</section> | </section> | |||
</section> | </section> | |||
<section anchor="security-considerations"> | <section anchor="security-considerations"> | |||
<name>Security Considerations</name> | <name>Security Considerations</name> | |||
<t>This specification defines how to convert between the JSContact and vCa | <t>This specification defines how to convert between the JSContact and vCa | |||
rd formats. The security considerations for parsing and formatting such data ap | rd formats. | |||
ply and are outlined in <xref target="I-D.ietf-calext-jscontact" section="5"/> a | ||||
nd <xref target="RFC6350" section="9"/>.</t> | <!--[rfced] FYI: Since the security considerations can be found in | |||
</section> | Section 4 of RFC 9553, we updated "Section 5" to "Section 4" | |||
<section> | below. | |||
<name>Acknowledgements</name> | ||||
<t>The definition and examples of the <xref target="vcard-param-phonetic"> | Original: | |||
PHONETIC</xref> and <xref target="vcard-param-script">SCRIPT</xref> parameters a | The security considerations for parsing and formatting | |||
re based on the initial version of <xref target="I-D.calconnect-vobject-i18n"/>. | such data apply and are outlined in Section 5 of | |||
</t> | [I-D.ietf-calext-jscontact] and Section 9 of [RFC6350]. | |||
Current: | ||||
The security considerations for parsing and formatting | ||||
such data apply and are outlined in Section 4 of | ||||
[RFC9553] and Section 9 of [RFC6350]. | ||||
--> | ||||
The security considerations for parsing and formatting such data apply and | ||||
are outlined in <xref target="RFC9553" sectionFormat="of" section="4"/> and <xr | ||||
ef target="RFC6350" sectionFormat="of" section="9"/>.</t> | ||||
</section> | </section> | |||
<section anchor="IANA"> | <section anchor="IANA"> | |||
<!-- All drafts are required to have an IANA considerations section. See RFC 8126 for a guide.--> | ||||
<name>IANA Considerations</name> | <name>IANA Considerations</name> | |||
<section> | <section> | |||
<name>New vCard Properties</name> | <name>New vCard Property</name> | |||
<t>IANA is requested to add the following entries to the "vCard Properti | <t>IANA has added the following entry to the "vCard Properties" registry | |||
es" registry, defined in Section 10.3.1. of <xref target="RFC6350"/>.</t> | , as defined in <xref target="RFC6350" sectionFormat="of" section="10.3.1"/>.</t | |||
> | ||||
<table anchor="new_properties"> | <table anchor="new_properties"> | |||
<name>New vCard Properties</name> | <name>New vCard Property</name> | |||
<thead> | <thead> | |||
<tr> | <tr> | |||
<th align="left">Namespace</th> | <th align="left">Namespace</th> | |||
<th align="left">Property</th> | <th align="left">Property</th> | |||
<th align="left">Reference</th> | <th align="left">Reference</th> | |||
</tr> | </tr> | |||
</thead> | </thead> | |||
<tbody> | <tbody> | |||
<tr> | <tr> | |||
<td/> | <td/> | |||
<td align="left">JSPROP</td> | <td align="left">JSPROP</td> | |||
<td align="left">This document, <xref target="vcard-prop-jsprop"/> </td> | <td align="left">RFC 9555, <xref target="vcard-prop-jsprop"/></td> | |||
</tr> | </tr> | |||
</tbody> | </tbody> | |||
</table> | </table> | |||
</section> | </section> | |||
<section> | <section> | |||
<name>New vCard Parameters</name> | <name>New vCard Parameter</name> | |||
<t>IANA is requested to add the following entries to the "vCard Paramete | <t>IANA has added the following entry to the "vCard Parameters" registry | |||
rs" registry, defined in Section 10.3.2. of <xref target="RFC6350"/>.</t> | , as defined in <xref target="RFC6350" sectionFormat="of" section="10.3.2"/>.</t | |||
> | ||||
<table anchor="new_parameters"> | <table anchor="new_parameters"> | |||
<name>New vCard Parameters</name> | <name>New vCard Parameter</name> | |||
<thead> | <thead> | |||
<tr> | <tr> | |||
<th align="left">Namespace</th> | <th align="left">Namespace</th> | |||
<th align="left">Parameter</th> | <th align="left">Parameter</th> | |||
<th align="left">Reference</th> | <th align="left">Reference</th> | |||
</tr> | </tr> | |||
</thead> | </thead> | |||
<tbody> | <tbody> | |||
<tr> | <tr> | |||
<td/> | <td/> | |||
<td align="left">JSPTR</td> | <td align="left">JSPTR</td> | |||
<td align="left">This document, <xref target="vcard-param-jsptr"/> </td> | <td align="left">RFC 9555, <xref target="vcard-param-jsptr"/></td> | |||
</tr> | </tr> | |||
</tbody> | </tbody> | |||
</table> | </table> | |||
</section> | </section> | |||
<section> | <section> | |||
<name>New JSContact Properties</name> | <name>New JSContact Properties</name> | |||
<t>IANA is requested to add the following entries to the "JSContact Prop | <t>IANA has added the following entries to the "JSContact Properties" re | |||
erties" registry. The Since Version for all properties is 1.0. The Until Versi | gistry. Note that the Since Version is 1.0, the Until Version is not set, and t | |||
on for all properties is not set. All RFC section references are for this docum | he Change Controller is IETF for all of these properties.</t> | |||
ent. The change controller for all these properties is IETF.</t> | ||||
<table anchor="tab-iana-property-registry" align="center"> | <table anchor="tab-iana-property-registry" align="center"> | |||
<name>Initial Contents of the "JSContact Properties" Registry</name> | <name>JSContact Properties Registry</name> | |||
<thead> | <thead> | |||
<tr> | <tr> | |||
<th align="left">Property Name</th> | <th align="left">Property Name</th> | |||
<th align="left">Property Type</th> | <th align="left">Property Type</th> | |||
<th align="left">Property Context</th> | <th align="left">Property Context</th> | |||
<th align="left">Intended Usage</th> | ||||
<th align="left">Reference or Description</th> | <th align="left">Reference or Description</th> | |||
<th align="left">Intended Usage</th> | ||||
</tr> | </tr> | |||
</thead> | </thead> | |||
<!-- Everything in here should be sorted alphabetically: table entries by property name, the references for each property alphabetically by the object type or property they refer to --> | ||||
<tbody> | <tbody> | |||
<tr> | <tr> | |||
<td align="left">vCardName</td> | <td align="left">vCardName</td> | |||
<td align="left">String</td> | <td align="left">String</td> | |||
<td align="left">Any JSContact object</td> | <td align="left">Any JSContact object</td> | |||
<td align="left"> | ||||
<xref target="jscontact-prop-vcardname" format="default"/> | ||||
</td> | ||||
<td align="left">common</td> | <td align="left">common</td> | |||
</tr> | <td align="left">RFC 9555, | |||
<xref target="jscontact-prop-vcardname" format="default"/></td> | ||||
</tr> | ||||
<tr> | <tr> | |||
<td align="left">vCardParams</td> | <td align="left">vCardParams</td> | |||
<td align="left">String[String]</td> | <td align="left">String[String|String[]]</td> | |||
<td align="left">Any JSContact object</td> | <td align="left">Any JSContact object</td> | |||
<td align="left"> | <td align="left">common</td> | |||
<td align="left">RFC 9555, | ||||
<xref target="jscontact-prop-vcardparams" format="default"/> | <xref target="jscontact-prop-vcardparams" format="default"/> | |||
</td> | </td> | |||
<td align="left">common</td> | ||||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">vCardProps</td> | <td align="left">vCardProps</td> | |||
<td align="left">JCardProp[]</td> | <td align="left">JCardProp[]</td> | |||
<td align="left">Card</td> | <td align="left">Card</td> | |||
<td align="left"> | <td align="left">common</td> | |||
<td align="left">RFC 9555, | ||||
<xref target="jscontact-prop-vcardprops" format="default"/> | <xref target="jscontact-prop-vcardprops" format="default"/> | |||
</td> | </td> | |||
<td align="left">common</td> | ||||
</tr> | </tr> | |||
</tbody> | </tbody> | |||
</table> | </table> | |||
</section> | </section> | |||
<section> | <section> | |||
<name>New JSContact Types</name> | <name>New JSContact Type</name> | |||
<t>IANA is requested to add the following entries to the "JSContact Type | <t>IANA has added the following entry to the "JSContact Types" registry. | |||
s" registry. The Since Version for all properties is 1.0. The Until Version | Note that the Since Version is 1.0, the Until Version is not set, and the Chang | |||
for all properties is not set. All RFC section references are for this document | e Controller is IETF for this type.</t> | |||
. The change controller for all these properties is IETF.</t> | ||||
<table anchor="tab-iana-jscontact-type-registry" align="left"> | <table anchor="tab-iana-jscontact-type-registry" align="left"> | |||
<name>Additional Contents of the "JSContact Types" Registry</name> | <name>JSContact Types Registry</name> | |||
<thead> | <thead> | |||
<tr> | <tr> | |||
<th align="left">Type Name</th> | <th align="left">Type Name</th> | |||
<th align="left">Intended Usage</th> | ||||
<th align="left">Reference or Description</th> | <th align="left">Reference or Description</th> | |||
<th align="left">Intended Usage</th> | ||||
</tr> | </tr> | |||
</thead> | </thead> | |||
<tbody> | <tbody> | |||
<tr> | <tr> | |||
<td align="left">JCardProp</td> | <td align="left">JCardProp</td> | |||
<td align="left"> | <td align="left">common</td> | |||
<td align="left">RFC 9555, | ||||
<xref target="jscontact-prop-vcardprops" format="default"/> | <xref target="jscontact-prop-vcardprops" format="default"/> | |||
</td> | </td> | |||
<td align="left">common</td> | ||||
</tr> | </tr> | |||
</tbody> | </tbody> | |||
</table> | </table> | |||
</section> | </section> | |||
</section> | </section> | |||
<section anchor="impl-status"> | ||||
<name>Implementation Status</name> | ||||
<t>NOTE: Please remove this section and the reference to RFC 7942 prior to | ||||
publication as an RFC.</t> | ||||
<t>This section records the status of known implementations of the protoco | ||||
l as defined in this specification at the time of posting of this Internet-Draft | ||||
, and is based on a proposal described in <xref target="RFC7942"/>. The descrip | ||||
tion of implementations in this section is intended to assist the IETF in its de | ||||
cision processes in progressing drafts to RFCs. Please note that the listing of | ||||
any individual implementation here does not imply endorsement by the IETF. Fur | ||||
thermore, no effort has been spent to verify the information presented here that | ||||
was supplied by IETF contributors. This is not intended as, and must not be co | ||||
nstrued to be, a catalog of available implementations or their features. Reader | ||||
s are advised to note that other implementations may exist.</t> | ||||
<t>According to RFC 7942, "this will allow reviewers and working groups to | ||||
assign due consideration to documents that have the benefit of running code, wh | ||||
ich may serve as evidence of valuable experimentation and feedback that have mad | ||||
e the implemented protocols more mature. It is up to the individual working gro | ||||
ups to use this information as they see fit".</t> | ||||
<section anchor="it-cnr-iit"> | ||||
<name>CNR</name> | ||||
<ul spacing="compact"> | ||||
<li>Responsible Organization: National Research Council (CNR) of Italy | ||||
</li> | ||||
<li>Location: https://github.com/consiglionazionaledellericerche/jscon | ||||
tact-tools</li> | ||||
<li>Description: This implementation includes tools for JSContact crea | ||||
tion, validation, serialization/deserialization, and conversion from vCard, xCar | ||||
d and jCard.</li> | ||||
<li>Level of Maturity: This is an "alpha" test implementation.</li> | ||||
<li>Coverage: This implementation includes all features described in t | ||||
his specification.</li> | ||||
<li>Contact Information: Mario Loffredo, mario.loffredo@iit.cnr.it</li | ||||
> | ||||
</ul> | ||||
</section> | ||||
</section> | ||||
</middle> | </middle> | |||
<back> | <back> | |||
<displayreference target="I-D.calconnect-vobject-i18n" to="vOBJECT"/> | ||||
<references> | <references> | |||
<name>References</name> | <name>References</name> | |||
<references> | <references> | |||
<name>Normative References</name> | <name>Normative References</name> | |||
<xi:include href="https://datatracker.ietf.org/doc/bibxml3/draft-ietf-ca | ||||
lext-jscontact.xml"/> | <!-- [I-D.ietf-calext-jscontact] in EDIT state as of 2/12/24; companion document | |||
<xi:include href="https://datatracker.ietf.org/doc/bibxml3/draft-ietf-ca | RFC 9553 --> | |||
lext-vcard-jscontact-extensions.xml"/> | <reference anchor="RFC9553" target="https://www.rfc-editor.org/info/rfc9553"> | |||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | <front> | |||
FC.2119.xml"/> | <title>JSContact: A JSON Representation of Contact Data</title> | |||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | <author initials='R' surname='Stepanek' fullname='Robert Stepanek'> | |||
FC.5234.xml"/> | <organization /> | |||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | </author> | |||
FC.6350.xml"/> | <author initials='M' surname='Loffredo' fullname='Mario Loffredo'> | |||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | <organization /> | |||
FC.6473.xml"/> | </author> | |||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | <date month='March' year='2024' /> | |||
FC.6474.xml"/> | </front> | |||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | <seriesInfo name="RFC" value="9553"/> | |||
FC.6715.xml"/> | <seriesInfo name="DOI" value="10.17487/RFC9553"/> | |||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | </reference> | |||
FC.6869.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | <!-- [I-D.ietf-calext-vcard-jscontact-extensions] in REF state as of 2/12/24; co | |||
FC.6901.xml"/> | mpanion document RFC 9554 --> | |||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | <reference anchor="RFC9554" target="https://www.rfc-editor.org/info/rfc9554"> | |||
FC.7095.xml"/> | <front> | |||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | <title>vCard Format Extension for JSContact</title> | |||
FC.7942.xml"/> | <author initials="R." surname="Stepanek" fullname="Robert Stepanek"> | |||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | <organization>Fastmail</organization> | |||
FC.8174.xml"/> | </author> | |||
<author initials="M." surname="Loffredo" fullname="Mario Loffredo"> | ||||
<organization>IIT-CNR</organization> | ||||
</author> | ||||
<date month="March" year="2024"/> | ||||
</front> | ||||
<seriesInfo name="RFC" value="9554"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC9554"/> | ||||
</reference> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2 | ||||
119.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5 | ||||
234.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6 | ||||
350.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6 | ||||
473.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6 | ||||
474.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6 | ||||
715.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6 | ||||
869.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6 | ||||
901.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7 | ||||
095.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8 | ||||
174.xml"/> | ||||
</references> | </references> | |||
<references> | <references> | |||
<name>Informative References</name> | <name>Informative References</name> | |||
<xi:include href="https://datatracker.ietf.org/doc/bibxml3/draft-calconn | ||||
ect-vobject-i18n.xml"/> | <!--[I-D.calconnect-vobject-i18n] IESG state Expired. Entered the long way to ge | |||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | t the correct initials--> | |||
FC.8605.xml"/> | <reference anchor="I-D.calconnect-vobject-i18n" target="https://datatracker.ietf | |||
<reference anchor="CLDRPersonName" target="https://www.unicode.org/reports | .org/doc/html/draft-calconnect-vobject-i18n-00"> | |||
/tr35/tr35-personNames.html"> | <front> | |||
<title>vObject Internationalization</title> | ||||
<author fullname="Ronald Henry Tse" initials="R." surname="Tse"> | ||||
<organization>Ribose</organization> | ||||
</author> | ||||
<author fullname="Peter Tam" initials="P." surname="Tam"> | ||||
<organization>Ribose</organization> | ||||
</author> | ||||
<author fullname="Michael Douglass" initials="M." surname="Douglass"> | ||||
<organization>Spherical Cow Group</organization> | ||||
</author> | ||||
<date day="7" month="June" year="2018"/> | ||||
</front> | ||||
<seriesInfo name="Internet-Draft" value="draft-calconnect-vobject-i18n-00"/> | ||||
</reference> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8 | ||||
605.xml"/> | ||||
<reference anchor="CLDRPersonName" target="https://www.unicode.org/reports/ | ||||
tr35/tr35-personNames.html"> | ||||
<front> | <front> | |||
<title>Technical Standard #35: Unicode Locale Data Markup Language (LD ML) Part 8: Person Names, Version 43.1</title> | <title>Unicode Locale Data Markup Language (LDML) Part 8: Person Names </title> | |||
<author fullname="M. Davis"> | <author fullname="M. Davis"> | |||
<organization/> | <organization/> | |||
</author> | </author> | |||
<author fullname="P. Edberg"> | <author fullname="P. Edberg"> | |||
<organization/> | <organization/> | |||
</author> | </author> | |||
<author fullname="R. Gillam"> | <author fullname="R. Gillam"> | |||
<organization/> | <organization/> | |||
</author> | </author> | |||
<author fullname="A. Kolisnychenko"> | <author fullname="A. Kolisnychenko"> | |||
<organization/> | <organization/> | |||
</author> | </author> | |||
<author fullname="M. McKenna"> | <author fullname="M. McKenna"> | |||
<organization/> | <organization/> | |||
</author> | </author> | |||
<author fullname="others"> | <author> | |||
<organization/> | <organization>other CLDR committee members</organization> | |||
</author> | </author> | |||
<date year="2023" month="July"/> | <date year="2023" month="July"/> | |||
</front> | </front> | |||
<seriesInfo name="Unicode Technical Standard" value="#35"/> | ||||
<seriesInfo name="Version" value="44.1"/> | ||||
</reference> | </reference> | |||
</references> | </references> | |||
</references> | </references> | |||
<section anchor="convert_jscontact_to_vcard-reverse-rules"> | <section anchor="convert_jscontact_to_vcard-reverse-rules"> | |||
<name>Reverse Rules of Converting vCard to JSContact Card</name> | <name>Reverse Rules of Converting a vCard to a JSContact Card</name> | |||
<t><xref target="table_convert_jscontact_to_vcard"/> lists the relevant do cument sections for each JSContact object type and property.</t> | <t><xref target="table_convert_jscontact_to_vcard"/> lists the relevant do cument sections for each JSContact object type and property.</t> | |||
<table anchor="table_convert_jscontact_to_vcard"> | <table anchor="table_convert_jscontact_to_vcard"> | |||
<name>Conversion rules by JSContact property</name> | <name>Conversion Rules for JSContact Types and Properties</name> | |||
<thead> | <thead> | |||
<tr> | <tr> | |||
<th align="left">JSContact Type</th> | <th align="left">JSContact Type</th> | |||
<th align="left">Property Name</th> | <th align="left">Property Name</th> | |||
<th align="left">Relevant Section(s)</th> | <th align="left">Relevant Section(s)</th> | |||
</tr> | </tr> | |||
</thead> | </thead> | |||
<tbody> | <tbody> | |||
<tr> | <tr> | |||
<td>Address</td> | <td>Address</td> | |||
<td>@type</td> | <td>@type</td> | |||
<td>not applicable</td> | <td>not applicable</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td>Address</td> | <td>Address</td> | |||
<td>components</td> | <td>components</td> | |||
<td><xref target="vcard-prop-adr"/>, | <td>Sections <xref target="vcard-prop-adr" format="counter"/> and | |||
<xref target="vcard-param-jscomps"/></td> | <xref target="vcard-param-jscomps" format="counter"/></td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td>Address</td> | <td>Address</td> | |||
<td>contexts</td> | <td>contexts</td> | |||
<td> | <td> | |||
<xref target="vcard-param-type"/> | <xref target="vcard-param-type"/> | |||
</td> | </td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td>Address</td> | <td>Address</td> | |||
<td>coordinates</td> | <td>coordinates</td> | |||
<td><xref target="vcard-param-geo"/>, <xref target="vcard-prop-geo"/ ></td> | <td>Sections <xref target="vcard-param-geo" format="counter"/> and < xref target="vcard-prop-geo" format="counter"/></td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td>Address</td> | <td>Address</td> | |||
<td>country</td> | <td>country</td> | |||
<td> | <td> | |||
<xref target="vcard-prop-adr"/> | <xref target="vcard-prop-adr"/> | |||
</td> | </td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td>Address</td> | <td>Address</td> | |||
<td>countryCode</td> | <td>countryCode</td> | |||
<td> | <td> | |||
<xref target="vcard-prop-adr"/> | <xref target="vcard-prop-adr"/> | |||
</td> | </td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td>Address</td> | <td>Address</td> | |||
<td>defaultSeparator</td> | <td>defaultSeparator</td> | |||
<td><xref target="vcard-prop-adr"/>, | <td>Sections <xref target="vcard-prop-adr" format="counter"/> and | |||
<xref target="vcard-param-jscomps"/></td> | <xref target="vcard-param-jscomps" format="counter"/></td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td>Address</td> | <td>Address</td> | |||
<td>full</td> | <td>full</td> | |||
<td> | <td> | |||
<xref target="vcard-prop-adr"/> | <xref target="vcard-prop-adr"/> | |||
</td> | </td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td>Address</td> | <td>Address</td> | |||
<td>isOrdered</td> | <td>isOrdered</td> | |||
<td><xref target="vcard-prop-adr"/>, | <td>Sections <xref target="vcard-prop-adr" format="counter"/> and | |||
<xref target="vcard-param-jscomps"/></td> | <xref target="vcard-param-jscomps" format="counter"/></td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td>Address</td> | <td>Address</td> | |||
<td>locality</td> | <td>locality</td> | |||
<td> | <td> | |||
<xref target="vcard-prop-adr"/> | <xref target="vcard-prop-adr"/> | |||
</td> | </td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td>Address</td> | <td>Address</td> | |||
<td>phoneticScript</td> | <td>phoneticScript</td> | |||
<td> | <td>Sections | |||
<xref target="vcard-param-phonetic"/>, | <xref target="vcard-param-phonetic" format="counter"/> and | |||
<xref target="vcard-param-script"/> | <xref target="vcard-param-script" format="counter"/> | |||
</td> | </td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td>Address</td> | <td>Address</td> | |||
<td>phoneticSystem</td> | <td>phoneticSystem</td> | |||
<td><xref target="vcard-param-phonetic"/></td> | <td><xref target="vcard-param-phonetic"/></td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td>Address</td> | <td>Address</td> | |||
<td>postcode</td> | <td>postcode</td> | |||
skipping to change at line 2191 ¶ | skipping to change at line 2625 ¶ | |||
<tr> | <tr> | |||
<td>Address</td> | <td>Address</td> | |||
<td>region</td> | <td>region</td> | |||
<td> | <td> | |||
<xref target="vcard-prop-adr"/> | <xref target="vcard-prop-adr"/> | |||
</td> | </td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td>Address</td> | <td>Address</td> | |||
<td>timeZone</td> | <td>timeZone</td> | |||
<td><xref target="vcard-param-tz"/>, <xref target="vcard-prop-tz"/>< /td> | <td>Sections <xref target="vcard-param-tz" format="counter"/> and <x ref target="vcard-prop-tz" format="counter"/></td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td>AddressComponent</td> | <td>AddressComponent</td> | |||
<td>phonetic</td> | <td>phonetic</td> | |||
<td><xref target="vcard-param-phonetic"/></td> | <td><xref target="vcard-param-phonetic"/></td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td>Anniversary</td> | <td>Anniversary</td> | |||
<td>@type</td> | <td>@type</td> | |||
<td>not applicable</td> | <td>not applicable</td> | |||
skipping to change at line 2255 ¶ | skipping to change at line 2689 ¶ | |||
<td>@type</td> | <td>@type</td> | |||
<td>not applicable</td> | <td>not applicable</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td>Calendar</td> | <td>Calendar</td> | |||
<td>contexts</td> | <td>contexts</td> | |||
<td> | <td> | |||
<xref target="vcard-param-type"/> | <xref target="vcard-param-type"/> | |||
</td> | </td> | |||
</tr> | </tr> | |||
<!--[rfced] Please review the following questions regarding the | ||||
text in Table 8 (Appendix A). | ||||
a) For "Calendar/kind" and "Card/calendars", are the references | ||||
to Sections 2.13.1 and 2.13.3 correct? We see mention of the | ||||
kind and calendar properties only in Sections 2.13.2 and 2.13.3. | ||||
Please let us know if an update is needed. | ||||
b) For "Card/nicknames", is Section 2.5.5 correct, or should it | ||||
perhaps be Section 2.5.6? | ||||
c) For "Link/kind", is Section 2.11.9 correct? We do not see the | ||||
"kind" property mentioned in that section. Please let us know if an | ||||
update is needed. | ||||
d) For "Note/note", please confirm if "note" (singular form) | ||||
is correct or if it should be "notes" (plural form) per | ||||
Section 2.11.4. | ||||
e) For "OnlineService/kind", are Sections 2.7.2 and 2.7.5 correct? | ||||
We do not see the "kind" property mentioned in either section. | ||||
Original: | ||||
Calendar kind Section 2.13.1, Section 2.13.3 | ||||
Card calendars Section 2.13.1, Section 2.13.3 | ||||
Card nicknames Section 2.5.5 | ||||
Link kind Section 2.9.1, Section 2.11.9 | ||||
Note note Section 2.11.4 | ||||
OnlineService kind Section 2.7.2, Section 2.7.5 | ||||
--> | ||||
<tr> | <tr> | |||
<td>Calendar</td> | <td>Calendar</td> | |||
<td>kind</td> | <td>kind</td> | |||
<td><xref target="vcard-prop-caladruri"/>, <xref target="vcard-prop- | <td>Sections <xref target="vcard-prop-caladruri" format="counter"/> | |||
fburl"/></td> | and <xref target="vcard-prop-fburl" format="counter"/></td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td>Calendar</td> | <td>Calendar</td> | |||
<td>label</td> | <td>label</td> | |||
<td> | <td> | |||
<xref target="vcard-prop-xablabel"/> | <xref target="vcard-prop-xablabel"/> | |||
</td> | </td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td>Calendar</td> | <td>Calendar</td> | |||
skipping to change at line 2284 ¶ | skipping to change at line 2755 ¶ | |||
<tr> | <tr> | |||
<td>Calendar</td> | <td>Calendar</td> | |||
<td>pref</td> | <td>pref</td> | |||
<td> | <td> | |||
<xref target="vcard-param-pref"/> | <xref target="vcard-param-pref"/> | |||
</td> | </td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td>Calendar</td> | <td>Calendar</td> | |||
<td>uri</td> | <td>uri</td> | |||
<td><xref target="vcard-prop-caladruri"/>, <xref target="vcard-prop- fburl"/></td> | <td>Sections <xref target="vcard-prop-caladruri" format="counter"/> and <xref target="vcard-prop-fburl" format="counter"/></td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td>Card</td> | <td>Card</td> | |||
<td>@type</td> | <td>@type</td> | |||
<td>not applicable</td> | <td>not applicable</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td>Card</td> | <td>Card</td> | |||
<td>@version</td> | <td>@version</td> | |||
<td>not applicable</td> | <td>not applicable</td> | |||
skipping to change at line 2313 ¶ | skipping to change at line 2784 ¶ | |||
<tr> | <tr> | |||
<td>Card</td> | <td>Card</td> | |||
<td>anniversaries</td> | <td>anniversaries</td> | |||
<td> | <td> | |||
<xref target="vcard-prop-anniversary"/> | <xref target="vcard-prop-anniversary"/> | |||
</td> | </td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td>Card</td> | <td>Card</td> | |||
<td>calendars</td> | <td>calendars</td> | |||
<td><xref target="vcard-prop-caladruri"/>, <xref target="vcard-prop- fburl"/></td> | <td>Sections <xref target="vcard-prop-caladruri"/> and <xref target= "vcard-prop-fburl" format="counter"/></td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td>Card</td> | <td>Card</td> | |||
<td>created</td> | <td>created</td> | |||
<td> | <td> | |||
<xref target="vcard-prop-created"/> | <xref target="vcard-prop-created"/> | |||
</td> | </td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td>Card</td> | <td>Card</td> | |||
<td>directories</td> | <td>directories</td> | |||
<td><xref target="vcard-prop-source"/>, <xref target="vcard-prop-org -directory"/></td> | <td>Sections <xref target="vcard-prop-source"/> and <xref target="vc ard-prop-org-directory"/></td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td>Card</td> | <td>Card</td> | |||
<td>emails</td> | <td>emails</td> | |||
<td> | <td> | |||
<xref target="vcard-prop-email"/> | <xref target="vcard-prop-email"/> | |||
</td> | </td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td>Card</td> | <td>Card</td> | |||
skipping to change at line 2358 ¶ | skipping to change at line 2829 ¶ | |||
<tr> | <tr> | |||
<td>Card</td> | <td>Card</td> | |||
<td>language</td> | <td>language</td> | |||
<td> | <td> | |||
<xref target="vcard-prop-language"/> | <xref target="vcard-prop-language"/> | |||
</td> | </td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td>Card</td> | <td>Card</td> | |||
<td>links</td> | <td>links</td> | |||
<td><xref target="vcard-prop-contact-uri"/>, <xref target="vcard-pro p-url"/></td> | <td>Sections <xref target="vcard-prop-contact-uri" format="counter"/ > and <xref target="vcard-prop-url" format="counter"/></td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td>Card</td> | <td>Card</td> | |||
<td>localizations</td> | <td>localizations</td> | |||
<td> | <td> | |||
<xref target="vcard-param-language"/> | <xref target="vcard-param-language"/> | |||
</td> | </td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td>Card</td> | <td>Card</td> | |||
<td>media</td> | <td>media</td> | |||
<td><xref target="vcard-prop-photo"/>, <xref target="vcard-prop-logo "/>, <xref target="vcard-prop-sound"/></td> | <td>Sections <xref target="vcard-prop-photo" format="counter"/>, <xr ef target="vcard-prop-logo" format="counter"/>, and <xref target="vcard-prop-sou nd" format="counter"/></td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td>Card</td> | <td>Card</td> | |||
<td>members</td> | <td>members</td> | |||
<td> | <td> | |||
<xref target="vcard-prop-member"/> | <xref target="vcard-prop-member"/> | |||
</td> | </td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td>Card</td> | <td>Card</td> | |||
skipping to change at line 2417 ¶ | skipping to change at line 2888 ¶ | |||
<tr> | <tr> | |||
<td>Card</td> | <td>Card</td> | |||
<td>organizations</td> | <td>organizations</td> | |||
<td> | <td> | |||
<xref target="vcard-prop-org"/> | <xref target="vcard-prop-org"/> | |||
</td> | </td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td>Card</td> | <td>Card</td> | |||
<td>personalInfo</td> | <td>personalInfo</td> | |||
<td><xref target="vcard-prop-expertise"/>, <xref target="vcard-prop- hobby"/>, <xref target="vcard-prop-interest"/></td> | <td>Sections <xref target="vcard-prop-expertise" format="counter"/>, <xref target="vcard-prop-hobby" format="counter"/>, and <xref target="vcard-pro p-interest" format="counter"/></td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td>Card</td> | <td>Card</td> | |||
<td>phones</td> | <td>phones</td> | |||
<td> | <td> | |||
<xref target="vcard-prop-tel"/> | <xref target="vcard-prop-tel"/> | |||
</td> | </td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td>Card</td> | <td>Card</td> | |||
skipping to change at line 2542 ¶ | skipping to change at line 3013 ¶ | |||
<tr> | <tr> | |||
<td>Directory</td> | <td>Directory</td> | |||
<td>contexts</td> | <td>contexts</td> | |||
<td> | <td> | |||
<xref target="vcard-param-type"/> | <xref target="vcard-param-type"/> | |||
</td> | </td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td>Directory</td> | <td>Directory</td> | |||
<td>kind</td> | <td>kind</td> | |||
<td><xref target="vcard-prop-source"/>, <xref target="vcard-prop-org -directory"/></td> | <td>Sections <xref target="vcard-prop-source" format="counter"/> and <xref target="vcard-prop-org-directory" format="counter"/></td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td>Directory</td> | <td>Directory</td> | |||
<td>label</td> | <td>label</td> | |||
<td> | <td> | |||
<xref target="vcard-prop-xablabel"/> | <xref target="vcard-prop-xablabel"/> | |||
</td> | </td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td>Directory</td> | <td>Directory</td> | |||
skipping to change at line 2575 ¶ | skipping to change at line 3046 ¶ | |||
<tr> | <tr> | |||
<td>Directory</td> | <td>Directory</td> | |||
<td>pref</td> | <td>pref</td> | |||
<td> | <td> | |||
<xref target="vcard-param-pref"/> | <xref target="vcard-param-pref"/> | |||
</td> | </td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td>Directory</td> | <td>Directory</td> | |||
<td>uri</td> | <td>uri</td> | |||
<td><xref target="vcard-prop-source"/>, <xref target="vcard-prop-org -directory"/></td> | <td>Sections <xref target="vcard-prop-source" format="counter"/> and <xref target="vcard-prop-org-directory" format="counter"/></td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td>EmailAddress</td> | <td>EmailAddress</td> | |||
<td>@type</td> | <td>@type</td> | |||
<td>not applicable</td> | <td>not applicable</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td>EmailAddress</td> | <td>EmailAddress</td> | |||
<td>address</td> | <td>address</td> | |||
<td> | <td> | |||
skipping to change at line 2644 ¶ | skipping to change at line 3115 ¶ | |||
<tr> | <tr> | |||
<td>Link</td> | <td>Link</td> | |||
<td>contexts</td> | <td>contexts</td> | |||
<td> | <td> | |||
<xref target="vcard-param-type"/> | <xref target="vcard-param-type"/> | |||
</td> | </td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td>Link</td> | <td>Link</td> | |||
<td>kind</td> | <td>kind</td> | |||
<td><xref target="vcard-prop-contact-uri"/>, <xref target="vcard-pro p-url"/></td> | <td>Sections <xref target="vcard-prop-contact-uri" format="counter"/ > and <xref target="vcard-prop-url" format="counter"/></td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td>Link</td> | <td>Link</td> | |||
<td>label</td> | <td>label</td> | |||
<td> | <td> | |||
<xref target="vcard-prop-xablabel"/> | <xref target="vcard-prop-xablabel"/> | |||
</td> | </td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td>Link</td> | <td>Link</td> | |||
skipping to change at line 2670 ¶ | skipping to change at line 3141 ¶ | |||
<tr> | <tr> | |||
<td>Link</td> | <td>Link</td> | |||
<td>pref</td> | <td>pref</td> | |||
<td> | <td> | |||
<xref target="vcard-param-pref"/> | <xref target="vcard-param-pref"/> | |||
</td> | </td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td>Link</td> | <td>Link</td> | |||
<td>uri</td> | <td>uri</td> | |||
<td><xref target="vcard-prop-contact-uri"/>, <xref target="vcard-pro p-url"/>></td> | <td>Sections <xref target="vcard-prop-contact-uri" format="counter"/ > and <xref target="vcard-prop-url" format="counter"/></td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td>Media</td> | <td>Media</td> | |||
<td>@type</td> | <td>@type</td> | |||
<td>not applicable</td> | <td>not applicable</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td>Media</td> | <td>Media</td> | |||
<td>contexts</td> | <td>contexts</td> | |||
<td> | <td> | |||
<xref target="vcard-param-type"/> | <xref target="vcard-param-type"/> | |||
</td> | </td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td>Media</td> | <td>Media</td> | |||
<td>kind</td> | <td>kind</td> | |||
<td><xref target="vcard-prop-photo"/>, <xref target="vcard-prop-logo "/>, <xref target="vcard-prop-sound"/></td> | <td>Sections <xref target="vcard-prop-photo" format="counter"/>, <xr ef target="vcard-prop-logo" format="counter"/>, and <xref target="vcard-prop-sou nd" format="counter"/></td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td>Media</td> | <td>Media</td> | |||
<td>label</td> | <td>label</td> | |||
<td> | <td> | |||
<xref target="vcard-prop-xablabel"/> | <xref target="vcard-prop-xablabel"/> | |||
</td> | </td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td>Media</td> | <td>Media</td> | |||
skipping to change at line 2713 ¶ | skipping to change at line 3184 ¶ | |||
<tr> | <tr> | |||
<td>Media</td> | <td>Media</td> | |||
<td>pref</td> | <td>pref</td> | |||
<td> | <td> | |||
<xref target="vcard-param-pref"/> | <xref target="vcard-param-pref"/> | |||
</td> | </td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td>Media</td> | <td>Media</td> | |||
<td>uri</td> | <td>uri</td> | |||
<td><xref target="vcard-prop-photo"/>, <xref target="vcard-prop-logo "/>, <xref target="vcard-prop-sound"/></td> | <td>Sections <xref target="vcard-prop-photo" format="counter"/>, <xr ef target="vcard-prop-logo" format="counter"/>, and <xref target="vcard-prop-sou nd" format="counter"/></td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td>Name</td> | <td>Name</td> | |||
<td>@type</td> | <td>@type</td> | |||
<td>not applicable</td> | <td>not applicable</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td>Name</td> | <td>Name</td> | |||
<td>components</td> | <td>components</td> | |||
<td><xref target="vcard-prop-n"/>, | <td>Sections <xref target="vcard-prop-n" format="counter"/> and | |||
<xref target="vcard-param-jscomps"/></td> | <xref target="vcard-param-jscomps" format="counter"/></td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td>Name</td> | <td>Name</td> | |||
<td>defaultSeparator</td> | <td>defaultSeparator</td> | |||
<td><xref target="vcard-prop-n"/>, | <td>Sections <xref target="vcard-prop-n" format="counter"/> and | |||
<xref target="vcard-param-jscomps"/></td> | <xref target="vcard-param-jscomps" format="counter"/></td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td>Name</td> | <td>Name</td> | |||
<td>full</td> | <td>full</td> | |||
<td> | <td> | |||
<xref target="vcard-prop-fn"/> | <xref target="vcard-prop-fn"/> | |||
</td> | </td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td>Name</td> | <td>Name</td> | |||
<td>phoneticScript</td> | <td>phoneticScript</td> | |||
<td> | <td>Sections | |||
<xref target="vcard-param-phonetic"/>, | <xref target="vcard-param-phonetic" format="counter"/> and | |||
<xref target="vcard-param-script"/> | <xref target="vcard-param-script" format="counter"/> | |||
</td> | </td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td>Name</td> | <td>Name</td> | |||
<td>phoneticSystem</td> | <td>phoneticSystem</td> | |||
<td><xref target="vcard-param-phonetic"/></td> | <td><xref target="vcard-param-phonetic"/></td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td>Name</td> | <td>Name</td> | |||
<td>isOrdered</td> | <td>isOrdered</td> | |||
<td><xref target="vcard-prop-n"/>, | <td>Sections <xref target="vcard-prop-n" format="counter"/> and | |||
<xref target="vcard-param-jscomps"/></td> | <xref target="vcard-param-jscomps" format="counter"/></td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td>Name</td> | <td>Name</td> | |||
<td>sortAs</td> | <td>sortAs</td> | |||
<td> | <td> | |||
<xref target="vcard-param-sortas"/> | <xref target="vcard-param-sortas"/> | |||
</td> | </td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td>NameComponent</td> | <td>NameComponent</td> | |||
skipping to change at line 2823 ¶ | skipping to change at line 3294 ¶ | |||
</td> | </td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td>Note</td> | <td>Note</td> | |||
<td>@type</td> | <td>@type</td> | |||
<td>not applicable</td> | <td>not applicable</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td>Note</td> | <td>Note</td> | |||
<td>author</td> | <td>author</td> | |||
<td><xref target="vcard-param-author"/>, <xref target="vcard-param-a uthor-name"/></td> | <td>Sections <xref target="vcard-param-author" format="counter"/> an d <xref target="vcard-param-author-name" format="counter"/></td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td>Note</td> | <td>Note</td> | |||
<td>created</td> | <td>created</td> | |||
<td> | <td> | |||
<xref target="vcard-param-created"/> | <xref target="vcard-param-created"/> | |||
</td> | </td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td>Note</td> | <td>Note</td> | |||
skipping to change at line 2854 ¶ | skipping to change at line 3325 ¶ | |||
<tr> | <tr> | |||
<td>OnlineService</td> | <td>OnlineService</td> | |||
<td>contexts</td> | <td>contexts</td> | |||
<td> | <td> | |||
<xref target="vcard-param-type"/> | <xref target="vcard-param-type"/> | |||
</td> | </td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td>OnlineService</td> | <td>OnlineService</td> | |||
<td>kind</td> | <td>kind</td> | |||
<td><xref target="vcard-prop-impp"/>, <xref target="vcard-prop-socia lprofile"/></td> | <td>Sections <xref target="vcard-prop-impp" format="counter"/> and < xref target="vcard-prop-socialprofile" format="counter"/></td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td>OnlineService</td> | <td>OnlineService</td> | |||
<td>label</td> | <td>label</td> | |||
<td> | <td> | |||
<xref target="vcard-prop-xablabel"/> | <xref target="vcard-prop-xablabel"/> | |||
</td> | </td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td>OnlineService</td> | <td>OnlineService</td> | |||
skipping to change at line 2880 ¶ | skipping to change at line 3351 ¶ | |||
<tr> | <tr> | |||
<td>OnlineService</td> | <td>OnlineService</td> | |||
<td>service</td> | <td>service</td> | |||
<td> | <td> | |||
<xref target="vcard-param-service-type"/> | <xref target="vcard-param-service-type"/> | |||
</td> | </td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td>OnlineService</td> | <td>OnlineService</td> | |||
<td>uri</td> | <td>uri</td> | |||
<td><xref target="vcard-prop-impp"/>, <xref target="vcard-prop-socia lprofile"/></td> | <td>Sections <xref target="vcard-prop-impp" format="counter"/> and < xref target="vcard-prop-socialprofile" format="counter"/></td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td>OnlineService</td> | <td>OnlineService</td> | |||
<td>user</td> | <td>user</td> | |||
<td> | <td> | |||
<xref target="vcard-param-username"/> | <xref target="vcard-param-username"/> | |||
</td> | </td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td>OrgUnit</td> | <td>OrgUnit</td> | |||
skipping to change at line 2987 ¶ | skipping to change at line 3458 ¶ | |||
<td>not applicable</td> | <td>not applicable</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td>PersonalInfo</td> | <td>PersonalInfo</td> | |||
<td>@type</td> | <td>@type</td> | |||
<td>not applicable</td> | <td>not applicable</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td>PersonalInfo</td> | <td>PersonalInfo</td> | |||
<td>kind</td> | <td>kind</td> | |||
<td><xref target="vcard-prop-expertise"/>, <xref target="vcard-prop- hobby"/>, <xref target="vcard-prop-interest"/></td> | <td>Sections <xref target="vcard-prop-expertise" format="counter"/>, <xref target="vcard-prop-hobby" format="counter"/>, and <xref target="vcard-pro p-interest" format="counter"/></td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td>PersonalInfo</td> | <td>PersonalInfo</td> | |||
<td>listAs</td> | <td>listAs</td> | |||
<td> | <td> | |||
<xref target="vcard-param-index"/> | <xref target="vcard-param-index"/> | |||
</td> | </td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td>PersonalInfo</td> | <td>PersonalInfo</td> | |||
<td>level</td> | <td>level</td> | |||
<td> | <td> | |||
<xref target="vcard-param-level"/> | <xref target="vcard-param-level"/> | |||
</td> | </td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td>PersonalInfo</td> | <td>PersonalInfo</td> | |||
<td>value</td> | <td>value</td> | |||
<td><xref target="vcard-prop-expertise"/>, <xref target="vcard-prop- hobby"/>, <xref target="vcard-prop-interest"/></td> | <td>Sections <xref target="vcard-prop-expertise" format="counter"/>, <xref target="vcard-prop-hobby" format="counter"/>, and <xref target="vcard-pro p-interest" format="counter"/></td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td>Phone</td> | <td>Phone</td> | |||
<td>@type</td> | <td>@type</td> | |||
<td>not applicable</td> | <td>not applicable</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td>Phone</td> | <td>Phone</td> | |||
<td>contexts</td> | <td>contexts</td> | |||
<td> | <td> | |||
skipping to change at line 3195 ¶ | skipping to change at line 3666 ¶ | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td>Title</td> | <td>Title</td> | |||
<td>name</td> | <td>name</td> | |||
<td> | <td> | |||
<xref target="vcard-prop-title"/> | <xref target="vcard-prop-title"/> | |||
</td> | </td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td>Title</td> | <td>Title</td> | |||
<td>organization</td> | <td>organizationId</td> | |||
<td> | <td> | |||
<xref target="vcard-prop-title"/> | <xref target="vcard-prop-title"/> | |||
</td> | </td> | |||
</tr> | </tr> | |||
</tbody> | </tbody> | |||
</table> | </table> | |||
</section> | </section> | |||
<section anchor="Acknowledgments" numbered="false"> | ||||
<name>Acknowledgements</name> | ||||
<t>The definition and examples of the <xref target="vcard-param-phonetic"> | ||||
PHONETIC</xref> and <xref target="vcard-param-script">SCRIPT</xref> parameters a | ||||
re based on the initial draft version of <xref target="I-D.calconnect-vobject-i1 | ||||
8n"/>.</t> | ||||
</section> | ||||
<!-- [rfced] Throughout the text, the following terminology appears to be used | ||||
inconsistently. Please review these occurrences and let us know if/how they | ||||
may be made consistent. | ||||
address property vs. addresses property | ||||
Boolean type vs. boolean type (per RFC-to-be 9553) | ||||
[Note: may we make 1 instance of "Boolean" type lowercase to match | ||||
use in the companion document? | ||||
Card vs. card | ||||
[Note: should this lowercased instance (in Section 2.5.3) perhaps | ||||
be capitalized for consistency: | ||||
...to an individual represented by the card, as do... | ||||
--> | ||||
<!-- [rfced] Please review the "Inclusive Language" portion of the online | ||||
Style Guide <https://www.rfc-editor.org/styleguide/part2/#inclusive_language> | ||||
and let us know if any changes are needed. | ||||
For example, please consider whether "whitespace" should be updated. | ||||
--> | ||||
</back> | </back> | |||
</rfc> | </rfc> | |||
End of changes. 339 change blocks. | ||||
777 lines changed or deleted | 1259 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. |