| 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. | ||||