rfc9553.original | rfc9553.txt | |||
---|---|---|---|---|
Calendaring Extensions R. Stepanek | Internet Engineering Task Force (IETF) R. Stepanek | |||
Internet-Draft Fastmail | Request for Comments: 9553 Fastmail | |||
Intended status: Standards Track M. Loffredo | Category: Standards Track M. Loffredo | |||
Expires: 12 May 2024 IIT-CNR | ISSN: 2070-1721 IIT-CNR | |||
9 November 2023 | March 2024 | |||
JSContact: A JSON representation of contact data | JSContact: A JSON Representation of Contact Data | |||
draft-ietf-calext-jscontact-16 | ||||
Abstract | Abstract | |||
This specification defines a data model and JSON representation of | This specification defines a data model and JavaScript Object | |||
contact card information that can be used for data storage and | Notation (JSON) representation of contact card information that can | |||
exchange in address book or directory applications. It aims to be an | be used for data storage and exchange in address book or directory | |||
alternative to the vCard data format and to be unambiguous, | applications. It aims to be an alternative to the vCard data format | |||
extendable and simple to process. In contrast to the JSON-based | and to be unambiguous, extendable, and simple to process. In | |||
jCard format, it is not a direct mapping from the vCard data model | contrast to the JSON-based jCard format, it is not a direct mapping | |||
and expands semantics where appropriate. | from the vCard data model and expands semantics where appropriate. | |||
Two additional specifications define new vCard elements and how to | ||||
convert between JSContact and vCard. | ||||
Status of This Memo | Status of This Memo | |||
This Internet-Draft is submitted in full conformance with the | This is an Internet Standards Track document. | |||
provisions of BCP 78 and BCP 79. | ||||
Internet-Drafts are working documents of the Internet Engineering | ||||
Task Force (IETF). Note that other groups may also distribute | ||||
working documents as Internet-Drafts. The list of current Internet- | ||||
Drafts is at https://datatracker.ietf.org/drafts/current/. | ||||
Internet-Drafts are draft documents valid for a maximum of six months | This document is a product of the Internet Engineering Task Force | |||
and may be updated, replaced, or obsoleted by other documents at any | (IETF). It represents the consensus of the IETF community. It has | |||
time. It is inappropriate to use Internet-Drafts as reference | received public review and has been approved for publication by the | |||
material or to cite them other than as "work in progress." | Internet Engineering Steering Group (IESG). Further information on | |||
Internet Standards is available in Section 2 of RFC 7841. | ||||
This Internet-Draft will expire on 12 May 2024. | Information about the current status of this document, any errata, | |||
and how to provide feedback on it may be obtained at | ||||
https://www.rfc-editor.org/info/rfc9553. | ||||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2023 IETF Trust and the persons identified as the | Copyright (c) 2024 IETF Trust and the persons identified as the | |||
document authors. All rights reserved. | document authors. All rights reserved. | |||
This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
Provisions Relating to IETF Documents (https://trustee.ietf.org/ | Provisions Relating to IETF Documents | |||
license-info) in effect on the date of publication of this document. | (https://trustee.ietf.org/license-info) in effect on the date of | |||
Please review these documents carefully, as they describe your rights | publication of this document. Please review these documents | |||
and restrictions with respect to this document. Code Components | carefully, as they describe your rights and restrictions with respect | |||
extracted from this document must include Revised BSD License text as | to this document. Code Components extracted from this document must | |||
described in Section 4.e of the Trust Legal Provisions and are | include Revised BSD License text as described in Section 4.e of the | |||
provided without warranty as described in the Revised BSD License. | Trust Legal Provisions and are provided without warranty as described | |||
in the Revised BSD License. | ||||
Table of Contents | Table of Contents | |||
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 4 | 1. Introduction | |||
1.1. Motivation and Relation to vCard, jCard and xCard . . . . 5 | 1.1. Motivation and Relation to vCard, jCard, and xCard | |||
1.2. Notational Conventions . . . . . . . . . . . . . . . . . 5 | 1.2. Notational Conventions | |||
1.3. Data Type Notations . . . . . . . . . . . . . . . . . . . 6 | 1.3. Data Type Notations | |||
1.3.1. Objects and Properties . . . . . . . . . . . . . . . 6 | 1.3.1. Objects and Properties | |||
1.3.2. Type Signatures . . . . . . . . . . . . . . . . . . . 7 | 1.3.2. Type Signatures | |||
1.3.3. Property Attributes . . . . . . . . . . . . . . . . . 7 | 1.3.3. Property Attributes | |||
1.3.4. The @type Property . . . . . . . . . . . . . . . . . 8 | 1.3.4. The @type Property | |||
1.4. Common Data Types . . . . . . . . . . . . . . . . . . . . 8 | 1.4. Common Data Types | |||
1.4.1. Id . . . . . . . . . . . . . . . . . . . . . . . . . 9 | 1.4.1. Id | |||
1.4.2. Int and UnsignedInt . . . . . . . . . . . . . . . . . 9 | 1.4.2. Int and UnsignedInt | |||
1.4.3. PatchObject . . . . . . . . . . . . . . . . . . . . . 9 | 1.4.3. PatchObject | |||
1.4.4. Resource . . . . . . . . . . . . . . . . . . . . . . 10 | 1.4.4. Resource | |||
1.4.5. UTCDateTime . . . . . . . . . . . . . . . . . . . . . 11 | 1.4.5. UTCDateTime | |||
1.5. Common Properties . . . . . . . . . . . . . . . . . . . . 12 | 1.5. Common Properties | |||
1.5.1. contexts . . . . . . . . . . . . . . . . . . . . . . 12 | 1.5.1. contexts | |||
1.5.2. extra . . . . . . . . . . . . . . . . . . . . . . . . 12 | 1.5.2. label | |||
1.5.3. label . . . . . . . . . . . . . . . . . . . . . . . . 12 | 1.5.3. pref | |||
1.5.4. pref . . . . . . . . . . . . . . . . . . . . . . . . 13 | 1.5.4. phonetic | |||
1.5.5. phonetic . . . . . . . . . . . . . . . . . . . . . . 13 | 1.6. Internationalization | |||
1.6. Internationalization . . . . . . . . . . . . . . . . . . 14 | 1.6.1. Free-Form Text | |||
1.6.1. Free-form text . . . . . . . . . . . . . . . . . . . 14 | 1.6.2. URIs | |||
1.6.2. URIs . . . . . . . . . . . . . . . . . . . . . . . . 15 | 1.7. Validating JSContact | |||
1.7. Validating JSContact . . . . . . . . . . . . . . . . . . 15 | 1.7.1. Case-Sensitivity | |||
1.7.1. Case-Sensitivity . . . . . . . . . . . . . . . . . . 15 | 1.7.2. IANA-Registered Properties | |||
1.7.2. IANA-registered Properties . . . . . . . . . . . . . 16 | 1.7.3. Reserved Properties | |||
1.7.3. Unknown Properties . . . . . . . . . . . . . . . . . 16 | 1.7.4. Unknown Properties | |||
1.7.4. Enumerated Values . . . . . . . . . . . . . . . . . . 16 | 1.7.5. Enumerated Values | |||
1.8. Vendor-Specific Extensions . . . . . . . . . . . . . . . 17 | 1.8. Vendor-Specific Extensions | |||
1.8.1. Vendor-specific Properties . . . . . . . . . . . . . 17 | 1.8.1. Vendor-Specific Properties | |||
1.8.2. Vendor-specific Values . . . . . . . . . . . . . . . 18 | 1.8.2. Vendor-Specific Values | |||
1.9. Versioning . . . . . . . . . . . . . . . . . . . . . . . 19 | 1.9. Versioning | |||
1.9.1. Version Format and Requirements . . . . . . . . . . . 19 | 1.9.1. Version Format and Requirements | |||
1.9.2. Current Version . . . . . . . . . . . . . . . . . . . 19 | 1.9.2. Current Version | |||
2. Card . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 | 2. Card | |||
2.1. Metadata Properties . . . . . . . . . . . . . . . . . . . 20 | 2.1. Metadata Properties | |||
2.1.1. @type . . . . . . . . . . . . . . . . . . . . . . . . 20 | 2.1.1. @type | |||
2.1.2. version . . . . . . . . . . . . . . . . . . . . . . . 20 | 2.1.2. version | |||
2.1.3. created . . . . . . . . . . . . . . . . . . . . . . . 20 | 2.1.3. created | |||
2.1.4. kind . . . . . . . . . . . . . . . . . . . . . . . . 21 | 2.1.4. kind | |||
2.1.5. language . . . . . . . . . . . . . . . . . . . . . . 21 | 2.1.5. language | |||
2.1.6. members . . . . . . . . . . . . . . . . . . . . . . . 21 | 2.1.6. members | |||
2.1.7. prodId . . . . . . . . . . . . . . . . . . . . . . . 22 | 2.1.7. prodId | |||
2.1.8. relatedTo . . . . . . . . . . . . . . . . . . . . . . 22 | 2.1.8. relatedTo | |||
2.1.9. uid . . . . . . . . . . . . . . . . . . . . . . . . . 24 | 2.1.9. uid | |||
2.1.10. updated . . . . . . . . . . . . . . . . . . . . . . . 24 | 2.1.10. updated | |||
2.2. Name and Organization Properties . . . . . . . . . . . . 25 | 2.2. Name and Organization Properties | |||
2.2.1. name . . . . . . . . . . . . . . . . . . . . . . . . 25 | 2.2.1. name | |||
2.2.2. organizations . . . . . . . . . . . . . . . . . . . . 30 | 2.2.2. nicknames | |||
2.2.3. speakToAs . . . . . . . . . . . . . . . . . . . . . . 31 | 2.2.3. organizations | |||
2.2.4. titles . . . . . . . . . . . . . . . . . . . . . . . 32 | 2.2.4. speakToAs | |||
2.3. Contact Properties . . . . . . . . . . . . . . . . . . . 33 | 2.2.5. titles | |||
2.3.1. emails . . . . . . . . . . . . . . . . . . . . . . . 33 | 2.3. Contact Properties | |||
2.3.2. onlineServices . . . . . . . . . . . . . . . . . . . 34 | 2.3.1. emails | |||
2.3.3. phones . . . . . . . . . . . . . . . . . . . . . . . 35 | 2.3.2. onlineServices | |||
2.3.4. preferredLanguages . . . . . . . . . . . . . . . . . 37 | 2.3.3. phones | |||
2.4. Calendaring and Scheduling Properties . . . . . . . . . . 38 | 2.3.4. preferredLanguages | |||
2.4.1. calendars . . . . . . . . . . . . . . . . . . . . . . 38 | 2.4. Calendaring and Scheduling Properties | |||
2.4.2. schedulingAddresses . . . . . . . . . . . . . . . . . 38 | 2.4.1. calendars | |||
2.5. Address and Location Properties . . . . . . . . . . . . . 39 | 2.4.2. schedulingAddresses | |||
2.5.1. addresses . . . . . . . . . . . . . . . . . . . . . . 39 | 2.5. Address and Location Properties | |||
2.6. Resource Properties . . . . . . . . . . . . . . . . . . . 44 | 2.5.1. addresses | |||
2.6.1. cryptoKeys . . . . . . . . . . . . . . . . . . . . . 45 | 2.6. Resource Properties | |||
2.6.2. directories . . . . . . . . . . . . . . . . . . . . . 45 | 2.6.1. cryptoKeys | |||
2.6.3. links . . . . . . . . . . . . . . . . . . . . . . . . 46 | 2.6.2. directories | |||
2.6.4. media . . . . . . . . . . . . . . . . . . . . . . . . 47 | 2.6.3. links | |||
2.7. Multilingual Properties . . . . . . . . . . . . . . . . . 48 | 2.6.4. media | |||
2.7.1. localizations . . . . . . . . . . . . . . . . . . . . 48 | 2.7. Multilingual Properties | |||
2.8. Additional Properties . . . . . . . . . . . . . . . . . . 50 | 2.7.1. localizations | |||
2.8.1. anniversaries . . . . . . . . . . . . . . . . . . . . 50 | 2.8. Additional Properties | |||
2.8.2. keywords . . . . . . . . . . . . . . . . . . . . . . 52 | 2.8.1. anniversaries | |||
2.8.3. notes . . . . . . . . . . . . . . . . . . . . . . . . 52 | 2.8.2. keywords | |||
2.8.4. personalInfo . . . . . . . . . . . . . . . . . . . . 53 | 2.8.3. notes | |||
3. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 54 | 2.8.4. personalInfo | |||
3.1. Media Type Registration . . . . . . . . . . . . . . . . . 54 | 3. IANA Considerations | |||
3.2. Creation of the "JSContact" Registry Group . . . . . . . 56 | 3.1. Media Type Registration | |||
3.3. Registry Policy and Change Procedures . . . . . . . . . . 56 | 3.2. Creation of the JSContact Registry Group | |||
3.3.1. Preliminary Community Review . . . . . . . . . . . . 57 | 3.3. Registry Policy and Change Procedures | |||
3.3.2. Submit Request to IANA . . . . . . . . . . . . . . . 57 | 3.3.1. Preliminary Community Review | |||
3.3.3. Designated Expert Review . . . . . . . . . . . . . . 57 | 3.3.2. Submit Request to IANA | |||
3.3.4. Change Procedures . . . . . . . . . . . . . . . . . . 58 | 3.3.3. Designated Expert Review | |||
3.4. Creation of the "JSContact Version" Registry . . . . . . 58 | 3.3.4. Change Procedures | |||
3.4.1. "JSContact Version" Registry Template . . . . . . . . 58 | 3.4. Creation of the JSContact Version Registry | |||
3.4.2. Initial Contents for the "JSContact Version" | 3.4.1. JSContact Version Registry Template | |||
Registry . . . . . . . . . . . . . . . . . . . . . . 59 | 3.4.2. Initial Contents of the JSContact Version Registry | |||
3.5. Creation of the JSContact Properties Registry | ||||
3.5. Creation of the "JSContact Properties" Registry . . . . . 59 | 3.5.1. JSContact Properties Registry Template | |||
3.5.1. "JSContact Properties" Registry Template . . . . . . 59 | 3.5.2. Initial Contents of the JSContact Properties Registry | |||
3.5.2. Initial Contents for the "JSContact Properties" | 3.6. Creation of the JSContact Types Registry | |||
Registry . . . . . . . . . . . . . . . . . . . . . . 60 | 3.6.1. JSContact Types Registry Template | |||
3.6. Creation of the "JSContact Types" Registry . . . . . . . 69 | 3.6.2. Initial Contents of the JSContact Types Registry | |||
3.6.1. "JSContact Types" Registry Template . . . . . . . . . 69 | 3.7. Creation of the JSContact Enum Values Registry | |||
3.6.2. Initial Contents for the "JSContact Types" | 3.7.1. JSContact Enum Values Registry Property Template | |||
Registry . . . . . . . . . . . . . . . . . . . . . . 70 | 3.7.2. JSContact Enum Values Registry Value Template | |||
3.7. Creation of the "JSContact Enum Values" Registry . . . . 72 | 3.7.3. Initial Contents of the JSContact Enum Values Registry | |||
3.7.1. "JSContact Enum Values" Registry Property Template . 72 | 4. Security Considerations | |||
3.7.2. "JSContact Enum Values" Registry Value Template . . . 73 | 4.1. JSON Parsing | |||
3.7.3. Initial Contents for the "JSContact Enum Values" | 4.2. URI Values | |||
Registry . . . . . . . . . . . . . . . . . . . . . . 73 | 5. References | |||
4. Security Considerations . . . . . . . . . . . . . . . . . . . 82 | 5.1. Normative References | |||
4.1. JSON Parsing . . . . . . . . . . . . . . . . . . . . . . 82 | 5.2. Informative References | |||
4.2. URI Values . . . . . . . . . . . . . . . . . . . . . . . 83 | Authors' Addresses | |||
5. References . . . . . . . . . . . . . . . . . . . . . . . . . 83 | ||||
5.1. Normative References . . . . . . . . . . . . . . . . . . 83 | ||||
5.2. Informative References . . . . . . . . . . . . . . . . . 85 | ||||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 87 | ||||
1. Introduction | 1. Introduction | |||
This document defines a data model for contact card data normally | This document defines a data model for contact card data normally | |||
used in address book or directory applications and services. It aims | used in address book or directory applications and services. It aims | |||
to be an alternative to the vCard data format [RFC6350]. | to be an alternative to the vCard data format [RFC6350]. | |||
The key design considerations for this data model are as follows: | The key design considerations for this data model are as follows: | |||
* The data model and set of attributes should mostly be compatible | * The data model and set of attributes should be mostly compatible | |||
with the one defined for the vCard data format [RFC6350] and | with the model defined for the vCard data format [RFC6350] and | |||
extensions ([RFC6473], [RFC6474], [RFC6715], [RFC6869], | extensions [RFC6473] [RFC6474] [RFC6715] [RFC6869] [RFC8605]. The | |||
[RFC8605]). The specification should add new attributes or value | specification should add new attributes or value types where | |||
types where appropriate. Not all existing vCard definitions need | appropriate. Not all existing vCard definitions need an | |||
an equivalent in JSContact, especially if the vCard definition is | equivalent in JSContact, especially if the vCard definition is | |||
considered to be obsolete or otherwise inappropriate. Conversion | considered to be obsolete or otherwise inappropriate. Conversion | |||
between the data formats need not fully preserve semantic meaning. | between the data formats need not fully preserve semantic meaning. | |||
* The attributes of the card data represented must be described as | * The attributes of the card data must be described as simple key- | |||
simple key-value pairs, reducing complexity of their | value pairs to reduce the complexity of the representation of the | |||
representation. | card data. | |||
* The data model should avoid all ambiguities and make it difficult | * The data model should avoid all ambiguities and make it difficult | |||
to make mistakes during implementation. | to make mistakes during implementation. | |||
* Extensions, such as new properties and components, MUST NOT lead | * Extensions, such as new properties and components, MUST NOT lead | |||
to requiring an update to this document. | to a required update of this document. | |||
The representation of this data model is defined in the I-JSON format | The representation of this data model is defined in the Internet JSON | |||
[RFC7493], which is a strict subset of the JavaScript Object Notation | (I-JSON) format [RFC7493], which is a strict subset of the JSON data | |||
(JSON) Data Interchange Format [RFC8259]. Using JSON is mostly a | interchange format [RFC8259]. Using JSON is mostly a pragmatic | |||
pragmatic choice: its widespread use makes JSContact easier to adopt, | choice: its widespread use makes JSContact easier to adopt, and the | |||
and the availability of production-ready JSON implementations | availability of production-ready JSON implementations eliminates a | |||
eliminates a whole category of parser-related interoperability | whole category of parser-related interoperability issues. | |||
issues. | ||||
1.1. Motivation and Relation to vCard, jCard and xCard | 1.1. Motivation and Relation to vCard, jCard, and xCard | |||
The vCard data format [RFC6350] is an interchange format for contacts | The vCard data format [RFC6350] is an interchange format for contacts | |||
data between address book service providers and vendors. However, | data between address book service providers and vendors. However, | |||
this format has gone through multiple specifications iterations with | this format has gone through multiple specification iterations with | |||
only a subset of its deprecated version 3 [RFC2426] being widely in | only a subset of its deprecated version 3 [RFC2426] being widely in | |||
use. Consequently, products and services internally use a richer | use. Consequently, products and services use an internal contact | |||
contact data model than they expose when serializing that information | data model that is richer than what they expose when serializing that | |||
to vCard. In addition, service providers often use a proprietary | information to vCard. In addition, service providers often use a | |||
JSON representation of contact data in their APIs. | proprietary JSON representation of contact data in their APIs. | |||
JSContact provides a standard JSON-based data model and | JSContact provides a standard JSON-based data model and | |||
representation of contact data as an alternative to proprietary | representation of contact data as an alternative to proprietary | |||
formats. | formats. | |||
While writing this document, several features missing in vCard were | At the time of writing this document, several missing features in | |||
brought to the attention of the authors, such as social media | vCard were brought to the attention of the authors such as social | |||
contacts, gender pronouns and others. This highlights how vCard is | media contacts, gender pronouns, and others. This highlights how | |||
not perceived as an evolving format and consequently hasn't been | vCard is not perceived as an evolving format and, consequently, | |||
updated since close to ten years. JSContact addresses these unmet | hasn't been updated for about ten years. JSContact addresses these | |||
demands and defines new vCard properties and parameters to allow | unmet demands and defines new vCard properties and parameters to | |||
interchanging them in both formats. | allow interchanging them in both formats. | |||
Two additional documents define the relation of JSContact and vCard: | ||||
[RFC9554] defines new vCard properties and parameters, and [RFC9555] | ||||
defines how to convert JSContact data from and to vCard. | ||||
The xCard [RFC6351] and jCard [RFC7095] specifications define | The xCard [RFC6351] and jCard [RFC7095] specifications define | |||
alternative representations for vCard data, in XML and JSON format | alternative representations for vCard data in XML and JSON formats, | |||
respectively. Both explicitly aim to not change the underlying data | respectively. Both explicitly aim to not change the underlying data | |||
model. Accordingly, they are regarded as equal to vCard in the | model. Accordingly, they are regarded as equal to vCard in the | |||
context of this document. | context of this document. | |||
1.2. Notational Conventions | 1.2. Notational Conventions | |||
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | |||
"OPTIONAL" in this document are to be interpreted as described in | "OPTIONAL" in this document are to be interpreted as described in BCP | |||
BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all | 14 [RFC2119] [RFC8174] when, and only when, they appear in all | |||
capitals, as shown here. | capitals, as shown here. | |||
The ABNF definitions in this document use the notations of [RFC5234]. | The ABNF definitions in this document use the notations of [RFC5234]. | |||
ABNF rules not defined in this document either are defined in | ABNF rules not defined in this document are defined in either | |||
[RFC5234] (such as the ABNF for CRLF, WSP, DQUOTE, VCHAR, ALPHA, and | [RFC5234] (such as the ABNF for CRLF, WSP, DQUOTE, VCHAR, ALPHA, and | |||
DIGIT) or [RFC6350]. | DIGIT) or [RFC6350]. | |||
1.3. Data Type Notations | 1.3. Data Type Notations | |||
This section introduces the notations and terminology used to define | This section introduces the notations and terminology used to define | |||
data types in JSContact. | data types in JSContact. | |||
The underlying format for JSContact is JSON and so also its data | The underlying format for JSContact is JSON, so its data types also | |||
types build on JSON values. The terms "object" and "array" as well | build on JSON values. The terms "object" and "array" as well as the | |||
as the four primitive types ("strings", "numbers", "booleans", and | four primitive types ("strings", "numbers", "booleans", and "null") | |||
"null") are to be interpreted as described in Section 1 of [RFC8259]. | are to be interpreted as described in Section 1 of [RFC8259]. All | |||
All JSContact data MUST be valid according to the constraints given | JSContact data MUST be valid according to the constraints given in | |||
in I-JSON [RFC7493]. Unless otherwise noted, all member names in | I-JSON [RFC7493]. Unless otherwise noted, all member names in JSON | |||
JSON objects and all string values are case-sensitive. Within | objects and all string values are case-sensitive. Within the context | |||
context of JSON objects, the term "key" is synonymous with "member | of JSON objects, the term "key" is synonymous with "member name" as | |||
name" as defined in Section 1 of [RFC8259]. | defined in Section 1 of [RFC8259]. | |||
1.3.1. Objects and Properties | 1.3.1. Objects and Properties | |||
JSContact defines data types for contact information such as | JSContact defines data types for contact information such as | |||
addresses or names. This information typically consists of multiple | addresses or names. This information typically consists of multiple | |||
related elements, for example a personal name and surname together | related elements; for example, a personal name and surname together | |||
form a name. These related elements are organized in JSContact | form a name. These related elements are organized in JSContact | |||
objects. A JSContact object is a JSON object which: | objects. A JSContact object is a JSON object that has the following: | |||
1. Has a unique type name registered in the IANA JSContact Types | 1. A unique type name registered in the IANA "JSContact Types" | |||
Registry (Section 3.6). | registry (Section 3.6). | |||
2. Has one or more object members for which the name and allowed | 2. One or more object members for which the name and allowed value | |||
value types are specified. Such members are called "properties". | types are specified. Such members are called "properties". | |||
3. Has one property named @type with a string value that matches the | 3. One property named @type with a string value that matches the | |||
type name of this JSContact object. In general, this property | type name of the JSContact object. In general, this property | |||
does not need to be set explicitly as outlined in Section 1.3.4. | does not need to be set explicitly as outlined in Section 1.3.4. | |||
The following sections specify how to define JSContact object types. | The following sections specify how to define JSContact object types. | |||
Section 1.7 and Section 1.8 then define the exact requirements for | Sections 1.7 and 1.8 then define the exact requirements for property | |||
property names. | names. | |||
The next paragraph illustrates how a JSContact object is defined: | The next paragraph illustrates how a JSContact object is defined. | |||
The names "Foo" and "baz" are only for demonstration and have no | ||||
meaning outside the example. | ||||
| A Foo object has the following properties: | 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. | ||||
Here, a JSContact object type named Foo is defined. In addition to | @type: String. The JSContact type of the object. The value MUST | |||
its @type property it has a property named qux for which values MUST | be "Foo", if set. | |||
be valid according to the definition of the Number type. The | ||||
property has one attribute, mandatory, which specifies that the | baz: Number (mandatory). The baz level of the contact. The value | |||
property MUST be present for an instance of this JSContact object to | MUST be an integer greater than 0 and less than 10. | |||
be valid. Finally, a free-text description describes the semantics | ||||
and further restrictions. | The above paragraph illustrates the following: | |||
* It defines a JSContact object type named "Foo" that has two | ||||
properties, named "@type" and "baz". | ||||
* The @type property adheres to the rules outlined in Section 1.3.4. | ||||
Because of this, it is neither defined to be mandatory nor | ||||
optional, as this depends on how the Foo object type is used. | ||||
* The baz property value MUST be valid according to the definition | ||||
of the Number type. | ||||
* The property has one attribute, "mandatory", which specifies that | ||||
the property MUST be present for a value of the Foo object type to | ||||
be valid. | ||||
* The free-text description of the baz property describes the | ||||
semantics and further restrictions for its values. | ||||
1.3.2. Type Signatures | 1.3.2. Type Signatures | |||
Type signatures are given for all JSON values and JSContact | Type signatures are given for all JSON values and JSContact | |||
definitions in this document. The following conventions are used: | definitions in this document. The following conventions are used: | |||
* String - The JSON string type. | String: The JSON string type. | |||
* Number - The JSON number type. | Number: The JSON number type. | |||
* Boolean - The JSON boolean type. | Boolean: The JSON boolean type. | |||
* A[B] - A JSON object where the keys are all of the type A, and the | A[B]: A JSON object where all keys are of type A and all values are | |||
values are all of the type B. | of type B. | |||
* A[] - A JSON array of values of type A. | A[]: A JSON array of values of type A. | |||
* A|B - The value is either of type A or of type B. | A|B: The value is either of type A or of type B. | |||
* * - The type is undefined (the value could be any type, although | *: The type is undefined (the value could be any type, although | |||
permitted values may be constrained by the context of this value). | permitted values may be constrained by the context of this value). | |||
Section 1.4 defines common data types, including signed or unsigned | Section 1.4 defines common data types, including signed or unsigned | |||
integers and dates. | integers and dates. | |||
1.3.3. Property Attributes | 1.3.3. Property Attributes | |||
Object properties may also have a set of attributes defined along | Object properties may also have a set of attributes defined along | |||
with the type signature. These have the following meanings: | with the type signature. These have the following meanings: | |||
* mandatory: The property MUST be set for an instance of this object | mandatory: The property MUST be set for an instance of this object | |||
to be valid. | to be valid. | |||
* optional: The property can but not need be set for an instance of | optional: The property can, but need not, be set for an instance of | |||
this object to be valid. | this object to be valid. | |||
* default: This is followed by a JSON value. That value will be | default: This is followed by a JSON value. That value will be used | |||
used for this property if it is omitted. | for this property if it is omitted. | |||
* defaultType: This is followed by the name of a JSContact object | defaultType: This is followed by the name of a JSContact object | |||
type. A property value of JSContact object type is expected to be | type. A property value of JSContact object type is expected to be | |||
of this named type, in case it omits the @type property. | of this named type, in case it omits the @type property. | |||
1.3.4. The @type Property | 1.3.4. The @type Property | |||
This property is defined as: | @type: String. The JSContact type of a JSON object. It MUST match | |||
the type name of the JSContact object of which the JSON object is | ||||
* @type: String. Specifies the type of this object. This MUST | an instance of. | |||
match the type name of the JSContact object of which this JSON | ||||
object is an instance of. | ||||
The purpose of this property is to help implementations identify | The purpose of the @type property is to help implementations identify | |||
which JSContact object type a given JSON object represents. | which JSContact object type a given JSON object represents. | |||
Implementations MUST validate that JSON objects with this property | Implementations MUST validate that JSON objects with this property | |||
conform to the specification of the JSContact object type of that | conform to the specification of the JSContact object type of that | |||
name. | name. | |||
In many cases the @type property value is implied by where its object | In many cases, the @type property value is implied by where its | |||
occurs in JSContact data. Assuming that both A and B are JSContact | object occurs in JSContact data. Assuming that both A and B are | |||
object types: | JSContact object types: | |||
* An object that is set as the value for a property with type | * An object that is set as the value for a property with type | |||
signature A MAY have the @type property set. If the @type | signature "A" MAY have the @type property set. If the @type | |||
property is not set then its value is implied to be A by the | property is not set, then its value is implied to be A by the | |||
property definition. | property definition. | |||
* An object that is set as the value for a property with type | * An object that is set as the value for a property with type | |||
signature A|B (defaultType: A) MAY have the @type property set if | signature "A|B (defaultType: A)" MAY have the @type property set | |||
it is an instance of A. It MUST have the @type property set if it | if it is an instance of A. It MUST have the @type property set if | |||
is an instance of B. If instead the defaultType attribute is not | it is an instance of B. If, instead, the defaultType attribute is | |||
defined then the @type property MUST also be set for A. | not defined, then the @type property MUST also be set for A. | |||
* An object that is not the value of a property, such as the root of | * An object that is not the value of a property, such as the topmost | |||
JSON data (directly or as member of an array), MUST have the @type | object in JSON data (directly or as a member of an array), MUST | |||
property set. | have the @type property set. | |||
1.4. Common Data Types | 1.4. Common Data Types | |||
In addition to the standard JSON data types, a couple of additional | In addition to the standard JSON data types, a couple of additional | |||
data types are common to the definitions of JSContact objects and | data types are common to the definitions of JSContact objects and | |||
properties. | properties. | |||
1.4.1. Id | 1.4.1. Id | |||
Where Id is given as a data type, it means a String of at least 1 and | Where "Id" is given as a data type, it means a String of at least 1 | |||
a maximum of 255 octets in size, and it MUST only contain characters | and a maximum of 255 octets in size, and it MUST only contain | |||
from the URL and Filename Safe base64url alphabet, as defined in | characters from the "URL and Filename Safe" base64url alphabet, as | |||
Section 5 of [RFC4648], excluding the pad character (=). This means | defined in Section 5 of [RFC4648], excluding the pad character ("="). | |||
the allowed characters are the ASCII alphanumeric characters (A-Za- | This means the allowed characters are the ASCII alphanumeric | |||
z0-9), hyphen (-), and underscore (_). | characters ("A-Za-z0-9"), hyphen ("-"), and underscore ("_"). | |||
In many places in JSContact a JSON map is used where the map keys are | In many places in JSContact, a JSON map is used where the map keys | |||
of type Id and the map values are all the same type of object. This | are of type Id and the map values are all the same type of object. | |||
construction represents an unordered set of objects, with the added | This construction represents an unordered set of objects, with the | |||
advantage that each entry has a name (the corresponding map key). | added advantage that each entry has a name (the corresponding map | |||
This allows for more concise patching of objects, and, when | key). This allows for more concise patching of objects and, when | |||
applicable, for the objects in question to be referenced from other | applicable, for the objects in question to be referenced from other | |||
objects within the JSContact object. The map keys MUST be preserved | objects within the JSContact object. The map keys MUST be preserved | |||
across multiple versions of the JSContact object. | across multiple versions of the JSContact object. | |||
Unless otherwise specified for a particular property, there are no | Unless otherwise specified for a particular property, there are no | |||
uniqueness constraints on an Id value (other than, of course, the | uniqueness constraints on an Id value (other than, of course, the | |||
requirement that you cannot have two values with the same key within | requirement that you cannot have two values with the same key within | |||
a single JSON map). For example, two Card (Section 2) objects might | a single JSON map). For example, two Card (Section 2) objects might | |||
use the same Ids in their respective photos properties. Or within | use the same Ids in their respective photos properties. Or within | |||
the same Card the same Id could appear in the emails and phones | the same Card, the same Id could appear in the emails and phones | |||
properties. These situations do not imply any semantic connections | properties. These situations do not imply any semantic connections | |||
among the objects. | among the objects. | |||
1.4.2. Int and UnsignedInt | 1.4.2. Int and UnsignedInt | |||
Where Int is given as a data type, it means an integer in the range | Where "Int" is given as a data type, it means an integer in the range | |||
-2^53+1 <= value <= 2^53-1, the safe range for integers stored in a | -2^53+1 <= value <= 2^53-1, which is the safe range for integers | |||
floating-point double, represented as a JSON Number. | stored in a floating-point double, represented as a JSON Number. | |||
Where UnsignedInt is given as a data type, it means an integer in the | Where "UnsignedInt" is given as a data type, it means an integer in | |||
range 0 <= value <= 2^53-1, represented as a JSON Number. | the range 0 <= value <= 2^53-1 represented as a JSON Number. | |||
1.4.3. PatchObject | 1.4.3. PatchObject | |||
A PatchObject is of type String[*], and represents an unordered set | A PatchObject is of type "String[*]" and represents an unordered set | |||
of patches on a JSON object. Each key is a path represented in a | of patches on a JSON object. Each key is a path represented in a | |||
subset of JSON pointer format [RFC6901]. The paths have an implicit | subset of the JSON Pointer format [RFC6901]. The paths have an | |||
leading /, so each key is prefixed with / before applying the JSON | implicit leading "/", so each key is prefixed with "/" before | |||
pointer evaluation algorithm. | applying the JSON Pointer evaluation algorithm. | |||
A patch within a PatchObject is only valid if all the following | A patch within a PatchObject is only valid if all the following | |||
conditions apply: | conditions apply: | |||
1. The pointer MAY reference inside an array but if the last | 1. The pointer MAY reference inside an array, but if the last | |||
reference token in the pointer is an array index, then the patch | reference token in the pointer is an array index, then the patch | |||
value MUST NOT be null. The pointer MUST NOT use "-" as an array | value MUST NOT be null. The pointer MUST NOT use "-" as an array | |||
index in any of its reference tokens (i.e., you MUST NOT insert/ | index in any of its reference tokens (i.e., you MUST NOT insert/ | |||
delete from an array, but you MAY replace the contents of its | delete from an array, but you MAY replace the contents of its | |||
existing members. To add or remove members, one needs to replace | existing members. To add or remove members, one needs to replace | |||
the complete array value). | the complete array value). | |||
2. All reference tokens prior to the last (i.e., the value after the | 2. All reference tokens prior to the last (i.e., the value after the | |||
final slash) MUST already exist as values in the object being | final slash) MUST already exist as values in the object being | |||
patched. If the last reference token is an array index, then a | patched. If the last reference token is an array index, then a | |||
member at this index MUST already exist in the referenced array. | member at this index MUST already exist in the referenced array. | |||
3. There MUST NOT be two patches in the PatchObject where the | 3. There MUST NOT be two patches in the PatchObject where the | |||
pointer of one is the prefix of the pointer of the other, e.g., | pointer of one is the prefix of the pointer of the other, e.g., | |||
addresses/1/city and addresses. | "addresses/1/city" and "addresses". | |||
4. The value for the patch MUST be valid for the property being set | 4. The value for the patch MUST be valid for the property being set | |||
(of the correct type and obeying any other applicable | (of the correct type and obeying any other applicable | |||
restrictions), or if null the property MUST be optional. | restrictions), or if null, the property MUST be optional. | |||
The value associated with each pointer determines how to apply that | The value associated with each pointer determines how to apply that | |||
patch: | patch: | |||
* If null, remove the property from the patched object. If the key | * If null, remove the property from the patched object. If the key | |||
is not present in the parent, this is a no-op. | is not present in the parent, this is a no-op. | |||
* If non-null, set the value given as the value for this property | * If non-null, set the value given as the value for this property | |||
(this may be a replacement or addition to the object being | (this may be a replacement or addition to the object being | |||
patched). | patched). | |||
A PatchObject does not define its own @type (Section 1.3.4) property. | A PatchObject does not define its own @type (Section 1.3.4) property. | |||
Instead, a @type property in a patch MUST be handled as any other | Instead, the @type property in a patch MUST be handled as any other | |||
patched property value. | patched property value. | |||
Implementations MUST reject in its entirety a PatchObject if any of | Implementations MUST reject a PatchObject in its entirety if any of | |||
its patches are invalid. Implementations MUST NOT apply partial | its patches are invalid. Implementations MUST NOT apply partial | |||
patches. | patches. | |||
1.4.4. Resource | 1.4.4. Resource | |||
This data type defines a resource associated with the entity | The Resource data type defines a resource associated with the entity | |||
represented by this Card, identified by a URI [RFC3986]. Several | represented by the Card, identified by a URI [RFC3986]. Later in | |||
property definitions later in this document refer to the Resource | this document, several property definitions refer to the Resource | |||
data type as the basis for their property-specific value types. The | type as the basis for their property-specific value types. The | |||
Resource data type defines the properties that are common to all of | Resource type defines the properties that are common to all of them. | |||
them. Property definitions making use of Resource MAY define | Property definitions making use of Resource MAY define additional | |||
additional properties for their value types. | properties for their value types. | |||
The @type property value MUST NOT be Resource, instead it MUST be the | A Resource object has the following properties: | |||
name of a concrete resource type (see Section 2.6). A Resource | ||||
object has the following properties. | ||||
* @type: String. Specifies the type of this resource object. The | @type: String. The JSContact type of the object. The value MUST NOT | |||
allowed value is defined in later sections of this document for | be "Resource"; instead, the value MUST be the name of a concrete | |||
each concrete resource type (Section 2.6). | resource type (see Section 2.6). | |||
* kind: String (optional). The kind of the resource. The allowed | kind: String (optional). The kind of the resource. The allowed | |||
values are defined in the property definition that makes use of | values are defined in the property definition that makes use of | |||
the Resource type. Some property definitions may change this | the Resource type. Some property definitions may change this | |||
property from being optional to mandatory. | property from being optional to mandatory. | |||
* uri: String (mandatory). The resource value. This MUST be a | uri: String (mandatory). The resource value. This MUST be a _URI_ | |||
_URI_ as defined in Section 3 of [RFC3986]. | as defined in Section 3 of [RFC3986]. | |||
* mediaType: String (optional). Used for URI resource values. | mediaType: String (optional). The media type [RFC2046] of the | |||
Provides the media type [RFC2046] of the resource identified by | resource identified by the uri property value. | |||
the URI. | ||||
* contexts: String[Boolean] (optional). The contexts in which to | contexts: String[Boolean] (optional). The contexts in which to use | |||
use this resource. Also see Section 1.5.1. | this resource. Also see Section 1.5.1. | |||
* pref: UnsignedInt (optional). The preference of this resource in | pref: UnsignedInt (optional). The preference of the resource in | |||
relation to other resources. Also see Section 1.5.4. | relation to other resources. Also see Section 1.5.3. | |||
* label: String (optional). A custom label for the value, see | label: String (optional). A custom label for the value. Also see | |||
Section 1.5.3. | Section 1.5.2. | |||
1.4.5. UTCDateTime | 1.4.5. UTCDateTime | |||
This is a string in [RFC3339] date-time format, with the further | The UTCDateTime type is a String in "date-time" format [RFC3339], | |||
restrictions that any letters MUST be in uppercase, and the time | with further restrictions that any letters MUST be in uppercase and | |||
offset MUST be the character Z. Fractional second values MUST NOT be | the time offset MUST be the character "Z". Fractional second values | |||
included unless non-zero and MUST NOT have trailing zeros, to ensure | MUST NOT be included unless they are non-zero, and they MUST NOT have | |||
there is only a single representation for each date-time. | trailing zeros to ensure there is only a single representation for | |||
each date-time. | ||||
For example, 2010-10-10T10:10:10.003Z is conformant, but | For example, "2010-10-10T10:10:10.003Z" is conformant, but | |||
2010-10-10T10:10:10.000Z is invalid and is correctly encoded as | "2010-10-10T10:10:10.000Z" is invalid; the correct encoding is | |||
2010-10-10T10:10:10Z. | "2010-10-10T10:10:10Z". | |||
1.5. Common Properties | 1.5. Common Properties | |||
Most of the properties in this document are specific to a single | Most of the properties in this document are specific to a single | |||
JSContact object type. Such properties are defined along with the | JSContact object type. Such properties are defined along with the | |||
respective object type. The properties in this section are common to | respective object type. The properties in this section are common to | |||
multiple data types and are defined here to avoid repetition. Note | multiple data types and are defined here to avoid repetition. Note | |||
that these properties MUST only be set for a JSContact object if they | that these properties MUST only be set for a JSContact object if they | |||
are explicitly mentioned to be allowed for this object type. | are explicitly mentioned as allowable for this object type. | |||
1.5.1. contexts | 1.5.1. contexts | |||
Type: String[Boolean] | contexts: String[Boolean]. The contexts in which to use the contact | |||
information. For example, someone might have distinct phone | ||||
This property associates contact information with one or more | numbers for work and private contexts and may set the desired | |||
contexts in which it should be used. For example, someone might have | context on the respective phone number in the phones | |||
distinct phone numbers for work and private contexts, and may set the | (Section 2.3.3) property. | |||
desired context on the respective phone number in the phones | ||||
(Section 2.3.3) property. | ||||
This section defines common contexts. Additional contexts may be | ||||
defined in the properties or data types that make use of this | ||||
property. The enumerated (Section 1.7.4) common context values are: | ||||
* private: the contact information may be used in a private context. | ||||
* work: the contact information may be used in a professional | ||||
context. | ||||
1.5.2. extra | ||||
This is a reserved property name. Implementations MUST NOT set this | This section defines common contexts. Additional contexts may be | |||
property in a JSContact object. Any JSContact object including a | defined in the properties or data types that make use of this | |||
property with this name MUST be considered invalid. | property. The enumerated (Section 1.7.5) common context values | |||
are: | ||||
The purpose of this reserved property name is to provide implementors | * private: the contact information that may be used in a private | |||
with a name which is certain to never occur as a property name in a | context. | |||
JSContact object. Implementations might want to map unknown or | ||||
vendor-specific properties to a variable with this name, but this is | ||||
implementation-specific. | ||||
1.5.3. label | * work: the contact information that may be used in a | |||
professional context. | ||||
Type: String | 1.5.2. label | |||
This property allows associating contact data with user-defined | ||||
labels. 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. Such | ||||
labels best be succinct to properly display on small graphical | ||||
interfaces and screens. | ||||
1.5.4. pref | label: String. The labels associated with the contact data. Such | |||
labels may be set for phone numbers, email addresses, and other | ||||
resources. Typically, these labels are displayed along with their | ||||
associated contact data in graphical user interfaces. Note that | ||||
succinct labels are best for proper display on small graphical | ||||
interfaces and screens. | ||||
Type: UnsignedInt | 1.5.3. pref | |||
This property allows defining a preference order for contact | pref: UnsignedInt. A preference order for contact information. For | |||
information. For example, a person may have two email addresses and | example, a person may have two email addresses and prefer to be | |||
prefer to be contacted with one of them. | contacted with one of them. | |||
Its value MUST be in the range 1 and 100. Lower values correspond to | The value MUST be in the range of 1 to 100. Lower values | |||
a higher level of preference, with 1 being most preferred. If no | correspond to a higher level of preference, with 1 being most | |||
preference is set, then the contact information MUST be interpreted | preferred. If no preference is set, then the contact information | |||
as being least preferred. | MUST be interpreted as being least preferred. | |||
Note that the preference only is defined in relation to contact | Note that the preference is only defined in relation to contact | |||
information of the same type. For example, the preference orders | information of the same type. For example, the preference orders | |||
within emails and phone numbers are independent of each other. | within emails and phone numbers are independent of each other. | |||
1.5.5. phonetic | 1.5.4. phonetic | |||
This property defines how to pronounce a value in the language | The following properties define how to pronounce a value in the | |||
indicated in the Card language (Section 2.1.5) property or the | language indicated in the Card language (Section 2.1.5) property or | |||
language tag of its localizations (Section 2.7.1). Exemplary uses | the language tag of its localizations (Section 2.7.1). Exemplary | |||
are to define how to pronounce Japanese names, or for romanization of | uses of these properties are defining how to pronounce Japanese names | |||
Mandarin or Cantonese name and address components. The properties | and romanizing Mandarin or Cantonese name and address components. | |||
are defined as follows: | The properties are defined as follows: | |||
* phonetic: String. Contains the phonetic representation of a | phonetic: String. The phonetic representation of a value. Any | |||
value. Any script language subtag in the Card language | script language subtag in the Card language (Section 2.1.5) | |||
(Section 2.1.5) property MUST be ignored for use with the phonetic | property MUST be ignored and not used with the phonetic property. | |||
property. If this property is set, then at least one of the | If this property is set, then at least one of the phoneticScript | |||
phoneticScript or phoneticSystem properties that relate to this | or phoneticSystem properties that relate to this value MUST be | |||
value MUST be set. | set. | |||
* phoneticScript: String. The script used in the value of the | phoneticScript: String. The script used in the value of the related | |||
related phonetic property. This MUST be a valid script subtag as | phonetic property. This MUST be a valid script subtag as defined | |||
defined in Section 2.2.3 of [RFC5646]. | in Section 2.2.3 of [RFC5646]. | |||
* phoneticSystem: String. The phonetic system used in the related | phoneticSystem: String. The phonetic system used in the related | |||
value of the phonetic property. The enumerated values | value of the phonetic property. The enumerated (Section 1.7.5) | |||
(Section 1.7.4) are: | values are: | |||
- ipa: denotes the International Phonetic Alphabet [IPA]. | * ipa: denotes the International Phonetic Alphabet [IPA]. | |||
- jyut: denotes the Cantonese romanization system "Jyutping". | * jyut: denotes the Cantonese romanization system "Jyutping". | |||
- piny: denotes the Standard Mandarin romanization system "Hanyu | * piny: denotes the Standard Mandarin romanization system "Hanyu | |||
Pinyin". | Pinyin". | |||
The relation between the phoneticSystem, phoneticScript and phonetic | The relation between the phoneticSystem, phoneticScript, and phonetic | |||
properties is type-specific. This specification defines this | properties is type-specific. This specification defines this | |||
relation in the Name (Section 2.2.1) and Address (Section 2.5.1) | relation in the Name (Section 2.2.1.1) and Address (Section 2.5.1.1) | |||
object types, respectively. | object types, respectively. | |||
The following example illustrates the phonetic property for a name | The following example illustrates the phonetic property for a name | |||
(Section 2.2.1): | (Section 2.2.1): | |||
"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" | |||
} | } | |||
Figure 1: Example of phonetic for the name "John Smith" as | Figure 1: Example of a phonetic Property for the Name "John Smith" as | |||
pronounced in the USA. | Pronounced in the USA | |||
1.6. Internationalization | 1.6. Internationalization | |||
JSContact aims to be used for international contacts and addressbook | JSContact aims to be used for international contacts and address book | |||
data. Notably text values such as names and addresses are likely to | data. Notably, text values such as names and addresses are likely to | |||
cover a wide range of languages and cultures. This section describes | cover a wide range of languages and cultures. This section describes | |||
internationalization for free-form text values, as well as for | internationalization for free-form text values as well as Uniform | |||
Uniform Resource Identifiers (URIs). | Resource Identifiers (URIs). | |||
1.6.1. Free-form text | 1.6.1. Free-Form Text | |||
Properties having free-form text values MAY contain any valid | Properties having free-form text values MAY contain any valid | |||
sequence of Unicode characters encoded as a JSON string. Such values | sequence of Unicode characters encoded as a JSON string. Such values | |||
can contain unidirectional left-to-right and right-to-left text, as | can contain unidirectional left-to-right and right-to-left text, as | |||
well as bidirectional text using Unicode Directional Formatting | well as bidirectional text using Unicode Directional Formatting | |||
Characters described in Section 2 of [UBiDi]. Implementations | Characters as described in Section 2 of [UBiDi]. Implementations | |||
setting bidirectional text MUST make sure that each property value | setting bidirectional text MUST make sure that each property value | |||
complies with the requirements of the Unicode Bidirectional | complies with the requirements of the Unicode Bidirectional | |||
Algorithm. Implementations MUST NOT assume that text values of | Algorithm. Implementations MUST NOT assume that text values of | |||
adjacent properties are processed or displayed as a combined string, | adjacent properties are processed or displayed as a combined string; | |||
for example the values of a given name component and a surname | for example, the values of a given name component and a surname | |||
component may or may not to be rendered together. | component may or may not be rendered together. | |||
1.6.2. URIs | 1.6.2. URIs | |||
Several properties require their string value to be a URI as defined | Several properties require their string value to be a URI as defined | |||
in [RFC3986]. Implementations MUST make sure to use proper percent- | in [RFC3986]. Implementations MUST make sure to use proper percent- | |||
encoding for URIs that can not be represented using unreserved URI | encoding for URIs that cannot be represented using unreserved URI | |||
characters. Section 3.1 of [RFC3987] defines how to convert | characters. Section 3.1 of [RFC3987] defines how to convert | |||
Internationalized Resource Identifiers to URIs. JSContact makes no | Internationalized Resource Identifiers to URIs. JSContact makes no | |||
recommendation how to display URIs, but section "4.8.3 | recommendation on how to display URIs, but the WHATWG URL Living | |||
Internationalization and special characters" of the W3C URL Standard | Standard (see "Internationalization and special characters" | |||
[W3C-URL] provides guidance for URLs found in context of a web | (Section 4.8.3) of [WHATWG-URL]) provides guidance for URLs found in | |||
browser. | the context of a web browser. | |||
1.7. Validating JSContact | 1.7. Validating JSContact | |||
This specification distinguishes between three kinds of properties | This specification distinguishes between three kinds of properties | |||
regarding validation: IANA-registered properties and unknown | regarding validation: IANA-registered properties and unknown | |||
properties are defined in this section, while vendor-specific | properties, which are defined in this section, and vendor-specific | |||
properties are defined in Section 1.8.1. A JSContact object is | properties, which are defined in Section 1.8.1. A JSContact object | |||
invalid if any of its properties are invalid. | is invalid if any of its properties are invalid. | |||
This document defines for each property if it is mandatory or | This document defines whether each property is mandatory or optional. | |||
optional. A mandatory property MUST be present for a JSContact | A mandatory property MUST be present for a JSContact object to be | |||
object to be valid. An optional property does not need to be | valid. An optional property does not need to be present. The values | |||
present. The values of both required and optional properties MUST | of both required and optional properties MUST adhere to the data type | |||
adhere to the data type and definition of that property. | and definition of that property. | |||
1.7.1. Case-Sensitivity | 1.7.1. Case-Sensitivity | |||
All property names, object type names and enumerated values are case- | All property names, object type names, and enumerated values are | |||
sensitive, if not explicitly stated otherwise in their according | case-sensitive, unless explicitly stated otherwise in their | |||
definition. Implementations MUST handle a JSContact object as | definitions. Implementations MUST handle a JSContact object as | |||
invalid if a type name, property name or enumerated value only | invalid if a type name, property name, or enumerated value only | |||
differs in case from one defined for any JSContact version known to | differs in case from one defined for any JSContact version known to | |||
that implementation. This applies regardless of what JSContact | that implementation. This applies regardless of what JSContact | |||
version the Card object defines in its version (Section 2.1.2) | version the Card object defines in its version (Section 2.1.2) | |||
property. Section 1.7.3 defines how to handle unknown properties. | property. Section 1.7.4 defines how to handle unknown properties. | |||
1.7.2. IANA-registered Properties | 1.7.2. IANA-Registered Properties | |||
An IANA-registered property is any property that has been registered | An IANA-registered property is any property that has been registered | |||
according to the IANA property registry rules as outlined in | according to the IANA property registry rules as outlined in | |||
Section 3. All properties defined in this specification, including | Section 3. All properties defined in this specification, including | |||
their object value types and enumerated values, are registered at | their object value types and enumerated values, are registered at | |||
IANA. | IANA. | |||
Implementations MUST validate IANA-registered properties in JSContact | Implementations MUST validate IANA-registered properties in JSContact | |||
data, unless they are unknown to the implementation (see | data, unless they are unknown to the implementation (Section 1.7.4). | |||
Section 1.7.3). They MUST reject invalid IANA-registered properties. | They MUST reject invalid IANA-registered properties. A property is | |||
A property is invalid if its name matches the name of an IANA- | invalid if its name matches the name of an IANA-registered property | |||
registered property but the value violates its definition according | but the value violates its definition according to the JSContact | |||
to the JSContact specification version defined in the Card version | specification version defined in the Card version (Section 2.1.2) | |||
property (Section 2.1.2). | property. | |||
IANA-registered property names MUST NOT contain US-ASCII control | IANA-registered property names MUST NOT contain ASCII control | |||
characters (U+0000 to U+001F, U+007F), the COLON (U+003A) or | characters (U+0000 to U+001F, U+007F), the COLON (U+003A), or the | |||
QUOTATION MARK (U+0022) characters. They MUST only contain US-ASCII | QUOTATION MARK (U+0022). They MUST only contain ASCII alphanumeric | |||
alphanumeric characters that match the ALPHA and DIGIT rules defined | characters that match the ALPHA and DIGIT rules defined in | |||
in Appendix B.1 of [RFC5234]) or the COMMERCIAL AT (U+0040) | Appendix B.1 of [RFC5234] or the COMMERCIAL AT (U+0040) character. | |||
character. IANA-registered property names MUST be notated in lower | IANA-registered property names MUST be notated in lower camel case. | |||
camel case. | ||||
1.7.3. Unknown Properties | 1.7.3. Reserved Properties | |||
IANA-registered properties can be reserved (Section 3.3). | ||||
Implementations MUST NOT set properties having a reserved name in | ||||
JSContact objects for which this property is reserved or all objects | ||||
if the property context in the registry is "not applicable". | ||||
Reserved properties have no type, and their type signature is "not | ||||
applicable". Any JSContact object including a property that is | ||||
reserved in context of this object MUST be considered invalid. | ||||
This document reserves one property: | ||||
1.7.3.1. extra | ||||
extra: not applicable. The reserved property "extra" provides | ||||
implementors with a property name that is certain to never occur | ||||
as a property in any JSContact object. Implementations might want | ||||
to map unknown or vendor-specific properties to a variable with | ||||
this name, but this is implementation-specific. | ||||
1.7.4. Unknown Properties | ||||
Implementations may encounter JSContact data where a property name is | Implementations may encounter JSContact data where a property name is | |||
unknown to that implementation, but the name adheres to the syntactic | unknown to that implementation but the name adheres to the syntactic | |||
restrictions of IANA-registered property names. Implementations MUST | restrictions of IANA-registered property names. Implementations MUST | |||
make sure that such a name does not violate the case-sensitivity | make sure that such a name does not violate the case-sensitivity | |||
rules defined in Section 1.7.1. If the property name is valid, then | rules defined in Section 1.7.1. If the property name is valid, then | |||
implementations MUST NOT treat such properties as invalid. Instead, | implementations MUST NOT treat such properties as invalid. Instead, | |||
they MUST preserve them in the JSContact object. | they MUST preserve them in the JSContact object. | |||
Implementations that create or update JSContact data MUST only set | Implementations that create or update JSContact data MUST only set | |||
IANA-registered properties or vendor-specific properties. Preserving | IANA-registered properties or vendor-specific properties. Preserving | |||
properties that are unknown to the implementation, is to allow | properties that are unknown to the implementation is to allow | |||
applications and services to interoperate without data loss, even if | applications and services to interoperate without data loss, even if | |||
not all of them implement the same set of JSContact extensions. | not all of them implement the same set of JSContact extensions. | |||
1.7.4. Enumerated Values | 1.7.5. Enumerated Values | |||
Several properties in this document restrict their allowed values to | Several properties in this document restrict their allowed values to | |||
be from a list of String values. These values are case-sensitive. | a list of String values. These values are case-sensitive. If not | |||
If not noted otherwise for a specific property, the initial list of | noted otherwise for a specific property, the initial list of values | |||
values for such properties is registered at IANA in the JSContact | for such properties is registered at IANA in the "JSContact Enum | |||
Enum Values Registry (Section 3.7). Implementations MUST only set | Values" registry (Section 3.7). Implementations MUST only set IANA- | |||
IANA-registered or vendor-specific (Section 1.8.2) values for such | registered or vendor-specific (Section 1.8.2) values for such | |||
properties. | properties. | |||
1.8. Vendor-Specific Extensions | 1.8. Vendor-Specific Extensions | |||
Vendors may extend properties and values for experimentation or to | Vendors may extend properties and values for experimentation or to | |||
store contacts data that only is useful for a single service or | store contacts data that is only useful for a single service or | |||
application. Such extensions are not meant for interoperation. If | application. Such extensions are not meant for interoperation. If, | |||
instead interoperation is desired, vendors are strongly encouraged to | instead, interoperation is desired, vendors are strongly encouraged | |||
define and register new properties, types and values at IANA. | to define and register new properties, types, and values at IANA as | |||
Section 3 defines how to register new properties, types or values at | defined in Section 3. Section 1.7.2 defines the naming conventions | |||
IANA. Section 1.7.2 defines the naming conventions for IANA- | for IANA-registered elements. | |||
registered elements. | ||||
1.8.1. Vendor-specific Properties | 1.8.1. Vendor-Specific Properties | |||
Vendor-specific property names MUST start with a vendor-specific | Vendor-specific property names MUST start with a vendor-specific | |||
prefix followed by a name, as produced by the v-extension ABNF below. | prefix followed by a name, as produced by the "v-extension" ABNF | |||
The prefix and name together form the property name. The vendor- | below. The prefix and name together form the property name. The | |||
specific prefix MUST be a domain name under control of the service or | vendor-specific prefix MUST be a domain name under control of the | |||
application that sets the property, but it need not resolve in the | service or application that sets the property, but it need not | |||
Domain Name System [RFC1034] and [RFC1035]. The prefix ietf.org and | resolve in the Domain Name System [RFC1034] [RFC1035]. The prefix | |||
its subdomain names are reserved for IETF specifications. The name | "ietf.org" and its subdomain names are reserved for IETF | |||
MUST NOT contain the TILDE (U+007E) and SOLIDUS (U+002F) characters, | specifications. The name MUST NOT contain the TILDE (U+007E) and | |||
as these require special-escaping when encoding a JSON Pointer | SOLIDUS (U+002F) characters, as these require special escaping when | |||
[RFC6901] for that property. | encoding a JSON Pointer [RFC6901] for that property. | |||
Vendor-specific properties MAY be set in any JSContact object. | Vendor-specific properties MAY be set in any JSContact object. | |||
Implementations MUST preserve vendor-specific properties in JSContact | Implementations MUST preserve vendor-specific properties in JSContact | |||
data, irrespective if they know their use. They MUST NOT reject the | data, irrespective if they know their use. They MUST NOT reject the | |||
property value as invalid, unless they are in control of the vendor- | property value as invalid, unless they are in control of the vendor- | |||
specific property as outlined in the above paragraph. | specific property as outlined in the above paragraph. | |||
The ABNF rule v-extension formally defines valid vendor-specific | The ABNF rule "v-extension" formally defines valid vendor-specific | |||
property names. Note that the vendor prefix allows for more values | property names. Note that the vendor prefix allows for more values | |||
than are allowed as Internationalized Domain Names (IDN) [RFC8499]. | than Internationalized Domain Names (IDNs) [RFC8499]; therefore, | |||
This is to allow JSContact implementations simply validate property | JSContact implementations can simply validate property names without | |||
names without implementing the full set of rules that apply to domain | implementing the full set of rules that apply to domain names. | |||
names. | ||||
v-extension = v-prefix ":" v-name | v-extension = v-prefix ":" v-name | |||
v-prefix = v-label *("." v-label) | v-prefix = v-label *("." v-label) | |||
v-label = alnum-int / alnum-int *(alnum-int / "-") alnum-int | v-label = alnum-int / alnum-int *(alnum-int / "-") alnum-int | |||
alnum-int = ALPHA / DIGIT / NON-ASCII | alnum-int = ALPHA / DIGIT / NON-ASCII | |||
; 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 | |||
Figure 2: ABNF rules for vendor-specific property names | Figure 2: ABNF Rules for Vendor-Specific Property Names | |||
The value of vendor-specific properties can be any valid JSON value, | The value of vendor-specific properties can be any valid JSON value, | |||
and naming restrictions do not apply to such values. Specifically, | and naming restrictions do not apply to such values. Specifically, | |||
if the property value is a JSON object then the keys of such objects | if the property value is a JSON object, then the keys of such objects | |||
need not be named as vendor-specific properties. The example in | need not be named as vendor-specific properties, as illustrated in | |||
Figure 3 illustrates this: | Figure 3: | |||
"example.com:foo": "bar", | "example.com:foo": "bar", | |||
"example.com:foo2": { | "example.com:foo2": { | |||
"bar": "baz" | "bar": "baz" | |||
} | } | |||
Figure 3: Examples of vendor-specific properties | Figure 3: Examples of Vendor-Specific Properties | |||
1.8.2. Vendor-specific Values | 1.8.2. Vendor-Specific Values | |||
Some JSContact IANA-registered properties allow their values to be | Some JSContact IANA-registered properties allow their values to be | |||
vendor-specific. One such example is the kind property | vendor-specific. One such example is the "kind" (Section 2.1.4) | |||
Section 2.1.4, which enumerates its standard values but also allows | property, which enumerates its standard values but also allows for | |||
for arbitrary vendor-specific values. Such vendor-specific values | arbitrary vendor-specific values. Such vendor-specific values MUST | |||
MUST be valid v-extension values as defined in Section 1.8.1. The | be valid "v-extension" values as defined in Section 1.8.1. The | |||
example in Figure 4 illustrates this: | example in Figure 4 illustrates this: | |||
"kind": "example.com:baz" | "kind": "example.com:baz" | |||
Figure 4: Example of a vendor-specific value | Figure 4: Example of a Vendor-Specific Value | |||
Vendors are strongly encouraged to specify a new standard value once | Vendors are strongly encouraged to specify a new standard value once | |||
a vendor-specific one turns out to be useful also for other systems. | a vendor-specific one turns out to also be useful for other systems. | |||
1.9. Versioning | 1.9. Versioning | |||
Every instance of a JSContact Card (Section 2) indicates which | Every instance of a JSContact Card (Section 2) indicates which | |||
JSContact version its IANA-registered properties and values are based | JSContact version its IANA-registered properties and values are based | |||
on. The version is indicated both in the version (Section 2.1.2) | on. The version is indicated both in the version (Section 2.1.2) | |||
property within the Card and in the version (Section 3.1) parameter | property within the Card and in the version (Section 3.1) parameter | |||
of the JSContact MIME content type. All IANA-registered elements | of the JSContact media type. All IANA-registered elements indicate | |||
indicate the version at which they got introduced or obsoleted. | the version at which they were introduced or obsoleted. | |||
1.9.1. Version Format and Requirements | ||||
A JSContact version consists of a numeric major and minor version, | ||||
separated by the FULL STOP character (U+002E). Later versions are | ||||
numerically higher than former versions, with the major version being | ||||
more significant than the minor version. A version value is produced | ||||
by the ABNF | ||||
jsversion = 1*DIGIT "." 1*DIGIT | A JSContact version consists of a major and minor version. | |||
Differing major version values indicate substantial differences in | Differing major version values indicate substantial differences in | |||
JSContact semantics and format. Implementations MUST be prepared | JSContact semantics and format. Implementations MUST be prepared for | |||
that property definitions and other JSContact elements differ in a | property definitions and other JSContact elements that differ in a | |||
backwards-incompatible manner. | backwards-incompatible manner. | |||
Differing minor version values indicate additions that enrich | Differing minor version values indicate additions that enrich | |||
JSContact data, but do not introduce backwards-incompatible changes. | JSContact data but do not introduce backwards-incompatible changes. | |||
Typically, these are new property enum values or properties with | Typically, these are new property enum values or properties with a | |||
narrow semantic scope. A new minor version MUST NOT require | narrow semantic scope. A new minor version MUST NOT require | |||
implementations to change their processing of JSContact data. | implementations to change their processing of JSContact data. | |||
Changing the major version number resets the minor version number to | Changing the major version number resets the minor version number to | |||
zero. | zero. | |||
1.9.1. Version Format and Requirements | ||||
A version value starts with the numeric major version, followed by | ||||
the FULL STOP character (U+002E), followed by the numeric minor | ||||
version. Later versions are numerically higher than former versions, | ||||
with the major version being more significant than the minor version. | ||||
A version value is produced by the following ABNF: | ||||
jsversion = 1*DIGIT "." 1*DIGIT | ||||
Figure 5: The ABNF for JSContact Version Values | ||||
1.9.2. Current Version | 1.9.2. Current Version | |||
This specification registers JSContact version value 1.0 (Table 1). | This specification registers JSContact version value "1.0" (Table 1). | |||
2. Card | 2. Card | |||
This section defines the JSContact object type Card. A Card stores | This section defines the JSContact object type Card. A Card stores | |||
contact information, typically that of a person, organization or | contact information, typically that of a person, organization, or | |||
company. | company. | |||
Its media type is defined in Section 3.1. | Its media type is defined in Section 3.1. | |||
Figure 5 basic Card for the person "John Doe". As the object is the | Figure 6 shows a basic Card for the person "John Doe". As the object | |||
topmost object in the JSON data it has the @type property set | is the topmost object in the JSON data, it has the @type property set | |||
according to the rules defined Section 1.3.4. | according to the rules defined in Section 1.3.4. | |||
{ | { | |||
"@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 | |||
} | } | |||
} | } | |||
Figure 5: Example of a basic Card | Figure 6: Example of a Basic Card | |||
2.1. Metadata Properties | 2.1. Metadata Properties | |||
This section defines properties about this instance of a Card, such | This section defines properties about this instance of a Card such as | |||
as its unique identifier, its creation date, how it relates to other | its unique identifier, its creation date, and how it relates to other | |||
Cards and other metadata information. | Cards and other metadata information. | |||
2.1.1. @type | 2.1.1. @type | |||
Type: String (mandatory). | @type: String (mandatory). The JSContact type of the Card object. | |||
The value MUST be "Card". | ||||
This MUST be Card, if set. | ||||
2.1.2. version | 2.1.2. version | |||
Type: String (mandatory). | version: String (mandatory). The JSContact version of this Card. | |||
The value MUST be one of the IANA-registered JSContact Version | ||||
Specifies the JSContact version used to define this Card. The value | values for the version property. Also see Section 1.9.2. | |||
MUST be one of the IANA-registered JSContact Enum Values for the | ||||
version property. Also see Section 1.9.2. | ||||
"version": "1.0" | "version": "1.0" | |||
Figure 6: version example | Figure 7: Example for the version Property | |||
2.1.3. created | 2.1.3. created | |||
Type: UTCDateTime (optional). | created: UTCDateTime (optional). The date and time when the Card was | |||
created. | ||||
The date and time when this Card was created. | ||||
"created": "2022-09-30T14:35:10Z" | "created": "2022-09-30T14:35:10Z" | |||
Figure 7: created example | ||||
Figure 8: Example for the created Property | ||||
2.1.4. kind | 2.1.4. kind | |||
Type: String (optional, default: individual). The kind of the entity | kind: String (optional; default: "individual"). The kind of the | |||
the Card represents. | entity the Card represents. | |||
The enumerated (Section 1.7.4) values are: | The enumerated (Section 1.7.5) values are: | |||
* individual: a single person | * individual: a single person | |||
* group: a group person of persons or entities | * group: a group of people or entities | |||
* org: an organization | * org: an organization | |||
* location: a named location | * location: a named location | |||
* device: a device, such as appliances, computers, or network | * device: a device such as an appliance, a computer, or a network | |||
elements | element | |||
* application: a software application | * application: a software application | |||
"kind": "individual" | "kind": "individual" | |||
Figure 8: kind example | Figure 9: Example for the kind Property | |||
2.1.5. language | 2.1.5. language | |||
Type: String (optional). | language: String (optional). The language tag, as defined in | |||
[RFC5646], that best describes the language used for text in the | ||||
This is the language tag, as defined in [RFC5646], that best | Card, optionally including additional information such as the | |||
describes the language used for text in the Card, optionally | script. Note that values MAY be localized in the localizations | |||
including additional information such as the script. Note that | (Section 2.7.1) property. | |||
values MAY be localized in the localizations property Section 2.7.1. | ||||
"language": "de-AT" | "language": "de-AT" | |||
Figure 9: language example | Figure 10: Example for the language Property | |||
2.1.6. members | 2.1.6. members | |||
Type: String[Boolean] (optional). | members: String[Boolean] (optional). The set of Cards that are | |||
members of this group Card. Each key in the set is the uid | ||||
This identifies the set of Cards that are members of this group Card. | property value of the member, and each boolean value MUST be | |||
Each key in the set is the uid property value of the member, each | "true". If this property is set, then the value of the kind | |||
boolean value MUST be true. If this property is set, then the value | property MUST be "group". | |||
of the kind property MUST be group. | ||||
The opposite is not true. A group Card will usually contain the | The opposite is not true. A group Card will usually contain the | |||
members property to specify the members of the group, but it is not | members property to specify the members of the group, but it is | |||
required to. A group Card without the members property can be | not required to. A group Card without the members property can be | |||
considered an abstract grouping, or one whose members are known | considered an abstract grouping or one whose members are known | |||
empirically (e.g., "IETF Participants"). | empirically (e.g., "IETF Participants"). | |||
"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 | |||
} | } | |||
Figure 10: members example | Figure 11: Example for the members Property | |||
2.1.7. prodId | 2.1.7. prodId | |||
Type: String (optional). | prodId: String (optional). The identifier for the product that | |||
created the Card. If set, the value MUST be at least one | ||||
The identifier for the product that created the Card. If set, the | character long. | |||
value MUST be at least one character long. | ||||
"prodId": "ACME Contacts App version 1.23.5" | "prodId": "ACME Contacts App version 1.23.5" | |||
Figure 11: prodId example | Figure 12: Example for the prodId Property | |||
2.1.8. relatedTo | 2.1.8. relatedTo | |||
Type: String[Relation] (optional). | relatedTo: String[Relation] (optional). The set of Card objects that | |||
relate to the Card. The value is a map, where each key is the uid | ||||
property value of the related Card, and the value defines the | ||||
relation. | ||||
Relates the object to other Cards. This is represented as a map, | The Relation object has the following properties: | |||
where each key is the uid of the related Card and the value defines | ||||
the relation. The Relation object has the following properties: | ||||
* @type: String. This MUST be Relation, if set. | @type: String. The JSContact type of the object. The value MUST be | |||
"Relation", if set. | ||||
* relation: String[Boolean] (optional, default: empty Object) | relation: String[Boolean] (optional; default: empty Object). The rel | |||
Describes how the linked object is related to the linking object. | ationship of the related Card to the Card, defined as a set of | |||
The relation is defined as a set of relation types. The key in | relation types. The keys in the set define the relation type; the | |||
the set defines the relation type, the value for each key in the | values for each key in the set MUST be "true". The relationship | |||
set MUST be true. The relationship between the two objects is | between the two objects is undefined if the set is empty. | |||
undefined if the set is empty. | ||||
The initial list of enumerated (Section 1.7.4) relation types | The initial list of enumerated (Section 1.7.5) relation types | |||
matches the IANA-registered TYPE parameter [IANAvCard] values of | matches the IANA-registered TYPE [IANA-vCard] parameter values of | |||
the vCard RELATED property (Section 6.6.6 of [RFC6350]): | the vCard RELATED property (Section 6.6.6 of [RFC6350]): | |||
- acquaintance | * acquaintance | |||
- agent | * agent | |||
- child | * child | |||
- colleague | * co-resident | |||
- contact | * co-worker | |||
- co-resident | * colleague | |||
- co-worker | * contact | |||
- crush | * crush | |||
- date | * date | |||
- emergency | * emergency | |||
- friend | * friend | |||
- kin | * kin | |||
- me | * me | |||
- met | * met | |||
- muse | * muse | |||
- neighbor | * neighbor | |||
- parent | * parent | |||
- sibling | * sibling | |||
- spouse | * spouse | |||
- sweetheart | * sweetheart | |||
"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": {} | |||
} | } | |||
} | } | |||
Figure 12: relatedTo example | Figure 13: Example for the relatedTo Property | |||
2.1.9. uid | 2.1.9. uid | |||
Type: String (mandatory). | uid: String (mandatory). An identifier that associates the object as | |||
the same across different systems, address books, and views. The | ||||
value SHOULD be a URN [RFC8141], but for compatibility with | ||||
[RFC6350], it MAY also be a URI [RFC3986] or free-text value. The | ||||
value of the URN SHOULD be in the "uuid" namespace [RFC4122]. | ||||
An identifier, used to associate the object as the same across | As of this writing, a revision [UUID] of the Universally Unique | |||
different systems, address books and views. The value SHOULD be a | Identifier (UUID) Standards Track document [RFC4122] is in | |||
URN [RFC8141] but for compatibility with [RFC6350] it MAY also be a | progress and will likely introduce new UUID versions and best | |||
URI [RFC3986] or free-text value. The value of the URN SHOULD be in | practices to generate global unique identifiers. Implementors | |||
the uuid namespace [RFC4122]. As of this writing, a revision | SHOULD follow any recommendations described there. Until then, | |||
[I-D.ietf-uuidrev-rfc4122bis] of the UUID standard document is being | implementations SHOULD generate identifiers using the random or | |||
worked on and is likely to introduce new UUID versions and best | pseudorandom UUID version described in Section 4.4 of [RFC4122]. | |||
practices to generate global unique identifiers. Implementors SHOULD | ||||
follow any recommendations described there. Until then, | ||||
implementations SHOULD generate identifiers using the random or | ||||
pseudo-random UUID version described in Section 4.4 of [RFC4122]. | ||||
"uid": "urn:uuid:f81d4fae-7dec-11d0-a765-00a0c91e6bf6" | "uid": "urn:uuid:f81d4fae-7dec-11d0-a765-00a0c91e6bf6" | |||
Figure 13: uid example | Figure 14: Example for the uid Property | |||
2.1.10. updated | 2.1.10. updated | |||
Type: UTCDateTime (optional). | updated: UTCDateTime (optional). The date and time when the data in | |||
the Card was last modified. | ||||
The date and time when the data in this Card was last modified. | ||||
"updated": "2021-10-31T22:27:10Z" | "updated": "2021-10-31T22:27:10Z" | |||
Figure 14: updated example | Figure 15: Example for the updated Property | |||
2.2. Name and Organization Properties | 2.2. Name and Organization Properties | |||
This section defines properties that name the entity represented by | This section defines properties that name the entity represented by | |||
this Card, its related organizations and roles, as well as how to | the Card and its related organizations and roles. It also describes | |||
refer the entity represented by this Card in spoken or written | how to refer to the entity represented by the Card in spoken or | |||
language. | written language. | |||
2.2.1. name | 2.2.1. name | |||
Type: Name (optional). | name: Name (optional). The name of the entity represented by the | |||
Card. This can be any type of name, e.g., it can, but need not, | ||||
The name of the entity represented by this Card. This can be any | be the legal name of a person. | |||
type of name, e.g., it can but need not be the legal name of a | ||||
person. | ||||
2.2.1.1. Name object | 2.2.1.1. Name Object | |||
A Name object has the following properties | A Name object has the following properties: | |||
* @type: String. This MUST be Name, if set. | @type: String. The JSContact type of the object. The value MUST be | |||
"Name", if set. | ||||
* components: NameComponent[] (optional). The components | components: NameComponent[] (optional). The components | |||
(Section 2.2.1.2) making up this name. This property MUST be set | (Section 2.2.1.2) making up this name. The components property | |||
if the full property is not set, otherwise it SHOULD be set. The | MUST be set if the full property is not set; otherwise, it SHOULD | |||
component list MUST have at least one entry having a different | be set. The component list MUST have at least one entry having a | |||
kind than separator. | different kind property value than "separator". | |||
Name components SHOULD be ordered such that their values joined as | Name components SHOULD be ordered such that when their values are | |||
a String produce a valid full name of this entity. If so, | joined as a String, a valid full name of the entity is produced. | |||
implementations MUST set the isOrdered property value to true. | If so, implementations MUST set the isOrdered property value to | |||
"true". | ||||
If the name components are ordered, then the defaultSeparator | If the name components are ordered, then the defaultSeparator | |||
property and name components of kind separator give guidance on | property and name components with the kind property value set to | |||
what characters to insert between components, but implementations | "separator" give guidance on what characters to insert between | |||
are free to choose any others. In lack of a separator, inserting | components, but implementations are free to choose any others. | |||
a single Space character in between name component values is a | When lacking a separator, inserting a single space character in | |||
good choice. | between the name component values is a good choice. | |||
If instead the name components follow no particular order, then | If, instead, the name components follow no particular order, then | |||
the isOrdered property value MUST be false, the components | the isOrdered property value MUST be "false", the components | |||
property MUST NOT contain a NameComponent of kind separator and | property MUST NOT contain a NameComponent with the kind property | |||
the defaultSeparator property MUST NOT be set. | value set to "separator", and the defaultSeparator property MUST | |||
NOT be set. | ||||
Figure 15 is an example for the name "Vincent van Gogh". Note how | Figure 16 shows an example for the name "Vincent van Gogh". Note | |||
a single name component value may consist of multiple words. | how a single name component value may consist of multiple words. | |||
Figure 16 illustrates a name with a second surname, such as a | ||||
Spanish name. Additional examples are shown in Figure 18 and | ||||
Figure 38. | ||||
"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 | |||
} | } | |||
Figure 15: Example for a surname with two words | Figure 16: Example of a Surname with Two Words | |||
Figure 17 illustrates a name with a second surname such as a | ||||
Spanish name. Additional examples are shown in Figures 19 and 39. | ||||
"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 | |||
} | } | |||
Figure 16: Example for a second surname | Figure 17: Example of a Second Surname | |||
* isOrdered: Boolean (optional, default: false). This indicates if | isOrdered: Boolean (optional; default: "false"). The indicator if | |||
the name component sequence in the components property is ordered. | the name components in the components property are ordered. | |||
* defaultSeparator: String (optional). The default separator to | defaultSeparator: String (optional). The default separator to insert | |||
insert between name component values when concatenating all name | between name component values when concatenating all name | |||
component values to a single String. Also see the definition of | component values to a single String. Also see the definition of | |||
the separator kind for the NameComponent object. This property | the kind property value "separator" for the NameComponent | |||
MUST NOT be set if the Name isOrdered property value is false or | (Section 2.2.1.2) object. The defaultSeparator property MUST NOT | |||
if the components property is not set. | be set if the Name isOrdered property value is "false" or if the | |||
components property is not set. | ||||
* full: String (optional). This is the full name representation of | full: String (optional). The full name representation of the Name. | |||
this Name. This property MUST be set if the components property | The full property MUST be set if the components property is not | |||
is not set. | set. | |||
"full": "Mr. John Q. Public, Esq." | "full": "Mr. John Q. Public, Esq." | |||
Figure 17: full example | Figure 18: Example for the full Property | |||
* sortAs: String[String] (optional). | ||||
This defines how this name lexicographically sorts in relation to | sortAs: String[String] (optional). The value to lexicographically | |||
other names when compared by a name component type. The key in | sort the name in relation to other names when compared by a name | |||
the map defines the name component type. The value for that key | component type. The keys in the map define the name component | |||
defines the verbatim string to compare when sorting by this name | type. The values define the verbatim string to compare when | |||
component type. Absence of a key indicates that this name | sorting by the name component type. Absence of a key indicates | |||
component type SHOULD NOT be considered during sort. Sorting by | that the name component type SHOULD NOT be considered during sort. | |||
that missing name component type or if the sortAs property is not | Sorting by that missing name component type, or if the sortAs | |||
set is implementation-specific. This property MUST NOT be set if | property is not set, is implementation-specific. The sortAs | |||
the components property is not set. | property MUST NOT be set if the components property is not set. | |||
Each key in the map MUST be a valid name component type value as | Each key in the map MUST be a valid name component type value as | |||
defined for the kind property of the NameComponent object (see | defined for the kind property of the NameComponent object (see | |||
below). For each key in the map there MUST exist at least one | below). For each key in the map, there MUST exist at least one | |||
NameComponent object having that type in the components property | NameComponent object that has the type in the components property | |||
of this name. | of the name. | |||
Figure 18 illustrates the use of sortAs. The property value | Figure 19 illustrates the use of the sortAs property. The | |||
indicates that the middle name followed by both surnames should be | property value indicates that the middle name followed by both | |||
used when sorting this name by surname. The absence of the middle | surnames should be used when sorting the name by surname. The | |||
indicates that the middle name on its own should be disregarded | absence of "middle" indicates that the middle name on its own | |||
during sort. Even though the name only contains one name | should be disregarded during sort. Even though the name only | |||
component for the given name, the sortAs property still explicitly | contains one name component for the given name, the sortAs | |||
defines how to sort by given name as otherwise sorting by it would | property still explicitly defines how to sort by the given name; | |||
be undefined. | otherwise, sorting by it would be undefined. | |||
* phoneticScript: String (optional). The script used in the value | phoneticScript: String (optional). The script used in the value of | |||
of the NameComponent phonetic property. Also see Section 1.5.5. | the NameComponent phonetic property. See Section 1.5.4 for more | |||
See Figure 19 for an example. | information and Figure 20 for an example. | |||
* phoneticSystem: String (optional). The phonetic system used in | phoneticSystem: String (optional). The phonetic system used in the | |||
the NameComponent phonetic property. Also see Section 1.5.5. See | NameComponent phonetic property. See Section 1.5.4 for more | |||
Figure 19 for an example. | information and Figure 20 for an example. | |||
"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 | |||
} | } | |||
Figure 18: Example for sortAs | Figure 19: Example for the sortAs Property | |||
{ | { | |||
"@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 page 28, line 28 ¶ | skipping to change at line 1266 ¶ | |||
"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" | |||
} | } | |||
} | } | |||
} | } | |||
Figure 19: Example for phonetic and localizations | Figure 20: Example for the phonetic and localizations Properties | |||
2.2.1.2. NameComponent | 2.2.1.2. NameComponent | |||
A NameComponent object has the following properties: | A NameComponent object has the following properties: | |||
* @type: String. This MUST be NameComponent, if set. | @type: String. The JSContact type of the object. The value MUST be | |||
"NameComponent", if set. | ||||
* value: String (mandatory). The value of this name component. | value: String (mandatory). The value of the name component. This | |||
This can be composed of one or multiple words, such as "Poe" or | can be composed of one or multiple words such as "Poe" or "van | |||
"van Gogh". | Gogh". | |||
* kind: String (mandatory). The kind of this name component. The | kind: String (mandatory). The kind of the name component. The | |||
enumerated (Section 1.7.4) values are: | enumerated (Section 1.7.5) values are: | |||
- title: an honorific title or prefix, e.g., "Mr", "Ms", "Dr". | * title: an honorific title or prefix, e.g., "Mr.", "Ms.", or | |||
"Dr.". | ||||
- given: a given name, also known as "first name", "personal | * given: a given name, also known as "first name" or "personal | |||
name". | name". | |||
- given2: a name that appears between the given and surname, such | * given2: a name that appears between the given and surname such | |||
as a middle name or patronymic name. | as a middle name or patronymic name. | |||
- surname: a surname, also known as "last name", "family name". | * surname: a surname, also known as "last name" or "family name". | |||
- surname2: a secondary surname (used in some cultures), also | * surname2: a secondary surname (used in some cultures), also | |||
known as "maternal surname". | known as "maternal surname". | |||
- credential: a credential, also known as "accreditation | * credential: a credential, also known as "accreditation | |||
qualifier" or "honorific suffix", e.g., "B.A.", "Esq.". | qualifier" or "honorific suffix", e.g., "B.A.", "Esq.". | |||
- generation: a generation marker or qualifier, e.g., “Jr.” or | * generation: a generation marker or qualifier, e.g., "Jr." or | |||
“III”. | "III". | |||
- separator: a formatting separator between two ordered name non- | * separator: a formatting separator between two ordered name non- | |||
separator components. The value property of the component | separator components. The value property of the component | |||
includes the verbatim separator, for example a hyphen character | includes the verbatim separator, for example, a hyphen | |||
or even an empty string. This value has higher precedence than | character or even an empty string. This value has higher | |||
the defaultSeparator property of the Name. Implementations | precedence than the defaultSeparator property of the Name. | |||
MUST NOT insert two consecutive separator components, instead | Implementations MUST NOT insert two consecutive separator | |||
they SHOULD insert a single separator component with the | components; instead, they SHOULD insert a single separator | |||
combined value. This component kind MUST NOT be set if the | component with the combined value. This component kind MUST | |||
Name isOrdered property value is false. | NOT be set if the Name isOrdered property value is "false". | |||
* phonetic: String (optional). This defines how to pronounce this | phonetic: String (optional). The pronounciation of the name | |||
name component. If this property is set, then at least one of the | component. If this property is set, then at least one of the Name | |||
Name object phoneticSystem or phoneticScript properties MUST be | object properties, phoneticSystem or phoneticScript, MUST be set. | |||
set. Also see Section 1.5.5. | Also see Section 1.5.4. | |||
2.2.1.3. nicknames | 2.2.2. nicknames | |||
Type: Id[Nickname] (optional). | nicknames: Id[Nickname] (optional). The nicknames of the entity | |||
represented by the Card. | ||||
The nicknames of the entity represented by this Card. A Nickname | A Nickname object has the following properties: | |||
object has the following properties: | ||||
* @type: String. This MUST be Nickname, if set. | @type: String. The JSContact type of the object. The value MUST be | |||
"Nickname", if set. | ||||
* name: String (mandatory). The nickname. | name: String (mandatory). The nickname. | |||
* contexts: String[Boolean] (optional) The contexts in which to use | contexts: String[Boolean] (optional). The contexts in which to use | |||
this nickname. Also see Section 1.5.1. | the nickname. Also see Section 1.5.1. | |||
* pref: UnsignedInt (optional). The preference of this nickname in | pref: UnsignedInt (optional). The preference of the nickname in | |||
relation to other nicknames. Also see Section 1.5.4. | relation to other nicknames. Also see Section 1.5.3. | |||
"nicknames": { | "nicknames": { | |||
"k391": { | "k391": { | |||
"name": "Johnny" | "name": "Johnny" | |||
} | } | |||
} | } | |||
Figure 20: nicknames example | Figure 21: Example for the nicknames Property | |||
2.2.2. organizations | 2.2.3. organizations | |||
Type: Id[Organization] (optional). | organizations: Id[Organization] (optional). The company or | |||
organization names and units associated with the Card. | ||||
The companies or organizations names and units associated with this | An Organization object has the following properties, of which at | |||
Card. An Organization object has the following properties, of which | least one of the name and units properties MUST be set: | |||
at least one of the name and units properties MUST be set: | ||||
* @type: String. This MUST be Organization, if set. | @type: String. The JSContact type of the object. The value MUST be | |||
"Organization", if set. | ||||
* name: String (optional). The name of this organization. | name: String (optional). The name of the organization. | |||
* units: OrgUnit[] (optional). A list of organizational units, | units: OrgUnit[] (optional). A list of organizational units, ordered | |||
ordered descending by hierarchy (e.g., a geographic or functional | as descending by hierarchy (e.g., a geographic or functional | |||
division sorts before a department within that division). If set, | division sorts before a department within that division). If set, | |||
the list MUST contain at least one entry. | the list MUST contain at least one entry. | |||
* sortAs: String (optional). This defines how this organization | sortAs: String (optional). The value to lexicographically sort the | |||
name lexicographically sorts in relation to other organizations | organization in relation to other organizations when compared by | |||
when compared by name. The value defines the verbatim string | name. The value defines the verbatim string value to compare. In | |||
value to compare. In absence of this property, the name property | absence of this property, the name property value MAY be used for | |||
value MAY be used for comparison. | comparison. | |||
* contexts: String[Boolean] (optional). The contexts in which | contexts: String[Boolean] (optional). The contexts in which | |||
association with this organization apply. For example, membership | association with the organization applies. For example, | |||
in a choir may only apply in a private context. Also see | membership in a choir may only apply in a private context. Also | |||
Section 1.5.1. | see Section 1.5.1. | |||
A OrgUnit object has the following properties: | An OrgUnit object has the following properties: | |||
* @type: String. This MUST be OrgUnit, if set. | @type: String. The JSContact type of the object. The value MUST be | |||
"OrgUnit", if set. | ||||
* name: String (mandatory). The name of this organizational unit. | name: String (mandatory). The name of the organizational unit. | |||
* sortAs: String (optional). This defines how this organization | sortAs: String (optional). The value to lexicographically sort the | |||
unit name lexicographically sorts in relation to other | organizational unit in relation to other organizational units of | |||
organizational units of the same level when compared by name. The | the same level when compared by name. The level is defined by the | |||
level is defined by the array index of this organizational unit in | array index of the organizational unit in the units property of | |||
the units property of the Organization object. The property value | the Organization object. The property value defines the verbatim | |||
defines the verbatim string value to compare. In absence of this | string value to compare. In absence of this property, the name | |||
property, the name property value MAY be used for comparison. | property value MAY be used for comparison. | |||
"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" | |||
} | } | |||
} | } | |||
Figure 21: organizations example | Figure 22: Example for the organizations Property | |||
2.2.3. speakToAs | ||||
Type: SpeakToAs (optional). | ||||
Provides information how to address, speak to or refer to the entity | ||||
that is represented by this Card. A SpeakToAs object has the | ||||
following properties, of which at least one of the grammaticalGender | ||||
and pronouns properties MUST be set: | ||||
* @type: String. This MUST be SpeakToAs, if set. | ||||
* grammaticalGender: String (optional). Defines which grammatical | ||||
gender to use in salutations and other grammatical constructs. | ||||
For example, the German language distinguishes by grammatical | ||||
gender in salutations such as "Sehr geehrte" (feminine) and "Sehr | ||||
geehrter" (masculine). The enumerated (Section 1.7.4) values are: | ||||
- animate | 2.2.4. speakToAs | |||
- common | speakToAs: SpeakToAs (optional). The information how to address, | |||
speak to, or refer to the entity that is represented by the Card. | ||||
- feminine | A SpeakToAs object has the following properties, of which at least | |||
one of the grammaticalGender and pronouns properties MUST be set: | ||||
- inanimate | @type: String. The JSContact type of the object. The value MUST be | |||
"SpeakToAs", if set. | ||||
- masculine | grammaticalGender: String (optional). The grammatical gender to use | |||
in salutations and other grammatical constructs. For example, the | ||||
German language distinguishes by grammatical gender in salutations | ||||
such as "Sehr geehrte" (feminine) and "Sehr geehrter" (masculine). | ||||
The enumerated (Section 1.7.5) values are: | ||||
- neuter | * animate | |||
* common | ||||
* feminine | ||||
* inanimate | ||||
* masculine | ||||
* neuter | ||||
Note that the grammatical gender does not allow inferring the | Note that the grammatical gender does not allow inferring the | |||
gender identities or assigned sex of the contact. | gender identities or assigned sex of the contact. | |||
* pronouns: Id[Pronouns] (optional). Defines the pronouns that the | pronouns: Id[Pronouns] (optional). The pronouns that the contact | |||
contact chooses to use for themselves. | chooses to use for themselves. | |||
A Pronouns object has the following properties: | A Pronouns object has the following properties: | |||
* @type: String. This MUST be Pronouns, if set. | @type: String. The JSContact type of the object. The value MUST be | |||
"Pronouns", if set. | ||||
* pronouns: String (mandatory). Defines the pronouns. Any value or | pronouns: String (mandatory). The pronouns. Any value or form is | |||
form is allowed. Examples in English include she/her and | allowed. Examples in English include "she/her" and "they/them/ | |||
they/them/theirs. The value MAY be overridden in the | theirs". The value MAY be overridden in the localizations | |||
localizations property (Section 2.7.1). | (Section 2.7.1) property. | |||
* contexts: String[Boolean] (optional). The contexts in which to | contexts: String[Boolean] (optional). The contexts in which to use | |||
use these pronouns. Also see Section 1.5.1. | the pronouns. Also see Section 1.5.1. | |||
* pref: UnsignedInt (optional). The preference of these pronouns in | pref: UnsignedInt (optional). The preference of the pronouns in | |||
relation to other pronouns in the same context. Also see | relation to other pronouns in the same context. Also see | |||
Section 1.5.4. | Section 1.5.3. | |||
"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 | |||
} | } | |||
} | } | |||
} | } | |||
Figure 22: speakToAs example | Figure 23: Example for the speakToAs Property | |||
2.2.4. titles | ||||
Type : Id[Title] (optional). | 2.2.5. titles | |||
The job titles or functional positions of the entity represented by | titles: Id[Title] (optional). The job titles or functional positions | |||
this Card. A Title object has the following properties: | of the entity represented by the Card. | |||
* @type: String. This MUST be Title, if set. | A Title object has the following properties: | |||
* name: String (mandatory). The title or role name of the entity | @type: String. The JSContact type of the object. The value MUST be | |||
represented by this Card. | "Title", if set. | |||
* kind: String (optional, default title). Describes the | name: String (mandatory). The title or role name of the entity | |||
organizational or situational kind of this title. Some | represented by the Card. | |||
organizations and individuals distinguish between _titles_ as | ||||
organizational positions and _roles_ as more temporary | ||||
assignments, such as in project management. | ||||
The enumerated (Section 1.7.4) values are: | kind: String (optional; default: "title"). The organizational or | |||
situational kind of the title. Some organizations and individuals | ||||
distinguish between _titles_ as organizational positions and | ||||
_roles_ as more temporary assignments such as in project | ||||
management. | ||||
- title | The enumerated (Section 1.7.5) values are: | |||
- role | * title | |||
* role | ||||
* organizationId: Id (optional). The identifier of the organization | organizationId: Id (optional). The identifier of the organization in | |||
in which this title is held. | which this title is held. | |||
"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" | |||
} | } | |||
}, | }, | |||
"organizations": { | "organizations": { | |||
"o2": { | "o2": { | |||
"name": "ABC, Inc." | "name": "ABC, Inc." | |||
} | } | |||
} | } | |||
Figure 23: titles example | Figure 24: Example for the titles Property | |||
2.3. Contact Properties | 2.3. Contact Properties | |||
This section defines properties how to contact the entity represented | This section defines how properties contact the entity represented by | |||
by this Card. | the Card. | |||
2.3.1. emails | 2.3.1. emails | |||
Type: Id[EmailAddress] (optional). | emails: Id[EmailAddress] (optional). The email addresses in which to | |||
contact the entity represented by the Card. | ||||
The email addresses to contact the entity represented by this Card. | ||||
An EmailAddress object has the following properties: | An EmailAddress object has the following properties: | |||
* @type: String. This MUST be EmailAddress, if set. | @type: String. The JSContact type of the object. The value MUST be | |||
"EmailAddress", if set. | ||||
* address: String (mandatory). The email address. This MUST be an | address: String (mandatory). The email address. This MUST be an | |||
_addr-spec_ value as defined in Section 3.4.1 of [RFC5322]. | _addr-spec_ value as defined in Section 3.4.1 of [RFC5322]. | |||
* contexts: String[Boolean] (optional). The contexts in which to | contexts: String[Boolean] (optional). The contexts in which to use | |||
use this email address. Also see Section 1.5.1. | this email address. Also see Section 1.5.1. | |||
* pref: UnsignedInt (optional). The preference of this email | pref: UnsignedInt (optional). The preference of the email address in | |||
address in relation to other email addresses. Also see | relation to other email addresses. Also see Section 1.5.3. | |||
Section 1.5.4. | ||||
* label: String (optional). A custom label for the value, see | label: String (optional). A custom label for the value. Also see | |||
Section 1.5.3. | Section 1.5.2. | |||
"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 | |||
} | } | |||
} | } | |||
Figure 24: emails example | Figure 25: Example for the emails Property | |||
2.3.2. onlineServices | 2.3.2. onlineServices | |||
Type: Id[OnlineService] (optional). | onlineServices: Id[OnlineService] (optional). The online services | |||
that are associated with the entity represented by the Card. This | ||||
can be messaging services, social media profiles, and other. | ||||
The online services that are associated with the entity represented | An OnlineService object has the following properties, of which at | |||
by this Card. This can be messaging services, social media profiles, | least the uri or user property MUST be set: | |||
and other. An OnlineService object has the following properties, of | ||||
which at least the uri or user property MUST be set: | ||||
* @type: String. This MUST be OnlineService, if set. | @type: String. The JSContact type of the object. The value MUST be | |||
"OnlineService", if set. | ||||
* service: String (optional). The name of the online service or | service: String (optional). The name of the online service or | |||
protocol. The name MAY be capitalized the same as on the | protocol. The name MAY be capitalized the same as on the | |||
service's website, app or publishing material, but names MUST be | service's website, app, or publishing material, but names MUST be | |||
considered equal is they match case-insensitively. Examples are | considered equal if they match case-insensitively. Examples are | |||
GitHub, kakao, Mastodon. | "GitHub", "kakao", and "Mastodon". | |||
* uri: String (optional). This identifies the entity represented by | uri: String (optional). The identifier for the entity represented by | |||
this card at the online service. This MUST be a _URI_ as defined | the Card at the online service. This MUST be a _URI_ as defined | |||
in Section 3 of [RFC3986]. | in Section 3 of [RFC3986]. | |||
* user: String (optional). This names the entity represented by | user: String (optional). The name the entity represented by the Card | |||
this Card at the online service. Any free-text value is allowed. | at the online service. Any free-text value is allowed. The | |||
The service property SHOULD be set. | service property SHOULD be set. | |||
* contexts: String[Boolean] (optional). The contexts in which to | contexts: String[Boolean] (optional). The contexts in which to use | |||
use this service. Also see Section 1.5.1. | the service. Also see Section 1.5.1. | |||
* pref: UnsignedInt (optional). The preference of this service in | pref: UnsignedInt (optional). The preference of the service in | |||
relation to other services. Also see Section 1.5.4. | relation to other services. Also see Section 1.5.3. | |||
* label: String (optional). A custom label for the value, see | label: String (optional). A custom label for the value. Also see | |||
Section 1.5.3. | Section 1.5.2. | |||
"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" | |||
} | } | |||
} | } | |||
Figure 25: onlineServices example | Figure 26: Example for the onlineServices Property | |||
2.3.3. phones | 2.3.3. phones | |||
Type: Id[Phone] (optional). | phones: Id[Phone] (optional). The phone numbers by which to contact | |||
the entity represented by the Card. | ||||
The phone numbers to contact the entity represented by this Card. A | ||||
Phone object has the following properties: | Phone object has the following properties: | |||
* @type: String. This MUST be Phone, if set. | @type: String. The JSContact type of the object. The value MUST be | |||
"Phone", if set. | ||||
* number: String (mandatory). The phone number, as either a URI or | number: String (mandatory). The phone number as either a URI or free | |||
free-text. Typical URI schemes are the [RFC3966] tel or [RFC3261] | text. Typical URI schemes are "tel" [RFC3966] or "sip" [RFC3261], | |||
sip schemes, but any URI scheme is allowed. | but any URI scheme is allowed. | |||
* features: String[Boolean] (optional). The set of contact features | features: String[Boolean] (optional). The set of contact features | |||
that this phone number may be used for. The set is represented as | that the phone number may be used for. The set is represented as | |||
an object, with each key being a method type. The boolean value | an object, with each key being a method type. The boolean value | |||
MUST be true. The enumerated (Section 1.7.4) method type values | MUST be "true". The enumerated (Section 1.7.5) method type values | |||
are: | are: | |||
- mobile: the number is for a mobile phone. | * mobile: this number is for a mobile phone. | |||
* voice: this number supports calling by voice. | ||||
- voice: the number is for calling by voice. | * text: this number supports text messages (SMS). | |||
* video: this number supports video conferencing. | ||||
- text: the number supports text messages (SMS). | * main-number: this number is a main phone number such as the | |||
number of the front desk at a company, as opposed to a direct- | ||||
- video: the number supports video conferencing. | ||||
- main-number: this number is the main phone number, such as the | ||||
number of the front-desk at a company, as opposed to a direct- | ||||
dial number of an individual employee. | dial number of an individual employee. | |||
* textphone: this number is for a device for people with hearing | ||||
- textphone: the number is for a device for people with hearing | ||||
or speech difficulties. | or speech difficulties. | |||
* fax: this number supports sending faxes. | ||||
* pager: this number is for a pager or beeper. | ||||
- fax: the number is for sending faxes. | contexts: String[Boolean] (optional). The contexts in which to use | |||
the number. Also see Section 1.5.1. | ||||
- pager: the number is for a pager or beeper. | ||||
* contexts: String[Boolean] (optional). The contexts in which to | ||||
use this number. Also see Section 1.5.1. | ||||
* pref: UnsignedInt (optional). The preference of this number in | pref: UnsignedInt (optional). The preference of the number in | |||
relation to other numbers. Also see Section 1.5.4. | relation to other numbers. Also see Section 1.5.3. | |||
* label: String (optional). A custom label for the value, see | label: String (optional). A custom label for the value. Also see | |||
Section 1.5.3. | Section 1.5.2. | |||
"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", | |||
"pref": 1 | "pref": 1 | |||
}, | }, | |||
"tel3": { | "tel3": { | |||
"contexts": { | "contexts": { | |||
"work": true | "work": true | |||
}, | }, | |||
"number": "tel:+1-201-555-0123" | "number": "tel:+1-201-555-0123" | |||
} | } | |||
} | } | |||
Figure 26: phones example | Figure 27: Example for the phones Property | |||
2.3.4. preferredLanguages | 2.3.4. preferredLanguages | |||
Type : Id[LanguagePref] (optional). | preferredLanguages : Id[LanguagePref] (optional). The preferred | |||
languages for contacting the entity associated with the Card. | ||||
Defines the preferred languages for contacting the entity associated | ||||
with this Card. | ||||
A LanguagePref object has the following properties: | A LanguagePref object has the following properties: | |||
* @type: String. This MUST be LanguagePref, if set. | @type: String. The JSContact type of the object. The value MUST be | |||
"LanguagePref", if set. | ||||
* language: String (mandatory). The preferred language. This MUST | language: String (mandatory). The preferred language. This MUST be | |||
a language tag as defined in [RFC5646]. | a language tag as defined in [RFC5646] . | |||
* contexts: String[Boolean] (optional). Defines the contexts in | contexts: String[Boolean] (optional). The contexts in which to use | |||
which to use this language. Also see Section 1.5.1. | the language. Also see Section 1.5.1. | |||
* pref: UnsignedInt (optional). Defines the preference of this | pref: UnsignedInt (optional). The preference of the language in | |||
language in relation to other languages of the same contexts. | relation to other languages of the same contexts. Also see | |||
Also see Section 1.5.4. | Section 1.5.3. | |||
"preferredLanguages": { | "preferredLanguages": { | |||
"l1": { | "l1": { | |||
"language": "en", | "language": "en", | |||
"contexts": { | "contexts": { | |||
"work": true | "work": true | |||
}, | }, | |||
"pref": 1 | "pref": 1 | |||
}, | }, | |||
"l2": { | "l2": { | |||
skipping to change at page 37, line 49 ¶ | skipping to change at line 1704 ¶ | |||
"pref": 2 | "pref": 2 | |||
}, | }, | |||
"l3": { | "l3": { | |||
"language": "fr", | "language": "fr", | |||
"contexts": { | "contexts": { | |||
"private": true | "private": true | |||
} | } | |||
} | } | |||
} | } | |||
Figure 27: preferredLanguages example | Figure 28: Example for the preferredLanguages Property | |||
2.4. Calendaring and Scheduling Properties | 2.4. Calendaring and Scheduling Properties | |||
This section defines properties how to schedule calendar events with | This section defines properties for scheduling calendar events with | |||
the entity represented by this Card. | the entity represented by the Card. | |||
2.4.1. calendars | 2.4.1. calendars | |||
Type: Id[Calendar] (optional). | calendars: Id[Calendar] (optional). The calendaring resources of the | |||
entity represented by the Card, such as to look up free-busy | ||||
information. | ||||
These are resources for calendaring, such as calendars to lookup | A Calendar object has all properties of the Resource (Section 1.4.4) | |||
free-busy information for the entity represented by this Card. A | ||||
Calendar object has all properties of the Resource (Section 1.4.4) | ||||
data type, with the following additional definitions: | data type, with the following additional definitions: | |||
* The @type property value MUST be Calendar, if set. | * The @type property value MUST be "Calendar", if set. | |||
* The kind property is mandatory. Its enumerated (Section 1.7.4) | * The kind property is mandatory. Its enumerated (Section 1.7.5) | |||
values are: | values are: | |||
- calendar: the resource is a calendar that contains entries such | - calendar: The resource is a calendar that contains entries such | |||
as calendar events or tasks. | as calendar events or tasks. | |||
- freeBusy: the resource allows for free-busy lookups, for | - freeBusy: The resource allows for free-busy lookups, for | |||
example to schedule group events. | example, to schedule group events. | |||
"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" | |||
} | } | |||
} | } | |||
Figure 28: calendars example | Figure 29: Example for the calendars Property | |||
2.4.2. schedulingAddresses | 2.4.2. schedulingAddresses | |||
Type: Id[SchedulingAddress] (optional). | schedulingAddresses: Id[SchedulingAddress] (optional). The | |||
scheduling addresses by which the entity may receive calendar | ||||
scheduling invitations. | ||||
The scheduling addresses by which the entity may receive calendar | A SchedulingAddress object has the following properties: | |||
scheduling invitations. A SchedulingAddress object has the following | ||||
properties: | ||||
* @type: String. This MUST be SchedulingAddress, if set. | @type: String. The JSContact type of the object. The value MUST be | |||
"SchedulingAddress", if set. | ||||
* uri: String (mandatory). The address to use for calendar | uri: String (mandatory). The address to use for calendar scheduling | |||
scheduling with this contact. This MUST be a URI as defined in | with the contact. This MUST be a URI as defined in Section 3 of | |||
Section 3 of [RFC3986]. | [RFC3986]. | |||
* contexts: String[Boolean] (optional). The contexts in which to | contexts: String[Boolean] (optional). The contexts in which to use | |||
use this scheduling address. Also see Section 1.5.1. | the scheduling address. Also see Section 1.5.1. | |||
* pref: UnsignedInt (optional). The preference of this scheduling | pref: UnsignedInt (optional). The preference of the scheduling | |||
address in relation to other scheduling address. Also see | address in relation to other scheduling addresses. Also see | |||
Section 1.5.4. | Section 1.5.3. | |||
* label: String (optional). A custom label for the scheduling | label: String (optional). A custom label for the scheduling address. | |||
address, see Section 1.5.3. | Also see Section 1.5.2. | |||
"schedulingAddresses": { | "schedulingAddresses": { | |||
"sched1": { | "sched1": { | |||
"uri": "mailto:janedoe@example.com" | "uri": "mailto:janedoe@example.com" | |||
} | } | |||
} | } | |||
Figure 29: schedulingAddresses example | Figure 30: Example for the schedulingAddresses Property | |||
2.5. Address and Location Properties | 2.5. Address and Location Properties | |||
This section defines properties for postal addresses and geographical | This section defines properties for postal addresses and geographical | |||
locations associated with the entity represented by this Card. | locations associated with the entity represented by the Card. | |||
2.5.1. addresses | 2.5.1. addresses | |||
Type: Id[Address] (optional). | addresses: Id[Address] (optional). The addresses of the entity | |||
represented by the Card, such as postal addresses or geographic | ||||
A map of address identifiers to Address objects, containing physical | locations. | |||
locations. | ||||
2.5.1.1. Address object | 2.5.1.1. Address Object | |||
An Address object has the following properties: | An Address object has the following properties, of which at least one | |||
of components, coordinates, countryCode, full or timeZone MUST be | ||||
set: | ||||
* @type: String. This MUST be Address, if set. | @type: String. The JSContact type of the object. The value MUST be | |||
"Address", if set. | ||||
* components: AddressComponent[] (optional). The components | components: AddressComponent[] (optional). The components | |||
(Section 2.5.1.2) making up this address. This property MUST be | (Section 2.5.1.2) that make up the address. The component list | |||
set if the full property is not set, otherwise it SHOULD be set. | MUST have at least one entry that has a kind property value other | |||
The component list MUST have at least one entry having a different | than "separator". | |||
kind than separator. | ||||
Address components SHOULD be ordered such that their values joined | Address components SHOULD be ordered such that when their values | |||
as a String produce a valid full address. If so, implementations | are joined as a String, a valid full address is produced. If so, | |||
MUST set the isOrdered property value to true. | implementations MUST set the isOrdered property value to "true". | |||
If the address components are ordered, then the defaultSeparator | If the address components are ordered, then the defaultSeparator | |||
property and address components of kind separator give guidance | property and address components with the kind property value set | |||
what characters to insert between components, but implementations | to "separator" give guidance on what characters to insert between | |||
are free to choose any others. In lack of a separator, inserting | components, but implementations are free to choose any others. | |||
a single Space character in between address component values is a | When lacking a separator, inserting a single space character in | |||
good choice. | between address component values is a good choice. | |||
If instead the address components follow no particular order, then | If, instead, the address components follow no particular order, | |||
the isOrdered property value MUST be false, the components | then the isOrdered property value MUST be "false", the components | |||
property MUST NOT contain a AddressComponent of kind separator and | property MUST NOT contain an AddressComponent with the kind | |||
the defaultSeparator property MUST NOT be set. | property value set to "separator", and the defaultSeparator | |||
property MUST NOT be set. | ||||
* isOrdered: Boolean (optional, default: false). This indicates if | isOrdered: Boolean (optional; default: "false"). The indicator if | |||
the address component sequence in the components property is | the address components in the components property are ordered. | |||
ordered. | ||||
* countryCode: String (optional). The Alpha-2 country code | countryCode: String (optional). The Alpha-2 country code | |||
[ISO.3166-1.2006]. | [ISO.3166-1]. | |||
* coordinates: String (optional). A [RFC5870] "geo:" URI for the | coordinates: String (optional). A "geo:" URI [RFC5870] for the | |||
address. | address. | |||
* timeZone: String (optional). Identifies the time zone this | timeZone: String (optional). The time zone in which the address is | |||
address is located in. This MUST be a time zone name registered | located. This MUST be a time zone name registered in the IANA | |||
in the IANA Time Zone Database [IANATZ]. | Time Zone Database [IANA-TZ]. | |||
* contexts: String[Boolean] (optional). The contexts of the address | ||||
information. The boolean value MUST be true. In addition to the | ||||
common contexts (Section 1.5.1), allowed key values are: | ||||
- billing: an address to be used for billing. | contexts: String[Boolean] (optional). The contexts in which to use | |||
this address. The boolean value MUST be "true". In addition to | ||||
the common contexts (Section 1.5.1), allowed key values are: | ||||
- delivery: an address to be used for delivering physical items. | * billing: an address to be used for billing. | |||
* delivery: an address to be used for delivering physical items. | ||||
* full: String (optional). This is the full address, including | full: String (optional). The full address, including street, region, | |||
street, region or country. The purpose of this property is to | or country. The purpose of this property is to define an address, | |||
define an address, even if the individual address components are | even if the individual address components are not known. | |||
not known. If the street property is set, the full property | ||||
SHOULD NOT be set. | ||||
* defaultSeparator: String (optional). The default separator to | defaultSeparator: String (optional). The default separator to insert | |||
insert between address component values when concatenating all | between address component values when concatenating all address | |||
address component values to a single String. Also see the | component values to a single String. Also see the definition of | |||
definition of the separator kind for the AddressComponent object. | the kind property value "separator" for the AddressComponent | |||
This property MUST NOT be set if the Address isOrdered property | (Section 2.5.1.2) object. The defaultSeparator property MUST NOT | |||
value is false or if the components property is not set. | be set if the Address isOrdered property value is "false" or if | |||
the components property is not set. | ||||
* pref: UnsignedInt (optional). The preference of this address in | pref: UnsignedInt (optional). The preference of the address in | |||
relation to other addresses. Also see Section 1.5.4. | relation to other addresses. Also see Section 1.5.3. | |||
* phoneticScript: String (optional). The script used in the value | phoneticScript: String (optional). The script used in the value of | |||
of the AddressComponent phonetic property. Also see | the AddressComponent phonetic property. Also see Section 1.5.4. | |||
Section 1.5.5. | ||||
* phoneticSystem: String (optional). The phonetic system used in | phoneticSystem: String (optional). The phonetic system used in the | |||
the AddressComponent phonetic property. Also see Section 1.5.5. | AddressComponent phonetic property. Also see Section 1.5.4. | |||
The following example illustrates the use of the address property. | The following example illustrates the use of the address property for | |||
Additional examples are in Section 2.5.1.3. | "54321 Oak St, Reston, CA 20190, USA". Additional examples are shown | |||
in Section 2.5.1.3. | ||||
"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 page 41, line 46 ¶ | skipping to change at line 1885 ¶ | |||
{ "kind": "separator", "value": " " }, | { "kind": "separator", "value": " " }, | |||
{ "kind": "postcode", "value": "20190" }, | { "kind": "postcode", "value": "20190" }, | |||
{ "kind": "country", "value": "USA" } | { "kind": "country", "value": "USA" } | |||
], | ], | |||
"countryCode": "US", | "countryCode": "US", | |||
"defaultSeparator": ", ", | "defaultSeparator": ", ", | |||
"isOrdered": true | "isOrdered": true | |||
} | } | |||
} | } | |||
Figure 30: Example of the address "54321 Oak St, Reston, VA | Figure 31: Example of an Address in the USA | |||
20190, USA" | ||||
2.5.1.2. AddressComponent object | 2.5.1.2. AddressComponent Object | |||
An AddressComponent object has the following properties: | An AddressComponent object has the following properties: | |||
* @type: String. This MUST be AddressComponent, if set. | @type: String. The JSContact type of the object. The value MUST be | |||
"AddressComponent", if set. | ||||
* value: String (mandatory). The value of this address component. | ||||
* kind: String (mandatory). The kind of this address component. | ||||
The enumerated (Section 1.7.4) values are: | ||||
- room: the room or suite number or identifier. | ||||
- apartment: the extension designation, such as apartment number | value: String (mandatory). The value of the address component. | |||
or unit or box number. | ||||
- floor: the floor or level this address is located on. | kind: String (mandatory). The kind of the address component. The | |||
enumerated (Section 1.7.5) values are: | ||||
- building: the building, tower, or condominium this address is | * room: the room, suite number, or identifier. | |||
* apartment: the extension designation such as the apartment | ||||
number, unit, or box number. | ||||
* floor: the floor or level the address is located on. | ||||
* building: the building, tower, or condominium the address is | ||||
located in. | located in. | |||
* number: the street number, e.g., "123". This value is not | ||||
- number: the street number, e.g., "123". This value is not | restricted to numeric values and can include any value such as | |||
restricted to numeric values, and can include any value such as | number ranges ("112-10"), grid style ("39.2 RD"), alphanumerics | |||
number ranges ("112–10"), grid style ("39.2 RD"), alphanumerics | ("N6W23001"), or fractionals ("123 1/2"). | |||
("N6W23001") or fractionals ("123 1/2"). | * name: the street name. | |||
* block: the block name or number. | ||||
- name: the street name. | * subdistrict: the subdistrict, ward, or other subunit of a | |||
- block: the block name or number. | ||||
- subdistrict: the subdistrict, ward or other subunit of a | ||||
district. | district. | |||
* district: the district name. | ||||
- district: the district name. | * locality: the municipality, city, town, village, post town, or | |||
other locality. | ||||
- locality: the municipality, city, town, village, post-town, or | * region: the administrative area such as province, state, | |||
another locality. | prefecture, county, or canton. | |||
* postcode: the postal code, post code, ZIP code, or other short | ||||
- region: the administrative area, such as province, state, | ||||
prefecture, county, canton. | ||||
- postcode: the postal code, post code, ZIP code or other short | ||||
code associated with the address by the relevant country's | code associated with the address by the relevant country's | |||
postal system. | postal system. | |||
* country: the country name. | ||||
- country: the country name. | * direction: the cardinal direction or quadrant, e.g., "north". | |||
* landmark: the publicly known prominent feature that can | ||||
- direction: the Cardinal direction or quadrant, e.g., "North". | substitute the street name and number, e.g., "White House" or | |||
"Taj Mahal". | ||||
- landmark: the publicly known prominent feature that can | * postOfficeBox: the post office box number or identifier. | |||
substitute the street name and number, e.g., White House, Taj | * separator: a formatting separator between two ordered address | |||
Mahal. | ||||
- postOfficeBox: the post office box number or identifier. | ||||
- separator: a formatting separator between two ordered address | ||||
non-separator components. The value property of the component | non-separator components. The value property of the component | |||
includes the verbatim separator, for example a hyphen character | includes the verbatim separator, for example, a hyphen | |||
or even an empty string. This value has higher precedence than | character or even an empty string. This value has higher | |||
the defaultSeparator property of the Address. Implementations | precedence than the defaultSeparator property of the Address. | |||
MUST NOT insert two consecutive separator components, instead | Implementations MUST NOT insert two consecutive separator | |||
they SHOULD insert a single separator component with the | components; instead, they SHOULD insert a single separator | |||
combined value. This component kind MUST NOT be set if the | component with the combined value. This component kind MUST | |||
Address isOrdered property value is false. | NOT be set if the Address isOrdered property value is "false". | |||
* phonetic: String (optional). This defines how to pronounce this | phonetic: String (optional). The pronounciation of the name | |||
name component. If this property is set, then at least one of the | component. If this property is set, then at least one of the | |||
Address object phoneticSystem or phoneticScript properties MUST be | Address object phoneticSystem or phoneticScript properties MUST be | |||
set. Also see Section 1.5.5. | set. Also see Section 1.5.4. | |||
2.5.1.3. Address examples | 2.5.1.3. Additional Address Examples | |||
The following are examples of addresses, in addition to Figure 30. | The following example illustrates the use of the address property for | |||
"46, 1 Sukhumvit 51 Alley, Khlong Tan Nuea, Watthana, Bangkok 10110, | ||||
Thailand". | ||||
"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 | |||
} | } | |||
} | } | |||
Figure 31: Example of the address "46, 1 Sukhumvit 51 Alley, | Figure 32: Example of an Address in Thailand | |||
Khlong Tan Nuea, Watthana, Bangkok 10110, Thailand" | ||||
The following example illustrates the use of the address property for | ||||
"2-7-2 Marunouchi, Chiyoda-ku, Tokyo 100-8994" and its Japanese | ||||
localization (Section 2.7.1). | ||||
"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 page 44, line 42 ¶ | skipping to change at line 2007 ¶ | |||
{ "kind": "number", "value": "2" }, | { "kind": "number", "value": "2" }, | |||
{ "kind": "postcode", "value": "〒100-8994" } | { "kind": "postcode", "value": "〒100-8994" } | |||
], | ], | |||
"defaultSeparator": "", | "defaultSeparator": "", | |||
"full": "〒100-8994東京都千代田区丸ノ内2-7-2", | "full": "〒100-8994東京都千代田区丸ノ内2-7-2", | |||
"isOrdered": true | "isOrdered": true | |||
} | } | |||
} | } | |||
} | } | |||
Figure 32: Example of an address in Tokyo and its localization | Figure 33: Example of an Address in Tokyo and Its Localization in | |||
Section 2.7.1 in Japanese. | Japanese | |||
2.6. Resource Properties | 2.6. Resource Properties | |||
This section defines properties for digital resources associated with | This section defines properties for digital resources associated with | |||
the entity represented by this Card. | the entity represented by the Card. | |||
2.6.1. cryptoKeys | 2.6.1. cryptoKeys | |||
Type: Id[CryptoKey] (optional). | cryptoKeys: Id[CryptoKey] (optional). The cryptographic resources | |||
such as public keys and certificates associated with the entity | ||||
represented by the Card. | ||||
These are cryptographic resources such as public keys and | A CryptoKey object has all properties of the Resource (Section 1.4.4) | |||
certificates associated with the entity represented by this Card. A | data type, with the following additional definition: | |||
CryptoKey object has all properties of the Resource (Section 1.4.4) | ||||
data type, with the following additional definitions: | ||||
* The @type property value MUST be CryptoKey, if set. | * The @type property value MUST be "CryptoKey", if set. | |||
The following example shows how refer to an external cryptographic | The following example shows how to refer to an external cryptographic | |||
resource. | resource. | |||
"cryptoKeys": { | "cryptoKeys": { | |||
"mykey1": { | "mykey1": { | |||
"uri": "https://www.example.com/keys/jdoe.cer" | "uri": "https://www.example.com/keys/jdoe.cer" | |||
} | } | |||
} | } | |||
Figure 33: cryptoKeys example with external data | Figure 34: Example of cryptoKeys with External Data | |||
The following example shows how to embed key data in the CryptoKey. | The following example shows how to embed key data in the CryptoKey. | |||
The key data is depicted in multiple lines only for demonstration | The key data is depicted in multiple lines only for demonstration | |||
purposes. | purposes. | |||
"cryptoKeys": { | "cryptoKeys": { | |||
"mykey2": { | "mykey2": { | |||
"uri": "data:application/pgp-keys;base64,LS0tLS1CRUdJTiBSU0EgUFVCTElDIEtF | "uri": "data:application/pgp-keys;base64,LS0tLS1CRUdJTiBSU0EgUFVC | |||
WS0tLS0tCk1JSUJDZ0tDQVFFQSt4R1ovd2N6OXVnRnBQMDdOc3BvNlUxN2wwWWhGa | TElDIEtFWS0tLS0tCk1JSUJDZ0tDQVFFQSt4R1ovd2N6OXVnRnBQMDdOc | |||
UZweHhVNHBUazNMaWZ6OVIzenNJc3UKRVJ3dGE3K2ZXSWZ4T28yMDhldHQvamhza2 | 3BvNlUxN2wwWWhGaUZweHhVNHBUazNMaWZ6OVIzenNJc3UKRVJ3dGE3K2 | |||
lWb2RTRXQzUUJHaDRYQmlweVdvcEt3WjkzSEhhRFZaQUFMaS8yQQoreFRCdFdkRW8 | ZXSWZ4T28yMDhldHQvamhza2lWb2RTRXQzUUJHaDRYQmlweVdvcEt3Wjk | |||
3WEdVdWpLRHZDMi9hWkt1a2ZqcE9pVUk4QWhMQWZqbWxjRC9VWjFRUGgwbUhzZ2xS | zSEhhRFZaQUFMaS8yQQoreFRCdFdkRW83WEdVdWpLRHZDMi9hWkt1a2Zq | |||
TkNtcEN3Cm13U1hBOVZObWh6K1BpQitEbWw0V1duS1cvVkhvMnVqVFh4cTcrZWZNV | cE9pVUk4QWhMQWZqbWxjRC9VWjFRUGgwbUhzZ2xSTkNtcEN3Cm13U1hBO | |||
TRIMmZueTNTZTNLWU9zRlBGR1oxVE4KUVNZbEZ1U2hXckhQdGlMbVVkUG9QNkNWMm | VZObWh6K1BpQitEbWw0V1duS1cvVkhvMnVqVFh4cTcrZWZNVTRIMmZueT | |||
1NTDF0aytsN0RJSXFYclFoTFVLREFDZU01cm9NeDBrTGhVV0I4UAorMHVqMUNObE5 | NTZTNLWU9zRlBGR1oxVE4KUVNZbEZ1U2hXckhQdGlMbVVkUG9QNkNWMm1 | |||
ONEpSWmxDN3hGZnFpTWJGUlU5WjRONll3SURBUUFCCi0tLS0tRU5EIFJTQSBQVUJM | NTDF0aytsN0RJSXFYclFoTFVLREFDZU01cm9NeDBrTGhVV0I4UAorMHVq | |||
SUMgS0VZLS0tLS0K" | MUNObE5ONEpSWmxDN3hGZnFpTWJGUlU5WjRONll3SURBUUFCCi0tLS0tR | |||
U5EIFJTQSBQVUJMSUMgS0VZLS0tLS0K" | ||||
} | } | |||
} | } | |||
Figure 34: cryptoKeys example with embedded data | Figure 35: Example of cryptoKeys with Embedded Data | |||
2.6.2. directories | 2.6.2. directories | |||
Type: Id[Directory] (optional). | directories: Id[Directory] (optional). The directories containing | |||
information about the entitity represented by the Card. | ||||
These are directory service resources, such as entries in a directory | A Directory object has all properties of the Resource (Section 1.4.4) | |||
or organizational directories for lookup. A Directory object has all | data type, with the following additional definitions: | |||
properties of the Resource (Section 1.4.4) data type, with the | ||||
following additional definitions: | ||||
* The @type property value MUST be Directory, if set. | * The @type property value MUST be "Directory", if set. | |||
* The kind property is mandatory. Its enumerated (Section 1.7.4) | * The kind property is mandatory. Its enumerated (Section 1.7.5) | |||
values are: | values are: | |||
- directory: the resource is a directory service where the entity | - directory: the resource is a directory service that the entity | |||
represented by this Card is part of. This typically is an | represented by the Card is a part of. This typically is an | |||
organizational directory that also contains associated | organizational directory that also contains associated | |||
entities, e.g., co-workers and management in a company | entities, e.g., co-workers and management in a company | |||
directory. | directory. | |||
- entry: the resource is a directory entry of the entity | - entry: the resource is a directory entry of the entity | |||
represented by this Card. In contrast to the directory type, | represented by the Card. In contrast to the "directory" type, | |||
this is the specific URI for the entity _within_ a directory. | this is the specific URI for the entity _within_ a directory. | |||
In addition, the Directory object has the following property: | In addition, the Directory object has the following property: | |||
* listAs: UnsignedInt (optional). This defines the position of this | listAs: UnsignedInt (optional). The position of the directory | |||
directory resource in the list of all Directory objects having the | resource in the list of all Directory objects having the same kind | |||
same kind in this Card. If set, the listAs value MUST be higher | property value in the Card. If set, the listAs value MUST be | |||
than zero. Multiple directory resources MAY have the same listAs | higher than zero. Multiple directory resources MAY have the same | |||
property value, or none. Sorting such entries is implementation- | listAs property value or none. Sorting such same-valued entries | |||
specific. | is implementation-specific. | |||
"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 | |||
} | } | |||
Figure 35: directories example | Figure 36: Example for the directories Property | |||
2.6.3. links | 2.6.3. links | |||
Type: Id[Link] (optional). | links: Id[Link] (optional). The links to resources that do not fit | |||
any of the other use-case-specific resource properties. | ||||
These are links to resources that do not fit any of the other use- | A Link object has all properties of the Resource (Section 1.4.4) data | |||
case specific resource properties. A Link object has all properties | type, with the following additional definitions: | |||
of the Resource (Section 1.4.4) data type, with the following | ||||
additional definitions: | ||||
* The @type property value MUST be Link, if set. | * The @type property value MUST be "Link", if set. | |||
* The kind property is optional. Its enumerated (Section 1.7.4) | * The kind property is optional. Its enumerated (Section 1.7.5) | |||
values are: | values are: | |||
- contact: the resource is a URI by which the entity represented | - contact: the resource is a URI by which the entity represented | |||
by this Card may be contacted, including web forms or other | by the Card may be contacted; this includes web forms or other | |||
media that require user interaction. | media that require user interaction. | |||
"links": { | "links": { | |||
"link3": { | "link3": { | |||
"kind": "contact", | "kind": "contact", | |||
"uri": "mailto:contact@example.com", | "uri": "mailto:contact@example.com", | |||
"pref": 1 | "pref": 1 | |||
} | } | |||
} | } | |||
Figure 36: links example | Figure 37: Example for the links Property | |||
2.6.4. media | 2.6.4. media | |||
Type: Id[Media] (optional). | media: Id[Media] (optional). The media resources such as | |||
photographs, avatars, or sounds that are associated with the | ||||
entity represented by the Card. | ||||
These are media resources such as photographs, avatars, or sounds | A Media object has all properties of the Resource (Section 1.4.4) | |||
associated with the entity represented by this Card. A Media object | data type, with the following additional definitions: | |||
has all properties of the Resource (Section 1.4.4) data type, with | ||||
the following additional definitions: | ||||
* The @type property value MUST be Media, if set. | * The @type property value MUST be "Media", if set. | |||
* The kind property is mandatory. Its enumerated (Section 1.7.4) | * The kind property is mandatory. Its enumerated (Section 1.7.5) | |||
values are: | values are: | |||
- photo: the resource is a photograph or avatar. | - photo: the resource is a photograph or avatar. | |||
- sound: the resource is audio media, e.g., to specify the proper | - sound: the resource is audio media, e.g., to specify the proper | |||
pronunciation of the name property contents. | pronunciation of the name property contents. | |||
- logo: the resource is a graphic image or logo associated with | - logo: the resource is a graphic image or logo associated with | |||
the entity represented by this Card. | the entity represented by the Card. | |||
"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" | |||
}, | }, | |||
"res1": { | "res1": { | |||
"kind": "photo", | "kind": "photo", | |||
"uri": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAASABIAAD/4..." | "uri": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAASABIAAD/4..." | |||
} | } | |||
} | } | |||
Figure 37: media example | Figure 38: Example for the media Property | |||
2.7. Multilingual Properties | 2.7. Multilingual Properties | |||
This section defines properties how to localize the content of this | This section defines properties for localizing the content of the | |||
Card in human languages. | Card in human languages. | |||
2.7.1. localizations | 2.7.1. localizations | |||
Type: String[PatchObject] (optional). | localizations: String[PatchObject] (optional). The property values | |||
localized to languages other than the main language | ||||
This localizes property values in this Card to languages other than | (Section 2.1.5) of the Card. Localizations provide language- | |||
the main language. Localizations provide language-specific | specific alternatives for existing property values and SHOULD NOT | |||
alternatives for existing property values and SHOULD NOT add new | add new properties. The keys in the localizations property value | |||
properties. | are language tags [RFC5646]; the values are of type PatchObject | |||
and localize the Card in that language tag. The paths in the | ||||
The keys in the localizations property object are language tags | PatchObject are relative to the Card that includes the | |||
[RFC5646]. The values are patch objects which localize the Card in | localizations property. A patch MUST NOT target the localizations | |||
the respective language tag. The paths in the PatchObject are | property. | |||
relative to the Card that includes the localizations property. A | ||||
patch MUST NOT target the localizations property. | ||||
Conceptually, a Card is localized as follows: | Conceptually, a Card is localized as follows: | |||
* Determine the language tag in which this Card should be localized | * Determine the language tag in which the Card should be localized. | |||
in. | ||||
* If the localizations property includes a key for that language, | * If the localizations property includes a key for that language, | |||
obtain the PatchObject value. If there is no such key, stop. | obtain the PatchObject value. If there is no such key, stop. | |||
* Create a copy of the Card, but do not copy the localizations | * Create a copy of the Card, but do not copy the localizations | |||
property. | property. | |||
* Apply all patches in the PatchObject to the copy of the Card. | * Apply all patches in the PatchObject to the copy of the Card. | |||
* Optionally, set the language property in the copy of the Card. | * Optionally, set the language property in the copy of the Card. | |||
* Use the patched copy of the Card as the localized variant of the | * Use the patched copy of the Card as the localized variant of the | |||
original Card. | original Card. | |||
A patch in the PatchObject may contain any value type. Its value | A patch in the PatchObject may contain any value type. Its value | |||
MUST be a valid value according to the definition of the patched | MUST be a valid value according to the definition of the patched | |||
property. | property. | |||
Figure 38 localizes the name property by completely replacing its | Figure 39 localizes the name property by completely replacing its | |||
contents in Ukrainian language with Cyrillic script. | contents in Ukrainian language with Cyrillic script. | |||
{ | { | |||
"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" } | |||
] | ] | |||
skipping to change at page 49, line 42 ¶ | skipping to change at line 2235 ¶ | |||
{ "kind": "title", "value": "г-н" }, | { "kind": "title", "value": "г-н" }, | |||
{ "kind": "given", "value": "Иван" }, | { "kind": "given", "value": "Иван" }, | |||
{ "kind": "given2", "value": "Петрович" }, | { "kind": "given2", "value": "Петрович" }, | |||
{ "kind": "surname", "value": "Васильев" } | { "kind": "surname", "value": "Васильев" } | |||
] | ] | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
Figure 38: Example for localizing a top-level property | Figure 39: Example of Localizing a Top-Level Property | |||
Figure 39 localizes the title name by patching _inside_ the titles | Figure 40 localizes the title name by patching _inside_ the titles | |||
property. All properties but the name property in the Title object | property. All properties, except the name property in the Title | |||
are left as-is. | object, are left as is. | |||
"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": "escritor" | |||
} | } | |||
} | } | |||
Figure 39: Example for localizing a nested property | Figure 40: Example of Localizing a Nested Property | |||
2.8. Additional Properties | 2.8. Additional Properties | |||
This section defines properties for which none of the previous | This section defines properties for which none of the previous | |||
sections are appropriate. | sections are appropriate. | |||
2.8.1. anniversaries | 2.8.1. anniversaries | |||
Type : Id[Anniversary] (optional). | anniversaries: Id[Anniversary] (optional). The memorable dates and | |||
events for the entity represented by the Card. | ||||
These are memorable dates and events for the entity represented by | ||||
this Card. An Anniversary object has the following properties: | ||||
* @type: String. This MUST be Anniversary, if set. | ||||
* kind: String (mandatory). Specifies the kind of the anniversary. | ||||
The enumerated (Section 1.7.4) values are: | ||||
- birth: a birthday anniversary | An Anniversary object has the following properties: | |||
- death: a deathday anniversary | @type: String. The JSContact type of the object. The value MUST be | |||
"Anniversary", if set. | ||||
- wedding: a wedding day anniversary | kind: String (mandatory). The kind of anniversary. The enumerated | |||
(Section 1.7.5) values are: | ||||
* date: PartialDate|Timestamp (mandatory, defaultType: PartialDate). | * birth: a birthday anniversary | |||
* death: a deathday anniversary | ||||
* wedding: a wedding day anniversary | ||||
The date of this anniversary in the Gregorian calendar. This MUST | date: PartialDate|Timestamp (mandatory; defaultType: PartialDate). T | |||
either be a whole or partial calendar date or a complete UTC | he date of the anniversary in the Gregorian calendar. This MUST | |||
be either a whole or partial calendar date or a complete UTC | ||||
timestamp (see the definition of the Timestamp and PartialDate | timestamp (see the definition of the Timestamp and PartialDate | |||
object types below). | object types below). | |||
* place: Address (optional). An address associated with this | place: Address (optional). An address associated with this | |||
anniversary, e.g., the place of birth or death. | anniversary, e.g., the place of birth or death. | |||
A PartialDate object represents a complete or partial calendar date | A PartialDate object represents a complete or partial calendar date | |||
in the Gregorian calendar. It represents either a complete date, or | in the Gregorian calendar. It represents a complete date, a year, a | |||
a year, or a month in a year, or a day in a month. It has the | month in a year, or a day in a month. It has the following | |||
following properties, of which at least year or month and day MUST be | properties: | |||
set: | ||||
* @type: String. This MUST be PartialDate, if set. | @type: String. The JSContact type of the object. The value MUST be | |||
"PartialDate", if set. | ||||
* year: UnsignedInt (optional). This is the calendar year. | year: UnsignedInt (optional). The calendar year. | |||
* month: UnsignedInt (optional). This is the calendar month, | month: UnsignedInt (optional). The calendar month, represented as | |||
represented as the integers 1 <= month <= 12. If this property is | the integers 1 <= month <= 12. If this property is set, then | |||
set then either year or day MUST be set. | either the year or the day property MUST be set. | |||
* day: UnsignedInt (optional). This is the calendar month day, | day: UnsignedInt (optional). The calendar month day, represented as | |||
represented as the integers 1 <= day <= 31, depending on the | the integers 1 <= day <= 31, depending on the validity within the | |||
validity within the month and year. If this property is set then | month and year. If this property is set, then the month property | |||
month MUST be set. | MUST be set. | |||
* calendarScale: String (optional). This is the calendar system in | calendarScale: String (optional). The calendar system in which this | |||
which this date occurs, in lowercase. This MUST be either a CLDR- | date occurs, in lowercase. This MUST be either a calendar system | |||
registered calendar system name [RFC7529] or a vendor-specific | name registered as a Common Locale Data Repository (CLDR) | |||
value. The year, month and day still MUST be represented in the | [RFC7529] or a vendor-specific value. The year, month, and day | |||
Gregorian calendar. Note that the year property might be required | still MUST be represented in the Gregorian calendar. Note that | |||
to convert the date between the Gregorian calendar and the | the year property might be required to convert the date between | |||
respective calendar system. | the Gregorian calendar and the respective calendar system. | |||
A Timestamp object has the following properties: | A Timestamp object has the following properties: | |||
* @type: String. This MUST be Timestamp, if set. | @type: String. The JSContact type of the object. The value MUST be | |||
"Timestamp", if set. | ||||
* utc: UTCDateTime (mandatory). Specifies the point in time in UTC | utc: UTCDateTime (mandatory). The point in time in UTC time. | |||
time. | ||||
Figure 40 illustrates anniversaries with partial dates and timestamp. | Figure 41 illustrates anniversaries with partial dates and a | |||
Note how the @type property is set for the Timestamp object value | timestamp. Note how the @type property is set for the Timestamp | |||
according to the rules defined Section 1.3.4. | object value according to the rules defined in Section 1.3.4. | |||
"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 page 52, line 26 ¶ | skipping to change at line 2348 ¶ | |||
"date": { | "date": { | |||
"@type": "Timestamp", | "@type": "Timestamp", | |||
"utc": "2019-10-15T23:10:00Z" | "utc": "2019-10-15T23:10:00Z" | |||
}, | }, | |||
"place": { | "place": { | |||
"full": "4445 Tree Street\nNew England, ND 58647\nUSA" | "full": "4445 Tree Street\nNew England, ND 58647\nUSA" | |||
} | } | |||
} | } | |||
} | } | |||
Figure 40: anniversaries example | Figure 41: Example for the anniversaries Property | |||
2.8.2. keywords | 2.8.2. keywords | |||
Type: String[Boolean] (optional). A set of free-text keywords, also | keywords: String[Boolean] (optional). The set of free-text keywords, | |||
known as _tags_. The set is represented as an object, with each key | also known as _tags_. Each key in the set is a keyword, each | |||
being a keyword. The boolean value MUST be true. | boolean value MUST be "true". | |||
"keywords": { | "keywords": { | |||
"internet": true, | "internet": true, | |||
"IETF": true | "IETF": true | |||
} | } | |||
Figure 41: keywords example | Figure 42: Example for the keywords Property | |||
2.8.3. notes | 2.8.3. notes | |||
Type: Id[Note] (optional). | notes: Id[Note] (optional). The free-text notes that are associated | |||
with the Card. | ||||
Free-text notes associated with this Card. A Note object has the | A Note object has the following properties: | |||
following properties: | ||||
* @type: String. This MUST be Note, if set. | @type: String. The JSContact type of the object. The value MUST be | |||
"Note", if set. | ||||
* note: String (mandatory). The free text value of this note. | note: String (mandatory). The free-text value of this note. | |||
* created: UTCDateTime (optional). The date and time when this note | created: UTCDateTime (optional). The date and time when this note | |||
was created. | was created. | |||
* author: Author (optional). The author of this note. | author: Author (optional). The author of this note. | |||
An Author object has the following properties, of which at least one | An Author object has the following properties, of which at least one | |||
other than @type MUST be set: | property other than @type MUST be set: | |||
* @type: String. This MUST be Author, if set. | @type: String. The JSContact type of the object. The value MUST be | |||
"Author", if set. | ||||
* name: String (optional). The name of this author. | name: String (optional). The name of this author. | |||
* uri: String (optional). A URI value that identifies the author. | uri: String (optional). The URI value that identifies the author. | |||
"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" | |||
} | } | |||
} | } | |||
} | } | |||
Figure 42: notes example | Figure 43: Example for the notes Property | |||
2.8.4. personalInfo | 2.8.4. personalInfo | |||
Type: Id[PersonalInfo] (optional). | personalInfo: Id[PersonalInfo] (optional). The personal information | |||
of the entity represented by the Card. | ||||
Defines personal information about the entity represented by this | A PersonalInfo object has the following properties: | |||
Card. A PersonalInfo object has the following properties: | ||||
* @type: String. This MUST be PersonalInfo, if set. | @type: String. The JSContact type of the object. The value MUST be | |||
"PersonalInfo", if set. | ||||
* kind: String (mandatory). Specifies the kind of this personal | kind: String (mandatory). The kind of personal information. The | |||
information. The enumerated (Section 1.7.4) values are: | enumerated (Section 1.7.5) values are: | |||
- expertise: a field of expertise or credential | * expertise: a field of expertise or a credential | |||
- hobby: a hobby | * hobby: a hobby | |||
- interest: an interest | * interest: an interest | |||
* value: String (mandatory). The actual information. | value: String (mandatory). The actual information. | |||
* level: String (optional). Indicates the level of expertise, or | level: String (optional). The level of expertise or engagement in | |||
engagement in hobby or interest. The enumerated (Section 1.7.4) | hobby or interest. The enumerated (Section 1.7.5) values are: | |||
values are: | ||||
- high | * high | |||
- medium | * medium | |||
- low | * low | |||
* listAs: UnsignedInt (optional). This defines the position of this | listAs: UnsignedInt (optional). The position of the personal | |||
personal information in the list of all PersonalInfo objects | information in the list of all PersonalInfo objects that have the | |||
having the same kind in this Card. If set, the listAs value MUST | same kind property value in the Card. If set, the listAs value | |||
be higher than zero. Multiple personal information entries MAY | MUST be higher than zero. Multiple personal information entries | |||
have the same listAs property value, or none. Sorting such | MAY have the same listAs property value or none. Sorting such | |||
entries is implementation-specific. | same-valued entries is implementation-specific. | |||
* label: String (optional). A custom label. See Section 1.5.3. | label: String (optional). A custom label. See Section 1.5.2. | |||
"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", | |||
"level": "high" | "level": "high" | |||
}, | }, | |||
"pi6": { | "pi6": { | |||
"kind": "interest", | "kind": "interest", | |||
"value": "r&b music", | "value": "r&b music", | |||
"level": "medium" | "level": "medium" | |||
} | } | |||
} | } | |||
Figure 43: personalInfo example | Figure 44: Example for the personalInfo Property | |||
3. IANA Considerations | 3. IANA Considerations | |||
3.1. Media Type Registration | 3.1. Media Type Registration | |||
[I-D.ietf-calext-jscontact] defines a media type for use with | This document defines a media type for use with JSContact data | |||
JSContact data formatted in JSON. | formatted in JSON. | |||
Type name: | Type name: application | |||
application | ||||
Subtype name: | Subtype name: jscontact+json | |||
jscontact+json | ||||
Required parameters: | Required parameters: None | |||
None | ||||
Optional parameters: | Optional parameters: version | |||
version This parameter conveys the version of the JSContact data | ||||
in the body part. It MUST NOT occur more than once. If this | ||||
parameter is set, then the values of all JSContact version | ||||
(Table 2) properties in the body part MUST match the parameter | ||||
value. | ||||
Encoding considerations: | This parameter conveys the version of the JSContact data in the | |||
This is the same as the encoding considerations of application/ | body part. It MUST NOT occur more than once. If this parameter | |||
json, as specified in Section 11 of [RFC8259]. | is set, then the values of all JSContact version (Table 2) | |||
properties in the body part MUST match the parameter value. | ||||
Security considerations: | Encoding considerations: This is the same as the encoding | |||
See Section 4 of [I-D.ietf-calext-jscontact]. | considerations of application/json, as specified in Section 11 of | |||
[RFC8259]. | ||||
Interoperability considerations: | Security considerations: See Section 4 of RFC 9553. | |||
While JSContact is designed to avoid ambiguities as much as | ||||
possible, 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 objects may be | ||||
determined differently by different applications, for example, | ||||
where URL values differ in case between the two objects. | ||||
Published specification: | Interoperability considerations: While JSContact is designed to | |||
TBD | avoid ambiguities as much as possible, 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 objects may be determined differently by different | ||||
applications, for example, where URL values differ in case between | ||||
the two objects. | ||||
Applications that use this media type: | Published specification: RFC 9553 | |||
Applications that currently make use of the text/vcard media type | ||||
can use this as an alternative. | ||||
Fragment identifier considerations: | Applications that use this media type: Applications that currently | |||
A JSON Pointer fragment identifier may be used, as defined in | make use of the text/vCard media type can use this as an | |||
[RFC6901], Section 6. | alternative. | |||
Fragment identifier considerations: A JSON Pointer fragment | ||||
identifier may be used, as defined in [RFC6901], Section 6. | ||||
Additional information: | Additional information: | |||
Magic number(s): N/A | ||||
Magic number(s): N/A | ||||
File extensions(s): N/A | File extensions(s): N/A | |||
Macintosh file type code(s): N/A | Macintosh file type code(s): N/A | |||
Person & email address to contact for further information: | Person & email address to contact for further information: | |||
calsify@ietf.org | calsify@ietf.org | |||
Intended usage: | Intended usage: COMMON | |||
COMMON | ||||
Restrictions on usage: | Restrictions on usage: N/A | |||
N/A | ||||
Author: | Author: See the "Authors' Addresses" section of RFC 9553. | |||
See the "Author's Address" section of [I-D.ietf-calext-jscontact]. | ||||
Change controller: | Change controller: IETF | |||
IETF | ||||
3.2. Creation of the "JSContact" Registry Group | 3.2. Creation of the JSContact Registry Group | |||
IANA is asked to create the "JSContact" registry group. The new | IANA has created the "JSContact" registry group. The new registry | |||
registry definitions in the following sections all belong to that | definitions in the following sections all belong to that group. | |||
group. | ||||
3.3. Registry Policy and Change Procedures | 3.3. Registry Policy and Change Procedures | |||
Registry assignments that introduce backwards-incompatible | Registry assignments that introduce backwards-incompatible | |||
(Section 1.9) changes require the JSContact major version to change, | (Section 1.9) changes require the JSContact major version to change; | |||
other changes only require to change the minor version. The registry | other changes only require a change to the minor version. The | |||
policy for assignments that require the JSContact major version to | registry policy for assignments that require the JSContact major | |||
change is Standards Action ([RFC8126], Section 4.9). The registry | version to change is Standards Action ([RFC8126], Section 4.9). The | |||
policy for other assignments is Specification Required ([RFC8126], | registry policy for other assignments is Specification Required | |||
Section 4.6). | ([RFC8126], Section 4.6). | |||
The Designated Expert decides if a major or minor version change is | The designated expert (DE) decides if a major or minor version change | |||
required and assigns the new version to the Version Registry | is required and assigns the new version to the "JSContact Version" | |||
(Section 3.4). Version numbers increment by one, and a major version | registry (Section 3.4). Version numbers increment by one, and a | |||
change resets the minor version to zero. An assignment may apply | major version change resets the minor version to zero. An assignment | |||
multiple changes and to more than one registry at once, in which case | may apply multiple changes and to more than one registry at once, in | |||
a single version change is sufficient. If the registry policy is | which case a single version change is sufficient. If the registry | |||
Specification Required, then the Designated Expert may decide that it | policy is Specification Required, then the DE may decide that it is | |||
is enough to document the new assignment in the Description item of | enough to document the new assignment in the Description item of the | |||
the respective registry. | respective registry. | |||
A registration MUST have an intended usage of common, reserved, or | A registration MUST have an intended usage of "common", "reserved", | |||
obsolete. | or "obsolete". | |||
* A common usage denotes an item with shared semantics and syntax | * A "common" usage denotes an item with shared semantics and syntax | |||
across systems. Up-to-date systems MUST expect such items to | across systems. Up-to-date systems MUST expect such items to | |||
occur in JSContact data. | occur in JSContact data. | |||
* A reserved usage reserves an item in the registry without | * A "reserved" usage reserves an item in the registry without | |||
assigning semantics to avoid name collisions with future | assigning semantics to avoid name collisions with future | |||
extensions or protocol use. | extensions or protocol use. Implementations MUST NOT expect or | |||
add items with such names outside the protocols or extensions that | ||||
use them; otherwise, any such JSContact data is invalid. | ||||
* An obsolete usage denotes an item that is no longer expected to be | * An "obsolete" usage denotes an item that is no longer expected to | |||
added by up-to-date systems. A new assignment has probably been | be added by up-to-date systems. A new assignment has probably | |||
defined covering the obsolete item's semantics. | been defined, covering the obsolete item's semantics. | |||
Implementations MUST expect such items to occur in JSContact data | ||||
up to the "Until Version" registry field, inclusively. They MUST | ||||
NOT add such items for any version after which the item got | ||||
obsolete; otherwise, any such JSContact data is invalid. | ||||
The intended usage of registry items may change between versions, but | ||||
the DE must carefully consider the impact on existing implementations | ||||
and standards before doing so. | ||||
The registration procedure is not a formal standards process but | The registration procedure is not a formal standards process but | |||
rather an administrative procedure intended to allow community | rather an administrative procedure intended to allow community | |||
comment and check whether it is coherent without excessive time | comments and to check whether it is coherent without excessive time | |||
delay. It is designed to encourage vendors to document and register | delay. It is designed to encourage vendors to document and register | |||
new items they add for use cases not covered by the original | new items they add for use cases not covered by the original | |||
specification, leading to increased interoperability. | specification, leading to increased interoperability. | |||
3.3.1. Preliminary Community Review | 3.3.1. Preliminary Community Review | |||
Notice of a potential new registration MUST be sent to the Calext | Notice of a potential new registration MUST be sent to the Calext WG | |||
mailing list <calsify@ietf.org> for review. This mailing list is | mailing list <calsify@ietf.org> for review. This mailing list is | |||
appropriate to solicit community feedback on a proposed registry | appropriate for soliciting community feedback on a proposed registry | |||
assignment. | assignment. | |||
The intent of the public posting to this list is to solicit comments | The intent of the public posting to this list is to solicit comments | |||
and feedback on the choice of the item name or value, the unambiguity | and feedback on the choice of the item name or value, the unambiguity | |||
of its description, and a review of any interoperability or security | of its description, and a review of any interoperability or security | |||
considerations. The submitter may submit a revised registration | considerations. The submitter may submit a revised registration | |||
proposal or abandon the registration completely at any time. | proposal or abandon the registration completely at any time. | |||
3.3.2. Submit Request to IANA | 3.3.2. Submit Request to IANA | |||
Registration requests can be sent to <iana@iana.org>. | Registration requests can be sent to IANA <iana@iana.org>. | |||
3.3.3. Designated Expert Review | 3.3.3. Designated Expert Review | |||
The primary concern of the designated expert (DE) is preventing name | The primary concern of the DE is preventing name collisions and | |||
collisions and encouraging the submitter to document security and | encouraging the submitter to document security and privacy | |||
privacy considerations. | considerations. | |||
A new type name, property name or enumerated value MUST NOT differ | A new type name, property name, or enumerated value MUST NOT differ | |||
only in case from an already registered name or value. | only in case from an already-registered name or value. | |||
For a common-use registration, the DE is expected to confirm that | For a common-use registration, the DE is expected to confirm that | |||
suitable documentation is available to ensure interoperability. The | suitable documentation is available to ensure interoperability. The | |||
DE should also verify that the new assignment does not conflict with | DE should also verify that the new assignment does not conflict with | |||
work that is active or already published within the IETF. | work that is active or already published within the IETF. | |||
The DE will either approve or deny the registration request and | The DE will either approve or deny the registration request and | |||
publish a notice of the decision to the Calext WG mailing list or its | publish a notice of the decision to the Calext WG mailing list or its | |||
successor, as well as inform IANA. A denial notice must be justified | successor, as well as inform IANA. A denial notice must be justified | |||
by an explanation, and, in the cases where it is possible, concrete | by an explanation, and in the cases where it is possible, concrete | |||
suggestions on how the request can be modified to become acceptable | suggestions on how the request can be modified to become acceptable | |||
should be provided. | should be provided. | |||
3.3.4. Change Procedures | 3.3.4. Change Procedures | |||
Once a JSContact registry group item has been published by IANA, the | Once a JSContact registry group item has been published by IANA, the | |||
change controller may request a change to its definition. The same | Change Controller may request a change to its definition. The same | |||
procedure that would be appropriate for the original registration | procedure that would be appropriate for the original registration | |||
request is used to process a change request. | request is used to process a change request. | |||
JSContact registrations dot not get deleted; instead, items that are | JSContact registrations do not get deleted; instead, items that are | |||
no longer believed appropriate for use are declared obsolete by a | no longer believed appropriate for use are declared obsolete by a | |||
change to their "intended usage" field; such items will be clearly | change to their "Intended Usage" field; such items will be clearly | |||
marked in the IANA registry. | marked in the IANA registry. | |||
Significant changes to a JSContact registry item's definition should | Significant changes to a JSContact registry item's definition should | |||
be requested only when there are serious omissions or errors in the | be requested only when there are serious omissions or errors in the | |||
published specification, as such changes may cause interoperability | published specification, as such changes may cause interoperability | |||
issues. When review is required, a change request may be denied if | issues. When review is required, a change request may be denied if | |||
it renders entities that were valid under the previous definition | it renders entities that were valid under the previous definition | |||
invalid under the new definition. | invalid under the new definition. | |||
3.4. Creation of the "JSContact Version" Registry | 3.4. Creation of the JSContact Version Registry | |||
IANA is asked to create the "JSContact Version" registry. The | IANA has created the "JSContact Version" registry. The purpose of | |||
purpose of this new registry is to define the allowed value range of | this new registry is to define the allowed value range of JSContact | |||
JSContact major and minor version numbers. | major and minor version numbers. | |||
The registry entries sort numerically ascending by the "Major | The registry entries sort numerically in ascending order by the | |||
Version" column. | "Major Version" column, entries with equal "Major Version" sort | |||
numerically in ascending order by the "Minor Version" column. | ||||
The registry process is outlined in Section 3.3. | The registry process is outlined in Section 3.3. | |||
3.4.1. "JSContact Version" Registry Template | 3.4.1. JSContact Version Registry Template | |||
Major Version: This is the numeric value of a JSContact major | Major Version: The numeric value of a JSContact major version | |||
version number. It MUST be a positive integer. | number. It MUST be a positive integer. | |||
Highest Minor Version: This is the maximum numeric value of a | Highest Minor Version: The maximum numeric value of a JSContact | |||
JSContact minor version for the given major version. It MUST be | minor version for the given major version. It MUST be zero or a | |||
zero or a positive integer. All numbers less than or equal this | positive integer. All numbers less than or equal to this value | |||
value are valid minor version values for the given major version. | are valid minor version values for the given major version. | |||
3.4.2. Initial Contents for the "JSContact Version" Registry | 3.4.2. Initial Contents of the JSContact Version Registry | |||
The following table lists the initial valid major and minor version | The following table lists the initial valid major and minor version | |||
number ranges. | number ranges. | |||
+===============+=======================+ | +===============+=======================+===========+ | |||
| Major Version | Highest Minor Version | | | Major Version | Highest Minor Version | Reference | | |||
+===============+=======================+ | +===============+=======================+===========+ | |||
| 1 | 0 | | | 1 | 0 | RFC 9553 | | |||
+---------------+-----------------------+ | +---------------+-----------------------+-----------+ | |||
Table 1: JSContact Versions | Table 1: JSContact Version Registry | |||
3.5. Creation of the "JSContact Properties" Registry | 3.5. Creation of the JSContact Properties Registry | |||
IANA is asked to create the "JSContact Properties" registry. The | IANA has created the "JSContact Properties" registry. The purpose of | |||
purpose of this new registry is to allow interoperability of | this new registry is to allow interoperability of extensions to | |||
extensions to JSContact objects | JSContact objects. | |||
The registry entries sort alphabetically ascending by the "Property | The registry entries sort alphabetically in ascending order by the | |||
Name" column first, "Property Context" second, "Since Version" third. | following columns: "Property Name" first, "Property Context" second, | |||
Equal entries sort in any order. | and "Since Version" third. Equal entries sort in any order. | |||
The registry process for a new property is outlined in Section 3.3. | The registry process for a new property is outlined in Section 3.3. | |||
3.5.1. "JSContact Properties" Registry Template | 3.5.1. JSContact Properties Registry Template | |||
Property Name: This is the name of the property. The property name | Property Name: The name of the property. The property name MUST NOT | |||
MUST NOT already be registered for any of the object types listed | already be registered for any of the object types listed in the | |||
in the "Property Context" field of this registration. Other | "Property Context" field of this registration. Other object types | |||
object types MAY already have registered a different property with | MAY have already registered a different property with the same | |||
the same name; however, the same name MUST only be used when the | name; however, the same name MUST only be used when the semantics | |||
semantics are analogous. | are analogous. | |||
Property Type: This is the type of this property, using type | Property Type: For properties with intended usage other than | |||
signatures, as specified in Section 1.3.2. The property type MUST | "reserved", this is the type of this property, using type | |||
be registered in the "JSContact Types" registry. | signatures as specified in Section 1.3.2. The property type MUST | |||
be registered in the "JSContact Types" registry. For reserved | ||||
property names, the value MUST be the verbatim string "not | ||||
applicable". | ||||
Property Context: This is a comma-separated list of JSContact object | Property Context: A comma-separated list of JSContact object types | |||
types (Section 3.6.2) that contain this property. | (Section 3.6.2) that contain the property. For reserved property | |||
names, the value MAY be the verbatim string "not applicable". | ||||
Reference or Description: This is a brief description or RFC number | Intended Usage: May be "common", "reserved", or "obsolete". | |||
and section reference where the property is specified (omitted for | ||||
"reserved" property names). This must include references to all | ||||
RFC documents where this property is introduced or updated. | ||||
Intended Usage: This may be "common", "reserved", or "obsolete". | Since Version: The JSContact version on which the property | |||
definition is based. The version MUST be one of the allowed | ||||
values of the version property in the "JSContact Version" registry | ||||
(see Table 1). | ||||
Since Version: This defines the JSContact version on which this | Until Version: The JSContact version after which the property was | |||
property definition is based on. The version MUST be one of the | obsoleted; therefore, it MUST NOT be used in later versions. The | |||
allowed values of the version property in the JSContact Enum Value | Until Version value either MUST NOT be set or MUST be one of the | |||
allowed values of the version property in the "JSContact Version" | ||||
registry (see Table 1). | registry (see Table 1). | |||
Until Version: This defines the JSContact version after which this | Change Controller: Person or entity responsible for requesting a | |||
property got obsoleted and MUST NOT be used in later versions. | change to the entry's definition ("IETF" for RFCs from the IETF | |||
The Until Version value either MUST NOT be set, or be one of the | stream). | |||
allowed values of the version property in the JSContact Enum Value | ||||
registry (see Table 1). | ||||
Change Controller: This is who may request a change to this entry's | Reference or Description: A brief description or RFC number and | |||
definition (IETF for RFCs from the IETF stream). | section reference where the property is specified. This must | |||
include references to all RFC documents where this property is | ||||
introduced or updated. For reserved property names, the reference | ||||
or description MAY be omitted. | ||||
3.5.2. Initial Contents for the "JSContact Properties" Registry | 3.5.2. Initial Contents of the JSContact Properties Registry | |||
The following table lists the initial common usage entries of the | The following table lists the initial "common" usage entries of the | |||
"JSContact Properties" registry. The Since Version for all | "JSContact Properties" registry. For all properties, the Since | |||
properties is 1.0. The Until Version for all properties is not set. | Version is "1.0", the Until Version is not set, the Change Controller | |||
All RFC section references are for [I-D.ietf-calext-jscontact]. The | is "IETF", and RFC section references are for RFC 9553. | |||
change controller for all these properties is IETF. | ||||
+===================+=====================+=========================+============+ | +=====================+=======================+====================+ | |||
|Property Name |Property Type |Property Context |Reference or| | | Property Name | Property Type | Property Context | | |||
| | | |Description | | +=====================+=======================+====================+ | |||
+===================+=====================+=========================+============+ | | @type | String | Address | | |||
|@type |String |Address, |Section | | | | | (Section 2.5.1.1), | | |||
| | |AddressComponent, |2.5.1, | | | | | AddressComponent | | |||
| | |Anniversary, Author, |Section | | | | | (Section 2.5.1.2), | | |||
| | |Card, Calendar, |2.8.1, | | | | | Anniversary | | |||
| | |CryptoKey, Directory, |Section | | | | | (Section 2.8.1), | | |||
| | |EmailAddress, |2.1.1, | | | | | Author | | |||
| | |LanguagePref, Link, |Section | | | | | (Section 2.8.3), | | |||
| | |Media, Name, |2.4.1, | | | | | Card | | |||
| | |NameComponent, Nickname, |Section | | | | | (Section 2.1.1), | | |||
| | |Note, OnlineService, |2.6.1, | | | | | Calendar | | |||
| | |Organization, OrgUnit, |Section | | | | | (Section 2.4.1), | | |||
| | |PartialDate,PersonalInfo,|2.6.2, | | | | | CryptoKey | | |||
| | |Phone, Pronouns, |Section | | | | | (Section 2.6.1), | | |||
| | |Relation, |2.3.1, | | | | | Directory | | |||
| | |SchedulingAddress, |Section | | | | | (Section 2.6.2), | | |||
| | |SpeakToAs, Timestamp, |2.3.4, | | | | | EmailAddress | | |||
| | |Title |Section | | | | | (Section 2.3.1), | | |||
| | | |2.6.3, | | | | | LanguagePref | | |||
| | | |Section | | | | | (Section 2.3.4), | | |||
| | | |2.6.4, | | | | | Link | | |||
| | | |Section | | | | | Section 2.6.3), | | |||
| | | |2.2.1, | | | | | Media | | |||
| | | |Section | | | | | (Section 2.6.4), | | |||
| | | |2.2.1.3, | | | | | Name | | |||
| | | |Section | | | | | (Section 2.2.1.1), | | |||
| | | |2.8.3, | | | | | NameComponent | | |||
| | | |Section | | | | | (Section 2.2.1.2), | | |||
| | | |2.3.2, | | | | | Nickname | | |||
| | | |Section | | | | | (Section 2.2.2), | | |||
| | | |2.2.2, | | | | | Note | | |||
| | | |Section | | | | | (Section 2.8.3), | | |||
| | | |2.8.4, | | | | | OnlineService | | |||
| | | |Section | | | | | (Section 2.3.2), | | |||
| | | |2.3.3, | | | | | Organization | | |||
| | | |Section | | | | | (Section 2.2.3), | | |||
| | | |2.2.3, | | | | | OrgUnit | | |||
| | | |Section | | | | | (Section 2.2.3), | | |||
| | | |2.1.8, | | | | | PartialDate | | |||
| | | |Section | | | | | (Section 2.8.1), | | |||
| | | |2.4.2, | | | | | PersonalInfo | | |||
| | | |Section | | | | | (Section 2.8.4), | | |||
| | | |2.2.4 | | | | | Phone | | |||
+-------------------+---------------------+-------------------------+------------+ | | | | (Section 2.3.3), | | |||
|version |String |Card |Section | | | | | Pronouns | | |||
| | | |2.1.2 | | | | | (Section 2.2.4), | | |||
+-------------------+---------------------+-------------------------+------------+ | | | | Relation | | |||
|address |String |EmailAddress |Section | | | | | (Section 2.1.8), | | |||
| | | |2.3.1 | | | | | SchedulingAddress | | |||
+-------------------+---------------------+-------------------------+------------+ | | | | (Section 2.4.2), | | |||
|addresses |Id[Address] |Card |Section | | | | | SpeakToAs | | |||
| | | |2.5.1 | | | | | (Section 2.2.4), | | |||
+-------------------+---------------------+-------------------------+------------+ | | | | Timestamp | | |||
|anniversaries |Id[Anniversary] |Card |Section | | | | | (Section 2.8.1), | | |||
| | | |2.8.1 | | | | | Title | | |||
+-------------------+---------------------+-------------------------+------------+ | | | | (Section 2.2.5) | | |||
|author |Author |Note |Section | | +---------------------+-----------------------+--------------------+ | |||
| | | |2.8.3 | | | address | String | EmailAddress | | |||
+-------------------+---------------------+-------------------------+------------+ | | | | (Section 2.3.1) | | |||
|calendars |Id[Calendar] |Card |Section | | +---------------------+-----------------------+--------------------+ | |||
| | | |2.4.1 | | | addresses | Id[Address] | Card | | |||
+-------------------+---------------------+-------------------------+------------+ | | | | (Section 2.5.1.1) | | |||
|calendarScale |String |PartialDate |Section | | +---------------------+-----------------------+--------------------+ | |||
| | | |2.8.1 | | | anniversaries | Id[Anniversary] | Card | | |||
+-------------------+---------------------+-------------------------+------------+ | | | | (Section 2.8.1) | | |||
|components |AddressComponent[] |Address |Section | | +---------------------+-----------------------+--------------------+ | |||
| | | |2.5.1 | | | author | Author | Note | | |||
+-------------------+---------------------+-------------------------+------------+ | | | | (Section 2.8.3) | | |||
|components |NameComponent[] |Name |Section | | +---------------------+-----------------------+--------------------+ | |||
| | | |2.2.1 | | | calendars | Id[Calendar] | Card | | |||
+-------------------+---------------------+-------------------------+------------+ | | | | (Section 2.4.1) | | |||
|contexts |String[Boolean] |Address, Calendar, |Section | | +---------------------+-----------------------+--------------------+ | |||
| | |CryptoKey, Directory, |1.5.1, | | | calendarScale | String | PartialDate | | |||
| | |EmailAddress, |Section | | | | | (Section 2.8.1) | | |||
| | |LanguagePref, Link, |2.5.1, | | +---------------------+-----------------------+--------------------+ | |||
| | |Media, Nickname, |Section | | | components | AddressComponent[] | Address | | |||
| | |OnlineService, |2.4.1, | | | | | (Section 2.5.1.1) | | |||
| | |Organization, Phone, |Section | | +---------------------+-----------------------+--------------------+ | |||
| | |Pronouns, |2.6.1, | | | components | NameComponent[] | Name | | |||
| | |SchedulingAddress |Section | | | | | (Section 2.2.1.2) | | |||
| | | |2.6.2, | | +---------------------+-----------------------+--------------------+ | |||
| | | |Section | | | contexts | String[Boolean] | Address | | |||
| | | |2.3.1, | | | | | (Section 2.5.1.1), | | |||
| | | |Section | | | | | Calendar | | |||
| | | |2.3.4, | | | | | (Section 2.4.1), | | |||
| | | |Section | | | | | CryptoKey | | |||
| | | |2.6.3, | | | | | (Section 2.6.1), | | |||
| | | |Section | | | | | Directory | | |||
| | | |2.6.4, | | | | | (Section 2.6.2), | | |||
| | | |Section | | | | | EmailAddress | | |||
| | | |2.2.1.3, | | | | | (Section 2.3.1), | | |||
| | | |Section | | | | | LanguagePref | | |||
| | | |2.3.2, | | | | | (Section 2.3.4), | | |||
| | | |Section | | | | | Link | | |||
| | | |2.2.2, | | | | | (Section 2.6.3), | | |||
| | | |Section | | | | | Media | | |||
| | | |2.3.3, | | | | | (Section 2.6.4), | | |||
| | | |Section | | | | | Nickname | | |||
| | | |2.2.3, | | | | | (Section 2.2.2), | | |||
| | | |Section | | | | | OnlineService | | |||
| | | |2.4.2Section| | | | | (Section 2.3.2), | | |||
| | | |1.4.4 | | | | | Organization | | |||
+-------------------+---------------------+-------------------------+------------+ | | | | (Section 2.2.3), | | |||
|coordinates |String |Address |Section | | | | | Phone | | |||
| | | |2.5.1 | | | | | (Section 2.3.3), | | |||
+-------------------+---------------------+-------------------------+------------+ | | | | Pronouns | | |||
|countryCode |String |Address |Section | | | | | (Section 2.2.4), | | |||
| | | |2.5.1 | | | | | SchedulingAddress | | |||
+-------------------+---------------------+-------------------------+------------+ | | | | (Section 2.4.2). | | |||
|created |UTCDateTime |Card, Note |Section | | | | | Also see Sections | | |||
| | | |2.1.3, | | | | | 1.4.4 and 1.5.1. | | |||
| | | |Section | | +---------------------+-----------------------+--------------------+ | |||
| | | |2.8.3 | | | coordinates | String | Address | | |||
+-------------------+---------------------+-------------------------+------------+ | | | | (Section 2.5.1.1) | | |||
|date |PartialDate|Timestamp|Anniversary |Section | | +---------------------+-----------------------+--------------------+ | |||
| | | |2.8.1 | | | countryCode | String | Address | | |||
+-------------------+---------------------+-------------------------+------------+ | | | | (Section 2.5.1.1) | | |||
|day |UnsignedInt |PartialDate |Section | | +---------------------+-----------------------+--------------------+ | |||
| | | |2.8.1 | | | created | UTCDateTime | Card | | |||
+-------------------+---------------------+-------------------------+------------+ | | | | (Section 2.1.3), | | |||
|defaultSeparator |String |Address, Name |Section | | | | | Note | | |||
| | | |2.5.1, | | | | | (Section 2.8.3) | | |||
| | | |Section | | +---------------------+-----------------------+--------------------+ | |||
| | | |2.2.1 | | | date | PartialDate|Timestamp | Anniversary | | |||
+-------------------+---------------------+-------------------------+------------+ | | | | (Section 2.8.1) | | |||
|directories |Id[Directory] |Card |Section | | +---------------------+-----------------------+--------------------+ | |||
| | | |2.6.2 | | | day | UnsignedInt | PartialDate | | |||
+-------------------+---------------------+-------------------------+------------+ | | | | (Section 2.8.1) | | |||
|emails |Id[EmailAddress] |Card |Section | | +---------------------+-----------------------+--------------------+ | |||
| | | |2.3.1 | | | defaultSeparator | String | Address | | |||
+-------------------+---------------------+-------------------------+------------+ | | | | (Section 2.5.1.1), | | |||
|features |String[Boolean] |Phone |Section | | | | | Name | | |||
| | | |2.3.3 | | | | | (Section 2.2.1.1) | | |||
+-------------------+---------------------+-------------------------+------------+ | +---------------------+-----------------------+--------------------+ | |||
|full |String |Address, Name |Section | | | directories | Id[Directory] | Card | | |||
| | | |2.5.1, | | | | | (Section 2.6.2) | | |||
| | | |Section | | +---------------------+-----------------------+--------------------+ | |||
| | | |2.2.1 | | | emails | Id[EmailAddress] | Card | | |||
+-------------------+---------------------+-------------------------+------------+ | | | | (Section 2.3.1) | | |||
|grammaticalGender |String |SpeakToAs |Section | | +---------------------+-----------------------+--------------------+ | |||
| | | |2.2.3 | | | features | String[Boolean] | Phone | | |||
+-------------------+---------------------+-------------------------+------------+ | | | | (Section 2.3.3) | | |||
|isOrdered |Boolean |Address, Name |Section | | +---------------------+-----------------------+--------------------+ | |||
| | | |2.5.1, | | | full | String | Address | | |||
| | | |Section | | | | | (Section 2.5.1.1), | | |||
| | | |2.2.1 | | | | | Name | | |||
+-------------------+---------------------+-------------------------+------------+ | | | | (Section 2.2.1.1) | | |||
|keywords |String[Boolean] |Card |Section | | +---------------------+-----------------------+--------------------+ | |||
| | | |2.8.2 | | | grammaticalGender | String | SpeakToAs | | |||
+-------------------+---------------------+-------------------------+------------+ | | | | (Section 2.2.4) | | |||
|kind |String |AddressComponent, |Section | | +---------------------+-----------------------+--------------------+ | |||
| | |Anniversary, Calendar, |2.5.1, | | | isOrdered | Boolean | Address | | |||
| | |Card, CryptoKey, |Section | | | | | (Section 2.5.1.1), | | |||
| | |Directory, Link, Media, |2.8.1, | | | | | Name | | |||
| | |NameComponent, |Section | | | | | (Section 2.2.1.1) | | |||
| | |PersonalInfo, Title |2.4.1, | | +---------------------+-----------------------+--------------------+ | |||
| | | |Section | | | keywords | String[Boolean] | Card | | |||
| | | |2.1.4, | | | | | (Section 2.8.2) | | |||
| | | |Section | | +---------------------+-----------------------+--------------------+ | |||
| | | |2.6.1, | | | kind | String | AddressComponent | | |||
| | | |Section | | | | | (Section 2.5.1.2), | | |||
| | | |2.6.2, | | | | | Anniversary | | |||
| | | |Section | | | | | (Section 2.8.1), | | |||
| | | |2.6.3, | | | | | Calendar | | |||
| | | |Section | | | | | (Section 2.4.1), | | |||
| | | |2.6.4, | | | | | Card | | |||
| | | |Section | | | | | (Section 2.1.4), | | |||
| | | |2.2.1, | | | | | CryptoKey | | |||
| | | |Section | | | | | (Section 2.6.1), | | |||
| | | |2.8.4, | | | | | Directory | | |||
| | | |Section | | | | | (Section 2.6.2), | | |||
| | | |2.2.4 | | | | | Link | | |||
+-------------------+---------------------+-------------------------+------------+ | | | | (Section 2.6.3), | | |||
|label |String |Calendar, CryptoKey, |Section | | | | | Media | | |||
| | |Directory, EmailAddress, |1.5.3, | | | | | (Section 2.6.4), | | |||
| | |Link, Media, |Section | | | | | NameComponent | | |||
| | |OnlineService, |2.4.1, | | | | | (Section 2.2.1.2), | | |||
| | |PersonalInfo, Phone, |Section | | | | | PersonalInfo | | |||
| | |SchedulingAddress |2.6.1, | | | | | (Section 2.8.4), | | |||
| | | |Section | | | | | Title | | |||
| | | |2.6.2, | | | | | (Section 2.2.5) | | |||
| | | |Section | | +---------------------+-----------------------+--------------------+ | |||
| | | |2.3.1, | | | label | String | Calendar | | |||
| | | |Section | | | | | (Section 2.4.1), | | |||
| | | |2.6.3, | | | | | CryptoKey | | |||
| | | |Section | | | | | (Section 2.6.1), | | |||
| | | |2.6.4, | | | | | Directory | | |||
| | | |Section | | | | | (Section 2.6.2), | | |||
| | | |2.3.2, | | | | | EmailAddress | | |||
| | | |Section | | | | | (Section 2.3.1), | | |||
| | | |2.8.4, | | | | | Link | | |||
| | | |Section | | | | | (Section 2.6.3), | | |||
| | | |2.3.3, | | | | | Media | | |||
| | | |Section | | | | | (Section 2.6.4), | | |||
| | | |2.4.2, | | | | | OnlineService | | |||
| | | |Section | | | | | (Section 2.3.2), | | |||
| | | |1.4.4 | | | | | PersonalInfo | | |||
+-------------------+---------------------+-------------------------+------------+ | | | | (Section 2.8.4), | | |||
|language |String |Card, LanguagePref |Section | | | | | Phone | | |||
| | | |2.1.5, | | | | | (Section 2.3.3), | | |||
| | | |Section | | | | | SchedulingAddress | | |||
| | | |2.3.4 | | | | | (Section 2.4.2). | | |||
+-------------------+---------------------+-------------------------+------------+ | | | | Also see Sections | | |||
|level |String |PersonalInfo |Section | | | | | 1.4.4 and 1.5.2. | | |||
| | | |2.8.4 | | +---------------------+-----------------------+--------------------+ | |||
+-------------------+---------------------+-------------------------+------------+ | | language | String | Card | | |||
|links |Id[Link] |Card |Section | | | | | (Section 2.1.5), | | |||
| | | |2.6.3 | | | | | LanguagePref | | |||
+-------------------+---------------------+-------------------------+------------+ | | | | (Section 2.3.4) | | |||
|listAs |UnsignedInt |Directory, PersonalInfo |Section | | +---------------------+-----------------------+--------------------+ | |||
| | | |2.6.2, | | | level | String | PersonalInfo | | |||
| | | |Section | | | | | (Section 2.8.4) | | |||
| | | |2.8.4 | | +---------------------+-----------------------+--------------------+ | |||
+-------------------+---------------------+-------------------------+------------+ | | links | Id[Link] | Card | | |||
|localizations |String[PatchObject] |Card |Section | | | | | (Section 2.6.3) | | |||
| | | |2.7.1 | | +---------------------+-----------------------+--------------------+ | |||
+-------------------+---------------------+-------------------------+------------+ | | listAs | UnsignedInt | Directory | | |||
|media |Id[Media] |Card |Section | | | | | (Section 2.6.2), | | |||
| | | |2.6.4 | | | | | PersonalInfo | | |||
+-------------------+---------------------+-------------------------+------------+ | | | | (Section 2.8.4) | | |||
|mediaType |String |Calendar, CryptoKey, |Section | | +---------------------+-----------------------+--------------------+ | |||
| | |Directory, Link, Media |1.4.4, | | | localizations | String[PatchObject] | Card | | |||
| | | |Section | | | | | (Section 2.7.1) | | |||
| | | |2.4.1, | | +---------------------+-----------------------+--------------------+ | |||
| | | |Section | | | media | Id[Media] | Card | | |||
| | | |2.6.1, | | | | | (Section 2.6.4) | | |||
| | | |Section | | +---------------------+-----------------------+--------------------+ | |||
| | | |2.6.2, | | | mediaType | String | Calendar | | |||
| | | |Section | | | | | (Section 2.4.1), | | |||
| | | |2.6.3, | | | | | CryptoKey | | |||
| | | |Section | | | | | (Section 2.6.1), | | |||
| | | |2.6.4 | | | | | Directory | | |||
+-------------------+---------------------+-------------------------+------------+ | | | | (Section 2.6.2), | | |||
|members |String[Boolean] |Card |Section | | | | | Link | | |||
| | | |2.1.6 | | | | | (Section 2.6.3), | | |||
+-------------------+---------------------+-------------------------+------------+ | | | | Media | | |||
|month |UnsignedInt |PartialDate |Section | | | | | (Section 2.6.4). | | |||
| | | |2.8.1 | | | | | Also see | | |||
+-------------------+---------------------+-------------------------+------------+ | | | | Section 1.4.4. | | |||
|name |Name |Card |Section | | +---------------------+-----------------------+--------------------+ | |||
| | | |2.2.1 | | | members | String[Boolean] | Card | | |||
+-------------------+---------------------+-------------------------+------------+ | | | | (Section 2.1.6) | | |||
|name |String |Author, Nickname, |Section | | +---------------------+-----------------------+--------------------+ | |||
| | |Organization, OrgUnit, |2.8.3, | | | month | UnsignedInt | PartialDate | | |||
| | |Title |Section | | | | | (Section 2.8.1) | | |||
| | | |2.2.1.3, | | +---------------------+-----------------------+--------------------+ | |||
| | | |Section | | | name | Name | Card | | |||
| | | |2.2.2, | | | | | (Section 2.2.1.1) | | |||
| | | |Section | | +---------------------+-----------------------+--------------------+ | |||
| | | |2.2.4 | | | name | String | Author | | |||
+-------------------+---------------------+-------------------------+------------+ | | | | (Section 2.8.3), | | |||
|nicknames |Id[Nickname] |Card |Section | | | | | Nickname | | |||
| | | |2.2.1.3 | | | | | (Section 2.2.2), | | |||
+-------------------+---------------------+-------------------------+------------+ | | | | Organization | | |||
|note |String |Note |Section | | | | | (Section 2.2.3), | | |||
| | | |2.8.3 | | | | | OrgUnit | | |||
+-------------------+---------------------+-------------------------+------------+ | | | | (Section 2.2.3), | | |||
|notes |Id[Note] |Card |Section | | | | | Title | | |||
| | | |2.8.3 | | | | | (Section 2.2.5) | | |||
+-------------------+---------------------+-------------------------+------------+ | +---------------------+-----------------------+--------------------+ | |||
|number |String |Phone |Section | | | nicknames | Id[Nickname] | Card | | |||
| | | |2.3.3 | | | | | (Section 2.2.2) | | |||
+-------------------+---------------------+-------------------------+------------+ | +---------------------+-----------------------+--------------------+ | |||
|onlineServices |Id[OnlineService] |Card |Section | | | note | String | Note | | |||
| | | |2.3.2 | | | | | (Section 2.8.3) | | |||
+-------------------+---------------------+-------------------------+------------+ | +---------------------+-----------------------+--------------------+ | |||
|organizationId |String |Title |Section | | | notes | Id[Note] | Card | | |||
| | | |2.2.4 | | | | | (Section 2.8.3) | | |||
+-------------------+---------------------+-------------------------+------------+ | +---------------------+-----------------------+--------------------+ | |||
|organizations |Id[Organization] |Card |Section | | | number | String | Phone | | |||
| | | |2.2.2 | | | | | (Section 2.3.3) | | |||
+-------------------+---------------------+-------------------------+------------+ | +---------------------+-----------------------+--------------------+ | |||
|personalInfo |Id[PersonalInfo] |Card |Section | | | onlineServices | Id[OnlineService] | Card | | |||
| | | |2.8.4 | | | | | (Section 2.3.2) | | |||
+-------------------+---------------------+-------------------------+------------+ | +---------------------+-----------------------+--------------------+ | |||
|phones |Id[Phone] |Card |Section | | | organizationId | String | Title | | |||
| | | |2.3.3 | | | | | (Section 2.2.5) | | |||
+-------------------+---------------------+-------------------------+------------+ | +---------------------+-----------------------+--------------------+ | |||
|phonetic |String |AddressComponent, |Section | | | organizations | Id[Organization] | Card | | |||
| | |NameComponent |2.5.1.2, | | | | | (Section 2.2.3) | | |||
| | | |Section | | +---------------------+-----------------------+--------------------+ | |||
| | | |2.2.1.2 | | | personalInfo | Id[PersonalInfo] | Card | | |||
+-------------------+---------------------+-------------------------+------------+ | | | | (Section 2.8.4) | | |||
|phoneticScript |String |Address, Name |Section | | +---------------------+-----------------------+--------------------+ | |||
| | | |2.2.1, | | | phones | Id[Phone] | Card | | |||
| | | |Section | | | | | (Section 2.3.3) | | |||
| | | |2.5.1 | | +---------------------+-----------------------+--------------------+ | |||
+-------------------+---------------------+-------------------------+------------+ | | phonetic | String | AddressComponent | | |||
|phoneticSystem |String |Address, Name |Section | | | | | (Section 2.5.1.2), | | |||
| | | |2.2.1, | | | | | NameComponent | | |||
| | | |Section | | | | | (Section 2.2.1.2) | | |||
| | | |2.5.1 | | +---------------------+-----------------------+--------------------+ | |||
+-------------------+---------------------+-------------------------+------------+ | | phoneticScript | String | Address | | |||
|place |Address |Anniversary |Section | | | | | (Section 2.5.1.1), | | |||
| | | |2.8.1 | | | | | Name | | |||
+-------------------+---------------------+-------------------------+------------+ | | | | (Section 2.2.1.1) | | |||
|pref |UnsignedInt |Address, Calendar, |Section | | +---------------------+-----------------------+--------------------+ | |||
| | |CryptoKey, Directory, |1.5.4, | | | phoneticSystem | String | Address (2.5.1.1), | | |||
| | |EmailAddress, |Section | | | | | Name | | |||
| | |LanguagePref, Link, |2.5.1, | | | | | (Section 2.2.1.1) | | |||
| | |Media, Nickname, |Section | | +---------------------+-----------------------+--------------------+ | |||
| | |OnlineService, Phone, |2.4.1, | | | place | Address | Anniversary | | |||
| | |Pronouns, |Section | | | | | (Section 2.8.1) | | |||
| | |SchedulingAddress |2.6.1, | | +---------------------+-----------------------+--------------------+ | |||
| | | |Section | | | pref | UnsignedInt | Address | | |||
| | | |2.6.2, | | | | | (Section 2.5.1.1), | | |||
| | | |Section | | | | | Calendar | | |||
| | | |2.3.1, | | | | | (Section 2.4.1), | | |||
| | | |Section | | | | | CryptoKey | | |||
| | | |2.3.4, | | | | | (Section 2.6.1), | | |||
| | | |Section | | | | | Directory | | |||
| | | |2.6.3, | | | | | (Section 2.6.2), | | |||
| | | |Section | | | | | EmailAddress | | |||
| | | |2.6.4, | | | | | (Section 2.3.1), | | |||
| | | |Section | | | | | LanguagePref | | |||
| | | |2.2.1.3, | | | | | (Section 2.3.4), | | |||
| | | |Section | | | | | Link | | |||
| | | |2.3.2, | | | | | (Section 2.6.3), | | |||
| | | |Section | | | | | Media | | |||
| | | |2.3.3, | | | | | (Section 2.6.4), | | |||
| | | |Section | | | | | Nickname | | |||
| | | |2.2.3, | | | | | (Section 2.2.2), | | |||
| | | |Section | | | | | OnlineService | | |||
| | | |2.4.2, | | | | | (Section 2.3.2), | | |||
| | | |Section | | | | | Phone | | |||
| | | |1.4.4 | | | | | (Section 2.3.3), | | |||
+-------------------+---------------------+-------------------------+------------+ | | | | Pronouns | | |||
|preferredLanguages |String[LanguagePref] |Card |Section | | | | | (Section 2.2.4), | | |||
| | | |2.3.4 | | | | | SchedulingAddress | | |||
+-------------------+---------------------+-------------------------+------------+ | | | | (Section 2.4.2). | | |||
|prodId |String |Card |Section | | | | | Also see Sections | | |||
| | | |2.1.7 | | | | | 1.4.4 and 1.5.3. | | |||
+-------------------+---------------------+-------------------------+------------+ | +---------------------+-----------------------+--------------------+ | |||
|pronouns |Id[Pronouns] |SpeakToAs |Section | | | preferredLanguages | String[LanguagePref] | Card | | |||
| | | |2.2.3 | | | | | (Section 2.3.4) | | |||
+-------------------+---------------------+-------------------------+------------+ | +---------------------+-----------------------+--------------------+ | |||
|relatedTo |String[Relation] |Card |Section | | | prodId | String | Card | | |||
| | | |2.1.8 | | | | | (Section 2.1.7) | | |||
+-------------------+---------------------+-------------------------+------------+ | +---------------------+-----------------------+--------------------+ | |||
|relation |String[Boolean] |Relation |Section | | | pronouns | Id[Pronouns] | SpeakToAs | | |||
| | | |2.1.8 | | | | | (Section 2.2.4) | | |||
+-------------------+---------------------+-------------------------+------------+ | +---------------------+-----------------------+--------------------+ | |||
|schedulingAddresses|Id[SchedulingAddress]|Card |Section | | | relatedTo | String[Relation] | Card | | |||
| | | |2.4.2 | | | | | (Section 2.1.8) | | |||
+-------------------+---------------------+-------------------------+------------+ | +---------------------+-----------------------+--------------------+ | |||
|service |String |OnlineService |Section | | | relation | String[Boolean] | Relation | | |||
| | | |2.3.2 | | | | | (Section 2.1.8) | | |||
+-------------------+---------------------+-------------------------+------------+ | +---------------------+-----------------------+--------------------+ | |||
|sortAs |String[String] |Name |Section | | | schedulingAddresses | Id[SchedulingAddress] | Card | | |||
| | | |2.2.1 | | | | | (Section 2.4.2) | | |||
+-------------------+---------------------+-------------------------+------------+ | +---------------------+-----------------------+--------------------+ | |||
|sortAs |String |Organization, OrgUnit |Section | | | service | String | OnlineService | | |||
| | | |2.2.2 | | | | | (Section 2.3.2) | | |||
+-------------------+---------------------+-------------------------+------------+ | +---------------------+-----------------------+--------------------+ | |||
|speakToAs |SpeakToAs |Card |Section | | | sortAs | String[String] | Name | | |||
| | | |2.2.3 | | | | | (Section 2.2.1.1) | | |||
+-------------------+---------------------+-------------------------+------------+ | +---------------------+-----------------------+--------------------+ | |||
|timeZone |String |Address |Section | | | sortAs | String | Organization | | |||
| | | |2.5.1 | | | | | (Section 2.2.3), | | |||
+-------------------+---------------------+-------------------------+------------+ | | | | OrgUnit | | |||
|titles |Id[Title] |Card |Section | | | | | (Section 2.2.3) | | |||
| | | |2.2.4 | | +---------------------+-----------------------+--------------------+ | |||
+-------------------+---------------------+-------------------------+------------+ | | speakToAs | SpeakToAs | Card | | |||
|uid |String |Card |Section | | | | | (Section 2.2.4) | | |||
| | | |2.1.9 | | +---------------------+-----------------------+--------------------+ | |||
+-------------------+---------------------+-------------------------+------------+ | | timeZone | String | Address | | |||
|units |OrgUnit[] |Organization |Section | | | | | (Section 2.5.1.1) | | |||
| | | |2.2.2 | | +---------------------+-----------------------+--------------------+ | |||
+-------------------+---------------------+-------------------------+------------+ | | titles | Id[Title] | Card | | |||
|updated |UTCDateTime |Card |Section | | | | | (Section 2.2.5) | | |||
| | | |2.1.10 | | +---------------------+-----------------------+--------------------+ | |||
+-------------------+---------------------+-------------------------+------------+ | | uid | String | Card | | |||
|uri |String |Author, Calendar, |Section | | | | | (Section 2.1.9) | | |||
| | |CryptoKey, Directory, |2.8.3, | | +---------------------+-----------------------+--------------------+ | |||
| | |Link, Media, |Section | | | units | OrgUnit[] | Organization | | |||
| | |OnlineService, |1.4.4, | | | | | (Section 2.2.3) | | |||
| | |SchedulingAddress |Section | | +---------------------+-----------------------+--------------------+ | |||
| | | |2.4.1, | | | updated | UTCDateTime | Card | | |||
| | | |Section | | | | | (Section 2.1.10) | | |||
| | | |2.6.1, | | +---------------------+-----------------------+--------------------+ | |||
| | | |Section | | | uri | String | Author | | |||
| | | |2.6.2, | | | | | (Section 2.8.3), | | |||
| | | |Section | | | | | Calendar | | |||
| | | |2.6.3, | | | | | (Section 2.4.1), | | |||
| | | |Section | | | | | CryptoKey | | |||
| | | |2.6.4, | | | | | (Section 2.6.1), | | |||
| | | |Section | | | | | Directory | | |||
| | | |2.3.2, | | | | | (Section 2.6.2), | | |||
| | | |Section | | | | | Link | | |||
| | | |2.4.2 | | | | | (Section 2.6.3), | | |||
+-------------------+---------------------+-------------------------+------------+ | | | | Media | | |||
|user |String |OnlineService |Section | | | | | (Section 2.6.4), | | |||
| | | |2.3.2 | | | | | OnlineService | | |||
+-------------------+---------------------+-------------------------+------------+ | | | | (Section 2.3.2), | | |||
|utc |UTCDateTime |Timestamp |Section | | | | | SchedulingAddress | | |||
| | | |2.8.1 | | | | | (Section 2.4.2). | | |||
+-------------------+---------------------+-------------------------+------------+ | | | | Also see | | |||
|value |String |AddressComponent, |Section | | | | | Section 1.4.4. | | |||
| | |NameComponent, |2.5.1, | | +---------------------+-----------------------+--------------------+ | |||
| | |PersonalInfo |Section | | | user | String | OnlineService | | |||
| | | |2.2.1, | | | | | (Section 2.3.2) | | |||
| | | |Section | | +---------------------+-----------------------+--------------------+ | |||
| | | |2.8.4 | | | utc | UTCDateTime | Timestamp | | |||
+-------------------+---------------------+-------------------------+------------+ | | | | (Section 2.8.1) | | |||
|year |UnsignedInt |PartialDate |Section | | +---------------------+-----------------------+--------------------+ | |||
| | | |2.8.1 | | | value | String | AddressComponent | | |||
+-------------------+---------------------+-------------------------+------------+ | | | | (Section 2.5.1.2), | | |||
Table 2: JSContact Properties with "common" usage | | | | NameComponent | | |||
| | | (Section 2.2.1.2), | | ||||
| | | PersonalInfo | | ||||
| | | (Section 2.8.4) | | ||||
+---------------------+-----------------------+--------------------+ | ||||
| version | String | Card | | ||||
| | | (Section 2.1.2) | | ||||
+---------------------+-----------------------+--------------------+ | ||||
| year | UnsignedInt | PartialDate | | ||||
| | | (Section 2.8.1) | | ||||
+---------------------+-----------------------+--------------------+ | ||||
The following table lists the initial reserved usage entries of the | Table 2: JSContact Properties with "common" Usage | |||
"JSContact Properties" registry. All RFC section references are for | ||||
[I-D.ietf-calext-jscontact]. The change controller for all these | ||||
properties is IETF. | ||||
+===============+============+============+==============+==========+ | The following table lists the initial "reserved" usage entries of the | |||
| Property | Property | Property | Reference or | Intended | | "JSContact Properties" registry. For this property, the Change | |||
| Name | Type | Context | Description | Usage | | Controller is "IETF", and the RFC section reference is for RFC 9553. | |||
+===============+============+============+==============+==========+ | ||||
| extra | not | not | Section | reserved | | ||||
| | applicable | applicable | 1.5.2 | | | ||||
+---------------+------------+------------+--------------+----------+ | ||||
Table 3: JSContact Properties with "reserved" usage | +===============+============+============+=============+==========+ | |||
| Property Name | Property | Property | Reference/ | Intended | | ||||
| | Type | Context | Description | Usage | | ||||
+===============+============+============+=============+==========+ | ||||
| extra | not | not | Section | reserved | | ||||
| | applicable | applicable | 1.7.3.1 | | | ||||
+---------------+------------+------------+-------------+----------+ | ||||
3.6. Creation of the "JSContact Types" Registry | Table 3: JSContact Properties with "reserved" Usage | |||
IANA is asked to create the "JSContact Types" registry. The purpose | 3.6. Creation of the JSContact Types Registry | |||
of this new registry is to avoid name collisions for JSContact type | ||||
names and provide a complete reference for all data types used for | ||||
JSContact property values. | ||||
The registry entries sort alphabetically ascending by the "Type Name" | IANA has created the "JSContact Types" registry. The purpose of this | |||
column. Equal entries sort in any order. | new registry is to avoid name collisions for JSContact type names and | |||
provide a complete reference for all data types used for JSContact | ||||
property values. | ||||
The registry entries sort alphabetically in ascending order by the | ||||
"Type Name" column. Equal entries sort in any order. | ||||
The registry process for a new type is outlined in Section 3.3. | The registry process for a new type is outlined in Section 3.3. | |||
3.6.1. "JSContact Types" Registry Template | 3.6.1. JSContact Types Registry Template | |||
Type Name: the name of the type | Type Name: The name of the type. | |||
Reference or Description: a brief description or RFC number and | Intended Usage: May be "common", "reserved", or "obsolete". | |||
section reference where the Type is specified (may be omitted for | ||||
"reserved" type names) | ||||
Intended Usage: common, reserved, or obsolete | Since Version: The JSContact version on which this type definition | |||
is based. The version MUST be one of the allowed values of the | ||||
version property in the "JSContact Version" registry (see | ||||
Table 1). | ||||
Since Version: This defines the JSContact version on which this type | Until Version: The JSContact version after which the type definition | |||
definition is based on. The version MUST be one of the allowed | was obsoleted; therefore, it MUST NOT be used in later versions. | |||
values of the version property in the JSContact Enum Value | The Until Version value either MUST NOT be set or MUST be one of | |||
registry (see Table 1). | the allowed values of the version property in the "JSContact | |||
Version" registry (see Table 1). | ||||
Until Version: This defines the JSContact version after which this | Change Controller: Person or entity responsible for requesting a | |||
type definition got obsoleted and MUST NOT be used in later | change to the entry's definition ("IETF" for RFCs from the IETF | |||
versions. The Until Version value either MUST be not set, or one | stream). | |||
of the allowed values of the version property in the JSContact | ||||
Enum Value registry (see Table 1). | ||||
Change Controller: This is who may request a change to this entry's | Reference or Description: A brief description or RFC number and | |||
definition (IETF for RFCs from the IETF stream). | section reference where the Type is specified. For reserved type | |||
names, the reference or description MAY be omitted. | ||||
3.6.2. Initial Contents for the "JSContact Types" Registry | 3.6.2. Initial Contents of the JSContact Types Registry | |||
The following table lists the initial common usage entries of the | The following table lists the initial "common" usage entries in the | |||
JSContact Types registry. The Since Version for all types is 1.0. | "JSContact Types" registry. For all of these types, the Since | |||
The Until Version for all types is not set. All RFC section | Version is "1.0", the Until Version is not set, the Change Controller | |||
references are for [I-D.ietf-calext-jscontact]. The change | is "IETF", and RFC section references are for RFC 9553. | |||
controller for all these properties is IETF. | ||||
+===================+==========================+ | +===================+==========================+ | |||
| Type Name | Reference or Description | | | Type Name | Reference or Description | | |||
+===================+==========================+ | +===================+==========================+ | |||
| Address | Section 2.5.1 | | | Address | Section 2.5.1.1 | | |||
+-------------------+--------------------------+ | +-------------------+--------------------------+ | |||
| AddressComponent | Section 2.5.1 | | | AddressComponent | Section 2.5.1.2 | | |||
+-------------------+--------------------------+ | +-------------------+--------------------------+ | |||
| Anniversary | Section 2.8.1 | | | Anniversary | Section 2.8.1 | | |||
+-------------------+--------------------------+ | +-------------------+--------------------------+ | |||
| Author | Section 2.8.3 | | | Author | Section 2.8.3 | | |||
+-------------------+--------------------------+ | +-------------------+--------------------------+ | |||
| Boolean | Section 1.3.2 | | | Boolean | Section 1.3.2 | | |||
+-------------------+--------------------------+ | +-------------------+--------------------------+ | |||
| Calendar | Section 2.4.1 | | | Calendar | Section 2.4.1 | | |||
+-------------------+--------------------------+ | +-------------------+--------------------------+ | |||
| Card | Section 2 | | | Card | Section 2 | | |||
skipping to change at page 71, line 5 ¶ | skipping to change at line 3248 ¶ | |||
| Id | Section 1.4.1 | | | Id | Section 1.4.1 | | |||
+-------------------+--------------------------+ | +-------------------+--------------------------+ | |||
| Int | Section 1.4.2 | | | Int | Section 1.4.2 | | |||
+-------------------+--------------------------+ | +-------------------+--------------------------+ | |||
| LanguagePref | Section 2.3.4 | | | LanguagePref | Section 2.3.4 | | |||
+-------------------+--------------------------+ | +-------------------+--------------------------+ | |||
| Link | Section 2.6.3 | | | Link | Section 2.6.3 | | |||
+-------------------+--------------------------+ | +-------------------+--------------------------+ | |||
| Media | Section 2.6.4 | | | Media | Section 2.6.4 | | |||
+-------------------+--------------------------+ | +-------------------+--------------------------+ | |||
| Name | Section 2.2.1 | | | Name | Section 2.2.1.1 | | |||
+-------------------+--------------------------+ | +-------------------+--------------------------+ | |||
| NameComponent | Section 2.2.1 | | | NameComponent | Section 2.2.1.2 | | |||
+-------------------+--------------------------+ | +-------------------+--------------------------+ | |||
| Nickname | Section 2.2.1.3 | | | Nickname | Section 2.2.2 | | |||
+-------------------+--------------------------+ | +-------------------+--------------------------+ | |||
| Note | Section 2.8.3 | | | Note | Section 2.8.3 | | |||
+-------------------+--------------------------+ | +-------------------+--------------------------+ | |||
| Number | Section 1.3.2 | | | Number | Section 1.3.2 | | |||
+-------------------+--------------------------+ | +-------------------+--------------------------+ | |||
| OnlineService | Section 2.3.2 | | | OnlineService | Section 2.3.2 | | |||
+-------------------+--------------------------+ | +-------------------+--------------------------+ | |||
| Organization | Section 2.2.2 | | | Organization | Section 2.2.3 | | |||
+-------------------+--------------------------+ | +-------------------+--------------------------+ | |||
| OrgUnit | Section 2.2.2 | | | OrgUnit | Section 2.2.3 | | |||
+-------------------+--------------------------+ | +-------------------+--------------------------+ | |||
| PartialDate | Section 2.8.1 | | | PartialDate | Section 2.8.1 | | |||
+-------------------+--------------------------+ | +-------------------+--------------------------+ | |||
| PatchObject | Section 1.4.3 | | | PatchObject | Section 1.4.3 | | |||
+-------------------+--------------------------+ | +-------------------+--------------------------+ | |||
| PersonalInfo | Section 2.8.4 | | | PersonalInfo | Section 2.8.4 | | |||
+-------------------+--------------------------+ | +-------------------+--------------------------+ | |||
| Phone | Section 2.3.3 | | | Phone | Section 2.3.3 | | |||
+-------------------+--------------------------+ | +-------------------+--------------------------+ | |||
| Pronouns | Section 2.2.3 | | | Pronouns | Section 2.2.4 | | |||
+-------------------+--------------------------+ | +-------------------+--------------------------+ | |||
| Relation | Section 2.1.8 | | | Relation | Section 2.1.8 | | |||
+-------------------+--------------------------+ | +-------------------+--------------------------+ | |||
| SchedulingAddress | Section 2.4.2 | | | SchedulingAddress | Section 2.4.2 | | |||
+-------------------+--------------------------+ | +-------------------+--------------------------+ | |||
| SpeakToAs | Section 2.2.3 | | | SpeakToAs | Section 2.2.4 | | |||
+-------------------+--------------------------+ | +-------------------+--------------------------+ | |||
| String | Section 1.3.2 | | | String | Section 1.3.2 | | |||
+-------------------+--------------------------+ | +-------------------+--------------------------+ | |||
| Timestamp | Section 2.8.1 | | | Timestamp | Section 2.8.1 | | |||
+-------------------+--------------------------+ | +-------------------+--------------------------+ | |||
| Title | Section 2.2.4 | | | Title | Section 2.2.5 | | |||
+-------------------+--------------------------+ | +-------------------+--------------------------+ | |||
| UnsignedInt | Section 1.4.2 | | | UnsignedInt | Section 1.4.2 | | |||
+-------------------+--------------------------+ | +-------------------+--------------------------+ | |||
| UTCDateTime | Section 1.4.5 | | | UTCDateTime | Section 1.4.5 | | |||
+-------------------+--------------------------+ | +-------------------+--------------------------+ | |||
Table 4: JSContact Types with "common" usage | Table 4: JSContact Types with "common" Usage | |||
The following table lists the initial reserved usage entries of the | The following table lists the initial "reserved" usage entry of the | |||
JSContact Types registry. All types are for version 1.0. All RFC | "JSContact Types" registry. For this type, the version is "1.0", the | |||
section references are for [I-D.ietf-calext-jscontact]. The change | Change Controller is "IETF", and the RFC section reference is for RFC | |||
controller for all these properties is IETF. | 9553. | |||
+===========+==========================+ | +===========+==========================+ | |||
| Type Name | Reference or Description | | | Type Name | Reference or Description | | |||
+===========+==========================+ | +===========+==========================+ | |||
| Resource | Section 1.4.4 | | | Resource | Section 1.4.4 | | |||
+-----------+--------------------------+ | +-----------+--------------------------+ | |||
Table 5: JSContact Types with | Table 5: JSContact Types with | |||
"reserved" usage | "reserved" Usage | |||
3.7. Creation of the "JSContact Enum Values" Registry | 3.7. Creation of the JSContact Enum Values Registry | |||
IANA is asked to create the "JSContact Enum Values" registry. The | IANA has created the "JSContact Enum Values" registry. The purpose | |||
purpose of the new registry is to allow interoperable extension of | of the new registry is to allow interoperable extension of semantics | |||
semantics for JSContact properties with enumerable values. Each such | for JSContact properties with enumerable values. Each such property | |||
property will have a subregistry of allowed values. | will have a subregistry of allowed values. | |||
The registry entries sort alphabetically ascending by the "Property | The registry entries sort alphabetically in ascending order by the | |||
Name" column first, "Property Context" second, "Since Version" third. | following columns: "Property Name" first, "Property Context" second, | |||
The enum values sort alphabetically ascending. Equal entries sort in | and "Since Version" third. The enum values sort alphabetically in | |||
any order. | ascending order. Equal entries sort in any order. | |||
The registry process for a new enum value or adding a new enumerable | The registry process for a new enum value or adding a new enumerable | |||
property is outlined in Section 3.3. | property is outlined in Section 3.3. | |||
3.7.1. "JSContact Enum Values" Registry Property Template | 3.7.1. JSContact Enum Values Registry Property Template | |||
This template is for adding a subregistry for a new enumerable | This template is for adding a subregistry for a new enumerable | |||
property to the "JSContact Enum" registry. | property to the "JSContact Enum Values" registry. | |||
Property Name: These are the name(s) of the property or properties | Property Name: The name(s) of the property or properties where these | |||
where these values may be used. This MUST be registered in the | values may be used. This MUST be registered in the "JSContact | |||
"JSContact Properties" registry. | Properties" registry. | |||
Context: This is the list of allowed object types where the property | Context: The list of allowed object types where the property or | |||
or properties may appear, as registered in the "JSContact | properties may appear, as registered in the "JSContact Properties" | |||
Properties" registry. This disambiguates where there may be two | registry. This disambiguates where there may be two distinct | |||
distinct properties with the same name in different contexts. | properties with the same name in different contexts. | |||
Since Version: This defines the JSContact version on which this enum | Since Version: The JSContact version on which the enum value | |||
value definition is based on. The version MUST be one of the | definition is based. The version MUST be one of the allowed | |||
allowed values of the version property in the JSContact Enum Value | values of the version property in the "JSContact Version" registry | |||
registry (see Table 1). | (see Table 1). | |||
Until Version: This defines the JSContact version after which this | Until Version: The JSContact version after which the enum value | |||
enum value definition got obsoleted and MUST NOT be used in later | definition was obsoleted; therefore, the enum value definition | |||
versions. The Until Version value either MUST be not set, or one | MUST NOT be used in later versions. The Until Version value | |||
of the allowed values of the version property in the JSContact | either MUST NOT be set or MUST be one of the allowed values of the | |||
Enum Value registry (see Table 1). | version property in the "JSContact Version" registry (see | |||
Table 1). | ||||
Change Controller: This is who may request a change to this entry's | Change Controller: Person or entity responsible for requesting a | |||
definition (IETF for RFCs from the IETF stream). | change to the entry's definition ("IETF" for RFCs from the IETF | |||
stream). | ||||
Initial Contents: This is the initial list of defined values for | Reference or Description: A brief description or RFC number and | |||
this enum, using the template defined in Section 3.7.2. A | section reference for the semantics of the value. | |||
subregistry will be created with these values for this property | ||||
name/context tuple. | ||||
3.7.2. "JSContact Enum Values" Registry Value Template | Note that the initial contents will be the initial list of defined | |||
values for the enum, using the template defined in Section 3.7.2. A | ||||
subregistry will be created with these values for this property name/ | ||||
context tuple. | ||||
3.7.2. JSContact Enum Values Registry Value Template | ||||
This template is for adding a new enum value to a subregistry in the | This template is for adding a new enum value to a subregistry in the | |||
JSContact Enum registry. | "JSContact Enum Values" registry. | |||
Enum Value: The verbatim value of the enum. | Enum Value: The verbatim value of the enum. | |||
Reference or Description: A brief description or RFC number and | ||||
section reference for the semantics of this value. | ||||
Since Version: The JSContact version on which the enum value | Since Version: The JSContact version on which the enum value | |||
definition is based on. The version MUST be one of the allowed | definition is based. The version MUST be one of the allowed | |||
values of the version property in the JSContact Enum Value | values of the version property in the "JSContact Version" registry | |||
registry (see Table 1). | (see Table 1). | |||
Until Version: The JSContact version after which this enum value got | Until Version: The JSContact version after which the enum value was | |||
obsoleted and MUST NOT be used in later versions. The Until | obsoleted; therefore, the enum value MUST NOT be used in later | |||
Version value either MUST be not set, or one of the allowed values | versions. The Until Version value either MUST NOT be set or MUST | |||
of the version property in the JSContact Enum Value registry (see | be one of the allowed values of the version property in the | |||
Table 1). | "JSContact Version" registry (see Table 1). | |||
3.7.3. Initial Contents for the "JSContact Enum Values" Registry | Change Controller: Person or entity responsible for requesting a | |||
change to the entry's definition ("IETF" for RFCs from the IETF | ||||
stream). | ||||
For each subregistry created in this section, all RFC section | Reference or Description: A brief description or RFC number and | |||
references are for [I-D.ietf-calext-jscontact]. For all entries, the | section reference for the semantics of the value. | |||
Since Version is 1.0, the Until Version is not set, the Change | ||||
Controller is IETF. | 3.7.3. Initial Contents of the JSContact Enum Values Registry | |||
For all entries in each subregistry created in this section, the | ||||
Since Version is "1.0", the Until Version is not set, the Change | ||||
Controller is "IETF", and RFC section references are for RFC 9553. | ||||
Property Name: contexts | Property Name: contexts | |||
Context: Address | Context: Address | |||
Initial Contents: | Initial Contents: | |||
+============+==========================+ | +============+==========================+ | |||
| Enum Value | Reference or Description | | | Enum Value | Reference or Description | | |||
+============+==========================+ | +============+==========================+ | |||
| billing | Section 2.5.1 | | | billing | Section 2.5.1.1 | | |||
+------------+--------------------------+ | +------------+--------------------------+ | |||
| delivery | Section 2.5.1 | | | delivery | Section 2.5.1.1 | | |||
+------------+--------------------------+ | +------------+--------------------------+ | |||
| private | Section 1.5.1 | | | private | Section 1.5.1 | | |||
+------------+--------------------------+ | +------------+--------------------------+ | |||
| work | Section 1.5.1 | | | work | Section 1.5.1 | | |||
+------------+--------------------------+ | +------------+--------------------------+ | |||
Table 6: JSContact Enum Values for | Table 6: JSContact Enum Values for | |||
contexts (Context: Address) | contexts (Context: Address) | |||
Property Name: contexts | Property Name: contexts | |||
skipping to change at page 75, line 34 ¶ | skipping to change at line 3462 ¶ | |||
Table 8: JSContact Enum Values for | Table 8: JSContact Enum Values for | |||
features (Context: Phone) | features (Context: Phone) | |||
Property Name: grammaticalGender | Property Name: grammaticalGender | |||
Context: SpeakToAs | Context: SpeakToAs | |||
Initial Contents: | Initial Contents: | |||
+============+==========================+ | +============+==========================+ | |||
| Enum Value | Reference or Description | | | Enum Value | Reference or Description | | |||
+============+==========================+ | +============+==========================+ | |||
| animate | Section 2.2.3 | | | animate | Section 2.2.4 | | |||
+------------+--------------------------+ | +------------+--------------------------+ | |||
| common | Section 2.2.3 | | | common | Section 2.2.4 | | |||
+------------+--------------------------+ | +------------+--------------------------+ | |||
| feminine | Section 2.2.3 | | | feminine | Section 2.2.4 | | |||
+------------+--------------------------+ | +------------+--------------------------+ | |||
| inanimate | Section 2.2.3 | | | inanimate | Section 2.2.4 | | |||
+------------+--------------------------+ | +------------+--------------------------+ | |||
| masculine | Section 2.2.3 | | | masculine | Section 2.2.4 | | |||
+------------+--------------------------+ | +------------+--------------------------+ | |||
| neuter | Section 2.2.3 | | | neuter | Section 2.2.4 | | |||
+------------+--------------------------+ | +------------+--------------------------+ | |||
Table 9: JSContact Enum Values for | Table 9: JSContact Enum Values for | |||
kind (Context: SpeakToAs) | grammaticalGender (Context: | |||
SpeakToAs) | ||||
Property Name: kind | Property Name: kind | |||
Context: AddressComponent | Context: AddressComponent | |||
Initial Contents: | Initial Contents: | |||
+===============+==========================+ | +===============+==========================+ | |||
| Enum Value | Reference or Description | | | Enum Value | Reference or Description | | |||
+===============+==========================+ | +===============+==========================+ | |||
| apartment | Section 2.5.1 | | | apartment | Section 2.5.1.2 | | |||
+---------------+--------------------------+ | +---------------+--------------------------+ | |||
| block | Section 2.5.1 | | | block | Section 2.5.1.2 | | |||
+---------------+--------------------------+ | +---------------+--------------------------+ | |||
| building | Section 2.5.1 | | | building | Section 2.5.1.2 | | |||
+---------------+--------------------------+ | +---------------+--------------------------+ | |||
| country | Section 2.5.1 | | | country | Section 2.5.1.2 | | |||
+---------------+--------------------------+ | +---------------+--------------------------+ | |||
| direction | Section 2.5.1 | | | direction | Section 2.5.1.2 | | |||
+---------------+--------------------------+ | +---------------+--------------------------+ | |||
| district | Section 2.5.1 | | | district | Section 2.5.1.2 | | |||
+---------------+--------------------------+ | +---------------+--------------------------+ | |||
| floor | Section 2.5.1 | | | floor | Section 2.5.1.2 | | |||
+---------------+--------------------------+ | +---------------+--------------------------+ | |||
| landmark | Section 2.5.1 | | | landmark | Section 2.5.1.2 | | |||
+---------------+--------------------------+ | +---------------+--------------------------+ | |||
| locality | Section 2.5.1 | | | locality | Section 2.5.1.2 | | |||
+---------------+--------------------------+ | +---------------+--------------------------+ | |||
| name | Section 2.5.1 | | | name | Section 2.5.1.2 | | |||
+---------------+--------------------------+ | +---------------+--------------------------+ | |||
| number | Section 2.5.1 | | | number | Section 2.5.1.2 | | |||
+---------------+--------------------------+ | +---------------+--------------------------+ | |||
| postcode | Section 2.5.1 | | | postcode | Section 2.5.1.2 | | |||
+---------------+--------------------------+ | +---------------+--------------------------+ | |||
| postOfficeBox | Section 2.5.1 | | | postOfficeBox | Section 2.5.1.2 | | |||
+---------------+--------------------------+ | +---------------+--------------------------+ | |||
| region | Section 2.5.1 | | | region | Section 2.5.1.2 | | |||
+---------------+--------------------------+ | +---------------+--------------------------+ | |||
| room | Section 2.5.1 | | | room | Section 2.5.1.2 | | |||
+---------------+--------------------------+ | +---------------+--------------------------+ | |||
| separator | Section 2.5.1 | | | separator | Section 2.5.1.2 | | |||
+---------------+--------------------------+ | +---------------+--------------------------+ | |||
| subdistrict | Section 2.5.1 | | | subdistrict | Section 2.5.1.2 | | |||
+---------------+--------------------------+ | +---------------+--------------------------+ | |||
Table 10: JSContact Enum Values for kind | Table 10: JSContact Enum Values for kind | |||
(Context: AddressComponent) | (Context: AddressComponent) | |||
Property Name: kind | Property Name: kind | |||
Context: Anniversary | Context: Anniversary | |||
Initial Contents: | Initial Contents: | |||
+============+==========================+ | +============+==========================+ | |||
| Enum Value | Reference or Description | | | Enum Value | Reference or Description | | |||
+============+==========================+ | +============+==========================+ | |||
| birth | Section 2.8.1 | | | birth | Section 2.8.1 | | |||
+------------+--------------------------+ | +------------+--------------------------+ | |||
| death | Section 2.8.1 | | | death | Section 2.8.1 | | |||
+------------+--------------------------+ | +------------+--------------------------+ | |||
| wedding | Section 2.8.1 | | | wedding | Section 2.8.1 | | |||
+------------+--------------------------+ | +------------+--------------------------+ | |||
skipping to change at page 79, line 4 ¶ | skipping to change at line 3620 ¶ | |||
+------------+--------------------------+ | +------------+--------------------------+ | |||
| sound | Section 2.6.4 | | | sound | Section 2.6.4 | | |||
+------------+--------------------------+ | +------------+--------------------------+ | |||
Table 16: JSContact Enum Values for | Table 16: JSContact Enum Values for | |||
kind (Context: Media) | kind (Context: Media) | |||
Property Name: kind | Property Name: kind | |||
Context: NameComponent | Context: NameComponent | |||
Initial Contents: | Initial Contents: | |||
+============+==========================+ | +============+==========================+ | |||
| Enum Value | Reference or Description | | | Enum Value | Reference or Description | | |||
+============+==========================+ | +============+==========================+ | |||
| credential | Section 2.2.1 | | | credential | Section 2.2.1.2 | | |||
+------------+--------------------------+ | +------------+--------------------------+ | |||
| generation | Section 2.2.1 | | | generation | Section 2.2.1.2 | | |||
+------------+--------------------------+ | +------------+--------------------------+ | |||
| given | Section 2.2.1 | | | given | Section 2.2.1.2 | | |||
+------------+--------------------------+ | +------------+--------------------------+ | |||
| given2 | Section 2.2.1 | | | given2 | Section 2.2.1.2 | | |||
+------------+--------------------------+ | +------------+--------------------------+ | |||
| separator | Section 2.2.1 | | | separator | Section 2.2.1.2 | | |||
+------------+--------------------------+ | +------------+--------------------------+ | |||
| surname | Section 2.2.1 | | | surname | Section 2.2.1.2 | | |||
+------------+--------------------------+ | +------------+--------------------------+ | |||
| surname2 | Section 2.2.1 | | | surname2 | Section 2.2.1.2 | | |||
+------------+--------------------------+ | +------------+--------------------------+ | |||
| title | Section 2.2.1 | | | title | Section 2.2.1.2 | | |||
+------------+--------------------------+ | +------------+--------------------------+ | |||
Table 17: JSContact Enum Values for | Table 17: JSContact Enum Values for | |||
kind (Context: NameComponent) | kind (Context: NameComponent) | |||
Property Name: kind | Property Name: kind | |||
Context: PersonalInfo | Context: PersonalInfo | |||
Initial Contents: | Initial Contents: | |||
+============+==========================+ | +============+==========================+ | |||
| Enum Value | Reference or Description | | | Enum Value | Reference or Description | | |||
skipping to change at page 80, line 4 ¶ | skipping to change at line 3662 ¶ | |||
+------------+--------------------------+ | +------------+--------------------------+ | |||
| interest | Section 2.8.4 | | | interest | Section 2.8.4 | | |||
+------------+--------------------------+ | +------------+--------------------------+ | |||
Table 18: JSContact Enum Values for | Table 18: JSContact Enum Values for | |||
kind (Context: PersonalInfo) | kind (Context: PersonalInfo) | |||
Property Name: kind | Property Name: kind | |||
Context: Title | Context: Title | |||
Initial Contents: | Initial Contents: | |||
+============+==========================+ | +============+==========================+ | |||
| Enum Value | Reference or Description | | | Enum Value | Reference or Description | | |||
+============+==========================+ | +============+==========================+ | |||
| role | Section 2.2.4 | | | role | Section 2.2.5 | | |||
+------------+--------------------------+ | +------------+--------------------------+ | |||
| title | Section 2.2.4 | | | title | Section 2.2.5 | | |||
+------------+--------------------------+ | +------------+--------------------------+ | |||
Table 19: JSContact Enum Values for | Table 19: JSContact Enum Values for | |||
kind (Context: Title) | kind (Context: Title) | |||
Property Name: level | Property Name: level | |||
Context: PersonalInfo | Context: PersonalInfo | |||
Initial Contents: | Initial Contents: | |||
+============+==========================+ | +============+==========================+ | |||
| Enum Value | Reference or Description | | | Enum Value | Reference or Description | | |||
skipping to change at page 80, line 32 ¶ | skipping to change at line 3689 ¶ | |||
| high | Section 2.8.4 | | | high | Section 2.8.4 | | |||
+------------+--------------------------+ | +------------+--------------------------+ | |||
| low | Section 2.8.4 | | | low | Section 2.8.4 | | |||
+------------+--------------------------+ | +------------+--------------------------+ | |||
| medium | Section 2.8.4 | | | medium | Section 2.8.4 | | |||
+------------+--------------------------+ | +------------+--------------------------+ | |||
Table 20: JSContact Enum Values for | Table 20: JSContact Enum Values for | |||
level (Context: PersonalInfo) | level (Context: PersonalInfo) | |||
Property Name: phoneticSystem | ||||
Context: Address, Name | ||||
Initial Contents: | ||||
+============+==========================+ | ||||
| Enum Value | Reference or Description | | ||||
+============+==========================+ | ||||
| ipa | Section 1.5.4 | | ||||
+------------+--------------------------+ | ||||
| jyut | Section 1.5.4 | | ||||
+------------+--------------------------+ | ||||
| piny | Section 1.5.4 | | ||||
+------------+--------------------------+ | ||||
Table 21: JSContact Enum Values for | ||||
phoneticSystem (Context: Address, | ||||
Name) | ||||
Property Name: relation | Property Name: relation | |||
Context: Relation | Context: Relation | |||
Initial Contents: | Initial Contents: | |||
+==============+==========================+ | +==============+==========================+ | |||
| Enum Value | Reference or Description | | | Enum Value | Reference or Description | | |||
+==============+==========================+ | +==============+==========================+ | |||
| acquaintance | Section 2.1.8 | | | acquaintance | Section 2.1.8 | | |||
+--------------+--------------------------+ | +--------------+--------------------------+ | |||
| agent | Section 2.1.8 | | | agent | Section 2.1.8 | | |||
+--------------+--------------------------+ | +--------------+--------------------------+ | |||
| child | Section 2.1.8 | | | child | Section 2.1.8 | | |||
+--------------+--------------------------+ | +--------------+--------------------------+ | |||
| colleague | Section 2.1.8 | | | colleague | Section 2.1.8 | | |||
skipping to change at page 81, line 49 ¶ | skipping to change at line 3753 ¶ | |||
+--------------+--------------------------+ | +--------------+--------------------------+ | |||
| parent | Section 2.1.8 | | | parent | Section 2.1.8 | | |||
+--------------+--------------------------+ | +--------------+--------------------------+ | |||
| sibling | Section 2.1.8 | | | sibling | Section 2.1.8 | | |||
+--------------+--------------------------+ | +--------------+--------------------------+ | |||
| spouse | Section 2.1.8 | | | spouse | Section 2.1.8 | | |||
+--------------+--------------------------+ | +--------------+--------------------------+ | |||
| sweetheart | Section 2.1.8 | | | sweetheart | Section 2.1.8 | | |||
+--------------+--------------------------+ | +--------------+--------------------------+ | |||
Table 21: JSContact Enum Values for | Table 22: JSContact Enum Values for | |||
relation (Context: Relation) | relation (Context: Relation) | |||
Property Name: phoneticSystem | ||||
Context: Address, Name | ||||
Initial Contents: | ||||
+============+==========================+ | ||||
| Enum Value | Reference or Description | | ||||
+============+==========================+ | ||||
| ipa | Section 1.5.5 | | ||||
+------------+--------------------------+ | ||||
| jyut | Section 1.5.5 | | ||||
+------------+--------------------------+ | ||||
| piny | Section 1.5.5 | | ||||
+------------+--------------------------+ | ||||
Table 22: JSContact Enum Values for | ||||
phoneticSystem (Context: Address, | ||||
Name) | ||||
4. Security Considerations | 4. Security Considerations | |||
Contact information is very privacy-sensitive. It can reveal the | Contact information is very privacy sensitive. It can reveal the | |||
identity, location and credentials information, employment status, | identity, location, credentials information, employment status, | |||
interests and hobbies, and social network of a user. Its | interests and hobbies, and social network of a user. Its | |||
transmission and storage must be done carefully to protect it from | transmission and storage must be done carefully to protect it from | |||
possible threats, such as eavesdropping, replay, message insertion, | possible threats such as eavesdropping, replay, message insertion, | |||
deletion, modification, and on-path attacks. | deletion, modification, and on-path attacks. | |||
The data being stored and transmitted may be used in systems with | The data being stored and transmitted may be used in systems with | |||
real-world consequences. For example, a malicious actor might | real-world consequences. For example, a malicious actor might | |||
provide JSContact data that uses the name of another person but | provide JSContact data that uses the name of another person but | |||
insert their contact details to impersonate the unknown victim. Such | insert their contact details to impersonate the unknown victim. Such | |||
systems must be careful to authenticate all data they receive to | systems must be careful to authenticate all data they receive to | |||
prevent them from being subverted and ensure the change comes from an | prevent them from being subverted and ensure the change comes from an | |||
authorized entity. | authorized entity. | |||
skipping to change at page 83, line 45 ¶ | skipping to change at line 3829 ¶ | |||
number of URIs. In the case of published address books with a large | number of URIs. In the case of published address books with a large | |||
number of subscribers, such objects could be widely distributed. | number of subscribers, such objects could be widely distributed. | |||
Implementations should be careful to limit the automatic fetching of | Implementations should be careful to limit the automatic fetching of | |||
linked resources to reduce the risk of this being an amplification | linked resources to reduce the risk of this being an amplification | |||
vector for a denial-of-service attack. | vector for a denial-of-service attack. | |||
5. References | 5. References | |||
5.1. Normative References | 5.1. Normative References | |||
[IANATZ] "IANA Time Zone Database", | [IANA-TZ] IANA, "Time Zone Database", | |||
<https://www.iana.org/time-zones>. | <https://www.iana.org/time-zones>. | |||
[IANAvCard] | [IANA-vCard] | |||
"IANA vCard Elements", <https://www.iana.org/assignments/ | IANA, "vCard Elements", | |||
vcard-elements/vcard-elements.xhtml>. | <https://www.iana.org/assignments/vcard-elements>. | |||
[ISO.3166-1.2006] | [ISO.3166-1] | |||
International Organization for Standardization, "Codes for | International Organization for Standardization, "Codes for | |||
the representation of names of countries, 3rd edition", | the representation of names of countries and their | |||
ISO Standard 3166-1, 2006. | subdivisions -- Part 1: Country codes", ISO 3166-1:2020, | |||
August 2020. | ||||
[RFC1034] Mockapetris, P., "Domain names - concepts and facilities", | [RFC1034] Mockapetris, P., "Domain names - concepts and facilities", | |||
STD 13, RFC 1034, DOI 10.17487/RFC1034, November 1987, | STD 13, RFC 1034, DOI 10.17487/RFC1034, November 1987, | |||
<https://www.rfc-editor.org/info/rfc1034>. | <https://www.rfc-editor.org/info/rfc1034>. | |||
[RFC1035] Mockapetris, P., "Domain names - implementation and | [RFC1035] Mockapetris, P., "Domain names - implementation and | |||
specification", STD 13, RFC 1035, DOI 10.17487/RFC1035, | specification", STD 13, RFC 1035, DOI 10.17487/RFC1035, | |||
November 1987, <https://www.rfc-editor.org/info/rfc1035>. | November 1987, <https://www.rfc-editor.org/info/rfc1035>. | |||
[RFC2046] Freed, N. and N. Borenstein, "Multipurpose Internet Mail | [RFC2046] Freed, N. and N. Borenstein, "Multipurpose Internet Mail | |||
skipping to change at page 86, line 5 ¶ | skipping to change at line 3934 ¶ | |||
2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | |||
May 2017, <https://www.rfc-editor.org/info/rfc8174>. | May 2017, <https://www.rfc-editor.org/info/rfc8174>. | |||
[RFC8259] Bray, T., Ed., "The JavaScript Object Notation (JSON) Data | [RFC8259] Bray, T., Ed., "The JavaScript Object Notation (JSON) Data | |||
Interchange Format", STD 90, RFC 8259, | Interchange Format", STD 90, RFC 8259, | |||
DOI 10.17487/RFC8259, December 2017, | DOI 10.17487/RFC8259, December 2017, | |||
<https://www.rfc-editor.org/info/rfc8259>. | <https://www.rfc-editor.org/info/rfc8259>. | |||
5.2. Informative References | 5.2. Informative References | |||
[I-D.ietf-calext-jscontact] | [IPA] IPA, "International Phonetic Alphabet", | |||
Stepanek, R. and M. Loffredo, "JSContact: A JSON | ||||
representation of contact data", Work in Progress, | ||||
Internet-Draft, draft-ietf-calext-jscontact-15, 18 | ||||
September 2023, <https://datatracker.ietf.org/doc/html/ | ||||
draft-ietf-calext-jscontact-15>. | ||||
[I-D.ietf-uuidrev-rfc4122bis] | ||||
Davis, K. R., Peabody, B., and P. Leach, "Universally | ||||
Unique IDentifiers (UUID)", Work in Progress, Internet- | ||||
Draft, draft-ietf-uuidrev-rfc4122bis-14, 6 November 2023, | ||||
<https://datatracker.ietf.org/doc/html/draft-ietf-uuidrev- | ||||
rfc4122bis-14>. | ||||
[IPA] "International Phonetic Alphabet", | ||||
<https://www.internationalphoneticalphabet.org/>. | <https://www.internationalphoneticalphabet.org/>. | |||
[RFC3261] Rosenberg, J., Schulzrinne, H., Camarillo, G., Johnston, | [RFC3261] Rosenberg, J., Schulzrinne, H., Camarillo, G., Johnston, | |||
A., Peterson, J., Sparks, R., Handley, M., and E. | A., Peterson, J., Sparks, R., Handley, M., and E. | |||
Schooler, "SIP: Session Initiation Protocol", RFC 3261, | Schooler, "SIP: Session Initiation Protocol", RFC 3261, | |||
DOI 10.17487/RFC3261, June 2002, | DOI 10.17487/RFC3261, June 2002, | |||
<https://www.rfc-editor.org/info/rfc3261>. | <https://www.rfc-editor.org/info/rfc3261>. | |||
[RFC3966] Schulzrinne, H., "The tel URI for Telephone Numbers", | [RFC3966] Schulzrinne, H., "The tel URI for Telephone Numbers", | |||
RFC 3966, DOI 10.17487/RFC3966, December 2004, | RFC 3966, DOI 10.17487/RFC3966, December 2004, | |||
skipping to change at page 87, line 28 ¶ | skipping to change at line 3992 ¶ | |||
[RFC8499] Hoffman, P., Sullivan, A., and K. Fujiwara, "DNS | [RFC8499] Hoffman, P., Sullivan, A., and K. Fujiwara, "DNS | |||
Terminology", BCP 219, RFC 8499, DOI 10.17487/RFC8499, | Terminology", BCP 219, RFC 8499, DOI 10.17487/RFC8499, | |||
January 2019, <https://www.rfc-editor.org/info/rfc8499>. | January 2019, <https://www.rfc-editor.org/info/rfc8499>. | |||
[RFC8605] Hollenbeck, S. and R. Carney, "vCard Format Extensions: | [RFC8605] Hollenbeck, S. and R. Carney, "vCard Format Extensions: | |||
ICANN Extensions for the Registration Data Access Protocol | ICANN Extensions for the Registration Data Access Protocol | |||
(RDAP)", RFC 8605, DOI 10.17487/RFC8605, May 2019, | (RDAP)", RFC 8605, DOI 10.17487/RFC8605, May 2019, | |||
<https://www.rfc-editor.org/info/rfc8605>. | <https://www.rfc-editor.org/info/rfc8605>. | |||
[UBiDi] "Unicode® Standard Annex #9: Unicode Bidirectional | [RFC9554] Stepanek, R. and M. Loffredo, "vCard Format Extension for | |||
Algorithm", <https://www.unicode.org/reports/tr9/>. | JSContact", RFC 9554, DOI 10.17487/RFC9554, March 2024, | |||
<https://www.rfc-editor.org/info/rfc9554>. | ||||
[W3C-URL] "W3C WG URL - Living Standard — Last Updated 21 August | [RFC9555] Stepanek, R. and M. Loffredo, "vCard Format Extension for | |||
2023", <https://url.spec.whatwg.org>. | JSContact", RFC 9555, DOI 10.17487/RFC9555, March 2024, | |||
<https://www.rfc-editor.org/info/rfc9555>. | ||||
[UBiDi] The Unicode Consortium, "Unicode Standard Annex #9: | ||||
Unicode Bidirectional Algorithm", Revision 48, | ||||
Unicode 15.1.0, August 2023, | ||||
<https://www.unicode.org/reports/tr9/>. | ||||
[UUID] Davis, K. R., Peabody, B. G., and P. Leach, "Universally | ||||
Unique IDentifiers (UUID)", Work in Progress, Internet- | ||||
Draft, draft-ietf-uuidrev-rfc4122bis-14, 6 November 2023, | ||||
<https://datatracker.ietf.org/doc/html/draft-ietf-uuidrev- | ||||
rfc4122bis-14>. | ||||
[WHATWG-URL] | ||||
WHATWG, "URL Living Standard", January 2024, | ||||
<https://url.spec.whatwg.org>. | ||||
Authors' Addresses | Authors' Addresses | |||
Robert Stepanek | Robert Stepanek | |||
Fastmail | Fastmail | |||
PO Box 234, Collins St West | PO Box 234 | |||
Melbourne VIC 8007 | Collins St. West | |||
Melbourne VIC 8007 | ||||
Australia | Australia | |||
Email: rsto@fastmailteam.com | Email: rsto@fastmailteam.com | |||
Mario Loffredo | Mario Loffredo | |||
IIT-CNR | IIT-CNR | |||
Via Moruzzi,1 | Via Moruzzi, 1 | |||
56124 Pisa | 56124 Pisa | |||
Italy | Italy | |||
Email: mario.loffredo@iit.cnr.it | Email: mario.loffredo@iit.cnr.it | |||
End of changes. 604 change blocks. | ||||
1923 lines changed or deleted | 1935 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. |