rfc9553.original.xml | rfc9553.xml | |||
---|---|---|---|---|
<?xml version="1.0" encoding="utf-8"?> | <?xml version="1.0" encoding="UTF-8"?> | |||
<!DOCTYPE rfc> | ||||
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="*trust200902" submissionTyp | <!DOCTYPE rfc [ | |||
e="IETF" category="std" xml:lang="en" consensus="true" docName="draft-ietf-calex | <!ENTITY nbsp " "> | |||
t-jscontact-16" obsoletes="" updates="" tocInclude="true" symRefs="true" sortRef | <!ENTITY zwsp "​"> | |||
s="true" version="3"> | <!ENTITY nbhy "‑"> | |||
<!ENTITY wj "⁠"> | ||||
]> | ||||
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft | ||||
-ietf-calext-jscontact-16" number="9553" submissionType="IETF" consensus="true" | ||||
category="std" xml:lang="en" obsoletes="" updates="" tocInclude="true" symRefs=" | ||||
true" sortRefs="true" version="3"> | ||||
<!-- xml2rfc v2v3 conversion 3.6.0 --> | <!-- xml2rfc v2v3 conversion 3.6.0 --> | |||
<front> | <front> | |||
<title abbrev="JSContact">JSContact: A JSON representation of contact data</ | ||||
title> | <!--[rfced] *AD, changes were submitted twice after the document | |||
<seriesInfo name="Internet-Draft" value="draft-ietf-calext-jscontact-16"/> | was initially approved. Please review the updates from version 15 | |||
to version 17 and let us know if you approve. The updates can | ||||
be viewed in this diff file: | ||||
https://www.rfc-editor.org/authors/rfc9553-ad-diff.html | ||||
Additionally, under "Until Version" (4 instances), we updated the | ||||
key words for clarity by replacing "MUST be not set, or be one of | ||||
the allowed values" with "MUST NOT be set or MUST be one of the | ||||
allowed values" as shown below. Please review and approve of this | ||||
change to the key words. | ||||
Original: | ||||
The Until Version value either MUST NOT be set, or be one of the | ||||
allowed values of the version property in the JSContact Enum Value | ||||
registry (see Table 1). | ||||
Current: | ||||
The Until Version value either MUST NOT be set or MUST be one of | ||||
the allowed values of the version property in the "JSContact Enum | ||||
Values" registry (see Table 1). | ||||
--> | ||||
<!--[rfced] This document is part of Cluster 481. As it does not | ||||
reference the other cluster documents, we have moved it forward in | ||||
AUTH48 on its own. However, would you like to hold publication | ||||
of this document until the other two documents complete AUTH48 so | ||||
that all three will be published together? The other documents will | ||||
be moved to AUTH48 shortly. | ||||
--> | ||||
<title abbrev="JSContact">JSContact: A JSON Representation of Contact Data</ | ||||
title> | ||||
<seriesInfo name="RFC" value="9553"/> | ||||
<author initials="R." surname="Stepanek" fullname="Robert Stepanek"> | <author initials="R." surname="Stepanek" fullname="Robert 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> | |||
<code>VIC 8007</code> | <region>VIC</region> | |||
<code>8007</code> | ||||
<country>Australia</country> | <country>Australia</country> | |||
<region> </region> | <region></region> | |||
</postal> | </postal> | |||
<email>rsto@fastmailteam.com</email> | <email>rsto@fastmailteam.com</email> | |||
</address> | </address> | |||
</author> | </author> | |||
<author initials="M." surname="Loffredo" fullname="Mario Loffredo"> | <author initials="M." surname="Loffredo" fullname="Mario Loffredo"> | |||
<organization>IIT-CNR</organization> | <organization>IIT-CNR</organization> | |||
<address> | <address> | |||
<postal> | <postal> | |||
<street>Via Moruzzi,1</street> | <street>Via Moruzzi, 1</street> | |||
<city>Pisa</city> | <city>Pisa</city> | |||
<code>56124</code> | <code>56124</code> | |||
<country>Italy</country> | <country>Italy</country> | |||
<region> </region> | <region></region> | |||
</postal> | </postal> | |||
<email>mario.loffredo@iit.cnr.it</email> | <email>mario.loffredo@iit.cnr.it</email> | |||
</address> | </address> | |||
</author> | </author> | |||
<date year="2023" month="November" day="9"/> | <date year="2024" month="March"/> | |||
<area>Applications</area> | <area>art</area> | |||
<workgroup>Calendaring Extensions</workgroup> | <workgroup>calext</workgroup> | |||
<keyword>JSON</keyword> | <keyword>JSON</keyword> | |||
<keyword>addressbook</keyword> | <keyword>addressbook</keyword> | |||
<keyword>contacts</keyword> | <keyword>contacts</keyword> | |||
<keyword>cards</keyword> | <keyword>cards</keyword> | |||
<keyword>VCARD</keyword> | <keyword>VCARD</keyword> | |||
<abstract> | <abstract> | |||
<t>This specification defines a data model and JSON representation of cont act card information that can be used for data storage and exchange in address b ook or directory applications. It aims to be an alternative to the vCard data f ormat and to be unambiguous, extendable and simple to process. In contrast to t he JSON-based jCard format, it is not a direct mapping from the vCard data model and expands semantics where appropriate.</t> | <t>This specification defines a data model and JavaScript Object Notation (JSON) representation of contact card information that can be used for data stor age and exchange in address book or directory applications. It aims to be an al ternative to the vCard data format and to be unambiguous, extendable, and simple to process. In contrast to the JSON-based jCard format, it is not a direct map ping from the vCard data model and expands semantics where appropriate.</t> | |||
</abstract> | </abstract> | |||
</front> | </front> | |||
<middle> | <middle> | |||
<section anchor="introduction" numbered="true" toc="default"> | <section anchor="introduction" numbered="true" toc="default"> | |||
<name>Introduction</name> | <name>Introduction</name> | |||
<t>This document defines a data model for contact card data normally used in address book or directory applications and services. It aims to be an altern ative to the vCard data format <xref target="RFC6350" format="default"/>.</t> | <t>This document defines a data model for contact card data normally used in address book or directory applications and services. It aims to be an altern ative to the vCard data format <xref target="RFC6350" format="default"/>.</t> | |||
<t>The key design considerations for this data model are as follows:</t> | <t>The key design considerations for this data model are as follows:</t> | |||
<ul spacing="normal"> | <ul spacing="normal"> | |||
<li>The data model and set of attributes should mostly be compatible wit | <li>The data model and set of attributes should be mostly compatible wit | |||
h the one defined for the vCard data format <xref target="RFC6350" format="defau | h the model defined for the vCard data format <xref target="RFC6350" format="def | |||
lt"/> and extensions (<xref target="RFC6473" format="default"/>, <xref target="R | ault"/> and extensions <xref target="RFC6473" format="default"/> <xref target="R | |||
FC6474" format="default"/>, <xref target="RFC6715" format="default"/>, <xref tar | FC6474" format="default"/> <xref target="RFC6715" format="default"/> <xref targe | |||
get="RFC6869" format="default"/>, <xref target="RFC8605" format="default"/>). T | t="RFC6869" format="default"/> <xref target="RFC8605" format="default"/>. The s | |||
he specification should add new attributes or value types where appropriate. Not | pecification should add new attributes or value types where appropriate. Not all | |||
all existing vCard definitions need an equivalent in JSContact, especially if t | existing vCard definitions need an equivalent in JSContact, especially if the v | |||
he vCard definition is considered to be obsolete or otherwise inappropriate. Co | Card definition is considered to be obsolete or otherwise inappropriate. Conver | |||
nversion between the data formats need not fully preserve semantic meaning.</li> | sion between the data formats need not fully preserve semantic meaning.</li> | |||
<!--[rfced] Please clarify the meaning of "reducing complexity of | ||||
their representation". Is the intended meaning that the | ||||
attributes must be described as simple key-value pairs to | ||||
reduce complexity (option A) or to reduce complexity of the | ||||
representation of the card data (option B)? | ||||
Original: | ||||
The attributes of the card data represented must be described as | ||||
simple key-value pairs, reducing complexity of their | ||||
representation. | ||||
Perhaps: | ||||
A) The attributes of the card data being represented must be | ||||
described as simple key-value pairs to reduce complexity. | ||||
or | ||||
B) The attributes of the card data must be described as simple | ||||
key-value pairs to reduce the complexity of the representation | ||||
of the card data. | ||||
--> | ||||
<li>The attributes of the card data represented must be described as sim ple key-value pairs, reducing complexity of their representation.</li> | <li>The attributes of the card data represented must be described as sim ple key-value pairs, reducing complexity of their representation.</li> | |||
<li>The data model should avoid all ambiguities and make it difficult to make mistakes during implementation.</li> | <li>The data model should avoid all ambiguities and make it difficult to make mistakes during implementation.</li> | |||
<li>Extensions, such as new properties and components, <bcp14>MUST NOT</ bcp14> lead to requiring an update to this document.</li> | <li>Extensions, such as new properties and components, <bcp14>MUST NOT</ bcp14> lead to a required update of this document.</li> | |||
</ul> | </ul> | |||
<t>The representation of this data model is defined in the I-JSON format < xref target="RFC7493" format="default"/>, which is a strict subset of the JavaSc ript Object Notation (JSON) Data Interchange Format <xref target="RFC8259" forma t="default"/>. Using JSON is mostly a pragmatic choice: its widespread use make s JSContact easier to adopt, and the availability of production-ready JSON imple mentations eliminates a whole category of parser-related interoperability issues .</t> | <t>The representation of this data model is defined in the Internet JSON ( I-JSON) format <xref target="RFC7493" format="default"/>, which is a strict subs et of the JSON data interchange format <xref target="RFC8259" format="default"/> . Using JSON is mostly a pragmatic choice: its widespread use makes JSContact e asier to adopt, and the availability of production-ready JSON implementations el iminates a whole category of parser-related interoperability issues.</t> | |||
<section anchor="relation-to-vcard" numbered="true" toc="default"> | <section anchor="relation-to-vcard" numbered="true" toc="default"> | |||
<name>Motivation and Relation to vCard, jCard and xCard</name> | <name>Motivation and Relation to vCard, jCard, and xCard</name> | |||
<t>The vCard data format <xref target="RFC6350"/> is an interchange form | <t>The vCard data format <xref target="RFC6350"/> is an interchange form | |||
at for contacts data between address book service providers and vendors. Howeve | at for contacts data between address book service providers and vendors. Howeve | |||
r, this format has gone through multiple specifications iterations with only a s | r, this format has gone through multiple specification iterations with only a su | |||
ubset of its deprecated <xref target="RFC2426">version 3</xref> being widely in | bset of its deprecated <xref target="RFC2426">version 3</xref> being widely in u | |||
use. Consequently, products and services internally use a richer contact data m | se. Consequently, products and services use an internal contact data model that | |||
odel than they expose when serializing that information to vCard. In addition, | is richer than what they expose when serializing that information to vCard. In | |||
service providers often use a proprietary JSON representation of contact data in | addition, service providers often use a proprietary JSON representation of cont | |||
their APIs.</t> | act data in their APIs.</t> | |||
<t>JSContact provides a standard JSON-based data model and representatio n of contact data as an alternative to proprietary formats.</t> | <t>JSContact provides a standard JSON-based data model and representatio n of contact data as an alternative to proprietary formats.</t> | |||
<t>While writing this document, several features missing in vCard were b | <t>At the time of writing this document, several missing features in vCa | |||
rought to the attention of the authors, such as social media contacts, gender pr | rd were brought to the attention of the authors such as social media contacts, g | |||
onouns and others. This highlights how vCard is not perceived as an evolving fo | ender pronouns, and others. This highlights how vCard is not perceived as an ev | |||
rmat and consequently hasn't been updated since close to ten years. JSContact a | olving format and, consequently, hasn't been updated for about ten years. JSCon | |||
ddresses these unmet demands and defines new vCard properties and parameters to | tact addresses these unmet demands and defines new vCard properties and paramete | |||
allow interchanging them in both formats.</t> | rs to allow interchanging them in both formats.</t> | |||
<t>The xCard <xref target="RFC6351" format="default"/> and jCard <xref t | <t>The xCard <xref target="RFC6351" format="default"/> and jCard <xref t | |||
arget="RFC7095" format="default"/> specifications define alternative representat | arget="RFC7095" format="default"/> specifications define alternative representat | |||
ions for vCard data, in XML and JSON format respectively. Both explicitly aim t | ions for vCard data in XML and JSON formats, respectively. Both explicitly aim | |||
o not change the underlying data model. Accordingly, they are regarded as equal | to not change the underlying data model. Accordingly, they are regarded as equa | |||
to vCard in the context of this document.</t> | l to vCard in the context of this document.</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 | <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp | |||
14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL NOT</bcp14>", "<bcp1 | 14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL NOT</bcp14>", "<bcp1 | |||
4>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "< | 4>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "< | |||
bcp14>NOT RECOMMENDED</bcp14>", "<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp1 | 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=" | 4>" in this document are to be interpreted as described in BCP 14 <xref target=" | |||
RFC2119" format="default" sectionFormat="of" derivedContent="RFC2119"/> <xref ta | RFC2119" format="default" sectionFormat="of" derivedContent="RFC2119"/> <xref ta | |||
rget="RFC8174" format="default" sectionFormat="of" derivedContent="RFC8174"/> wh | rget="RFC8174" format="default" sectionFormat="of" derivedContent="RFC8174"/> wh | |||
en, and only when, they appear in all capitals, as shown here.</t> | en, and only when, they appear in all capitals, as shown here.</t> | |||
<t>The ABNF definitions in this document use the notations of <xref targ | <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 | 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 | ref target="RFC5234"/> (such as the ABNF for CRLF, WSP, DQUOTE, VCHAR, ALPHA, an | |||
d DIGIT) or <xref target="RFC6350"/>.</t> | d DIGIT) or <xref target="RFC6350"/>.</t> | |||
</section> | </section> | |||
<section anchor="data-type-notations"> | <section anchor="data-type-notations"> | |||
<name>Data Type Notations</name> | <name>Data Type Notations</name> | |||
<t>This section introduces the notations and terminology used to define data types in JSContact.</t> | <t>This section introduces the notations and terminology used to define data types in JSContact.</t> | |||
<t>The underlying format for JSContact is JSON and so also its data type | <t>The underlying format for JSContact is JSON, so its data types also b | |||
s build on JSON values. The terms "object" and "array" as well as the four prim | uild on JSON values. The terms "object" and "array" as well as the four primiti | |||
itive types ("strings", "numbers", "booleans", and "null") are to be interpreted | ve types ("strings", "numbers", "booleans", and "null") are to be interpreted as | |||
as described in <xref target="RFC8259" section="1"/>. All JSContact data <bcp1 | described in <xref target="RFC8259" section="1"/>. All JSContact data <bcp14>M | |||
4>MUST</bcp14> be valid according to the constraints given in <xref target="RFC7 | UST</bcp14> be valid according to the constraints given in <xref target="RFC7493 | |||
493">I-JSON</xref>. Unless otherwise noted, all member names in JSON objects an | ">I-JSON</xref>. Unless otherwise noted, all member names in JSON objects and a | |||
d all string values are case-sensitive. Within context of JSON objects, the ter | ll string values are case-sensitive. | |||
m "key" is synonymous with "member name" as defined in <xref target="RFC8259" se | Within the context of JSON objects, the term "key" is synonymous with "member na | |||
ction="1"/>.</t> | me" as defined in <xref target="RFC8259" section="1"/>.</t> | |||
<section anchor="objects-and-properties" numbered="true" toc="default"> | <section anchor="objects-and-properties" numbered="true" toc="default"> | |||
<name>Objects and Properties</name> | <name>Objects and Properties</name> | |||
<t>JSContact defines data types for contact information such as addres | ||||
ses or names. This information typically consists of multiple related elements, | <!-- [rfced] The use of <tt> and <em> | |||
for example a personal name and surname together form a name. These related el | ||||
ements are organized in JSContact objects. A JSContact object is a JSON object | a) In the html and pdf outputs, the text enclosed in <tt> is output in | |||
which:</t> | fixed-width font. In the txt output, there are no changes to the font, | |||
and the quotation marks have been removed. | ||||
In the html and pdf outputs, the text enclosed in <em> is output in | ||||
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 or | ||||
if any updates are needed. | ||||
b) Some terms appear with and without the "<tt>" element, for example, | ||||
"@type", "Card", "version", etc. Please review and let us know if any | ||||
updates are needed for consistency. | ||||
--> | ||||
<t>JSContact defines data types for contact information such as addres | ||||
ses or names. This information typically consists of multiple related elements; | ||||
for example, a personal name and surname together form a name. These related e | ||||
lements are organized in JSContact objects. A JSContact object is a JSON object | ||||
that has the following:</t> | ||||
<ol> | <ol> | |||
<li>Has a unique type name registered in the <xref target="iana-type | <li>A unique type name registered in the IANA <xref target="iana-ty | |||
-registry">IANA JSContact Types Registry</xref>.</li> | pe-registry">"JSContact Types" registry</xref>.</li> | |||
<li>Has one or more object members for which the name and allowed va | <li>One or more object members for which the name and allowed value | |||
lue types are specified. Such members are called "properties".</li> | types are specified. Such members are called "properties".</li> | |||
<li>Has one property named <tt>@type</tt> with a string value that m | <li>One property named <tt>@type</tt> with a string value that match | |||
atches the type name of this JSContact object. In general, this property does n | es the type name of the JSContact object. In general, this property does not ne | |||
ot need to be set explicitly as outlined in <xref target="prop-type"/>.</li> | ed to be set explicitly as outlined in <xref target="prop-type"/>.</li> | |||
</ol> | </ol> | |||
<t>The following sections specify how to define JSContact object types | <t>The following sections specify how to define JSContact object types | |||
. <xref target="validating-jscontact"/> and <xref target="vendor-specific-extens | . Sections <xref target="validating-jscontact" format="counter"/> and <xref targ | |||
ions"/> then define the exact requirements for property names.</t> | et="vendor-specific-extensions" format="counter"/> then define the exact requir | |||
<t>The next paragraph illustrates how a JSContact object is defined:</ | ements for property names.</t> | |||
t> | <t>The next paragraph illustrates how a JSContact object is defined.</ | |||
<blockquote> | t> | |||
<!--[rfced] Section 1.3.1. Please clarify the meaning of "qux-ishness" | ||||
as no other RFCs contain this term. Is it a well-known term, or | ||||
can it perhaps be rephrased for clarity? | ||||
Also, we removed the blockquote element from this text | ||||
because it is not a direct quote. Please let us know | ||||
if any further updates are needed. | ||||
Original: | ||||
A Foo object has the following properties: | ||||
qux: Number (mandatory). Defines the qux-ishness of this contact. | ||||
The value MUST be an integer greater than 0 and less than 10. | ||||
--> | ||||
<t>A Foo object has the following properties:</t> | <t>A Foo object has the following properties:</t> | |||
<ul> | <dl spacing="normal"> | |||
<li><tt>qux</tt>: Number (mandatory). Defines the qux-ishness of | <dt><tt>qux</tt>:</dt><dd> Number (mandatory). Defines the qux-is | |||
this contact. The value <bcp14>MUST</bcp14> be an integer greater than 0 and le | hness of this contact. The value <bcp14>MUST</bcp14> be an integer greater than | |||
ss than 10.</li> | 0 and less than 10.</dd> | |||
</ul> | </dl> | |||
</blockquote> | ||||
<t>Here, a JSContact object type named <tt>Foo</tt> is defined. In ad | <t>Here, a JSContact object type named <tt>Foo</tt> is defined. In ad | |||
dition to its <tt>@type</tt> property it has a property named <tt>qux</tt> for w | dition to its <tt>@type</tt> property, it has a property named <tt>qux</tt> for | |||
hich values <bcp14>MUST</bcp14> be valid according to the definition of the <tt> | which values <bcp14>MUST</bcp14> be valid according to the definition of the <tt | |||
Number</tt> type. The property has one attribute, <tt>mandatory</tt>, which spe | >Number</tt> type. The property has one attribute, <tt>mandatory</tt>, which sp | |||
cifies that the property <bcp14>MUST</bcp14> be present for an instance of this | ecifies that the property <bcp14>MUST</bcp14> be present for an instance of this | |||
JSContact object to be valid. Finally, a free-text description describes the se | JSContact object to be valid. Finally, a free-text description describes the s | |||
mantics and further restrictions.</t> | emantics and further restrictions.</t> | |||
</section> | </section> | |||
<section anchor="type-signatures" numbered="true" toc="default"> | <section anchor="type-signatures" numbered="true" toc="default"> | |||
<name>Type Signatures</name> | <name>Type Signatures</name> | |||
<t>Type signatures are given for all JSON values and JSContact definit ions in this document. The following conventions are used:</t> | <t>Type signatures are given for all JSON values and JSContact definit ions in this document. The following conventions are used:</t> | |||
<ul spacing="normal"> | <dl spacing="normal"> | |||
<li><tt>String</tt> - The JSON string type.</li> | <dt><tt>String</tt>:</dt><dd> The JSON string type.</dd> | |||
<li><tt>Number</tt> - The JSON number type.</li> | <dt><tt>Number</tt>:</dt><dd> The JSON number type.</dd> | |||
<li><tt>Boolean</tt> - The JSON boolean type.</li> | <dt><tt>Boolean</tt>:</dt><dd> The JSON boolean type.</dd> | |||
<li><tt>A[B]</tt> - A JSON object where the keys are all of the type | <dt><tt>A[B]</tt>:</dt><dd> A JSON object where all keys are of type | |||
<tt>A</tt>, and the values are all of the type <tt>B</tt>.</li> | <tt>A</tt> and all values are of type <tt>B</tt>.</dd> | |||
<li><tt>A[]</tt> - A JSON array of values of type <tt>A</tt>.</li> | <dt><tt>A[]</tt>:</dt><dd> A JSON array of values of type <tt>A</tt> | |||
<li><tt>A|B</tt> - The value is either of type <tt>A</tt> or of type | .</dd> | |||
<tt>B</tt>.</li> | <dt><tt>A|B</tt>:</dt><dd> The value is either of type <tt>A</tt> or | |||
<li><tt>*</tt> - The type is undefined (the value could be any type, | of type <tt>B</tt>.</dd> | |||
although permitted values may be constrained by the context of this value).</li | <dt><tt>* *</tt>:</dt><dd> The type is undefined (the value could be | |||
> | any type, although permitted values may be constrained by the context of this v | |||
</ul> | alue).</dd> | |||
</dl> | ||||
<t><xref target="common-data-types"/> defines common data types, inclu ding signed or unsigned integers and dates.</t> | <t><xref target="common-data-types"/> defines common data types, inclu ding signed or unsigned integers and dates.</t> | |||
</section> | </section> | |||
<section anchor="property-attributes" numbered="true" toc="default"> | <section anchor="property-attributes" numbered="true" toc="default"> | |||
<name>Property Attributes</name> | <name>Property Attributes</name> | |||
<t>Object properties may also have a set of attributes defined along w ith the type signature. These have the following meanings:</t> | <t>Object properties may also have a set of attributes defined along w ith the type signature. These have the following meanings:</t> | |||
<ul> | <dl spacing="normal"> | |||
<li><tt>mandatory</tt>: The property <bcp14>MUST</bcp14> be set for | <dt><tt>mandatory</tt>:</dt><dd> The property <bcp14>MUST</bcp14> be | |||
an instance of this object to be valid.</li> | set for an instance of this object to be valid.</dd> | |||
<li><tt>optional</tt>: The property can but not need be set for an i | <dt><tt>optional</tt>:</dt><dd> The property can, but need not, be s | |||
nstance of this object to be valid.</li> | et for an instance of this object to be valid.</dd> | |||
<li><tt>default</tt>: This is followed by a JSON value. That value w | <dt><tt>default</tt>:</dt><dd> This is followed by a JSON value. Tha | |||
ill be used for this property if it is omitted.</li> | t value will be used for this property if it is omitted.</dd> | |||
<li><tt>defaultType</tt>: This is followed by the name of a JSContac | <dt><tt>defaultType</tt>:</dt><dd> This is followed by the name of a | |||
t object type. A property value of JSContact object type is expected to be of t | JSContact object type. A property value of JSContact object type is expected t | |||
his named type, in case it omits the <tt>@type</tt> property.</li> | o be of this named type, in case it omits the <tt>@type</tt> property.</dd> | |||
</ul> | </dl> | |||
</section> | </section> | |||
<section anchor="prop-type" numbered="true" toc="default"> | <section anchor="prop-type" numbered="true" toc="default"> | |||
<name>The <tt>@type</tt> Property</name> | <name>The <tt>@type</tt> Property</name> | |||
<t>This property is defined as:</t> | <dl spacing="normal"> | |||
<ul> | <dt><tt>@type</tt>:</dt><dd> String. Specifies the type of the obje | |||
<li><tt>@type</tt>: String. Specifies the type of this object. Thi | ct. It <bcp14>MUST</bcp14> match the type name of the JSContact object of which | |||
s <bcp14>MUST</bcp14> match the type name of the JSContact object of which this | the JSON object is an instance of.</dd> | |||
JSON object is an instance of.</li> | </dl> | |||
</ul> | <t>The purpose of the <tt>@type</tt> property is to help implementatio | |||
<t>The purpose of this property is to help implementations identify wh | ns identify which JSContact object type a given JSON object represents. Impleme | |||
ich JSContact object type a given JSON object represents. Implementations <bcp1 | ntations <bcp14>MUST</bcp14> validate that JSON objects with this property confo | |||
4>MUST</bcp14> validate that JSON objects with this property conform to the spec | rm to the specification of the JSContact object type of that name.</t> | |||
ification of the JSContact object type of that name.</t> | <t>In many cases, the <tt>@type</tt> property value is implied by wher | |||
<t>In many cases the <tt>@type</tt> property value is implied by where | e its object occurs in JSContact data. Assuming that both <tt>A</tt> and <tt>B</ | |||
its object occurs in JSContact data. Assuming that both <tt>A</tt> and <tt>B</t | tt> are JSContact object types:</t> | |||
t> are JSContact object types:</t> | ||||
<ul> | <ul> | |||
<li>An object that is set as the value for a property with type sign | <li>An object that is set as the value for a property with type sign | |||
ature <tt>A</tt> <bcp14>MAY</bcp14> have the <tt>@type</tt> property set. If th | ature <tt>A</tt> <bcp14>MAY</bcp14> have the <tt>@type</tt> property set. If th | |||
e <tt>@type</tt> property is not set then its value is implied to be <tt>A</tt> | e <tt>@type</tt> property is not set, then its value is implied to be <tt>A</tt> | |||
by the property definition.</li> | by the property definition.</li> | |||
<li>An object that is set as the value for a property with type sign | <li>An object that is set as the value for a property with type sign | |||
ature <tt>A|B (defaultType: A)</tt> <bcp14>MAY</bcp14> have the <tt>@type</tt> p | ature <tt>A|B (defaultType: A)</tt> <bcp14>MAY</bcp14> have the <tt>@type</tt> p | |||
roperty set if it is an instance of <tt>A</tt>. It <bcp14>MUST</bcp14> have the | roperty set if it is an instance of <tt>A</tt>. It <bcp14>MUST</bcp14> have the | |||
<tt>@type</tt> property set if it is an instance of <tt>B</tt>. If instead the | <tt>@type</tt> property set if it is an instance of <tt>B</tt>. If, instead, t | |||
<tt>defaultType</tt> attribute is not defined then the <tt>@type</tt> property | he <tt>defaultType</tt> attribute is not defined, then the <tt>@type</tt> proper | |||
<bcp14>MUST</bcp14> also be set for <tt>A</tt>.</li> | ty <bcp14>MUST</bcp14> also be set for <tt>A</tt>.</li> | |||
<li>An object that is not the value of a property, such as the root | <li>An object that is not the value of a property, such as the root | |||
of JSON data (directly or as member of an array), <bcp14>MUST</bcp14> have the < | of JSON data (directly or as a member of an array), <bcp14>MUST</bcp14> have the | |||
tt>@type</tt> property set.</li> | <tt>@type</tt> property set.</li> | |||
</ul> | </ul> | |||
</section> | </section> | |||
</section> | </section> | |||
<section anchor="common-data-types" numbered="true" toc="default"> | <section anchor="common-data-types" numbered="true" toc="default"> | |||
<name>Common Data Types</name> | <name>Common Data Types</name> | |||
<t>In addition to the standard JSON data types, a couple of additional d ata types are common to the definitions of JSContact objects and properties.</t> | <t>In addition to the standard JSON data types, a couple of additional d ata types are common to the definitions of JSContact objects and properties.</t> | |||
<section anchor="id" numbered="true" toc="default"> | <section anchor="id" numbered="true" toc="default"> | |||
<name>Id</name> | <name>Id</name> | |||
<t>Where <tt>Id</tt> is given as a data type, it means a <tt>String</t | <t>Where <tt>Id</tt> is given as a data type, it means a <tt>String</t | |||
t> of at least 1 and a maximum of 255 octets in size, and it <bcp14>MUST</bcp14> | t> of at least 1 and a maximum of 255 octets in size, and it <bcp14>MUST</bcp14> | |||
only contain characters from the <tt>URL and Filename Safe</tt> base64url alpha | only contain characters from the <tt>URL and Filename Safe</tt> base64url alpha | |||
bet, as defined in Section 5 of <xref target="RFC4648" format="default"/>, exclu | bet, as defined in <xref target="RFC4648" sectionFormat="of" section="5"/>, excl | |||
ding the pad character (<tt>=</tt>). This means the allowed characters are the | uding the pad character (<tt>=</tt>). This means the allowed characters are the | |||
ASCII alphanumeric characters (<tt>A-Za-z0-9</tt>), hyphen (<tt>-</tt>), and und | ASCII alphanumeric characters (<tt>A-Za-z0-9</tt>), hyphen (<tt>-</tt>), and un | |||
erscore (<tt>_</tt>).</t> | derscore (<tt>_</tt>).</t> | |||
<t>In many places in JSContact a JSON map is used where the map keys a | <t>In many places in JSContact, a JSON map is used where the map keys | |||
re of type Id and the map values are all the same type of object. This construc | are of type Id and the map values are all the same type of object. This constru | |||
tion represents an unordered set of objects, with the added advantage that each | ction represents an unordered set of objects, with the added advantage that each | |||
entry has a name (the corresponding map key). This allows for more concise patc | entry has a name (the corresponding map key). This allows for more concise pat | |||
hing of objects, and, when applicable, for the objects in question to be referen | ching of objects and, when applicable, for the objects in question to be referen | |||
ced from other objects within the JSContact object. The map keys <bcp14>MUST</b | ced from other objects within the JSContact object. The map keys <bcp14>MUST</b | |||
cp14> be preserved across multiple versions of the JSContact object.</t> | cp14> be preserved across multiple versions of the JSContact object.</t> | |||
<t>Unless otherwise specified for a particular property, there are no | <t>Unless otherwise specified for a particular property, there are no | |||
uniqueness constraints on an Id value (other than, of course, the requirement th | uniqueness constraints on an Id value (other than, of course, the requirement th | |||
at you cannot have two values with the same key within a single JSON map). For | at you cannot have two values with the same key within a single JSON map). For | |||
example, two <xref target="card">Card</xref> objects might use the same Ids in t | example, two <xref target="card">Card</xref> objects might use the same Ids in t | |||
heir respective <tt>photos</tt> properties. Or within the same Card the same Id | heir respective <tt>photos</tt> properties. Or within the same Card, the same I | |||
could appear in the <tt>emails</tt> and <tt>phones</tt> properties. These situ | d could appear in the <tt>emails</tt> and <tt>phones</tt> properties. These sit | |||
ations do not imply any semantic connections among the objects.</t> | uations do not imply any semantic connections among the objects.</t> | |||
</section> | </section> | |||
<section anchor="int-unsignedint" numbered="true" toc="default"> | <section anchor="int-unsignedint" numbered="true" toc="default"> | |||
<name>Int and UnsignedInt</name> | <name>Int and UnsignedInt</name> | |||
<t>Where <tt>Int</tt> is given as a data type, it means an integer in | <t>Where <tt>Int</tt> is given as a data type, it means an integer in | |||
the range -2<sup>53</sup>+1 <= value <= 2<sup>53</sup>-1, the safe range f | the range -2<sup>53</sup>+1 <= value <= 2<sup>53</sup>-1, which is the saf | |||
or integers stored in a floating-point double, represented as a JSON <tt>Number< | e range for integers stored in a floating-point double, represented as a JSON <t | |||
/tt>.</t> | t>Number</tt>.</t> | |||
<t>Where <tt>UnsignedInt</tt> is given as a data type, it means an int | <t>Where <tt>UnsignedInt</tt> is given as a data type, it means an int | |||
eger in the range 0 <= value <= 2<sup>53</sup>-1, represented as a JSON <t | eger in the range 0 <= value <= 2<sup>53</sup>-1 represented as a JSON <tt | |||
t>Number</tt>.</t> | >Number</tt>.</t> | |||
</section> | </section> | |||
<section anchor="patchobject" numbered="true" toc="default"> | <section anchor="patchobject" numbered="true" toc="default"> | |||
<name>PatchObject</name> | <name>PatchObject</name> | |||
<t>A PatchObject is of type <tt>String[*]</tt>, and represents an unor | <t>A PatchObject is of type <tt>String[*]</tt> and represents an unord | |||
dered set of patches on a JSON object. | ered set of patches on a JSON object. | |||
Each key is a path represented in a subset of JSON pointer format <xref ta | Each key is a path represented in a subset of the JSON Pointer format < | |||
rget="RFC6901"/>. The paths have an implicit leading <tt>/</tt>, so each key is | xref target="RFC6901"/>. The paths have an implicit leading <tt>/</tt>, so each | |||
prefixed with <tt>/</tt> before applying the JSON pointer evaluation algorithm. | key is prefixed with <tt>/</tt> before applying the JSON Pointer evaluation alg | |||
</t> | orithm.</t> | |||
<t>A patch within a PatchObject is only valid if all the following con ditions apply:</t> | <t>A patch within a PatchObject is only valid if all the following con ditions apply:</t> | |||
<ol> | <ol> | |||
<li>The pointer <bcp14>MAY</bcp14> reference inside an array but if the last reference token in the pointer is an array index, then the patch value <bcp14>MUST NOT</bcp14> be null. The pointer <bcp14>MUST NOT</bcp14> use "-" as an array index in any of its reference tokens (i.e., you <bcp14>MUST NOT</bcp14 > insert/delete from an array, but you <bcp14>MAY</bcp14> replace the contents o f its existing members. To add or remove members, one needs to replace the comp lete array value).</li> | <li>The pointer <bcp14>MAY</bcp14> reference inside an array, but if the last reference token in the pointer is an array index, then the patch value <bcp14>MUST NOT</bcp14> be null. The pointer <bcp14>MUST NOT</bcp14> use "-" a s an array index in any of its reference tokens (i.e., you <bcp14>MUST NOT</bcp1 4> insert/delete from an array, but you <bcp14>MAY</bcp14> replace the contents of its existing members. To add or remove members, one needs to replace the com plete array value).</li> | |||
<li>All reference tokens prior to the last (i.e., the value after th e final slash) <bcp14>MUST</bcp14> already exist as values in the object being p atched. If the last reference token is an array index, then a member at this in dex <bcp14>MUST</bcp14> already exist in the referenced array.</li> | <li>All reference tokens prior to the last (i.e., the value after th e final slash) <bcp14>MUST</bcp14> already exist as values in the object being p atched. If the last reference token is an array index, then a member at this in dex <bcp14>MUST</bcp14> already exist in the referenced array.</li> | |||
<li>There <bcp14>MUST NOT</bcp14> be two patches in the PatchObject where the pointer of one is the prefix of the pointer of the other, e.g., <tt>ad dresses/1/city</tt> and <tt>addresses</tt>.</li> | <li>There <bcp14>MUST NOT</bcp14> be two patches in the PatchObject where the pointer of one is the prefix of the pointer of the other, e.g., <tt>ad dresses/1/city</tt> and <tt>addresses</tt>.</li> | |||
<li>The value for the patch <bcp14>MUST</bcp14> be valid for the pro perty being set (of the correct type and obeying any other applicable restrictio ns), or if null the property <bcp14>MUST</bcp14> be optional.</li> | <li>The value for the patch <bcp14>MUST</bcp14> be valid for the pro perty being set (of the correct type and obeying any other applicable restrictio ns), or if null, the property <bcp14>MUST</bcp14> be optional.</li> | |||
</ol> | </ol> | |||
<t>The value associated with each pointer determines how to apply that patch:</t> | <t>The value associated with each pointer determines how to apply that patch:</t> | |||
<ul> | <ul> | |||
<li>If null, remove the property from the patched object. If the ke y is not present in the parent, this is a no-op.</li> | <li>If null, remove the property from the patched object. If the ke y is not present in the parent, this is a no-op.</li> | |||
<li>If non-null, set the value given as the value for this property (this may be a replacement or addition to the object being patched).</li> | <li>If non-null, set the value given as the value for this property (this may be a replacement or addition to the object being patched).</li> | |||
</ul> | </ul> | |||
<t>A PatchObject does not define its own <xref target="prop-type"><tt> | <t>A PatchObject does not define its own <xref target="prop-type"><tt> | |||
@type</tt></xref> property. Instead, a <tt>@type</tt> property in a patch <bcp1 | @type</tt></xref> property. Instead, an <tt>@type</tt> property in a patch <bcp | |||
4>MUST</bcp14> be handled as any other patched property value.</t> | 14>MUST</bcp14> be handled as any other patched property value.</t> | |||
<t>Implementations <bcp14>MUST</bcp14> reject in its entirety a PatchO | <t>Implementations <bcp14>MUST</bcp14> reject a PatchObject in its ent | |||
bject if any of its patches are invalid. Implementations <bcp14>MUST NOT</bcp1 | irety if any of its patches are invalid. Implementations <bcp14>MUST NOT</bcp1 | |||
4> apply partial patches.</t> | 4> apply partial patches.</t> | |||
</section> | </section> | |||
<section anchor="resource" numbered="true" toc="default"> | <section anchor="resource" numbered="true" toc="default"> | |||
<name>Resource</name> | <name>Resource</name> | |||
<t>This data type defines a resource associated with the entity repres | ||||
ented by this Card, identified by a URI <xref target="RFC3986" format="default"/ | <!--[rfced] When the term "Card" is referred to in the running text, | |||
>. Several property definitions later in this document refer to the Resource da | there is a mix of "this Card" and "the Card". For consistency and | |||
ta type as the basis for their property-specific value types. The Resource data | clarity, we updated several instances of "this Card" to "the | |||
type defines the properties that are common to all of them. Property definitio | Card". Please review and let us know if any further updates are | |||
ns making use of Resource <bcp14>MAY</bcp14> define additional properties for th | needed. | |||
eir value types.</t> | ||||
<t>The <tt>@type</tt> property value <bcp14>MUST NOT</bcp14> be <tt>Re | One example | |||
source</tt>, instead it <bcp14>MUST</bcp14> be the name of a concrete resource t | ||||
ype (see <xref target="resource-properties"/>). A Resource object has the follo | Original: | |||
wing properties.</t> | The date and time when the data in this Card was last | |||
<ul spacing="normal"> | modified. | |||
<li> | ||||
<t>@type: <tt>String</tt>. Specifies the type of this resource ob | Current: | |||
ject. The allowed value is defined in later sections of this document for each | The date and time when the data in the Card was last | |||
concrete resource type (<xref target="resource-properties"/>).</t> | modified. | |||
</li> | --> | |||
<li> | ||||
<t>kind: <tt>String</tt> (optional). | <t>The <tt>Resource</tt> data type defines a resource associated with | |||
The kind of the resource. The allowed values are defined in the property defini | the entity represented by the Card, identified by a URI <xref target="RFC3986" f | |||
tion that makes use of the Resource type. Some property definitions may change | ormat="default"/>. Later in this document, several property definitions refer t | |||
this property from being optional to mandatory. | o the Resource data type as the basis for their property-specific value types. | |||
</t> | The Resource data type defines the properties that are common to all of them. P | |||
</li> | roperty definitions making use of Resource <bcp14>MAY</bcp14> define additional | |||
<li>uri: <tt>String</tt> (mandatory). | properties for their value types.</t> | |||
The resource value. This <bcp14>MUST</bcp14> be a <em>URI</em> as defined in Se | <t>The <tt>@type</tt> property value <bcp14>MUST NOT</bcp14> be <tt>Re | |||
ction 3 of <xref target="RFC3986" format="default"/>.</li> | source</tt>; instead, it <bcp14>MUST</bcp14> be the name of a concrete resource | |||
<li>mediaType: <tt>String</tt> (optional). | type (see <xref target="resource-properties"/>). A Resource object has the foll | |||
Used for URI resource values. Provides the media type <xref target="RFC2046" fo | owing properties.</t> | |||
rmat="default"/> of the resource identified by the URI.</li> | <dl spacing="normal"> | |||
<li>contexts: <tt>String[Boolean]</tt> (optional). | <dt>@type:</dt><dd> <tt>String</tt>. Specifies the type of this res | |||
The contexts in which to use this resource. Also see <xref target="prop-context | ource object. The allowed value is defined in later sections of this document f | |||
s"/>.</li> | or each concrete resource type (<xref target="resource-properties"/>).</dd> | |||
<li>pref: <tt>UnsignedInt</tt> (optional). | <dt>kind:</dt><dd> <tt>String</tt> (optional). | |||
The preference of this resource in relation to other resources. Als | The kind of the resource. The allowed values are defined in the property defini | |||
o see <xref target="prop-pref"/>.</li> | tion that makes use of the Resource type. Some property definitions may change | |||
<li>label: <tt>String</tt> (optional). | this property from being optional to mandatory. </dd> | |||
A custom label for the value, see <xref target="prop-label"/>.</li> | <dt>uri:</dt><dd> <tt>String</tt> (mandatory). | |||
</ul> | The resource value. This <bcp14>MUST</bcp14> be a <em>URI</em> as defined in <x | |||
ref target="RFC3986" sectionFormat="of" section="3"/>.</dd> | ||||
<dt>mediaType:</dt><dd> <tt>String</tt> (optional). | ||||
Used for URI resource values. Provides the media type <xref target="RFC2046" fo | ||||
rmat="default"/> of the resource identified by the URI.</dd> | ||||
<dt>contexts:</dt><dd> <tt>String[Boolean]</tt> (optional). | ||||
The contexts in which to use this resource. Also see <xref target="prop-contexts | ||||
"/>.</dd> | ||||
<dt>pref:</dt><dd> <tt>UnsignedInt</tt> (optional). | ||||
The preference of the resource in relation to other resources. Also | ||||
see <xref target="prop-pref"/>.</dd> | ||||
<dt>label:</dt><dd> <tt>String</tt> (optional). | ||||
A custom label for the value. Also see <xref target="prop-label"/>.< | ||||
/dd> | ||||
</dl> | ||||
</section> | </section> | |||
<section anchor="utcdatetime" numbered="true" toc="default"> | <section anchor="utcdatetime" numbered="true" toc="default"> | |||
<name>UTCDateTime</name> | <name>UTCDateTime</name> | |||
<t>This is a string in <xref target="RFC3339" format="default"/> <tt>d | <t><tt>UTCDateTime</tt> is a string in <tt>date-time</tt> format <xref | |||
ate-time</tt> format, with the further restrictions that any letters <bcp14>MUST | target="RFC3339" format="default"/>, with further restrictions that any letters | |||
</bcp14> be in uppercase, and the time offset <bcp14>MUST</bcp14> be the charact | <bcp14>MUST</bcp14> be in uppercase and the time offset <bcp14>MUST</bcp14> be | |||
er <tt>Z</tt>. Fractional second values <bcp14>MUST NOT</bcp14> be included unl | the character <tt>Z</tt>. Fractional second values <bcp14>MUST NOT</bcp14> be i | |||
ess non-zero and <bcp14>MUST NOT</bcp14> have trailing zeros, to ensure there is | ncluded unless they are non-zero, and they <bcp14>MUST NOT</bcp14> have trailing | |||
only a single representation for each date-time.</t> | zeros to ensure there is only a single representation for each date-time.</t> | |||
<t>For example, <tt>2010-10-10T10:10:10.003Z</tt> is conformant, but < | <t>For example, <tt>2010-10-10T10:10:10.003Z</tt> is conformant, but < | |||
tt>2010-10-10T10:10:10.000Z</tt> is invalid and is correctly encoded as <tt>2010 | tt>2010-10-10T10:10:10.000Z</tt> is invalid; the correct encoding is <tt>2010-10 | |||
-10-10T10:10:10Z</tt>.</t> | -10T10:10:10Z</tt>.</t> | |||
</section> | </section> | |||
</section> | </section> | |||
<section anchor="common-properties"> | <section anchor="common-properties"> | |||
<name>Common Properties</name> | <name>Common Properties</name> | |||
<t>Most of the properties in this document are specific to a single JSCo | <t>Most of the properties in this document are specific to a single JSCo | |||
ntact object type. Such properties are defined along with the respective object | ntact object type. Such properties are defined along with the respective object | |||
type. The properties in this section are common to multiple data types and are | type. The properties in this section are common to multiple data types and are | |||
defined here to avoid repetition. Note that these properties <bcp14>MUST</bcp1 | defined here to avoid repetition. Note that these properties <bcp14>MUST</bcp1 | |||
4> only be set for a JSContact object if they are explicitly mentioned to be all | 4> only be set for a JSContact object if they are explicitly mentioned as allowa | |||
owed for this object type.</t> | ble for this object type.</t> | |||
<!--[rfced] Within Sections 1.5.1 to 2.8.4, there is inconsistency in | ||||
the way the property names are introduced - some of the lead-in | ||||
sentences are fragments and some work off of the property name in | ||||
the title. May we make this consistent by including the property | ||||
name (enclosed with <tt> in the XML file if preferred) in the lead-in | ||||
sentence as shown in the examples below? Note that there are 25 instances. | ||||
Some examples (see the text for more instances) | ||||
Original: | ||||
1.5.1 contexts | ||||
Type: String[Boolean] | ||||
This property associates contact information with one or more contexts | ||||
in which it should be used. | ||||
Perhaps: | ||||
1.5.1 contexts | ||||
Type: String[Boolean] | ||||
The contexts property associates contact information with one or more | ||||
contexts in which it should be used. | ||||
... | ||||
Original: | ||||
2.3.4 preferredLanguages | ||||
Type: Id{LanguagePref] (optional). | ||||
Defines the preferred languages for contacting the entity associated | ||||
with this Card. | ||||
Perhaps: | ||||
2.3.4 preferredLanguages | ||||
Type: Id{LanguagePref] (optional). | ||||
The preferredLanguages property defines the preferred languages for | ||||
contacting the entity associated with the Card. | ||||
... | ||||
Original: | ||||
2.6.2. directories | ||||
Type: Id[Directory] (optional). | ||||
These are directory service resources, such as entries in a | ||||
directory or organizational directories for lookup. | ||||
Perhaps: | ||||
2.6.2. directories | ||||
Type: Id[Directory] (optional) | ||||
The directories property specifies directory service resources | ||||
such as entries in a directory or organizational directories | ||||
for lookup. | ||||
--> | ||||
<section anchor="prop-contexts" numbered="true" toc="default"> | <section anchor="prop-contexts" numbered="true" toc="default"> | |||
<name>contexts</name> | <name>contexts</name> | |||
<t>Type: <tt>String[Boolean]</tt></t> | <t>Type: <tt>String[Boolean]</tt></t> | |||
<t>This property associates contact information with one or more conte xts in which it should be used. For example, someone might have distinct phone numbers for work and private contexts, and may set the desired context on the re spective phone number in the <xref target="phones"><tt>phones</tt></xref> proper ty.</t> | <t>This property associates contact information with one or more conte xts in which it should be used. For example, someone might have distinct phone numbers for work and private contexts and may set the desired context on the res pective phone number in the <xref target="phones"><tt>phones</tt></xref> propert y.</t> | |||
<t>This section defines common contexts. Additional contexts may be d efined in the properties or data types that make use of this property. The <xre f target="enumerated-values">enumerated</xref> common context values are:</t> | <t>This section defines common contexts. Additional contexts may be d efined in the properties or data types that make use of this property. The <xre f target="enumerated-values">enumerated</xref> common context values are:</t> | |||
<ul spacing="normal"> | <ul spacing="normal"> | |||
<li><tt>private</tt>: the contact information may be used in a priva | <li><tt>private</tt>: the contact information that may be used in a | |||
te context.</li> | private context.</li> | |||
<li><tt>work</tt>: the contact information may be used in a professi | <li><tt>work</tt>: the contact information that may be used in a pro | |||
onal context.</li> | fessional context.</li> | |||
</ul> | </ul> | |||
</section> | </section> | |||
<section anchor="prop-extra" numbered="true" toc="default"> | <section anchor="prop-extra" numbered="true" toc="default"> | |||
<name>extra</name> | <name>extra</name> | |||
<t>This is a reserved property name. Implementations <bcp14>MUST NOT</ | <t><tt>extra</tt> is a reserved property name. Implementations <bcp14> | |||
bcp14> set this property in a JSContact object. Any JSContact object including | MUST NOT</bcp14> set this property in a JSContact object. Any JSContact object | |||
a property with this name <bcp14>MUST</bcp14> be considered invalid.</t> | including a property with this name <bcp14>MUST</bcp14> be considered invalid.</ | |||
<t>The purpose of this reserved property name is to provide implemento | t> | |||
rs with a name which is certain to never occur as a property name in a JSContact | <t>The purpose of this reserved property name is to provide implemento | |||
object. Implementations might want to map unknown or vendor-specific propertie | rs with a name that is certain to never occur as a property name in a JSContact | |||
s to a variable with this name, but this is implementation-specific.</t> | object. Implementations might want to map unknown or vendor-specific properties | |||
to a variable with this name, but this is implementation-specific.</t> | ||||
</section> | </section> | |||
<section anchor="prop-label" numbered="true" toc="default"> | <section anchor="prop-label" numbered="true" toc="default"> | |||
<name>label</name> | <name>label</name> | |||
<t>Type: <tt>String</tt></t> | <t>Type: <tt>String</tt></t> | |||
<t>This property allows associating contact data with user-defined lab els. Such labels may be set for phone numbers, email addresses and resources. Typically, these labels are displayed along with their associated contact data i n graphical user interfaces. Such labels best be succinct to properly display o n small graphical interfaces and screens.</t> | <t>This property allows associating contact data with user-defined lab els. Such labels may be set for phone numbers, email addresses, and resources. Typically, these labels are displayed along with their associated contact data in graphical user interfaces. Note that succinct labels are best for proper disp lay on small graphical interfaces and screens.</t> | |||
</section> | </section> | |||
<section anchor="prop-pref" numbered="true" toc="default"> | <section anchor="prop-pref" numbered="true" toc="default"> | |||
<name>pref</name> | <name>pref</name> | |||
<t>Type: <tt>UnsignedInt</tt></t> | <t>Type: <tt>UnsignedInt</tt></t> | |||
<t>This property allows defining a preference order for contact inform ation. For example, a person may have two email addresses and prefer to be cont acted with one of them.</t> | <t>This property allows defining a preference order for contact inform ation. For example, a person may have two email addresses and prefer to be cont acted with one of them.</t> | |||
<t>Its value <bcp14>MUST</bcp14> be in the range 1 and 100. Lower val | <t>Its value <bcp14>MUST</bcp14> be in the range of 1 to 100. Lower v | |||
ues correspond to a higher level of preference, with 1 being most preferred. If | alues correspond to a higher level of preference, with 1 being most preferred. | |||
no preference is set, then the contact information <bcp14>MUST</bcp14> be inter | If no preference is set, then the contact information <bcp14>MUST</bcp14> be int | |||
preted as being least preferred.</t> | erpreted as being least preferred.</t> | |||
<t>Note that the preference only is defined in relation to contact inf | <t>Note that the preference is only defined in relation to contact inf | |||
ormation of the same type. For example, the preference orders within emails and | ormation of the same type. For example, the preference orders within emails and | |||
phone numbers are independent of each other.</t> | phone numbers are independent of each other.</t> | |||
</section> | </section> | |||
<section anchor="prop-phonetic" numbered="true" toc="default"> | <section anchor="prop-phonetic" numbered="true" toc="default"> | |||
<name>phonetic</name> | <name>phonetic</name> | |||
<t>This property defines how to pronounce a value in the language indi | <t>The phonetic property defines how to pronounce a value in the langu | |||
cated in the Card <xref target="language">language</xref> property or the langua | age indicated in the Card <xref target="language">language</xref> property or th | |||
ge tag of its <xref target="localizations">localizations</xref>. Exemplary uses | e language tag of its <xref target="localizations">localizations</xref>. Exempl | |||
are to define how to pronounce Japanese names, or for romanization of Mandarin | ary uses of this property are defining how to pronounce Japanese names and roman | |||
or Cantonese name and address components. The properties are defined as follows | izing Mandarin or Cantonese name and address components. The properties are def | |||
:</t> | ined as follows:</t> | |||
<ul spacing="normal"> | <dl spacing="normal"> | |||
<li> | <dt>phonetic:</dt><dd> <tt>String</tt>. | |||
<t>phonetic: <tt>String</tt>. | Contains the phonetic representation of a value. | |||
Contains the phonetic representation of a value. Any script lan | ||||
guage subtag in the Card <xref target="language">language</xref> property <bcp14 | <!--[rfced] Can "ignored for use with" be updated as "ignored and not | |||
>MUST</bcp14> be ignored for use with the <tt>phonetic</tt> property. If this p | used with" for clarity as shown below? | |||
roperty is set, then at least one of the <tt>phoneticScript</tt> or <tt>phonetic | ||||
System</tt> properties that relate to this value <bcp14>MUST</bcp14> be set.</t> | Original: | |||
</li> | Any script language subtag in the Card language (Section 2.1.5) | |||
<li> | property MUST be ignored for use with the phonetic property. | |||
<t>phoneticScript: <tt>String</tt>. | ||||
The script used in the value of the related <tt>phonetic</tt> pr | Perhaps: | |||
operty. This <bcp14>MUST</bcp14> be a valid script subtag as defined in <xref t | Any script language subtag in the Card language (Section 2.1.5) | |||
arget="RFC5646" section="2.2.3"/>.</t> | property MUST be ignored and not used with the phonetic property. | |||
</li> | --> | |||
<li> | ||||
<t>phoneticSystem: <tt>String</tt>. | Any script language subtag in the Card <xref target="language">langua | |||
The phonetic system used in the related value of the <tt>phonetic< | ge</xref> property <bcp14>MUST</bcp14> be ignored for use with the <tt>phonetic< | |||
/tt> property. The <xref target="enumerated-values">enumerated values</xref> ar | /tt> property. If this property is set, then at least one of the <tt>phoneticSc | |||
e:</t> | ript</tt> or <tt>phoneticSystem</tt> properties that relate to this value <bcp14 | |||
>MUST</bcp14> be set.</dd> | ||||
<dt>phoneticScript:</dt><dd> <tt>String</tt>. | ||||
The script used in the value of the related <tt>phonetic</tt> proper | ||||
ty. This <bcp14>MUST</bcp14> be a valid script subtag as defined in <xref targe | ||||
t="RFC5646" section="2.2.3"/>. </dd> | ||||
<dt>phoneticSystem:</dt><dd><t> <tt>String</tt>. | ||||
The phonetic system used in the related value of the <tt>phonetic< | ||||
/tt> property. The <xref target="enumerated-values">enumerated</xref> values ar | ||||
e:</t> | ||||
<ul> | <ul> | |||
<li><tt>ipa</tt>: denotes the <xref target="IPA">International P honetic Alphabet</xref>.</li> | <li><tt>ipa</tt>: denotes the <xref target="IPA">International P honetic Alphabet</xref>.</li> | |||
<li><tt>jyut</tt>: denotes the Cantonese romanization system "Jy utping".</li> | <li><tt>jyut</tt>: denotes the Cantonese romanization system "Jy utping".</li> | |||
<li><tt>piny</tt>: denotes the Standard Mandarin romanization sy stem "Hanyu Pinyin".</li> | <li><tt>piny</tt>: denotes the Standard Mandarin romanization sy stem "Hanyu Pinyin".</li> | |||
</ul> | </ul> | |||
</li> | </dd> | |||
</ul> | </dl> | |||
<t>The relation between the <tt>phoneticSystem</tt>, <tt>phoneticScrip | <t>The relation between the <tt>phoneticSystem</tt>, <tt>phoneticScrip | |||
t</tt> and <tt>phonetic</tt> properties is type-specific. This specification de | t</tt>, and <tt>phonetic</tt> properties is type-specific. This specification d | |||
fines this relation in the <xref target="name">Name</xref> and <xref target="add | efines this relation in the <xref target="name">Name</xref> and <xref target="ad | |||
resses">Address</xref> object types, respectively.</t> | dresses">Address</xref> object types, respectively.</t> | |||
<t>The following example illustrates the <tt>phonetic</tt> property fo r a <xref target="name">name</xref>:</t> | <t>The following example illustrates the <tt>phonetic</tt> property fo r a <xref target="name">name</xref>:</t> | |||
<figure anchor="example-phonetic"> | <figure anchor="example-phonetic"> | |||
<name>Example of <tt>phonetic</tt> for the name "John Smith" as pron ounced in the USA.</name> | <name>Example of a <tt>phonetic</tt> Property for the Name "John Smi th" as Pronounced in the USA</name> | |||
<sourcecode name="" type="json"><![CDATA[ | <sourcecode name="" type="json"><![CDATA[ | |||
"name": { | "name": { | |||
"components": [{ | "components": [{ | |||
"kind": "given", | "kind": "given", | |||
"value": "John", | "value": "John", | |||
"phonetic": "/ˈdʒɑːn/" | "phonetic": "/ˈdʒɑːn/" | |||
}, { | }, { | |||
"kind": "surname", | "kind": "surname", | |||
"value": "Smith", | "value": "Smith", | |||
"phonetic": "/smɪθ/" | "phonetic": "/smɪθ/" | |||
}], | }], | |||
"phoneticSystem": "ipa" | "phoneticSystem": "ipa" | |||
} | } | |||
]]></sourcecode> | ]]></sourcecode> | |||
</figure> | </figure> | |||
</section> | </section> | |||
</section> | </section> | |||
<section anchor="internationalization"> | <section anchor="internationalization"> | |||
<name>Internationalization</name> | <name>Internationalization</name> | |||
<t>JSContact aims to be used for international contacts and addressbook data. Notably text values such as names and addresses are likely to cover a wide range of languages and cultures. This section describes internationalization f or free-form text values, as well as for Uniform Resource Identifiers (URIs).</t > | <t>JSContact aims to be used for international contacts and address book data. Notably, text values such as names and addresses are likely to cover a wi de range of languages and cultures. This section describes internationalization for free-form text values as well as Uniform Resource Identifiers (URIs).</t> | |||
<section> | <section> | |||
<name>Free-form text</name> | <name>Free-Form Text</name> | |||
<t>Properties having free-form text values <bcp14>MAY</bcp14> contain | <t>Properties having free-form text values <bcp14>MAY</bcp14> contain | |||
any valid sequence of Unicode characters encoded as a JSON string. Such values | any valid sequence of Unicode characters encoded as a JSON string. Such values | |||
can contain unidirectional left-to-right and right-to-left text, as well as bidi | can contain unidirectional left-to-right and right-to-left text, as well as bidi | |||
rectional text using Unicode Directional Formatting Characters described in Sect | rectional text using Unicode Directional Formatting Characters as described in S | |||
ion 2 of <xref target="UBiDi"/>. Implementations setting bidirectional text <bcp | ection 2 of <xref target="UBiDi"/>. Implementations setting bidirectional text < | |||
14>MUST</bcp14> make sure that each property value complies with the requirement | bcp14>MUST</bcp14> make sure that each property value complies with the requirem | |||
s of the Unicode Bidirectional Algorithm. Implementations <bcp14>MUST NOT</bcp1 | ents of the Unicode Bidirectional Algorithm. Implementations <bcp14>MUST NOT</b | |||
4> assume that text values of adjacent properties are processed or displayed as | cp14> assume that text values of adjacent properties are processed or displayed | |||
a combined string, for example the values of a given name component and a surnam | as a combined string; for example, the values of a given name component and a su | |||
e component may or may not to be rendered together.</t> | rname component may or may not be rendered together.</t> | |||
</section> | </section> | |||
<section> | <section> | |||
<name>URIs</name> | <name>URIs</name> | |||
<t>Several properties require their string value to be a URI as define | <t>Several properties require their string value to be a URI as define | |||
d in <xref target="RFC3986"/>. Implementations <bcp14>MUST</bcp14> make sure to | d in <xref target="RFC3986"/>. Implementations <bcp14>MUST</bcp14> make sure to | |||
use proper percent-encoding for URIs that can not be represented using unreserv | use proper percent-encoding for URIs that cannot be represented using unreserve | |||
ed URI characters. <xref target="RFC3987" section="3.1"/> defines how to conver | d URI characters. <xref target="RFC3987" section="3.1"/> defines how to convert | |||
t Internationalized Resource Identifiers to URIs. JSContact makes no recommenda | Internationalized Resource Identifiers to URIs. | |||
tion how to display URIs, but section "4.8.3 Internationalization and special ch | ||||
aracters" of the <xref target="W3C-URL">W3C URL Standard</xref> provides guidanc | <!--[rfced] We notice that "URL Living Standard" | |||
e for URLs found in context of a web browser.</t> | <https://url.spec.whatwg.org> is from the WHATWG and not the | |||
W3C. We updated the running text and reference entry to reflect | ||||
this as shown below. Please let us know if any further changes | ||||
are needed. | ||||
Original: | ||||
JSContact makes no recommendation how to display URIs, but | ||||
section "4.8.3 Internationalization and special characters" | ||||
of the W3C URL Standard [W3C-URL] provides guidance for URLs | ||||
found in context of a web browser. | ||||
[W3C-URL] "W3C WG URL - Living Standard - Last Updated 21 August | ||||
2023", <https://url.spec.whatwg.org>. | ||||
Current: | ||||
JSContact makes no recommendation on how to display URIs, but the | ||||
WHATWG URL Living Standard (see "Internationalization and special characters" | ||||
(Section 4.8.3) of [WHATWG-URL]) provides guidance for URLs found in | ||||
the context of a web browser. | ||||
[WHATWG-URL] WHATWG, "URL Living Standard", January 2024, | ||||
<https://url.spec.whatwg.org>. | ||||
--> | ||||
JSContact makes no recommendation on how to display URIs, | ||||
but the WHATWG URL Living Standard (see "Internationalization and | ||||
special characters" (Section 4.8.3) of <xref | ||||
target="WHATWG-URL"/>) provides guidance for URLs found in | ||||
the context of a web browser.</t> | ||||
</section> | </section> | |||
</section> | </section> | |||
<section anchor="validating-jscontact"> | <section anchor="validating-jscontact"> | |||
<name>Validating JSContact</name> | <name>Validating JSContact</name> | |||
<t>This specification distinguishes between three kinds of properties re | <t>This specification distinguishes between three kinds of properties re | |||
garding validation: IANA-registered properties and unknown properties are define | garding validation: IANA-registered properties and unknown properties, which are | |||
d in this section, while vendor-specific properties are defined in <xref target= | defined in this section, and vendor-specific properties, which are defined in < | |||
"vendor-specific-properties"/>. A JSContact object is invalid if any of its pro | xref target="vendor-specific-properties"/>. A JSContact object is invalid if an | |||
perties are invalid.</t> | y of its properties are invalid.</t> | |||
<t>This document defines for each property if it is mandatory or optiona | <t>This document defines whether each property is mandatory or optional. | |||
l. A mandatory property <bcp14>MUST</bcp14> be present for a JSContact object t | A mandatory property <bcp14>MUST</bcp14> be present for a JSContact object to | |||
o be valid. An optional property does not need to be present. The values of bo | be valid. An optional property does not need to be present. The values of both | |||
th required and optional properties <bcp14>MUST</bcp14> adhere to the data type | required and optional properties <bcp14>MUST</bcp14> adhere to the data type an | |||
and definition of that property.</t> | d definition of that property.</t> | |||
<section anchor="case-sensitivity"> | <section anchor="case-sensitivity"> | |||
<name>Case-Sensitivity</name> | <name>Case-Sensitivity</name> | |||
<t>All property names, object type names and enumerated values are cas e-sensitive, if not explicitly stated otherwise in their according definition. Implementations <bcp14>MUST</bcp14> handle a JSContact object as invalid if a ty pe name, property name or enumerated value only differs in case from one defined for any JSContact version known to that implementation. This applies regardles s of what JSContact version the Card object defines in its <xref target="prop-ve rsion"><tt>version</tt></xref> property. <xref target="unknown-properties"/> de fines how to handle unknown properties.</t> | <t>All property names, object type names, and enumerated values are ca se-sensitive, unless explicitly stated otherwise in their definitions. Implemen tations <bcp14>MUST</bcp14> handle a JSContact object as invalid if a type name, property name, or enumerated value only differs in case from one defined for an y JSContact version known to that implementation. This applies regardless of wh at JSContact version the Card object defines in its <xref target="prop-version"> <tt>version</tt></xref> property. <xref target="unknown-properties"/> defines h ow to handle unknown properties.</t> | |||
</section> | </section> | |||
<section anchor="iana-registered-properties" numbered="true" toc="defaul t"> | <section anchor="iana-registered-properties" numbered="true" toc="defaul t"> | |||
<name>IANA-registered Properties</name> | <name>IANA-Registered Properties</name> | |||
<t> | <t> | |||
An IANA-registered property is any property that has been registered ac cording to the IANA property registry rules as outlined in <xref target="iana-co nsiderations"/>. All properties defined in this specification, including their object value types and enumerated values, are registered at IANA. | An IANA-registered property is any property that has been registered ac cording to the IANA property registry rules as outlined in <xref target="iana-co nsiderations"/>. All properties defined in this specification, including their object value types and enumerated values, are registered at IANA. | |||
</t> | </t> | |||
<t> | <t> | |||
Implementations <bcp14>MUST</bcp14> validate IANA-registered properties in JSContact data, unless they are unknown to the implementation (see <xref targ et="unknown-properties"/>). They <bcp14>MUST</bcp14> reject invalid IANA-regist ered properties. A property is invalid if its name matches the name of an IANA- registered property but the value violates its definition according to the JSCon tact specification version defined in the Card <tt>version</tt> property (<xref target="prop-version"/>). | Implementations <bcp14>MUST</bcp14> validate IANA-registered properties in JSContact data, unless they are unknown to the implementation (<xref target=" unknown-properties"/>). They <bcp14>MUST</bcp14> reject invalid IANA-registered properties. A property is invalid if its name matches the name of an IANA-regi stered property but the value violates its definition according to the JSContact specification version defined in the Card <xref target="prop-version"><tt>versi on</tt></xref> property. | |||
</t> | </t> | |||
<t> | <t> | |||
IANA-registered property names <bcp14>MUST NOT</bcp14> contain US-AS | ||||
CII control characters (U+0000 to U+001F, U+007F), the <tt>COLON</tt> (U+003A) o | <!-- [rfced] The RFC Production Center has been advised that "ASCII" | |||
r <tt>QUOTATION MARK</tt> (U+0022) characters. They <bcp14>MUST</bcp14> only co | and not "US-ASCII" should be used. May we change two instances | |||
ntain US-ASCII alphanumeric characters that match the ALPHA and DIGIT rules defi | of "US-ASCII" in this document to "ASCII"? | |||
ned in <xref target="RFC5234" section="B.1"/>) or the <tt>COMMERCIAL AT</tt> (U+ | ||||
0040) character. IANA-registered property names <bcp14>MUST</bcp14> be notated | Original: | |||
in lower camel case. | IANA-registered property names MUST NOT contain US-ASCII control | |||
characters (U+0000 to U+001F, U+007F), the COLON (U+003A) or | ||||
QUOTATION MARK (U+0022) characters. They MUST only contain US-ASCII | ||||
alphanumeric characters that match the ALPHA and DIGIT rules defined | ||||
in Appendix B.1 of [RFC5234]) or the COMMERCIAL AT (U+0040) | ||||
character. | ||||
Perhaps: | ||||
IANA-registered property names MUST NOT contain ASCII control | ||||
characters (U+0000 to U+001F, U+007F), the COLON (U+003A) or | ||||
QUOTATION MARK (U+0022) characters. They MUST only contain ASCII | ||||
alphanumeric characters that match the ALPHA and DIGIT rules defined | ||||
in Appendix B.1 of [RFC5234]) or the COMMERCIAL AT (U+0040) | ||||
character. | ||||
--> | ||||
IANA-registered property names <bcp14>MUST NOT</bcp14> contain US-AS | ||||
CII control characters (U+0000 to U+001F, U+007F), the <tt>COLON</tt> (U+003A), | ||||
or the <tt>QUOTATION MARK</tt> (U+0022). They <bcp14>MUST</bcp14> only contain | ||||
US-ASCII alphanumeric characters that match the ALPHA and DIGIT rules defined in | ||||
<xref target="RFC5234" section="B.1"/> or the <tt>COMMERCIAL AT</tt> (U+0040) c | ||||
haracter. IANA-registered property names <bcp14>MUST</bcp14> be notated in lowe | ||||
r camel case. | ||||
</t> | </t> | |||
</section> | </section> | |||
<section anchor="unknown-properties" numbered="true" toc="default"> | <section anchor="unknown-properties" numbered="true" toc="default"> | |||
<name>Unknown Properties</name> | <name>Unknown Properties</name> | |||
<t> | <t> | |||
Implementations may encounter JSContact data where a property name i | Implementations may encounter JSContact data where a property name i | |||
s unknown to that implementation, but the name adheres to the syntactic restrict | s unknown to that implementation but the name adheres to the syntactic restricti | |||
ions of IANA-registered property names. Implementations <bcp14>MUST</bcp14> mak | ons of IANA-registered property names. Implementations <bcp14>MUST</bcp14> make | |||
e sure that such a name does not violate the case-sensitivity rules defined in < | sure that such a name does not violate the case-sensitivity rules defined in <x | |||
xref target="case-sensitivity"/>. If the property name is valid, then implement | ref target="case-sensitivity"/>. If the property name is valid, then implementa | |||
ations <bcp14>MUST NOT</bcp14> treat such properties as invalid. Instead, they | tions <bcp14>MUST NOT</bcp14> treat such properties as invalid. Instead, they < | |||
<bcp14>MUST</bcp14> preserve them in the JSContact object.</t> | bcp14>MUST</bcp14> preserve them in the JSContact object.</t> | |||
<t>Implementations that create or update JSContact data <bcp14>MUST</b | <t>Implementations that create or update JSContact data <bcp14>MUST</b | |||
cp14> only set IANA-registered properties or vendor-specific properties. Preser | cp14> only set IANA-registered properties or vendor-specific properties. Preser | |||
ving properties that are unknown to the implementation, is to allow applications | ving properties that are unknown to the implementation is to allow applications | |||
and services to interoperate without data loss, even if not all of them impleme | and services to interoperate without data loss, even if not all of them implemen | |||
nt the same set of JSContact extensions. | t the same set of JSContact extensions. | |||
</t> | </t> | |||
</section> | </section> | |||
<section anchor="enumerated-values" numbered="true" toc="default"> | <section anchor="enumerated-values" numbered="true" toc="default"> | |||
<name>Enumerated Values</name> | <name>Enumerated Values</name> | |||
<t>Several properties in this document restrict their allowed values to be from a list of String values. These values are case-sensitive. If not no ted otherwise for a specific property, the initial list of values for such prope rties is registered at IANA in the <xref target="iana-enum-registry">JSContact E num Values Registry</xref>. Implementations <bcp14>MUST</bcp14> only set IANA-r egistered or <xref target="vendor-specific-values">vendor-specific</xref> values for such properties.</t> | <t>Several properties in this document restrict their allowed values t o a list of String values. These values are case-sensitive. If not noted other wise for a specific property, the initial list of values for such properties is registered at IANA in the <xref target="iana-enum-registry">"JSContact Enum Valu es" registry</xref>. Implementations <bcp14>MUST</bcp14> only set IANA-register ed or <xref target="vendor-specific-values">vendor-specific</xref> values for su ch properties.</t> | |||
</section> | </section> | |||
</section> | </section> | |||
<section anchor="vendor-specific-extensions"> | <section anchor="vendor-specific-extensions"> | |||
<name>Vendor-Specific Extensions</name> | <name>Vendor-Specific Extensions</name> | |||
<t>Vendors may extend properties and values for experimentation or to st ore contacts data that only is useful for a single service or application. Such extensions are not meant for interoperation. If instead interoperation is desi red, vendors are strongly encouraged to define and register new properties, type s and values at IANA. <xref target="iana-considerations"/> defines how to regis ter new properties, types or values at IANA. <xref target="iana-registered-prop erties"/> defines the naming conventions for IANA-registered elements.</t> | <t>Vendors may extend properties and values for experimentation or to st ore contacts data that is only useful for a single service or application. Such extensions are not meant for interoperation. If, instead, interoperation is de sired, vendors are strongly encouraged to define and register new properties, ty pes, and values at IANA as defined in <xref target="iana-considerations"/>. <xre f target="iana-registered-properties"/> defines the naming conventions for IANA- registered elements.</t> | |||
<section anchor="vendor-specific-properties" numbered="true" toc="defaul t"> | <section anchor="vendor-specific-properties" numbered="true" toc="defaul t"> | |||
<name>Vendor-specific Properties</name> | <name>Vendor-Specific Properties</name> | |||
<t> | <t> | |||
Vendor-specific property names <bcp14>MUST</bcp14> start with a vend or-specific prefix followed by a name, as produced by the <tt>v-extension</tt> A BNF below. The prefix and name together form the property name. The vendor-spe cific prefix <bcp14>MUST</bcp14> be a domain name under control of the service o r application that sets the property, but it need not resolve in the Domain Name System <xref target="RFC1034"/> and <xref target="RFC1035"/>. The prefix <tt>i etf.org</tt> and its subdomain names are reserved for IETF specifications. The name <bcp14>MUST NOT</bcp14> contain the <tt>TILDE</tt> (U+007E) and <tt>SOLIDUS </tt> (U+002F) characters, as these require special-escaping when encoding a JSO N Pointer <xref target="RFC6901"/> for that property. | Vendor-specific property names <bcp14>MUST</bcp14> start with a vend or-specific prefix followed by a name, as produced by the <tt>v-extension</tt> A BNF below. The prefix and name together form the property name. The vendor-spe cific prefix <bcp14>MUST</bcp14> be a domain name under control of the service o r application that sets the property, but it need not resolve in the Domain Name System <xref target="RFC1034"/> <xref target="RFC1035"/>. The prefix <tt>ietf. org</tt> and its subdomain names are reserved for IETF specifications. The name <bcp14>MUST NOT</bcp14> contain the <tt>TILDE</tt> (U+007E) and <tt>SOLIDUS</tt > (U+002F) characters, as these require special escaping when encoding a JSON Po inter <xref target="RFC6901"/> for that property. | |||
</t> | </t> | |||
<t> | <t> | |||
Vendor-specific properties <bcp14>MAY</bcp14> be set in any JSContact ob ject. Implementations <bcp14>MUST</bcp14> preserve vendor-specific properties i n JSContact data, irrespective if they know their use. They <bcp14>MUST NOT</bc p14> reject the property value as invalid, unless they are in control of the ven dor-specific property as outlined in the above paragraph. | Vendor-specific properties <bcp14>MAY</bcp14> be set in any JSContact ob ject. Implementations <bcp14>MUST</bcp14> preserve vendor-specific properties i n JSContact data, irrespective if they know their use. They <bcp14>MUST NOT</bc p14> reject the property value as invalid, unless they are in control of the ven dor-specific property as outlined in the above paragraph. | |||
</t> | </t> | |||
<t>The ABNF rule <tt>v-extension</tt> formally defines valid vendor-sp ecific property names. Note that the vendor prefix allows for more values than are allowed as Internationalized Domain Names (IDN) <xref target="RFC8499"/>. T his is to allow JSContact implementations simply validate property names without implementing the full set of rules that apply to domain names.</t> | <t>The ABNF rule <tt>v-extension</tt> formally defines valid vendor-specif ic property names. Note that the vendor prefix allows for more values than Inter nationalized Domain Names (IDNs) <xref target="RFC8499"/>; therefore, JSContact implementations can simply validate property names without implementing the full set of rules that apply to domain names.</t> | |||
<figure anchor="vendor-property-abnf"> | <figure anchor="vendor-property-abnf"> | |||
<name>ABNF rules for vendor-specific property names</name> | <name>ABNF Rules for Vendor-Specific Property Names</name> | |||
<sourcecode name="" type="abnf"><![CDATA[ | <sourcecode name="" type="abnf"><![CDATA[ | |||
v-extension = v-prefix ":" v-name | v-extension = v-prefix ":" v-name | |||
v-prefix = v-label *("." v-label) | v-prefix = v-label *("." v-label) | |||
v-label = alnum-int / alnum-int *(alnum-int / "-") alnum-int | v-label = alnum-int / alnum-int *(alnum-int / "-") alnum-int | |||
alnum-int = ALPHA / DIGIT / NON-ASCII | alnum-int = ALPHA / DIGIT / NON-ASCII | |||
; see RFC 6350 Section 3.3 | ; see RFC 6350, Section 3.3 | |||
v-name = 1*(WSP / "!" / %x23-2e / %x30-7d / NON-ASCII) | v-name = 1*(WSP / "!" / %x23-2e / %x30-7d / NON-ASCII) | |||
; any characters except CTLs, DQUOTE, SOLIDUS and TILDE | ; any characters except CTLs, DQUOTE, SOLIDUS, and TILDE | |||
]]></sourcecode> | ]]></sourcecode> | |||
</figure> | </figure> | |||
<t> | <t> | |||
The value of vendor-specific properties can be any valid JSON value, and naming restrictions do not apply to such values. Specifically, if the prop erty value is a JSON object then the keys of such objects need not be named as v endor-specific properties. The example in <xref target="vendor-property-example "/> illustrates this: | The value of vendor-specific properties can be any valid JSON value, and naming restrictions do not apply to such values. Specifically, if the prop erty value is a JSON object, then the keys of such objects need not be named as vendor-specific properties, as illustrated in <xref target="vendor-property-exam ple"/>: | |||
</t> | </t> | |||
<figure anchor="vendor-property-example"> | <figure anchor="vendor-property-example"> | |||
<name>Examples of vendor-specific properties</name> | <name>Examples of Vendor-Specific Properties</name> | |||
<artwork><![CDATA[ | <sourcecode type=""><![CDATA[ | |||
"example.com:foo": "bar", | "example.com:foo": "bar", | |||
"example.com:foo2": { | "example.com:foo2": { | |||
"bar": "baz" | "bar": "baz" | |||
} | } | |||
]]></artwork> | ]]></sourcecode> | |||
</figure> | </figure> | |||
</section> | </section> | |||
<section anchor="vendor-specific-values" numbered="true" toc="default"> | <section anchor="vendor-specific-values" numbered="true" toc="default"> | |||
<name>Vendor-specific Values</name> | <name>Vendor-Specific Values</name> | |||
<t> | <t> | |||
Some JSContact IANA-registered properties allow their values to be v endor-specific. One such example is the <tt>kind</tt> property <xref target="ki nd"/>, which enumerates its standard values but also allows for arbitrary vendor -specific values. Such vendor-specific values <bcp14>MUST</bcp14> be valid <tt> v-extension</tt> values as defined in <xref target="vendor-specific-properties"/ >. The example in <xref target="vendor-value-example"/> illustrates this: | Some JSContact IANA-registered properties allow their values to be v endor-specific. One such example is the <xref target="kind"><tt>kind</tt></xre f> property, which enumerates its standard values but also allows for arbitrary vendor-specific values. Such vendor-specific values <bcp14>MUST</bcp14> be vali d <tt>v-extension</tt> values as defined in <xref target="vendor-specific-proper ties"/>. The example in <xref target="vendor-value-example"/> illustrates this: | |||
</t> | </t> | |||
<figure anchor="vendor-value-example"> | <figure anchor="vendor-value-example"> | |||
<name>Example of a vendor-specific value</name> | <name>Example of a Vendor-Specific Value</name> | |||
<artwork><![CDATA[ | <sourcecode><![CDATA[ | |||
"kind": "example.com:baz" | "kind": "example.com:baz" | |||
]]></artwork> | ]]></sourcecode> | |||
</figure> | </figure> | |||
<t> | <t> | |||
Vendors are strongly encouraged to specify a new standard value once a ven dor-specific one turns out to be useful also for other systems. | Vendors are strongly encouraged to specify a new standard value once a ven dor-specific one turns out to also be useful for other systems. | |||
</t> | </t> | |||
</section> | </section> | |||
</section> | </section> | |||
<section anchor="versioning"> | <section anchor="versioning"> | |||
<name>Versioning</name> | <name>Versioning</name> | |||
<t>Every instance of a JSContact <xref target="card">Card</xref> indicat | <t>Every instance of a JSContact <xref target="card">Card</xref> indicat | |||
es which JSContact version its IANA-registered properties and values are based o | es which JSContact version its IANA-registered properties and values are based o | |||
n. The version is indicated both in the <xref target="prop-version"><tt>version | n. | |||
</tt></xref> property within the Card and in the <xref target="iana-media-type"> | ||||
version</xref> parameter of the JSContact MIME content type. All IANA-registered | <!--[rfced] As "MIME" is no longer used in the IANA registry, may we | |||
elements indicate the version at which they got introduced or obsoleted.</t> | update the text as follows? | |||
Original: | ||||
The version is indicated both in the version (Section 2.1.2) | ||||
property within the Card and in the version (Section 3.1) parameter | ||||
of the JSContact MIME content type. | ||||
Perhaps: | ||||
The version is indicated both in the version (Section 2.1.2) | ||||
property within the Card and in the version (Section 3.1) parameter | ||||
of the JSContact media type. | ||||
--> | ||||
The version is indicated both in the <xref target="prop-version"><tt>vers | ||||
ion</tt></xref> property within the Card and in the <xref target="iana-media-typ | ||||
e">version</xref> parameter of the JSContact MIME content type. All IANA-registe | ||||
red elements indicate the version at which they were introduced or obsoleted.</t | ||||
> | ||||
<section> | <section> | |||
<name>Version Format and Requirements</name> | <name>Version Format and Requirements</name> | |||
<t>A JSContact version consists of a numeric major and minor version, | <t>A JSContact version consists of a numeric major and minor version, | |||
separated by the <tt>FULL STOP</tt> character (U+002E). Later versions are nume | separated by the <tt>FULL STOP</tt> character (U+002E). Later versions are nume | |||
rically higher than former versions, with the major version being more significa | rically higher than former versions, with the major version being more significa | |||
nt than the minor version. A version value is produced by the ABNF</t> | nt than the minor version. A version value is produced by the following ABNF:</t | |||
> | ||||
<!--[rfced] Should Figure 5 have a title? Please review, and provide | ||||
a title if desired. | ||||
--> | ||||
<figure> | ||||
<sourcecode name="" type="abnf"><![CDATA[ | <sourcecode name="" type="abnf"><![CDATA[ | |||
jsversion = 1*DIGIT "." 1*DIGIT | jsversion = 1*DIGIT "." 1*DIGIT | |||
]]></sourcecode> | ]]></sourcecode> | |||
<t>Differing major version values indicate substantial differences in | </figure> | |||
JSContact semantics and format. Implementations <bcp14>MUST</bcp14> be prepared | <t>Differing major version values indicate substantial differences in | |||
that property definitions and other JSContact elements differ in a backwards-in | JSContact semantics and format. Implementations <bcp14>MUST</bcp14> be prepared | |||
compatible manner.</t> | for property definitions and other JSContact elements that differ in a backward | |||
<t>Differing minor version values indicate additions that enrich JSCon | s-incompatible manner.</t> | |||
tact data, but do not introduce backwards-incompatible changes. Typically, thes | <t>Differing minor version values indicate additions that enrich JSCon | |||
e are new property enum values or properties with narrow semantic scope. A new | tact data but do not introduce backwards-incompatible changes. Typically, these | |||
minor version <bcp14>MUST NOT</bcp14> require implementations to change their pr | are new property enum values or properties with a narrow semantic scope. A new | |||
ocessing of JSContact data. Changing the major version number resets the minor | minor version <bcp14>MUST NOT</bcp14> require implementations to change their p | |||
version number to zero.</t> | rocessing of JSContact data. Changing the major version number resets the minor | |||
version number to zero.</t> | ||||
</section> | </section> | |||
<section anchor="current-version"> | <section anchor="current-version"> | |||
<name>Current Version</name> | <name>Current Version</name> | |||
<t>This specification registers JSContact version value <tt>1.0</tt> ( <xref target="tab-iana-version-registry"/>).</t> | <t>This specification registers JSContact version value <tt>1.0</tt> ( <xref target="tab-iana-version-registry"/>).</t> | |||
</section> | </section> | |||
</section> | </section> | |||
</section> | </section> | |||
<section anchor="card" numbered="true" toc="default"> | <section anchor="card" numbered="true" toc="default"> | |||
<name>Card</name> | <name>Card</name> | |||
<t>This section defines the JSContact object type Card. A Card stores cont act information, typically that of a person, organization or company.</t> | <t>This section defines the JSContact object type Card. A Card stores cont act information, typically that of a person, organization, or company.</t> | |||
<t>Its media type is defined in <xref target="iana-media-type"/>.</t> | <t>Its media type is defined in <xref target="iana-media-type"/>.</t> | |||
<t><xref target="example-card"/> basic Card for the person "John Doe". A s the object is the topmost object in the JSON data it has the <tt>@type</tt> pr operty set according to the rules defined <xref target="prop-type"/>.</t> | <t><xref target="example-card"/> shows a basic Card for the person "John D oe". As the object is the topmost object in the JSON data, it has the <tt>@type </tt> property set according to the rules defined in <xref target="prop-type"/>. </t> | |||
<figure anchor="example-card"> | <figure anchor="example-card"> | |||
<name>Example of a basic <tt>Card</tt></name> | <name>Example of a Basic <tt>Card</tt></name> | |||
<sourcecode name="" type="json"><![CDATA[ | <sourcecode name="" type="json"><![CDATA[ | |||
{ | { | |||
"@type": "Card", | "@type": "Card", | |||
"version": "1.0", | "version": "1.0", | |||
"uid": "22B2C7DF-9120-4969-8460-05956FE6B065", | "uid": "22B2C7DF-9120-4969-8460-05956FE6B065", | |||
"kind": "individual", | "kind": "individual", | |||
"name": { | "name": { | |||
"components": [ | "components": [ | |||
{ "kind": "given", "value": "John" }, | { "kind": "given", "value": "John" }, | |||
{ "kind": "surname", "value": "Doe" } | { "kind": "surname", "value": "Doe" } | |||
], | ], | |||
"isOrdered": true | "isOrdered": true | |||
} | } | |||
} | } | |||
]]></sourcecode> | ]]></sourcecode> | |||
</figure> | </figure> | |||
<section anchor="metadata-properties" numbered="true" toc="default"> | <section anchor="metadata-properties" numbered="true" toc="default"> | |||
<name>Metadata Properties</name> | <name>Metadata Properties</name> | |||
<t>This section defines properties about this instance of a Card, such a s its unique identifier, its creation date, how it relates to other Cards and ot her metadata information.</t> | <t>This section defines properties about this instance of a Card such as its unique identifier, its creation date, and how it relates to other Cards and other metadata information.</t> | |||
<section anchor="cardtype" numbered="true" toc="default"> | <section anchor="cardtype" numbered="true" toc="default"> | |||
<name>@type</name> | <name>@type</name> | |||
<t>Type: <tt>String</tt> (mandatory).</t> | <t>Type: <tt>String</tt> (mandatory)</t> | |||
<t>This <bcp14>MUST</bcp14> be <tt>Card</tt>, if set.</t> | <t>This <bcp14>MUST</bcp14> be <tt>Card</tt>, if set.</t> | |||
</section> | </section> | |||
<section anchor="prop-version" numbered="true" toc="default"> | <section anchor="prop-version" numbered="true" toc="default"> | |||
<name>version</name> | <name>version</name> | |||
<t>Type: <tt>String</tt> (mandatory).</t> | <t>Type: <tt>String</tt> (mandatory)</t> | |||
<t>Specifies the JSContact version used to define this Card. The valu | <t>This specifies the JSContact version used to define the Card. The | |||
e <bcp14>MUST</bcp14> be one of the IANA-registered JSContact Enum Values for th | value <bcp14>MUST</bcp14> be one of the IANA-registered JSContact Enum Values fo | |||
e <tt>version</tt> property. Also see <xref target="current-version"/>.</t> | r the <tt>version</tt> property. Also see <xref target="current-version"/>.</t> | |||
<figure anchor="example-version"> | <figure anchor="example-version"> | |||
<name><tt>version</tt> example</name> | <name><tt>version</tt> Example</name> | |||
<sourcecode name="" type="json"><![CDATA[ | <sourcecode name="" type="json"><![CDATA[ | |||
"version": "1.0" | "version": "1.0" | |||
]]></sourcecode> | ]]></sourcecode> | |||
</figure> | </figure> | |||
</section> | </section> | |||
<section anchor="created" numbered="true" toc="default"> | <section anchor="created" numbered="true" toc="default"> | |||
<name>created</name> | <name>created</name> | |||
<t>Type: <tt>UTCDateTime</tt> (optional).</t> | <t>Type: <tt>UTCDateTime</tt> (optional)</t> | |||
<t>The date and time when this Card was created.</t> | <t>The date and time when the Card was created.</t> | |||
<figure anchor="example-created"> | <figure anchor="example-created"> | |||
<name><tt>created</tt> example</name> | <name><tt>created</tt> Example</name> | |||
<sourcecode name="" type="json"><![CDATA[ | <sourcecode name="" type="json"><![CDATA[ | |||
"created": "2022-09-30T14:35:10Z" | "created": "2022-09-30T14:35:10Z" | |||
]]></sourcecode> | ]]></sourcecode> | |||
</figure> | </figure> | |||
</section> | </section> | |||
<section anchor="kind" numbered="true" toc="default"> | <section anchor="kind" numbered="true" toc="default"> | |||
<name>kind</name> | <name>kind</name> | |||
<t>Type: <tt>String</tt> (optional, default: <tt>individual</tt>). Th | <t>Type: <tt>String</tt> (optional; default: <tt>individual</tt>)</t> | |||
e kind of the entity the Card represents.</t> | <t>The kind of the entity the Card represents.</t> | |||
<t>The <xref target="enumerated-values">enumerated</xref> values are:< /t> | <t>The <xref target="enumerated-values">enumerated</xref> values are:< /t> | |||
<ul spacing="normal"> | <ul spacing="normal"> | |||
<!--[rfced] In Section 2.1.4 under the definition of "device", we made | ||||
the examples singular since "device" is singular. If you prefer | ||||
otherwise, please let us know. | ||||
Original: | ||||
* device: a device, such as appliances, computers, or network | ||||
elements | ||||
Current: | ||||
* device: a device such as an appliance, a computer, or a network | ||||
element | ||||
--> | ||||
<li><tt>individual</tt>: a single person</li> | <li><tt>individual</tt>: a single person</li> | |||
<li><tt>group</tt>: a group person of persons or entities</li> | <li><tt>group</tt>: a group of people or entities</li> | |||
<li><tt>org</tt>: an organization</li> | <li><tt>org</tt>: an organization</li> | |||
<li><tt>location</tt>: a named location</li> | <li><tt>location</tt>: a named location</li> | |||
<li><tt>device</tt>: a device, such as appliances, computers, or net work elements</li> | <li><tt>device</tt>: a device such as an appliance, a computer, or a network element</li> | |||
<li><tt>application</tt>: a software application</li> | <li><tt>application</tt>: a software application</li> | |||
</ul> | </ul> | |||
<figure anchor="example-kind"> | <figure anchor="example-kind"> | |||
<name><tt>kind</tt> example</name> | <name><tt>kind</tt> Example</name> | |||
<sourcecode name="" type="json"><![CDATA[ | <sourcecode name="" type="json"><![CDATA[ | |||
"kind": "individual" | "kind": "individual" | |||
]]></sourcecode> | ]]></sourcecode> | |||
</figure> | </figure> | |||
</section> | </section> | |||
<section anchor="language" numbered="true" toc="default"> | <section anchor="language" numbered="true" toc="default"> | |||
<name>language</name> | <name>language</name> | |||
<t>Type: <tt>String</tt> (optional).</t> | <t>Type: <tt>String</tt> (optional)</t> | |||
<t>This is the language tag, as defined in <xref target="RFC5646"/>, t | <t>This is the language tag, as defined in <xref target="RFC5646"/>, t | |||
hat best describes the language used for text in the Card, optionally including | hat best describes the language used for text in the Card, optionally including | |||
additional information such as the script. Note that values <bcp14>MAY</bcp14> | additional information such as the script. Note that values <bcp14>MAY</bcp14> | |||
be localized in the <tt>localizations</tt> property <xref target="localizations" | be localized in the <xref target="localizations"><tt>localizations</tt></xref> | |||
/>.</t> | property.</t> | |||
<figure anchor="example-language"> | <figure anchor="example-language"> | |||
<name><tt>language</tt> example</name> | <name><tt>language</tt> Example</name> | |||
<sourcecode name="" type="json"><![CDATA[ | <sourcecode name="" type="json"><![CDATA[ | |||
"language": "de-AT" | "language": "de-AT" | |||
]]></sourcecode> | ]]></sourcecode> | |||
</figure> | </figure> | |||
</section> | </section> | |||
<section anchor="members" numbered="true" toc="default"> | <section anchor="members" numbered="true" toc="default"> | |||
<name>members</name> | <name>members</name> | |||
<t>Type: <tt>String[Boolean]</tt> (optional).</t> | <t>Type: <tt>String[Boolean]</tt> (optional)</t> | |||
<t>This identifies the set of Cards that are members of this group Car | <t>This identifies the set of Cards that are members of this group Car | |||
d. Each key in the set is the <tt>uid</tt> property value of the member, each b | d. Each key in the set is the <tt>uid</tt> property value of the member, and ea | |||
oolean value <bcp14>MUST</bcp14> be <tt>true</tt>. If this property is set, then | ch boolean value <bcp14>MUST</bcp14> be <tt>true</tt>. If this property is set, | |||
the value of the <tt>kind</tt> property <bcp14>MUST</bcp14> be <tt>group</tt>.< | then the value of the <tt>kind</tt> property <bcp14>MUST</bcp14> be <tt>group</t | |||
/t> | t>.</t> | |||
<t>The opposite is not true. A group Card will usually contain the <t | <t>The opposite is not true. A group Card will usually contain the <t | |||
t>members</tt> property to specify the members of the group, but it is not requi | t>members</tt> property to specify the members of the group, but it is not requi | |||
red to. A group Card without the <tt>members</tt> property can be considered an | red to. A group Card without the <tt>members</tt> property can be considered an | |||
abstract grouping, or one whose members are known empirically (e.g., "IETF Par | abstract grouping or one whose members are known empirically (e.g., "IETF Part | |||
ticipants").</t> | icipants").</t> | |||
<figure anchor="example-members"> | <figure anchor="example-members"> | |||
<name><tt>members</tt> example</name> | <name><tt>members</tt> Example</name> | |||
<sourcecode name="" type="json"><![CDATA[ | <sourcecode name="" type="json"><![CDATA[ | |||
"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 | |||
} | } | |||
]]></sourcecode> | ]]></sourcecode> | |||
</figure> | </figure> | |||
</section> | </section> | |||
<section anchor="prodId" numbered="true" toc="default"> | <section anchor="prodId" numbered="true" toc="default"> | |||
<name>prodId</name> | <name>prodId</name> | |||
<t>Type: <tt>String</tt> (optional).</t> | <t>Type: <tt>String</tt> (optional)</t> | |||
<t>The identifier for the product that created the Card. If set, the value <bcp14>MUST</bcp14> be at least one character long.</t> | <t>The identifier for the product that created the Card. If set, the value <bcp14>MUST</bcp14> be at least one character long.</t> | |||
<figure anchor="example-prodId"> | <figure anchor="example-prodId"> | |||
<name><tt>prodId</tt> example</name> | <name><tt>prodId</tt> Example</name> | |||
<sourcecode name="" type="json"><![CDATA[ | <sourcecode name="" type="json"><![CDATA[ | |||
"prodId": "ACME Contacts App version 1.23.5" | "prodId": "ACME Contacts App version 1.23.5" | |||
]]></sourcecode> | ]]></sourcecode> | |||
</figure> | </figure> | |||
</section> | </section> | |||
<section anchor="relatedTo" numbered="true" toc="default"> | <section anchor="relatedTo" numbered="true" toc="default"> | |||
<name>relatedTo</name> | <name>relatedTo</name> | |||
<t>Type: <tt>String[Relation]</tt> (optional).</t> | <t>Type: <tt>String[Relation]</tt> (optional)</t> | |||
<t>Relates the object to other Cards. This is represented as a map, w | <t>This relates the object to other Cards. It is represented as a map | |||
here each key is the <tt>uid</tt> of the related Card and the value defines the | , where each key is the <tt>uid</tt> of the related Card, and the value defines | |||
relation. The Relation object has the following properties:</t> | the relation. The Relation object has the following properties:</t> | |||
<ul spacing="normal"> | <dl spacing="normal"> | |||
<li>@type: <tt>String</tt>. | <dt>@type:</dt><dd> <tt>String</tt>. | |||
This <bcp14>MUST</bcp14> be <tt>Relation</tt>, if set. | This <bcp14>MUST</bcp14> be <tt>Relation</tt>, if set. | |||
</li> | </dd> | |||
<li> | <dt>relation:</dt><dd><t> <tt>String[Boolean]</tt> (optional; defaul | |||
<t>relation: <tt>String[Boolean]</tt> (optional, default: empty Ob | t: empty Object). Describes how the linked object is related to the linking obje | |||
ject) | ct. The relation is defined as a set of relation types. The key in the set def | |||
Describes how the linked object is related to the linking object | ines the relation type; the value for each key in the set <bcp14>MUST</bcp14> be | |||
. The relation is defined as a set of relation types. The key in the set defin | <tt>true</tt>. The relationship between the two objects is undefined if the se | |||
es the relation type, the value for each key in the set <bcp14>MUST</bcp14> be < | t is empty.</t> | |||
tt>true</tt>. The relationship between the two objects is undefined if the set | <t>The initial list of <xref target="enumerated-values">enumerated</ | |||
is empty.</t> | xref> relation types matches the IANA-registered <xref target="IANA-vCard">TYPE< | |||
<t>The initial list of <xref target="enumerated-values">enumerated | /xref> parameter values of the vCard RELATED property (<xref target="RFC6350" se | |||
</xref> relation types matches the IANA-registered <xref target="IANAvCard">TYPE | ction="6.6.6"/>):</t> | |||
parameter</xref> values of the vCard RELATED property (<xref target="RFC6350" s | ||||
ection="6.6.6"/>):</t> | <!--[rfced] In Section 2.1.8, we updated the order of the enumerated | |||
relation types list by moving "co-resident" and "co-worker" above | ||||
"colleague". The list is now in alphabetical order. Please let us | ||||
know of any objections. | ||||
There are several other lists in the document. Please review and let | ||||
us know if any other terms should be placed in alphabetical order. | ||||
--> | ||||
<ul> | <ul> | |||
<li> | <li> | |||
<tt>acquaintance</tt> | <tt>acquaintance</tt> | |||
</li> | </li> | |||
<li> | <li> | |||
<tt>agent</tt> | <tt>agent</tt> | |||
</li> | </li> | |||
<li> | <li> | |||
<tt>child</tt> | <tt>child</tt> | |||
</li> | </li> | |||
<li> | <li> | |||
<tt>colleague</tt> | <tt>co-resident</tt> | |||
</li> | </li> | |||
<li> | <li> | |||
<tt>contact</tt> | <tt>co-worker</tt> | |||
</li> | </li> | |||
<li> | <li> | |||
<tt>co-resident</tt> | <tt>colleague</tt> | |||
</li> | </li> | |||
<li> | <li> | |||
<tt>co-worker</tt> | <tt>contact</tt> | |||
</li> | </li> | |||
<li> | <li> | |||
<tt>crush</tt> | <tt>crush</tt> | |||
</li> | </li> | |||
<li> | <li> | |||
<tt>date</tt> | <tt>date</tt> | |||
</li> | </li> | |||
<li> | <li> | |||
<tt>emergency</tt> | <tt>emergency</tt> | |||
</li> | </li> | |||
skipping to change at line 575 ¶ | skipping to change at line 854 ¶ | |||
<li> | <li> | |||
<tt>sibling</tt> | <tt>sibling</tt> | |||
</li> | </li> | |||
<li> | <li> | |||
<tt>spouse</tt> | <tt>spouse</tt> | |||
</li> | </li> | |||
<li> | <li> | |||
<tt>sweetheart</tt> | <tt>sweetheart</tt> | |||
</li> | </li> | |||
</ul> | </ul> | |||
</li> | </dd></dl> | |||
</ul> | ||||
<figure anchor="example-relatedto"> | <figure anchor="example-relatedto"> | |||
<name><tt>relatedTo</tt> example</name> | <name><tt>relatedTo</tt> Example</name> | |||
<sourcecode name="" type="json"><![CDATA[ | <sourcecode name="" type="json"><![CDATA[ | |||
"relatedTo": { | "relatedTo": { | |||
"urn:uuid:f81d4fae-7dec-11d0-a765-00a0c91e6bf6": { | "urn:uuid:f81d4fae-7dec-11d0-a765-00a0c91e6bf6": { | |||
"relation": { | "relation": { | |||
"friend": true | "friend": true | |||
} | } | |||
}, | }, | |||
"8cacdfb7d1ffdb59@example.com": { | "8cacdfb7d1ffdb59@example.com": { | |||
"relation": {} | "relation": {} | |||
} | } | |||
} | } | |||
]]></sourcecode> | ]]></sourcecode> | |||
</figure> | </figure> | |||
</section> | </section> | |||
<section anchor="uid" numbered="true" toc="default"> | <section anchor="uid" numbered="true" toc="default"> | |||
<name>uid</name> | <name>uid</name> | |||
<t>Type: <tt>String</tt> (mandatory).</t> | <t>Type: <tt>String</tt> (mandatory)</t> | |||
<t>An identifier, used to associate the object as the same across diff | <t>An identifier that is used to associate the object as the same acro | |||
erent systems, address books and views. The value <bcp14>SHOULD</bcp14> be a UR | ss different systems, address books, and views. The value <bcp14>SHOULD</bcp14> | |||
N <xref target="RFC8141"/> but for compatibility with <xref target="RFC6350"/> i | be a URN <xref target="RFC8141"/>, but for compatibility with <xref target="RFC | |||
t <bcp14>MAY</bcp14> also be a URI <xref target="RFC3986"/> or free-text value. | 6350"/>, it <bcp14>MAY</bcp14> also be a URI <xref target="RFC3986"/> or free-te | |||
The value of the URN <bcp14>SHOULD</bcp14> be in the <tt>uuid</tt> namespace <x | xt value. The value of the URN <bcp14>SHOULD</bcp14> be in the <tt>uuid</tt> na | |||
ref target="RFC4122" format="default"/>. As of this writing, a <xref target="I- | mespace <xref target="RFC4122" format="default"/>. | |||
D.ietf-uuidrev-rfc4122bis">revision</xref> of the UUID standard document is bein | ||||
g worked on and is likely to introduce new UUID versions and best practices to g | <!--[rfced] FYI: For clarity and ease of reading, we added a reference | |||
enerate global unique identifiers. Implementors <bcp14>SHOULD</bcp14> follow an | to RFC 4122 as shown below. | |||
y recommendations described there. Until then, implementations <bcp14>SHOULD</b | ||||
cp14> generate identifiers using the random or pseudo-random UUID version descri | Original: | |||
bed in <xref target="RFC4122" section="4.4"/>.</t> | As of this writing, a revision [I-D.ietf-uuidrev-rfc4122bis] of the | |||
UUID standard document is being worked on and is likely to | ||||
introduce new UUID versions and best practices to generate global | ||||
unique identifiers. | ||||
Current: | ||||
As of this writing, a revision [UUID] of the Universally Unique | ||||
Identifier (UUID) Standards Track document [RFC4122] is in | ||||
progress and will likely introduce new UUID versions and | ||||
best practices for generating global unique identifiers [UUID]. | ||||
--> | ||||
As of this writing, a <xref target="I-D.ietf-uuidrev-rfc4122bis">revision</xref> | ||||
of the Universally Unique Identifier (UUID) Standards Track document <xref targ | ||||
et="RFC4122" format="default"/> is in progress and will likely introduce new UUI | ||||
D versions and best practices to generate global unique identifiers. Implemento | ||||
rs <bcp14>SHOULD</bcp14> follow any recommendations described there. Until then | ||||
, implementations <bcp14>SHOULD</bcp14> generate identifiers using the random or | ||||
pseudorandom UUID version described in <xref target="RFC4122" section="4.4"/>.< | ||||
/t> | ||||
<figure anchor="example-uid"> | <figure anchor="example-uid"> | |||
<name><tt>uid</tt> example</name> | <name><tt>uid</tt> Example</name> | |||
<sourcecode name="" type="json"><![CDATA[ | <sourcecode name="" type="json"><![CDATA[ | |||
"uid": "urn:uuid:f81d4fae-7dec-11d0-a765-00a0c91e6bf6" | "uid": "urn:uuid:f81d4fae-7dec-11d0-a765-00a0c91e6bf6" | |||
]]></sourcecode> | ]]></sourcecode> | |||
</figure> | </figure> | |||
</section> | </section> | |||
<section anchor="updated" numbered="true" toc="default"> | <section anchor="updated" numbered="true" toc="default"> | |||
<name>updated</name> | <name>updated</name> | |||
<t>Type: <tt>UTCDateTime</tt> (optional).</t> | <t>Type: <tt>UTCDateTime</tt> (optional)</t> | |||
<t>The date and time when the data in this Card was last modified.</t> | <t>The date and time when the data in the Card was last modified.</t> | |||
<figure anchor="example-updated"> | <figure anchor="example-updated"> | |||
<name><tt>updated</tt> example</name> | <name><tt>updated</tt> Example</name> | |||
<sourcecode name="" type="json"><![CDATA[ | <sourcecode name="" type="json"><![CDATA[ | |||
"updated": "2021-10-31T22:27:10Z" | "updated": "2021-10-31T22:27:10Z" | |||
]]></sourcecode> | ]]></sourcecode> | |||
</figure> | </figure> | |||
</section> | </section> | |||
</section> | </section> | |||
<section anchor="name-and-organization-properties" numbered="true" toc="de fault"> | <section anchor="name-and-organization-properties" numbered="true" toc="de fault"> | |||
<name>Name and Organization Properties</name> | <name>Name and Organization Properties</name> | |||
<t>This section defines properties that name the entity represented by t his Card, its related organizations and roles, as well as how to refer the entit y represented by this Card in spoken or written language.</t> | <t>This section defines properties that name the entity represented by t he Card and its related organizations and roles. It also describes how to refer to the entity represented by the Card in spoken or written language.</t> | |||
<section anchor="name" numbered="true" toc="default"> | <section anchor="name" numbered="true" toc="default"> | |||
<name>name</name> | <name>name</name> | |||
<t>Type: <tt>Name</tt> (optional).</t> | <t>Type: <tt>Name</tt> (optional)</t> | |||
<t>The name of the entity represented by this Card. This can be any t | <t>The name of the entity represented by the Card. This can be any ty | |||
ype of name, e.g., it can but need not be the legal name of a person.</t> | pe of name, e.g., it can, but need not, be the legal name of a person.</t> | |||
<section> | <section> | |||
<name>Name object</name> | <name>Name Object</name> | |||
<t>A Name object has the following properties</t> | <t>A Name object has the following properties:</t> | |||
<ul spacing="normal"> | <dl spacing="normal"> | |||
<li>@type: <tt>String</tt>. | <dt>@type:</dt><dd> <tt>String</tt>. | |||
This <bcp14>MUST</bcp14> be <tt>Name</tt>, if set. | This <bcp14>MUST</bcp14> be <tt>Name</tt>, if set. | |||
</li> | </dd> | |||
<li> | <dt>components:</dt><dd><t> <tt>NameComponent[]</tt> (optional). | |||
<t>components: <tt>NameComponent[]</tt> (optional). The <xref t | The <xref target="namecomponent">components</xref> making up this name. This pr | |||
arget="namecomponent">components</xref> making up this name. This property <bcp | operty <bcp14>MUST</bcp14> be set if the <tt>full</tt> property is not set; othe | |||
14>MUST</bcp14> be set if the <tt>full</tt> property is not set, otherwise it <b | rwise, it <bcp14>SHOULD</bcp14> be set. The component list <bcp14>MUST</bcp14> | |||
cp14>SHOULD</bcp14> be set. The component list <bcp14>MUST</bcp14> have at leas | have at least one entry having a different <tt>kind</tt> than <tt>separator</tt> | |||
t one entry having a different <tt>kind</tt> than <tt>separator</tt>.</t> | .</t> | |||
<t>Name components <bcp14>SHOULD</bcp14> be ordered such that th | <t>Name components <bcp14>SHOULD</bcp14> be ordered such that wh | |||
eir values joined as a String produce a valid full name of this entity. If so, | en their values are joined as a String, a valid full name of the entity is produ | |||
implementations <bcp14>MUST</bcp14> set the <tt>isOrdered</tt> property value to | ced. If so, implementations <bcp14>MUST</bcp14> set the <tt>isOrdered</tt> prop | |||
<tt>true</tt>.</t> | erty value to <tt>true</tt>.</t> | |||
<t>If the name components are ordered, then the <tt>defaultSepar | <t>If the name components are ordered, then the <tt>defaultSepar | |||
ator</tt> property and name components of kind <tt>separator</tt> give guidance | ator</tt> property and name components of kind <tt>separator</tt> give guidance | |||
on what characters to insert between components, but implementations are free to | on what characters to insert between components, but implementations are free to | |||
choose any others. In lack of a separator, inserting a single Space character | choose any others. When lacking a separator, inserting a single space characte | |||
in between name component values is a good choice.</t> | r in between the name component values is a good choice.</t> | |||
<t>If instead the name components follow no particular order, th | <t>If, instead, the name components follow no particular order, | |||
en the <tt>isOrdered</tt> property value <bcp14>MUST</bcp14> be <tt>false</tt>, | then the <tt>isOrdered</tt> property value <bcp14>MUST</bcp14> be <tt>false</tt> | |||
the <tt>components</tt> property <bcp14>MUST NOT</bcp14> contain a NameComponent | , the <tt>components</tt> property <bcp14>MUST NOT</bcp14> contain a NameCompone | |||
of kind <tt>separator</tt> and the <tt>defaultSeparator</tt> property <bcp14>MU | nt of kind <tt>separator</tt>, and the <tt>defaultSeparator</tt> property <bcp14 | |||
ST NOT</bcp14> be set.</t> | >MUST NOT</bcp14> be set.</t> | |||
<t><xref target="example-name-twoword"/> is an example for the n | <t><xref target="example-name-twoword"/> shows an example for th | |||
ame "Vincent van Gogh". Note how a single name component value may consist of m | e name "Vincent van Gogh". Note how a single name component value may consist o | |||
ultiple words. <xref target="example-name-surname2"/> illustrates a name with a | f multiple words.</t> | |||
second surname, such as a Spanish name. Additional examples are shown in <xref | ||||
target="example-name-sortas"/> and <xref target="example-localizations-replace" | ||||
/>.</t> | ||||
<figure anchor="example-name-twoword"> | <figure anchor="example-name-twoword"> | |||
<name>Example for a surname with two words</name> | <name>Example of a Surname with Two Words</name> | |||
<sourcecode name="" type="json"><![CDATA[ | <sourcecode name="" type="json"><![CDATA[ | |||
"name": { | "name": { | |||
"components": [ | "components": [ | |||
{ "kind": "given", "value": "Vincent" }, | { "kind": "given", "value": "Vincent" }, | |||
{ "kind": "surname", "value": "van Gogh" } | { "kind": "surname", "value": "van Gogh" } | |||
], | ], | |||
"isOrdered": true | "isOrdered": true | |||
} | } | |||
]]></sourcecode> | ]]></sourcecode> | |||
</figure> | </figure> | |||
<figure anchor="example-name-surname2"> | ||||
<name>Example for a second surname</name> | <!--[rfced] FYI: The text that describes Figure 16 was located above | |||
Figure 15, so we placed it above Figure 16 instead. The update is | ||||
shown in Section 2.2.1.1. | ||||
--> | ||||
<t> | ||||
<xref target="example-name-surname2"/> illustrates a name with a second surname | ||||
such as a Spanish name. Additional examples are shown in Figures <xref target=" | ||||
example-name-sortas" format="counter"/> and <xref target="example-localizations- | ||||
replace" format="counter"/>.</t> | ||||
<figure anchor="example-name-surname2"> | ||||
<name>Example of a Second Surname</name> | ||||
<sourcecode name="" type="json"><![CDATA[ | <sourcecode name="" type="json"><![CDATA[ | |||
"name": { | "name": { | |||
"components": [ | "components": [ | |||
{ "kind": "given", "value": "Diego" }, | { "kind": "given", "value": "Diego" }, | |||
{ "kind": "surname", "value": "Rivera" }, | { "kind": "surname", "value": "Rivera" }, | |||
{ "kind": "surname2", "value": "Barrientos" } | { "kind": "surname2", "value": "Barrientos" } | |||
], | ], | |||
"isOrdered": true | "isOrdered": true | |||
} | } | |||
]]></sourcecode> | ]]></sourcecode> | |||
</figure> | </figure> | |||
</li> | </dd> | |||
<li>isOrdered: <tt>Boolean</tt> (optional, default: <tt>false</tt> | <dt>isOrdered:</dt><dd> <tt>Boolean</tt> (optional; default: <tt>f | |||
). This indicates if the name component sequence in the <tt>components</tt> pro | alse</tt>). Indicates if the name component sequence in the <tt>components</tt> | |||
perty is ordered.</li> | property is ordered.</dd> | |||
<li>defaultSeparator: <tt>String</tt> (optional). | <dt>defaultSeparator:</dt><dd> <tt>String</tt> (optional). | |||
The default separator to insert between name component values wh | The default separator to insert between name component values when | |||
en concatenating all name component values to a single String. Also see the def | concatenating all name component values to a single String. | |||
inition of the <tt>separator</tt> kind for the NameComponent object. This prope | ||||
rty <bcp14>MUST NOT</bcp14> be set if the Name <tt>isOrdered</tt> property value | <!--[rfced] FYI: For ease, we added links to Sections 2.2.1.2 | |||
is <tt>false</tt> or if the <tt>components</tt> property is not set.</li> | (NameComponent) and 2.5.1.2 (AddressComponent) in the text | |||
<li> | shown below. If any further updates are needed, please let us | |||
<t>full: <tt>String</tt> (optional). | know. | |||
This is the full name representation of this Name. This property <b | ||||
cp14>MUST</bcp14> be set if the <tt>components</tt> property is not set.</t> | Section 2.2.1.1 | |||
Original: | ||||
Also see the definition of the separator kind for | ||||
the NameComponent object. | ||||
Current: | ||||
Also see the definition of the separator kind for | ||||
the NameComponent (Section 2.2.1.2) object. | ||||
... | ||||
Section 2.5.1.1 | ||||
Original: | ||||
Also see the definition of the separator kind | ||||
for the AddressComponent object. | ||||
Current: | ||||
Also see the definition of the separator kind | ||||
for the AddressComponent (Section 2.5.1.2) object. | ||||
--> | ||||
Also see the definition of the <tt>separator</tt> kind for the <xre | ||||
f target="namecomponent">NameComponent</xref> object. This property <bcp14>MUST | ||||
NOT</bcp14> be set if the Name <tt>isOrdered</tt> property value is <tt>false</ | ||||
tt> or if the <tt>components</tt> property is not set.</dd> | ||||
<dt>full:</dt><dd><t><tt>String</tt> (optional). | ||||
The full name representation of the Name. This property <bcp14>MUST | ||||
</bcp14> be set if the <tt>components</tt> property is not set.</t> | ||||
<figure anchor="example-full"> | <figure anchor="example-full"> | |||
<name><tt>full</tt> example</name> | <name><tt>full</tt> Example</name> | |||
<sourcecode name="" type="json"><![CDATA[ | <sourcecode name="" type="json"><![CDATA[ | |||
"full": "Mr. John Q. Public, Esq." | "full": "Mr. John Q. Public, Esq." | |||
]]></sourcecode> | ]]></sourcecode> | |||
</figure> | </figure> | |||
</li> | </dd> | |||
<li> | <dt> | |||
<t>sortAs: <tt>String[String]</tt> (optional).</t> | sortAs:</dt><dd><t> <tt>String[String]</tt> (optional). Defines | |||
<t>This defines how this name lexicographically sorts in relatio | how the name lexicographically sorts in relation to other names when compared by | |||
n to other names when compared by a name component type. The key in the map def | a name component type. The key in the map defines the name component type. Th | |||
ines the name component type. The value for that key defines the verbatim strin | e value for that key defines the verbatim string to compare when sorting by the | |||
g to compare when sorting by this name component type. Absence of a key indicat | name component type. Absence of a key indicates that the name component type <b | |||
es that this name component type <bcp14>SHOULD NOT</bcp14> be considered during | cp14>SHOULD NOT</bcp14> be considered during sort. Sorting by that missing name | |||
sort. Sorting by that missing name component type or if the <tt>sortAs</tt> pro | component type, or if the <tt>sortAs</tt> property is not set, is implementatio | |||
perty is not set is implementation-specific. This property <bcp14>MUST NOT</bcp | n-specific. This property <bcp14>MUST NOT</bcp14> be set if the <tt>components< | |||
14> be set if the <tt>components</tt> property is not set.</t> | /tt> property is not set.</t> | |||
<t>Each key in the map <bcp14>MUST</bcp14> be a valid name compo | <t>Each key in the map <bcp14>MUST</bcp14> be a valid name compo | |||
nent type value as defined for the <tt>kind</tt> property of the NameComponent o | nent type value as defined for the <tt>kind</tt> property of the NameComponent o | |||
bject (see below). For each key in the map there <bcp14>MUST</bcp14> exist at l | bject (see below). For each key in the map, there <bcp14>MUST</bcp14> exist at | |||
east one NameComponent object having that type in the <tt>components</tt> proper | least one NameComponent object that has the type in the <tt>components</tt> prop | |||
ty of this name.</t> | erty of the name.</t> | |||
<t><xref target="example-name-sortas"/> illustrates the use of s | <t><xref target="example-name-sortas"/> illustrates the use of s | |||
ortAs. The property value indicates that the middle name followed by both surna | ortAs. The property value indicates that the middle name followed by both surna | |||
mes should be used when sorting this name by surname. The absence of the <tt>mi | mes should be used when sorting the name by surname. The absence of <tt>middle< | |||
ddle</tt> indicates that the middle name on its own should be disregarded during | /tt> indicates that the middle name on its own should be disregarded during sort | |||
sort. Even though the name only contains one name component for the given name | . Even though the name only contains one name component for the given name, the | |||
, the sortAs property still explicitly defines how to sort by given name as othe | sortAs property still explicitly defines how to sort by the given name; otherwi | |||
rwise sorting by it would be undefined.</t> | se, sorting by it would be undefined.</t> | |||
</li> | </dd> | |||
<li> | <dt> | |||
<t>phoneticScript: <tt>String</tt> (optional). | phoneticScript:</dt><dd> <tt>String</tt> (optional). | |||
The script used in the value of the NameComponent <tt>phonetic</ | The script used in the value of the NameComponent <tt>phonetic</ | |||
tt> property. Also see <xref target="prop-phonetic"/>. See <xref target="examp | tt> property. See <xref target="prop-phonetic"/> for more information and <xref | |||
le-name-phonetic"/> for an example.</t> | target="example-name-phonetic"/> for an example.</dd> | |||
</li> | <dt> | |||
<li> | phoneticSystem:</dt><dd><t> <tt>String</tt> (optional). | |||
<t>phoneticSystem: <tt>String</tt> (optional). | The phonetic system used in the NameComponent <tt>phonetic</tt> pr | |||
The phonetic system used in the NameComponent <tt>phonetic</tt> pr | operty. See <xref target="prop-phonetic"/> for more information and <xref targe | |||
operty. Also see <xref target="prop-phonetic"/>. See <xref target="exampl | t="example-name-phonetic"/> for an example.</t> | |||
e-name-phonetic"/> for an example.</t> | </dd> | |||
</li> | </dl> | |||
</ul> | ||||
<figure anchor="example-name-sortas"> | <figure anchor="example-name-sortas"> | |||
<name>Example for <tt>sortAs</tt></name> | <name><tt>sortAs</tt> Example</name> | |||
<sourcecode name="" type="json"><![CDATA[ | <sourcecode name="" type="json"><![CDATA[ | |||
"name": { | "name": { | |||
"components": [ | "components": [ | |||
{ "kind": "given", "value": "Robert" }, | { "kind": "given", "value": "Robert" }, | |||
{ "kind": "given2", "value": "Pau" }, | { "kind": "given2", "value": "Pau" }, | |||
{ "kind": "surname", "value": "Shou Chang" } | { "kind": "surname", "value": "Shou Chang" } | |||
], | ], | |||
"sortAs": { | "sortAs": { | |||
"surname": "Pau Shou Chang", | "surname": "Pau Shou Chang", | |||
"given": "Robert" | "given": "Robert" | |||
}, | }, | |||
"isOrdered": true | "isOrdered": true | |||
} | } | |||
]]></sourcecode> | ]]></sourcecode> | |||
</figure> | </figure> | |||
<figure anchor="example-name-phonetic"> | <figure anchor="example-name-phonetic"> | |||
<name>Example for <tt>phonetic</tt> and <tt>localizations</tt></name | <name><tt>phonetic</tt> and <tt>localizations</tt> Example</name> | |||
> | <sourcecode type=""><![CDATA[ | |||
<artwork><![CDATA[ | ||||
{ | { | |||
"@type": "Card", | "@type": "Card", | |||
"language": "zh-Hant", | "language": "zh-Hant", | |||
"name": { | "name": { | |||
"components": [ | "components": [ | |||
{ "kind": "surname", "value": "孫" }, | { "kind": "surname", "value": "孫" }, | |||
{ "kind": "given", "value": "中山" }, | { "kind": "given", "value": "中山" }, | |||
{ "kind": "given2", "value": "文" }, | { "kind": "given2", "value": "文" }, | |||
{ "kind": "given2", "value": "逸仙" } | { "kind": "given2", "value": "逸仙" } | |||
] | ] | |||
skipping to change at line 734 ¶ | skipping to change at line 1059 ¶ | |||
"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="namecomponent"> | <section anchor="namecomponent"> | |||
<name>NameComponent</name> | <name>NameComponent</name> | |||
<t>A NameComponent object has the following properties:</t> | <t>A NameComponent object has the following properties:</t> | |||
<ul spacing="normal"> | <dl spacing="normal"> | |||
<li>@type: <tt>String</tt>. | <dt>@type:</dt><dd> <tt>String</tt>. | |||
This <bcp14>MUST</bcp14> be <tt>NameComponent</tt>, if set. | This <bcp14>MUST</bcp14> be <tt>NameComponent</tt>, if set. | |||
</li> | </dd> | |||
<li>value: <tt>String</tt> (mandatory). | <dt>value:</dt><dd> <tt>String</tt> (mandatory). | |||
The value of this name component. This can be composed of one or multiple words | The value of the name component. This can be composed of one or multiple words | |||
, such as "Poe" or "van Gogh".</li> | such as "Poe" or "van Gogh".</dd> | |||
<li> | <dt>kind:</dt><dd><t> <tt>String</tt> (mandatory). | |||
<t>kind: <tt>String</tt> (mandatory). | The kind of the name component. The <xref target="enumerated-valu | |||
The kind of this name component. The <xref target="enumerated-val | es">enumerated</xref> values are: | |||
ues">enumerated</xref> values are: | ||||
</t> | </t> | |||
<ul spacing="normal"> | <ul spacing="normal"> | |||
<li><tt>title</tt>: an honorific title or prefix, e.g., "Mr", | <li><tt>title</tt>: an honorific title or prefix, e.g., "Mr.", | |||
"Ms", "Dr".</li> | "Ms.", or "Dr.".</li> | |||
<li><tt>given</tt>: a given name, also known as "first name", | <li><tt>given</tt>: a given name, also known as "first name" o | |||
"personal name".</li> | r "personal name".</li> | |||
<li><tt>given2</tt>: a name that appears between the given and | <li><tt>given2</tt>: a name that appears between the given and | |||
surname, such as a middle name or patronymic name.</li> | surname such as a middle name or patronymic name.</li> | |||
<li><tt>surname</tt>: a surname, also known as "last name", "f | <li><tt>surname</tt>: a surname, also known as "last name" or | |||
amily name".</li> | "family name".</li> | |||
<li><tt>surname2</tt>: a secondary surname (used in some cultu res), also known as "maternal surname".</li> | <li><tt>surname2</tt>: a secondary surname (used in some cultu res), also known as "maternal surname".</li> | |||
<li><tt>credential</tt>: a credential, also known as "accredi tation qualifier" or "honorific suffix", e.g., "B.A.", "Esq.".</li> | <li><tt>credential</tt>: a credential, also known as "accredi tation qualifier" or "honorific suffix", e.g., "B.A.", "Esq.".</li> | |||
<li><tt>generation</tt>: a generation marker or qualifier, e.g | <li><tt>generation</tt>: a generation marker or qualifier, e.g | |||
., “Jr.” or “III”.</li> | ., "Jr." or "III".</li> | |||
<li><tt>separator</tt>: a formatting separator between two ord | <li><tt>separator</tt>: a formatting separator between two ord | |||
ered name non-separator components. The <tt>value</tt> property of the componen | ered name non-separator components. The <tt>value</tt> property of the componen | |||
t includes the verbatim separator, for example a hyphen character or even an emp | t includes the verbatim separator, for example, a hyphen character or even an em | |||
ty string. This value has higher precedence than the <tt>defaultSeparator</tt> | pty string. This value has higher precedence than the <tt>defaultSeparator</tt> | |||
property of the Name. Implementations <bcp14>MUST NOT</bcp14> insert two consec | property of the Name. Implementations <bcp14>MUST NOT</bcp14> insert two conse | |||
utive separator components, instead they <bcp14>SHOULD</bcp14> insert a single s | cutive separator components; instead, they <bcp14>SHOULD</bcp14> insert a single | |||
eparator component with the combined value. This component kind <bcp14>MUST NOT | separator component with the combined value. This component kind <bcp14>MUST N | |||
</bcp14> be set if the Name <tt>isOrdered</tt> property value is <tt>false</tt>. | OT</bcp14> be set if the Name <tt>isOrdered</tt> property value is <tt>false</tt | |||
</li> | >.</li> | |||
</ul> | </ul> | |||
</li> | </dd> | |||
<li>phonetic: <tt>String</tt> (optional). This defines how to pro | <dt>phonetic:</dt><dd> <tt>String</tt> (optional). Defines how to | |||
nounce this name component. If this property is set, then at least one of the N | pronounce the name component. If this property is set, then at least one of th | |||
ame object <tt>phoneticSystem</tt> or <tt>phoneticScript</tt> properties <bcp14> | e Name object properties, <tt>phoneticSystem</tt> or <tt>phoneticScript</tt>, <b | |||
MUST</bcp14> be set. Also see <xref target="prop-phonetic"/>.</li> | cp14>MUST</bcp14> be set. Also see <xref target="prop-phonetic"/>.</dd> | |||
</ul> | </dl> | |||
</section> | </section> | |||
<section anchor="nicknames" numbered="true" toc="default"> | <section anchor="nicknames" numbered="true" toc="default"> | |||
<name>nicknames</name> | <name>nicknames</name> | |||
<t>Type: <tt>Id[Nickname]</tt> (optional).</t> | <t>Type: <tt>Id[Nickname]</tt> (optional)</t> | |||
<t>The nicknames of the entity represented by this Card. A Nickname | <t>The nicknames of the entity represented by the Card. A Nickname | |||
object has the following properties:</t> | object has the following properties:</t> | |||
<ul spacing="normal"> | <dl spacing="normal"> | |||
<li>@type: <tt>String</tt>. | <dt>@type:</dt><dd> <tt>String</tt>. | |||
This <bcp14>MUST</bcp14> be <tt>Nickname</tt>, if set. | This <bcp14>MUST</bcp14> be <tt>Nickname</tt>, if set. | |||
</li> | </dd> | |||
<li>name: <tt>String</tt> (mandatory). | <dt>name:</dt><dd> <tt>String</tt> (mandatory). | |||
The nickname. | The nickname. | |||
</li> | </dd> | |||
<li>contexts: <tt>String[Boolean]</tt> (optional) | <dt>contexts:</dt><dd> <tt>String[Boolean]</tt> (optional). | |||
The contexts in which to use this nickname. Also see <xref target="prop-context | The contexts in which to use the nickname. Also see <xref target="prop-contexts | |||
s"/>.</li> | "/>.</dd> | |||
<li>pref: <tt>UnsignedInt</tt> (optional). | <dt>pref:</dt><dd> <tt>UnsignedInt</tt> (optional). | |||
The preference of this nickname in relation to other nicknames. Als | The preference of the nickname in relation to other nicknames. Also | |||
o see <xref target="prop-pref"/>.</li> | see <xref target="prop-pref"/>.</dd> | |||
</ul> | </dl> | |||
<figure anchor="example-nicknames"> | <figure anchor="example-nicknames"> | |||
<name><tt>nicknames</tt> example</name> | <name><tt>nicknames</tt> Example</name> | |||
<sourcecode name="" type="json"><![CDATA[ | <sourcecode name="" type="json"><![CDATA[ | |||
"nicknames": { | "nicknames": { | |||
"k391": { | "k391": { | |||
"name": "Johnny" | "name": "Johnny" | |||
} | } | |||
} | } | |||
]]></sourcecode> | ]]></sourcecode> | |||
</figure> | </figure> | |||
</section> | </section> | |||
</section> | </section> | |||
<section anchor="organizations" numbered="true" toc="default"> | <section anchor="organizations" numbered="true" toc="default"> | |||
<name>organizations</name> | <name>organizations</name> | |||
<t>Type: <tt>Id[Organization]</tt> (optional).</t> | <t>Type: <tt>Id[Organization]</tt> (optional)</t> | |||
<t>The companies or organizations names and units associated with this | <t>The company or organization names and units associated with the Car | |||
Card. An Organization object has the following properties, of which at least o | d. An Organization object has the following properties, of which at least one o | |||
ne of the <tt>name</tt> and <tt>units</tt> properties <bcp14>MUST</bcp14> be set | f the <tt>name</tt> and <tt>units</tt> properties <bcp14>MUST</bcp14> be set:</t | |||
:</t> | > | |||
<ul spacing="normal"> | <dl spacing="normal"> | |||
<li>@type: <tt>String</tt>. | <dt>@type:</dt><dd> <tt>String</tt>. | |||
This <bcp14>MUST</bcp14> be <tt>Organization</tt>, if set. | This <bcp14>MUST</bcp14> be <tt>Organization</tt>, if set. | |||
</li> | </dd> | |||
<li>name: <tt>String</tt> (optional). | <dt>name:</dt><dd> <tt>String</tt> (optional). | |||
The name of this organization. | The name of the organization. | |||
</li> | </dd> | |||
<li>units: <tt>OrgUnit[]</tt> (optional). | <dt>units:</dt><dd> <tt>OrgUnit[]</tt> (optional). | |||
A list of organizational units, ordered descending by hierarchy (e.g | A list of organizational units, ordered as descending by hierarchy ( | |||
., a geographic or functional division sorts before a department within that div | e.g., a geographic or functional division sorts before a department within that | |||
ision). If set, the list <bcp14>MUST</bcp14> contain at least one entry. | division). If set, the list <bcp14>MUST</bcp14> contain at least one entry. | |||
</li> | </dd> | |||
<li>sortAs: <tt>String</tt> (optional). | <dt>sortAs:</dt><dd> <tt>String</tt> (optional). | |||
This defines how this organization name lexicographically sorts in r | Defines how the organization name lexicographically sorts in relatio | |||
elation to other organizations when compared by name. The value defines the ver | n to other organizations when compared by the name. The value defines the verba | |||
batim string value to compare. In absence of this property, the <tt>name</tt> p | tim string value to compare. In absence of this property, the <tt>name</tt> pro | |||
roperty value <bcp14>MAY</bcp14> be used for comparison. | perty value <bcp14>MAY</bcp14> be used for comparison. | |||
</li> | </dd> | |||
<li>contexts: <tt>String[Boolean]</tt> (optional). | <dt>contexts:</dt><dd> <tt>String[Boolean]</tt> (optional). | |||
The contexts in which association with this organization apply. For example, me | The contexts in which association with the organization apply. For example, mem | |||
mbership in a choir may only apply in a private context. Also see <xref target= | bership in a choir may only apply in a private context. Also see <xref target=" | |||
"prop-contexts"/>.</li> | prop-contexts"/>.</dd> | |||
</ul> | </dl> | |||
<t>A OrgUnit object has the following properties:</t> | <t>An OrgUnit object has the following properties:</t> | |||
<ul spacing="normal"> | <dl spacing="normal"> | |||
<li>@type: <tt>String</tt>. | <dt>@type:</dt><dd> <tt>String</tt>. | |||
This <bcp14>MUST</bcp14> be <tt>OrgUnit</tt>, if set. | This <bcp14>MUST</bcp14> be <tt>OrgUnit</tt>, if set. | |||
</li> | </dd> | |||
<li>name: <tt>String</tt> (mandatory). | <dt>name:</dt><dd> <tt>String</tt> (mandatory). | |||
The name of this organizational unit. | The name of the organizational unit. | |||
</li> | </dd> | |||
<li>sortAs: <tt>String</tt> (optional). | <dt>sortAs:</dt><dd> <tt>String</tt> (optional). | |||
This defines how this organization unit name lexicographically sorts | Defines how the organization unit name lexicographically sorts in re | |||
in relation to other organizational units of the same level when compared by na | lation to other organizational units of the same level when compared by the name | |||
me. The level is defined by the array index of this organizational unit in the | . The level is defined by the array index of the organizational unit in the <tt | |||
<tt>units</tt> property of the Organization object. The property value defines | >units</tt> property of the Organization object. The property value defines the | |||
the verbatim string value to compare. In absence of this property, the <tt>name | verbatim string value to compare. In absence of this property, the <tt>name</t | |||
</tt> property value <bcp14>MAY</bcp14> be used for comparison. | t> property value <bcp14>MAY</bcp14> be used for comparison. | |||
</li> | </dd> | |||
</ul> | </dl> | |||
<figure anchor="example-organizations"> | <figure anchor="example-organizations"> | |||
<name><tt>organizations</tt> example</name> | <name><tt>organizations</tt> Example</name> | |||
<sourcecode name="" type="json"><![CDATA[ | <sourcecode name="" type="json"><![CDATA[ | |||
"organizations": { | "organizations": { | |||
"o1": { | "o1": { | |||
"name": "ABC, Inc.", | "name": "ABC, Inc.", | |||
"units": [ | "units": [ | |||
{ "name": "North American Division" }, | { "name": "North American Division" }, | |||
{ "name": "Marketing" } | { "name": "Marketing" } | |||
], | ], | |||
"sortAs": "ABC" | "sortAs": "ABC" | |||
} | } | |||
} | } | |||
]]></sourcecode> | ]]></sourcecode> | |||
</figure> | </figure> | |||
</section> | </section> | |||
<section anchor="speakToAs" numbered="true" toc="default"> | <section anchor="speakToAs" numbered="true" toc="default"> | |||
<name>speakToAs</name> | <name>speakToAs</name> | |||
<t>Type: <tt>SpeakToAs</tt> (optional).</t> | <t>Type: <tt>SpeakToAs</tt> (optional)</t> | |||
<t>Provides information how to address, speak to or refer to the entit | <t>Provides information on how to address, speak to, or refer to the e | |||
y that is represented by this Card. A SpeakToAs object has the following proper | ntity that is represented by the Card. A SpeakToAs object has the following pro | |||
ties, of which at least one of the <tt>grammaticalGender</tt> and <tt>pronouns</ | perties, of which at least one of the <tt>grammaticalGender</tt> and <tt>pronoun | |||
tt> properties <bcp14>MUST</bcp14> be set:</t> | s</tt> properties <bcp14>MUST</bcp14> be set:</t> | |||
<ul spacing="normal"> | <dl spacing="normal"> | |||
<li>@type: <tt>String</tt>. | <dt>@type:</dt><dd> <tt>String</tt>. | |||
This <bcp14>MUST</bcp14> be <tt>SpeakToAs</tt>, if set. | This <bcp14>MUST</bcp14> be <tt>SpeakToAs</tt>, if set. | |||
</li> | </dd> | |||
<li> | <dt> | |||
<t>grammaticalGender: <tt>String</tt> (optional). | grammaticalGender:</dt><dd><t> <tt>String</tt> (optional). | |||
Defines which grammatical gender to use in salutations and other g rammatical constructs. | Defines which grammatical gender to use in salutations and other g rammatical constructs. | |||
For example, the German language distinguishes by grammatical gend er in salutations such as "Sehr geehrte" (feminine) and "Sehr geehrter" (masculi ne). | For example, the German language distinguishes by grammatical gend er in salutations such as "Sehr geehrte" (feminine) and "Sehr geehrter" (masculi ne). | |||
The <xref target="enumerated-values">enumerated</xref> values are: </t> | The <xref target="enumerated-values">enumerated</xref> values are: </t> | |||
<ul spacing="normal"> | <ul spacing="compact"> | |||
<li> | <li> | |||
<tt>animate</tt> | <tt>animate</tt> | |||
</li> | </li> | |||
<li> | <li> | |||
<tt>common</tt> | <tt>common</tt> | |||
</li> | </li> | |||
<li> | <li> | |||
<tt>feminine</tt> | <tt>feminine</tt> | |||
</li> | </li> | |||
<li> | <li> | |||
<tt>inanimate</tt> | <tt>inanimate</tt> | |||
</li> | </li> | |||
<li> | <li> | |||
<tt>masculine</tt> | <tt>masculine</tt> | |||
</li> | </li> | |||
<li> | <li> | |||
<tt>neuter</tt> | <tt>neuter</tt> | |||
</li> | </li> | |||
</ul> | </ul> | |||
<t>Note that the grammatical gender does not allow inferring the g ender identities or assigned sex of the contact.</t> | <t>Note that the grammatical gender does not allow inferring the g ender identities or assigned sex of the contact.</t> | |||
</li> | </dd> | |||
<li> | <dt>pronouns:</dt><dd><t> <tt>Id[Pronouns]</tt> (optional). | |||
<t>pronouns: <tt>Id[Pronouns]</tt> (optional). | ||||
Defines the pronouns that the contact chooses to use for themselves .</t> | Defines the pronouns that the contact chooses to use for themselves .</t> | |||
</li> | </dd> | |||
</ul> | </dl> | |||
<t>A Pronouns object has the following properties:</t> | <t>A Pronouns object has the following properties:</t> | |||
<ul spacing="normal"> | <dl spacing="normal"> | |||
<li>@type: <tt>String</tt>. | <dt>@type:</dt><dd> <tt>String</tt>. | |||
This <bcp14>MUST</bcp14> be <tt>Pronouns</tt>, if set. | This <bcp14>MUST</bcp14> be <tt>Pronouns</tt>, if set. | |||
</li> | </dd> | |||
<li>pronouns: <tt>String</tt> (mandatory). | <dt>pronouns:</dt><dd> <tt>String</tt> (mandatory). | |||
Defines the pronouns. Any value or form is allowed. Examples in | Defines the pronouns. Any value or form is allowed. Examples in | |||
English include <tt>she/her</tt> and <tt>they/them/theirs</tt>. The value <bcp1 | English include <tt>she/her</tt> and <tt>they/them/theirs</tt>. The value <bcp1 | |||
4>MAY</bcp14> be overridden in the <tt>localizations</tt> property (<xref target | 4>MAY</bcp14> be overridden in the <xref target="localizations"><tt>localization | |||
="localizations"/>).</li> | s</tt></xref> property.</dd> | |||
<li>contexts: <tt>String[Boolean]</tt> (optional). | <dt>contexts:</dt><dd> <tt>String[Boolean]</tt> (optional). | |||
The contexts in which to use these pronouns. Also see <xref target="prop-contex | The contexts in which to use the pronouns. Also see <xref target="prop-contexts | |||
ts"/>.</li> | "/>.</dd> | |||
<li>pref: <tt>UnsignedInt</tt> (optional). | <dt>pref:</dt><dd> <tt>UnsignedInt</tt> (optional). | |||
The preference of these pronouns in relation to other pronouns in th | The preference of the pronouns in relation to other pronouns in the | |||
e same context. Also see <xref target="prop-pref"/>.</li> | same context. Also see <xref target="prop-pref"/>.</dd> | |||
</ul> | </dl> | |||
<figure anchor="example-speakToAs"> | <figure anchor="example-speakToAs"> | |||
<name><tt>speakToAs</tt> example</name> | <name><tt>speakToAs</tt> Example</name> | |||
<sourcecode name="" type="json"><![CDATA[ | <sourcecode name="" type="json"><![CDATA[ | |||
"speakToAs": { | "speakToAs": { | |||
"grammaticalGender": "neuter", | "grammaticalGender": "neuter", | |||
"pronouns": { | "pronouns": { | |||
"k19": { | "k19": { | |||
"pronouns": "they/them", | "pronouns": "they/them", | |||
"pref": 2 | "pref": 2 | |||
}, | }, | |||
"k32": { | "k32": { | |||
"pronouns": "xe/xir", | "pronouns": "xe/xir", | |||
"pref": 1 | "pref": 1 | |||
} | } | |||
} | } | |||
} | } | |||
]]></sourcecode> | ]]></sourcecode> | |||
</figure> | </figure> | |||
</section> | </section> | |||
<section anchor="titles" numbered="true" toc="default"> | <section anchor="titles" numbered="true" toc="default"> | |||
<name>titles</name> | <name>titles</name> | |||
<t>Type : <tt>Id[Title]</tt> (optional).</t> | <t>Type: <tt>Id[Title]</tt> (optional)</t> | |||
<t>The job titles or functional positions of the entity represented by | <t>The job titles or functional positions of the entity represented by | |||
this Card. A Title object has the following properties:</t> | the Card. A Title object has the following properties:</t> | |||
<ul spacing="normal"> | <dl spacing="normal"> | |||
<li>@type: <tt>String</tt>. | <dt>@type:</dt><dd> <tt>String</tt>. | |||
This <bcp14>MUST</bcp14> be <tt>Title</tt>, if set. | This <bcp14>MUST</bcp14> be <tt>Title</tt>, if set. | |||
</li> | </dd> | |||
<li>name: <tt>String</tt> (mandatory). | <dt>name:</dt><dd> <tt>String</tt> (mandatory). | |||
The title or role name of the entity represented by this Card. | The title or role name of the entity represented by the Card. | |||
</li> | </dd> | |||
<li> | <dt>kind:</dt><dd><t> <tt>String</tt> (optional; default: <tt>title< | |||
<t>kind: <tt>String</tt> (optional, default <tt>title</tt>). | /tt>). | |||
Describes the organizational or situational kind of this title. Some | Describes the organizational or situational kind of the title. Some o | |||
organizations and individuals distinguish between <em>titles</em> as organizatio | rganizations and individuals distinguish between <em>titles</em> as organization | |||
nal positions and <em>roles</em> as more temporary assignments, such as in proje | al positions and <em>roles</em> as more temporary assignments such as in project | |||
ct management.</t> | management.</t> | |||
<t>The <xref target="enumerated-values">enumerated</xref> values a re:</t> | <t>The <xref target="enumerated-values">enumerated</xref> values a re:</t> | |||
<ul> | <ul spacing ="compact"> | |||
<li> | <li> <tt>title</tt></li> | |||
<tt>title</tt> | <li><tt>role</tt> </li> | |||
</li> | ||||
<li> | ||||
<tt>role</tt> | ||||
</li> | ||||
</ul> | </ul> | |||
</li> | </dd> | |||
<li>organizationId: <tt>Id</tt> (optional). | <dt>organizationId:</dt><dd> <tt>Id</tt> (optional). | |||
The identifier of the organization in which this title is held. | The identifier of the organization in which this title is held. | |||
</li> | </dd> | |||
</ul> | </dl> | |||
<figure anchor="example-titles"> | <figure anchor="example-titles"> | |||
<name><tt>titles</tt> example</name> | <name><tt>titles</tt> Example</name> | |||
<sourcecode name="" type="json"><![CDATA[ | <sourcecode name="" type="json"><![CDATA[ | |||
"titles": { | "titles": { | |||
"le9": { | "le9": { | |||
"kind": "title", | "kind": "title", | |||
"name": "Research Scientist" | "name": "Research Scientist" | |||
}, | }, | |||
"k2": { | "k2": { | |||
"kind": "role", | "kind": "role", | |||
"name": "Project Leader", | "name": "Project Leader", | |||
"organizationId": "o2" | "organizationId": "o2" | |||
skipping to change at line 964 ¶ | skipping to change at line 1282 ¶ | |||
"o2": { | "o2": { | |||
"name": "ABC, Inc." | "name": "ABC, Inc." | |||
} | } | |||
} | } | |||
]]></sourcecode> | ]]></sourcecode> | |||
</figure> | </figure> | |||
</section> | </section> | |||
</section> | </section> | |||
<section anchor="contact-properties" numbered="true" toc="default"> | <section anchor="contact-properties" numbered="true" toc="default"> | |||
<name>Contact Properties</name> | <name>Contact Properties</name> | |||
<t>This section defines properties how to contact the entity represented by this Card.</t> | <t>This section defines how properties contact the entity represented by the Card.</t> | |||
<section anchor="emails" numbered="true" toc="default"> | <section anchor="emails" numbered="true" toc="default"> | |||
<name>emails</name> | <name>emails</name> | |||
<t>Type: <tt>Id[EmailAddress]</tt> (optional).</t> | <t>Type: <tt>Id[EmailAddress]</tt> (optional)</t> | |||
<t>The email addresses to contact the entity represented by this Card. | <t>The email addresses in which to contact the entity represented by t | |||
An EmailAddress object has the following properties:</t> | he Card. An EmailAddress object has the following properties:</t> | |||
<ul spacing="normal"> | <dl spacing="normal"> | |||
<li>@type: <tt>String</tt>. | <dt>@type:</dt><dd> <tt>String</tt>. | |||
This <bcp14>MUST</bcp14> be <tt>EmailAddress</tt>, if set. | This <bcp14>MUST</bcp14> be <tt>EmailAddress</tt>, if set. | |||
</li> | </dd> | |||
<li>address: <tt>String</tt> (mandatory). | <dt>address:</dt><dd> <tt>String</tt> (mandatory). | |||
The email address. This <bcp14>MUST</bcp14> be an <em>addr-spec</em> value as d | The email address. This <bcp14>MUST</bcp14> be an <em>addr-spec</em> value as d | |||
efined in Section 3.4.1 of <xref target="RFC5322" format="default"/>.</li> | efined in <xref target="RFC5322" sectionFormat="of" section="3.4.1"/>.</dd> | |||
<li>contexts: <tt>String[Boolean]</tt> (optional). | <dt>contexts:</dt><dd> <tt>String[Boolean]</tt> (optional). | |||
The contexts in which to use this email address. Also see <xref target="prop-co | The contexts in which to use this email address. Also see <xref target="prop-co | |||
ntexts"/>.</li> | ntexts"/>.</dd> | |||
<li>pref: <tt>UnsignedInt</tt> (optional). | <dt>pref:</dt><dd> <tt>UnsignedInt</tt> (optional). | |||
The preference of this email address in relation to other email addr | The preference of the email address in relation to other email addre | |||
esses. Also see <xref target="prop-pref"/>.</li> | sses. Also see <xref target="prop-pref"/>.</dd> | |||
<li>label: <tt>String</tt> (optional). | <dt>label:</dt><dd> <tt>String</tt> (optional). | |||
A custom label for the value, see <xref target="prop-label"/>.</li> | A custom label for the value. Also see <xref target="prop-label"/>.< | |||
</ul> | /dd> | |||
</dl> | ||||
<figure anchor="example-emails"> | <figure anchor="example-emails"> | |||
<name><tt>emails</tt> example</name> | <name><tt>emails</tt> Example</name> | |||
<sourcecode name="" type="json"><![CDATA[ | <sourcecode name="" type="json"><![CDATA[ | |||
"emails": { | "emails": { | |||
"e1": { | "e1": { | |||
"contexts": { | "contexts": { | |||
"work": true | "work": true | |||
}, | }, | |||
"address": "jqpublic@xyz.example.com" | "address": "jqpublic@xyz.example.com" | |||
}, | }, | |||
"e2": { | "e2": { | |||
"address": "jane_doe@example.com", | "address": "jane_doe@example.com", | |||
"pref": 1 | "pref": 1 | |||
} | } | |||
} | } | |||
]]></sourcecode> | ]]></sourcecode> | |||
</figure> | </figure> | |||
</section> | </section> | |||
<section anchor="onlineServices" numbered="true" toc="default"> | <section anchor="onlineServices" numbered="true" toc="default"> | |||
<name>onlineServices</name> | <name>onlineServices</name> | |||
<t>Type: <tt>Id[OnlineService]</tt> (optional).</t> | <t>Type: <tt>Id[OnlineService]</tt> (optional)</t> | |||
<t>The online services that are associated with the entity represented | <t>The online services that are associated with the entity represented | |||
by this Card. This can be messaging services, social media profiles, and other | by the Card. This can be messaging services, social media profiles, and other. | |||
. An OnlineService object has the following properties, of which at least the < | An OnlineService object has the following properties, of which at least the <t | |||
tt>uri</tt> or <tt>user</tt> property <bcp14>MUST</bcp14> be set:</t> | t>uri</tt> or <tt>user</tt> property <bcp14>MUST</bcp14> be set:</t> | |||
<ul spacing="normal"> | <dl spacing="normal"> | |||
<li>@type: <tt>String</tt>. | <dt>@type:</dt><dd> <tt>String</tt>. | |||
This <bcp14>MUST</bcp14> be <tt>OnlineService</tt>, if set. | This <bcp14>MUST</bcp14> be <tt>OnlineService</tt>, if set. | |||
</li> | </dd> | |||
<li>service: <tt>String</tt> (optional). | <dt>service:</dt><dd> <tt>String</tt> (optional). | |||
The name of the online service or protocol. The name <bcp14>MAY</ | The name of the online service or protocol. The name <bcp14>MAY</ | |||
bcp14> be capitalized the same as on the service's website, app or publishing ma | bcp14> be capitalized the same as on the service's website, app, or publishing m | |||
terial, but names <bcp14>MUST</bcp14> be considered equal is they match case-ins | aterial, but names <bcp14>MUST</bcp14> be considered equal if they match case-in | |||
ensitively. Examples are <tt>GitHub</tt>, <tt>kakao</tt>, <tt>Mastodon</tt>.</l | sensitively. Examples are <tt>GitHub</tt>, <tt>Kakao</tt>, and <tt>Mastodon</tt | |||
i> | >.</dd> | |||
<li>uri: <tt>String</tt> (optional). | <dt>uri:</dt><dd> <tt>String</tt> (optional). | |||
This identifies the entity represented by this card at the online service. This | Identifies the entity represented by the Card at the online service. This <bcp1 | |||
<bcp14>MUST</bcp14> be a <em>URI</em> as defined in Section 3 of <xref target=" | 4>MUST</bcp14> be a <em>URI</em> as defined in <xref target="RFC3986" sectionFor | |||
RFC3986" format="default"/>.</li> | mat="of" section="3"/>.</dd> | |||
<li>user: <tt>String</tt> (optional). | <dt>user:</dt><dd> <tt>String</tt> (optional). | |||
This names the entity represented by this Card at the online servi | Names the entity represented by the Card at the online service. A | |||
ce. Any free-text value is allowed. The <tt>service</tt> property <bcp14>SHOUL | ny free-text value is allowed. The <tt>service</tt> property <bcp14>SHOULD</bcp | |||
D</bcp14> be set.</li> | 14> be set.</dd> | |||
<li>contexts: <tt>String[Boolean]</tt> (optional). | <dt>contexts:</dt><dd> <tt>String[Boolean]</tt> (optional). | |||
The contexts in which to use this service. Also see <xref target="prop-contexts | The contexts in which to use the service. Also see <xref target="prop-contexts" | |||
"/>.</li> | />.</dd> | |||
<li>pref: <tt>UnsignedInt</tt> (optional). | <dt>pref:</dt><dd> <tt>UnsignedInt</tt> (optional). | |||
The preference of this service in relation to other services. Also | The preference of the service in relation to other services. Also s | |||
see <xref target="prop-pref"/>.</li> | ee <xref target="prop-pref"/>.</dd> | |||
<li>label: <tt>String</tt> (optional). | <dt>label:</dt><dd> <tt>String</tt> (optional). | |||
A custom label for the value, see <xref target="prop-label"/>.</li> | A custom label for the value. Also see <xref target="prop-label"/>.< | |||
</ul> | /dd> | |||
</dl> | ||||
<figure anchor="example-onlineServices"> | <figure anchor="example-onlineServices"> | |||
<name><tt>onlineServices</tt> example</name> | <name><tt>onlineServices</tt> Example</name> | |||
<sourcecode name="" type="json"><![CDATA[ | <sourcecode name="" type="json"><![CDATA[ | |||
"onlineServices": { | "onlineServices": { | |||
"x1": { | "x1": { | |||
"uri": "xmpp:alice@example.com" | "uri": "xmpp:alice@example.com" | |||
}, | }, | |||
"x2": { | "x2": { | |||
"service": "Mastodon", | "service": "Mastodon", | |||
"user": "@alice@example2.com", | "user": "@alice@example2.com", | |||
"uri": "https://example2.com/@alice" | "uri": "https://example2.com/@alice" | |||
} | } | |||
} | } | |||
]]></sourcecode> | ]]></sourcecode> | |||
</figure> | </figure> | |||
</section> | </section> | |||
<section anchor="phones" numbered="true" toc="default"> | <section anchor="phones" numbered="true" toc="default"> | |||
<name>phones</name> | <name>phones</name> | |||
<t>Type: <tt>Id[Phone]</tt> (optional).</t> | <t>Type: <tt>Id[Phone]</tt> (optional)</t> | |||
<t>The phone numbers to contact the entity represented by this Card. | <t>The phone numbers in which to contact the entity represented by the | |||
A Phone object has the following properties:</t> | Card. A Phone object has the following properties:</t> | |||
<ul spacing="normal"> | <dl spacing="normal"> | |||
<li>@type: <tt>String</tt>. | <dt>@type:</dt><dd> <tt>String</tt>. | |||
This <bcp14>MUST</bcp14> be <tt>Phone</tt>, if set. | This <bcp14>MUST</bcp14> be <tt>Phone</tt>, if set. | |||
</li> | </dd> | |||
<li>number: <tt>String</tt> (mandatory). | <dt>number:</dt><dd> <tt>String</tt> (mandatory). | |||
The phone number, as either a URI or free-text. Typical URI schemes are the <xr | The phone number as either a URI or free text. Typical URI schemes are <tt>tel< | |||
ef target="RFC3966" format="default"/> <tt>tel</tt> or <xref target="RFC3261" fo | /tt> <xref target="RFC3966" format="default"/> or <tt>sip</tt> <xref target="RFC | |||
rmat="default"/> <tt>sip</tt> schemes, but any URI scheme is allowed.</li> | 3261" format="default"/>, but any URI scheme is allowed.</dd> | |||
<li> | <dt>features:</dt><dd><t> <tt>String[Boolean]</tt> (optional). | |||
<t>features: <tt>String[Boolean]</tt> (optional). | The set of contact features that the phone number may be used for. | |||
The set of contact features that this phone number may be used for | The set is represented as an object, with each key being a method type. The b | |||
. The set is represented as an object, with each key being a method type. The | oolean value <bcp14>MUST</bcp14> be <tt>true</tt>. The <xref target="enumerated | |||
boolean value <bcp14>MUST</bcp14> be <tt>true</tt>. The <xref target="enumerate | -values">enumerated</xref> method type values are: | |||
d-values">enumerated</xref> method type values are: | ||||
</t> | </t> | |||
<ul spacing="normal"> | <ul spacing="compact"> | |||
<li><tt>mobile</tt>: the number is for a mobile phone.</li> | <li><tt>mobile</tt>: the number for a mobile phone.</li> | |||
<li><tt>voice</tt>: the number is for calling by voice.</li> | <li><tt>voice</tt>: the number for calling by voice.</li> | |||
<li><tt>text</tt>: the number supports text messages (SMS).</li> | <li><tt>text</tt>: the number that supports text messages (SMS). | |||
<li><tt>video</tt>: the number supports video conferencing.</li> | </li> | |||
<li><tt>main-number</tt>: this number is the main phone number, | <li><tt>video</tt>: the number that supports video conferencing. | |||
such as the number of the front-desk at a company, as opposed to a direct-dial n | </li> | |||
umber of an individual employee.</li> | <li><tt>main-number</tt>: the main phone number such as the numb | |||
er of the front desk at a company, as opposed to a direct-dial number of an indi | ||||
vidual employee.</li> | ||||
<li><tt>textphone</tt>: the number is for a device for people wi th hearing or speech difficulties.</li> | <li><tt>textphone</tt>: the number is for a device for people wi th hearing or speech difficulties.</li> | |||
<li><tt>fax</tt>: the number is for sending faxes.</li> | <li><tt>fax</tt>: the number for sending faxes.</li> | |||
<li><tt>pager</tt>: the number is for a pager or beeper.</li> | <li><tt>pager</tt>: the number for a pager or beeper.</li> | |||
</ul> | </ul> | |||
</li> | </dd> | |||
<li>contexts: <tt>String[Boolean]</tt> (optional). | <dt>contexts:</dt><dd> <tt>String[Boolean]</tt> (optional). | |||
The contexts in which to use this number. Also see <xref target="prop-contexts" | The contexts in which to use the number. Also see <xref target="prop-contexts"/ | |||
/>.</li> | >.</dd> | |||
<li>pref: <tt>UnsignedInt</tt> (optional). | <dt>pref:</dt><dd> <tt>UnsignedInt</tt> (optional). | |||
The preference of this number in relation to other numbers. Also se | The preference of the number in relation to other numbers. Also see | |||
e <xref target="prop-pref"/>.</li> | <xref target="prop-pref"/>.</dd> | |||
<li>label: <tt>String</tt> (optional). | <dt>label:</dt><dd> <tt>String</tt> (optional). | |||
A custom label for the value, see <xref target="prop-label"/>.</li> | A custom label for the value. Also see <xref target="prop-label"/>.< | |||
</ul> | /dd> | |||
</dl> | ||||
<figure anchor="example-phones"> | <figure anchor="example-phones"> | |||
<name><tt>phones</tt> example</name> | <name><tt>phones</tt> Example</name> | |||
<sourcecode name="" type="json"><![CDATA[ | <sourcecode name="" type="json"><![CDATA[ | |||
"phones": { | "phones": { | |||
"tel0": { | "tel0": { | |||
"contexts": { | "contexts": { | |||
"private": true | "private": true | |||
}, | }, | |||
"features": { | "features": { | |||
"voice": true | "voice": true | |||
}, | }, | |||
"number": "tel:+1-555-555-5555;ext=5555", | "number": "tel:+1-555-555-5555;ext=5555", | |||
skipping to change at line 1095 ¶ | skipping to change at line 1412 ¶ | |||
"work": true | "work": true | |||
}, | }, | |||
"number": "tel:+1-201-555-0123" | "number": "tel:+1-201-555-0123" | |||
} | } | |||
} | } | |||
]]></sourcecode> | ]]></sourcecode> | |||
</figure> | </figure> | |||
</section> | </section> | |||
<section anchor="preferredLanguages" numbered="true" toc="default"> | <section anchor="preferredLanguages" numbered="true" toc="default"> | |||
<name>preferredLanguages</name> | <name>preferredLanguages</name> | |||
<t>Type : <tt>Id[LanguagePref]</tt> (optional).</t> | <t>Type : <tt>Id[LanguagePref]</tt> (optional)</t> | |||
<t>Defines the preferred languages for contacting the entity associate | <t>Defines the preferred languages for contacting the entity associate | |||
d with this Card.</t> | d with the Card.</t> | |||
<t>A LanguagePref object has the following properties:</t> | <t>A LanguagePref object has the following properties:</t> | |||
<ul spacing="normal"> | <dl spacing="normal"> | |||
<li>@type: <tt>String</tt>. | <dt>@type:</dt><dd> <tt>String</tt>. | |||
This <bcp14>MUST</bcp14> be <tt>LanguagePref</tt>, if set. | This <bcp14>MUST</bcp14> be <tt>LanguagePref</tt>, if set. | |||
</li> | </dd> | |||
<li>language: <tt>String</tt> (mandatory). The preferred language. | <dt>language:</dt><dd> <tt>String</tt> (mandatory). The preferred l | |||
This <bcp14>MUST</bcp14> a language tag as defined in <xref target="RFC5646"/>. | anguage. This <bcp14>MUST</bcp14> be a language tag as defined in <xref target= | |||
</li> | "RFC5646"/>.</dd> | |||
<li>contexts: <tt>String[Boolean]</tt> (optional). | <dt>contexts:</dt><dd> <tt>String[Boolean]</tt> (optional). | |||
Defines the contexts in which to use this language. Also see <xref target="prop | Defines the contexts in which to use the language. Also see <xref target="prop- | |||
-contexts"/>.</li> | contexts"/>.</dd> | |||
<li>pref: <tt>UnsignedInt</tt> (optional). | <dt>pref:</dt><dd> <tt>UnsignedInt</tt> (optional). | |||
Defines the preference of this language in relation to other languages of the sa | Defines the preference of the language in relation to other languages of the sam | |||
me contexts. Also see <xref target="prop-pref"/>.</li> | e contexts. Also see <xref target="prop-pref"/>.</dd> | |||
</ul> | </dl> | |||
<figure anchor="example-preferredLanguages"> | <figure anchor="example-preferredLanguages"> | |||
<name><tt>preferredLanguages</tt> example</name> | <name><tt>preferredLanguages</tt> Example</name> | |||
<sourcecode name="" type="json"><![CDATA[ | <sourcecode name="" type="json"><![CDATA[ | |||
"preferredLanguages": { | "preferredLanguages": { | |||
"l1": { | "l1": { | |||
"language": "en", | "language": "en", | |||
"contexts": { | "contexts": { | |||
"work": true | "work": true | |||
}, | }, | |||
"pref": 1 | "pref": 1 | |||
}, | }, | |||
"l2": { | "l2": { | |||
skipping to change at line 1139 ¶ | skipping to change at line 1456 ¶ | |||
"private": true | "private": true | |||
} | } | |||
} | } | |||
} | } | |||
]]></sourcecode> | ]]></sourcecode> | |||
</figure> | </figure> | |||
</section> | </section> | |||
</section> | </section> | |||
<section anchor="calendaring-and-scheduling-properties" numbered="true" to c="default"> | <section anchor="calendaring-and-scheduling-properties" numbered="true" to c="default"> | |||
<name>Calendaring and Scheduling Properties</name> | <name>Calendaring and Scheduling Properties</name> | |||
<t>This section defines properties how to schedule calendar events with the entity represented by this Card.</t> | <t>This section defines properties for scheduling calendar events with t he entity represented by the Card.</t> | |||
<section anchor="calendars" numbered="true" toc="default"> | <section anchor="calendars" numbered="true" toc="default"> | |||
<name>calendars</name> | <name>calendars</name> | |||
<t>Type: <tt>Id[Calendar]</tt> (optional).</t> | <t>Type: <tt>Id[Calendar]</tt> (optional)</t> | |||
<t>These are resources for calendaring, such as calendars to lookup fr | <t>These are resources for calendaring such as using calendars to look | |||
ee-busy information for the entity represented by this Card. A Calendar object | up free-busy information for the entity represented by the Card. A Calendar ob | |||
has all properties of the <xref target="resource">Resource</xref> data type, wit | ject has all properties of the <xref target="resource">Resource</xref> data type | |||
h the following additional definitions:</t> | , with the following additional definitions:</t> | |||
<ul> | <ul> | |||
<li>The <tt>@type</tt> property value <bcp14>MUST</bcp14> be <tt>Cal endar</tt>, if set.</li> | <li>The <tt>@type</tt> property value <bcp14>MUST</bcp14> be <tt>Cal endar</tt>, if set.</li> | |||
<li><t>The <tt>kind</tt> property is mandatory. Its <xref target="e numerated-values">enumerated</xref> values are:</t> | <li><t>The <tt>kind</tt> property is mandatory. Its <xref target="e numerated-values">enumerated</xref> values are:</t> | |||
<ul> | <ul spacing="normal"> | |||
<li> | <li> | |||
<tt>calendar</tt>: the resource is a calendar that contains en tries such as calendar events or tasks.</li> | <tt>calendar</tt>: The resource is a calendar that contains en tries such as calendar events or tasks.</li> | |||
<li> | <li> | |||
<tt>freeBusy</tt>: the resource allows for free-busy lookups, for example to schedule group events.</li> | <tt>freeBusy</tt>: The resource allows for free-busy lookups, for example, to schedule group events.</li> | |||
</ul> | </ul> | |||
</li> | </li> | |||
</ul> | </ul> | |||
<figure anchor="example-calendars"> | <figure anchor="example-calendars"> | |||
<name><tt>calendars</tt> example</name> | <name><tt>calendars</tt> Example</name> | |||
<sourcecode name="" type="json"><![CDATA[ | <sourcecode name="" type="json"><![CDATA[ | |||
"calendars": { | "calendars": { | |||
"calA": { | "calA": { | |||
"kind": "calendar", | "kind": "calendar", | |||
"uri": "webcal://calendar.example.com/calA.ics" | "uri": "webcal://calendar.example.com/calA.ics" | |||
}, | }, | |||
"project-a": { | "project-a": { | |||
"kind": "freeBusy", | "kind": "freeBusy", | |||
"uri": "https://calendar.example.com/busy/project-a" | "uri": "https://calendar.example.com/busy/project-a" | |||
} | } | |||
} | } | |||
]]></sourcecode> | ]]></sourcecode> | |||
</figure> | </figure> | |||
</section> | </section> | |||
<section anchor="schedulingAddresses" numbered="true" toc="default"> | <section anchor="schedulingAddresses" numbered="true" toc="default"> | |||
<name>schedulingAddresses</name> | <name>schedulingAddresses</name> | |||
<t>Type: <tt>Id[SchedulingAddress]</tt> (optional).</t> | <t>Type: <tt>Id[SchedulingAddress]</tt> (optional)</t> | |||
<t>The scheduling addresses by which the entity may receive calendar s cheduling invitations. A SchedulingAddress object has the following properties: </t> | <t>The scheduling addresses by which the entity may receive calendar s cheduling invitations. A SchedulingAddress object has the following properties: </t> | |||
<ul spacing="normal"> | <dl spacing="normal"> | |||
<li> | <dt>@type:</dt><dd> <tt>String</tt>. | |||
<t>@type: <tt>String</tt>. | This <bcp14>MUST</bcp14> be <tt>SchedulingAddress</tt>, if set. | |||
This <bcp14>MUST</bcp14> be <tt>SchedulingAddress</tt>, if set.</t | </dd> | |||
> | <dt>uri:</dt><dd> <tt>String</tt> (mandatory). | |||
</li> | The address to use for calendar scheduling with the contact. This <bcp14>MUST</ | |||
<li>uri: <tt>String</tt> (mandatory). | bcp14> be a URI as defined in <xref target="RFC3986" sectionFormat="of" section= | |||
The address to use for calendar scheduling with this contact. This <bcp14>MUST< | "3"/>.</dd> | |||
/bcp14> be a URI as defined in Section 3 of <xref target="RFC3986" format="defau | <dt>contexts:</dt><dd> <tt>String[Boolean]</tt> (optional). | |||
lt"/>.</li> | The contexts in which to use the scheduling address. Also see <xref target="pro | |||
<li>contexts: <tt>String[Boolean]</tt> (optional). | p-contexts"/>.</dd> | |||
The contexts in which to use this scheduling address. Also see <xref target="pr | <dt>pref:</dt><dd> <tt>UnsignedInt</tt> (optional). | |||
op-contexts"/>.</li> | The preference of the scheduling address in relation to other schedu | |||
<li>pref: <tt>UnsignedInt</tt> (optional). | ling addresses. Also see <xref target="prop-pref"/>.</dd> | |||
The preference of this scheduling address in relation to other sched | <dt>label:</dt><dd> <tt>String</tt> (optional). | |||
uling address. Also see <xref target="prop-pref"/>.</li> | A custom label for the scheduling address. Also see <xref target="pr | |||
<li>label: <tt>String</tt> (optional). | op-label"/>.</dd> | |||
A custom label for the scheduling address, see <xref target="prop-la | </dl> | |||
bel"/>.</li> | ||||
</ul> | ||||
<figure anchor="example-schedulingAddresses"> | <figure anchor="example-schedulingAddresses"> | |||
<name><tt>schedulingAddresses</tt> example</name> | <name><tt>schedulingAddresses</tt> Example</name> | |||
<sourcecode name="" type="json"><![CDATA[ | <sourcecode name="" type="json"><![CDATA[ | |||
"schedulingAddresses": { | "schedulingAddresses": { | |||
"sched1": { | "sched1": { | |||
"uri": "mailto:janedoe@example.com" | "uri": "mailto:janedoe@example.com" | |||
} | } | |||
} | } | |||
]]></sourcecode> | ]]></sourcecode> | |||
</figure> | </figure> | |||
</section> | </section> | |||
</section> | </section> | |||
<section anchor="address-and-location-properties" numbered="true" toc="def ault"> | <section anchor="address-and-location-properties" numbered="true" toc="def ault"> | |||
<name>Address and Location Properties</name> | <name>Address and Location Properties</name> | |||
<t>This section defines properties for postal addresses and geographical locations associated with the entity represented by this Card.</t> | <t>This section defines properties for postal addresses and geographical locations associated with the entity represented by the Card.</t> | |||
<section anchor="addresses" numbered="true" toc="default"> | <section anchor="addresses" numbered="true" toc="default"> | |||
<name>addresses</name> | <name>addresses</name> | |||
<t>Type: <tt>Id[Address]</tt> (optional).</t> | <t>Type: <tt>Id[Address]</tt> (optional)</t> | |||
<t>A map of address identifiers to Address objects, containing physica l locations.</t> | <t>A map of address identifiers to Address objects, containing physica l locations.</t> | |||
<section> | <section> | |||
<name>Address object</name> | <name>Address Object</name> | |||
<t>An Address object has the following properties:</t> | <t>An Address object has the following properties, of which at least | |||
<ul spacing="normal"> | one of components, coordinates, countryCode, full or timeZone <bcp14>MUST</bcp1 | |||
<li>@type: <tt>String</tt>. | 4> be set:</t> | |||
<dl spacing="normal"> | ||||
<dt>@type:</dt><dd> <tt>String</tt>. | ||||
This <bcp14>MUST</bcp14> be <tt>Address</tt>, if set. | This <bcp14>MUST</bcp14> be <tt>Address</tt>, if set. | |||
</li> | </dd> | |||
<li> | <dt> | |||
<t>components: <tt>AddressComponent[]</tt> (optional). The <xre | components:</dt><dd><t> <tt>AddressComponent[]</tt> (optional). | |||
f target="addresscomponent">components</xref> making up this address. This prop | The <xref target="addresscomponent">components</xref> that make up the address. | |||
erty <bcp14>MUST</bcp14> be set if the <tt>full</tt> property is not set, otherw | The component list <bcp14>MUST</bcp14> have at least one entry that has a <tt>k | |||
ise it <bcp14>SHOULD</bcp14> be set. The component list <bcp14>MUST</bcp14> hav | ind</tt> other than <tt>separator</tt>.</t> | |||
e at least one entry having a different <tt>kind</tt> than <tt>separator</tt>.</ | <t>Address components <bcp14>SHOULD</bcp14> be ordered such that | |||
t> | when their values are joined as a String, a valid full address is produced. If | |||
<t>Address components <bcp14>SHOULD</bcp14> be ordered such that | so, implementations <bcp14>MUST</bcp14> set the <tt>isOrdered</tt> property val | |||
their values joined as a String produce a valid full address. If so, implement | ue to <tt>true</tt>.</t> | |||
ations <bcp14>MUST</bcp14> set the <tt>isOrdered</tt> property value to <tt>true | <t>If the address components are ordered, then the <tt>defaultSe | |||
</tt>.</t> | parator</tt> property and address components of kind <tt>separator</tt> give gui | |||
<t>If the address components are ordered, then the <tt>defaultSe | dance on what characters to insert between components, but implementations are f | |||
parator</tt> property and address components of kind <tt>separator</tt> give gui | ree to choose any others. When lacking a separator, inserting a single space ch | |||
dance what characters to insert between components, but implementations are free | aracter in between address component values is a good choice.</t> | |||
to choose any others. In lack of a separator, inserting a single Space charact | <t>If, instead, the address components follow no particular orde | |||
er in between address component values is a good choice.</t> | r, then the <tt>isOrdered</tt> property value <bcp14>MUST</bcp14> be <tt>false</ | |||
<t>If instead the address components follow no particular order, | tt>, the <tt>components</tt> property <bcp14>MUST NOT</bcp14> contain an Address | |||
then the <tt>isOrdered</tt> property value <bcp14>MUST</bcp14> be <tt>false</tt | Component of kind <tt>separator</tt>, and the <tt>defaultSeparator</tt> property | |||
>, the <tt>components</tt> property <bcp14>MUST NOT</bcp14> contain a AddressCom | <bcp14>MUST NOT</bcp14> be set.</t> | |||
ponent of kind <tt>separator</tt> and the <tt>defaultSeparator</tt> property <bc | </dd> | |||
p14>MUST NOT</bcp14> be set.</t> | <dt>isOrdered:</dt><dd> <tt>Boolean</tt> (optional; default: <tt>f | |||
</li> | alse</tt>). Indicates if the address component sequence in the <tt>components</ | |||
<li>isOrdered: <tt>Boolean</tt> (optional, default: <tt>false</tt> | tt> property is ordered.</dd> | |||
). This indicates if the address component sequence in the <tt>components</tt> | <dt>countryCode:</dt><dd> <tt>String</tt> (optional). | |||
property is ordered.</li> | The Alpha-2 country code <xref target="ISO.3166-1"/>.</dd> | |||
<li>countryCode: <tt>String</tt> (optional). | <dt>coordinates:</dt><dd> <tt>String</tt> (optional). A "geo:" UR | |||
The Alpha-2 country code <xref target="ISO.3166-1.2006"/>.</li> | I <xref target="RFC5870" format="default"/> for the address.</dd> | |||
<li>coordinates: <tt>String</tt> (optional). A <xref target="RFC5 | <dt>timeZone:</dt><dd> <tt>String</tt> (optional). Identifies the | |||
870" format="default"/> "geo:" URI for the address.</li> | time zone the address is located in. This <bcp14>MUST</bcp14> be a time zone na | |||
<li>timeZone: <tt>String</tt> (optional). Identifies the time zon | me registered in IANA's <xref target="IANA-TZ">Time Zone Database</xref>.</dd> | |||
e this address is located in. This <bcp14>MUST</bcp14> be a time zone name regi | <dt> | |||
stered in the <xref target="IANATZ">IANA Time Zone Database</xref>.</li> | contexts:</dt><dd><t> <tt>String[Boolean]</tt> (optional). | |||
<li> | ||||
<t>contexts: <tt>String[Boolean]</tt> (optional). | ||||
The contexts of the address information. The boolean value <bcp14>MUST</bcp14> be <tt>true</tt>. In addition to the common contexts (<xref target="prop-contex ts"/>), allowed key values are: | The contexts of the address information. The boolean value <bcp14>MUST</bcp14> be <tt>true</tt>. In addition to the common contexts (<xref target="prop-contex ts"/>), allowed key values are: | |||
</t> | </t> | |||
<ul spacing="normal"> | <ul spacing="compact"> | |||
<li><tt>billing</tt>: an address to be used for billing.</li> | <li><tt>billing</tt>: an address to be used for billing.</li> | |||
<li><tt>delivery</tt>: an address to be used for delivering ph ysical items.</li> | <li><tt>delivery</tt>: an address to be used for delivering ph ysical items.</li> | |||
</ul> | </ul> | |||
</li> | </dd> | |||
<li>full: <tt>String</tt> (optional). | <dt>full:</dt><dd> <tt>String</tt> (optional). | |||
This is the full address, including street, region or country. Th | The full address, including street, region, or country. The purpo | |||
e purpose of this property is to define an address, even if the individual addre | se of this property is to define an address, even if the individual address comp | |||
ss components are not known. If the <tt>street</tt> property is set, the <tt>fu | onents are not known. | |||
ll</tt> property <bcp14>SHOULD NOT</bcp14> be set. | </dd> | |||
</li> | <dt>defaultSeparator:</dt><dd> <tt>String</tt> (optional). | |||
<li>defaultSeparator: <tt>String</tt> (optional). | The default separator to insert between address component values w | |||
The default separator to insert between address component values w | hen concatenating all address component values to a single String. Also see the | |||
hen concatenating all address component values to a single String. Also see the | definition of the <tt>separator</tt> kind for the <xref target="addresscomponent | |||
definition of the <tt>separator</tt> kind for the AddressComponent object. Thi | ">AddressComponent</xref> object. This property <bcp14>MUST NOT</bcp14> be set | |||
s property <bcp14>MUST NOT</bcp14> be set if the Address <tt>isOrdered</tt> prop | if the Address <tt>isOrdered</tt> property value is <tt>false</tt> or if the <tt | |||
erty value is <tt>false</tt> or if the <tt>components</tt> property is not set.< | >components</tt> property is not set.</dd> | |||
/li> | <dt>pref:</dt><dd> <tt>UnsignedInt</tt> (optional). | |||
<li>pref: <tt>UnsignedInt</tt> (optional). | The preference of the address in relation to other addresses. Also | |||
The preference of this address in relation to other addresses. Also | see <xref target="prop-pref"/>.</dd> | |||
see <xref target="prop-pref"/>.</li> | <dt> | |||
<li> | phoneticScript:</dt><dd> <tt>String</tt> (optional). | |||
<t>phoneticScript: <tt>String</tt> (optional). | The script used in the value of the AddressComponent <tt>phoneti | |||
The script used in the value of the AddressComponent <tt>phoneti | c</tt> property. Also see <xref target="prop-phonetic"/>. | |||
c</tt> property. Also see <xref target="prop-phonetic"/>.</t> | </dd> | |||
</li> | <dt> | |||
<li> | phoneticSystem:</dt><dd> <tt>String</tt> (optional). | |||
<t>phoneticSystem: <tt>String</tt> (optional). | The phonetic system used in the AddressComponent <tt>phonetic</tt> | |||
The phonetic system used in the AddressComponent <tt>phonetic</tt> | property. Also see <xref target="prop-phonetic"/>.</dd> | |||
property. Also see <xref target="prop-phonetic"/>.</t> | </dl> | |||
</li> | <t>The following example illustrates the use of the <tt>address</tt> | |||
</ul> | property. Additional examples are shown in <xref target="address-examples"/>.< | |||
<t>The following example illustrates the use of the <tt>address</tt> | /t> | |||
property. Additional examples are in <xref target="address-examples"/>.</t> | ||||
<figure anchor="example-address-us"> | <figure anchor="example-address-us"> | |||
<name>Example of the address "54321 Oak St, Reston, VA 20190, USA" | ||||
</name> | <!--[rfced] Titles for Figures 30-32 | |||
a) May we remove the postal addresses from the titles of | ||||
Figures 30 and 31 to make them more concise? If so, may we list | ||||
the addresses in the text above the figures as shown below? | ||||
Original: | ||||
Section 2.5.1.1 | ||||
The following example illustrates the use of the address property. | ||||
Additional examples are in Section 2.5.1.3. | ||||
Figure 30: Example of the address "54321 Oak St, Reston, CA 20190, USA" | ||||
Section 2.5.1.3 | ||||
The following are examples of addresses, in addition to Figure 30. | ||||
Figure 31: Example of the address "46, 1 Sukhumvit 51 Alley, | ||||
Khlong Tan Nuea, Watthana, Bangkok 10110, Thailand" | ||||
Perhaps: | ||||
Section 2.5.1.1 | ||||
The following example illustrates the use of the address property for | ||||
"54321 Oak St, Reston, CA 20190, USA". Additional examples are shown | ||||
in Section 2.5.1.3. | ||||
Figure 30: Example of an Address in the USA | ||||
Section 2.5.1.3 | ||||
The following example illustrates the use of the address property for | ||||
"46, 1 Sukhumvit 51 Alley, Khlong Tan Nuea, Watthana, Bangkok 10110, | ||||
Thailand". See Figure 30 for an additional example. | ||||
Figure 31: Example of an Address in Thailand | ||||
b) FYI: We removed the section mention (Section 2.7.1) from the title of | ||||
Figure 32 and placed it within the added text above the figure as shown | ||||
below. Please let us know of any concerns. | ||||
Original: | ||||
Section 2.5.1.3 | ||||
Figure 32: Example of an address in Tokyo and its localization | ||||
Section 2.7.1 in Japanese. | ||||
Current: | ||||
The following example illustrates the use of an address in Tokyo and | ||||
its localization (Section 2.7.1) in Japanese. | ||||
Figure 32: Example of an Address in Tokyo and Its Localization | ||||
in Japanese | ||||
--> | ||||
<name>Example of the Address "54321 Oak St, Reston, VA 20190, USA" | ||||
</name> | ||||
<sourcecode name="" type="json"><![CDATA[ | <sourcecode name="" type="json"><![CDATA[ | |||
"addresses": { | "addresses": { | |||
"k23": { | "k23": { | |||
"contexts": { | "contexts": { | |||
"work": true | "work": true | |||
}, | }, | |||
"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" }, | |||
skipping to change at line 1279 ¶ | skipping to change at line 1646 ¶ | |||
], | ], | |||
"countryCode": "US", | "countryCode": "US", | |||
"defaultSeparator": ", ", | "defaultSeparator": ", ", | |||
"isOrdered": true | "isOrdered": true | |||
} | } | |||
} | } | |||
]]></sourcecode> | ]]></sourcecode> | |||
</figure> | </figure> | |||
</section> | </section> | |||
<section anchor="addresscomponent"> | <section anchor="addresscomponent"> | |||
<name>AddressComponent object</name> | <name>AddressComponent Object</name> | |||
<t>An AddressComponent object has the following properties:</t> | <t>An AddressComponent object has the following properties:</t> | |||
<ul spacing="normal"> | <dl spacing="normal"> | |||
<li>@type: <tt>String</tt>. | <dt>@type:</dt><dd> <tt>String</tt>. | |||
This <bcp14>MUST</bcp14> be <tt>AddressComponent</tt>, if set. | This <bcp14>MUST</bcp14> be <tt>AddressComponent</tt>, if set. | |||
</li> | </dd> | |||
<li>value: <tt>String</tt> (mandatory). | <dt>value:</dt><dd> <tt>String</tt> (mandatory). | |||
The value of this address component.</li> | The value of the address component.</dd> | |||
<li> | <dt> | |||
<t>kind: <tt>String</tt> (mandatory). | kind:</dt><dd><t> <tt>String</tt> (mandatory). | |||
The kind of this address component. The <xref target="enumerated- | The kind of the address component. The <xref target="enumerated-v | |||
values">enumerated</xref> values are: | alues">enumerated</xref> values are: | |||
</t> | </t> | |||
<ul spacing="normal"> | <ul spacing="compact"> | |||
<li><tt>room</tt>: the room or suite number or identifier.</li | <li><tt>room</tt>: the room, suite number, or identifier.</li> | |||
> | <li><tt>apartment</tt>: the extension designation such as the | |||
<li><tt>apartment</tt>: the extension designation, such as apa | apartment number, unit, or box number.</li> | |||
rtment number or unit or box number.</li> | <li><tt>floor</tt>: the floor or level the address is located | |||
<li><tt>floor</tt>: the floor or level this address is located | on.</li> | |||
on.</li> | <li><tt>building</tt>: the building, tower, or condominium the | |||
<li><tt>building</tt>: the building, tower, or condominium thi | address is located in.</li> | |||
s address is located in.</li> | <li><tt>number</tt>: the street number, e.g., "123". This val | |||
<li><tt>number</tt>: the street number, e.g., "123". This val | ue is not restricted to numeric values and can include any value such as number | |||
ue is not restricted to numeric values, and can include any value such as number | ranges ("112-10"), grid style ("39.2 RD"), alphanumerics ("N6W23001"), or fracti | |||
ranges ("112–10"), grid style ("39.2 RD"), alphanumerics ("N6W23001") or fracti | onals ("123 1/2").</li> | |||
onals ("123 1/2").</li> | ||||
<li><tt>name</tt>: the street name.</li> | <li><tt>name</tt>: the street name.</li> | |||
<li><tt>block</tt>: the block name or number.</li> | <li><tt>block</tt>: the block name or number.</li> | |||
<li><tt>subdistrict</tt>: the subdistrict, ward or other subun it of a district.</li> | <li><tt>subdistrict</tt>: the subdistrict, ward, or other subu nit of a district.</li> | |||
<li><tt>district</tt>: the district name.</li> | <li><tt>district</tt>: the district name.</li> | |||
<li><tt>locality</tt>: the municipality, city, town, village, | <li><tt>locality</tt>: the municipality, city, town, village, | |||
post-town, or another locality.</li> | post town, or other locality.</li> | |||
<li><tt>region</tt>: the administrative area, such as province | <li><tt>region</tt>: the administrative area such as province, | |||
, state, prefecture, county, canton.</li> | state, prefecture, county, or canton.</li> | |||
<li><tt>postcode</tt>: the postal code, post code, ZIP code or | <li><tt>postcode</tt>: the postal code, post code, ZIP code, o | |||
other short code associated with the address by the relevant country's postal s | r other short code associated with the address by the relevant country's postal | |||
ystem.</li> | system.</li> | |||
<li><tt>country</tt>: the country name.</li> | <li><tt>country</tt>: the country name.</li> | |||
<li><tt>direction</tt>: the Cardinal direction or quadrant, e. | <li><tt>direction</tt>: the cardinal direction or quadrant, e. | |||
g., "North".</li> | g., "north".</li> | |||
<li><tt>landmark</tt>: the publicly known prominent feature th | <li><tt>landmark</tt>: the publicly known prominent feature th | |||
at can substitute the street name and number, e.g., White House, Taj Mahal.</li> | at can substitute the street name and number, e.g., "White House" or "Taj Mahal" | |||
.</li> | ||||
<li><tt>postOfficeBox</tt>: the post office box number or iden tifier.</li> | <li><tt>postOfficeBox</tt>: the post office box number or iden tifier.</li> | |||
<li><tt>separator</tt>: a formatting separator between two ord ered address non-separator components. The <tt>value</tt> property of the compo nent includes the verbatim separator, for example a hyphen character or even an empty string. This value has higher precedence than the <tt>defaultSeparator</t t> property of the Address. Implementations <bcp14>MUST NOT</bcp14> insert two consecutive separator components, instead they <bcp14>SHOULD</bcp14> insert a si ngle separator component with the combined value. This component kind <bcp14>MU ST NOT</bcp14> be set if the Address <tt>isOrdered</tt> property value is <tt>fa lse</tt>.</li> | <li><tt>separator</tt>: a formatting separator between two ord ered address non-separator components. The <tt>value</tt> property of the compo nent includes the verbatim separator, for example, a hyphen character or even an empty string. This value has higher precedence than the <tt>defaultSeparator</ tt> property of the Address. Implementations <bcp14>MUST NOT</bcp14> insert two consecutive separator components; instead, they <bcp14>SHOULD</bcp14> insert a single separator component with the combined value. This component kind <bcp14> MUST NOT</bcp14> be set if the Address <tt>isOrdered</tt> property value is <tt> false</tt>.</li> | |||
</ul> | </ul> | |||
</li> | </dd> | |||
<li>phonetic: <tt>String</tt> (optional). This defines how to pro | <dt>phonetic:</dt><dd> <tt>String</tt> (optional). Defines how to | |||
nounce this name component. If this property is set, then at least one of the A | pronounce the name component. If this property is set, then at least one of th | |||
ddress object <tt>phoneticSystem</tt> or <tt>phoneticScript</tt> properties <bcp | e Address object <tt>phoneticSystem</tt> or <tt>phoneticScript</tt> properties < | |||
14>MUST</bcp14> be set. Also see <xref target="prop-phonetic"/>.</li> | bcp14>MUST</bcp14> be set. Also see <xref target="prop-phonetic"/>.</dd> | |||
</ul> | </dl> | |||
</section> | </section> | |||
<section anchor="address-examples"> | <section anchor="address-examples"> | |||
<name>Address examples</name> | <name>Address Examples</name> | |||
<t>The following are examples of addresses, in addition to <xref tar | <t>Examples of addresses are shown below; also see <xref target="exa | |||
get="example-address-us"/>.</t> | mple-address-us"/>.</t> | |||
<figure anchor="example-address-th"> | <figure anchor="example-address-th"> | |||
<name>Example of the address "46, 1 Sukhumvit 51 Alley, Khlong Tan Nuea, Watthana, Bangkok 10110, Thailand"</name> | <name>Example of the Address "46, 1 Sukhumvit 51 Alley, Khlong Tan Nuea, Watthana, Bangkok 10110, Thailand"</name> | |||
<sourcecode name="" type="json"><![CDATA[ | <sourcecode name="" type="json"><![CDATA[ | |||
"addresses": { | "addresses": { | |||
"k25": { | "k25": { | |||
"components": [ | "components": [ | |||
{ "kind": "number", "value": "46" }, | { "kind": "number", "value": "46" }, | |||
{ "kind": "name", "value": "1 Sukhumvit 51 Alley" }, | { "kind": "name", "value": "1 Sukhumvit 51 Alley" }, | |||
{ "kind": "subdistrict", "value": "Khlong Tan Nuea" }, | { "kind": "subdistrict", "value": "Khlong Tan Nuea" }, | |||
{ "kind": "district", "value": " Watthana" }, | { "kind": "district", "value": " Watthana" }, | |||
{ "kind": "locality", "value": "Bangkok" }, | { "kind": "locality", "value": "Bangkok" }, | |||
{ "kind": "country", "value": "Thailand" }, | { "kind": "country", "value": "Thailand" }, | |||
{ "kind": "postcode", "value": "10110" } | { "kind": "postcode", "value": "10110" } | |||
], | ], | |||
"defaultSeparator": ", ", | "defaultSeparator": ", ", | |||
"isOrdered": true | "isOrdered": true | |||
} | } | |||
} | } | |||
]]></sourcecode> | ]]></sourcecode> | |||
</figure> | </figure> | |||
<t> | ||||
The following example illustrates the use of an address in Tokyo and its localiz | ||||
ation (<xref target="localizations"/>) in Japanese. | ||||
</t> | ||||
<figure anchor="example-address-jp"> | <figure anchor="example-address-jp"> | |||
<name>Example of an address in Tokyo and its localization <xref ta rget="localizations"/> in Japanese.</name> | <name>Example of an Address in Tokyo and Its Localization in Japan ese</name> | |||
<sourcecode name="" type="json"><![CDATA[ | <sourcecode name="" type="json"><![CDATA[ | |||
"addresses": { | "addresses": { | |||
"k26": { | "k26": { | |||
"components": [ | "components": [ | |||
{ "kind": "block", "value": "2-7" }, | { "kind": "block", "value": "2-7" }, | |||
{ "kind": "separator", "value": "-" }, | { "kind": "separator", "value": "-" }, | |||
{ "kind": "number", "value": "2" }, | { "kind": "number", "value": "2" }, | |||
{ "kind": "separator", "value": " " }, | { "kind": "separator", "value": " " }, | |||
{ "kind": "district", "value": "Marunouchi" }, | { "kind": "district", "value": "Marunouchi" }, | |||
{ "kind": "locality", "value": "Chiyoda-ku" }, | { "kind": "locality", "value": "Chiyoda-ku" }, | |||
skipping to change at line 1383 ¶ | skipping to change at line 1753 ¶ | |||
} | } | |||
} | } | |||
} | } | |||
]]></sourcecode> | ]]></sourcecode> | |||
</figure> | </figure> | |||
</section> | </section> | |||
</section> | </section> | |||
</section> | </section> | |||
<section anchor="resource-properties" numbered="true" toc="default"> | <section anchor="resource-properties" numbered="true" toc="default"> | |||
<name>Resource Properties</name> | <name>Resource Properties</name> | |||
<t>This section defines properties for digital resources associated with the entity represented by this Card.</t> | <t>This section defines properties for digital resources associated with the entity represented by the Card.</t> | |||
<section anchor="cryptoKeys" numbered="true" toc="default"> | <section anchor="cryptoKeys" numbered="true" toc="default"> | |||
<name>cryptoKeys</name> | <name>cryptoKeys</name> | |||
<t>Type: <tt>Id[CryptoKey]</tt> (optional).</t> | <t>Type: <tt>Id[CryptoKey]</tt> (optional)</t> | |||
<t>These are cryptographic resources such as public keys and certifica | <t>These are cryptographic resources such as public keys and certifica | |||
tes associated with the entity represented by this Card. A CryptoKey object has | tes associated with the entity represented by the Card. A CryptoKey object has | |||
all properties of the <xref target="resource">Resource</xref> data type, with t | all properties of the <xref target="resource">Resource</xref> data type, with th | |||
he following additional definitions:</t> | e following additional definition:</t> | |||
<ul> | <ul> | |||
<li>The <tt>@type</tt> property value <bcp14>MUST</bcp14> be <tt>Cry ptoKey</tt>, if set.</li> | <li>The <tt>@type</tt> property value <bcp14>MUST</bcp14> be <tt>Cry ptoKey</tt>, if set.</li> | |||
</ul> | </ul> | |||
<t>The following example shows how refer to an external cryptographic resource.</t> | <t>The following example shows how to refer to an external cryptograph ic resource.</t> | |||
<figure anchor="example-cryptoKeys-external"> | <figure anchor="example-cryptoKeys-external"> | |||
<name><tt>cryptoKeys</tt> example with external data</name> | <name>Example of <tt>cryptoKeys</tt> with External Data</name> | |||
<sourcecode name="" type="json"><![CDATA[ | <sourcecode name="" type="json"><![CDATA[ | |||
"cryptoKeys": { | "cryptoKeys": { | |||
"mykey1": { | "mykey1": { | |||
"uri": "https://www.example.com/keys/jdoe.cer" | "uri": "https://www.example.com/keys/jdoe.cer" | |||
} | } | |||
} | } | |||
]]></sourcecode> | ]]></sourcecode> | |||
</figure> | </figure> | |||
<t>The following example shows how to embed key data in the CryptoKey. The key data is depicted in multiple lines only for demonstration purposes.</t > | <t>The following example shows how to embed key data in the CryptoKey. The key data is depicted in multiple lines only for demonstration purposes.</t > | |||
<figure anchor="example-cryptoKeys-embedded"> | <figure anchor="example-cryptoKeys-embedded"> | |||
<name><tt>cryptoKeys</tt> example with embedded data</name> | <name>Example of <tt>cryptoKeys</tt> with Embedded Data</name> | |||
<sourcecode name="" type="json"><![CDATA[ | ||||
<!--[rfced] The sourcecode in Figure 34 (Section 2.6.1) was 8 | ||||
characters over the 72-character limit, so we adjusted the line | ||||
breaks as shown below. Please let us know if any further updates | ||||
are needed. | ||||
Original: | ||||
"cryptoKeys": { | "cryptoKeys": { | |||
"mykey2": { | "mykey2": { | |||
"uri": "data:application/pgp-keys;base64,LS0tLS1CRUdJTiBSU0EgUFVCTElDIEtF | "uri": "data:application/pgp-keys;base64,LS0tLS1CRUdJTiBSU0EgUFVCTElDIEtF | |||
WS0tLS0tCk1JSUJDZ0tDQVFFQSt4R1ovd2N6OXVnRnBQMDdOc3BvNlUxN2wwWWhGa | WS0tLS0tCk1JSUJDZ0tDQVFFQSt4R1ovd2N6OXVnRnBQMDdOc3BvNlUxN2wwWWhGa | |||
UZweHhVNHBUazNMaWZ6OVIzenNJc3UKRVJ3dGE3K2ZXSWZ4T28yMDhldHQvamhza2 | UZweHhVNHBUazNMaWZ6OVIzenNJc3UKRVJ3dGE3K2ZXSWZ4T28yMDhldHQvamhza2 | |||
lWb2RTRXQzUUJHaDRYQmlweVdvcEt3WjkzSEhhRFZaQUFMaS8yQQoreFRCdFdkRW8 | lWb2RTRXQzUUJHaDRYQmlweVdvcEt3WjkzSEhhRFZaQUFMaS8yQQoreFRCdFdkRW8 | |||
3WEdVdWpLRHZDMi9hWkt1a2ZqcE9pVUk4QWhMQWZqbWxjRC9VWjFRUGgwbUhzZ2xS | 3WEdVdWpLRHZDMi9hWkt1a2ZqcE9pVUk4QWhMQWZqbWxjRC9VWjFRUGgwbUhzZ2xS | |||
TkNtcEN3Cm13U1hBOVZObWh6K1BpQitEbWw0V1duS1cvVkhvMnVqVFh4cTcrZWZNV | TkNtcEN3Cm13U1hBOVZObWh6K1BpQitEbWw0V1duS1cvVkhvMnVqVFh4cTcrZWZNV | |||
TRIMmZueTNTZTNLWU9zRlBGR1oxVE4KUVNZbEZ1U2hXckhQdGlMbVVkUG9QNkNWMm | TRIMmZueTNTZTNLWU9zRlBGR1oxVE4KUVNZbEZ1U2hXckhQdGlMbVVkUG9QNkNWMm | |||
1NTDF0aytsN0RJSXFYclFoTFVLREFDZU01cm9NeDBrTGhVV0I4UAorMHVqMUNObE5 | 1NTDF0aytsN0RJSXFYclFoTFVLREFDZU01cm9NeDBrTGhVV0I4UAorMHVqMUNObE5 | |||
ONEpSWmxDN3hGZnFpTWJGUlU5WjRONll3SURBUUFCCi0tLS0tRU5EIFJTQSBQVUJM | ONEpSWmxDN3hGZnFpTWJGUlU5WjRONll3SURBUUFCCi0tLS0tRU5EIFJTQSBQVUJM | |||
SUMgS0VZLS0tLS0K" | SUMgS0VZLS0tLS0K" | |||
} | } | |||
} | } | |||
Current: | ||||
"cryptoKeys": { | ||||
"mykey2": { | ||||
"uri": "data:application/pgp-keys;base64,LS0tLS1CRUdJTiBSU0EgUFVC | ||||
TElDIEtFWS0tLS0tCk1JSUJDZ0tDQVFFQSt4R1ovd2N6OXVnRnBQMDdOc | ||||
3BvNlUxN2wwWWhGaUZweHhVNHBUazNMaWZ6OVIzenNJc3UKRVJ3dGE3K2 | ||||
ZXSWZ4T28yMDhldHQvamhza2lWb2RTRXQzUUJHaDRYQmlweVdvcEt3Wjk | ||||
zSEhhRFZaQUFMaS8yQQoreFRCdFdkRW83WEdVdWpLRHZDMi9hWkt1a2Zq | ||||
cE9pVUk4QWhMQWZqbWxjRC9VWjFRUGgwbUhzZ2xSTkNtcEN3Cm13U1hBO | ||||
VZObWh6K1BpQitEbWw0V1duS1cvVkhvMnVqVFh4cTcrZWZNVTRIMmZueT | ||||
NTZTNLWU9zRlBGR1oxVE4KUVNZbEZ1U2hXckhQdGlMbVVkUG9QNkNWMm1 | ||||
NTDF0aytsN0RJSXFYclFoTFVLREFDZU01cm9NeDBrTGhVV0I4UAorMHVq | ||||
MUNObE5ONEpSWmxDN3hGZnFpTWJGUlU5WjRONll3SURBUUFCCi0tLS0tR | ||||
U5EIFJTQSBQVUJMSUMgS0VZLS0tLS0K" | ||||
} | ||||
} | ||||
--> | ||||
<sourcecode name="" type="json"><![CDATA[ | ||||
"cryptoKeys": { | ||||
"mykey2": { | ||||
"uri": "data:application/pgp-keys;base64,LS0tLS1CRUdJTiBSU0EgUFVC | ||||
TElDIEtFWS0tLS0tCk1JSUJDZ0tDQVFFQSt4R1ovd2N6OXVnRnBQMDdOc | ||||
3BvNlUxN2wwWWhGaUZweHhVNHBUazNMaWZ6OVIzenNJc3UKRVJ3dGE3K2 | ||||
ZXSWZ4T28yMDhldHQvamhza2lWb2RTRXQzUUJHaDRYQmlweVdvcEt3Wjk | ||||
zSEhhRFZaQUFMaS8yQQoreFRCdFdkRW83WEdVdWpLRHZDMi9hWkt1a2Zq | ||||
cE9pVUk4QWhMQWZqbWxjRC9VWjFRUGgwbUhzZ2xSTkNtcEN3Cm13U1hBO | ||||
VZObWh6K1BpQitEbWw0V1duS1cvVkhvMnVqVFh4cTcrZWZNVTRIMmZueT | ||||
NTZTNLWU9zRlBGR1oxVE4KUVNZbEZ1U2hXckhQdGlMbVVkUG9QNkNWMm1 | ||||
NTDF0aytsN0RJSXFYclFoTFVLREFDZU01cm9NeDBrTGhVV0I4UAorMHVq | ||||
MUNObE5ONEpSWmxDN3hGZnFpTWJGUlU5WjRONll3SURBUUFCCi0tLS0tR | ||||
U5EIFJTQSBQVUJMSUMgS0VZLS0tLS0K" | ||||
} | ||||
} | ||||
]]></sourcecode> | ]]></sourcecode> | |||
</figure> | </figure> | |||
</section> | </section> | |||
<section anchor="directories" numbered="true" toc="default"> | <section anchor="directories" numbered="true" toc="default"> | |||
<name>directories</name> | <name>directories</name> | |||
<t>Type: <tt>Id[Directory]</tt> (optional).</t> | <t>Type: <tt>Id[Directory]</tt> (optional)</t> | |||
<t>These are directory service resources, such as entries in a directo | <t>These are directory service resources such as entries in a director | |||
ry or organizational directories for lookup. A Directory object has all propert | y or organizational directories for lookup. A Directory object has all properti | |||
ies of the <xref target="resource">Resource</xref> data type, with the following | es of the <xref target="resource">Resource</xref> data type, with the following | |||
additional definitions:</t> | additional definitions:</t> | |||
<ul> | <ul> | |||
<li>The <tt>@type</tt> property value <bcp14>MUST</bcp14> be <tt>Dir ectory</tt>, if set.</li> | <li>The <tt>@type</tt> property value <bcp14>MUST</bcp14> be <tt>Dir ectory</tt>, if set.</li> | |||
<li> | <li> | |||
<t>The <tt>kind</tt> property is mandatory. Its <xref target="enu merated-values">enumerated</xref> values are:</t> | <t>The <tt>kind</tt> property is mandatory. Its <xref target="enu merated-values">enumerated</xref> values are:</t> | |||
<ul> | <ul> | |||
<li><tt>directory</tt>: the resource is a directory service wher | <li><tt>directory</tt>: the resource is a directory service that | |||
e the entity represented by this Card is part of. This typically is an organiza | the entity represented by the Card is a part of. This typically is an organiza | |||
tional directory that also contains associated entities, e.g., co-workers and m | tional directory that also contains associated entities, e.g., co-workers and ma | |||
anagement in a company directory.</li> | nagement in a company directory.</li> | |||
<li><tt>entry</tt>: the resource is a directory entry of the ent | <li><tt>entry</tt>: the resource is a directory entry of the ent | |||
ity represented by this Card. In contrast to the <tt>directory</tt> type, this | ity represented by the Card. In contrast to the <tt>directory</tt> type, this i | |||
is the specific URI for the entity <em>within</em> a directory.</li> | s the specific URI for the entity <em>within</em> a directory.</li> | |||
</ul> | </ul> | |||
</li> | </li> | |||
</ul> | </ul> | |||
<t>In addition, the Directory object has the following property:</t> | <t>In addition, the Directory object has the following property:</t> | |||
<ul> | <dl> | |||
<li>listAs: <tt>UnsignedInt</tt> (optional). | <dt>listAs:</dt><dd> <tt>UnsignedInt</tt> (optional). | |||
This defines the position of this directory resource in the list of al | Defines the position of the directory resource in the list of all Dire | |||
l Directory objects having the same <tt>kind</tt> in this Card. If set, the <tt | ctory objects having the same <tt>kind</tt> in the Card. If set, the <tt>listAs | |||
>listAs</tt> value <bcp14>MUST</bcp14> be higher than zero. Multiple directory | </tt> value <bcp14>MUST</bcp14> be higher than zero. Multiple directory resourc | |||
resources <bcp14>MAY</bcp14> have the same <tt>listAs</tt> property value, or no | es <bcp14>MAY</bcp14> have the same <tt>listAs</tt> property value or none. Sor | |||
ne. Sorting such entries is implementation-specific. | ting such entries is implementation-specific. | |||
</li> | </dd> | |||
</ul> | </dl> | |||
<figure anchor="example-directories"> | <figure anchor="example-directories"> | |||
<name><tt>directories</tt> example</name> | <name><tt>directories</tt> Example</name> | |||
<sourcecode name="" type="json"><![CDATA[ | <sourcecode name="" type="json"><![CDATA[ | |||
"directories": { | "directories": { | |||
"dir1": { | "dir1": { | |||
"kind": "entry", | "kind": "entry", | |||
"uri": "https://dir.example.com/addrbook/jdoe/Jean%20Dupont.vcf" | "uri": "https://dir.example.com/addrbook/jdoe/Jean%20Dupont.vcf" | |||
}, | }, | |||
"dir2": { | "dir2": { | |||
"kind": "directory", | "kind": "directory", | |||
"uri": "ldap://ldap.example/o=Example%20Tech,ou=Engineering", | "uri": "ldap://ldap.example/o=Example%20Tech,ou=Engineering", | |||
"pref": 1 | "pref": 1 | |||
} | } | |||
]]></sourcecode> | ]]></sourcecode> | |||
</figure> | </figure> | |||
</section> | </section> | |||
<section anchor="links" numbered="true" toc="default"> | <section anchor="links" numbered="true" toc="default"> | |||
<name>links</name> | <name>links</name> | |||
<t>Type: <tt>Id[Link]</tt> (optional).</t> | <t>Type: <tt>Id[Link]</tt> (optional)</t> | |||
<t>These are links to resources that do not fit any of the other use-c | <t>These are links to resources that do not fit any of the other use-c | |||
ase specific resource properties. A Link object has all properties of the <xref | ase-specific resource properties. A Link object has all properties of the <xref | |||
target="resource">Resource</xref> data type, with the following additional defi | target="resource">Resource</xref> data type, with the following additional defi | |||
nitions:</t> | nitions:</t> | |||
<ul> | <ul> | |||
<li>The <tt>@type</tt> property value <bcp14>MUST</bcp14> be <tt>Lin k</tt>, if set.</li> | <li>The <tt>@type</tt> property value <bcp14>MUST</bcp14> be <tt>Lin k</tt>, if set.</li> | |||
<li><t>The <tt>kind</tt> property is optional. Its <xref target="en umerated-values">enumerated</xref> values are:</t> | <li><t>The <tt>kind</tt> property is optional. Its <xref target="en umerated-values">enumerated</xref> values are:</t> | |||
<ul> | <ul> | |||
<li><tt>contact</tt>: the resource is a URI by which the entity represented by this Card may be contacted, including web forms or other media th at require user interaction.</li> | <li><tt>contact</tt>: the resource is a URI by which the entity represented by the Card may be contacted; this includes web forms or other media that require user interaction.</li> | |||
</ul> | </ul> | |||
</li> | </li> | |||
</ul> | </ul> | |||
<figure anchor="example-links"> | <figure anchor="example-links"> | |||
<name><tt>links</tt> example</name> | <name><tt>links</tt> Example</name> | |||
<sourcecode name="" type="json"><![CDATA[ | <sourcecode name="" type="json"><![CDATA[ | |||
"links": { | "links": { | |||
"link3": { | "link3": { | |||
"kind": "contact", | "kind": "contact", | |||
"uri": "mailto:contact@example.com", | "uri": "mailto:contact@example.com", | |||
"pref": 1 | "pref": 1 | |||
} | } | |||
} | } | |||
]]></sourcecode> | ]]></sourcecode> | |||
</figure> | </figure> | |||
</section> | </section> | |||
<section anchor="media" numbered="true" toc="default"> | <section anchor="media" numbered="true" toc="default"> | |||
<name>media</name> | <name>media</name> | |||
<t>Type: <tt>Id[Media]</tt> (optional).</t> | <t>Type: <tt>Id[Media]</tt> (optional)</t> | |||
<t>These are media resources such as photographs, avatars, or sounds a | <t>These are media resources such as photographs, avatars, or sounds t | |||
ssociated with the entity represented by this Card. A Media object has all prop | hat are associated with the entity represented by the Card. A Media object has | |||
erties of the <xref target="resource">Resource</xref> data type, with the follow | all properties of the <xref target="resource">Resource</xref> data type, with th | |||
ing additional definitions:</t> | e following additional definitions:</t> | |||
<ul> | <ul> | |||
<li>The <tt>@type</tt> property value <bcp14>MUST</bcp14> be <tt>Med ia</tt>, if set.</li> | <li>The <tt>@type</tt> property value <bcp14>MUST</bcp14> be <tt>Med ia</tt>, if set.</li> | |||
<li> | <li> | |||
<t>The <tt>kind</tt> property is mandatory. Its <xref target="enu merated-values">enumerated</xref> values are:</t> | <t>The <tt>kind</tt> property is mandatory. Its <xref target="enu merated-values">enumerated</xref> values are:</t> | |||
<ul> | <ul spacing="normal"> | |||
<li><tt>photo</tt>: the resource is a photograph or avatar.</li> | <li><tt>photo</tt>: the resource is a photograph or avatar.</li> | |||
<li><tt>sound</tt>: the resource is audio media, e.g., to speci fy the proper pronunciation of the name property contents.</li> | <li><tt>sound</tt>: the resource is audio media, e.g., to speci fy the proper pronunciation of the name property contents.</li> | |||
<li><tt>logo</tt>: the resource is a graphic image or logo assoc iated with the entity represented by this Card.</li> | <li><tt>logo</tt>: the resource is a graphic image or logo assoc iated with the entity represented by the Card.</li> | |||
</ul> | </ul> | |||
</li> | </li> | |||
</ul> | </ul> | |||
<figure anchor="example-media"> | <figure anchor="example-media"> | |||
<name><tt>media</tt> example</name> | <name><tt>media</tt> Example</name> | |||
<sourcecode name="" type="json"><![CDATA[ | <sourcecode name="" type="json"><![CDATA[ | |||
"media": { | "media": { | |||
"res45": { | "res45": { | |||
"kind": "sound", | "kind": "sound", | |||
"uri": "CID:JOHNQ.part8.19960229T080000.xyzMail@example.com" | "uri": "CID:JOHNQ.part8.19960229T080000.xyzMail@example.com" | |||
}, | }, | |||
"res47": { | "res47": { | |||
"kind": "logo", | "kind": "logo", | |||
"uri": "https://www.example.com/pub/logos/abccorp.jpg" | "uri": "https://www.example.com/pub/logos/abccorp.jpg" | |||
}, | }, | |||
skipping to change at line 1522 ¶ | skipping to change at line 1934 ¶ | |||
"kind": "photo", | "kind": "photo", | |||
"uri": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAASABIAAD/4..." | "uri": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAASABIAAD/4..." | |||
} | } | |||
} | } | |||
]]></sourcecode> | ]]></sourcecode> | |||
</figure> | </figure> | |||
</section> | </section> | |||
</section> | </section> | |||
<section anchor="multilingual-properties" numbered="true" toc="default"> | <section anchor="multilingual-properties" numbered="true" toc="default"> | |||
<name>Multilingual Properties</name> | <name>Multilingual Properties</name> | |||
<t>This section defines properties how to localize the content of this C ard in human languages.</t> | <t>This section defines properties for localizing the content of the Car d in human languages.</t> | |||
<section anchor="localizations" numbered="true" toc="default"> | <section anchor="localizations" numbered="true" toc="default"> | |||
<name>localizations</name> | <name>localizations</name> | |||
<t>Type: String[PatchObject] (optional).</t> | <t>Type: String[PatchObject] (optional)</t> | |||
<t>This localizes property values in this Card to languages other than | <t>This localizes property values to languages (other than the main la | |||
the main language. Localizations provide language-specific alternatives for ex | nguage) in the Card. Localizations provide language-specific alternatives for e | |||
isting property values and <bcp14>SHOULD NOT</bcp14> add new properties.</t> | xisting property values and <bcp14>SHOULD NOT</bcp14> add new properties.</t> | |||
<t>The keys in the localizations property object are language tags <xr | <t>The keys in the localizations property object are language tags <xr | |||
ef target="RFC5646"/>. The values are patch objects which localize the Card in t | ef target="RFC5646"/>. The values are patch objects that localize the Card in th | |||
he respective language tag. The paths in the PatchObject are relative to the Ca | e respective language tag. The paths in the PatchObject are relative to the Car | |||
rd that includes the <tt>localizations</tt> property. A patch <bcp14>MUST NOT</ | d that includes the <tt>localizations</tt> property. A patch <bcp14>MUST NOT</b | |||
bcp14> target the <tt>localizations</tt> property.</t> | cp14> target the <tt>localizations</tt> property.</t> | |||
<t>Conceptually, a Card is localized as follows:</t> | <t>Conceptually, a Card is localized as follows:</t> | |||
<ul> | <ul> | |||
<li>Determine the language tag in which this Card should be localize d in.</li> | <li>Determine the language tag in which the Card should be localized .</li> | |||
<li>If the localizations property includes a key for that language, obtain the PatchObject value. If there is no such key, stop.</li> | <li>If the localizations property includes a key for that language, obtain the PatchObject value. If there is no such key, stop.</li> | |||
<li>Create a copy of the Card, but do not copy the localizations pro perty.</li> | <li>Create a copy of the Card, but do not copy the localizations pro perty.</li> | |||
<li>Apply all patches in the PatchObject to the copy of the Card.</l i> | <li>Apply all patches in the PatchObject to the copy of the Card.</l i> | |||
<li>Optionally, set the <tt>language</tt> property in the copy of th e Card.</li> | <li>Optionally, set the <tt>language</tt> property in the copy of th e Card.</li> | |||
<li>Use the patched copy of the Card as the localized variant of the original Card.</li> | <li>Use the patched copy of the Card as the localized variant of the original Card.</li> | |||
</ul> | </ul> | |||
<t>A patch in the PatchObject may contain any value type. Its value < bcp14>MUST</bcp14> be a valid value according to the definition of the patched p roperty.</t> | <t>A patch in the PatchObject may contain any value type. Its value < bcp14>MUST</bcp14> be a valid value according to the definition of the patched p roperty.</t> | |||
<t><xref target="example-localizations-replace"/> localizes the <tt>na me</tt> property by completely replacing its contents in Ukrainian language with Cyrillic script.</t> | <t><xref target="example-localizations-replace"/> localizes the <tt>na me</tt> property by completely replacing its contents in Ukrainian language with Cyrillic script.</t> | |||
<figure anchor="example-localizations-replace"> | <figure anchor="example-localizations-replace"> | |||
<name>Example for localizing a top-level property</name> | <name>Example of Localizing a Top-Level Property</name> | |||
<artwork><![CDATA[ | <sourcecode type=""><![CDATA[ | |||
{ | { | |||
"name": { | "name": { | |||
"components": [ | "components": [ | |||
{ "kind": "title", "value": "Mr." }, | { "kind": "title", "value": "Mr." }, | |||
{ "kind": "given", "value": "Ivan" }, | { "kind": "given", "value": "Ivan" }, | |||
{ "kind": "given2", "value": "Petrovich" }, | { "kind": "given2", "value": "Petrovich" }, | |||
{ "kind": "surname", "value": "Vasiliev" } | { "kind": "surname", "value": "Vasiliev" } | |||
] | ] | |||
}, | }, | |||
"localizations": { | "localizations": { | |||
skipping to change at line 1564 ¶ | skipping to change at line 1976 ¶ | |||
"components": [ | "components": [ | |||
{ "kind": "title", "value": "г-н" }, | { "kind": "title", "value": "г-н" }, | |||
{ "kind": "given", "value": "Иван" }, | { "kind": "given", "value": "Иван" }, | |||
{ "kind": "given2", "value": "Петрович" }, | { "kind": "given2", "value": "Петрович" }, | |||
{ "kind": "surname", "value": "Васильев" } | { "kind": "surname", "value": "Васильев" } | |||
] | ] | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
]]></artwork> | ]]></sourcecode> | |||
</figure> | </figure> | |||
<t><xref target="example-localizations-patch"/> localizes the title na me by patching <em>inside</em> the <tt>titles</tt> property. All properties but the <tt>name</tt> property in the Title object are left as-is.</t> | <t><xref target="example-localizations-patch"/> localizes the title na me by patching <em>inside</em> the <tt>titles</tt> property. All properties, ex cept the <tt>name</tt> property in the Title object, are left as is.</t> | |||
<figure anchor="example-localizations-patch"> | <figure anchor="example-localizations-patch"> | |||
<name>Example for localizing a nested property</name> | <name>Example of Localizing a Nested Property</name> | |||
<artwork><![CDATA[ | ||||
<!--[rfced] In Figure 39, is the term "autor" correct, or should it be | ||||
"author"? | ||||
Original: | ||||
"titles/t1/name": "autor" | ||||
--> | ||||
<sourcecode type=""><![CDATA[ | ||||
"name": { | "name": { | |||
"full": "Gabriel García Márquez" | "full": "Gabriel García Márquez" | |||
}, | }, | |||
"titles": { | "titles": { | |||
"t1": { | "t1": { | |||
"kind": "title", | "kind": "title", | |||
"name": "novelist" | "name": "novelist" | |||
} | } | |||
}, | }, | |||
"localizations": { | "localizations": { | |||
"es": { | "es": { | |||
"titles/t1/name": "autor" | "titles/t1/name": "autor" | |||
} | } | |||
} | } | |||
]]></artwork> | ]]></sourcecode> | |||
</figure> | </figure> | |||
</section> | </section> | |||
</section> | </section> | |||
<section anchor="additional-properties" numbered="true" toc="default"> | <section anchor="additional-properties" numbered="true" toc="default"> | |||
<name>Additional Properties</name> | <name>Additional Properties</name> | |||
<t>This section defines properties for which none of the previous sectio ns are appropriate.</t> | <t>This section defines properties for which none of the previous sectio ns are appropriate.</t> | |||
<section anchor="anniversaries" numbered="true" toc="default"> | <section anchor="anniversaries" numbered="true" toc="default"> | |||
<name>anniversaries</name> | <name>anniversaries</name> | |||
<t>Type : Id[Anniversary] (optional).</t> | <t>Type: Id[Anniversary] (optional)</t> | |||
<t>These are memorable dates and events for the entity represented by | <t>These are memorable dates and events for the entity represented by | |||
this Card. An Anniversary object has the following properties:</t> | the Card. An Anniversary object has the following properties:</t> | |||
<ul spacing="normal"> | <dl spacing="normal"> | |||
<li>@type: <tt>String</tt>. | <dt>@type:</dt><dd> <tt>String</tt>. | |||
This <bcp14>MUST</bcp14> be <tt>Anniversary</tt>, if set. | This <bcp14>MUST</bcp14> be <tt>Anniversary</tt>, if set. | |||
</li> | </dd> | |||
<li> | <dt> | |||
<t>kind: <tt>String</tt> (mandatory). | kind:</dt><dd><t> <tt>String</tt> (mandatory). | |||
Specifies the kind of the anniversary. The <xref target="enumerat | Specifies the kind of anniversary. The <xref target="enumerated-v | |||
ed-values">enumerated</xref> values are: | alues">enumerated</xref> values are: | |||
</t> | </t> | |||
<ul spacing="normal"> | <ul spacing="compact"> | |||
<li><tt>birth</tt>: a birthday anniversary</li> | <li><tt>birth</tt>: a birthday anniversary</li> | |||
<li><tt>death</tt>: a deathday anniversary</li> | <li><tt>death</tt>: a deathday anniversary</li> | |||
<li><tt>wedding</tt>: a wedding day anniversary</li> | <li><tt>wedding</tt>: a wedding day anniversary</li> | |||
</ul> | </ul> | |||
</li> | </dd> | |||
<li> | <dt> | |||
<t>date: <tt>PartialDate|Timestamp</tt> (mandatory, defaultType: < | date:</dt><dd><t> <tt>PartialDate|Timestamp</tt> (mandatory; defau | |||
tt>PartialDate</tt>).</t> | ltType: <tt>PartialDate</tt>). The date of the anniversary in the Gregorian cal | |||
<t>The date of this anniversary in the Gregorian calendar. This < | endar. This <bcp14>MUST</bcp14> be either a whole or partial calendar date or a | |||
bcp14>MUST</bcp14> either be a whole or partial calendar date or a complete UTC | complete UTC timestamp (see the definition of the Timestamp and PartialDate obj | |||
timestamp (see the definition of the Timestamp and PartialDate object types belo | ect types below).</t> | |||
w).</t> | </dd> | |||
</li> | <dt>place:</dt><dd> Address (optional). An address associated with t | |||
<li>place: Address (optional). | his anniversary, e.g., the place of birth or death.</dd> | |||
An address associated with this anniversary, e.g., the place of bir | </dl> | |||
th or death.</li> | <t>A PartialDate object represents a complete or partial calendar date | |||
</ul> | in the Gregorian calendar. It represents a complete date, a year, a month in a | |||
<t>A PartialDate object represents a complete or partial calendar date | year, or a day in a month. It has the following properties, of which at least | |||
in the Gregorian calendar. It represents either a complete date, or a year, or | <tt>year</tt> or <tt>month</tt> and <tt>day</tt> <bcp14>MUST</bcp14> be set:</t> | |||
a month in a year, or a day in a month. It has the following properties, of wh | <dl spacing="normal"> | |||
ich at least <tt>year</tt> or <tt>month</tt> and <tt>day</tt> <bcp14>MUST</bcp14 | <dt>@type:</dt><dd> <tt>String</tt>. | |||
> be set:</t> | ||||
<ul spacing="normal"> | ||||
<li>@type: <tt>String</tt>. | ||||
This <bcp14>MUST</bcp14> be <tt>PartialDate</tt>, if set. | This <bcp14>MUST</bcp14> be <tt>PartialDate</tt>, if set. | |||
</li> | </dd> | |||
<li>year: <tt>UnsignedInt</tt> (optional). This is the calendar yea | <dt>year: </dt><dd><tt>UnsignedInt</tt> (optional). The calendar ye | |||
r.</li> | ar.</dd> | |||
<li>month: <tt>UnsignedInt</tt> (optional). This is the calendar mo | <dt>month:</dt><dd> <tt>UnsignedInt</tt> (optional). The calendar m | |||
nth, represented as the integers 1 <= month <= 12. If this property is se | onth, represented as the integers 1 <= month <= 12. If this property is s | |||
t then either <tt>year</tt> or <tt>day</tt> <bcp14>MUST</bcp14> be set.</li> | et, then either <tt>year</tt> or <tt>day</tt> <bcp14>MUST</bcp14> be set.</dd> | |||
<li>day: <tt>UnsignedInt</tt> (optional). This is the calendar mont | <dt>day:</dt><dd> <tt>UnsignedInt</tt> (optional). The calendar mon | |||
h day, represented as the integers 1 <= day <= 31, depending on the validi | th day, represented as the integers 1 <= day <= 31, depending on the valid | |||
ty within the month and year. If this property is set then <tt>month</tt> <bcp1 | ity within the month and year. If this property is set, | |||
4>MUST</bcp14> be set.</li> | then <tt>month</tt> <bcp14>MUST</bcp14> be set.</dd> | |||
<li>calendarScale: <tt>String</tt> (optional). This is the calendar | <dt>calendarScale:</dt><dd> <tt>String</tt> (optional). The calenda | |||
system in which this date occurs, in lowercase. This <bcp14>MUST</bcp14> be ei | r system in which this date occurs, in lowercase. This <bcp14>MUST</bcp14> be e | |||
ther a CLDR-registered calendar system name <xref target="RFC7529" format="defau | ither a calendar system name registered as a Common Locale Data Repository (CLDR | |||
lt"/> or a vendor-specific value. The year, month and day still <bcp14>MUST</bc | ) <xref target="RFC7529" format="default"/> or a vendor-specific value. The yea | |||
p14> be represented in the Gregorian calendar. Note that the <tt>year</tt> prop | r, month, and day still <bcp14>MUST</bcp14> be represented in the Gregorian cale | |||
erty might be required to convert the date between the Gregorian calendar and th | ndar. Note that the <tt>year</tt> property might be required to convert the dat | |||
e respective calendar system.</li> | e between the Gregorian calendar and the respective calendar system.</dd> | |||
</ul> | </dl> | |||
<t>A Timestamp object has the following properties:</t> | <t>A Timestamp object has the following properties:</t> | |||
<ul spacing="normal"> | <dl spacing="normal"> | |||
<li>@type: <tt>String</tt>. | <dt>@type:</dt><dd> <tt>String</tt>. This <bcp14>MUST</bcp14> be <tt | |||
This <bcp14>MUST</bcp14> be <tt>Timestamp</tt>, if set. | >Timestamp</tt>, if set. | |||
</li> | </dd> | |||
<li>utc: <tt>UTCDateTime</tt> (mandatory). Specifies the point in t | <dt>utc:</dt><dd> <tt>UTCDateTime</tt> (mandatory). Specifies the p | |||
ime in UTC time. | oint in time in UTC time. | |||
</li> | </dd> | |||
</ul> | </dl> | |||
<t><xref target="example-anniversaries"/> illustrates anniversaries wi | <t><xref target="example-anniversaries"/> illustrates anniversaries wi | |||
th partial dates and timestamp. Note how the <tt>@type</tt> property is set for | th partial dates and a timestamp. Note how the <tt>@type</tt> property is set f | |||
the <tt>Timestamp</tt> object value according to the rules defined <xref target | or the <tt>Timestamp</tt> object value according to the rules defined in <xref t | |||
="prop-type"/>.</t> | arget="prop-type"/>.</t> | |||
<figure anchor="example-anniversaries"> | <figure anchor="example-anniversaries"> | |||
<name><tt>anniversaries</tt> example</name> | <name><tt>anniversaries</tt> Example</name> | |||
<sourcecode name="" type="json"><![CDATA[ | <sourcecode name="" type="json"><![CDATA[ | |||
"anniversaries": { | "anniversaries": { | |||
"k8": { | "k8": { | |||
"kind": "birth", | "kind": "birth", | |||
"date": { | "date": { | |||
"year": 1953, | "year": 1953, | |||
"month": 4, | "month": 4, | |||
"day": 15 | "day": 15 | |||
} | } | |||
}, | }, | |||
skipping to change at line 1663 ¶ | skipping to change at line 2081 ¶ | |||
"place": { | "place": { | |||
"full": "4445 Tree Street\nNew England, ND 58647\nUSA" | "full": "4445 Tree Street\nNew England, ND 58647\nUSA" | |||
} | } | |||
} | } | |||
} | } | |||
]]></sourcecode> | ]]></sourcecode> | |||
</figure> | </figure> | |||
</section> | </section> | |||
<section anchor="keywords" numbered="true" toc="default"> | <section anchor="keywords" numbered="true" toc="default"> | |||
<name>keywords</name> | <name>keywords</name> | |||
<t>Type: <tt>String[Boolean]</tt> (optional). | <t>Type: <tt>String[Boolean]</tt> (optional)</t><t> | |||
A set of free-text keywords, also known as <em>tags</em>. The set is represente d as an object, with each key being a keyword. The boolean value <bcp14>MUST</b cp14> be <tt>true</tt>.</t> | A set of free-text keywords, also known as <em>tags</em>. The set is represente d as an object, with each key being a keyword. The boolean value <bcp14>MUST</b cp14> be <tt>true</tt>.</t> | |||
<figure anchor="example-keywords"> | <figure anchor="example-keywords"> | |||
<name><tt>keywords</tt> example</name> | <name><tt>keywords</tt> Example</name> | |||
<sourcecode name="" type="json"><![CDATA[ | <sourcecode name="" type="json"><![CDATA[ | |||
"keywords": { | "keywords": { | |||
"internet": true, | "internet": true, | |||
"IETF": true | "IETF": true | |||
} | } | |||
]]></sourcecode> | ]]></sourcecode> | |||
</figure> | </figure> | |||
</section> | </section> | |||
<section anchor="notes" numbered="true" toc="default"> | <section anchor="notes" numbered="true" toc="default"> | |||
<name>notes</name> | <name>notes</name> | |||
<t>Type: <tt>Id[Note]</tt> (optional).</t> | <t>Type: <tt>Id[Note]</tt> (optional)</t> | |||
<t>Free-text notes associated with this Card. A Note object has the f | <t>Free-text notes that are associated with the Card. A Note object h | |||
ollowing properties:</t> | as the following properties:</t> | |||
<ul spacing="normal"> | <dl spacing="normal"> | |||
<li>@type: <tt>String</tt>. | <dt>@type:</dt><dd> <tt>String</tt>. | |||
This <bcp14>MUST</bcp14> be <tt>Note</tt>, if set. | This <bcp14>MUST</bcp14> be <tt>Note</tt>, if set. | |||
</li> | </dd> | |||
<li> | <dt> | |||
<t>note: <tt>String</tt> (mandatory). The free text value of this | note:</dt><dd> <tt>String</tt> (mandatory). The free-text value of | |||
note.</t> | this note. | |||
</li> | </dd> | |||
<li> | <dt> | |||
<t>created: <tt>UTCDateTime</tt> (optional). The date and time wh | created:</dt><dd> <tt>UTCDateTime</tt> (optional). The date and t | |||
en this note was created.</t> | ime when this note was created. | |||
</li> | </dd> | |||
<li> | <dt> | |||
<t>author: <tt>Author</tt> (optional). The author of this note.</ | author:</dt><dd> <tt>Author</tt> (optional). The author of this no | |||
t> | te. | |||
</li> | </dd> | |||
</ul> | </dl> | |||
<t>An Author object has the following properties, of which at least on | <t>An Author object has the following properties, of which at least on | |||
e other than <tt>@type</tt> <bcp14>MUST</bcp14> be set:</t> | e property other than <tt>@type</tt> <bcp14>MUST</bcp14> be set:</t> | |||
<ul spacing="normal"> | <dl spacing="normal"> | |||
<li>@type: <tt>String</tt>. | <dt>@type:</dt><dd> <tt>String</tt>. | |||
This <bcp14>MUST</bcp14> be <tt>Author</tt>, if set. | This <bcp14>MUST</bcp14> be <tt>Author</tt>, if set. | |||
</li> | </dd> | |||
<li> | <dt> | |||
<t>name: <tt>String</tt> (optional). The name of this author.</t> | name:</dt><dd> <tt>String</tt> (optional). The name of this author | |||
</li> | . | |||
<li> | </dd> | |||
<t>uri: <tt>String</tt> (optional). A URI value that identifies t | <dt> | |||
he author.</t> | uri:</dt><dd><t><tt>String</tt> (optional). A URI value that ident | |||
</li> | ifies the author.</t> | |||
</ul> | </dd> | |||
</dl> | ||||
<figure anchor="example-notes"> | <figure anchor="example-notes"> | |||
<name><tt>notes</tt> example</name> | <name><tt>notes</tt> Example</name> | |||
<sourcecode name="" type="json"><![CDATA[ | <sourcecode name="" type="json"><![CDATA[ | |||
"notes": { | "notes": { | |||
"n1": { | "n1": { | |||
"note": "Open office hours are 1600 to 1715 EST, Mon-Fri", | "note": "Open office hours are 1600 to 1715 EST, Mon-Fri", | |||
"created": "2022-11-23T15:01:32Z", | "created": "2022-11-23T15:01:32Z", | |||
"author": { | "author": { | |||
"name": "John" | "name": "John" | |||
} | } | |||
} | } | |||
} | } | |||
]]></sourcecode> | ]]></sourcecode> | |||
</figure> | </figure> | |||
</section> | </section> | |||
<section anchor="personalInfo" numbered="true" toc="default"> | <section anchor="personalInfo" numbered="true" toc="default"> | |||
<name>personalInfo</name> | <name>personalInfo</name> | |||
<t>Type: <tt>Id[PersonalInfo]</tt> (optional).</t> | <t>Type: <tt>Id[PersonalInfo]</tt> (optional)</t> | |||
<t>Defines personal information about the entity represented by this C | <t>Defines personal information about the entity represented by the Ca | |||
ard. | rd. | |||
A PersonalInfo object has the following properties:</t> | A PersonalInfo object has the following properties:</t> | |||
<ul spacing="normal"> | <dl spacing="normal"> | |||
<li>@type: <tt>String</tt>. | <dt>@type:</dt><dd> <tt>String</tt>. | |||
This <bcp14>MUST</bcp14> be <tt>PersonalInfo</tt>, if set. | This <bcp14>MUST</bcp14> be <tt>PersonalInfo</tt>, if set. | |||
</li> | </dd> | |||
<li> | <dt> | |||
<t>kind: <tt>String</tt> (mandatory). | kind:</dt><dd><t> <tt>String</tt> (mandatory). | |||
Specifies the kind of this personal information. The <xref target | Specifies the kind of personal information. The <xref target="enu | |||
="enumerated-values">enumerated</xref> values are: | merated-values">enumerated</xref> values are: | |||
</t> | </t> | |||
<ul spacing="normal"> | <ul spacing="normal"> | |||
<li><tt>expertise</tt>: a field of expertise or credential</li> | <li><tt>expertise</tt>: a field of expertise or a credential</li > | |||
<li><tt>hobby</tt>: a hobby</li> | <li><tt>hobby</tt>: a hobby</li> | |||
<li><tt>interest</tt>: an interest</li> | <li><tt>interest</tt>: an interest</li> | |||
</ul> | </ul> | |||
</li> | </dd> | |||
<li>value: <tt>String</tt> (mandatory). | <dt>value:</dt><dd> <tt>String</tt> (mandatory). | |||
The actual information.</li> | The actual information.</dd> | |||
<li> | <dt> | |||
<t>level: <tt>String</tt> (optional). | level:</dt><dd><t> <tt>String</tt> (optional). | |||
Indicates the level of expertise, or engagement in hobby or intere | Indicates the level of expertise or engagement in hobby or interes | |||
st. | t. | |||
The <xref target="enumerated-values">enumerated</xref> values ar e:</t> | The <xref target="enumerated-values">enumerated</xref> values ar e:</t> | |||
<ul spacing="normal"> | <ul spacing="normal"> | |||
<li> | <li> | |||
<tt>high</tt> | <tt>high</tt> | |||
</li> | </li> | |||
<li> | <li> | |||
<tt>medium</tt> | <tt>medium</tt> | |||
</li> | </li> | |||
<li> | <li> | |||
<tt>low</tt> | <tt>low</tt> | |||
</li> | </li> | |||
</ul> | </ul> | |||
</li> | </dd> | |||
<li>listAs: <tt>UnsignedInt</tt> (optional). | <dt>listAs:</dt><dd> <tt>UnsignedInt</tt> (optional). | |||
This defines the position of this personal information in the list o | Defines the position of the personal information in the list of all | |||
f all PersonalInfo objects having the same <tt>kind</tt> in this Card. If set, | PersonalInfo objects that have the same <tt>kind</tt> in the Card. If set, the | |||
the <tt>listAs</tt> value <bcp14>MUST</bcp14> be higher than zero. Multiple per | <tt>listAs</tt> value <bcp14>MUST</bcp14> be higher than zero. Multiple persona | |||
sonal information entries <bcp14>MAY</bcp14> have the same <tt>listAs</tt> prope | l information entries <bcp14>MAY</bcp14> have the same <tt>listAs</tt> property | |||
rty value, or none. Sorting such entries is implementation-specific. | value or none. Sorting such entries is implementation-specific. | |||
</li> | </dd> | |||
<li>label: <tt>String</tt> (optional). | <dt>label:</dt><dd> <tt>String</tt> (optional). | |||
A custom label. See <xref target="prop-label"/>.</li> | A custom label. See <xref target="prop-label"/>.</dd> | |||
</ul> | </dl> | |||
<figure anchor="example-personalInfo"> | <figure anchor="example-personalInfo"> | |||
<name><tt>personalInfo</tt> example</name> | <name><tt>personalInfo</tt> Example</name> | |||
<sourcecode name="" type="json"><![CDATA[ | <sourcecode name="" type="json"><![CDATA[ | |||
"personalInfo": { | "personalInfo": { | |||
"pi2": { | "pi2": { | |||
"kind": "expertise", | "kind": "expertise", | |||
"value": "chemistry", | "value": "chemistry", | |||
"level": "high" | "level": "high" | |||
}, | }, | |||
"pi1": { | "pi1": { | |||
"kind": "hobby", | "kind": "hobby", | |||
"value": "reading", | "value": "reading", | |||
skipping to change at line 1792 ¶ | skipping to change at line 2210 ¶ | |||
} | } | |||
]]></sourcecode> | ]]></sourcecode> | |||
</figure> | </figure> | |||
</section> | </section> | |||
</section> | </section> | |||
</section> | </section> | |||
<section anchor="iana-considerations" numbered="true" toc="default"> | <section anchor="iana-considerations" numbered="true" toc="default"> | |||
<name>IANA Considerations</name> | <name>IANA Considerations</name> | |||
<section anchor="iana-media-type" numbered="true" toc="default"> | <section anchor="iana-media-type" numbered="true" toc="default"> | |||
<name>Media Type Registration</name> | <name>Media Type Registration</name> | |||
<t><xref target="I-D.ietf-calext-jscontact"/> defines a media type for u | ||||
se with JSContact data formatted in JSON.</t> | <!-- [rfced] We have included some specific questions about the IANA | |||
<dl newline="true" spacing="normal"> | text below. In addition to responding to those questions, please | |||
review all of the IANA-related updates carefully and let us know | ||||
if any further updates are needed. | ||||
a) FYI: In Section 3.5.1, we placed the "Reference or Description" entry | ||||
below the "Change Controller" entry to match the order of the template | ||||
at https://www.iana.org/assignments/jscontact/. | ||||
b) In Sections 3.5.1, 3.6.1, and 3.7.1, may we update the definition of | ||||
"Change Controller" as shown below to make the text parallel with the | ||||
other entries? | ||||
Original: | ||||
Change Controller: This is who may request a change to this entry's | ||||
definition (IETF for RFCs from the IETF stream). | ||||
Perhaps: | ||||
Change Controller: Person or entity responsible for requesting a | ||||
change to the entry's definition (IETF for RFCs from the IETF stream). | ||||
c) In Sections 3.5.1, 3.6.1, 3.7.1, and 3.7.2: | ||||
- Is "Table 1" the correct reference in the sentences below (note that | ||||
there are 4 instances of each sentence)? Table 1 displays values from | ||||
the "JSContact Version" registry, not the "JSContact Enum Value" registry. | ||||
Please let us know if an update is needed to the registry name and/or the | ||||
table number. | ||||
Original: | ||||
The version MUST be one of the allowed values of the version property | ||||
in the JSContact Enum Value registry (see Table 1). | ||||
The Until Version value either MUST be not set, or one of the allowed | ||||
values of the version property in the JSContact Enum Value registry | ||||
(see Table 1). | ||||
d) In Section 3.5.2 (Table 2): | ||||
- Note that the content of Table 2 in the PDF output is cut off rather | ||||
than wrapping. We have opened an issue for this. Please see | ||||
<https://github.com/ietf-tools/xml2rfc/issues/1110>. | ||||
- As Table is 2 characters past the 72-character limit, may we reformat | ||||
the table to fit by removing the Ref column and linking each section | ||||
number to the corresponding Property Context? For an example of the output, | ||||
see <https://www.rfc-editor.org/authors/rfc9553-table.pdf#table-2>. | ||||
- FYI: We have moved the entry for the "version" property name to appear | ||||
above "year" so that it appears in alphabetical order. Please let us know if | ||||
you prefer the previous order. | ||||
- FYI: Under "contexts", "label", "pref", and "uri", we ordered | ||||
Section "1.4.4" first in the Reference column since this section | ||||
corresponds to these terms. Please let us know if you prefer otherwise. | ||||
- Under the "@type" property name in the "References" column, should | ||||
references to Sections "2.5.1.2" and "2.2.1.2" be added for | ||||
"AddressComponent" and "NameComponent", respectively, or does Sections | ||||
"2.5.1" and "2.2.1" serve as the references for these terms? | ||||
If Sections "2.5.1.2" and "2.2.1.2" are used, should Sections "2.5.1" | ||||
and "2.2.1" also be updated under the "AddressComponent" and | ||||
"NameComponent" entries, respectively, in Tables 2 and 4 for | ||||
consistency? | ||||
- Under "full" and "isOrdered", should "Section 2.5.1" be | ||||
"Section 2.5.1.1" instead for direct access to these terms? | ||||
- Under "phoneticScript" and "phoneticSystem", should | ||||
"Section 2.2.1" be "Section 2.2.1.1" instead for direct | ||||
access to these terms? | ||||
e) In Section 3.7.1, should the definition of "Reference" be added | ||||
after "Change Controller" to match the template at | ||||
https://www.iana.org/assignments/jscontact? Also, since "Initial | ||||
Contents" is not included in the template, should it be removed and | ||||
made into a separate paragraph? | ||||
f) In Section 3.7.2, should the definition of "Change Controller" be | ||||
added after "Until Version" to match the template at | ||||
https://www.iana.org/assignments/jscontact? | ||||
g) In Section 3.7.3: | ||||
- FYI: We have moved the "phoneticSystem" entry and table above the | ||||
"relation" entry and table so that it appears in alphabetical order. | ||||
Please let us know if you prefer otherwise. | ||||
- Should the following updates be made so that readers are taken directly | ||||
to the enum values? | ||||
- In Table 6, should Section "2.5.1" be updated to "2.5.1.1"? | ||||
- In Table 10, should Section "2.5.1" be updated to "2.5.1.2"? | ||||
- In Table 17, should Section "2.2.1" be updated to "2.2.1.2"? | ||||
--> | ||||
<t>This document defines a media type for use with JSContact data format | ||||
ted in JSON.</t> | ||||
<dl newline="false" spacing="normal"> | ||||
<dt>Type name:</dt> | <dt>Type name:</dt> | |||
<dd>application</dd> | <dd>application</dd> | |||
<dt>Subtype name:</dt> | <dt>Subtype name:</dt> | |||
<dd>jscontact+json</dd> | <dd>jscontact+json</dd> | |||
<dt>Required parameters:</dt> | <dt>Required parameters:</dt> | |||
<dd> | <dd> | |||
<t>None</t> | <t>None</t> | |||
</dd> | </dd> | |||
<dt>Optional parameters:</dt> | <dt>Optional parameters:</dt> | |||
<dd> | <dd><t>version</t> <t>This parameter conveys the version of the JSCont | |||
<dl newline="false" spacing="normal"> | act data in the body part. It <bcp14>MUST NOT</bcp14> occur more than once. If | |||
<dt>version</dt> | this parameter is set, then the values of all JSContact <xref target="iana-prop | |||
<dd>This parameter conveys the version of the JSContact data in th | erty-registry-version"><tt>version</tt></xref> properties in the body part <bcp1 | |||
e body part. It <bcp14>MUST NOT</bcp14> occur more than once. If this paramete | 4>MUST</bcp14> match the parameter value.</t> | |||
r is set, then the values of all JSContact <xref target="iana-property-registry- | ||||
version"><tt>version</tt></xref> properties in the body part <bcp14>MUST</bcp14> | ||||
match the parameter value.</dd> | ||||
</dl> | ||||
</dd> | </dd> | |||
<dt>Encoding considerations:</dt> | <dt>Encoding considerations:</dt> | |||
<dd>This is the same as the encoding considerations of application/jso n, as specified in <xref target="RFC8259" sectionFormat="of" section="11"/>.</dd > | <dd>This is the same as the encoding considerations of application/jso n, as specified in <xref target="RFC8259" sectionFormat="of" section="11"/>.</dd > | |||
<dt>Security considerations:</dt> | <dt>Security considerations:</dt> | |||
<dd> See <xref target="security-considerations" format="default"/> of <xref target="I-D.ietf-calext-jscontact"/>.</dd> | <dd> See <xref target="security-considerations" format="default"/> of RFC 9553.</dd> | |||
<dt>Interoperability considerations:</dt> | <dt>Interoperability considerations:</dt> | |||
<dd>While JSContact is designed to avoid ambiguities as much as possib le, when converting objects from other contact formats to/from JSContact, it is possible that differing representations for the same logical data or ambiguities in interpretation might arise. The semantic equivalence of two JSContact objec ts may be determined differently by different applications, for example, where U RL values differ in case between the two objects.</dd> | <dd>While JSContact is designed to avoid ambiguities as much as possib le, when converting objects from other contact formats to/from JSContact, it is possible that differing representations for the same logical data or ambiguities in interpretation might arise. The semantic equivalence of two JSContact objec ts may be determined differently by different applications, for example, where U RL values differ in case between the two objects.</dd> | |||
<dt>Published specification:</dt> | <dt>Published specification:</dt> | |||
<dd>TBD</dd> | <dd>RFC 9553</dd> | |||
<dt>Applications that use this media type:</dt> | <dt>Applications that use this media type:</dt> | |||
<dd>Applications that currently make use of the text/vcard media type can use this as an alternative.</dd> | <dd>Applications that currently make use of the text/vCard media type can use this as an alternative.</dd> | |||
<dt>Fragment identifier considerations:</dt> | <dt>Fragment identifier considerations:</dt> | |||
<dd>A JSON Pointer fragment identifier may be used, as defined in <xre f target="RFC6901" sectionFormat="comma" section="6"/>.</dd> | <dd>A JSON Pointer fragment identifier may be used, as defined in <xre f target="RFC6901" sectionFormat="comma" section="6"/>.</dd> | |||
<dt>Additional information:</dt> | <dt>Additional information:</dt> | |||
<dd> | <dd><t><br/></t> | |||
<dl newline="false" spacing="normal"> | <dl newline="false" spacing="compact"> | |||
<dt>Magic number(s):</dt> | <dt>Magic number(s):</dt> | |||
<dd>N/A</dd> | <dd>N/A</dd> | |||
<dt>File extensions(s):</dt> | <dt>File extensions(s):</dt> | |||
<dd>N/A</dd> | <dd>N/A</dd> | |||
<dt>Macintosh file type code(s):</dt> | <dt>Macintosh file type code(s):</dt> | |||
<dd>N/A</dd> | <dd>N/A</dd> | |||
</dl> | </dl> | |||
</dd> | </dd> | |||
<dt>Person & email address to contact for further information:</dt > | <dt>Person & email address to contact for further information:</dt > | |||
<dd>calsify@ietf.org</dd> | <dd>calsify@ietf.org</dd> | |||
<dt>Intended usage:</dt> | <dt>Intended usage:</dt> | |||
<dd>COMMON</dd> | <dd>COMMON</dd> | |||
<dt>Restrictions on usage:</dt> | <dt>Restrictions on usage:</dt> | |||
<dd>N/A</dd> | <dd>N/A</dd> | |||
<dt>Author:</dt> | <dt>Author:</dt> | |||
<dd>See the "Author's Address" section of <xref target="I-D.ietf-calex t-jscontact"/>.</dd> | <dd>See the "Authors' Addresses" section of RFC 9553.</dd> | |||
<dt>Change controller:</dt> | <dt>Change controller:</dt> | |||
<dd>IETF</dd> | <dd>IETF</dd> | |||
</dl> | </dl> | |||
</section> | </section> | |||
<section anchor="iana-jscontact-registry" numbered="true" toc="default"> | <section anchor="iana-jscontact-registry" numbered="true" toc="default"> | |||
<name>Creation of the "JSContact" Registry Group</name> | <name>Creation of the JSContact Registry Group</name> | |||
<t>IANA is asked to create the "JSContact" registry group. The new regi | <t>IANA has created the "JSContact" registry group. The new registry de | |||
stry definitions in the following sections all belong to that group.</t> | finitions in the following sections all belong to that group.</t> | |||
</section> | </section> | |||
<section anchor="iana-registry-policy" numbered="true" toc="default"> | <section anchor="iana-registry-policy" numbered="true" toc="default"> | |||
<name>Registry Policy and Change Procedures</name> | <name>Registry Policy and Change Procedures</name> | |||
<t>Registry assignments that introduce <xref target="versioning">backwar | ||||
ds-incompatible</xref> changes require the JSContact major version to change, ot | <!--[rfced] Since "backwards-incompatibility" is mentioned in Section | |||
her changes only require to change the minor version. The registry policy for a | 1.9.1, should the reference below be updated from Section 1.9 to | |||
ssignments that require the JSContact major version to change is Standards Actio | Section 1.9.1? | |||
n (<xref target="RFC8126" sectionFormat="comma" section="4.9"/>). The registry | ||||
policy for other assignments is Specification Required (<xref target="RFC8126" s | Original: | |||
ectionFormat="comma" section="4.6"/>).</t> | Registry assignments that introduce backwards-incompatible | |||
<t>The Designated Expert decides if a major or minor version change is r | (Section 1.9) changes require the JSContact major version | |||
equired and assigns the new version to the <xref target="iana-version-registry"> | to change, other changes only require to change the minor | |||
Version Registry</xref>. Version numbers increment by one, and a major version | version. | |||
change resets the minor version to zero. An assignment may apply multiple chang | ||||
es and to more than one registry at once, in which case a single version change | Perhaps: | |||
is sufficient. If the registry policy is Specification Required, then the Desig | Registry assignments that introduce backwards-incompatible | |||
nated Expert may decide that it is enough to document the new assignment in the | (Section 1.9.1) changes require the JSContact major version | |||
Description item of the respective registry.</t> | to change; other changes only require a change to the minor | |||
version. | ||||
--> | ||||
<t>Registry assignments that introduce <xref target="versioning">backwar | ||||
ds-incompatible</xref> changes require the JSContact major version to change; ot | ||||
her changes only require a change to the minor version. The registry policy for | ||||
assignments that require the JSContact major version to change is Standards Act | ||||
ion (<xref target="RFC8126" sectionFormat="comma" section="4.9"/>). The registr | ||||
y policy for other assignments is Specification Required (<xref target="RFC8126" | ||||
sectionFormat="comma" section="4.6"/>).</t> | ||||
<t>The designated expert (DE) decides if a major or minor version change | ||||
is required and assigns the new version to the <xref target="iana-version-regis | ||||
try">"JSContact Version" registry</xref>. Version numbers increment by one, and | ||||
a major version change resets the minor version to zero. An assignment may app | ||||
ly multiple changes and to more than one registry at once, in which case a singl | ||||
e version change is sufficient. If the registry policy is Specification Require | ||||
d, then the DE may decide that it is enough to document the new assignment in th | ||||
e Description item of the respective registry.</t> | ||||
<t>A registration <bcp14>MUST</bcp14> have an intended usage of <tt>comm on</tt>, <tt>reserved</tt>, or <tt>obsolete</tt>.</t> | <t>A registration <bcp14>MUST</bcp14> have an intended usage of <tt>comm on</tt>, <tt>reserved</tt>, or <tt>obsolete</tt>.</t> | |||
<ul> | <ul> | |||
<li>A <tt>common</tt> usage denotes an item with shared semantics and syntax across systems. Up-to-date systems <bcp14>MUST</bcp14> expect such items to occur in JSContact data.</li> | <li>A <tt>common</tt> usage denotes an item with shared semantics and syntax across systems. Up-to-date systems <bcp14>MUST</bcp14> expect such items to occur in JSContact data.</li> | |||
<li>A <tt>reserved</tt> usage reserves an item in the registry without | <li>A <tt>reserved</tt> usage reserves an item in the registry without | |||
assigning semantics to avoid name collisions with future extensions or protocol | assigning semantics to avoid name collisions with future extensions or protocol | |||
use.</li> | use. Implementations <bcp14>MUST NOT</bcp14> expect or add items with such name | |||
<li>An <tt>obsolete</tt> usage denotes an item that is no longer expec | s outside the protocols or extensions that | |||
ted to be added by up-to-date systems. A new assignment has probably been defin | use them; otherwise, any such JSContact data is invalid. | |||
ed covering the obsolete item's semantics.</li> | </li> | |||
<li>An <tt>obsolete</tt> usage denotes an item that is no longer expec | ||||
ted to be added by up-to-date systems. A new assignment has probably been defin | ||||
ed, covering the obsolete item's semantics. Implementations <bcp14>MUST</bcp14> | ||||
expect such items to occur in JSContact data up to the "Until Version" registry | ||||
field, inclusively. They <bcp14>MUST NOT</bcp14> add such items for any version | ||||
after which the item got obsolete; otherwise, any such JSContact data is invali | ||||
d.</li> | ||||
</ul> | </ul> | |||
<t>The registration procedure is not a formal standards process but rath | <t>The intended usage of registry items may change between versions, but | |||
er an administrative procedure intended to allow community comment and check whe | the designated expert must carefully consider the impact on existing | |||
ther it is coherent without excessive time delay. It is designed to encourage v | implementations and standards before doing so.</t> | |||
endors to document and register new items they add for use cases not covered by | <t>The registration procedure is not a formal standards process but rath | |||
the original specification, leading to increased interoperability.</t> | er an administrative procedure intended to allow community comments and to check | |||
whether it is coherent without excessive time delay. It is designed to encoura | ||||
ge vendors to document and register new items they add for use cases not covered | ||||
by the original specification, leading to increased interoperability.</t> | ||||
<section anchor="iana-registry-preliminary-community-review" numbered="t rue" toc="default"> | <section anchor="iana-registry-preliminary-community-review" numbered="t rue" toc="default"> | |||
<name>Preliminary Community Review</name> | <name>Preliminary Community Review</name> | |||
<t>Notice of a potential new registration <bcp14>MUST</bcp14> be sent | <t>Notice of a potential new registration <bcp14>MUST</bcp14> be sent | |||
to the Calext mailing list | to the Calext WG mailing list | |||
<calsify@ietf.org> for review. This mailing list is appropriat | <calsify@ietf.org> for review. This mailing list is appropriat | |||
e to solicit community feedback | e for soliciting community feedback on a proposed registry assignment.</t> | |||
on a proposed registry assignment.</t> | ||||
<t>The intent of the public posting to this list is to solicit comment s and feedback on the choice of | <t>The intent of the public posting to this list is to solicit comment s and feedback on the choice of | |||
the item name or value, the unambiguity of its description, and a rev iew of any | the item name or value, the unambiguity of its description, and a rev iew of any | |||
interoperability or security considerations. The submitter may sub mit a revised registration proposal | interoperability or security considerations. The submitter may sub mit a revised registration proposal | |||
or abandon the registration completely at any time.</t> | or abandon the registration completely at any time.</t> | |||
</section> | </section> | |||
<section anchor="iana-registry-submit-request-to-iana" numbered="true" t oc="default"> | <section anchor="iana-registry-submit-request-to-iana" numbered="true" t oc="default"> | |||
<name>Submit Request to IANA</name> | <name>Submit Request to IANA</name> | |||
<t>Registration requests can be sent to <iana@iana.org>.</t> | <t>Registration requests can be sent to IANA <iana@iana.org>.</t > | |||
</section> | </section> | |||
<section anchor="iana-registry-designated-expert-review" numbered="true" toc="default"> | <section anchor="iana-registry-designated-expert-review" numbered="true" toc="default"> | |||
<name>Designated Expert Review</name> | <name>Designated Expert Review</name> | |||
<t>The primary concern of the designated expert (DE) is preventing nam | <t>The primary concern of the DE is preventing name collisions and enc | |||
e collisions and encouraging the submitter to document security and privacy cons | ouraging the submitter to document security and privacy considerations.</t> | |||
iderations.</t> | <t>A new type name, property name, or enumerated value <bcp14>MUST NOT | |||
<t>A new type name, property name or enumerated value <bcp14>MUST NOT< | </bcp14> differ only in case from an already-registered name or value.</t> | |||
/bcp14> differ only in case from an already registered name or value.</t> | ||||
<t>For a common-use registration, the DE | <t>For a common-use registration, the DE | |||
is expected to confirm that suitable documentation is available to ensure interoperability. | is expected to confirm that suitable documentation is available to ensure interoperability. | |||
The DE should also verify that | The DE should also verify that | |||
the new assignment does not conflict with work that is active or alr eady published within the IETF.</t> | the new assignment does not conflict with work that is active or alr eady published within the IETF.</t> | |||
<t>The DE will either approve or deny the registration request and pub lish a notice of the decision | <t>The DE will either approve or deny the registration request and pub lish a notice of the decision | |||
to the Calext WG mailing list or its successor, as well as inform IAN A. A denial notice must be | to the Calext WG mailing list or its successor, as well as inform IAN A. A denial notice must be | |||
justified by an explanation, and, in the cases where it is possible , concrete suggestions on how the | justified by an explanation, and in the cases where it is possible, concrete suggestions on how the | |||
request can be modified to become acceptable should be provided.< /t> | request can be modified to become acceptable should be provided.< /t> | |||
</section> | </section> | |||
<section anchor="iana-registry-change-procedures" numbered="true" toc="d efault"> | <section anchor="iana-registry-change-procedures" numbered="true" toc="d efault"> | |||
<name>Change Procedures</name> | <name>Change Procedures</name> | |||
<t>Once a JSContact registry group item has been published by IANA, th e change controller may request a | <t>Once a JSContact registry group item has been published by IANA, th e Change Controller may request a | |||
change to its definition. The same procedure that would be appropria te for the original registration | change to its definition. The same procedure that would be appropria te for the original registration | |||
request is used to process a change request.</t> | request is used to process a change request.</t> | |||
<t>JSContact registrations dot not get deleted; instead, items that ar e no longer believed appropriate for use are declared obsolete by a change to th eir "intended usage" field; such items will be clearly marked in the IANA regist ry.</t> | <t>JSContact registrations do not get deleted; instead, items that are no longer believed appropriate for use are declared obsolete by a change to the ir "Intended Usage" field; such items will be clearly marked in the IANA registr y.</t> | |||
<t>Significant changes to a JSContact registry item's definition shoul d be requested only when there are | <t>Significant changes to a JSContact registry item's definition shoul d be requested only when there are | |||
serious omissions or errors in the published specification, as such c hanges may cause | serious omissions or errors in the published specification, as such c hanges may cause | |||
interoperability issues. When review is required, a change request may be denied if it renders | interoperability issues. When review is required, a change request may be denied if it renders | |||
entities that were valid under the previous definition invalid un der the new definition.</t> | entities that were valid under the previous definition invalid un der the new definition.</t> | |||
</section> | </section> | |||
</section> | </section> | |||
<section anchor="iana-version-registry" numbered="true" toc="default"> | <section anchor="iana-version-registry" numbered="true" toc="default"> | |||
<name>Creation of the "JSContact Version" Registry</name> | <name>Creation of the JSContact Version Registry</name> | |||
<t>IANA is asked to create the "JSContact Version" registry. The purpos | <t>IANA has created the "JSContact Version" registry. The purpose of th | |||
e of this new registry is to define the allowed value range of JSContact major a | is new registry is to define the allowed value range of JSContact major and mino | |||
nd minor version numbers.</t> | r version numbers.</t> | |||
<t>The registry entries sort numerically ascending by the "Major Version | <t>The registry entries sort numerically in ascending order by the "Majo | |||
" column.</t> | r Version" column.</t> | |||
<t>The registry process is outlined in <xref target="iana-registry-polic y" format="default"/>.</t> | <t>The registry process is outlined in <xref target="iana-registry-polic y" format="default"/>.</t> | |||
<section anchor="iana-version-registry-template" numbered="true" toc="de fault"> | <section anchor="iana-version-registry-template" numbered="true" toc="de fault"> | |||
<name>"JSContact Version" Registry Template</name> | <name>JSContact Version Registry Template</name> | |||
<dl newline="false"> | <dl newline="false"> | |||
<dt>Major Version:</dt> | <dt>Major Version:</dt> | |||
<dd>This is the numeric value of a JSContact major version number. It <bcp14>MUST</bcp14> be a positive integer.</dd> | <dd>The numeric value of a JSContact major version number. It <bcp1 4>MUST</bcp14> be a positive integer.</dd> | |||
<dt>Highest Minor Version:</dt> | <dt>Highest Minor Version:</dt> | |||
<dd> This is the maximum numeric value of a JSContact minor version for the given major version. It <bcp14>MUST</bcp14> be zero or a positive integ er. All numbers less than or equal this value are valid minor version values fo r the given major version.</dd> | <dd> The maximum numeric value of a JSContact minor version for the given major version. It <bcp14>MUST</bcp14> be zero or a positive integer. All numbers less than or equal to this value are valid minor version values for the given major version.</dd> | |||
</dl> | </dl> | |||
</section> | </section> | |||
<section anchor="iana-version-registry-contents" numbered="true" toc="de fault"> | <section anchor="iana-version-registry-contents" numbered="true" toc="de fault"> | |||
<name>Initial Contents for the "JSContact Version" Registry</name> | <name>Initial Contents of the JSContact Version Registry</name> | |||
<t>The following table lists the initial valid major and minor version number ranges.</t> | <t>The following table lists the initial valid major and minor version number ranges.</t> | |||
<table anchor="tab-iana-version-registry" align="center"> | <table anchor="tab-iana-version-registry" align="center"> | |||
<name>JSContact Versions</name> | <name>JSContact Version Registry</name> | |||
<thead> | <thead> | |||
<tr> | <tr> | |||
<th align="left">Major Version</th> | <th align="left">Major Version</th> | |||
<th align="left">Highest Minor Version</th> | <th align="left">Highest Minor Version</th> | |||
<th align="left">Reference</th> | ||||
</tr> | </tr> | |||
</thead> | </thead> | |||
<tbody> | <tbody> | |||
<tr> | <tr> | |||
<td align="left">1</td> | <td align="left">1</td> | |||
<td align="left">0</td> | <td align="left">0</td> | |||
<td align="left">RFC 9553</td> | ||||
</tr> | </tr> | |||
</tbody> | </tbody> | |||
</table> | </table> | |||
</section> | </section> | |||
</section> | </section> | |||
<section anchor="iana-property-registry" numbered="true" toc="default"> | <section anchor="iana-property-registry" numbered="true" toc="default"> | |||
<name>Creation of the "JSContact Properties" Registry</name> | <name>Creation of the JSContact Properties Registry</name> | |||
<t>IANA is asked to create the "JSContact Properties" registry. The pur | <t>IANA has created the "JSContact Properties" registry. The purpose of | |||
pose of this new registry is to allow interoperability of extensions to JSContac | this new registry is to allow interoperability of extensions to JSContact objec | |||
t objects</t> | ts.</t> | |||
<t>The registry entries sort alphabetically ascending by the "Property N | <t>The registry entries sort alphabetically in ascending order by the fo | |||
ame" column first, "Property Context" second, "Since Version" third. Equal entr | llowing columns: "Property Name" first, "Property Context" second, and "Since Ve | |||
ies sort in any order.</t> | rsion" third. Equal entries sort in any order.</t> | |||
<t>The registry process for a new property is outlined in <xref target=" iana-registry-policy" format="default"/>.</t> | <t>The registry process for a new property is outlined in <xref target=" iana-registry-policy" format="default"/>.</t> | |||
<section anchor="iana-property-registry-template" numbered="true" toc="d efault"> | <section anchor="iana-property-registry-template" numbered="true" toc="d efault"> | |||
<name>"JSContact Properties" Registry Template</name> | <name>JSContact Properties Registry Template</name> | |||
<dl newline="false"> | <dl newline="false"> | |||
<dt>Property Name:</dt> | <dt>Property Name:</dt> | |||
<dd>This is the name of the property. The property name <bcp14>MUST | <dd>The name of the property. The property name <bcp14>MUST NOT</bcp | |||
NOT</bcp14> already be | 14> already be | |||
registered for | registered for any of the object types listed in the "Property Context" field of | |||
any of the object types listed in the "Property Context" | this registration. Other object types <bcp14>MAY</bcp14> have already register | |||
field of this registration. Other object | ed a different property with the same name; however, | |||
types <bcp14>MAY</bcp14> already have registered a di | the same name <bcp14>MUST</bcp14> only be used when the semantics are analogous. | |||
fferent property with the same name; however, | </dd> | |||
the same name <bcp14>MUST</bcp14> only be used wh | ||||
en the semantics are analogous.</dd> | ||||
<dt>Property Type:</dt> | <dt>Property Type:</dt> | |||
<dd> This is the type of this property, using type signatures, as sp | <dd>For properties with intended usage other than "reserved", this i | |||
ecified in <xref target="type-signatures" format="default"/>. | s the type of this property, using type signatures as specified in <xref target= | |||
The property type <bcp14>MUST</bcp14> be registered in the "J | "type-signatures" format="default"/>. The property type <bcp14>MUST</bcp14> be r | |||
SContact Types" registry.</dd> | egistered in the "JSContact Types" registry. For reserved property names, the va | |||
lue MUST be the verbatim string "not applicable".</dd> | ||||
<dt>Property Context:</dt> | <dt>Property Context:</dt> | |||
<dd>This is a comma-separated list of JSContact object types (<xref | <dd>A comma-separated list of JSContact object types (<xref target=" | |||
target="iana-type-registry-contents"/>) that contain this property.</dd> | iana-type-registry-contents"/>) that contain the property. For reserved property | |||
<dt>Reference or Description:</dt> | names, the value MAY be the verbatim string "not applicable".</dd> | |||
<dd>This is a brief description or RFC number and section reference | ||||
where the property is specified (omitted for "reserved" property names). This mu | ||||
st include references to all RFC documents where this property is introduced or | ||||
updated.</dd> | ||||
<dt>Intended Usage:</dt> | <dt>Intended Usage:</dt> | |||
<dd>This may be "common", "reserved", or "obsolete".</dd> | <dd>May be "common", "reserved", or "obsolete".</dd> | |||
<dt>Since Version:</dt> | <dt>Since Version:</dt> | |||
<dd>This defines the JSContact version on which this property defini tion is based on. The version <bcp14>MUST</bcp14> be one of the allowed values of the <tt>version</tt> property in the JSContact Enum Value registry (see <xref target="tab-iana-version-registry"/>).</dd> | <dd>The JSContact version on which the property definition is based. The version <bcp14>MUST</bcp14> be one of the allowed values of the <tt>versio n</tt> property in the "JSContact Enum Values" registry (see <xref target="tab-i ana-version-registry"/>).</dd> | |||
<dt>Until Version:</dt> | <dt>Until Version:</dt> | |||
<dd>This defines the JSContact version after which this property got obsoleted and <bcp14>MUST NOT</bcp14> be used in later versions. The Until Ver sion value either <bcp14>MUST NOT</bcp14> be set, or be one of the allowed value s of the <tt>version</tt> property in the JSContact Enum Value registry (see <xr ef target="tab-iana-version-registry"/>).</dd> | <dd>The JSContact version after which the property was obsoleted; th erefore, it <bcp14>MUST NOT</bcp14> be used in later versions. The Until Versio n value either <bcp14>MUST NOT</bcp14> be set or <bcp14>MUST</bcp14> be one of t he allowed values of the <tt>version</tt> property in the "JSContact Enum Values " registry (see <xref target="tab-iana-version-registry"/>).</dd> | |||
<dt>Change Controller:</dt> | <dt>Change Controller:</dt> | |||
<dd>This is who may request a change to this entry's definition (<tt | <dd>This is who may request a change to the entry's definition (<tt> | |||
>IETF</tt> for RFCs from the IETF stream).</dd> | IETF</tt> for RFCs from the IETF stream).</dd> | |||
<dt>Reference or Description:</dt> | ||||
<dd>A brief description or RFC number and section reference where th | ||||
e property is specified. This must include references to all RFC documents where | ||||
this property is introduced or updated. For reserved property names, the refere | ||||
nce or description <bcp14>MAY</bcp14> be omitted.</dd> | ||||
</dl> | </dl> | |||
</section> | </section> | |||
<section anchor="iana-property-registry-contents" numbered="true" toc="d efault"> | <section anchor="iana-property-registry-contents" numbered="true" toc="d efault"> | |||
<name>Initial Contents for the "JSContact Properties" Registry</name> | <name>Initial Contents of the JSContact Properties Registry</name> | |||
<t>The following table lists the initial <tt>common</tt> usage entries | <t>The following table lists the initial <tt>common</tt> usage entries | |||
of the "JSContact Properties" registry. The Since Version for all properties i | of the "JSContact Properties" registry. For all properties, the Since Version | |||
s <tt>1.0</tt>. The Until Version for all properties is not set. All RFC secti | is <tt>1.0</tt>, the Until Version is not set, the Change Controller is <tt>IETF | |||
on references are for <xref target="I-D.ietf-calext-jscontact"/>. The change co | </tt>, and RFC section references are for RFC 9553.</t> | |||
ntroller for all these properties is <tt>IETF</tt>.</t> | ||||
<table anchor="tab-iana-property-registry" align="center"> | <table anchor="tab-iana-property-registry" align="center"> | |||
<name>JSContact Properties with "common" usage</name> | <name>JSContact Properties with "common" Usage</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">Reference or Description</th> | <th align="left">Ref</th> | |||
</tr> | </tr> | |||
</thead> | </thead> | |||
<!-- Everything in here should be sorted alphabetically: table entri es by property name, the references for each property alphabetically by the obje ct type or property they refer to --> | <!-- Everything in here should be sorted alphabetically: table entri es by property name, the references for each property alphabetically by the obje ct type or property they refer to --> | |||
<tbody> | <tbody> | |||
<tr> | <tr> | |||
<td align="left">@type</td> | <td align="left">@type</td> | |||
<td align="left">String</td> | <td align="left">String</td> | |||
<td align="left">Address, AddressComponent, Anniversary, Author, | <td align="left">Address, AddressComponent, Anniversary, Author, | |||
Card, Calendar, CryptoKey, Directory, EmailAddress, LanguagePref, Link, Media, | Card, Calendar, CryptoKey, Directory, EmailAddress, LanguagePref, Link, Media, | |||
Name, NameComponent, Nickname, Note, OnlineService, Organization, OrgUnit, Part | Name, NameComponent, Nickname, Note, OnlineService, Organization, OrgUnit, Part | |||
ialDate,PersonalInfo, Phone, Pronouns, Relation, SchedulingAddress, SpeakToAs, T | ialDate, PersonalInfo, Phone, Pronouns, Relation, SchedulingAddress, SpeakToAs, | |||
imestamp, Title</td> | Timestamp, Title</td> | |||
<td align="left"><xref target="addresses" format="default"/>, <x | <td align="left">Sections <xref target="addresses" format="count | |||
ref target="anniversaries" format="default"/>, <xref target="cardtype" format="d | er"/>, <xref target="anniversaries" format="counter"/>, <xref target="cardtype" | |||
efault"/>, <xref target="calendars" format="default"/>, <xref target="cryptoKeys | format="counter"/>, <xref target="calendars" format="counter"/>, <xref target="c | |||
" format="default"/>, <xref target="directories" format="default"/>, <xref targe | ryptoKeys" format="counter"/>, <xref target="directories" format="counter"/>, <x | |||
t="emails" format="default"/>, <xref target="preferredLanguages" format="default | ref target="emails" format="counter"/>, <xref target="preferredLanguages" format | |||
"/>, <xref target="links" format="default"/>, <xref target="media" format="defau | ="counter"/>, <xref target="links" format="counter"/>, <xref target="media" form | |||
lt"/>, <xref target="name" format="default"/>, <xref target="nicknames" format=" | at="counter"/>, <xref target="name" format="counter"/>, <xref target="nicknames" | |||
default"/>, <xref target="notes" format="default"/>, <xref target="onlineService | format="counter"/>, <xref target="notes" format="counter"/>, <xref target="onli | |||
s" format="default"/>, <xref target="organizations" format="default"/>, <xref ta | neServices" format="counter"/>, <xref target="organizations" format="counter"/>, | |||
rget="personalInfo" format="default"/>, <xref target="phones" format="default"/> | <xref target="personalInfo" format="counter"/>, <xref target="phones" format="c | |||
, <xref target="speakToAs" format="default"/>, <xref target="relatedTo" format=" | ounter"/>, <xref target="speakToAs" format="counter"/>, <xref target="relatedTo" | |||
default"/>, <xref target="schedulingAddresses" format="default"/>, <xref target= | format="counter"/>, <xref target="schedulingAddresses" format="counter"/>, <xre | |||
"titles" format="default"/></td> | f target="titles" format="counter"/></td> | |||
</tr> | ||||
<tr anchor="iana-property-registry-version"> | ||||
<td align="left">version</td> | ||||
<td align="left">String</td> | ||||
<td align="left">Card</td> | ||||
<td align="left"> | ||||
<xref target="prop-version" format="default"/> | ||||
</td> | ||||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">address</td> | <td align="left">address</td> | |||
<td align="left">String</td> | <td align="left">String</td> | |||
<td align="left">EmailAddress</td> | <td align="left">EmailAddress</td> | |||
<td align="left"> | <td align="left"> | |||
<xref target="emails" format="default"/> | <xref target="emails" format="default"/> | |||
</td> | </td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
skipping to change at line 2060 ¶ | skipping to change at line 2584 ¶ | |||
<td align="left">NameComponent[]</td> | <td align="left">NameComponent[]</td> | |||
<td align="left">Name</td> | <td align="left">Name</td> | |||
<td align="left"> | <td align="left"> | |||
<xref target="name" format="default"/> | <xref target="name" format="default"/> | |||
</td> | </td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">contexts</td> | <td align="left">contexts</td> | |||
<td align="left">String[Boolean]</td> | <td align="left">String[Boolean]</td> | |||
<td align="left">Address, Calendar, CryptoKey, Directory, Email Address, LanguagePref, Link, Media, Nickname, OnlineService, Organization, Phone , Pronouns, SchedulingAddress</td> | <td align="left">Address, Calendar, CryptoKey, Directory, Email Address, LanguagePref, Link, Media, Nickname, OnlineService, Organization, Phone , Pronouns, SchedulingAddress</td> | |||
<td align="left"><xref target="prop-contexts" format="default"/> , <xref target="addresses" format="default"/>, <xref target="calendars" format=" default"/>, <xref target="cryptoKeys" format="default"/>, <xref target="director ies" format="default"/>, <xref target="emails" format="default"/>, <xref target= "preferredLanguages" format="default"/>, <xref target="links" format="default"/> , <xref target="media" format="default"/>, <xref target="nicknames" format="defa ult"/>, <xref target="onlineServices" format="default"/>, <xref target="organiza tions" format="default"/>, <xref target="phones" format="default"/>, <xref targe t="speakToAs" format="default"/>, <xref target="schedulingAddresses" format="def ault"/><xref target="resource" format="default"/></td> | <td align="left">Sections <xref target="resource" format="count er"/>, <xref target="prop-contexts" format="counter"/>, <xref target="addresses" format="counter"/>, <xref target="calendars" format="counter"/>, <xref target=" cryptoKeys" format="counter"/>, <xref target="directories" format="counter"/>, < xref target="emails" format="counter"/>, <xref target="preferredLanguages" forma t="counter"/>, <xref target="links" format="counter"/>, <xref target="media" for mat="counter"/>, <xref target="nicknames" format="counter"/>, <xref target="onli neServices" format="counter"/>, <xref target="organizations" format="counter"/>, <xref target="phones" format="counter"/>, <xref target="speakToAs" format="coun ter"/>, <xref target="schedulingAddresses" format="counter"/></td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">coordinates</td> | <td align="left">coordinates</td> | |||
<td align="left">String</td> | <td align="left">String</td> | |||
<td align="left">Address</td> | <td align="left">Address</td> | |||
<td align="left"> | <td align="left"> | |||
<xref target="addresses" format="default"/> | <xref target="addresses" format="default"/> | |||
</td> | </td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
skipping to change at line 2082 ¶ | skipping to change at line 2606 ¶ | |||
<td align="left">String</td> | <td align="left">String</td> | |||
<td align="left">Address</td> | <td align="left">Address</td> | |||
<td align="left"> | <td align="left"> | |||
<xref target="addresses" format="default"/> | <xref target="addresses" format="default"/> | |||
</td> | </td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">created</td> | <td align="left">created</td> | |||
<td align="left">UTCDateTime</td> | <td align="left">UTCDateTime</td> | |||
<td align="left">Card, Note</td> | <td align="left">Card, Note</td> | |||
<td align="left"><xref target="created" format="default"/>, <xre f target="notes" format="default"/></td> | <td align="left">Sections <xref target="created" format="counter "/>, <xref target="notes" format="counter"/></td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">date</td> | <td align="left">date</td> | |||
<td align="left">PartialDate|Timestamp</td> | <td align="left">PartialDate|Timestamp</td> | |||
<td align="left">Anniversary</td> | <td align="left">Anniversary</td> | |||
<td align="left"> | <td align="left"> | |||
<xref target="anniversaries" format="default"/> | <xref target="anniversaries" format="default"/> | |||
</td> | </td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
skipping to change at line 2104 ¶ | skipping to change at line 2628 ¶ | |||
<td align="left">UnsignedInt</td> | <td align="left">UnsignedInt</td> | |||
<td align="left">PartialDate</td> | <td align="left">PartialDate</td> | |||
<td align="left"> | <td align="left"> | |||
<xref target="anniversaries" format="default"/> | <xref target="anniversaries" format="default"/> | |||
</td> | </td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">defaultSeparator</td> | <td align="left">defaultSeparator</td> | |||
<td align="left">String</td> | <td align="left">String</td> | |||
<td align="left">Address, Name</td> | <td align="left">Address, Name</td> | |||
<td align="left"><xref target="addresses" format="default"/>, | <td align="left">Sections <xref target="addresses" format="count | |||
<xref target="name" format="default"/></td> | er"/>, | |||
<xref target="name" format="counter"/></td> | ||||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">directories</td> | <td align="left">directories</td> | |||
<td align="left">Id[Directory]</td> | <td align="left">Id[Directory]</td> | |||
<td align="left">Card</td> | <td align="left">Card</td> | |||
<td align="left"> | <td align="left"> | |||
<xref target="directories" format="default"/> | <xref target="directories" format="default"/> | |||
</td> | </td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
skipping to change at line 2135 ¶ | skipping to change at line 2659 ¶ | |||
<td align="left">String[Boolean]</td> | <td align="left">String[Boolean]</td> | |||
<td align="left">Phone</td> | <td align="left">Phone</td> | |||
<td align="left"> | <td align="left"> | |||
<xref target="phones" format="default"/> | <xref target="phones" format="default"/> | |||
</td> | </td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">full</td> | <td align="left">full</td> | |||
<td align="left">String</td> | <td align="left">String</td> | |||
<td align="left">Address, Name</td> | <td align="left">Address, Name</td> | |||
<td align="left"><xref target="addresses" format="default"/>, | <td align="left">Sections <xref target="addresses" format="count | |||
<xref target="name" format="default"/></td> | er"/>, | |||
<xref target="name" format="counter"/></td> | ||||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">grammaticalGender</td> | <td align="left">grammaticalGender</td> | |||
<td align="left">String</td> | <td align="left">String</td> | |||
<td align="left">SpeakToAs</td> | <td align="left">SpeakToAs</td> | |||
<td align="left"> | <td align="left"> | |||
<xref target="speakToAs" format="default"/> | <xref target="speakToAs" format="default"/> | |||
</td> | </td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">isOrdered</td> | <td align="left">isOrdered</td> | |||
<td align="left">Boolean</td> | <td align="left">Boolean</td> | |||
<td align="left">Address, Name</td> | <td align="left">Address, Name</td> | |||
<td align="left"><xref target="addresses" format="default"/>, | <td align="left">Sections <xref target="addresses" format="count | |||
<xref target="name" format="default"/></td> | er"/>, | |||
<xref target="name" format="counter"/></td> | ||||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">keywords</td> | <td align="left">keywords</td> | |||
<td align="left">String[Boolean]</td> | <td align="left">String[Boolean]</td> | |||
<td align="left">Card</td> | <td align="left">Card</td> | |||
<td align="left"> | <td align="left"> | |||
<xref target="keywords" format="default"/> | <xref target="keywords" format="default"/> | |||
</td> | </td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">kind</td> | <td align="left">kind</td> | |||
<td align="left">String</td> | <td align="left">String</td> | |||
<td align="left">AddressComponent, Anniversary, Calendar, Card, CryptoKey, Directory, Link, Media, NameComponent, PersonalInfo, Title</td> | <td align="left">AddressComponent, Anniversary, Calendar, Card, CryptoKey, Directory, Link, Media, NameComponent, PersonalInfo, Title</td> | |||
<td align="left"><xref target="addresses" format="default"/>, <x ref target="anniversaries" format="default"/>, <xref target="calendars" format=" default"/>, <xref target="kind" format="default"/>, <xref target="cryptoKeys" fo rmat="default"/>, <xref target="directories" format="default"/>, <xref target="l inks" format="default"/>, <xref target="media" format="default"/>, <xref target= "name" format="default"/>, <xref target="personalInfo" format="default"/>, <xref target="titles" format="default"/></td> | <td align="left">Sections <xref target="addresses" format="count er"/>, <xref target="anniversaries" format="counter"/>, <xref target="calendars" format="counter"/>, <xref target="kind" format="counter"/>, <xref target="crypt oKeys" format="counter"/>, <xref target="directories" format="counter"/>, <xref target="links" format="counter"/>, <xref target="media" format="counter"/>, <xre f target="name" format="counter"/>, <xref target="personalInfo" format="counter" />, <xref target="titles" format="counter"/></td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">label</td> | <td align="left">label</td> | |||
<td align="left">String</td> | <td align="left">String</td> | |||
<td align="left">Calendar, CryptoKey, Directory, EmailAddress, L ink, Media, OnlineService, PersonalInfo, Phone, SchedulingAddress</td> | <td align="left">Calendar, CryptoKey, Directory, EmailAddress, L ink, Media, OnlineService, PersonalInfo, Phone, SchedulingAddress</td> | |||
<td align="left"><xref target="prop-label" format="default"/>, < xref target="calendars" format="default"/>, <xref target="cryptoKeys" format="de fault"/>, <xref target="directories" format="default"/>, <xref target="emails" f ormat="default"/>, <xref target="links" format="default"/>, <xref target="media" format="default"/>, <xref target="onlineServices" format="default"/>, <xref tar get="personalInfo" format="default"/>, <xref target="phones" format="default"/>, <xref target="schedulingAddresses" format="default"/>, <xref target="resource" format="default"/></td> | <td align="left">Sections <xref target="resource" format="counte r"/>, <xref target="prop-label" format="counter"/>, <xref target="calendars" for mat="counter"/>, <xref target="cryptoKeys" format="counter"/>, <xref target="dir ectories" format="counter"/>, <xref target="emails" format="counter"/>, <xref ta rget="links" format="counter"/>, <xref target="media" format="counter"/>, <xref target="onlineServices" format="counter"/>, <xref target="personalInfo" format=" counter"/>, <xref target="phones" format="counter"/>, <xref target="schedulingAd dresses" format="counter"/></td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">language</td> | <td align="left">language</td> | |||
<td align="left">String</td> | <td align="left">String</td> | |||
<td align="left">Card, LanguagePref</td> | <td align="left">Card, LanguagePref</td> | |||
<td align="left"><xref target="language" format="default"/>, | <td align="left">Sections <xref target="language" format="counte | |||
<xref target="preferredLanguages" format="default"/></td> | r"/>, | |||
<xref target="preferredLanguages" format="counter"/></td> | ||||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">level</td> | <td align="left">level</td> | |||
<td align="left">String</td> | <td align="left">String</td> | |||
<td align="left">PersonalInfo</td> | <td align="left">PersonalInfo</td> | |||
<td align="left"> | <td align="left"> | |||
<xref target="personalInfo" format="default"/> | <xref target="personalInfo" format="default"/> | |||
</td> | </td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
skipping to change at line 2200 ¶ | skipping to change at line 2724 ¶ | |||
<td align="left">Id[Link]</td> | <td align="left">Id[Link]</td> | |||
<td align="left">Card</td> | <td align="left">Card</td> | |||
<td align="left"> | <td align="left"> | |||
<xref target="links" format="default"/> | <xref target="links" format="default"/> | |||
</td> | </td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">listAs</td> | <td align="left">listAs</td> | |||
<td align="left">UnsignedInt</td> | <td align="left">UnsignedInt</td> | |||
<td align="left">Directory, PersonalInfo</td> | <td align="left">Directory, PersonalInfo</td> | |||
<td align="left"><xref target="directories" format="default"/>, <xref target="personalInfo" format="default"/></td> | <td align="left">Sections <xref target="directories" format="cou nter"/>, <xref target="personalInfo" format="counter"/></td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">localizations</td> | <td align="left">localizations</td> | |||
<td align="left">String[PatchObject]</td> | <td align="left">String[PatchObject]</td> | |||
<td align="left">Card</td> | <td align="left">Card</td> | |||
<td align="left"> | <td align="left"> | |||
<xref target="localizations" format="default"/> | <xref target="localizations" format="default"/> | |||
</td> | </td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
skipping to change at line 2222 ¶ | skipping to change at line 2746 ¶ | |||
<td align="left">Id[Media]</td> | <td align="left">Id[Media]</td> | |||
<td align="left">Card</td> | <td align="left">Card</td> | |||
<td align="left"> | <td align="left"> | |||
<xref target="media" format="default"/> | <xref target="media" format="default"/> | |||
</td> | </td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">mediaType</td> | <td align="left">mediaType</td> | |||
<td align="left">String</td> | <td align="left">String</td> | |||
<td align="left">Calendar, CryptoKey, Directory, Link, Media</td > | <td align="left">Calendar, CryptoKey, Directory, Link, Media</td > | |||
<td align="left"><xref target="resource" format="default"/>, <xr ef target="calendars" format="default"/>, <xref target="cryptoKeys" format="defa ult"/>, <xref target="directories" format="default"/>, <xref target="links" form at="default"/>, <xref target="media" format="default"/></td> | <td align="left">Sections <xref target="resource" format="counte r"/>, <xref target="calendars" format="counter"/>, <xref target="cryptoKeys" for mat="counter"/>, <xref target="directories" format="counter"/>, <xref target="li nks" format="counter"/>, <xref target="media" format="counter"/></td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">members</td> | <td align="left">members</td> | |||
<td align="left">String[Boolean]</td> | <td align="left">String[Boolean]</td> | |||
<td align="left">Card</td> | <td align="left">Card</td> | |||
<td align="left"> | <td align="left"> | |||
<xref target="members" format="default"/> | <xref target="members" format="default"/> | |||
</td> | </td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
skipping to change at line 2252 ¶ | skipping to change at line 2776 ¶ | |||
<td align="left">Name</td> | <td align="left">Name</td> | |||
<td align="left">Card</td> | <td align="left">Card</td> | |||
<td align="left"> | <td align="left"> | |||
<xref target="name" format="default"/> | <xref target="name" format="default"/> | |||
</td> | </td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">name</td> | <td align="left">name</td> | |||
<td align="left">String</td> | <td align="left">String</td> | |||
<td align="left">Author, Nickname, Organization, OrgUnit, Title< /td> | <td align="left">Author, Nickname, Organization, OrgUnit, Title< /td> | |||
<td align="left"><xref target="notes" format="default"/>, <xref target="nicknames" format="default"/>, <xref target="organizations" format="defa ult"/>, <xref target="titles" format="default"/></td> | <td align="left">Sections <xref target="notes" format="counter"/ >, <xref target="nicknames" format="counter"/>, <xref target="organizations" for mat="counter"/>, <xref target="titles" format="counter"/></td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">nicknames</td> | <td align="left">nicknames</td> | |||
<td align="left">Id[Nickname]</td> | <td align="left">Id[Nickname]</td> | |||
<td align="left">Card</td> | <td align="left">Card</td> | |||
<td align="left"> | <td align="left"> | |||
<xref target="nicknames" format="default"/> | <xref target="nicknames" format="default"/> | |||
</td> | </td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
skipping to change at line 2330 ¶ | skipping to change at line 2854 ¶ | |||
<td align="left">Id[Phone]</td> | <td align="left">Id[Phone]</td> | |||
<td align="left">Card</td> | <td align="left">Card</td> | |||
<td align="left"> | <td align="left"> | |||
<xref target="phones" format="default"/> | <xref target="phones" format="default"/> | |||
</td> | </td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">phonetic</td> | <td align="left">phonetic</td> | |||
<td align="left">String</td> | <td align="left">String</td> | |||
<td align="left">AddressComponent, NameComponent</td> | <td align="left">AddressComponent, NameComponent</td> | |||
<td align="left"><xref target="addresscomponent" format="default | <td align="left">Sections <xref target="addresscomponent" format | |||
"/>, | ="counter"/>, | |||
<xref target="namecomponent" format="default"/></td> | <xref target="namecomponent" format="counter"/></td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">phoneticScript</td> | <td align="left">phoneticScript</td> | |||
<td align="left">String</td> | <td align="left">String</td> | |||
<td align="left">Address, Name</td> | <td align="left">Address, Name</td> | |||
<td align="left"><xref target="name" format="default"/>, | <td align="left">Sections <xref target="name" format="counter"/> | |||
<xref target="addresses" format="default"/></td> | , | |||
<xref target="addresses" format="counter"/></td> | ||||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">phoneticSystem</td> | <td align="left">phoneticSystem</td> | |||
<td align="left">String</td> | <td align="left">String</td> | |||
<td align="left">Address, Name</td> | <td align="left">Address, Name</td> | |||
<td align="left"><xref target="name" format="default"/>, | <td align="left">Sections <xref target="name" format="counter"/> | |||
<xref target="addresses" format="default"/></td> | , | |||
<xref target="addresses" format="counter"/></td> | ||||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">place</td> | <td align="left">place</td> | |||
<td align="left">Address</td> | <td align="left">Address</td> | |||
<td align="left">Anniversary</td> | <td align="left">Anniversary</td> | |||
<td align="left"> | <td align="left"> | |||
<xref target="anniversaries" format="default"/> | <xref target="anniversaries" format="default"/> | |||
</td> | </td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">pref</td> | <td align="left">pref</td> | |||
<td align="left">UnsignedInt</td> | <td align="left">UnsignedInt</td> | |||
<td align="left">Address, Calendar, CryptoKey, Directory, Email Address, LanguagePref, Link, Media, Nickname, OnlineService, Phone, Pronouns, Sc hedulingAddress</td> | <td align="left">Address, Calendar, CryptoKey, Directory, Email Address, LanguagePref, Link, Media, Nickname, OnlineService, Phone, Pronouns, Sc hedulingAddress</td> | |||
<td align="left"><xref target="prop-pref" format="default"/>, <x ref target="addresses" format="default"/>, <xref target="calendars" format="defa ult"/>, <xref target="cryptoKeys" format="default"/>, <xref target="directories" format="default"/>, <xref target="emails" format="default"/>, <xref target="pre ferredLanguages" format="default"/>, <xref target="links" format="default"/>, <x ref target="media" format="default"/>, <xref target="nicknames" format="default" />, <xref target="onlineServices" format="default"/>, <xref target="phones" form at="default"/>, <xref target="speakToAs" format="default"/>, <xref target="sched ulingAddresses" format="default"/>, <xref target="resource" format="default"/></ td> | <td align="left">Sections <xref target="resource" format="counte r"/>, <xref target="prop-pref" format="counter"/>, <xref target="addresses" form at="counter"/>, <xref target="calendars" format="counter"/>, <xref target="crypt oKeys" format="counter"/>, <xref target="directories" format="counter"/>, <xref target="emails" format="counter"/>, <xref target="preferredLanguages" format="co unter"/>, <xref target="links" format="counter"/>, <xref target="media" format=" counter"/>, <xref target="nicknames" format="counter"/>, <xref target="onlineSer vices" format="counter"/>, <xref target="phones" format="counter"/>, <xref targe t="speakToAs" format="counter"/>, <xref target="schedulingAddresses" format="cou nter"/></td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">preferredLanguages</td> | <td align="left">preferredLanguages</td> | |||
<td align="left">String[LanguagePref]</td> | <td align="left">String[LanguagePref]</td> | |||
<td align="left">Card</td> | <td align="left">Card</td> | |||
<td align="left"> | <td align="left"> | |||
<xref target="preferredLanguages" format="default"/> | <xref target="preferredLanguages" format="default"/> | |||
</td> | </td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
skipping to change at line 2485 ¶ | skipping to change at line 3009 ¶ | |||
<td align="left">UTCDateTime</td> | <td align="left">UTCDateTime</td> | |||
<td align="left">Card</td> | <td align="left">Card</td> | |||
<td align="left"> | <td align="left"> | |||
<xref target="updated" format="default"/> | <xref target="updated" format="default"/> | |||
</td> | </td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">uri</td> | <td align="left">uri</td> | |||
<td align="left">String</td> | <td align="left">String</td> | |||
<td align="left">Author, Calendar, CryptoKey, Directory, Link, M edia, OnlineService, SchedulingAddress</td> | <td align="left">Author, Calendar, CryptoKey, Directory, Link, M edia, OnlineService, SchedulingAddress</td> | |||
<td align="left"><xref target="notes" format="default"/>, <xref target="resource" format="default"/>, <xref target="calendars" format="default"/ >, <xref target="cryptoKeys" format="default"/>, <xref target="directories" form at="default"/>, <xref target="links" format="default"/>, <xref target="media" fo rmat="default"/>, <xref target="onlineServices" format="default"/>, <xref target ="schedulingAddresses" format="default"/></td> | <td align="left">Sections <xref target="resource" format="counte r"/>, <xref target="notes" format="counter"/>, <xref target="calendars" format=" counter"/>, <xref target="cryptoKeys" format="counter"/>, <xref target="director ies" format="counter"/>, <xref target="links" format="counter"/>, <xref target=" media" format="counter"/>, <xref target="onlineServices" format="counter"/>, <xr ef target="schedulingAddresses" format="counter"/></td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">user</td> | <td align="left">user</td> | |||
<td align="left">String</td> | <td align="left">String</td> | |||
<td align="left">OnlineService</td> | <td align="left">OnlineService</td> | |||
<td align="left"> | <td align="left"> | |||
<xref target="onlineServices" format="default"/> | <xref target="onlineServices" format="default"/> | |||
</td> | </td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
skipping to change at line 2507 ¶ | skipping to change at line 3031 ¶ | |||
<td align="left">UTCDateTime</td> | <td align="left">UTCDateTime</td> | |||
<td align="left">Timestamp</td> | <td align="left">Timestamp</td> | |||
<td align="left"> | <td align="left"> | |||
<xref target="anniversaries" format="default"/> | <xref target="anniversaries" format="default"/> | |||
</td> | </td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">value</td> | <td align="left">value</td> | |||
<td align="left">String</td> | <td align="left">String</td> | |||
<td align="left">AddressComponent, NameComponent, PersonalInfo</ td> | <td align="left">AddressComponent, NameComponent, PersonalInfo</ td> | |||
<td align="left"><xref target="addresses" format="default"/>, | <td align="left">Sections <xref target="addresses" format="count | |||
<xref target="name" format="default"/>, | er"/>, | |||
<xref target="personalInfo" format="default"/></td> | <xref target="name" format="counter"/>, | |||
<xref target="personalInfo" format="counter"/></td> | ||||
</tr> | ||||
<tr anchor="iana-property-registry-version"> | ||||
<td align="left">version</td> | ||||
<td align="left">String</td> | ||||
<td align="left">Card</td> | ||||
<td align="left"> | ||||
<xref target="prop-version" format="default"/> | ||||
</td> | ||||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">year</td> | <td align="left">year</td> | |||
<td align="left">UnsignedInt</td> | <td align="left">UnsignedInt</td> | |||
<td align="left">PartialDate</td> | <td align="left">PartialDate</td> | |||
<td align="left"> | <td align="left"> | |||
<xref target="anniversaries" format="default"/> | <xref target="anniversaries" format="default"/> | |||
</td> | </td> | |||
</tr> | </tr> | |||
</tbody> | </tbody> | |||
</table> | </table> | |||
<t>The following table lists the initial <tt>reserved</tt> usage entri es of the "JSContact Properties" registry. All RFC section references are for < xref target="I-D.ietf-calext-jscontact"/>. The change controller for all these properties is <tt>IETF</tt>.</t> | <t>The following table lists the initial <tt>reserved</tt> usage entri es of the "JSContact Properties" registry. For this property, the Change Contro ller is <tt>IETF</tt>, and the RFC section reference is for RFC 9553.</t> | |||
<table anchor="tab-iana-reserved-property-registry" align="center"> | <table anchor="tab-iana-reserved-property-registry" align="center"> | |||
<name>JSContact Properties with "reserved" usage</name> | <name>JSContact Properties with "reserved" Usage</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">Reference or Description</th> | <th align="left">Reference/Description</th> | |||
<th align="left">Intended Usage</th> | <th align="left">Intended Usage</th> | |||
</tr> | </tr> | |||
</thead> | </thead> | |||
<!-- Everything in here should be sorted alphabetically: table entri es by property name, the references for each property alphabetically by the obje ct type or property they refer to --> | <!-- Everything in here should be sorted alphabetically: table entri es by property name, the references for each property alphabetically by the obje ct type or property they refer to --> | |||
<tbody> | <tbody> | |||
<tr> | <tr> | |||
<td align="left">extra</td> | <td align="left">extra</td> | |||
<td align="left">not applicable</td> | <td align="left">not applicable</td> | |||
<td align="left">not applicable</td> | <td align="left">not applicable</td> | |||
<td align="left"> | <td align="left"> | |||
<xref target="prop-extra" format="default"/> | <xref target="prop-extra" format="default"/> | |||
</td> | </td> | |||
<td align="left">reserved</td> | <td align="left">reserved</td> | |||
</tr> | </tr> | |||
</tbody> | </tbody> | |||
</table> | </table> | |||
</section> | </section> | |||
</section> | </section> | |||
<section anchor="iana-type-registry" numbered="true" toc="default"> | <section anchor="iana-type-registry" numbered="true" toc="default"> | |||
<name>Creation of the "JSContact Types" Registry</name> | <name>Creation of the JSContact Types Registry</name> | |||
<t>IANA is asked to create the "JSContact Types" registry. The purpose | <t>IANA has created the "JSContact Types" registry. The purpose of this | |||
of this new registry is to avoid name collisions for JSContact type names and pr | new registry is to avoid name collisions for JSContact type names and provide a | |||
ovide a complete reference for all data types used for JSContact property values | complete reference for all data types used for JSContact property values.</t> | |||
.</t> | <t>The registry entries sort alphabetically in ascending order by the "T | |||
<t>The registry entries sort alphabetically ascending by the "Type Name" | ype Name" column. Equal entries sort in any order.</t> | |||
column. Equal entries sort in any order.</t> | ||||
<t>The registry process for a new type is outlined in <xref target="iana -registry-policy" format="default"/>.</t> | <t>The registry process for a new type is outlined in <xref target="iana -registry-policy" format="default"/>.</t> | |||
<section anchor="iana-type-registry-template" numbered="true" toc="defau lt"> | <section anchor="iana-type-registry-template" numbered="true" toc="defau lt"> | |||
<name>"JSContact Types" Registry Template</name> | <name>JSContact Types Registry Template</name> | |||
<dl newline="false"> | <dl newline="false"> | |||
<dt>Type Name:</dt> | <dt>Type Name:</dt> | |||
<dd>the name of the type</dd> | <dd>The name of the type.</dd> | |||
<dt>Reference or Description:</dt> | ||||
<dd>a brief description or RFC number and section reference where th | ||||
e Type is specified (may be omitted for "reserved" type names)</dd> | ||||
<dt>Intended Usage:</dt> | <dt>Intended Usage:</dt> | |||
<dd>common, reserved, or obsolete</dd> | <dd>May be "common", "reserved", or "obsolete".</dd> | |||
<dt>Since Version:</dt> | <dt>Since Version:</dt> | |||
<dd>This defines the JSContact version on which this type definition is based on. The version <bcp14>MUST</bcp14> be one of the allowed values of t he <tt>version</tt> property in the JSContact Enum Value registry (see <xref tar get="tab-iana-version-registry"/>).</dd> | <dd>The JSContact version on which this type definition is based. T he version <bcp14>MUST</bcp14> be one of the allowed values of the <tt>version</ tt> property in the "JSContact Enum Values" registry (see <xref target="tab-iana -version-registry"/>).</dd> | |||
<dt>Until Version:</dt> | <dt>Until Version:</dt> | |||
<dd>This defines the JSContact version after which this type definit ion got obsoleted and <bcp14>MUST NOT</bcp14> be used in later versions. The Un til Version value either <bcp14>MUST</bcp14> be not set, or one of the allowed v alues of the <tt>version</tt> property in the JSContact Enum Value registry (see <xref target="tab-iana-version-registry"/>).</dd> | <dd>The JSContact version after which the type definition was obsole ted; therefore, it <bcp14>MUST NOT</bcp14> be used in later versions. The Until Version value either <bcp14>MUST NOT</bcp14> be set or <bcp14>MUST</bcp14> be o ne of the allowed values of the <tt>version</tt> property in the "JSContact Enum Values" registry (see <xref target="tab-iana-version-registry"/>).</dd> | |||
<dt>Change Controller:</dt> | <dt>Change Controller:</dt> | |||
<dd>This is who may request a change to this entry's definition (<tt | <dd>This is who may request a change to the entry's definition (<tt> | |||
>IETF</tt> for RFCs from the IETF stream).</dd> | IETF</tt> for RFCs from the IETF stream).</dd> | |||
<dt>Reference or Description:</dt> | ||||
<dd>A brief description or RFC number and section reference where th | ||||
e Type is specified. For reserved type names, the reference or description <bcp1 | ||||
4>MAY</bcp14> be omitted.</dd> | ||||
</dl> | </dl> | |||
</section> | </section> | |||
<section anchor="iana-type-registry-contents" numbered="true" toc="defau lt"> | <section anchor="iana-type-registry-contents" numbered="true" toc="defau lt"> | |||
<name>Initial Contents for the "JSContact Types" Registry</name> | <name>Initial Contents of the JSContact Types Registry</name> | |||
<t>The following table lists the initial <tt>common</tt> usage entries | <t>The following table lists the initial <tt>common</tt> usage entries | |||
of the JSContact Types registry. The Since Version for all types is <tt>1.0</t | in the "JSContact Types" registry. For all of these types, the Since Version i | |||
t>. The Until Version for all types is not set. All RFC section references are | s <tt>1.0</tt>, the Until Version is not set, the Change Controller is <tt>IETF< | |||
for <xref target="I-D.ietf-calext-jscontact"/>. The change controller for all | /tt>, and RFC section references are for RFC 9553.</t> | |||
these properties is <tt>IETF</tt>.</t> | ||||
<table anchor="tab-iana-type-registry-common" align="left"> | <table anchor="tab-iana-type-registry-common" align="left"> | |||
<name>JSContact Types with "common" usage</name> | <name>JSContact Types with "common" Usage</name> | |||
<thead> | <thead> | |||
<tr> | <tr> | |||
<th align="left">Type Name</th> | <th align="left">Type Name</th> | |||
<th align="left">Reference or Description</th> | <th align="left">Reference or Description</th> | |||
</tr> | </tr> | |||
</thead> | </thead> | |||
<tbody> | <tbody> | |||
<tr> | <tr> | |||
<td align="left">Address</td> | <td align="left">Address</td> | |||
<td align="left"> | <td align="left"> | |||
skipping to change at line 2800 ¶ | skipping to change at line 3332 ¶ | |||
</td> | </td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">UTCDateTime</td> | <td align="left">UTCDateTime</td> | |||
<td align="left"> | <td align="left"> | |||
<xref target="utcdatetime" format="default"/> | <xref target="utcdatetime" format="default"/> | |||
</td> | </td> | |||
</tr> | </tr> | |||
</tbody> | </tbody> | |||
</table> | </table> | |||
<t>The following table lists the initial <tt>reserved</tt> usage entri es of the JSContact Types registry. All types are for version <tt>1.0</tt>. Al l RFC section references are for <xref target="I-D.ietf-calext-jscontact"/>. Th e change controller for all these properties is <tt>IETF</tt>.</t> | <t>The following table lists the initial <tt>reserved</tt> usage entry of the "JSContact Types" registry. For this type, the version is <tt>1.0</tt>, the Change Controller is <tt>IETF</tt>, and the RFC section reference is for RF C 9553.</t> | |||
<table anchor="tab-iana-type-registry-reserved" align="left"> | <table anchor="tab-iana-type-registry-reserved" align="left"> | |||
<name>JSContact Types with "reserved" usage</name> | <name>JSContact Types with "reserved" Usage</name> | |||
<thead> | <thead> | |||
<tr> | <tr> | |||
<th align="left">Type Name</th> | <th align="left">Type Name</th> | |||
<th align="left">Reference or Description</th> | <th align="left">Reference or Description</th> | |||
</tr> | </tr> | |||
</thead> | </thead> | |||
<tbody> | <tbody> | |||
<tr> | <tr> | |||
<td align="left">Resource</td> | <td align="left">Resource</td> | |||
<td align="left"> | <td align="left"> | |||
<xref target="resource" format="default"/> | <xref target="resource" format="default"/> | |||
</td> | </td> | |||
</tr> | </tr> | |||
</tbody> | </tbody> | |||
</table> | </table> | |||
</section> | </section> | |||
</section> | </section> | |||
<section anchor="iana-enum-registry" numbered="true" toc="default"> | <section anchor="iana-enum-registry" numbered="true" toc="default"> | |||
<name>Creation of the "JSContact Enum Values" Registry</name> | <name>Creation of the JSContact Enum Values Registry</name> | |||
<t>IANA is asked to create the "JSContact Enum Values" registry. The pu | <t>IANA has created the "JSContact Enum Values" registry. The purpose o | |||
rpose of the new registry is to allow interoperable extension of semantics for | f the new registry is to allow interoperable extension of semantics for JSConta | |||
JSContact properties with enumerable values. Each such property will have a sub | ct properties with enumerable values. Each such property will have a subregistr | |||
registry of allowed values.</t> | y of allowed values.</t> | |||
<t>The registry entries sort alphabetically ascending by the "Property N | <t>The registry entries sort alphabetically in ascending order by the fo | |||
ame" column first, "Property Context" second, "Since Version" third. The enum v | llowing columns: "Property Name" first, "Property Context" second, and "Since Ve | |||
alues sort alphabetically ascending. Equal entries sort in any order.</t> | rsion" third. The enum values sort alphabetically in ascending order. Equal en | |||
tries sort in any order.</t> | ||||
<t>The registry process for a new enum value or adding a new enumerable property is outlined in <xref target="iana-registry-policy" format="default"/>.< /t> | <t>The registry process for a new enum value or adding a new enumerable property is outlined in <xref target="iana-registry-policy" format="default"/>.< /t> | |||
<section anchor="iana-enum-registry-registry-template" numbered="true" t oc="default"> | <section anchor="iana-enum-registry-registry-template" numbered="true" t oc="default"> | |||
<name>"JSContact Enum Values" Registry Property Template</name> | <name>JSContact Enum Values Registry Property Template</name> | |||
<t>This template is for adding a subregistry for a new enumerable prop | <t>This template is for adding a subregistry for a new enumerable prop | |||
erty to the "JSContact Enum" registry.</t> | erty to the "JSContact Enum Values" registry.</t> | |||
<dl newline="false"> | <dl newline="false"> | |||
<dt>Property Name:</dt> | <dt>Property Name:</dt> | |||
<dd>These are the name(s) of the property or properties where these values may be used. This <bcp14>MUST</bcp14> be registered in the "JSContact Pr operties" registry.</dd> | <dd>The name(s) of the property or properties where these values may be used. This <bcp14>MUST</bcp14> be registered in the "JSContact Properties" registry.</dd> | |||
<dt>Context:</dt> | <dt>Context:</dt> | |||
<dd>This is the list of allowed object types where the property or p roperties may appear, as registered in the "JSContact Properties" registry. Thi s disambiguates where there may be two distinct properties with the same name in different contexts.</dd> | <dd>The list of allowed object types where the property or propertie s may appear, as registered in the "JSContact Properties" registry. This disamb iguates where there may be two distinct properties with the same name in differe nt contexts.</dd> | |||
<dt>Since Version:</dt> | <dt>Since Version:</dt> | |||
<dd>This defines the JSContact version on which this enum value defi nition is based on. The version <bcp14>MUST</bcp14> be one of the allowed value s of the <tt>version</tt> property in the JSContact Enum Value registry (see <xr ef target="tab-iana-version-registry"/>).</dd> | <dd>The JSContact version on which the enum value definition is base d. The version <bcp14>MUST</bcp14> be one of the allowed values of the <tt>vers ion</tt> property in the "JSContact Enum Values" registry (see <xref target="tab -iana-version-registry"/>).</dd> | |||
<dt>Until Version:</dt> | <dt>Until Version:</dt> | |||
<dd>This defines the JSContact version after which this enum value d efinition got obsoleted and <bcp14>MUST NOT</bcp14> be used in later versions. The Until Version value either <bcp14>MUST</bcp14> be not set, or one of the all owed values of the <tt>version</tt> property in the JSContact Enum Value registr y (see <xref target="tab-iana-version-registry"/>).</dd> | <dd>The JSContact version after which the enum value definition was obsoleted; therefore, the enum value definition <bcp14>MUST NOT</bcp14> be used in later versions. The Until Version value either <bcp14>MUST NOT</bcp14> be se t or <bcp14>MUST</bcp14> be one of the allowed values of the <tt>version</tt> pr operty in the "JSContact Enum Values" registry (see <xref target="tab-iana-versi on-registry"/>).</dd> | |||
<dt>Change Controller:</dt> | <dt>Change Controller:</dt> | |||
<dd>This is who may request a change to this entry's definition (<tt >IETF</tt> for RFCs from the IETF stream).</dd> | <dd>This is who may request a change to the entry's definition (<tt> IETF</tt> for RFCs from the IETF stream).</dd> | |||
<dt>Initial Contents:</dt> | <dt>Initial Contents:</dt> | |||
<dd>This is the initial list of defined values for this enum, using the template defined in <xref target="iana-enum-registry-value-template" format= "default"/>. A subregistry will be created with these values for this property name/context tuple.</dd> | <dd>The initial list of defined values for the enum, using the templ ate defined in <xref target="iana-enum-registry-value-template" format="default" />. A subregistry will be created with these values for this property name/cont ext tuple.</dd> | |||
</dl> | </dl> | |||
</section> | </section> | |||
<section anchor="iana-enum-registry-value-template" numbered="true" toc= "default"> | <section anchor="iana-enum-registry-value-template" numbered="true" toc= "default"> | |||
<name>"JSContact Enum Values" Registry Value Template</name> | <name>JSContact Enum Values Registry Value Template</name> | |||
<t>This template is for adding a new enum value to a subregistry in th | <t>This template is for adding a new enum value to a subregistry in th | |||
e JSContact Enum registry.</t> | e "JSContact Enum Values" registry.</t> | |||
<dl newline="false"> | <dl newline="false"> | |||
<dt>Enum Value:</dt> | <dt>Enum Value:</dt> | |||
<dd>The verbatim value of the enum.</dd> | <dd>The verbatim value of the enum.</dd> | |||
<dt>Reference or Description:</dt> | ||||
<dd>A brief description or RFC number and section reference for the | ||||
semantics of this value.</dd> | ||||
<dt>Since Version:</dt> | <dt>Since Version:</dt> | |||
<dd>The JSContact version on which the enum value definition is base d on. The version <bcp14>MUST</bcp14> be one of the allowed values of the <tt>v ersion</tt> property in the JSContact Enum Value registry (see <xref target="tab -iana-version-registry"/>).</dd> | <dd>The JSContact version on which the enum value definition is base d. The version <bcp14>MUST</bcp14> be one of the allowed values of the <tt>vers ion</tt> property in the "JSContact Enum Values" registry (see <xref target="tab -iana-version-registry"/>).</dd> | |||
<dt>Until Version:</dt> | <dt>Until Version:</dt> | |||
<dd>The JSContact version after which this enum value got obsoleted | <dd>The JSContact version after which the enum value was obsoleted; | |||
and <bcp14>MUST NOT</bcp14> be used in later versions. The Until Version value | therefore, the enum value <bcp14>MUST NOT</bcp14> be used in later versions. Th | |||
either <bcp14>MUST</bcp14> be not set, or one of the allowed values of the <tt>v | e Until Version value either <bcp14>MUST NOT</bcp14> be set or <bcp14>MUST</bcp1 | |||
ersion</tt> property in the JSContact Enum Value registry (see <xref target="tab | 4> be one of the allowed values of the <tt>version</tt> property in the "JSConta | |||
-iana-version-registry"/>).</dd> | ct Enum Values" registry (see <xref target="tab-iana-version-registry"/>).</dd> | |||
<dt>Reference or Description:</dt> | ||||
<dd>A brief description or RFC number and section reference for the | ||||
semantics of the value.</dd> | ||||
</dl> | </dl> | |||
</section> | </section> | |||
<section anchor="iana-enum-registry-contents" numbered="true" toc="defau lt"> | <section anchor="iana-enum-registry-contents" numbered="true" toc="defau lt"> | |||
<name>Initial Contents for the "JSContact Enum Values" Registry</name> | <name>Initial Contents of the JSContact Enum Values Registry</name> | |||
<t>For each subregistry created in this section, all RFC section refer | <t>For all entries in each subregistry created in this section, the Si | |||
ences are for <xref target="I-D.ietf-calext-jscontact"/>. For all entries, the | nce Version is <tt>1.0</tt>, the Until Version is not set, the Change Controller | |||
Since Version is <tt>1.0</tt>, the Until Version is not set, the Change Controll | is <tt>IETF</tt>, and RFC section references are for RFC 9553.</t> | |||
er is <tt>IETF</tt>.</t> | ||||
<dl spacing="compact" newline="false" indent="20"> | <dl spacing="compact" newline="false" indent="20"> | |||
<dt>Property Name:</dt> | <dt>Property Name:</dt> | |||
<dd>contexts</dd> | <dd>contexts</dd> | |||
<dt>Context:</dt> | <dt>Context:</dt> | |||
<dd>Address</dd> | <dd>Address</dd> | |||
<dt>Initial Contents:</dt> | <dt>Initial Contents:</dt> | |||
<dd> | <dd> | |||
<table anchor="tab-iana-enum-addr-contexts" align="left"> | <table anchor="tab-iana-enum-addr-contexts" align="left"> | |||
<name>JSContact Enum Values for contexts (Context: Address)</nam e> | <name>JSContact Enum Values for contexts (Context: Address)</nam e> | |||
<thead> | <thead> | |||
skipping to change at line 2912 ¶ | skipping to change at line 3444 ¶ | |||
</dd> | </dd> | |||
</dl> | </dl> | |||
<dl spacing="compact" newline="false" indent="20"> | <dl spacing="compact" newline="false" indent="20"> | |||
<dt>Property Name:</dt> | <dt>Property Name:</dt> | |||
<dd>contexts</dd> | <dd>contexts</dd> | |||
<dt>Context:</dt> | <dt>Context:</dt> | |||
<dd>Calendar, CryptoKey, Directory, EmailAddress, LanguagePref, Lin k, Media, Nickname, OnlineService, Organization, Phone, Pronouns, SchedulingAddr ess</dd> | <dd>Calendar, CryptoKey, Directory, EmailAddress, LanguagePref, Lin k, Media, Nickname, OnlineService, Organization, Phone, Pronouns, SchedulingAddr ess</dd> | |||
<dt>Initial Contents:</dt> | <dt>Initial Contents:</dt> | |||
<dd> | <dd> | |||
<table anchor="tab-iana-enum-contexts" align="left"> | <table anchor="tab-iana-enum-contexts" align="left"> | |||
<name>JSContact Enum Values for contexts (Context: Calendar, Cr yptoKey, Directory, EmailAddress, LanguagePref, Link, Media, Nickname, OnlineSer vice, Organization, Phone, Pronouns, SchedulingAddress)</name> | <name>JSContact Enum Values for contexts (Context: Calendar, Cry ptoKey, Directory, EmailAddress, LanguagePref, Link, Media, Nickname, OnlineServ ice, Organization, Phone, Pronouns, SchedulingAddress)</name> | |||
<thead> | <thead> | |||
<tr> | <tr> | |||
<th align="left">Enum Value</th> | <th align="left">Enum Value</th> | |||
<th align="left">Reference or Description</th> | <th align="left">Reference or Description</th> | |||
</tr> | </tr> | |||
</thead> | </thead> | |||
<tbody> | <tbody> | |||
<tr> | <tr> | |||
<td align="left">private</td> | <td align="left">private</td> | |||
<td align="left"> | <td align="left"> | |||
skipping to change at line 3012 ¶ | skipping to change at line 3544 ¶ | |||
</dd> | </dd> | |||
</dl> | </dl> | |||
<dl spacing="compact" newline="false" indent="20"> | <dl spacing="compact" newline="false" indent="20"> | |||
<dt>Property Name:</dt> | <dt>Property Name:</dt> | |||
<dd>grammaticalGender</dd> | <dd>grammaticalGender</dd> | |||
<dt>Context:</dt> | <dt>Context:</dt> | |||
<dd>SpeakToAs</dd> | <dd>SpeakToAs</dd> | |||
<dt>Initial Contents:</dt> | <dt>Initial Contents:</dt> | |||
<dd> | <dd> | |||
<table anchor="tab-iana-enum-speaktoas-grammaticalgender" align="l eft"> | <table anchor="tab-iana-enum-speaktoas-grammaticalgender" align="l eft"> | |||
<name>JSContact Enum Values for kind (Context: SpeakToAs)</name> | <name>JSContact Enum Values for grammaticalGender (Context: Spea kToAs)</name> | |||
<thead> | <thead> | |||
<tr> | <tr> | |||
<th align="left">Enum Value</th> | <th align="left">Enum Value</th> | |||
<th align="left">Reference or Description</th> | <th align="left">Reference or Description</th> | |||
</tr> | </tr> | |||
</thead> | </thead> | |||
<tbody> | <tbody> | |||
<tr> | <tr> | |||
<td align="left">animate</td> | <td align="left">animate</td> | |||
<td align="left"> | <td align="left"> | |||
skipping to change at line 3582 ¶ | skipping to change at line 4114 ¶ | |||
<td align="left"> | <td align="left"> | |||
<xref target="personalInfo" format="default"/> | <xref target="personalInfo" format="default"/> | |||
</td> | </td> | |||
</tr> | </tr> | |||
</tbody> | </tbody> | |||
</table> | </table> | |||
</dd> | </dd> | |||
</dl> | </dl> | |||
<dl spacing="compact" newline="false" indent="20"> | <dl spacing="compact" newline="false" indent="20"> | |||
<dt>Property Name:</dt> | <dt>Property Name:</dt> | |||
<dd>phoneticSystem</dd> | ||||
<dt>Context:</dt> | ||||
<dd>Address, Name</dd> | ||||
<dt>Initial Contents:</dt> | ||||
<dd> | ||||
<table anchor="tab-iana-enum-pronounce-system" align="left"> | ||||
<name>JSContact Enum Values for phoneticSystem (Context: Address | ||||
, Name)</name> | ||||
<thead> | ||||
<tr> | ||||
<th align="left">Enum Value</th> | ||||
<th align="left">Reference or Description</th> | ||||
</tr> | ||||
</thead> | ||||
<tbody> | ||||
<tr> | ||||
<td align="left">ipa</td> | ||||
<td align="left"> | ||||
<xref target="prop-phonetic" format="default"/> | ||||
</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="left">jyut</td> | ||||
<td align="left"> | ||||
<xref target="prop-phonetic" format="default"/> | ||||
</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="left">piny</td> | ||||
<td align="left"> | ||||
<xref target="prop-phonetic" format="default"/> | ||||
</td> | ||||
</tr> | ||||
</tbody> | ||||
</table> | ||||
</dd> | ||||
</dl> | ||||
<dl spacing="compact" newline="false" indent="20"> | ||||
<dt>Property Name:</dt> | ||||
<dd>relation</dd> | <dd>relation</dd> | |||
<dt>Context:</dt> | <dt>Context:</dt> | |||
<dd>Relation</dd> | <dd>Relation</dd> | |||
<dt>Initial Contents:</dt> | <dt>Initial Contents:</dt> | |||
<dd> | <dd> | |||
<table anchor="tab-iana-enum-relation-relation" align="left"> | <table anchor="tab-iana-enum-relation-relation" align="left"> | |||
<name>JSContact Enum Values for relation (Context: Relation)</na me> | <name>JSContact Enum Values for relation (Context: Relation)</na me> | |||
<thead> | <thead> | |||
<tr> | <tr> | |||
<th align="left">Enum Value</th> | <th align="left">Enum Value</th> | |||
skipping to change at line 3720 ¶ | skipping to change at line 4290 ¶ | |||
<tr> | <tr> | |||
<td align="left">sweetheart</td> | <td align="left">sweetheart</td> | |||
<td align="left"> | <td align="left"> | |||
<xref target="relatedTo" format="default"/> | <xref target="relatedTo" format="default"/> | |||
</td> | </td> | |||
</tr> | </tr> | |||
</tbody> | </tbody> | |||
</table> | </table> | |||
</dd> | </dd> | |||
</dl> | </dl> | |||
<dl spacing="compact" newline="false" indent="20"> | ||||
<dt>Property Name:</dt> | ||||
<dd>phoneticSystem</dd> | ||||
<dt>Context:</dt> | ||||
<dd>Address, Name</dd> | ||||
<dt>Initial Contents:</dt> | ||||
<dd> | ||||
<table anchor="tab-iana-enum-pronounce-system" align="left"> | ||||
<name>JSContact Enum Values for phoneticSystem (Context: Address | ||||
, Name)</name> | ||||
<thead> | ||||
<tr> | ||||
<th align="left">Enum Value</th> | ||||
<th align="left">Reference or Description</th> | ||||
</tr> | ||||
</thead> | ||||
<tbody> | ||||
<tr> | ||||
<td align="left">ipa</td> | ||||
<td align="left"> | ||||
<xref target="prop-phonetic" format="default"/> | ||||
</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="left">jyut</td> | ||||
<td align="left"> | ||||
<xref target="prop-phonetic" format="default"/> | ||||
</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="left">piny</td> | ||||
<td align="left"> | ||||
<xref target="prop-phonetic" format="default"/> | ||||
</td> | ||||
</tr> | ||||
</tbody> | ||||
</table> | ||||
</dd> | ||||
</dl> | ||||
</section> | </section> | |||
</section> | </section> | |||
</section> | </section> | |||
<section anchor="security-considerations" numbered="true" toc="default"> | <section anchor="security-considerations" numbered="true" toc="default"> | |||
<name>Security Considerations</name> | <name>Security Considerations</name> | |||
<t>Contact information is very privacy-sensitive. It can reveal the ident ity, location and credentials information, employment status, interests and hobb ies, and social network of a user. Its transmission and storage must be done ca refully to protect it from possible threats, such as eavesdropping, replay, mess age insertion, deletion, modification, and on-path attacks.</t> | <t>Contact information is very privacy sensitive. It can reveal the ident ity, location, credentials information, employment status, interests and hobbies , and social network of a user. Its transmission and storage must be done caref ully to protect it from possible threats such as eavesdropping, replay, message insertion, deletion, modification, and on-path attacks.</t> | |||
<t>The data being stored and transmitted may be used in systems with real- world consequences. For example, a malicious actor might provide JSContact data that uses the name of another person but insert their contact details to impers onate the unknown victim. Such systems must be careful to authenticate all data they receive to prevent them from being subverted and ensure the change comes f rom an authorized entity.</t> | <t>The data being stored and transmitted may be used in systems with real- world consequences. For example, a malicious actor might provide JSContact data that uses the name of another person but insert their contact details to impers onate the unknown victim. Such systems must be careful to authenticate all data they receive to prevent them from being subverted and ensure the change comes f rom an authorized entity.</t> | |||
<t>This document only defines the data format; such considerations are pri marily the concern of the API or method of storage and transmission of such file s.</t> | <t>This document only defines the data format; such considerations are pri marily the concern of the API or method of storage and transmission of such file s.</t> | |||
<section anchor="json-parsing" numbered="true" toc="default"> | <section anchor="json-parsing" numbered="true" toc="default"> | |||
<name>JSON Parsing</name> | <name>JSON Parsing</name> | |||
<t>The security considerations of <xref target="RFC8259" format="default "/> apply to the use of JSON as the data interchange format. | <t>The security considerations of <xref target="RFC8259" format="default "/> apply to the use of JSON as the data interchange format. | |||
</t> | </t> | |||
<t>As for any serialization format, parsers need to thoroughly check the syntax of the supplied data. JSON uses opening and closing brackets for severa l types and structures, and it is possible that the end of the supplied data wil l be reached when scanning for a matching closing bracket; this is an error cond ition, and implementations need to stop scanning at the end of the supplied data .</t> | <t>As for any serialization format, parsers need to thoroughly check the syntax of the supplied data. JSON uses opening and closing brackets for severa l types and structures, and it is possible that the end of the supplied data wil l be reached when scanning for a matching closing bracket; this is an error cond ition, and implementations need to stop scanning at the end of the supplied data .</t> | |||
<t>JSON also uses a string encoding with some escape sequences to encode special characters within a string. Care is needed when processing these escap e sequences to ensure that they are fully formed before the special processing i s triggered, with special care taken when the escape sequences appear adjacent t o other (non-escaped) special characters or adjacent to the end of data (as in t he previous paragraph).</t> | <t>JSON also uses a string encoding with some escape sequences to encode special characters within a string. Care is needed when processing these escap e sequences to ensure that they are fully formed before the special processing i s triggered, with special care taken when the escape sequences appear adjacent t o other (non-escaped) special characters or adjacent to the end of data (as in t he previous paragraph).</t> | |||
<t>If parsing JSON into a non-textual structured data format, implementa tions may need to allocate storage to hold JSON string elements. Since JSON doe s not use explicit string lengths, the risk of denial of service due to resource exhaustion is small, but implementations may still wish to place limits on the size of allocations they are willing to make in any given context, to avoid untr usted data causing excessive memory allocation.</t> | <t>If parsing JSON into a non-textual structured data format, implementa tions may need to allocate storage to hold JSON string elements. Since JSON doe s not use explicit string lengths, the risk of denial of service due to resource exhaustion is small, but implementations may still wish to place limits on the size of allocations they are willing to make in any given context, to avoid untr usted data causing excessive memory allocation.</t> | |||
</section> | </section> | |||
<section anchor="uri-values" numbered="true" toc="default"> | <section anchor="uri-values" numbered="true" toc="default"> | |||
<name>URI Values</name> | <name>URI Values</name> | |||
<t>Several JSContact properties contain URIs as values, and processing t hese properties requires extra care. <xref target="RFC3986" sectionFormat="of" section="7"/> discusses security risks related to URIs.</t> | <t>Several JSContact properties contain URIs as values, and processing t hese properties requires extra care. <xref target="RFC3986" sectionFormat="of" section="7"/> discusses security risks related to URIs.</t> | |||
<t>Fetching remote resources carries inherent risks. Connections must o nly be allowed on well-known ports, using allowed protocols (generally, just HTT P/HTTPS on their default ports). The URL must be resolved externally and not al lowed to access internal resources. Connecting to an external source reveals IP (and therefore often location) information.</t> | <t>Fetching remote resources carries inherent risks. Connections must o nly be allowed on well-known ports, using allowed protocols (generally, just HTT P/HTTPS on their default ports). The URL must be resolved externally and not al lowed to access internal resources. Connecting to an external source reveals IP (and therefore often location) information.</t> | |||
<t>A maliciously constructed JSContact object may contain a very large n umber of URIs. In the case of published address books with a large number of su bscribers, such objects could be widely distributed. Implementations should be careful to limit the automatic fetching of linked resources to reduce the risk o f this being an amplification vector for a denial-of-service attack.</t> | <t>A maliciously constructed JSContact object may contain a very large n umber of URIs. In the case of published address books with a large number of su bscribers, such objects could be widely distributed. Implementations should be careful to limit the automatic fetching of linked resources to reduce the risk o f this being an amplification vector for a denial-of-service attack.</t> | |||
</section> | </section> | |||
</section> | </section> | |||
</middle> | </middle> | |||
<back> | <back> | |||
<displayreference target="I-D.ietf-uuidrev-rfc4122bis" to="UUID"/> | ||||
<references> | <references> | |||
<name>References</name> | <name>References</name> | |||
<references> | <references> | |||
<name>Normative References</name> | <name>Normative References</name> | |||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.1 | |||
FC.1034.xml"/> | 034.xml"/> | |||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.1 | |||
FC.1035.xml"/> | 035.xml"/> | |||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2 | |||
FC.2046.xml"/> | 046.xml"/> | |||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2 | |||
FC.2119.xml"/> | 119.xml"/> | |||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2 | |||
FC.2426.xml"/> | 426.xml"/> | |||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.3 | |||
FC.3339.xml"/> | 339.xml"/> | |||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.4 | |||
FC.4122.xml"/> | 122.xml"/> | |||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.4 | |||
FC.4648.xml"/> | 648.xml"/> | |||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5 | |||
FC.5234.xml"/> | 234.xml"/> | |||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5 | |||
FC.5322.xml"/> | 322.xml"/> | |||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5 | |||
FC.5646.xml"/> | 646.xml"/> | |||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5 | |||
FC.5870.xml"/> | 870.xml"/> | |||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6 | |||
FC.6350.xml"/> | 350.xml"/> | |||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6 | |||
FC.6901.xml"/> | 901.xml"/> | |||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7 | |||
FC.7493.xml"/> | 493.xml"/> | |||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7 | |||
FC.7529.xml"/> | 529.xml"/> | |||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8 | |||
FC.8126.xml"/> | 126.xml"/> | |||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8 | |||
FC.8141.xml"/> | 141.xml"/> | |||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8 | |||
FC.8174.xml"/> | 174.xml"/> | |||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8 | |||
FC.8259.xml"/> | 259.xml"/> | |||
<reference anchor="ISO.3166-1.2006"> | ||||
<!--[rfced] The 2006 version of this reference has been withdrawn; | ||||
therefore, we replaced it with the 2020 version. Please let us | ||||
know if any further updates are needed. | ||||
Original: | ||||
[ISO.3166-1.2006] | ||||
International Organization for Standardization, "Codes for | ||||
the representation of names of countries, 3rd edition", | ||||
ISO Standard 3166-1, 2006. | ||||
Current: | ||||
[ISO.3166-1] | ||||
International Organization for Standardization, "Codes for | ||||
the representation of names of countries and their subdivisions - | ||||
Part 1: Country codes", ISO 3166-1:2020, August 2020. | ||||
--> | ||||
<reference anchor="ISO.3166-1"> | ||||
<front> | <front> | |||
<title>Codes for the representation of names of countries, 3rd | <title>Codes for the representation of names of countries and their | |||
edition</title> | subdivisions -- Part 1: Country codes | |||
</title> | ||||
<author> | <author> | |||
<organization>International Organization for | <organization>International Organization for Standardization</orga | |||
Standardization</organization> | nization> | |||
</author> | </author> | |||
<date year="2006"/> | <date month="August" year="2020"/> | |||
</front> | </front> | |||
<seriesInfo name="ISO" value="Standard 3166-1"/> | <seriesInfo name="ISO" value="3166-1:2020"/> | |||
</reference> | </reference> | |||
<reference anchor="IANATZ" target="https://www.iana.org/time-zones"> | ||||
<reference anchor="IANA-TZ" target="https://www.iana.org/time-zones"> | ||||
<front> | <front> | |||
<title>IANA Time Zone Database</title> | <title>Time Zone Database</title> | |||
<author/> | <author><organization>IANA</organization></author> | |||
</front> | </front> | |||
</reference> | </reference> | |||
<reference anchor="IANAvCard" target="https://www.iana.org/assignments/v | ||||
card-elements/vcard-elements.xhtml"> | <reference anchor="IANA-vCard" target="https://www.iana.org/assignments/ | |||
vcard-elements"> | ||||
<front> | <front> | |||
<title>IANA vCard Elements</title> | <title>vCard Elements</title> | |||
<author/> | <author><organization>IANA</organization></author> | |||
</front> | </front> | |||
</reference> | </reference> | |||
</references> | </references> | |||
<references> | <references> | |||
<name>Informative References</name> | <name>Informative References</name> | |||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.3 | |||
FC.3261.xml"/> | 261.xml"/> | |||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.3 | |||
FC.3966.xml"/> | 966.xml"/> | |||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.3 | |||
FC.3986.xml"/> | 986.xml"/> | |||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.3 | |||
FC.3987.xml"/> | 987.xml"/> | |||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6 | |||
FC.6351.xml"/> | 351.xml"/> | |||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6 | |||
FC.6473.xml"/> | 473.xml"/> | |||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6 | |||
FC.6474.xml"/> | 474.xml"/> | |||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6 | |||
FC.6715.xml"/> | 715.xml"/> | |||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6 | |||
FC.6869.xml"/> | 869.xml"/> | |||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7 | |||
FC.7095.xml"/> | 095.xml"/> | |||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8 | |||
FC.8499.xml"/> | 499.xml"/> | |||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8 | |||
FC.8605.xml"/> | 605.xml"/> | |||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D. | ||||
ietf-uuidrev-rfc4122bis.xml"/> | <!--[I-D.ietf-uuidrev-rfc4122bis] in EDIT state; entered the long way to include | |||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D. | the correct initials--> | |||
ietf-calext-jscontact.xml"/> | <reference anchor="I-D.ietf-uuidrev-rfc4122bis" target="https://datatracker.ietf | |||
.org/doc/html/draft-ietf-uuidrev-rfc4122bis-14"> | ||||
<front> | ||||
<title>Universally Unique IDentifiers (UUID)</title> | ||||
<author fullname="Kyzer R. Davis" initials="K. R." surname="Davis"> | ||||
<organization>Cisco Systems</organization> | ||||
</author> | ||||
<author fullname="Brad Peabody" initials="B. G." surname="Peabody"> | ||||
<organization>Uncloud</organization> | ||||
</author> | ||||
<author fullname="P. Leach" initials="P." surname="Leach"> | ||||
<organization>University of Washington</organization> | ||||
</author> | ||||
<date day="6" month="November" year="2023"/> | ||||
</front> | ||||
<seriesInfo name="Internet-Draft" value="draft-ietf-uuidrev-rfc4122bis-14"/> | ||||
</reference> | ||||
<!-- [I-D.ietf-uuidrev-rfc4122bis] in EDIT state; companion document RFC YYY1 | ||||
<reference anchor="RFCYYY1" target="https://www.rfc-editor.org/info/rfcYYY1"> | ||||
<front> | ||||
<title>Universally Unique IDentifiers (UUID)</title> | ||||
<author initials="K. R." surname="Davis" fullname="Kyzer R. Davis"> | ||||
<organization>Cisco Systems</organization> | ||||
</author> | ||||
<author initials="B. G." surname="Peabody" fullname="Brad Peabody"> | ||||
<organization>Uncloud</organization> | ||||
</author> | ||||
<author initials="P." surname="Leach" fullname="P. Leach"> | ||||
<organization>University of Washington</organization> | ||||
</author> | ||||
<date month="November" year="2024"/> | ||||
</front> | ||||
<seriesInfo name="RFC" value="YYY1"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFCYYY1"/> | ||||
</reference> | ||||
--> | ||||
<!-- Note: Removed [I-D.ietf-calext-jscontact] as it is a self-reference. | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.iet | ||||
f-calext-jscontact.xml"/>--> | ||||
<reference anchor="IPA" target="https://www.internationalphoneticalphabe t.org/"> | <reference anchor="IPA" target="https://www.internationalphoneticalphabe t.org/"> | |||
<front> | <front> | |||
<title>International Phonetic Alphabet</title> | <title>International Phonetic Alphabet</title> | |||
<author/> | <author><organization>IPA</organization></author> | |||
</front> | </front> | |||
</reference> | </reference> | |||
<reference anchor="UBiDi" target="https://www.unicode.org/reports/tr9/"> | <reference anchor="UBiDi" target="https://www.unicode.org/reports/tr9/"> | |||
<front> | <front> | |||
<title>Unicode® Standard Annex #9: Unicode Bidirectional Algorithm</ | <title>Unicode Standard Annex #9: Unicode Bidirectional Algorithm</t | |||
title> | itle> | |||
<author/> | <author><organization>The Unicode Consortium</organization></author> | |||
<date month="August" year="2023"/> | ||||
</front> | </front> | |||
<seriesInfo name="Unicode" value="15.1.0"/> | ||||
<refcontent>Revision 48</refcontent> | ||||
</reference> | </reference> | |||
<reference anchor="W3C-URL" target="https://url.spec.whatwg.org"> | ||||
<reference anchor="WHATWG-URL" target="https://url.spec.whatwg.org"> | ||||
<front> | <front> | |||
<title>W3C WG URL - Living Standard — Last Updated 21 August 2023</t | <title>URL Living Standard</title> | |||
itle> | <author><organization>WHATWG | |||
<author/> | </organization> | |||
</author> | ||||
<date month="January" year="2024"/> | ||||
</front> | </front> | |||
</reference> | </reference> | |||
</references> | </references> | |||
</references> | </references> | |||
<!-- [rfced] Terminology | ||||
a) 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. | ||||
kind separator vs. separator kind | ||||
Additionally, let us know if/how the capitalization of "resource" terminology | ||||
should be made consistent. Please note that "resource values" and "Resource | ||||
data type" are used consistently. | ||||
Resource data type vs. resource data type | ||||
Resource object vs. resource object | ||||
Resource type vs. resource type | ||||
b) Note that we updated the text with the latter forms for consistency. Please | ||||
let us know if any further updates are needed. | ||||
Cardinal -> cardinal (per use in other RFCs) | ||||
Data Interchange Format -> data interchange format (per RFC 8259) | ||||
JSON pointer -> JSON Pointer (but lowercase "pointer" when used in general) (p | ||||
er RFC 6901) | ||||
--> | ||||
<!-- [rfced] FYI: We have added expansions for the following abbreviations | ||||
per Section 3.6 of RFC 7322 ("RFC Style Guide"). Please review each | ||||
expansion in the document carefully to ensure correctness. | ||||
Common Locale Data Repository (CLDR) | ||||
Internet JSON (I-JSON) | ||||
Universally Unique Identifier (UUID) | ||||
--> | ||||
<!-- [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. | ||||
Note that our script did not flag any words in particular, but this should | ||||
still be reviewed as a best practice. | ||||
--> | ||||
</back> | </back> | |||
</rfc> | </rfc> | |||
End of changes. 337 change blocks. | ||||
1537 lines changed or deleted | 2203 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. |