| rfc9555.original | rfc9555.txt | |||
|---|---|---|---|---|
| calext M. Loffredo | Internet Engineering Task Force (IETF) M. Loffredo | |||
| Internet-Draft IIT-CNR/Registro.it | Request for Comments: 9555 IIT-CNR/Registro.it | |||
| Updates: 6350 (if approved) R. Stepanek | Updates: 6350 R. Stepanek | |||
| Intended status: Standards Track Fastmail | Category: Standards Track Fastmail | |||
| Expires: 21 March 2024 18 September 2023 | ISSN: 2070-1721 March 2024 | |||
| JSContact: Converting from and to vCard | JSContact: Converting from and to vCard | |||
| draft-ietf-calext-jscontact-vcard-13 | ||||
| Abstract | Abstract | |||
| This document defines how to convert contact information between the | This document defines how to convert contact information between the | |||
| JSContact and vCard data formats. To achieve this, it updates RFC I- | JSContact and vCard data formats. To achieve this, it updates | |||
| D.ietf-calext-jscontact (JSContact) by registering new JSContact | [RFC9553] ("JSContact: A JSON Representation of Contact Data") by | |||
| properties. Similarly, it updates RFC 6350 (vCard) by registering | registering new JSContact properties. Similarly, it updates RFC 6350 | |||
| new vCard properties and parameters. | ("vCard Format Specification") by registering new vCard properties | |||
| and parameters. | ||||
| 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 21 March 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/rfc9555. | ||||
| 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. | ||||
| This document may contain material from IETF Documents or IETF | This document may contain material from IETF Documents or IETF | |||
| Contributions published or made publicly available before November | Contributions published or made publicly available before November | |||
| 10, 2008. The person(s) controlling the copyright in some of this | 10, 2008. The person(s) controlling the copyright in some of this | |||
| material may not have granted the IETF Trust the right to allow | material may not have granted the IETF Trust the right to allow | |||
| modifications of such material outside the IETF Standards Process. | modifications of such material outside the IETF Standards Process. | |||
| Without obtaining an adequate license from the person(s) controlling | Without obtaining an adequate license from the person(s) controlling | |||
| the copyright in such materials, this document may not be modified | the copyright in such materials, this document may not be modified | |||
| outside the IETF Standards Process, and derivative works of it may | outside the IETF Standards Process, and derivative works of it may | |||
| not be created outside the IETF Standards Process, except to format | not be created outside the IETF Standards Process, except to format | |||
| it for publication as an RFC or to translate it into languages other | it for publication as an RFC or to translate it into languages other | |||
| than English. | than English. | |||
| Table of Contents | Table of Contents | |||
| 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 4 | 1. Introduction | |||
| 1.1. Motivation . . . . . . . . . . . . . . . . . . . . . . . 5 | 1.1. Motivation | |||
| 1.2. Notational Conventions . . . . . . . . . . . . . . . . . 5 | 1.2. Notational Conventions | |||
| 1.3. ABNF Notations . . . . . . . . . . . . . . . . . . . . . 5 | 1.3. ABNF Notations | |||
| 2. Converting vCard to JSContact . . . . . . . . . . . . . . . . 5 | 2. Converting vCard to JSContact | |||
| 2.1. General rules . . . . . . . . . . . . . . . . . . . . . . 5 | 2.1. General Rules | |||
| 2.1.1. The uid property . . . . . . . . . . . . . . . . . . 6 | 2.1.1. The uid Property | |||
| 2.1.2. Choosing identifiers . . . . . . . . . . . . . . . . 6 | 2.1.2. Choosing Identifiers | |||
| 2.2. vCard Value Data Types . . . . . . . . . . . . . . . . . 6 | 2.2. vCard Value Data Types | |||
| 2.2.1. BOOLEAN . . . . . . . . . . . . . . . . . . . . . . . 6 | 2.2.1. BOOLEAN | |||
| 2.2.2. DATE, TIME, DATE-TIME, DATE-AND-OR-TIME, and | 2.2.2. DATE, TIME, DATE-TIME, DATE-AND-OR-TIME, and TIMESTAMP | |||
| TIMESTAMP . . . . . . . . . . . . . . . . . . . . . . 6 | 2.2.3. INTEGER | |||
| 2.2.3. INTEGER . . . . . . . . . . . . . . . . . . . . . . . 6 | 2.2.4. FLOAT | |||
| 2.2.4. FLOAT . . . . . . . . . . . . . . . . . . . . . . . . 7 | 2.2.5. LANGUAGE-TAG | |||
| 2.2.5. LANGUAGE-TAG . . . . . . . . . . . . . . . . . . . . 7 | 2.2.6. TEXT | |||
| 2.2.6. TEXT . . . . . . . . . . . . . . . . . . . . . . . . 7 | 2.2.7. URI | |||
| 2.2.7. URI . . . . . . . . . . . . . . . . . . . . . . . . . 7 | 2.2.8. UTC-OFFSET | |||
| 2.2.8. UTC-OFFSET . . . . . . . . . . . . . . . . . . . . . 7 | 2.3. vCard Parameters | |||
| 2.3. vCard Parameters . . . . . . . . . . . . . . . . . . . . 7 | 2.3.1. ALTID | |||
| 2.3.1. ALTID . . . . . . . . . . . . . . . . . . . . . . . . 7 | 2.3.2. AUTHOR | |||
| 2.3.2. AUTHOR . . . . . . . . . . . . . . . . . . . . . . . 7 | 2.3.3. AUTHOR-NAME | |||
| 2.3.3. AUTHOR-NAME . . . . . . . . . . . . . . . . . . . . . 8 | 2.3.4. CALSCALE | |||
| 2.3.4. CALSCALE . . . . . . . . . . . . . . . . . . . . . . 8 | 2.3.5. CREATED | |||
| 2.3.5. CREATED . . . . . . . . . . . . . . . . . . . . . . . 8 | 2.3.6. DERIVED | |||
| 2.3.6. DERIVED . . . . . . . . . . . . . . . . . . . . . . . 8 | 2.3.7. GEO | |||
| 2.3.7. GEO . . . . . . . . . . . . . . . . . . . . . . . . . 8 | 2.3.8. GROUP | |||
| 2.3.8. GROUP . . . . . . . . . . . . . . . . . . . . . . . . 8 | 2.3.9. INDEX | |||
| 2.3.9. INDEX . . . . . . . . . . . . . . . . . . . . . . . . 9 | 2.3.10. LANGUAGE | |||
| 2.3.10. LANGUAGE . . . . . . . . . . . . . . . . . . . . . . 9 | 2.3.11. LEVEL | |||
| 2.3.11. LEVEL . . . . . . . . . . . . . . . . . . . . . . . . 12 | 2.3.12. MEDIATYPE | |||
| 2.3.12. MEDIATYPE . . . . . . . . . . . . . . . . . . . . . . 12 | 2.3.13. PHONETIC | |||
| 2.3.13. PHONETIC . . . . . . . . . . . . . . . . . . . . . . 12 | 2.3.14. PID | |||
| 2.3.14. PID . . . . . . . . . . . . . . . . . . . . . . . . . 14 | 2.3.15. PREF | |||
| 2.3.15. PREF . . . . . . . . . . . . . . . . . . . . . . . . 14 | 2.3.16. PROP-ID | |||
| 2.3.16. PROP-ID . . . . . . . . . . . . . . . . . . . . . . . 14 | 2.3.17. SCRIPT | |||
| 2.3.17. SCRIPT . . . . . . . . . . . . . . . . . . . . . . . 14 | 2.3.18. SERVICE-TYPE | |||
| 2.3.18. SERVICE-TYPE . . . . . . . . . . . . . . . . . . . . 14 | 2.3.19. SORT-AS | |||
| 2.3.19. SORT-AS . . . . . . . . . . . . . . . . . . . . . . . 15 | 2.3.20. TYPE | |||
| 2.3.20. TYPE . . . . . . . . . . . . . . . . . . . . . . . . 15 | 2.3.21. TZ | |||
| 2.3.21. TZ . . . . . . . . . . . . . . . . . . . . . . . . . 15 | 2.3.22. USERNAME | |||
| 2.3.22. USERNAME . . . . . . . . . . . . . . . . . . . . . . 15 | 2.3.23. VALUE | |||
| 2.3.23. VALUE . . . . . . . . . . . . . . . . . . . . . . . . 15 | 2.4. General Properties | |||
| 2.4. General Properties . . . . . . . . . . . . . . . . . . . 15 | 2.4.1. BEGIN and END | |||
| 2.4.1. BEGIN and END . . . . . . . . . . . . . . . . . . . . 15 | 2.4.2. KIND | |||
| 2.4.2. KIND . . . . . . . . . . . . . . . . . . . . . . . . 15 | 2.4.3. SOURCE | |||
| 2.4.3. SOURCE . . . . . . . . . . . . . . . . . . . . . . . 16 | 2.4.4. XML | |||
| 2.4.4. XML . . . . . . . . . . . . . . . . . . . . . . . . . 16 | 2.5. Identification Properties | |||
| 2.5. Identification Properties . . . . . . . . . . . . . . . . 16 | 2.5.1. BDAY, BIRTHPLACE, DEATHDATE, DEATHPLACE, and | |||
| 2.5.1. BDAY, BIRTHPLACE, DEATHDATE, DEATHPLACE, | ANNIVERSARY | |||
| ANNIVERSARY . . . . . . . . . . . . . . . . . . . . . 16 | 2.5.2. FN | |||
| 2.5.2. FN . . . . . . . . . . . . . . . . . . . . . . . . . 18 | 2.5.3. GENDER | |||
| 2.5.3. GENDER . . . . . . . . . . . . . . . . . . . . . . . 18 | 2.5.4. GRAMGENDER and PRONOUNS | |||
| 2.5.4. GRAMGENDER and PRONOUNS . . . . . . . . . . . . . . . 18 | 2.5.5. N | |||
| 2.5.5. N . . . . . . . . . . . . . . . . . . . . . . . . . . 19 | 2.5.6. NICKNAME | |||
| 2.5.6. NICKNAME . . . . . . . . . . . . . . . . . . . . . . 21 | 2.5.7. PHOTO | |||
| 2.5.7. PHOTO . . . . . . . . . . . . . . . . . . . . . . . . 22 | 2.6. Delivery Addressing Properties | |||
| 2.6. Delivery Addressing Properties . . . . . . . . . . . . . 22 | 2.6.1. ADR | |||
| 2.6.1. ADR . . . . . . . . . . . . . . . . . . . . . . . . . 22 | 2.7. Communications Properties | |||
| 2.7. Communications Properties . . . . . . . . . . . . . . . . 25 | 2.7.1. EMAIL | |||
| 2.7.1. EMAIL . . . . . . . . . . . . . . . . . . . . . . . . 25 | 2.7.2. IMPP | |||
| 2.7.2. IMPP . . . . . . . . . . . . . . . . . . . . . . . . 26 | 2.7.3. LANG | |||
| 2.7.3. LANG . . . . . . . . . . . . . . . . . . . . . . . . 26 | 2.7.4. LANGUAGE | |||
| 2.7.4. LANGUAGE . . . . . . . . . . . . . . . . . . . . . . 27 | 2.7.5. SOCIALPROFILE | |||
| 2.7.5. SOCIALPROFILE . . . . . . . . . . . . . . . . . . . . 27 | 2.7.6. TEL | |||
| 2.7.6. TEL . . . . . . . . . . . . . . . . . . . . . . . . . 28 | 2.8. Geographical Properties | |||
| 2.8. Geographical Properties . . . . . . . . . . . . . . . . . 29 | 2.8.1. GEO | |||
| 2.8.1. GEO . . . . . . . . . . . . . . . . . . . . . . . . . 29 | 2.8.2. TZ | |||
| 2.8.2. TZ . . . . . . . . . . . . . . . . . . . . . . . . . 29 | 2.8.3. Combining Geographical Properties | |||
| 2.8.3. Combining geographical properties . . . . . . . . . . 30 | 2.9. Organizational Properties | |||
| 2.9. Organizational Properties . . . . . . . . . . . . . . . . 30 | 2.9.1. CONTACT-URI | |||
| 2.9.1. CONTACT-URI . . . . . . . . . . . . . . . . . . . . . 30 | 2.9.2. LOGO | |||
| 2.9.2. LOGO . . . . . . . . . . . . . . . . . . . . . . . . 31 | 2.9.3. MEMBER | |||
| 2.9.3. MEMBER . . . . . . . . . . . . . . . . . . . . . . . 31 | 2.9.4. ORG | |||
| 2.9.4. ORG . . . . . . . . . . . . . . . . . . . . . . . . . 32 | 2.9.5. RELATED | |||
| 2.9.5. RELATED . . . . . . . . . . . . . . . . . . . . . . . 32 | 2.9.6. TITLE and ROLE | |||
| 2.9.6. TITLE and ROLE . . . . . . . . . . . . . . . . . . . 33 | 2.10. Personal Information Properties | |||
| 2.10. Personal Information Properties . . . . . . . . . . . . . 34 | 2.10.1. EXPERTISE | |||
| 2.10.1. EXPERTISE . . . . . . . . . . . . . . . . . . . . . 34 | 2.10.2. HOBBY | |||
| 2.10.2. HOBBY . . . . . . . . . . . . . . . . . . . . . . . 35 | 2.10.3. INTEREST | |||
| 2.10.3. INTEREST . . . . . . . . . . . . . . . . . . . . . . 36 | 2.10.4. ORG-DIRECTORY | |||
| 2.10.4. ORG-DIRECTORY . . . . . . . . . . . . . . . . . . . 36 | 2.11. Explanatory Properties | |||
| 2.11. Explanatory Properties . . . . . . . . . . . . . . . . . 37 | 2.11.1. CATEGORIES | |||
| 2.11.1. CATEGORIES . . . . . . . . . . . . . . . . . . . . . 37 | 2.11.2. CLIENTPIDMAP and PID Parameters | |||
| 2.11.2. CLIENTPIDMAP and PID Parameter . . . . . . . . . . . 37 | 2.11.3. CREATED | |||
| 2.11.3. CREATED . . . . . . . . . . . . . . . . . . . . . . 38 | 2.11.4. NOTE | |||
| 2.11.4. NOTE . . . . . . . . . . . . . . . . . . . . . . . . 38 | 2.11.5. PRODID | |||
| 2.11.5. PRODID . . . . . . . . . . . . . . . . . . . . . . . 38 | 2.11.6. REV | |||
| 2.11.6. REV . . . . . . . . . . . . . . . . . . . . . . . . 39 | 2.11.7. SOUND | |||
| 2.11.7. SOUND . . . . . . . . . . . . . . . . . . . . . . . 39 | 2.11.8. UID | |||
| 2.11.8. UID . . . . . . . . . . . . . . . . . . . . . . . . 39 | 2.11.9. URL | |||
| 2.11.9. URL . . . . . . . . . . . . . . . . . . . . . . . . 39 | 2.11.10. VERSION | |||
| 2.11.10. VERSION . . . . . . . . . . . . . . . . . . . . . . 40 | 2.11.11. X-ABLabel | |||
| 2.11.11. X-ABLabel . . . . . . . . . . . . . . . . . . . . . 40 | 2.12. Security Properties | |||
| 2.12. Security Properties . . . . . . . . . . . . . . . . . . . 40 | 2.12.1. KEY | |||
| 2.12.1. KEY . . . . . . . . . . . . . . . . . . . . . . . . 41 | 2.13. Calendar Properties | |||
| 2.13. Calendar Properties . . . . . . . . . . . . . . . . . . . 41 | 2.13.1. CALADRURI | |||
| 2.13.1. CALADRURI . . . . . . . . . . . . . . . . . . . . . 41 | 2.13.2. CALURI | |||
| 2.13.2. CALURI . . . . . . . . . . . . . . . . . . . . . . . 42 | 2.13.3. FBURL | |||
| 2.13.3. FBURL . . . . . . . . . . . . . . . . . . . . . . . 42 | 2.14. Extended Properties and Parameters | |||
| 2.14. Extended Properties and Parameters . . . . . . . . . . . 43 | 2.15. New JSContact Properties | |||
| 2.15. New JSContact properties . . . . . . . . . . . . . . . . 43 | 2.15.1. Property vCardProps | |||
| 2.15.1. Property vCardProps . . . . . . . . . . . . . . . . 43 | 2.15.2. Property vCardParams | |||
| 2.15.2. Property vCardParams . . . . . . . . . . . . . . . . 44 | 2.15.3. Property vCardName | |||
| 2.15.3. Property vCardName . . . . . . . . . . . . . . . . . 44 | 3. Converting JSContact to vCard | |||
| 3. Converting JSContact to vCard . . . . . . . . . . . . . . . . 45 | 3.1. Conversion Rules | |||
| 3.1. Conversion Rules . . . . . . . . . . . . . . . . . . . . 45 | 3.1.1. Converting Unknown Properties | |||
| 3.1.1. Converting unknown properties . . . . . . . . . . . . 46 | 3.2. New vCard Properties | |||
| 3.2. New vCard Properties . . . . . . . . . . . . . . . . . . 46 | 3.2.1. JSPROP | |||
| 3.2.1. JSPROP . . . . . . . . . . . . . . . . . . . . . . . 46 | 3.3. New vCard Parameters | |||
| 3.3. New vCard Parameter . . . . . . . . . . . . . . . . . . . 48 | 3.3.1. JSCOMPS | |||
| 3.3.1. JSCOMPS . . . . . . . . . . . . . . . . . . . . . . . 48 | 3.3.2. JSPTR | |||
| 3.3.2. JSPTR . . . . . . . . . . . . . . . . . . . . . . . . 52 | 4. Security Considerations | |||
| 4. Security Considerations . . . . . . . . . . . . . . . . . . . 52 | 5. IANA Considerations | |||
| 5. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 52 | 5.1. New vCard Property | |||
| 6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 52 | 5.2. New vCard Parameter | |||
| 6.1. New vCard Properties . . . . . . . . . . . . . . . . . . 52 | 5.3. New JSContact Properties | |||
| 6.2. New vCard Parameters . . . . . . . . . . . . . . . . . . 53 | 5.4. New JSContact Type | |||
| 6.3. New JSContact Properties . . . . . . . . . . . . . . . . 53 | 6. References | |||
| 6.4. New JSContact Types . . . . . . . . . . . . . . . . . . . 53 | 6.1. Normative References | |||
| 7. Implementation Status . . . . . . . . . . . . . . . . . . . . 54 | 6.2. Informative References | |||
| 7.1. CNR . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 | Appendix A. Reverse Rules of Converting a vCard to a JSContact | |||
| 8. References . . . . . . . . . . . . . . . . . . . . . . . . . 54 | Card | |||
| 8.1. Normative References . . . . . . . . . . . . . . . . . . 55 | Acknowledgements | |||
| 8.2. Informative References . . . . . . . . . . . . . . . . . 56 | Authors' Addresses | |||
| Appendix A. Reverse Rules of Converting vCard to JSContact | ||||
| Card . . . . . . . . . . . . . . . . . . . . . . . . . . 56 | ||||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 65 | ||||
| 1. Introduction | 1. Introduction | |||
| 1.1. Motivation | 1.1. Motivation | |||
| The JSContact data model and format [I-D.ietf-calext-jscontact] aims | The JSContact data model and format [RFC9553] aims to be an | |||
| to be an alternative to the widely used vCard [RFC6350] standard and | alternative to the widely used vCard standard [RFC6350] and jCard | |||
| jCard [RFC7095]. | format [RFC7095]. | |||
| While applications might prefer JSContact to exchange contact card | While applications might prefer JSContact to exchange contact card | |||
| data with other systems, they are likely to interoperate with | data with other systems, they are likely to interoperate with | |||
| services and clients that only support vCard or jCard. Similarly, | services and clients that only support vCard or jCard. Similarly, | |||
| existing contact data providers and consumers already using vCard or | existing contact data providers and consumers already using vCard or | |||
| jCard might want to represent their contact data also in JSContact. | jCard might also want to represent their contact data in JSContact. | |||
| To achieve this, this document defines standard rules to convert | To achieve this, this document defines standard rules to convert | |||
| contact data between JSContact and vCard (and consequently jCard). | contact data between JSContact and vCard (and consequently jCard). | |||
| 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. | |||
| 1.3. ABNF Notations | 1.3. ABNF Notations | |||
| 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]. | |||
| 2. Converting vCard to JSContact | 2. Converting vCard to JSContact | |||
| This section contains the conversion rules from vCard to JSContact | This section contains the conversion rules from the vCard to the | |||
| Card. It follows the same structure as the vCard v4 [RFC6350]. | JSContact Card. It follows the same structure as vCard v4 [RFC6350]. | |||
| Properties and parameters of vCard extension RFCs, including the | Properties and parameters of vCard extension RFCs, including those | |||
| vCard JSContact Extension | described in "vCard Format Extension for JSContact" [RFC9554], have | |||
| [I-D.ietf-calext-vcard-jscontact-extensions] are added to appropriate | been added to the appropriate subsections. | |||
| subsections. | ||||
| 2.1. General rules | 2.1. General Rules | |||
| 2.1.1. The uid property | ||||
| 2.1.1. The uid Property | ||||
| The UID property in vCard is optional, but the uid property in | The UID property in vCard is optional, but the uid property in | |||
| JSContact is mandatory. Implementations that convert a vCard without | JSContact is mandatory. Implementations that convert a vCard without | |||
| UID property MUST generate a unique identifier as a value for the uid | a UID property MUST generate a unique identifier as a value for the | |||
| property. This value SHOULD be the same when converting the same | uid property. This value SHOULD be the same when converting the same | |||
| vCard multiple times, but how to achieve this is implementation- | vCard multiple times, but how to achieve this is implementation- | |||
| specific. | specific. | |||
| 2.1.2. Choosing identifiers | 2.1.2. Choosing Identifiers | |||
| Multivalued properties in JSContact typically are represented as a | Multivalued properties in JSContact are typically represented as a | |||
| JSON object where the object keys are of the Id type and the object | JSON object where the object keys are of the Id type and the object | |||
| values are the converted vCard property. In absence of the PROP-ID | values are the converted vCard property. In the absence of the PROP- | |||
| parameter (see Section 2.3.16), implementations are free to choose | ID parameter (see Section 2.3.16), implementations are free to choose | |||
| any identifier for such entries. Whatever identifier generation | any identifier for such entries. Whatever identifier generation | |||
| scheme implementations use, they MUST generate values that are valid | scheme implementations use, they MUST generate values that are valid | |||
| according to the definition of the Id type in | according to the definition of the Id type in [RFC9553]. For | |||
| [I-D.ietf-calext-jscontact]. For example, this could be an | example, this could be an incrementing number across all Ids or only | |||
| incrementing number across all Ids or only unique within one JSON | unique within one JSON object. | |||
| object. | ||||
| 2.2. vCard Value Data Types | 2.2. vCard Value Data Types | |||
| 2.2.1. BOOLEAN | 2.2.1. BOOLEAN | |||
| This converts to the JSContact Boolean type. | The BOOLEAN type converts to the JSContact Boolean type. | |||
| 2.2.2. DATE, TIME, DATE-TIME, DATE-AND-OR-TIME, and TIMESTAMP | 2.2.2. DATE, TIME, DATE-TIME, DATE-AND-OR-TIME, and TIMESTAMP | |||
| The TIMESTAMP type generally converts to the UTCDateTime. It | The TIMESTAMP type generally converts to the UTCDateTime type. It | |||
| converts to the Timestamp type for anniversaries. | converts to the Timestamp type for anniversaries. | |||
| The DATE type converts to the PartialDate type, which only is | The DATE type converts to the PartialDate type, which is only | |||
| relevant for anniversaries. This does not apply to DATE values that | relevant for anniversaries. This does not apply to DATE values that | |||
| only define a month or a day. | only define a month or day. | |||
| The TIME, DATE-TIME, DATE-AND-OR-TIME types and DATE type values that | The TIME, DATE-TIME, and DATE-AND-OR-TIME types and DATE type values | |||
| only define a month or day do not convert to a JSContact datetime | that only define a month or day do not convert to a JSContact | |||
| type. Instead, vCard properties or parameters having such values | datetime type. Instead, vCard properties or parameters having such | |||
| convert to the properties defined in Section 2.15. | values convert to the properties defined in Section 2.15. | |||
| 2.2.3. INTEGER | 2.2.3. INTEGER | |||
| This converts to the JSContact Int and UnsignedInt types. | The INTEGER type converts to the JSContact Int and UnsignedInt types. | |||
| 2.2.4. FLOAT | 2.2.4. FLOAT | |||
| This converts to the JSContact Number type. | The FLOAT type converts to the JSContact Number type. | |||
| 2.2.5. LANGUAGE-TAG | 2.2.5. LANGUAGE-TAG | |||
| This converts to the JSContact String type. | The LANGUAGE-TAG type converts to the JSContact String type. | |||
| 2.2.6. TEXT | 2.2.6. TEXT | |||
| This converts to the JSContact String type. | The TEXT type converts to the JSContact String type. | |||
| 2.2.7. URI | 2.2.7. URI | |||
| This converts to the JSContact String type. | The URI type converts to the JSContact String type. | |||
| 2.2.8. UTC-OFFSET | 2.2.8. UTC-OFFSET | |||
| This either converts to a String containing an IANA TimeZone Database | The UTC-OFFSET type either converts to a String containing an IANA | |||
| entry name (see Section 2.8.2), or it does not convert to any | Time Zone Database entry name (see Section 2.8.2) or does not convert | |||
| JSContact type. For the latter, vCard properties or parameters | to any JSContact type. For the latter, vCard properties or | |||
| having such values MAY convert to JSContact as defined in | parameters having such values MAY convert to JSContact as defined in | |||
| Section 2.15. | Section 2.15. | |||
| 2.3. vCard Parameters | 2.3. vCard Parameters | |||
| This section contains the conversion rules for vCard parameters. A | This section contains the conversion rules for vCard parameters. A | |||
| rule typically only applies for specific vCard properties. To | rule typically applies only for specific vCard properties. To | |||
| convert a vCard parameter on an arbitrary vCard property, see | convert a vCard parameter on an arbitrary vCard property, see | |||
| Section 2.15.2. | Section 2.15.2. | |||
| 2.3.1. ALTID | 2.3.1. ALTID | |||
| This does not convert to an IANA-registered property in JSContact, | The ALTID parameter does not convert to an IANA-registered property | |||
| but several conversion rules make use of this parameter to combine | in JSContact, but several conversion rules make use of this parameter | |||
| multiple vCard properties into a single JSContact object instance. | to combine multiple vCard properties into a single JSContact object | |||
| For an example of this see Section 2.6.1. To preserve the verbatim | instance. For an example of this, see Section 2.6.1. To preserve | |||
| value of the ALTID parameter, set the JSContact properties defined in | the verbatim value of the ALTID parameter, set the JSContact | |||
| Section 2.15. | properties defined in Section 2.15. | |||
| 2.3.2. AUTHOR | 2.3.2. AUTHOR | |||
| The AUTHOR parameter value of a vCard NOTE property converts to the | The AUTHOR parameter value of a vCard NOTE property converts to the | |||
| uri property of the Author object for this note. | uri property of the Author object for this note. | |||
| Note: This parameter is defined in | Note: This parameter is defined in [RFC9554]. | |||
| [I-D.ietf-calext-vcard-jscontact-extensions]. | ||||
| 2.3.3. AUTHOR-NAME | 2.3.3. AUTHOR-NAME | |||
| The AUTHOR-NAME parameter value of a vCard NOTE property converts to | The AUTHOR-NAME parameter value of a vCard NOTE property converts to | |||
| the name property of the Author object for this note. | the name property of the Author object for this note. | |||
| Note: This parameter is defined in | Note: This parameter is defined in [RFC9554]. | |||
| [I-D.ietf-calext-vcard-jscontact-extensions]. | ||||
| 2.3.4. CALSCALE | 2.3.4. CALSCALE | |||
| This parameter set on a BDAY, DEATHDATE or ANNIVERSARY property | The CALSCALE parameter set on a BDAY, DEATHDATE, or ANNIVERSARY | |||
| converts to the calendarScale property of the PartialDate object | property converts to the calendarScale property of the PartialDate | |||
| type. | object type. | |||
| 2.3.5. CREATED | 2.3.5. CREATED | |||
| The CREATED parameter value of a vCard NOTE property converts to the | The CREATED parameter value of a vCard NOTE property converts to the | |||
| created property of the Note object. | created property of the Note object. | |||
| Note: This parameter is defined in | Note: This parameter is defined in [RFC9554]. | |||
| [I-D.ietf-calext-vcard-jscontact-extensions]. | ||||
| 2.3.6. DERIVED | 2.3.6. DERIVED | |||
| If this parameter is set to true on a vCard property, then | If the DERIVED parameter is set to true on a vCard property, then | |||
| implementations MAY choose to not convert that property. Note: This | implementations MAY choose not to convert that property. | |||
| parameter is defined in [I-D.ietf-calext-vcard-jscontact-extensions]. | ||||
| Note: This parameter is defined in [RFC9554]. | ||||
| 2.3.7. GEO | 2.3.7. GEO | |||
| This parameter set on an ADR property converts to the JSContact | The GEO parameter set on an ADR property converts to the JSContact | |||
| coordinates property of the Address object that represents the vCard | coordinates property of the Address object that represents the vCard | |||
| ADR. | ADR. | |||
| 2.3.8. GROUP | 2.3.8. GROUP | |||
| This parameter exclusively is for use in jCard (see Section 7.1 of | The GROUP parameter is exclusively for use in jCard (see Section 7.1 | |||
| [RFC7095]). It MUST NOT be set in a vCard. Preserving the exact | of [RFC7095]). It MUST NOT be set in a vCard. Preserving the exact | |||
| group name when converting from vCard to JSContact and back to vCard | group name when converting from vCard to JSContact and back to vCard | |||
| is not necessary. Any group identifiers will do, as long as the | is not necessary. Any group identifiers will do, as long as the | |||
| resulting vCard groups its properties equally to the original vCard. | resulting vCard groups its properties equally to the original vCard. | |||
| Implementations that still wish to preserve the exact property group | Implementations that still wish to preserve the exact property group | |||
| name of a vCard property MAY set the group parameter in the JSContact | name of a vCard property MAY set the group parameter in the JSContact | |||
| properties vCardProps or vCardParams defined in Section 2.15. | properties vCardProps or vCardParams as defined in Section 2.15. | |||
| item1.TEL;VALUE=uri:tel:+1-555-555-5555 | item1.TEL;VALUE=uri:tel:+1-555-555-5555 | |||
| "phones": { | "phones": { | |||
| "p1": { | "p1": { | |||
| "number": "tel:+1-555-555-5555", | "number": "tel:+1-555-555-5555", | |||
| "vCardParams" : { | "vCardParams" : { | |||
| "group" : "item1" | "group" : "item1" | |||
| } | } | |||
| } | } | |||
| } | } | |||
| Figure 1: An example how to preserve the group name in | Figure 1: Example of How to Preserve the Group Name in | |||
| vCardParams during conversion. | vCardParams during Conversion | |||
| item2.X-FOO:bar | item2.X-FOO:bar | |||
| "vCardProps": [ | "vCardProps": [ | |||
| ["x-foo", { | ["x-foo", { | |||
| "group": "item2" | "group": "item2" | |||
| }, "unknown", "bar"] | }, "unknown", "bar"] | |||
| ] | ] | |||
| Figure 2: An example how to preserve the group name in vCardProps | Figure 2: Example of How to Preserve the Group Name in vCardProps | |||
| during conversion. | during Conversion | |||
| 2.3.9. INDEX | 2.3.9. INDEX | |||
| This parameter set on the EXPERTISE, HOBBY, INTEREST and ORG- | The INDEX parameter set on the EXPERTISE, HOBBY, INTEREST, and ORG- | |||
| DIRECTORY properties defined in [RFC6715] converts to the JSContact | DIRECTORY properties defined in [RFC6715] converts to the JSContact | |||
| listAs property of the PersonalInfo and Directory objects. | listAs property of the PersonalInfo and Directory objects. | |||
| 2.3.10. LANGUAGE | 2.3.10. LANGUAGE | |||
| This converts to an entry in the localizations property for the vCard | The LANGUAGE parameter converts to an entry in the localizations | |||
| property that this parameter is set on. The value of the LANGUAGE | property for the vCard property that this parameter is set on. The | |||
| parameter defines the language tag key in the localizations property. | value of the LANGUAGE parameter defines the language tag key in the | |||
| localizations property. | ||||
| This specification does not define a single standard conversion rule | This specification does not define a single standard conversion rule | |||
| for how to convert the property values. Instead, building the | for how to convert the property values. Instead, building the | |||
| localizations value is implementation-specific. | localizations value is implementation-specific. | |||
| Two options to populate the localizations property are: | Two options to populate the localizations property are: | |||
| * One Patch Per Property: For each vCard property with a LANGUAGE | * One Patch per Property: For each vCard property with a LANGUAGE | |||
| parameter, set the complete path in the PatchObject to the | parameter, set the complete path in the PatchObject to the | |||
| JSContact property that the vCard property converts to. The value | JSContact property that the vCard property converts to. The value | |||
| of the patch is the converted property value. This is simple to | of the patch is the converted property value. This is simple to | |||
| process and adequate if the vCard only contains a few properties | process and adequate if the vCard only contains a few properties | |||
| with LANGUAGE parameter. | with the LANGUAGE parameter. | |||
| * Bundle Patches by Parent: If a PatchObject contains multiple paths | * Bundle Patches by Parent: If a PatchObject contains multiple paths | |||
| that have the same parent paths, then it might be possible to | that have the same parent paths, then it might be possible to | |||
| combine these patches into one patch that patches the parent | combine these patches into one patch that patches the parent | |||
| property. This is possible if the property in the Card is patched | property. This is possible if the property in the Card is patched | |||
| in its entirety. | in its entirety. | |||
| Generally, localizations only localize properties that are present in | Generally, localizations only localize properties that are present in | |||
| the non-localized version of this Card. Figure 3 illustrates this. | the non-localized version of this Card. Figure 3 illustrates this. | |||
| skipping to change at page 10, line 40 ¶ | skipping to change at line 444 ¶ | |||
| "t1": { | "t1": { | |||
| "name": "Boss" | "name": "Boss" | |||
| } | } | |||
| }, | }, | |||
| "localizations": { | "localizations": { | |||
| "fr": { | "fr": { | |||
| "titles/t1/name": "Patron" | "titles/t1/name": "Patron" | |||
| } | } | |||
| } | } | |||
| Figure 3: LANGUAGE conversion example: one dominant language | Figure 3: LANGUAGE Conversion Example: One Dominant Language | |||
| As a special case, if one or more vCard properties of the same type | As a special case, if one or more vCard properties of the same type | |||
| do not have the LANGUAGE parameter set, then choose them to the non- | do not have the LANGUAGE parameter set, then choose them to the non- | |||
| localized Card. Convert any with LANGUAGE parameters to the | localized Card. Convert any with LANGUAGE parameters to the | |||
| localizations property. Figure 4 illustrates this. | localizations property. Figure 4 illustrates this. | |||
| FN:John Doe | FN:John Doe | |||
| TITLE:Boss | TITLE:Boss | |||
| TITLE;LANGUAGE=fr:Patron | TITLE;LANGUAGE=fr:Patron | |||
| skipping to change at page 11, line 23 ¶ | skipping to change at line 469 ¶ | |||
| "t1": { | "t1": { | |||
| "name": "Boss" | "name": "Boss" | |||
| } | } | |||
| }, | }, | |||
| "localizations": { | "localizations": { | |||
| "fr": { | "fr": { | |||
| "titles/t1/name": "Patron" | "titles/t1/name": "Patron" | |||
| } | } | |||
| } | } | |||
| Figure 4: LANGUAGE conversion example: property without language | Figure 4: LANGUAGE Conversion Example: Property without Language | |||
| As the least preferred option, Figure 5 illustrates how all vCard | As the least-preferred option, Figure 5 illustrates how all vCard | |||
| properties of the same type have the LANGUAGE parameter set, but none | properties of the same type have the LANGUAGE parameter set, but none | |||
| of their language tags match the language of the main Card. In this | of their language tags match the language of the main Card. In this | |||
| case, implementations MAY choose to add the localized vCard | case, implementations MAY choose to add the localized vCard | |||
| properties only to the localizations object. | properties only to the localizations object. | |||
| The following example uses non-ASCII characters to demonstrate | The following example uses non-ASCII characters to demonstrate | |||
| multilingual content. The ASCII-formatted version of this | multilingual content. | |||
| specification might not show the correct characters. Please refer to | ||||
| the HTML or PDF versions instead. | ||||
| LANGUAGE:es | LANGUAGE:es | |||
| FN:Gabriel GarcÃa Márquez | FN:Gabriel GarcÃa Márquez | |||
| TITLE;LANGUAGE=en:Boss | TITLE;LANGUAGE=en:Novelist | |||
| TITLE;LANGUAGE=fr:Patron | TITLE;LANGUAGE=fr:Écrivain | |||
| "language": "es", | "language": "es", | |||
| "name" { | "name" { | |||
| "full": "Gabriel GarcÃa Márquez" | "full": "Gabriel GarcÃa Márquez" | |||
| }, | }, | |||
| "localizations": { | "localizations": { | |||
| "en": { | "en": { | |||
| "titles": { | "titles": { | |||
| "t1": { | "t1": { | |||
| "name": "Novelist" | "name": "Novelist" | |||
| } | } | |||
| }, | }, | |||
| "fr": { | "fr": { | |||
| "titles": { | "titles": { | |||
| "t1": { | "t1": { | |||
| "name": "Écrivain" | "name": "Écrivain" | |||
| } | } | |||
| } | } | |||
| } | } | |||
| Figure 5: LANGUAGE conversion example: conflicting LANGUAGE | Figure 5: LANGUAGE Conversion Example: Conflicting LANGUAGE | |||
| property and parameter values | Property and Parameter Values | |||
| 2.3.11. LEVEL | 2.3.11. LEVEL | |||
| The LEVEL parameter [RFC6715] converts to the level property of the | The LEVEL parameter [RFC6715] converts to the level property of the | |||
| PersonalInfo type. If this parameter is set on the EXPERTISE | PersonalInfo type. If this parameter is set on the EXPERTISE | |||
| property, then its values convert as: | property, then its values convert as follows: | |||
| * "beginner" converts to "low"; | * "beginner" converts to "low"; | |||
| * "average" converts to "medium"; | * "average" converts to "medium"; and | |||
| * "expert" converts to "high". | * "expert" converts to "high". | |||
| In all other cases the values convert verbatim, but lowercase MUST be | In all other cases, the values convert verbatim, but lowercase MUST | |||
| used for the JSContact value. | be used for the JSContact value. | |||
| 2.3.12. MEDIATYPE | 2.3.12. MEDIATYPE | |||
| This converts to the mediaType property of the Resource object type. | The MEDIATYPE parameter converts to the mediaType property of the | |||
| Resource object type. | ||||
| 2.3.13. PHONETIC | 2.3.13. PHONETIC | |||
| This parameter as well as the SCRIPT (Section 2.3.17) parameter set | The PHONETIC parameter as well as the SCRIPT (Section 2.3.17) | |||
| on a N or ADR property convert to JSContact as follows: | parameter set on an N or ADR property convert to JSContact as | |||
| follows: | ||||
| the values of the phonetic, phoneticScript and phoneticSystem | the values of the phonetic, phoneticScript and phoneticSystem | |||
| properties of the NameComponent and Name or AddressComponent and | properties of the NameComponent and Name or AddressComponent and | |||
| Address object types, respectively. | Address object types, respectively. | |||
| The related N or ADR property is defined by the vCard ALTID | The related N or ADR property is defined by the vCard ALTID | |||
| parameter. The conversion rules for the N (Section 2.5.5) and ADR | parameter. The conversion rules for the N (Section 2.5.5) and ADR | |||
| (Section 2.6.1) properties define how the vCard components convert to | (Section 2.6.1) properties define how the vCard components convert to | |||
| JSContact. | JSContact. | |||
| The value of the PHONETIC parameter converts to the phoneticSystem | The value of the PHONETIC parameter converts to the phoneticSystem | |||
| property unless it is script, in which case the phoneticSystem | property unless it is script, in which case the phoneticSystem | |||
| property is not set. The value of the SCRIPT parameter converts to | property is not set. The value of the SCRIPT parameter converts to | |||
| the phoneticScript property. | the phoneticScript property. | |||
| The values of the components in the property value convert to values | The values of the components in the property value convert to values | |||
| the phonetic properties for the respective NameComponent or | in the phonetic properties for the respective NameComponent or | |||
| AddressComponent. | AddressComponent. | |||
| If more than one property having the PHONETIC parameter set relates | If more than one property has the PHONETIC parameter set and relates | |||
| to the same property, then they convert to the Card localizations | to the same property, then they convert to the Card localizations | |||
| property according their LANGUAGE parameter values as outlined in | property according to their LANGUAGE parameter values as outlined in | |||
| Section 2.3.10. | Section 2.3.10. | |||
| LANGUAGE=zh-Hant | LANGUAGE=zh-Hant | |||
| N;ALTID=1;LANGUAGE=zh-Hant:å«;ä¸å±±;æ–‡,逸仙;; | N;ALTID=1;LANGUAGE=zh-Hant:å«;ä¸å±±;æ–‡,逸仙;; | |||
| N;ALTID=1;PHONETIC=jyut; | N;ALTID=1;PHONETIC=jyut; | |||
| SCRIPT=Latn;LANGUAGE=yue:syun1;zung1saan1;man4,jat6sin1;; | SCRIPT=Latn;LANGUAGE=yue:syun1;zung1saan1;man4,jat6sin1;; | |||
| "language": "zh-Hant", | "language": "zh-Hant", | |||
| "name": { | "name": { | |||
| "components": [ | "components": [ | |||
| skipping to change at page 14, line 4 ¶ | skipping to change at line 578 ¶ | |||
| "localizations": { | "localizations": { | |||
| "yue": { | "yue": { | |||
| "name/phoneticSystem": "jyut", | "name/phoneticSystem": "jyut", | |||
| "name/phoneticScript": "Latn", | "name/phoneticScript": "Latn", | |||
| "name/components/0/phonetic": "syun1", | "name/components/0/phonetic": "syun1", | |||
| "name/components/1/phonetic": "zung1saan1", | "name/components/1/phonetic": "zung1saan1", | |||
| "name/components/2/phonetic": "man4", | "name/components/2/phonetic": "man4", | |||
| "name/components/3/phonetic": "jat6sin1" | "name/components/3/phonetic": "jat6sin1" | |||
| } | } | |||
| } | } | |||
| Figure 6: PHONETIC conversion example | ||||
| Figure 6: PHONETIC Conversion Example | ||||
| 2.3.14. PID | 2.3.14. PID | |||
| This converts to an entry in the vCardParams property, see | The PID parameter converts to an entry in the vCardParams property; | |||
| Section 2.15.2. | see Section 2.15.2. | |||
| 2.3.15. PREF | 2.3.15. PREF | |||
| This converts to the pref property. | The PREF parameter converts to the pref property. | |||
| 2.3.16. PROP-ID | 2.3.16. PROP-ID | |||
| The PROP-ID parameter value of a vCard property converts to the Id of | The PROP-ID parameter value of a vCard property converts to the Id of | |||
| the JSContact property to which the vCard property converts. | the JSContact property to which the vCard property converts. | |||
| TEL;PROP-ID=PHONE-A;VALUE=uri;PREF=1;TYPE="voice,home" | TEL;PROP-ID=PHONE-A;VALUE=uri;PREF=1;TYPE="voice,home" | |||
| :tel:+1-555-555-5555;ext=5555 | :tel:+1-555-555-5555;ext=5555 | |||
| TEL;PROP-ID=PHONE-B;VALUE=uri;TYPE=home | TEL;PROP-ID=PHONE-B;VALUE=uri;TYPE=home | |||
| :tel:+33-01-23-45-67 | :tel:+33-01-23-45-67 | |||
| skipping to change at page 14, line 38 ¶ | skipping to change at line 613 ¶ | |||
| "features": { "voice": true }, | "features": { "voice": true }, | |||
| "number": "tel:+1-555-555-5555;ext=5555", | "number": "tel:+1-555-555-5555;ext=5555", | |||
| "pref": 1 | "pref": 1 | |||
| }, | }, | |||
| "PHONE-B": { | "PHONE-B": { | |||
| "contexts": { "private": true }, | "contexts": { "private": true }, | |||
| "number": "tel:+33-01-23-45-67" | "number": "tel:+33-01-23-45-67" | |||
| } | } | |||
| } | } | |||
| Figure 7: PROP-ID conversion example | Figure 7: PROP-ID Conversion Example | |||
| Note: This parameter is defined in | Note: This parameter is defined in [RFC9554]. | |||
| [I-D.ietf-calext-vcard-jscontact-extensions]. | ||||
| 2.3.17. SCRIPT | 2.3.17. SCRIPT | |||
| See Section 2.3.13. | For the SCRIPT parameter, see Section 2.3.13. | |||
| 2.3.18. SERVICE-TYPE | 2.3.18. SERVICE-TYPE | |||
| This converts to the service property of the OnlineService object | The SERVICE-TYPE parameter converts to the service property of the | |||
| type. Note: This parameter is defined in | OnlineService object type. | |||
| [I-D.ietf-calext-vcard-jscontact-extensions]. | ||||
| Note: This parameter is defined in [RFC9554]. | ||||
| 2.3.19. SORT-AS | 2.3.19. SORT-AS | |||
| This converts to the sortAs properties defined for the Name, | The SORT-AS parameter converts to the sortAs properties defined for | |||
| Organization and OrgUnit object types. | the Name, Organization, and OrgUnit object types. | |||
| 2.3.20. TYPE | 2.3.20. TYPE | |||
| This converts to the contexts property as well as property-specific | The TYPE parameter converts to the contexts property as well as | |||
| kind property values defined in later sections. If not specified | property-specific kind property values defined in later sections. If | |||
| otherwise for a specific JSContact property, the vCard home and work | not specified otherwise for a specific JSContact property, the vCard | |||
| parameter values convert to the JSContact private and work contexts, | home and work parameter values convert to the JSContact private and | |||
| respectively. | work contexts, respectively. | |||
| 2.3.21. TZ | 2.3.21. TZ | |||
| This parameter set on an ADR property converts to the JSContact | The TZ parameter set on an ADR property converts to the JSContact | |||
| timeZone property of the Address object that represents the vCard | timeZone property of the Address object that represents the vCard | |||
| ADR. Also see the conversion of the TZ property in Section 2.8.2. | ADR. Also see the conversion of the TZ property in Section 2.8.2. | |||
| 2.3.22. USERNAME | 2.3.22. USERNAME | |||
| This converts to the user property of the OnlineService object type. | The USERNAME parameter converts to the user property of the | |||
| Note: This parameter is defined in | OnlineService object type. | |||
| [I-D.ietf-calext-vcard-jscontact-extensions]. | ||||
| Note: This parameter is defined in [RFC9554]. | ||||
| 2.3.23. VALUE | 2.3.23. VALUE | |||
| This does not convert to an IANA-registered property in JSContact. | The VALUE parameter does not convert to an IANA-registered property | |||
| To preserve properties with experimental values, see Section 2.15.2 | in JSContact. To preserve properties with experimental values, see | |||
| and Section 2.15.1. | Sections 2.15.1 and 2.15.2. | |||
| 2.4. General Properties | 2.4. General Properties | |||
| 2.4.1. BEGIN and END | 2.4.1. BEGIN and END | |||
| These do not convert to IANA-registered properties in JSContact. | The BEGIN and END properties do not convert to IANA-registered | |||
| properties in JSContact. | ||||
| 2.4.2. KIND | 2.4.2. KIND | |||
| The KIND property converts to the kind property (Figure 8). Allowed | The KIND property converts to the kind property (Figure 8). Allowed | |||
| values are those described in Section 6.1.4 of [RFC6350] and extended | values are those described in Section 6.1.4 of [RFC6350] and extended | |||
| with the values declared in [RFC6473] and [RFC6869]. | with the values declared in [RFC6473] and [RFC6869]. | |||
| KIND:individual | KIND:individual | |||
| "kind": "individual" | "kind": "individual" | |||
| Figure 8: KIND conversion example | Figure 8: KIND Conversion Example | |||
| 2.4.3. SOURCE | 2.4.3. SOURCE | |||
| The SOURCE property converts to a Directory object in the directories | The SOURCE property converts to a Directory object in the directories | |||
| property (Figure 9). The kind property is set to entry. The uri | property (Figure 9). The kind property is set to entry. The uri | |||
| property is set to the SOURCE property value. | property is set to the SOURCE property value. | |||
| The PREF and MEDIATYPE parameters convert according to the rules as | The PREF and MEDIATYPE parameters convert according to the rules | |||
| defined in Section 2.3. | defined in Section 2.3. | |||
| SOURCE:https://dir.example.com/addrbook/jdoe/Jean%20Dupont.vcf | SOURCE:https://dir.example.com/addrbook/jdoe/Jean%20Dupont.vcf | |||
| "directories": { | "directories": { | |||
| "ENTRY-1": { | "ENTRY-1": { | |||
| "kind": "entry", | "kind": "entry", | |||
| "uri": "https://dir.example.com/addrbook/jdoe/Jean%20Dupont.vcf" | "uri": "https://dir.example.com/addrbook/jdoe/Jean%20Dupont.vcf" | |||
| } | } | |||
| } | } | |||
| Figure 9: SOURCE conversion example | Figure 9: SOURCE Conversion Example | |||
| 2.4.4. XML | 2.4.4. XML | |||
| This converts to an entry in the vCardProps property, see | The XML property converts to an entry in the vCardProps property; see | |||
| Section 2.15.1. | Section 2.15.1. | |||
| 2.5. Identification Properties | 2.5. Identification Properties | |||
| 2.5.1. BDAY, BIRTHPLACE, DEATHDATE, DEATHPLACE, ANNIVERSARY | 2.5.1. BDAY, BIRTHPLACE, DEATHDATE, DEATHPLACE, and ANNIVERSARY | |||
| The BDAY and ANNIVERSARY properties and the extensions BIRTHPLACE, | The BDAY and ANNIVERSARY properties and the extensions BIRTHPLACE, | |||
| DEATHDATE, DEATHPLACE described in [RFC6474] are represented as | DEATHDATE, and DEATHPLACE described in [RFC6474] are represented as | |||
| Anniversary objects included in the anniversaries property | Anniversary objects and are included in the anniversaries property | |||
| (Figure 10): | (Figure 10): | |||
| * BDAY and BIRTHPLACE convert to date and place where kind is set to | * BDAY and BIRTHPLACE convert to date and place where kind is set to | |||
| "birth"; | "birth"; | |||
| * DEATHDATE and DEATHPLACE convert to date and place where kind is | * DEATHDATE and DEATHPLACE convert to date and place where kind is | |||
| set to "death"; | set to "death"; and | |||
| * ANNIVERSARY converts to date where kind is "wedding". | * ANNIVERSARY converts to date where kind is set to "wedding". | |||
| Both birth and death places are represented as instances of the | Both birth and death places are represented as instances of the | |||
| Address object. | Address object. | |||
| The BIRTHPLACE and DEATHPLACE properties that are represented as geo | The BIRTHPLACE and DEATHPLACE properties that are represented as geo | |||
| URIs convert to Address instances including only the coordinates | URIs convert to Address instances that only include the coordinates | |||
| property. If the URI value is not a geo URI, the place is ignored. | property. If the URI value is not a geo URI, the place is ignored. | |||
| The ALTID and LANGUAGE parameters of both BIRTHPLACE and DEATHPLACE | The ALTID and LANGUAGE parameters of both the BIRTHPLACE and | |||
| properties convert according to the rules as defined in Section 2.3. | DEATHPLACE properties convert according to the rules defined in | |||
| Section 2.3. | ||||
| BDAY:19531015T231000Z | BDAY:19531015T231000Z | |||
| BIRTHPLACE: | BIRTHPLACE: | |||
| 123 Main Street\nAny Town, CA 91921-1234\nU.S.A. | 123 Main Street\nAny Town, CA 91921-1234\nU.S.A. | |||
| DEATHDATE:19960415 | DEATHDATE:19960415 | |||
| DEATHPLACE: | DEATHPLACE: | |||
| 5 Court Street\nNew England, ND 58647\nU.S.A. | 5 Court Street\nNew England, ND 58647\nU.S.A. | |||
| ANNIVERSARY:19860201 | ANNIVERSARY:19860201 | |||
| "anniversaries": { | "anniversaries": { | |||
| skipping to change at page 17, line 49 ¶ | skipping to change at line 771 ¶ | |||
| "ANNIVERSARY-3" : { | "ANNIVERSARY-3" : { | |||
| "kind": "wedding", | "kind": "wedding", | |||
| "date": { | "date": { | |||
| "year": 1986, | "year": 1986, | |||
| "month": 2, | "month": 2, | |||
| "day": 1 | "day": 1 | |||
| } | } | |||
| } | } | |||
| } | } | |||
| Figure 10: BDAY, BIRTHPLACE, DEATHDATE, DEATHPLACE, ANNIVERSARY | Figure 10: BDAY, BIRTHPLACE, DEATHDATE, DEATHPLACE, and | |||
| conversion example | ANNIVERSARY Conversion Example | |||
| 2.5.2. FN | 2.5.2. FN | |||
| The FN property converts to the Name object in the name property. | The FN property converts to the Name object in the name property. | |||
| Its value converts to the Name object full property (Figure 11). If | Its value converts to the Name object full property (Figure 11). If | |||
| the LANGUAGE parameter is set, then the FN property converts as | the LANGUAGE parameter is set, then the FN property converts as | |||
| outlined in Section 2.3.10. In the unexpected case that the vCard | outlined in Section 2.3.10. In the unexpected case where the vCard | |||
| contains more than one FN property without LANGUAGE parameter, then | contains more than one FN property without the LANGUAGE parameter, | |||
| convert the FN property that has the least parameters set to the full | convert the FN property that has the least parameters set to the full | |||
| property. If multiple such FN properties are present, choose any of | property. If multiple such FN properties are present, choose any of | |||
| them. All other FN properties convert to the vCardProps | them. All other FN properties convert to the vCardProps | |||
| (Section 2.15.1) property. | (Section 2.15.1) property. | |||
| FN:John Q. Public, Esq. | FN:John Q. Public, Esq. | |||
| "name": { | "name": { | |||
| "full": "John Q. Public, Esq.", | "full": "John Q. Public, Esq." | |||
| } | } | |||
| Figure 11: FN conversion example | Figure 11: FN Conversion Example | |||
| 2.5.3. GENDER | 2.5.3. GENDER | |||
| This does not map to an IANA-registered property in JSContact. To | The GENDER property does not map to an IANA-registered property in | |||
| convert this property, see Section 2.15.1. Note the alternative | JSContact. To convert this property, see Section 2.15.1. Note the | |||
| JSContact speakToAs property which defines how to address and refer | alternative JSContact speakToAs property that defines how to address | |||
| to an individual represented by the card, as do the newly defined | and refer to an individual represented by the card, as do the newly | |||
| vCard GRAMGENDER and PRONOUNS properties of | defined vCard GRAMGENDER and PRONOUNS properties of [RFC9554]. | |||
| [I-D.ietf-calext-vcard-jscontact-extensions]. | ||||
| 2.5.4. GRAMGENDER and PRONOUNS | 2.5.4. GRAMGENDER and PRONOUNS | |||
| The GRAMGENDER property converts to the grammaticalGender property of | The GRAMGENDER property converts to the grammaticalGender property of | |||
| the SpeakToAs object (Figure 12). | the SpeakToAs object (Figure 12). | |||
| The PRONOUNS property converts to an entry in the pronouns property | The PRONOUNS property converts to an entry in the pronouns property | |||
| of the SpeakToAs object (Figure 12). | of the SpeakToAs object (Figure 12). | |||
| GRAMGENDER:NEUTER | GRAMGENDER:NEUTER | |||
| skipping to change at page 19, line 23 ¶ | skipping to change at line 828 ¶ | |||
| "pronouns": "they/them", | "pronouns": "they/them", | |||
| "pref": 2 | "pref": 2 | |||
| }, | }, | |||
| "PRONOUNS-2": { | "PRONOUNS-2": { | |||
| "pronouns": "xe/xir", | "pronouns": "xe/xir", | |||
| "pref": 1 | "pref": 1 | |||
| } | } | |||
| } | } | |||
| } | } | |||
| Figure 12: GRAMGENDER and PRONOUNS conversion example | Figure 12: GRAMGENDER and PRONOUNS Conversion Example | |||
| 2.5.5. N | 2.5.5. N | |||
| The N property converts to the Name object in the name property. | The N property converts to the Name object in the name property. | |||
| Each component in the N property structured value converts to a | Each component in the N property structured value converts to a | |||
| NameComponent in the Name components property. The following table | NameComponent in the Name components property. The following table | |||
| shows this relation: | shows this relation: | |||
| +============+===============+==============================+ | +============+===============+==============================+ | |||
| | N | NameComponent | Remarks | | | N | NameComponent | Remarks | | |||
| skipping to change at page 20, line 37 ¶ | skipping to change at line 869 ¶ | |||
| | | | From vCard: ignore any value | | | | | From vCard: ignore any value | | |||
| | | | that also occurs in the | | | | | that also occurs in the | | |||
| | | | Generation component. | | | | | Generation component. | | |||
| +------------+---------------+------------------------------+ | +------------+---------------+------------------------------+ | |||
| | Secondary | surname2 | | | | Secondary | surname2 | | | |||
| | surname | | | | | surname | | | | |||
| +------------+---------------+------------------------------+ | +------------+---------------+------------------------------+ | |||
| | Generation | generation | | | | Generation | generation | | | |||
| +------------+---------------+------------------------------+ | +------------+---------------+------------------------------+ | |||
| Table 1: N components conversion | Table 1: N Components Conversion | |||
| If the JSCOMPS (Section 3.3.1) parameter is set, then the Name | If the JSCOMPS (Section 3.3.1) parameter is set, then the Name | |||
| isOrdered property value is "true", and the defaultSeparator and any | isOrdered property value is "true", and the defaultSeparator and any | |||
| separator name components are set according to the parameter value. | separator name components are set according to the parameter value. | |||
| The components list MUST adhere to the order of the JSCOMPS parameter | The components list MUST adhere to the order of the JSCOMPS parameter | |||
| value. | value. | |||
| If the JSCOMPS parameter is not set, then the Name isOrdered property | If the JSCOMPS parameter is not set, then the Name isOrdered property | |||
| value is "false" and the defaultSeparator property MUST NOT be set. | value is "false", and the defaultSeparator property MUST NOT be set. | |||
| The components list MUST follow the order of values in the N | The components list MUST follow the order of values in the N | |||
| structured value when read from left to right. | structured value when read from left to right. | |||
| If the SORT-AS parameter is set, then its structured value converts | If the SORT-AS parameter is set, then its structured value converts | |||
| to the Name sortAs property according to Table 1. An empty or non- | to the Name sortAs property according to Table 1. An empty or non- | |||
| existent component value indicates that no sort is defined for this | existent component value indicates that no sort is defined for this | |||
| kind. | kind. | |||
| N;SORT-AS="Stevenson,John Philip":Stevenson;John;Philip,Paul;Dr.;Jr.,M.D.,A.C.P.;;Jr. | N;SORT-AS="Stevenson,John Philip":Stevenson;John;Philip,Paul;Dr.;Jr.,M.D.,A.C.P.;;Jr. | |||
| "name": { | "name": { | |||
| "components":[ | "components":[ | |||
| { "kind": "surname", "value": "Stevenson" }, | { "kind": "surname", "value": "Stevenson" }, | |||
| { "kind": "given", "value": "John" }, | { "kind": "given", "value": "John" }, | |||
| { "kind": "given2", "value": "Philip" }, | { "kind": "given2", "value": "Philip" }, | |||
| { "kind": "given2", "value": "Paul" }, | { "kind": "given2", "value": "Paul" }, | |||
| { "kind": "title", "value": "Dr." }, | { "kind": "title", "value": "Dr." }, | |||
| { "kind": "credential", "value": "M.D." }, | { "kind": "credential", "value": "M.D." }, | |||
| { "kind": "credential", "value": "A.C.P." }, | { "kind": "credential", "value": "A.C.P." }, | |||
| { "kind": "generation", "value": "Jr." } | { "kind": "generation", "value": "Jr." } | |||
| ], | ], | |||
| "sortAs": { | "sortAs": { | |||
| "surname": "Stevenson", | "surname": "Stevenson", | |||
| "given": "John Philip" | "given": "John Philip" | |||
| } | } | |||
| } | } | |||
| Figure 13: N conversion example | Figure 13: N Conversion Example | |||
| See Section 3.3.1 for examples of using the JSCOMPS parameter for | See Section 3.3.1 for examples of using the JSCOMPS parameter for | |||
| vCard structured property values. | vCard-structured property values. | |||
| 2.5.6. NICKNAME | 2.5.6. NICKNAME | |||
| A NICKNAME property converts to Nickname object in the nicknames | The NICKNAME property converts to a Nickname object in the nicknames | |||
| property (Figure 14). The name property is set to the NICKNAME | property (Figure 14). The name property is set to the NICKNAME | |||
| property value. | property value. | |||
| The PREF and TYPE parameters convert according to the rules as | The PREF and TYPE parameters convert according to the rules defined | |||
| defined in Section 2.3. | in Section 2.3. | |||
| NICKNAME:Johnny | NICKNAME:Johnny | |||
| "nicknames": { | "nicknames": { | |||
| "NICK-1": { | "NICK-1": { | |||
| "name": "Johnny" | "name": "Johnny" | |||
| } | } | |||
| } | } | |||
| Figure 14: NICKNAME conversion example | Figure 14: NICKNAME Conversion Example | |||
| 2.5.7. PHOTO | 2.5.7. PHOTO | |||
| A PHOTO property converts to an entry in the media property | The PHOTO property converts to an entry in the media property | |||
| (Figure 15). The entry value is a Media object whose kind property | (Figure 15). The entry value is a Media object whose kind property | |||
| is set to photo and uri property is set to the PHOTO value. | is set to photo and uri property is set to the PHOTO value. | |||
| The PREF and MEDIATYPE parameters convert according to the rules as | The PREF and MEDIATYPE parameters convert according to the rules | |||
| defined in Section 2.3. | defined in Section 2.3. | |||
| PHOTO:https://www.example.com/pub/photos/jqpublic.gif | PHOTO:https://www.example.com/pub/photos/jqpublic.gif | |||
| "media": { | "media": { | |||
| "PHOTO-1": { | "PHOTO-1": { | |||
| "kind": "photo", | "kind": "photo", | |||
| "uri": "https://www.example.com/pub/photos/jqpublic.gif" | "uri": "https://www.example.com/pub/photos/jqpublic.gif" | |||
| } | } | |||
| } | } | |||
| Figure 15: PHOTO conversion example | Figure 15: PHOTO Conversion Example | |||
| 2.6. Delivery Addressing Properties | 2.6. Delivery Addressing Properties | |||
| 2.6.1. ADR | 2.6.1. ADR | |||
| The ADR property converts to an Address object in the addresses | The ADR property converts to an Address object in the addresses | |||
| property. Each component in the ADR property structured value | property. Each component in the ADR-structured property value | |||
| converts to an AddressComponent in the Address components property. | converts to an AddressComponent in the Address components property. | |||
| [I-D.ietf-calext-vcard-jscontact-extensions] defines new component | [RFC9554] defines new components for the ADR property. | |||
| for the ADR property. Implementations SHOULD set these new | Implementations SHOULD set these new components, even if all their | |||
| components, even if all their values are the empty string. | values are the empty string. | |||
| The following table shows how ADR component and AddressComponent kind | The following table shows how the ADR component and AddressComponent | |||
| relate: | kind relate: | |||
| +===========+================+=============================================+ | +=============+==================+===============================+ | |||
| |ADR |AddressComponent|Remarks | | | ADR | AddressComponent | Remarks | | |||
| |component |kind | | | | component | kind | | | |||
| +===========+================+=============================================+ | +=============+==================+===============================+ | |||
| |post office|postOfficeBox |[RFC6350] recommends this component not be | | | post office | postOfficeBox | [RFC6350] recommends that | | |||
| |box | |set, but this now is disputable given the new| | | box | | this component not be set, | | |||
| | | |components. Instead, set this component and | | | | | but this is now disputable | | |||
| | | |use the new ADR value format defined in | | | | | given the new components. | | |||
| | | |[I-D.ietf-calext-vcard-jscontact-extensions].| | | | | Instead, set this component | | |||
| +-----------+----------------+---------------------------------------------+ | | | | and use the new ADR value | | |||
| |extended |apartment (see |To vCard: Set the values of the following components:| | | | | format defined in [RFC9554]. | | |||
| |address |Remarks) | | | +-------------+------------------+-------------------------------+ | |||
| | | |* room | | | extended | apartment (see | To vCard: set the values of | | |||
| | | | | | | address | Remarks) | the following components: | | |||
| | | |* floor | | | | | | | |||
| | | | | | | | | * room | | |||
| | | |* apartment | | | | | | | |||
| | | | | | | | | * floor | | |||
| | | |* building | | | | | | | |||
| | | | | | | | | * apartment | | |||
| | | |From vCard: Ignore if the ADR structured value is of the format defined in [I-D.ietf-calext-vcard-jscontact-extensions]. Otherwise convert to apartment.| | | | | | | |||
| +-----------+----------------+---------------------------------------------+ | | | | * building | | |||
| |street |name (see |To vCard: Set the values of the following components:| | | | | | | |||
| |address |Remarks) | | | | | | From vCard: ignore if the ADR | | |||
| | | |* number | | | | | structured value is of the | | |||
| | | | | | | | | format defined in [RFC9554]. | | |||
| | | |* name | | | | | Otherwise, convert to | | |||
| | | | | | | | | apartment. | | |||
| | | |* block | | +-------------+------------------+-------------------------------+ | |||
| | | | | | | street | name (see | To vCard: set the values of | | |||
| | | |* direction | | | address | Remarks) | the following components: | | |||
| | | | | | | | | | | |||
| | | |* landmark | | | | | * number | | |||
| | | | | | | | | | | |||
| | | |* subdistrict | | | | | * name | | |||
| | | | | | | | | | | |||
| | | |* district | | | | | * block | | |||
| | | | | | | | | | | |||
| | | |From vCard: Ignore if the ADR structured value is of the format defined in [I-D.ietf-calext-vcard-jscontact-extensions]. Otherwise convert to name.| | | | | * direction | | |||
| +-----------+----------------+---------------------------------------------+ | | | | | | |||
| |locality |locality | | | | | | * landmark | | |||
| +-----------+----------------+---------------------------------------------+ | | | | | | |||
| |region |region | | | | | | * subdistrict | | |||
| +-----------+----------------+---------------------------------------------+ | | | | | | |||
| |postal code|postcode | | | | | | * district | | |||
| +-----------+----------------+---------------------------------------------+ | | | | | | |||
| |apartment |apartment |Defined in | | | | | From vCard: ignore if the ADR | | |||
| | | |[I-D.ietf-calext-vcard-jscontact-extensions].| | | | | structured value is of the | | |||
| +-----------+----------------+---------------------------------------------+ | | | | format defined in [RFC9554]. | | |||
| |block |block |Defined in | | | | | Otherwise, convert to name. | | |||
| | | |[I-D.ietf-calext-vcard-jscontact-extensions].| | +-------------+------------------+-------------------------------+ | |||
| +-----------+----------------+---------------------------------------------+ | | locality | locality | | | |||
| |building |building |Defined in | | +-------------+------------------+-------------------------------+ | |||
| | | |[I-D.ietf-calext-vcard-jscontact-extensions].| | | region | region | | | |||
| +-----------+----------------+---------------------------------------------+ | +-------------+------------------+-------------------------------+ | |||
| |direction |direction |Defined in | | | postal code | postcode | | | |||
| | | |[I-D.ietf-calext-vcard-jscontact-extensions].| | +-------------+------------------+-------------------------------+ | |||
| +-----------+----------------+---------------------------------------------+ | | apartment | apartment | Defined in [RFC9554]. | | |||
| |district |district |Defined in | | +-------------+------------------+-------------------------------+ | |||
| | | |[I-D.ietf-calext-vcard-jscontact-extensions].| | | block | block | Defined in [RFC9554]. | | |||
| +-----------+----------------+---------------------------------------------+ | +-------------+------------------+-------------------------------+ | |||
| |floor |floor |Defined in | | | building | building | Defined in [RFC9554]. | | |||
| | | |[I-D.ietf-calext-vcard-jscontact-extensions].| | +-------------+------------------+-------------------------------+ | |||
| +-----------+----------------+---------------------------------------------+ | | direction | direction | Defined in [RFC9554]. | | |||
| |landmark |landmark |Defined in | | +-------------+------------------+-------------------------------+ | |||
| | | |[I-D.ietf-calext-vcard-jscontact-extensions].| | | district | district | Defined in [RFC9554]. | | |||
| +-----------+----------------+---------------------------------------------+ | +-------------+------------------+-------------------------------+ | |||
| |room |room |Defined in | | | floor | floor | Defined in [RFC9554]. | | |||
| | | |[I-D.ietf-calext-vcard-jscontact-extensions].| | +-------------+------------------+-------------------------------+ | |||
| +-----------+----------------+---------------------------------------------+ | | landmark | landmark | Defined in [RFC9554]. | | |||
| |street |number |Defined in | | +-------------+------------------+-------------------------------+ | |||
| |number | |[I-D.ietf-calext-vcard-jscontact-extensions].| | | room | room | Defined in [RFC9554]. | | |||
| +-----------+----------------+---------------------------------------------+ | +-------------+------------------+-------------------------------+ | |||
| |subdistrict|subdistrict |Defined in | | | street | number | Defined in [RFC9554]. | | |||
| | | |[I-D.ietf-calext-vcard-jscontact-extensions].| | | number | | | | |||
| +-----------+----------------+---------------------------------------------+ | +-------------+------------------+-------------------------------+ | |||
| | subdistrict | subdistrict | Defined in [RFC9554]. | | ||||
| +-------------+------------------+-------------------------------+ | ||||
| Table 2: ADR components conversion | Table 2: ADR Components Conversion | |||
| If the JSCOMPS (Section 3.3.1) parameter is set, then the Address | If the JSCOMPS (Section 3.3.1) parameter is set, then the Address | |||
| isOrdered property value is "true", and the defaultSeparator and any | isOrdered property value is "true", and the defaultSeparator and any | |||
| separator name components are set according to the parameter value. | separator name components are set according to the parameter value. | |||
| The components list MUST adhere to the order of the JSCOMPS parameter | The components list MUST adhere to the order of the JSCOMPS parameter | |||
| value. | value. | |||
| If the JSCOMPS parameter is not set, then the Address isOrdered | If the JSCOMPS parameter is not set, then the Address isOrdered | |||
| property value is "false" and the defaultSeparator property MUST NOT | property value is "false", and the defaultSeparator property MUST NOT | |||
| be set. The components list MUST follow the order of values in the | be set. The components list MUST follow the order of values in the | |||
| ADR structured value when read from left to right. | ADR structured value when read from left to right. | |||
| The LABEL parameter converts to the Address full property. | The LABEL parameter converts to the Address full property. | |||
| The GEO parameter converts to the Address coordinates property. | The GEO parameter converts to the Address coordinates property. | |||
| The TZ parameter converts to the Address timeZone property. | The TZ parameter converts to the Address timeZone property. | |||
| The CC parameter as defined in [RFC8605] converts to the Address | The CC parameter, as defined in [RFC8605], converts to the Address | |||
| countryCode property. | countryCode property. | |||
| The PREF and TYPE parameters convert according to the rules as | The PREF and TYPE parameters convert according to the rules defined | |||
| defined in Section 2.3. The ADR-specific values of the TYPE | in Section 2.3. The ADR-specific values of the TYPE parameter | |||
| parameter defined in Sections 5.1 and 5.2 of | defined in Sections 5.1 and 5.2 of [RFC9554] convert to the | |||
| [I-D.ietf-calext-vcard-jscontact-extensions] convert to the | ||||
| corresponding entries of the contexts property as defined in | corresponding entries of the contexts property as defined in | |||
| Section 2.5.1 of [I-D.ietf-calext-jscontact]. | Section 2.5.1 of [RFC9553]. | |||
| The ALTID and LANGUAGE parameters convert according to the rules as | The ALTID and LANGUAGE parameters convert according to the rules | |||
| defined in Section 2.3. Each possible language-dependent alternative | defined in Section 2.3. Each possible language-dependent alternative | |||
| is represented as an entry of the PatchObject map where the key | is represented as an entry of the PatchObject map where the key | |||
| references the full property. | references the full property. | |||
| ADR;TYPE=work;CC=US:;;54321 Oak St;Reston;VA;20190;USA;;;;Oak St;54321;;;;; | ADR;TYPE=work;CC=US:;;54321 Oak St;Reston;VA;20190;USA;;;;Oak St;54321;;;;; | |||
| "addresses": { | "addresses": { | |||
| "ADDR-1" : { | "ADDR-1" : { | |||
| "contexts": { "work": true }, | "contexts": { "work": true }, | |||
| "components": [ | "components": [ | |||
| { "kind": "number", "value": "54321" }, | { "kind": "number", "value": "54321" }, | |||
| { "kind": "name", "value": "Oak St" }, | { "kind": "name", "value": "Oak St" }, | |||
| { "kind": "locality", "value": "Reston" }, | { "kind": "locality", "value": "Reston" }, | |||
| { "kind": "region", "value": "VA" }, | { "kind": "region", "value": "VA" }, | |||
| { "kind": "postcode", "value": "20190" }, | { "kind": "postcode", "value": "20190" }, | |||
| { "kind": "country", "value": "USA" } | { "kind": "country", "value": "USA" } | |||
| ], | ], | |||
| "countryCode": "US", | "countryCode": "US" | |||
| } | } | |||
| } | } | |||
| Figure 16: ADR conversion example | Figure 16: ADR Conversion Example | |||
| See Section 3.3.1 for examples of using the JSCOMPS parameter for | See Section 3.3.1 for examples of using the JSCOMPS parameter for | |||
| vCard structured property values. | vCard-structured property values. | |||
| 2.7. Communications Properties | 2.7. Communications Properties | |||
| 2.7.1. EMAIL | 2.7.1. EMAIL | |||
| An EMAIL property converts to an entry in the emails property | The EMAIL property converts to an entry in the emails property | |||
| (Figure 17). The entry value is an EmailAddress object. The address | (Figure 17). The entry value is an EmailAddress object. The address | |||
| property is set to the EMAIL value. | property is set to the EMAIL value. | |||
| The PREF and TYPE parameters convert according to the rules as | The PREF and TYPE parameters convert according to the rules defined | |||
| defined in Section 2.3. | in Section 2.3. | |||
| EMAIL;TYPE=work:jqpublic@xyz.example.com | EMAIL;TYPE=work:jqpublic@xyz.example.com | |||
| EMAIL;PREF=1:jane_doe@example.com | EMAIL;PREF=1:jane_doe@example.com | |||
| "emails": { | "emails": { | |||
| "EMAIL-1": { | "EMAIL-1": { | |||
| "contexts": { "work": true }, | "contexts": { "work": true }, | |||
| "address": "jqpublic@xyz.example.com" | "address": "jqpublic@xyz.example.com" | |||
| }, | }, | |||
| "EMAIL-2": { | "EMAIL-2": { | |||
| "address": "jane_doe@example.com", | "address": "jane_doe@example.com", | |||
| "pref": 1 | "pref": 1 | |||
| } | } | |||
| } | } | |||
| Figure 17: EMAIL conversion example | Figure 17: EMAIL Conversion Example | |||
| 2.7.2. IMPP | 2.7.2. IMPP | |||
| An IMPP property converts to an entry in the onlineServices property | The IMPP property converts to an entry in the onlineServices property | |||
| (Figure 18). The entry value is an OnlineService object. The | (Figure 18). The entry value is an OnlineService object. The | |||
| vCardName property is set to "impp" and the uri property is set to | vCardName property is set to "impp", and the uri property is set to | |||
| the IMPP value. | the IMPP value. | |||
| The SERVICE-TYPE, USERNAME, PREF and TYPE parameters convert | The SERVICE-TYPE, USERNAME, PREF, and TYPE parameters convert | |||
| according to the rules as defined in Section 2.3. | according to the rules defined in Section 2.3. | |||
| IMPP;PREF=1:xmpp:alice@example.com | IMPP;PREF=1:xmpp:alice@example.com | |||
| "onlineServices": { | "onlineServices": { | |||
| "OS-1": { | "OS-1": { | |||
| "uri": "xmpp:alice@example.com", | "uri": "xmpp:alice@example.com", | |||
| "pref": 1, | "pref": 1, | |||
| "vCardName": "impp" | "vCardName": "impp" | |||
| } | } | |||
| } | } | |||
| Figure 18: IMPP conversion example | Figure 18: IMPP Conversion Example | |||
| 2.7.3. LANG | 2.7.3. LANG | |||
| A LANG property converts to an entry in the preferredLanguages | The LANG property converts to an entry in the preferredLanguages | |||
| property (Figure 19). The entry value is an LanguagePref object. | property (Figure 19). The entry value is a LanguagePref object. The | |||
| The LanguagePref language property value is the LANG property value. | LanguagePref language property value is the LANG property value. | |||
| The PREF and TYPE parameters convert according to the rules as | The PREF and TYPE parameters convert according to the rules defined | |||
| defined in Section 2.3. | in Section 2.3. | |||
| LANG;TYPE=work;PREF=1:en | LANG;TYPE=work;PREF=1:en | |||
| LANG;TYPE=work;PREF=2:fr | LANG;TYPE=work;PREF=2:fr | |||
| LANG;TYPE=home:fr | LANG;TYPE=home:fr | |||
| "preferredLanguages": { | "preferredLanguages": { | |||
| "LANG-1": { | "LANG-1": { | |||
| "language": "en", | "language": "en", | |||
| "contexts": { "work": true }, | "contexts": { "work": true }, | |||
| "pref": 1 | "pref": 1 | |||
| skipping to change at page 27, line 26 ¶ | skipping to change at line 1178 ¶ | |||
| "language": "fr", | "language": "fr", | |||
| "contexts": { "work": true }, | "contexts": { "work": true }, | |||
| "pref": 2 | "pref": 2 | |||
| }, | }, | |||
| "LANG-3": { | "LANG-3": { | |||
| "language": "fr", | "language": "fr", | |||
| "contexts": { "private": true } | "contexts": { "private": true } | |||
| } | } | |||
| } | } | |||
| Figure 19: LANG conversion example | Figure 19: LANG Conversion Example | |||
| 2.7.4. LANGUAGE | 2.7.4. LANGUAGE | |||
| The LANGUAGE property converts to the language property (Figure 20). | The LANGUAGE property converts to the language property (Figure 20). | |||
| LANGUAGE:de-AT | LANGUAGE:de-AT | |||
| "language": "de-AT" | "language": "de-AT" | |||
| Figure 20: LANGUAGE conversion example | Figure 20: LANGUAGE Conversion Example | |||
| Note: This property is defined in | Note: This property is defined in [RFC9554]. | |||
| [I-D.ietf-calext-vcard-jscontact-extensions]. | ||||
| 2.7.5. SOCIALPROFILE | 2.7.5. SOCIALPROFILE | |||
| A SOCIALPROFILE property converts to an entry in the onlineServices | The SOCIALPROFILE property converts to an entry in the onlineServices | |||
| property (Figure 21). The entry value is an OnlineService object. | property (Figure 21). The entry value is an OnlineService object. | |||
| The vCardName property is set to "socialprofile" or can be omitted. | The vCardName property is set to "socialprofile", or it can be | |||
| If the value type of the SOCIALPROFILE is URI, the uri property is | omitted. If the value type of the SOCIALPROFILE is URI, the uri | |||
| set to the SOCIALPROFILE value. Otherwise, the user property is set | property is set to the SOCIALPROFILE value. Otherwise, the user | |||
| to the SOCIALPROFILE value. | property is set to the SOCIALPROFILE value. | |||
| The SERVICE-TYPE, USERNAME, PREF and TYPE parameters convert | The SERVICE-TYPE, USERNAME, PREF, and TYPE parameters convert | |||
| according to the rules as defined in Section 2.3. | according to the rules defined in Section 2.3. | |||
| SOCIALPROFILE;SERVICE-TYPE=Mastodon:https://example.com/@foo | SOCIALPROFILE;SERVICE-TYPE=Mastodon:https://example.com/@foo | |||
| "onlineServices": { | "onlineServices": { | |||
| ... | ... | |||
| "OS-1": { | "OS-1": { | |||
| "service": "Mastodon", | "service": "Mastodon", | |||
| "uri": "https://example.com/@foo" | "uri": "https://example.com/@foo" | |||
| } | } | |||
| } | } | |||
| Figure 21: SOCIALPROFILE conversion example | Figure 21: SOCIALPROFILE Conversion Example | |||
| Note: This property is defined in | Note: This property is defined in [RFC9554]. | |||
| [I-D.ietf-calext-vcard-jscontact-extensions]. | ||||
| 2.7.6. TEL | 2.7.6. TEL | |||
| A TEL property converts to an entry in the phones property | The TEL property converts to an entry in the phones property | |||
| (Figure 22). The entry value is a Phone object. | (Figure 22). The entry value is a Phone object. | |||
| The TEL-specific values of the TYPE parameter convert to the features | The TEL-specific values of the TYPE parameter convert to the features | |||
| property keys as outlined in table Table 3. Note that Section 6.4.1 | property keys as outlined in Table 3. Note that Section 6.4.1 of | |||
| of [RFC6350] defines the default TYPE of TEL to be voice, but the | [RFC6350] defines the default TYPE of TEL to be voice, but the | |||
| default Phone features property is absent by default. Accordingly, | default Phone features property is absent by default. Accordingly, | |||
| an implementation SHOULD only set the Phone features property if the | an implementation SHOULD only set the Phone features property if the | |||
| TEL property actually has a TEL-specific TYPE parameter set. | TEL property actually has a TEL-specific TYPE parameter set. | |||
| +=============+===============+ | +=============+===============+ | |||
| | TYPE value | Phone feature | | | TYPE value | Phone feature | | |||
| +=============+===============+ | +=============+===============+ | |||
| | cell | mobile | | | cell | mobile | | |||
| +-------------+---------------+ | +-------------+---------------+ | |||
| | fax | fax | | | fax | fax | | |||
| skipping to change at page 28, line 52 ¶ | skipping to change at line 1250 ¶ | |||
| +-------------+---------------+ | +-------------+---------------+ | |||
| | text | text | | | text | text | | |||
| +-------------+---------------+ | +-------------+---------------+ | |||
| | textphone | textphone | | | textphone | textphone | | |||
| +-------------+---------------+ | +-------------+---------------+ | |||
| | video | video | | | video | video | | |||
| +-------------+---------------+ | +-------------+---------------+ | |||
| | voice | voice | | | voice | voice | | |||
| +-------------+---------------+ | +-------------+---------------+ | |||
| Table 3: TEL TYPE conversion | Table 3: TEL TYPE Conversion | |||
| The value of the TEL property converts to the Phone number property. | The value of the TEL property converts to the Phone number property. | |||
| The PREF and TYPE parameters convert according to the rules as | The PREF and TYPE parameters convert according to the rules defined | |||
| defined in Section 2.3. | in Section 2.3. | |||
| TEL;VALUE=uri;PREF=1;TYPE="voice,home":tel:+1-555-555-5555;ext=5555 | TEL;VALUE=uri;PREF=1;TYPE="voice,home":tel:+1-555-555-5555;ext=5555 | |||
| TEL;VALUE=uri;TYPE=home:tel:+33-01-23-45-67 | TEL;VALUE=uri;TYPE=home:tel:+33-01-23-45-67 | |||
| "phones": { | "phones": { | |||
| "PHONE-1": { | "PHONE-1": { | |||
| "contexts": { "private": true }, | "contexts": { "private": true }, | |||
| "features": { "voice": true }, | "features": { "voice": true }, | |||
| "number": "tel:+1-555-555-5555;ext=5555", | "number": "tel:+1-555-555-5555;ext=5555", | |||
| "pref": 1 | "pref": 1 | |||
| }, | }, | |||
| "PHONE-2": { | "PHONE-2": { | |||
| "contexts": { "private": true }, | "contexts": { "private": true }, | |||
| "number": "tel:+33-01-23-45-67" | "number": "tel:+33-01-23-45-67" | |||
| } | } | |||
| } | } | |||
| Figure 22: TEL conversion example | Figure 22: TEL Conversion Example | |||
| 2.8. Geographical Properties | 2.8. Geographical Properties | |||
| 2.8.1. GEO | 2.8.1. GEO | |||
| This converts to the coordinates property of the Address object. | The GEO property converts to the coordinates property of the Address | |||
| Also see Section 2.8.3 to determine which Address object instance to | object. Also see Section 2.8.3 to determine which Address object | |||
| convert to. | instance to convert to. | |||
| 2.8.2. TZ | 2.8.2. TZ | |||
| A value of type TEXT converts to the timeZone property in the Address | A value of type TEXT converts to the timeZone property in the Address | |||
| object. | object. | |||
| A value of type UTC-OFFSET converts to the timeZone property in the | A value of type UTC-OFFSET converts to the timeZone property in the | |||
| Address object if the offset has zero minutes and the hour offset is | Address object if the offset has zero minutes and the hour offset is | |||
| in the range -12 <= 14: | in the range -12 <= 14. Note that: | |||
| * If the hour offset is zero, use the time zone name Etc/UTC. | * If the hour offset is zero, use the time zone name Etc/UTC. | |||
| * Otherwise construct the time zone name with Etc/GMT suffixed with | * Otherwise, construct the time zone name with Etc/GMT suffixed with | |||
| the string representation of the reversed sign hour offset, | the string representation of the reversed sign hour offset, | |||
| including the sign but excluding leading zeros and minutes. For | including the sign but excluding leading zeros and minutes. For | |||
| example, the UTC offset value -0500 converts to Etc/GMT+5. | example, the UTC offset value -0500 converts to Etc/GMT+5. | |||
| For such property values, also see Section 2.8.3 to determine which | For such property values, also see Section 2.8.3 to determine which | |||
| Address object instance to convert to. | Address object instance to convert to. | |||
| Any other value of type UTC-OFFSET or URI does not convert to an | Any other value of type UTC-OFFSET or URI does not convert to an | |||
| IANA-registered property in JSContact. To convert such property, see | IANA-registered property in JSContact. To convert such property, see | |||
| Section 2.15.1. | Section 2.15.1. | |||
| 2.8.3. Combining geographical properties | 2.8.3. Combining Geographical Properties | |||
| In vCard the properties ADR, GEO and TZ occur independently of each | In vCard, the properties ADR, GEO, and TZ occur independently of each | |||
| other. In JSContact, they all convert to properties of an Address | other. In JSContact, they all convert to properties of an Address | |||
| object. It is implementation-specific if these vCard properties | object. It is implementation-specific if these vCard properties | |||
| convert to _separate_ address instances in JSContact, or if some or | convert to _separate_ address instances in JSContact or if some or | |||
| all of them convert to the _same_ address. That being said, | all of them convert to the _same_ address. That being said, | |||
| implementations MUST convert the properties to the _same_ address for | implementations MUST convert the properties to the _same_ address for | |||
| the following cases: | the following cases: | |||
| * The GROUP parameter values of the properties match. | * The GROUP parameter values of the properties match. | |||
| * The GROUP parameters are not set, but are set on any other ADR, | * The GROUP parameters are not set, but they are set on any other | |||
| GEO and TZ properties. | ADR, GEO, and TZ properties. | |||
| 2.9. Organizational Properties | 2.9. Organizational Properties | |||
| 2.9.1. CONTACT-URI | 2.9.1. CONTACT-URI | |||
| A CONTACT-URI property as defined in [RFC8605] is represented as an | The CONTACT-URI property, as defined in [RFC8605], is represented as | |||
| entry of the links property (Figure 23). The entry value is a Link | an entry of the links property (Figure 23). The entry value is a | |||
| object whose kind property is set to contact and uri property is set | Link object whose kind property is set to contact and uri property is | |||
| to the CONTACT-URI value. | set to the CONTACT-URI value. | |||
| The PREF and TYPE parameters convert according to the rules as | The PREF and TYPE parameters convert according to the rules defined | |||
| defined in Section 2.3. | in Section 2.3. | |||
| CONTACT-URI;PREF=1:mailto:contact@example.com | CONTACT-URI;PREF=1:mailto:contact@example.com | |||
| "links": { | "links": { | |||
| "CONTACT-1": { | "CONTACT-1": { | |||
| "kind": "contact", | "kind": "contact", | |||
| "uri": "mailto:contact@example.com", | "uri": "mailto:contact@example.com", | |||
| "pref": 1 | "pref": 1 | |||
| } | } | |||
| } | } | |||
| Figure 23: CONTACT-URI conversion example | Figure 23: CONTACT-URI Conversion Example | |||
| 2.9.2. LOGO | 2.9.2. LOGO | |||
| A LOGO property converts to an entry in the media property | The LOGO property converts to an entry in the media property | |||
| (Figure 24). The entry value is a Media object whose kind property | (Figure 24). The entry value is a Media object whose kind property | |||
| is set to logo and uri property is set to the LOGO value. | is set to logo and uri property is set to the LOGO value. | |||
| The PREF and TYPE parameters convert according to the rules as | The PREF and TYPE parameters convert according to the rules defined | |||
| defined in Section 2.3. | in Section 2.3. | |||
| LOGO:https://www.example.com/pub/logos/abccorp.jpg | LOGO:https://www.example.com/pub/logos/abccorp.jpg | |||
| "media": { | "media": { | |||
| "LOGO-1": { | "LOGO-1": { | |||
| "kind": "logo", | "kind": "logo", | |||
| "uri": "https://www.example.com/pub/logos/abccorp.jpg" | "uri": "https://www.example.com/pub/logos/abccorp.jpg" | |||
| } | } | |||
| } | } | |||
| Figure 24: LOGO conversion example | Figure 24: LOGO Conversion Example | |||
| 2.9.3. MEMBER | 2.9.3. MEMBER | |||
| The uids of the contact cards composing the group are included in the | The uids of the contact cards composing the group are included in the | |||
| members property (Figure 25). | members property (Figure 25). | |||
| In this case, the PREF parameter does not have a JSContact | In this case, the PREF parameter does not have a JSContact | |||
| counterpart; however, the implementors MAY insert the map entries by | counterpart; however, the implementors MAY insert the map entries by | |||
| order of preference. | order of preference. | |||
| skipping to change at page 31, line 49 ¶ | skipping to change at line 1389 ¶ | |||
| "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 25: Group example | Figure 25: Group Example | |||
| 2.9.4. ORG | 2.9.4. ORG | |||
| An ORG property converts to an entry in the organizations property | The ORG property converts to an entry in the organizations property | |||
| (Figure 26). The entry value is an Organization object whose name | (Figure 26). The entry value is an Organization object whose name | |||
| property contains the organizational name, and the units property is | property contains the organizational name, and the units property is | |||
| an array of OrgUnit objects each containing the organizational unit | an array of OrgUnit objects that each contain the organizational unit | |||
| name in the name property. | name in the name property. | |||
| Implementations MAY allow representation of organizational units | Implementations MAY allow representation of organizational units | |||
| without the organizational name. In this case, the first component | without the organizational name. In this case, the first component | |||
| of the ORG value MUST be an empty string (e.g., ORG:;DepartmentA). | of the ORG value MUST be an empty string (e.g., ORG:;DepartmentA). | |||
| The ALTID, LANGUAGE parameters convert according to the rules as | The ALTID and LANGUAGE parameters convert according to the rules | |||
| defined in Section 2.3. | defined in Section 2.3. | |||
| The first item of the comma-separated SORT-AS parameter value | The first item of the comma-separated SORT-AS parameter value | |||
| converts to the sortAs property of the Organization object. The | converts to the sortAs property of the Organization object. The | |||
| subsequent items convert to the sortAs property of the corresponding | subsequent items convert to the sortAs property of the corresponding | |||
| OrgUnit object. | OrgUnit object. | |||
| The TYPE parameter converts according to the rules as defined in | The TYPE parameter converts according to the rules defined in | |||
| Section 2.3. | Section 2.3. | |||
| ORG;SORT-AS="ABC":ABC\, Inc.;North American Division;Marketing | ORG;SORT-AS="ABC":ABC\, Inc.;North American Division;Marketing | |||
| "organizations": { | "organizations": { | |||
| "ORG-1": { | "ORG-1": { | |||
| "name": "ABC, Inc.", | "name": "ABC, Inc.", | |||
| "units":[ | "units":[ | |||
| { "name": "North American Division" }, | { "name": "North American Division" }, | |||
| { "name": "Marketing" } | { "name": "Marketing" } | |||
| ], | ], | |||
| "sortAs": "ABC" | "sortAs": "ABC" | |||
| } | } | |||
| } | } | |||
| Figure 26: ORG conversion example | Figure 26: ORG Conversion Example | |||
| 2.9.5. RELATED | 2.9.5. RELATED | |||
| This converts to an entry in the relatedTo property (Figure 27). The | The RELATED property converts to an entry in the relatedTo property | |||
| property value converts to the key in the relatedTo property. The | (Figure 27). The property value converts to the key in the relatedTo | |||
| TYPE parameters convert to the relation of the Relation object value. | property. The TYPE parameters convert to the relation of the | |||
| Any other parameters convert as defined in Section 2.15.2. | Relation object value. Any other parameters convert as defined in | |||
| Section 2.15.2. | ||||
| RELATED;TYPE=friend:urn:uuid:f81d4fae-7dec-11d0-a765-00a0c91e6bf6 | RELATED;TYPE=friend:urn:uuid:f81d4fae-7dec-11d0-a765-00a0c91e6bf6 | |||
| RELATED;TYPE=contact:https://example.com/directory/john.vcf | RELATED;TYPE=contact:https://example.com/directory/john.vcf | |||
| RELATED;VALUE=text:Please contact my deputy John for any inquiries. | RELATED;VALUE=text:Please contact my deputy John for any inquiries. | |||
| "relatedTo" : { | "relatedTo" : { | |||
| "urn:uuid:f81d4fae-7dec-11d0-a765-00a0c91e6bf6" : { | "urn:uuid:f81d4fae-7dec-11d0-a765-00a0c91e6bf6" : { | |||
| "relation" : { | "relation" : { | |||
| "friend" : true | "friend" : true | |||
| } | } | |||
| skipping to change at page 33, line 25 ¶ | skipping to change at line 1457 ¶ | |||
| "https://example.com/directory/john.vcf" : { | "https://example.com/directory/john.vcf" : { | |||
| "relation" : { | "relation" : { | |||
| "contact" : true | "contact" : true | |||
| } | } | |||
| }, | }, | |||
| "Please contact my deputy John for any inquiries." : { | "Please contact my deputy John for any inquiries." : { | |||
| "relation" : { } | "relation" : { } | |||
| } | } | |||
| } | } | |||
| Figure 27: RELATED conversion example | Figure 27: RELATED Conversion Example | |||
| 2.9.6. TITLE and ROLE | 2.9.6. TITLE and ROLE | |||
| Both TITLE and ROLE properties are represented as entries of the | Both TITLE and ROLE properties are represented as entries of the | |||
| titles property (Figure 28). The entry value is a Title object whose | titles property (Figure 28). The entry value is a Title object whose | |||
| kind property is set to title or role for TITLE and ROLE vCard | kind property is set to title or role for the TITLE and ROLE vCard | |||
| properties, respectively. The name property is set to the vCard | properties, respectively. The name property is set to the vCard | |||
| property value. | property value. | |||
| The value of the organization property can be derived if the TITLE or | The value of the organizationId property can be derived if the TITLE | |||
| ROLE property is member of a vCard property group and exactly one | or ROLE property is a member of a vCard property group and if exactly | |||
| other ORG property also is part of that group. | one other ORG property is also a part of that group. | |||
| The ALTID and LANGUAGE parameters convert according to the rules as | The ALTID and LANGUAGE parameters convert according to the rules | |||
| defined in Section 2.3. | defined in Section 2.3. | |||
| TITLE:Research Scientist | TITLE:Research Scientist | |||
| group1.ROLE:Project Leader | group1.ROLE:Project Leader | |||
| group1.ORG:ABC, Inc. | group1.ORG:ABC, Inc. | |||
| "titles": { | "titles": { | |||
| "TITLE-1": { | "TITLE-1": { | |||
| "kind": "title", | "kind": "title", | |||
| "name": "Project Leader" | "name": "Research Scientist" | |||
| }, | }, | |||
| "TITLE-2": { | "TITLE-2": { | |||
| "kind": "role", | "kind": "role", | |||
| "name": "Research Scientist", | "name": "Project Leader", | |||
| "organization": "ORG-1" | "organizationId": "ORG-1" | |||
| } | } | |||
| }, | }, | |||
| "organizations": { | "organizations": { | |||
| "ORG-1": { | "ORG-1": { | |||
| "name": "ABC, Inc." | "name": "ABC, Inc." | |||
| } | } | |||
| } | } | |||
| Figure 28: TITLE and ROLE conversion example | Figure 28: TITLE and ROLE Conversion Example | |||
| 2.10. Personal Information Properties | 2.10. Personal Information Properties | |||
| 2.10.1. EXPERTISE | 2.10.1. EXPERTISE | |||
| An EXPERTISE property as defined in [RFC6715] is represented as a | The EXPERTISE property, as defined in [RFC6715], is represented as a | |||
| PersonalInfo object in the personalInfo property (Figure 29). The | PersonalInfo object in the personalInfo property (Figure 29). The | |||
| kind property is set to "expertise". | kind property is set to "expertise". | |||
| The INDEX parameter converts according to the rules as defined in | The INDEX parameter converts according to the rules defined in | |||
| Section 2.3. | Section 2.3. | |||
| EXPERTISE;LEVEL=beginner;INDEX=2:Chinese literature | EXPERTISE;LEVEL=beginner;INDEX=2:Chinese literature | |||
| EXPERTISE;INDEX=1;LEVEL=expert:chemistry | EXPERTISE;INDEX=1;LEVEL=expert:chemistry | |||
| "personalInfo": { | "personalInfo": { | |||
| "PERSINFO-1" : { | "PERSINFO-1" : { | |||
| "kind": "expertise", | "kind": "expertise", | |||
| "value": "Chinese literature", | "value": "Chinese literature", | |||
| "level": "low", | "level": "low", | |||
| "listAs": 2 | "listAs": 2 | |||
| }, | }, | |||
| "PERSINFO-2" : { | "PERSINFO-2" : { | |||
| "kind": "expertise", | "kind": "expertise", | |||
| "value": "chemistry", | "value": "chemistry", | |||
| "level": "high", | "level": "high", | |||
| "listAs": 1 | "listAs": 1 | |||
| } | } | |||
| } | } | |||
| Figure 29: EXPERTISE conversion example | Figure 29: EXPERTISE Conversion Example | |||
| 2.10.2. HOBBY | 2.10.2. HOBBY | |||
| A HOBBY property as defined in [RFC6715] is represented as a | The HOBBY property, as defined in [RFC6715], is represented as a | |||
| PersonalInfo object in the personalInfo property (Figure 30). The | PersonalInfo object in the personalInfo property (Figure 30). The | |||
| kind property is set to "hobby". | kind property is set to "hobby". | |||
| The INDEX parameter converts according to the rules as defined in | The INDEX parameter converts according to the rules defined in | |||
| Section 2.3. | Section 2.3. | |||
| HOBBY;INDEX=1;LEVEL=high:reading | HOBBY;INDEX=1;LEVEL=high:reading | |||
| HOBBY;INDEX=2;LEVEL=high:sewing | HOBBY;INDEX=2;LEVEL=high:sewing | |||
| "personalInfo": { | "personalInfo": { | |||
| "PERSINFO-1" : { | "PERSINFO-1" : { | |||
| "kind": "hobby", | "kind": "hobby", | |||
| "value": "reading", | "value": "reading", | |||
| "level": "high", | "level": "high", | |||
| "listAs": 1 | "listAs": 1 | |||
| }, | }, | |||
| "PERSINFO-2" : { | "PERSINFO-2" : { | |||
| "kind": "hobby", | "kind": "hobby", | |||
| "value": "sewing", | "value": "sewing", | |||
| "level": "high", | "level": "high", | |||
| "listAs": 2 | "listAs": 2 | |||
| } | } | |||
| } | } | |||
| Figure 30: HOBBY conversion example | Figure 30: HOBBY Conversion Example | |||
| 2.10.3. INTEREST | 2.10.3. INTEREST | |||
| An INTEREST property as defined in [RFC6715] is represented as a | The INTEREST property, as defined in [RFC6715], is represented as a | |||
| PersonalInfo object in the personalInfo property (Figure 31). The | PersonalInfo object in the personalInfo property (Figure 31). The | |||
| kind property is set to "interest". | kind property is set to "interest". | |||
| The INDEX parameter converts according to the rules as defined in | The INDEX parameter converts according to the rules defined in | |||
| Section 2.3. | Section 2.3. | |||
| INTEREST;INDEX=1;LEVEL=medium:r&b music | INTEREST;INDEX=1;LEVEL=medium:r&b music | |||
| INTEREST;INDEX=2;LEVEL=high:rock&roll music | INTEREST;INDEX=2;LEVEL=high:rock&roll music | |||
| "personalInfo": { | "personalInfo": { | |||
| "PERSINFO-1" : { | "PERSINFO-1" : { | |||
| "kind": "interest", | "kind": "interest", | |||
| "value": "r&b music", | "value": "r&b music", | |||
| "level": "medium", | "level": "medium", | |||
| "listAs": 1 | "listAs": 1 | |||
| }, | }, | |||
| "PERSINFO-2" : { | "PERSINFO-2" : { | |||
| "kind": "interest", | "kind": "interest", | |||
| "value": "rock&roll music", | "value": "rock&roll music", | |||
| "level": "high", | "level": "high", | |||
| "listAs": 2 | "listAs": 2 | |||
| } | } | |||
| } | } | |||
| Figure 31: INTEREST conversion example | Figure 31: INTEREST Conversion Example | |||
| 2.10.4. ORG-DIRECTORY | 2.10.4. ORG-DIRECTORY | |||
| The ORG-DIRECTORY property [RFC6715] converts to a Directory object | The ORG-DIRECTORY property [RFC6715] converts to a Directory object | |||
| in the directories property (Figure 32). The kind property is set to | in the directories property (Figure 32). The kind property is set to | |||
| directory. The uri property is set to the ORG-DIRECTORY property | directory. The uri property is set to the ORG-DIRECTORY property | |||
| value. | value. | |||
| The INDEX, PREF and TYPE parameters convert according to the rules as | The INDEX, PREF, and TYPE parameters convert according to the rules | |||
| defined in Section 2.3. | defined in Section 2.3. | |||
| ORG-DIRECTORY;INDEX=1:https://directory.mycompany.example.com | ORG-DIRECTORY;INDEX=1:https://directory.mycompany.example.com | |||
| ORG-DIRECTORY;PREF=1:ldap://ldap.tech.example/o=Tech,ou=Engineering | ORG-DIRECTORY;PREF=1:ldap://ldap.tech.example/o=Tech,ou=Engineering | |||
| "directories": { | "directories": { | |||
| "DIRECTORY-1": { | "DIRECTORY-1": { | |||
| "kind": "directory", | "kind": "directory", | |||
| "uri": "https://directory.mycompany.example.com", | "uri": "https://directory.mycompany.example.com", | |||
| "listAs": 1 | "listAs": 1 | |||
| }, | }, | |||
| "DIRECTORY-2": { | "DIRECTORY-2": { | |||
| "kind": "directory", | "kind": "directory", | |||
| "uri": "ldap://ldap.tech.example/o=Tech,ou=Engineering", | "uri": "ldap://ldap.tech.example/o=Tech,ou=Engineering", | |||
| "pref": 1 | "pref": 1 | |||
| } | } | |||
| } | } | |||
| Figure 32: ORG-DIRECTORY conversion example | Figure 32: ORG-DIRECTORY Conversion Example | |||
| 2.11. Explanatory Properties | 2.11. Explanatory Properties | |||
| 2.11.1. CATEGORIES | 2.11.1. CATEGORIES | |||
| A CATEGORIES property converts to a set of entries of the keywords | The CATEGORIES property converts to a set of entries of the keywords | |||
| property (Figure 33). The keys are the comma-separated text values | property (Figure 33). The keys are the comma-separated text values | |||
| of the CATEGORIES property. | of the CATEGORIES property. | |||
| In this case, the PREF parameter does not have a JSContact | In this case, the PREF parameter does not have a JSContact | |||
| counterpart; however, the implementors MAY insert the map entries by | counterpart; however, the implementors MAY insert the map entries by | |||
| order of preference. | order of preference. | |||
| CATEGORIES:internet,IETF,Industry,Information Technology | CATEGORIES:internet,IETF,Industry,Information Technology | |||
| "keywords": { | "keywords": { | |||
| "internet": true, | "internet": true, | |||
| "IETF": true, | "IETF": true, | |||
| "Industry": true, | "Industry": true, | |||
| "Information Technology": true | "Information Technology": true | |||
| } | } | |||
| Figure 33: CATEGORIES conversion example | Figure 33: CATEGORIES Conversion Example | |||
| 2.11.2. CLIENTPIDMAP and PID Parameter | 2.11.2. CLIENTPIDMAP and PID Parameters | |||
| These convert to the vCardProps (Section 2.15.1) and vCardParams | The CLIENTPIDMAP and PID parameters convert to the vCardProps | |||
| (Section 2.15.2) properties. | (Section 2.15.1) and vCardParams (Section 2.15.2) properties. | |||
| 2.11.3. CREATED | 2.11.3. CREATED | |||
| The CREATED property converts to the created property (Figure 34). | The CREATED property converts to the created property (Figure 34). | |||
| CREATED:19940930T143510Z | CREATED:19940930T143510Z | |||
| "created": "1994-09-30T14:35:10Z" | "created": "1994-09-30T14:35:10Z" | |||
| Figure 34: CREATED conversion example | Figure 34: CREATED Conversion Example | |||
| Note: This property is defined in | Note: This property is defined in [RFC9554]. | |||
| [I-D.ietf-calext-vcard-jscontact-extensions]. | ||||
| 2.11.4. NOTE | 2.11.4. NOTE | |||
| A NOTE property converts to a Note object in the notes map | The NOTE property converts to a Note object in the notes map | |||
| (Figure 35). | (Figure 35). | |||
| The ALTID and LANGUAGE parameters convert according to the rules as | The ALTID and LANGUAGE parameters convert according to the rules | |||
| defined in Section 2.3. | defined in Section 2.3. | |||
| NOTE;CREATED=20221123T150132Z;AUTHOR-NAME="John": | NOTE;CREATED=20221123T150132Z;AUTHOR-NAME="John": | |||
| Office hours are from 0800 to 1715 EST\, Mon-Fri. | Office hours are from 0800 to 1715 EST\, Mon-Fri. | |||
| "notes": { | "notes": { | |||
| "NOTE-1" : { | "NOTE-1" : { | |||
| "note": "Office hours are from 0800 to 1715 EST, Mon-Fri.", | "note": "Office hours are from 0800 to 1715 EST, Mon-Fri.", | |||
| "created": "2022-11-23T15:01:32Z", | "created": "2022-11-23T15:01:32Z", | |||
| "author": { | "author": { | |||
| "name": "John" | "name": "John" | |||
| } | } | |||
| } | } | |||
| } | } | |||
| Figure 35: NOTE conversion example | Figure 35: NOTE Conversion Example | |||
| 2.11.5. PRODID | 2.11.5. PRODID | |||
| The PRODID property converts to the prodId property (Figure 36). | The PRODID property converts to the prodId property (Figure 36). | |||
| PRODID:ACME Contacts App version 1.23.5 | PRODID:ACME Contacts App version 1.23.5 | |||
| "prodId": "ACME Contacts App version 1.23.5" | "prodId": "ACME Contacts App version 1.23.5" | |||
| Figure 36: PRODID conversion example | Figure 36: PRODID Conversion Example | |||
| 2.11.6. REV | 2.11.6. REV | |||
| The REV property converts to the updated property (Figure 37). | The REV property converts to the updated property (Figure 37). | |||
| REV:19951031T222710Z | REV:19951031T222710Z | |||
| "updated": "1995-10-31T22:27:10Z" | "updated": "1995-10-31T22:27:10Z" | |||
| Figure 37: REV conversion example | Figure 37: REV Conversion Example | |||
| 2.11.7. SOUND | 2.11.7. SOUND | |||
| A SOUND property converts to an entry in the media property | The SOUND property converts to an entry in the media property | |||
| (Figure 38). The entry value is a Media object whose kind property | (Figure 38). The entry value is a Media object whose kind property | |||
| is set to sound and uri property is set to the SOUND value. | is set to sound and uri property is set to the SOUND value. | |||
| The PREF and TYPE parameters convert according to the rules as | The PREF and TYPE parameters convert according to the rules defined | |||
| defined in Section 2.3. | in Section 2.3. | |||
| SOUND:CID:JOHNQPUBLIC.19960229T080000.xyzMail@example.com | SOUND:CID:JOHNQPUBLIC.19960229T080000.xyzMail@example.com | |||
| "media": { | "media": { | |||
| ... | ... | |||
| "SOUND-1": { | "SOUND-1": { | |||
| "kind": "sound", | "kind": "sound", | |||
| "uri": "CID:JOHNQPUBLIC.19960229T080000.xyzMail@example.com" | "uri": "CID:JOHNQPUBLIC.19960229T080000.xyzMail@example.com" | |||
| } | } | |||
| } | } | |||
| Figure 38: SOUND conversion example | Figure 38: SOUND Conversion Example | |||
| 2.11.8. UID | 2.11.8. UID | |||
| The UID property corresponds to the uid property (Figure 39). | The UID property corresponds to the uid property (Figure 39). | |||
| UID:urn:uuid:f81d4fae-7dec-11d0-a765-00a0c91e6bf6 | UID:urn:uuid:f81d4fae-7dec-11d0-a765-00a0c91e6bf6 | |||
| "uid": "urn:uuid:f81d4fae-7dec-11d0-a765-00a0c91e6bf6" | "uid": "urn:uuid:f81d4fae-7dec-11d0-a765-00a0c91e6bf6" | |||
| Figure 39: UID conversion example | Figure 39: UID Conversion Example | |||
| 2.11.9. URL | 2.11.9. URL | |||
| A URL property converts to an entry in the links property | The URL property converts to an entry in the links property | |||
| (Figure 40). The entry value is a Link object whose uri property is | (Figure 40). The entry value is a Link object whose uri property is | |||
| set to the URL value. | set to the URL value. | |||
| The PREF and TYPE parameters convert according to the rules as | The PREF and TYPE parameters convert according to the rules defined | |||
| defined in Section 2.3. | in Section 2.3. | |||
| URL:https://example.org/restaurant.french/~chezchic.html | URL:https://example.org/restaurant.french/~chezchic.html | |||
| "links": { | "links": { | |||
| "LINK-1": { | "LINK-1": { | |||
| "uri": "https://example.org/restaurant.french/~chezchic.html" | "uri": "https://example.org/restaurant.french/~chezchic.html" | |||
| } | } | |||
| } | } | |||
| Figure 40: URL conversion example | Figure 40: URL Conversion Example | |||
| 2.11.10. VERSION | 2.11.10. VERSION | |||
| This converts to an entry in the vCardProps (Section 2.15.1) | The VERSION property converts to an entry in the vCardProps | |||
| property. | (Section 2.15.1) property. | |||
| 2.11.11. X-ABLabel | 2.11.11. X-ABLabel | |||
| This property is experimental but widely in use in existing vCard | The X-ABLabel property is experimental but widely in use in existing | |||
| data. It converts to the label property of a JSContact object type. | vCard data. It converts to the label property of a JSContact object | |||
| The X-ABLabel property is preceded by a vCard property group name, | type. The X-ABLabel property is preceded by a vCard property group | |||
| and the label converts to the JSContact object which got converted | name, and the label converts to the JSContact object, which was | |||
| from a vCard property having the same group. | converted from a vCard property having the same group. | |||
| The group name is not preserved, implementations are free to choose | The group name is not preserved; implementations are free to choose | |||
| any unique group name when converting back to vCard. For an example | any unique group name when converting back to vCard. For an example | |||
| how to preserve the group name see Section 2.3.8. | on how to preserve the group name, see Section 2.3.8. | |||
| item1.TEL;VALUE=uri:tel:+1-555-555-5555 | item1.TEL;VALUE=uri:tel:+1-555-555-5555 | |||
| item1.X-ABLabel:foo | item1.X-ABLabel:foo | |||
| "phones": { | "phones": { | |||
| "p1": { | "p1": { | |||
| "number": "tel:+1-555-555-5555", | "number": "tel:+1-555-555-5555", | |||
| "label": "foo" | "label": "foo" | |||
| } | } | |||
| } | } | |||
| Figure 41: X-ABLabel conversion example | Figure 41: X-ABLabel Conversion Example | |||
| 2.12. Security Properties | 2.12. Security Properties | |||
| 2.12.1. KEY | 2.12.1. KEY | |||
| A KEY property converts to an entry in the cryptoKeys property | The KEY property converts to an entry in the cryptoKeys property | |||
| (Figure 42). The entry value is a CryptoKey object whose uri | (Figure 42). The entry value is a CryptoKey object whose uri | |||
| property is set to the KEY value. | property is set to the KEY value. | |||
| The PREF and TYPE parameters convert according to the rules as | The PREF and TYPE parameters convert according to the rules defined | |||
| defined in Section 2.3. | in Section 2.3. | |||
| KEY:https://www.example.com/keys/jdoe.cer | KEY:https://www.example.com/keys/jdoe.cer | |||
| "cryptoKeys": { | "cryptoKeys": { | |||
| "KEY-1": { | "KEY-1": { | |||
| "uri": "https://www.example.com/keys/jdoe.cer" | "uri": "https://www.example.com/keys/jdoe.cer" | |||
| } | } | |||
| } | } | |||
| Figure 42: KEY conversion example | Figure 42: KEY Conversion Example | |||
| 2.13. Calendar Properties | 2.13. Calendar Properties | |||
| 2.13.1. CALADRURI | 2.13.1. CALADRURI | |||
| A CALADRURI property converts to an entry in the schedulingAddresses | The CALADRURI property converts to an entry in the | |||
| property (Figure 43). The entry value is a SchedulingAddress object | schedulingAddresses property (Figure 43). The entry value is a | |||
| whose uri property is set to the CALADRURI value. | SchedulingAddress object whose uri property is set to the CALADRURI | |||
| value. | ||||
| The PREF parameter converts according to the rules as defined in | The PREF parameter converts according to the rules defined in | |||
| Section 2.3. | Section 2.3. | |||
| CALADRURI;PREF=1:mailto:janedoe@example.com | CALADRURI;PREF=1:mailto:janedoe@example.com | |||
| CALADRURI:https://example.com/calendar/jdoe | CALADRURI:https://example.com/calendar/jdoe | |||
| "schedulingAddresses": { | "schedulingAddresses": { | |||
| "SCHEDULING-1": { | "SCHEDULING-1": { | |||
| "uri": "mailto:janedoe@example.com", | "uri": "mailto:janedoe@example.com", | |||
| "pref": 1 | "pref": 1 | |||
| }, | }, | |||
| "SCHEDULING-2": { | "SCHEDULING-2": { | |||
| "uri": "https://example.com/calendar/jdoe" | "uri": "https://example.com/calendar/jdoe" | |||
| } | } | |||
| } | } | |||
| Figure 43: CALADRURI conversion example | Figure 43: CALADRURI Conversion Example | |||
| 2.13.2. CALURI | 2.13.2. CALURI | |||
| A CALURI property converts to an entry in the calendars property | The CALURI property converts to an entry in the calendars property | |||
| (Figure 44). The entry value is a Calendar object whose kind | (Figure 44). The entry value is a Calendar object whose kind | |||
| property is set to calendar and uri property is set to the CALURI | property is set to calendar and uri property is set to the CALURI | |||
| value. | value. | |||
| The PREF and TYPE parameters convert according to the rules as | The PREF and TYPE parameters convert according to the rules defined | |||
| defined in Section 2.3. | in Section 2.3. | |||
| CALURI;PREF=1:https://cal.example.com/calA | CALURI;PREF=1:https://cal.example.com/calA | |||
| CALURI;MEDIATYPE=text/calendar:https://ftp.example.com/calA.ics | CALURI;MEDIATYPE=text/calendar:https://ftp.example.com/calA.ics | |||
| "calendars": { | "calendars": { | |||
| "CAL-1": { | "CAL-1": { | |||
| "kind": "calendar", | "kind": "calendar", | |||
| "uri": "https://cal.example.com/calA", | "uri": "https://cal.example.com/calA", | |||
| "pref": 1 | "pref": 1 | |||
| }, | }, | |||
| "CAL-2": { | "CAL-2": { | |||
| "kind": "calendar", | "kind": "calendar", | |||
| "uri": "https://ftp.example.com/calA.ics", | "uri": "https://ftp.example.com/calA.ics", | |||
| "mediaType": "text/calendar" | "mediaType": "text/calendar" | |||
| } | } | |||
| } | } | |||
| Figure 44: CALURI conversion example | Figure 44: CALURI Conversion Example | |||
| 2.13.3. FBURL | 2.13.3. FBURL | |||
| An FBURL property converts to an entry in the calendars property | The FBURL property converts to an entry in the calendars property | |||
| (Figure 45). The entry value is a Calendar object whose kind | (Figure 45). The entry value is a Calendar object whose kind | |||
| property is set to freeBusy and uri property is set to the FBURL | property is set to freeBusy and uri property is set to the FBURL | |||
| value. | value. | |||
| The PREF and TYPE parameters convert according to the rules as | The PREF and TYPE parameters convert according to the rules defined | |||
| defined in Section 2.3. | in Section 2.3. | |||
| FBURL;PREF=1:https://www.example.com/busy/janedoe | FBURL;PREF=1:https://www.example.com/busy/janedoe | |||
| FBURL;MEDIATYPE=text/calendar:https://example.com/busy/project-a.ifb | FBURL;MEDIATYPE=text/calendar:https://example.com/busy/project-a.ifb | |||
| "calendars": { | "calendars": { | |||
| "FBURL-1": { | "FBURL-1": { | |||
| "kind": "freeBusy", | "kind": "freeBusy", | |||
| "uri": "https://www.example.com/busy/janedoe", | "uri": "https://www.example.com/busy/janedoe", | |||
| "pref": 1 | "pref": 1 | |||
| }, | }, | |||
| "FBURL-2": { | "FBURL-2": { | |||
| "kind": "freeBusy", | "kind": "freeBusy", | |||
| "uri": "https://example.com/busy/project-a.ifb", | "uri": "https://example.com/busy/project-a.ifb", | |||
| "mediaType": "text/calendar" | "mediaType": "text/calendar" | |||
| } | } | |||
| } | } | |||
| Figure 45: FBURL conversion example | Figure 45: FBURL Conversion Example | |||
| 2.14. Extended Properties and Parameters | 2.14. Extended Properties and Parameters | |||
| These convert as specified in Section 2.15. | Extended properties and parameters convert as specified in | |||
| Section 2.15. | ||||
| 2.15. New JSContact properties | 2.15. New JSContact Properties | |||
| vCards may contain properties or parameters for which no IANA- | vCards may contain properties or parameters for which no IANA- | |||
| registered JSContact property is defined. For example, a vCard may | registered JSContact property is defined. For example, a vCard may | |||
| contain properties and parameters of which the semantics or purposes | contain properties and parameters of which the semantics or purposes | |||
| are unknown to the implementation; see Section 6.10 of [RFC6350]. | are unknown to the implementation; see Section 6.10 of [RFC6350]. | |||
| This section defines JSContact properties by which such vCard | This section defines JSContact properties by which such vCard | |||
| properties and parameters MAY be represented in JSContact. | properties and parameters MAY be represented in JSContact. | |||
| Implementations MAY choose to convert differently if they deem that | Implementations MAY choose to convert differently if they deem that | |||
| more appropriate. | more appropriate. | |||
| skipping to change at page 44, line 14 ¶ | skipping to change at line 1921 ¶ | |||
| item1.X-FOO;X-BAR=Hello:World! | item1.X-FOO;X-BAR=Hello:World! | |||
| "vCardProps": [ | "vCardProps": [ | |||
| ["x-foo", { | ["x-foo", { | |||
| "x-bar": "Hello", | "x-bar": "Hello", | |||
| "group": "item1" | "group": "item1" | |||
| }, "unknown", "World!"] | }, "unknown", "World!"] | |||
| ] | ] | |||
| Figure 46: JSContact vCardProps example | Figure 46: JSContact vCardProps Example | |||
| 2.15.2. Property vCardParams | 2.15.2. Property vCardParams | |||
| Name: vCardParams | Name: vCardParams | |||
| Type: String[String|String[]] | Type: String[String|String[]] | |||
| Definition: This property is set on a JSContact object that | Definition: This property is set on a JSContact object that | |||
| represents a vCard property. Its value MUST be a JSON object | represents a vCard property. Its value MUST be a JSON object | |||
| containing vCard property parameters, defined as array element 2 | containing vCard property parameters, defined as array element 2 | |||
| skipping to change at page 44, line 42 ¶ | skipping to change at line 1949 ¶ | |||
| "emails": { | "emails": { | |||
| "email1": { | "email1": { | |||
| "address": "jane_doe@example.com", | "address": "jane_doe@example.com", | |||
| "vCardParams": { | "vCardParams": { | |||
| "x-foo": "Bar" | "x-foo": "Bar" | |||
| } | } | |||
| } | } | |||
| } | } | |||
| Figure 47: JSContact vCardParams example | Figure 47: JSContact vCardParams Example | |||
| 2.15.3. Property vCardName | 2.15.3. Property vCardName | |||
| Name: vCardName | Name: vCardName | |||
| Type: String | Type: String | |||
| Definition: This property is set on a JSContact object that | Definition: This property is set on a JSContact object that | |||
| represents a vCard property or parameter and its value contains | represents a vCard property or parameter, and its value contains | |||
| the name of that vCard element. This allows to preserve the name | the name of that vCard element. This allows the name of a vCard | |||
| of a vCard element when multiple elements convert the same | element to be preserved when multiple elements convert the same | |||
| JSContact object type. The case-insensitive value MUST be valid | JSContact object type. The case-insensitive value MUST be valid | |||
| according to the name ABNF defined in Section 3.3 of [RFC6350]. | according to the name ABNF defined in Section 3.3 of [RFC6350]. | |||
| Example: Both vCard IMPP and SOCIALPROFILE convert to OnlineService | Example: Both vCard IMPP and SOCIALPROFILE convert to OnlineService | |||
| in JSContact. The vCardName property value indicates that the | in JSContact. The vCardName property value indicates that the | |||
| vCard source element was IMPP: | vCard source element was IMPP as follows: | |||
| IMPP:xmpp:alice@example.com | IMPP:xmpp:alice@example.com | |||
| "onlineServices": { | "onlineServices": { | |||
| "os1": { | "os1": { | |||
| "uri": "xmpp:alice@example.com", | "uri": "xmpp:alice@example.com", | |||
| "vCardName": "impp" | "vCardName": "impp" | |||
| }, | }, | |||
| } | } | |||
| Figure 48: JSContact vCardName example | Figure 48: JSContact vCardName Example | |||
| 3. Converting JSContact to vCard | 3. Converting JSContact to vCard | |||
| 3.1. Conversion Rules | 3.1. Conversion Rules | |||
| A Card converts to vCard by applying the reverse rules of converting | A Card converts to vCard by applying the reverse rules of converting | |||
| vCard to JSContact. In addition to those listed in Appendix A, the | vCard to JSContact. In addition to those listed in Appendix A, the | |||
| following rules apply: | following rules apply: | |||
| * Multivalued JSContact properties convert to separate instances of | * Multivalued JSContact properties convert to separate instances of | |||
| their equivalent vCard property, and for each the PROP-ID | their equivalent vCard property, and each of the PROP-ID | |||
| parameter MUST be set to the Id of the converted value (see | parameters MUST be set to the Id of the converted value (see | |||
| Section 2.3.16). | Section 2.3.16). | |||
| * The full property of the name property in JSContact is optional, | * The full property of the name property in JSContact is optional, | |||
| but the FN property is mandatory in vCard. The following rules | but the FN property is mandatory in vCard. The following rules | |||
| apply: | apply: | |||
| - If the Name full property is set, then implementations MUST use | - If the Name full property is set, then implementations MUST use | |||
| its value for the vCard FN property. | its value for the vCard FN property. | |||
| - If the Name full property is not set, then implementations | - If the Name full property is not set, then implementations | |||
| SHOULD derive the full name from the Name components values. | SHOULD derive the full name from the Name components values. | |||
| If the isOrdered property is true, then this can be done by | If the isOrdered property is "true", then this can be done by | |||
| concatenating the name component values. Otherwise, or | concatenating the name component values. Otherwise, or | |||
| alternatively, an implementation can choose any other heuristic | alternatively, an implementation can choose any other heuristic | |||
| to generate the full name from its components, such as | to generate the full name from its components such as | |||
| [CLDRPersonName]. Implementations MUST set the DERIVED | [CLDRPersonName]. Implementations MUST set the DERIVED | |||
| parameter on the FN property. | parameter on the FN property. | |||
| - Otherwise, they MUST set the FN property to the empty value. | - Otherwise, the FN property MUST be set to the empty value. | |||
| * Vendor-specific and unknown properties convert to vCard as | * Vendor-specific and unknown properties convert to vCard as | |||
| outlined in Section 3.1.1. | outlined in Section 3.1.1. | |||
| 3.1.1. Converting unknown properties | 3.1.1. Converting Unknown Properties | |||
| JSContact object types may contain properties for which no IANA- | JSContact object types may contain properties for which no IANA- | |||
| registered vCard property is defined. For example, a JSContact | registered vCard property is defined. For example, a JSContact | |||
| object may contain vendor-specific properties of which the semantics | object may contain vendor-specific properties of which the semantics | |||
| or purpose are unknown. | or purpose are unknown. | |||
| This specification defines the new JSPROP (Section 3.2.1) vCard | This specification defines the new JSPROP (Section 3.2.1) vCard | |||
| property and JSPTR (Section 3.3.2) vCard parameter by which such | property and JSPTR (Section 3.3.2) vCard parameter by which such | |||
| JSContact properties MAY be represented in vCard. Implementations | JSContact properties MAY be represented in vCard. Implementations | |||
| MAY choose to convert differently if they deem that more appropriate. | MAY choose to convert differently if they deem that more appropriate. | |||
| 3.2. New vCard Properties | 3.2. New vCard Properties | |||
| 3.2.1. JSPROP | 3.2.1. JSPROP | |||
| Property name: JSPROP | Property name: JSPROP | |||
| Purpose: This property represents a JSContact property in vCard. | Purpose: Represents a JSContact property in vCard. | |||
| Value type: TEXT, also see Format Definition for value restrictions. | Value type: TEXT; also see "Format definition" below for value | |||
| restrictions. | ||||
| Conformance: The property can be specified multiple times in a | Conformance: Can be specified multiple times in a vCard. | |||
| vCard. | ||||
| Property parameters: The JSPTR parameter MUST be set for this | Property parameters: The JSPTR parameter MUST be set for this | |||
| property. Other IANA-registered and experimental property | property. Other IANA-registered and experimental property | |||
| parameters can be specified on this property. | parameters can be specified on this property. | |||
| Description: This property converts an arbitrary JSContact property | Description: This property converts an arbitrary JSContact property | |||
| from and to vCard. The vCard property value is the JSON-encoded | from and to vCard. The vCard property value is the JSON-encoded | |||
| value of the JSContact property, represented as a TEXT value. The | value of the JSContact property, represented as a TEXT value. The | |||
| format of the JSON value MUST be compact, e.g., without | format of the JSON value MUST be compact, e.g., without | |||
| insignificant whitespace. The value of the JSPTR parameter points | insignificant whitespace. The value of the JSPTR parameter points | |||
| to the JSContact property within the Card. | to the JSContact property within the Card. | |||
| The root of the JSON pointer is always the Card object that this | The root of the JSON pointer is always the Card object that this | |||
| vCard converts to, irrespective if the JSON pointer starts with | vCard converts to, irrespective if the JSON pointer starts with | |||
| the SOLIDUS (U+002F) character. The pointer MUST NOT reference | the SOLIDUS (U+002F) character. The pointer MUST NOT reference | |||
| into an array. | into an array. | |||
| All JSPROP properties in a vCard together form a PatchObject as | All JSPROP properties in a vCard together form a PatchObject as | |||
| defined in [I-D.ietf-calext-jscontact]. The value of its JSPTR | defined in [RFC9553]. The value of its JSPTR parameter | |||
| parameter corresponds to a key in the PatchObject, the value of | corresponds to a key in the PatchObject; the value of the JSPROP | |||
| the JSPROP property corresponds to the value for that key. When | property corresponds to the value for that key. When converting | |||
| converting from vCard to JSContact, the PatchObject MUST only be | from vCard to JSContact, the PatchObject MUST only be applied | |||
| applied after all other vCard properties have already been | after all other vCard properties have already been converted. The | |||
| converted. The PatchObject MUST be valid, including the | PatchObject MUST be valid, including the restriction that an | |||
| restriction that an invalid PatchObject MUST NOT be applied. | invalid PatchObject MUST NOT be applied. | |||
| Format definition: This property is defined by the following | Format definition: This property is defined by the following | |||
| notation: | notation: | |||
| jsprop = "JSPROP" jsprop-param ":" TEXT | jsprop = "JSPROP" jsprop-param ":" TEXT | |||
| jsprop-param = *( | jsprop-param = *( | |||
| ; The following are MANDATORY and MUST NOT | ; The following are MANDATORY and MUST NOT | |||
| ; occur more than once | ; occur more than once | |||
| ( ";" jsptr-param ) / ; see next section | ( ";" jsptr-param ) / ; see next section | |||
| ( ";" "VALUE" "=" "TEXT") | ( ";" "VALUE" "=" "TEXT") | |||
| ; | ; | |||
| ; The following is OPTIONAL, | ; The following is OPTIONAL | |||
| ; and MAY occur more than once. | ; and MAY occur more than once. | |||
| ; | ; | |||
| (";" other-param) | (";" other-param) | |||
| ; | ; | |||
| ) | ) | |||
| Example(s): This illustrates how to convert a property at the top- | Example(s): This illustrates how to convert a property at the top | |||
| level in a Card object that is unknown to the implementation. | level in a Card object that is unknown to the implementation. | |||
| "someUnknownProperty": true | "someUnknownProperty": true | |||
| JSPROP;JSPTR="someUnknownProperty":true | JSPROP;JSPTR="someUnknownProperty":true | |||
| Figure 49: Unknown property example | Figure 49: Unknown Property Example | |||
| This illustrates how to convert a vendor-specific property at the | This illustrates how to convert a vendor-specific property at the | |||
| top-level of a Card object. Note the required use of quoted | top level of a Card object. Note the required use of quoted | |||
| string for the JSPTR value which allows the path to include the | string for the JSPTR value, which allows the path to include the | |||
| COLON (U+003A) character. | COLON (U+003A) character. | |||
| "example.com:foo": { | "example.com:foo": { | |||
| "bar": 1234 | "bar": 1234 | |||
| } | } | |||
| JSPROP;JSPTR="example.com:foo":{"bar":1234} | JSPROP;JSPTR="example.com:foo":{"bar":1234} | |||
| Figure 50: Vendor-specific property conversion example | Figure 50: Vendor-Specific Property Conversion Example | |||
| This illustrates how to convert a vendor-specific property at a | This illustrates how to convert a vendor-specific property at a | |||
| nested level in a Card object using a path relative to the Card | nested level in a Card object using a path relative to the Card | |||
| object. Although not recommended, the property name includes the | object. Although not recommended, the property name includes the | |||
| SOLIDUS (U+002F) character which requires escaping in the JSON | SOLIDUS (U+002F) character, which requires escaping in the JSON | |||
| pointer. | pointer. | |||
| "phones": { | "phones": { | |||
| "phone1": { | "phone1": { | |||
| "number": "tel:+33-01-23-45-67" | "number": "tel:+33-01-23-45-67", | |||
| "example.com:foo/bar": "tux hux" | "example.com:foo/bar": "tux hux" | |||
| } | } | |||
| } | } | |||
| TEL:tel:+33-01-23-45-67 | TEL:tel:+33-01-23-45-67 | |||
| JSPROP;JSPTR="phones/phone1/example.com:foo~1bar": | JSPROP;JSPTR="phones/phone1/example.com:foo~1bar": | |||
| "tux hux" | "tux hux" | |||
| Figure 51: Nested vendor-specific property example with path | Figure 51: Nested Vendor-Specific Property Example with a Path | |||
| relative to Card | Relative to Card | |||
| 3.3. New vCard Parameter | 3.3. New vCard Parameters | |||
| 3.3.1. JSCOMPS | 3.3.1. JSCOMPS | |||
| Parameter name: JSCOMPS | Parameter name: JSCOMPS | |||
| Purpose: This parameter defines the order and separators for the | Purpose: Defines the order and separators for the elements of a | |||
| elements of a structured property value. | structured property value. | |||
| Description: The JSCOMPS parameter value facilitates converting name | Description: The JSCOMPS parameter value facilitates converting name | |||
| and address components between JSContact and vCard. It preserves | and address components between JSContact and vCard. It preserves | |||
| the order of the components the JSContact property and contains | the order of the components of the JSContact property and contains | |||
| the verbatim values of separator components. | the verbatim values of separator components. | |||
| If this parameter is set and its value is valid (see later), then | If this parameter is set and its value is valid (see later), then | |||
| implementations MUST set the isOrdered property of the Name or | implementations MUST set the isOrdered property of the Name or | |||
| Address object to "true". Otherwise, they MUST set the isOrdered | Address object to "true". Otherwise, they MUST set the isOrdered | |||
| property value to "false". | property value to "false". | |||
| The JSCOMPS parameter value is a structured type value. Its value | The JSCOMPS parameter value is a structured type value. Its value | |||
| MUST be quoted. The parameter value consists of a sequence of | MUST be quoted. The parameter value consists of a sequence of | |||
| entries, separated by the SEMICOLON character (U+003B). The first | entries, separated by the SEMICOLON character (U+003B). The first | |||
| entry defines the value of the defaultSeparator property. If it | entry defines the value of the defaultSeparator property. If it | |||
| is the empty string then no default separator is defined. | is the empty string, then no default separator is defined. | |||
| Otherwise, the first entry MUST be a separator entry. All | Otherwise, the first entry MUST be a separator entry. All | |||
| following entries processed in order result in an ordered list of | following entries processed in order result in an ordered list of | |||
| JSContact components, and MUST be one of two following two kinds: | JSContact components and MUST be one of the following two kinds: | |||
| 1. A positional. This refers to a component value in the vCard | 1. A positional. This refers to a component value in the vCard | |||
| structured value A position consists of the numeric index of a | structured value. A position consists of the numeric index of | |||
| component in the structured value, optionally followed by a | a component in the structured value, optionally followed by a | |||
| COMMA (U+002C) character and the non-zero index of a value | COMMA (U+002C) character and the non-zero index of a value | |||
| within that component. The zero index selects the first | within that component. The zero index selects the first | |||
| component or value, respectively. The second index by default | component or value, respectively. The second index is zero by | |||
| is zero, in which case it MUST be omitted (as well as the | default, in which case it MUST be omitted (as well as the | |||
| leading COMMA). | leading COMMA). | |||
| The resulting JSContact component is formed by determining its | The resulting JSContact component is formed by determining its | |||
| kind by the position in the vCard structured value. The | kind by the position in the vCard structured value. The | |||
| component value is the verbatim value of the vCard component. | component value is the verbatim value of the vCard component. | |||
| Figure 52 and Figure 53 illustrate this by example. | Figures 52 and 53 illustrate this by example. | |||
| 2. A separator. This contains the verbatim value of a separator | 2. A separator. This contains the verbatim value of a separator | |||
| component. It starts with the LATIN SMALL LETTER S (U+0073) | component. It starts with the LATIN SMALL LETTER S (U+0073) | |||
| character, followed by COMMA (U+002C), followed by zero or | character, followed by the COMMA (U+002C) character, followed | |||
| more Section 3.3 of param-value [RFC6350] characters, where | by zero or more param-value characters (see Section 3.3 of | |||
| the COMMA (U+002c) and SEMICOLON (U+003B) character MUST be | [RFC6350]), where the COMMA (U+002C) and SEMICOLON (U+003B) | |||
| escaped according to the rules defined in Section 3.4 of | characters MUST be escaped according to the rules defined in | |||
| [RFC6350]. Figure 54 illustrates this by example. | Section 3.4 of [RFC6350]. Figure 54 illustrates this by | |||
| example. | ||||
| The resulting JSContact component is formed by setting its | The resulting JSContact component is formed by setting its | |||
| kind to separator and its value to the verbatim value of the | kind to separator and its value to the verbatim value of the | |||
| entry. | entry. | |||
| A JSCOMPS parameter value is valid if and only if: | A JSCOMPS parameter value is valid if and only if: | |||
| * All indexes in the positional entries refer to an existing | * All indexes in the positional entries refer to an existing | |||
| component value in the vCard property value. | component value in the vCard property value. | |||
| skipping to change at page 50, line 19 ¶ | skipping to change at line 2197 ¶ | |||
| - A value that occurs in both the N property secondary surname | - A value that occurs in both the N property secondary surname | |||
| component and the family name component only counts once. | component and the family name component only counts once. | |||
| - A value that occurs in both the N property generation | - A value that occurs in both the N property generation | |||
| component and the honorific suffix component only counts | component and the honorific suffix component only counts | |||
| once. | once. | |||
| - A value in the ADR property street address component does | - A value in the ADR property street address component does | |||
| not count if the ADR property value contains a value in one | not count if the ADR property value contains a value in one | |||
| of the new components defined in | of the new components defined in [RFC9554]. | |||
| [I-D.ietf-calext-vcard-jscontact-extensions]. | ||||
| - All other values count once each. | - All other values count once each. | |||
| Format definition: | Format definition: | |||
| jscomps-param = "JSCOMPS" "=" | jscomps-param = "JSCOMPS" "=" | |||
| DQUOTE ( | DQUOTE ( | |||
| (jscomps-entry-sep / "") ";" jscomps-entrylist | (jscomps-entry-sep / "") ";" jscomps-entrylist | |||
| ) DQUOTE | ) DQUOTE | |||
| jscomps-entrylist = jscomps-entry *(";" jscomps-entry) | jscomps-entrylist = jscomps-entry *(";" jscomps-entry) | |||
| jscomps-entry = jscomps-entry-pos / jscomps-entry-sep | jscomps-entry = jscomps-entry-pos / jscomps-entry-sep | |||
| jscomps-entry-pos = 1*DIGIT [ "," 1*DIGIT ] | jscomps-entry-pos = 1*DIGIT [ "," 1*DIGIT ] | |||
| jscomps-entry-sep = "s" "," jscomps-entry-verb | jscomps-entry-sep = "s" "," jscomps-entry-verb | |||
| jscomps-entry-verb = *QSAFE-CHAR | jscomps-entry-verb = *QSAFE-CHAR ; encode special characters according to RFC 6868 | |||
| Example(s): The following example demonstrates the use of positional | Example(s): The following example demonstrates the use of positional | |||
| entries for the name "Jane Doe". The given name is ordered before | entries for the name "Jane Doe". The given name is ordered before | |||
| the surname. No secondary index is required for either positional | the surname. No secondary index is required for either positional | |||
| because both are zero. | because both are zero. | |||
| "name": { | "name": { | |||
| "components": [ | "components": [ | |||
| { "kind": "given", "value": "Jane" }, | { "kind": "given", "value": "Jane" }, | |||
| { "kind": "surname", "value": "Doe" } | { "kind": "surname", "value": "Doe" } | |||
| ], | ], | |||
| "isOrdered": true | "isOrdered": true | |||
| } | } | |||
| N;JSCOMPS=";1;0":Doe;Jane;;;;;; | N;JSCOMPS=";1;0":Doe;Jane;;;;;; | |||
| FN;DERIVED=TRUE:Jane Doe | FN;DERIVED=TRUE:Jane Doe | |||
| Figure 52: Example for positional entries | Figure 52: Example of Positional Entries | |||
| The following example demonstrates a secondary positional index. | The following example demonstrates a secondary positional index. | |||
| The "Jr." generation marker only counts once because it occurs in | The "Jr." generation marker only counts once because it occurs in | |||
| both the designated generation component and the backwards- | both the designated generation component and the backwards- | |||
| compatible honorific suffixes component. | compatible honorific suffixes component. | |||
| "name": { | "name": { | |||
| "components": [ | "components": [ | |||
| { "kind": "given", "value": "John" }, | { "kind": "given", "value": "John" }, | |||
| { "kind": "given2", "value": "Philip" }, | { "kind": "given2", "value": "Philip" }, | |||
| { "kind": "given2", "value": "Paul" }, | { "kind": "given2", "value": "Paul" }, | |||
| { "kind": "surname", "value": "Stevenson" }, | { "kind": "surname", "value": "Stevenson" }, | |||
| { "kind": "generation", "value": "Jr." }, | { "kind": "generation", "value": "Jr." }, | |||
| { "kind": "credential", "value": "M.D." } | { "kind": "credential", "value": "M.D." } | |||
| ], | ], | |||
| "isOrdered": true | "isOrdered": true | |||
| } | } | |||
| N;JSCOMPS=";1;2;2,1;0;6;4,1":Stevenson;John;Philip,Paul;;Jr.,M.D.;;Jr. | N;JSCOMPS=";1;2;2,1;0;6;4,1":Stevenson;John;Philip,Paul;;Jr.,M.D.;;Jr. | |||
| Figure 53: Example for positional entries | Figure 53: Example of Positional Entries | |||
| The following example demonstrates the use of separator entries | The following example demonstrates the use of separator entries | |||
| for the (shortened for brevity) address "54321 Oak St, Reston". | for the (shortened for brevity) address "54321 Oak St, Reston". | |||
| The first entry defines the default separator to be ", ". The | The first entry defines the default separator to be ", ". The | |||
| second and fourth positional entries are separated with the | second and fourth positional entries are separated with the | |||
| separator value " ". For backwards-compatibility, the street | separator value " ". For backwards compatibility, the street | |||
| address component of the ADR property contains both the street | address component of the ADR property contains both the street | |||
| number and name, but it is not referred to in the JSCOMPS | number and name, but it is not referred to in the JSCOMPS | |||
| parameter and does not contribute to the count of values. | parameter and does not contribute to the count of values. | |||
| "addresses": { | "addresses": { | |||
| "a1": { | "a1": { | |||
| "components": [ | "components": [ | |||
| { "kind": "number", "value": "54321" }, | { "kind": "number", "value": "54321" }, | |||
| { "kind": "separator", "value": " " }, | { "kind": "separator", "value": " " }, | |||
| { "kind": "name", "value": "Oak St" }, | { "kind": "name", "value": "Oak St" }, | |||
| { "kind": "locality", "value": "Reston" } | { "kind": "locality", "value": "Reston" } | |||
| ], | ], | |||
| "defaultSeparator": ", ", | "defaultSeparator": ", ", | |||
| "isOrdered": true | "isOrdered": true | |||
| } | } | |||
| } | } | |||
| ADR;JSCOMPS="s,\, ;11;s, ;10;3":;;54321 Oak St;Reston;;;;;;;Oak St;54321;;;;;; | ADR;JSCOMPS="s,\, ;11;s, ;10;3":;;54321 Oak St;Reston;;;;;;;Oak St;54321;;;;;; | |||
| Figure 54: Example for separator entries | Figure 54: Example of Separator Entries | |||
| 3.3.2. JSPTR | 3.3.2. JSPTR | |||
| Parameter name: JSPTR | Parameter name: JSPTR | |||
| Purpose: This parameter contains a JSON pointer [RFC6901] that | Purpose: Contains a JSON pointer [RFC6901] that relates the vCard | |||
| relates the vCard JSPROP (Section 3.2.1) property to a JSContact | JSPROP (Section 3.2.1) property to a JSContact property. | |||
| property. | ||||
| Description: This parameter has a single value that MUST be a valid | Description: This parameter has a single value that MUST be a valid | |||
| JSON pointer as defined in [RFC6901]. Note that the value MUST be | JSON pointer as defined in [RFC6901]. Note that the value MUST be | |||
| quoted according to the param-value ABNF in [RFC6350]. | quoted according to the param-value ABNF in [RFC6350]. | |||
| Format definition: | Format definition: | |||
| jsptr-param = "JSPTR" "=" param-value | jsptr-param = "JSPTR" "=" param-value | |||
| ; also see param-value in RFC 6350, section 3.3 | ; also see param-value in RFC 6350, Section 3.3 | |||
| Example(s): This illustrates a simple example. For further examples | Example(s): This illustrates a simple example. For further | |||
| see Section 3.2.1. | examples, see Section 3.2.1. | |||
| JSPROP;JSPTR="example.com:foo":"bar" | JSPROP;JSPTR="example.com:foo":"bar" | |||
| 4. Security Considerations | 4. Security Considerations | |||
| This specification defines how to convert between the JSContact and | This specification defines how to convert between the JSContact and | |||
| vCard formats. The security considerations for parsing and | vCard formats. The security considerations for parsing and | |||
| formatting such data apply and are outlined in Section 5 of | formatting such data apply and are outlined in Section 4 of [RFC9553] | |||
| [I-D.ietf-calext-jscontact] and Section 9 of [RFC6350]. | and Section 9 of [RFC6350]. | |||
| 5. Acknowledgements | ||||
| The definition and examples of the PHONETIC (Section 2.3.13) and | ||||
| SCRIPT (Section 2.3.17) parameters are based on the initial version | ||||
| of [I-D.calconnect-vobject-i18n]. | ||||
| 6. IANA Considerations | ||||
| 6.1. New vCard Properties | ||||
| IANA is requested to add the following entries to the "vCard | ||||
| Properties" registry, defined in Section 10.3.1. of [RFC6350]. | ||||
| +===========+==========+==============================+ | ||||
| | Namespace | Property | Reference | | ||||
| +===========+==========+==============================+ | ||||
| | | JSPROP | This document, Section 3.2.1 | | ||||
| +-----------+----------+------------------------------+ | ||||
| Table 4: New vCard Properties | ||||
| 6.2. New vCard Parameters | ||||
| IANA is requested to add the following entries to the "vCard | ||||
| Parameters" registry, defined in Section 10.3.2. of [RFC6350]. | ||||
| +===========+===========+==============================+ | 5. IANA Considerations | |||
| | Namespace | Parameter | Reference | | ||||
| +===========+===========+==============================+ | ||||
| | | JSPTR | This document, Section 3.3.2 | | ||||
| +-----------+-----------+------------------------------+ | ||||
| Table 5: New vCard Parameters | 5.1. New vCard Property | |||
| 6.3. New JSContact Properties | IANA has added the following entry to the "vCard Properties" | |||
| registry, as defined in Section 10.3.1 of [RFC6350]. | ||||
| IANA is requested to add the following entries to the "JSContact | +===========+==========+=========================+ | |||
| Properties" registry. The Since Version for all properties is 1.0. | | Namespace | Property | Reference | | |||
| The Until Version for all properties is not set. All RFC section | +===========+==========+=========================+ | |||
| references are for this document. The change controller for all | | | JSPROP | RFC 9555, Section 3.2.1 | | |||
| these properties is IETF. | +-----------+----------+-------------------------+ | |||
| +=============+================+===========+==============+========+ | Table 4: New vCard Property | |||
| | Property | Property Type | Property | Reference or |Intended| | ||||
| | Name | | Context | Description |Usage | | ||||
| +=============+================+===========+==============+========+ | ||||
| | vCardName | String | Any | Section |common | | ||||
| | | | JSContact | 2.15.3 | | | ||||
| | | | object | | | | ||||
| +-------------+----------------+-----------+--------------+--------+ | ||||
| | vCardParams | String[String] | Any | Section |common | | ||||
| | | | JSContact | 2.15.2 | | | ||||
| | | | object | | | | ||||
| +-------------+----------------+-----------+--------------+--------+ | ||||
| | vCardProps | JCardProp[] | Card | Section |common | | ||||
| | | | | 2.15.1 | | | ||||
| +-------------+----------------+-----------+--------------+--------+ | ||||
| Table 6: Initial Contents of the "JSContact Properties" Registry | 5.2. New vCard Parameter | |||
| 6.4. New JSContact Types | IANA has added the following entry to the "vCard Parameters" | |||
| registry, as defined in Section 10.3.2 of [RFC6350]. | ||||
| IANA is requested to add the following entries to the "JSContact | +===========+===========+=========================+ | |||
| Types" registry. The Since Version for all properties is 1.0. The | | Namespace | Parameter | Reference | | |||
| Until Version for all properties is not set. All RFC section | +===========+===========+=========================+ | |||
| references are for this document. The change controller for all | | | JSPTR | RFC 9555, Section 3.3.2 | | |||
| these properties is IETF. | +-----------+-----------+-------------------------+ | |||
| +===========+==========================+================+ | Table 5: New vCard Parameter | |||
| | Type Name | Reference or Description | Intended Usage | | ||||
| +===========+==========================+================+ | ||||
| | JCardProp | Section 2.15.1 | common | | ||||
| +-----------+--------------------------+----------------+ | ||||
| Table 7: Additional Contents of the "JSContact Types" | 5.3. New JSContact Properties | |||
| Registry | ||||
| 7. Implementation Status | IANA has added the following entries to the "JSContact Properties" | |||
| registry. Note that the Since Version is 1.0, the Until Version is | ||||
| not set, and the Change Controller is IETF for all of these | ||||
| properties. | ||||
| NOTE: Please remove this section and the reference to RFC 7942 prior | +===========+=======================+=========+========+============+ | |||
| to publication as an RFC. | |Property |Property Type |Property |Intended|Reference | | |||
| |Name | |Context |Usage |or | | ||||
| | | | | |Description | | ||||
| +===========+=======================+=========+========+============+ | ||||
| |vCardName |String |Any |common |RFC 9555, | | ||||
| | | |JSContact| |Section | | ||||
| | | |object | |2.15.3 | | ||||
| +-----------+-----------------------+---------+--------+------------+ | ||||
| |vCardParams|String[String|String[]]|Any |common |RFC 9555, | | ||||
| | | |JSContact| |Section | | ||||
| | | |object | |2.15.2 | | ||||
| +-----------+-----------------------+---------+--------+------------+ | ||||
| |vCardProps |JCardProp[] |Card |common |RFC 9555, | | ||||
| | | | | |Section | | ||||
| | | | | |2.15.1 | | ||||
| +-----------+-----------------------+---------+--------+------------+ | ||||
| This section records the status of known implementations of the | Table 6: JSContact Properties Registry | |||
| protocol as defined in this specification at the time of posting of | ||||
| this Internet-Draft, and is based on a proposal described in | ||||
| [RFC7942]. The description of implementations in this section is | ||||
| intended to assist the IETF in its decision processes in progressing | ||||
| drafts to RFCs. Please note that the listing of any individual | ||||
| implementation here does not imply endorsement by the IETF. | ||||
| Furthermore, no effort has been spent to verify the information | ||||
| presented here that was supplied by IETF contributors. This is not | ||||
| intended as, and must not be construed to be, a catalog of available | ||||
| implementations or their features. Readers are advised to note that | ||||
| other implementations may exist. | ||||
| According to RFC 7942, "this will allow reviewers and working groups | 5.4. New JSContact Type | |||
| to assign due consideration to documents that have the benefit of | ||||
| running code, which may serve as evidence of valuable experimentation | ||||
| and feedback that have made the implemented protocols more mature. | ||||
| It is up to the individual working groups to use this information as | ||||
| they see fit". | ||||
| 7.1. CNR | IANA has added the following entry to the "JSContact Types" registry. | |||
| Note that the Since Version is 1.0, the Until Version is not set, and | ||||
| the Change Controller is IETF for this type. | ||||
| * Responsible Organization: National Research Council (CNR) of Italy | +===========+================+==========================+ | |||
| * Location: https://github.com/consiglionazionaledellericerche/ | | Type Name | Intended Usage | Reference or Description | | |||
| jscontact-tools | +===========+================+==========================+ | |||
| * Description: This implementation includes tools for JSContact | | JCardProp | common | RFC 9555, Section 2.15.1 | | |||
| creation, validation, serialization/deserialization, and | +-----------+----------------+--------------------------+ | |||
| conversion from vCard, xCard and jCard. | ||||
| * Level of Maturity: This is an "alpha" test implementation. | ||||
| * Coverage: This implementation includes all features described in | ||||
| this specification. | ||||
| * Contact Information: Mario Loffredo, mario.loffredo@iit.cnr.it | ||||
| 8. References | Table 7: JSContact Types Registry | |||
| 8.1. Normative References | ||||
| [I-D.ietf-calext-jscontact] | 6. References | |||
| Stepanek, R. and M. Loffredo, "JSContact: A JSON | ||||
| representation of contact data", Work in Progress, | ||||
| Internet-Draft, draft-ietf-calext-jscontact-14, 31 August | ||||
| 2023, <https://datatracker.ietf.org/doc/html/draft-ietf- | ||||
| calext-jscontact-14>. | ||||
| [I-D.ietf-calext-vcard-jscontact-extensions] | 6.1. Normative References | |||
| Stepanek, R. and M. Loffredo, "vCard Format Extension for | ||||
| JSContact", Work in Progress, Internet-Draft, draft-ietf- | ||||
| calext-vcard-jscontact-extensions-10, 31 August 2023, | ||||
| <https://datatracker.ietf.org/doc/html/draft-ietf-calext- | ||||
| vcard-jscontact-extensions-10>. | ||||
| [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
| Requirement Levels", BCP 14, RFC 2119, | Requirement Levels", BCP 14, RFC 2119, | |||
| DOI 10.17487/RFC2119, March 1997, | DOI 10.17487/RFC2119, March 1997, | |||
| <https://www.rfc-editor.org/info/rfc2119>. | <https://www.rfc-editor.org/info/rfc2119>. | |||
| [RFC5234] Crocker, D., Ed. and P. Overell, "Augmented BNF for Syntax | [RFC5234] Crocker, D., Ed. and P. Overell, "Augmented BNF for Syntax | |||
| Specifications: ABNF", STD 68, RFC 5234, | Specifications: ABNF", STD 68, RFC 5234, | |||
| DOI 10.17487/RFC5234, January 2008, | DOI 10.17487/RFC5234, January 2008, | |||
| <https://www.rfc-editor.org/info/rfc5234>. | <https://www.rfc-editor.org/info/rfc5234>. | |||
| skipping to change at page 56, line 14 ¶ | skipping to change at line 2420 ¶ | |||
| [RFC6901] Bryan, P., Ed., Zyp, K., and M. Nottingham, Ed., | [RFC6901] Bryan, P., Ed., Zyp, K., and M. Nottingham, Ed., | |||
| "JavaScript Object Notation (JSON) Pointer", RFC 6901, | "JavaScript Object Notation (JSON) Pointer", RFC 6901, | |||
| DOI 10.17487/RFC6901, April 2013, | DOI 10.17487/RFC6901, April 2013, | |||
| <https://www.rfc-editor.org/info/rfc6901>. | <https://www.rfc-editor.org/info/rfc6901>. | |||
| [RFC7095] Kewisch, P., "jCard: The JSON Format for vCard", RFC 7095, | [RFC7095] Kewisch, P., "jCard: The JSON Format for vCard", RFC 7095, | |||
| DOI 10.17487/RFC7095, January 2014, | DOI 10.17487/RFC7095, January 2014, | |||
| <https://www.rfc-editor.org/info/rfc7095>. | <https://www.rfc-editor.org/info/rfc7095>. | |||
| [RFC7942] Sheffer, Y. and A. Farrel, "Improving Awareness of Running | ||||
| Code: The Implementation Status Section", BCP 205, | ||||
| RFC 7942, DOI 10.17487/RFC7942, July 2016, | ||||
| <https://www.rfc-editor.org/info/rfc7942>. | ||||
| [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | |||
| 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>. | |||
| 8.2. Informative References | [RFC9553] Stepanek, R. and M. Loffredo, "JSContact: A JSON | |||
| Representation of Contact Data", RFC 9553, | ||||
| DOI 10.17487/RFC9553, March 2024, | ||||
| <https://www.rfc-editor.org/info/rfc9553>. | ||||
| [RFC9554] Stepanek, R. and M. Loffredo, "vCard Format Extension for | ||||
| JSContact", RFC 9554, DOI 10.17487/RFC9554, March 2024, | ||||
| <https://www.rfc-editor.org/info/rfc9554>. | ||||
| 6.2. Informative References | ||||
| [CLDRPersonName] | [CLDRPersonName] | |||
| Davis, M., Edberg, P., Gillam, R., Kolisnychenko, A., | Davis, M., Edberg, P., Gillam, R., Kolisnychenko, A., | |||
| McKenna, M., and others, "Technical Standard #35: Unicode | McKenna, M., and other CLDR committee members, "Unicode | |||
| Locale Data Markup Language (LDML) Part 8: Person Names, | Locale Data Markup Language (LDML) Part 8: Person Names", | |||
| Version 43.1", July 2023, | Unicode Technical Standard #35, Version 44.1, July 2023, | |||
| <https://www.unicode.org/reports/tr35/ | <https://www.unicode.org/reports/tr35/ | |||
| tr35-personNames.html>. | tr35-personNames.html>. | |||
| [I-D.calconnect-vobject-i18n] | ||||
| Tse, R. H., Tam, P., and M. Douglass, "vObject | ||||
| Internationalization", Work in Progress, Internet-Draft, | ||||
| draft-calconnect-vobject-i18n-00, 7 June 2018, | ||||
| <https://datatracker.ietf.org/doc/html/draft-calconnect- | ||||
| vobject-i18n-00>. | ||||
| [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>. | |||
| Appendix A. Reverse Rules of Converting vCard to JSContact Card | [vOBJECT] Tse, R., Tam, P., and M. Douglass, "vObject | |||
| Internationalization", Work in Progress, Internet-Draft, | ||||
| draft-calconnect-vobject-i18n-00, 7 June 2018, | ||||
| <https://datatracker.ietf.org/doc/html/draft-calconnect- | ||||
| vobject-i18n-00>. | ||||
| Appendix A. Reverse Rules of Converting a vCard to a JSContact Card | ||||
| Table 8 lists the relevant document sections for each JSContact | Table 8 lists the relevant document sections for each JSContact | |||
| object type and property. | object type and property. | |||
| +===================+=====================+=================+ | +===================+=====================+=========================+ | |||
| | JSContact Type | Property Name | Relevant | | | JSContact Type | Property Name | Relevant | | |||
| | | | Section(s) | | | | | Section(s) | | |||
| +===================+=====================+=================+ | +===================+=====================+=========================+ | |||
| | Address | @type | not applicable | | | Address | @type | not applicable | | |||
| +-------------------+---------------------+-----------------+ | +-------------------+---------------------+-------------------------+ | |||
| | Address | components | Section 2.6.1, | | | Address | components | Sections 2.6.1 | | |||
| | | | Section 3.3.1 | | | | | and 3.3.1 | | |||
| +-------------------+---------------------+-----------------+ | +-------------------+---------------------+-------------------------+ | |||
| | Address | contexts | Section 2.3.20 | | | Address | contexts | Section 2.3.20 | | |||
| +-------------------+---------------------+-----------------+ | +-------------------+---------------------+-------------------------+ | |||
| | Address | coordinates | Section 2.3.7, | | | Address | coordinates | Sections 2.3.7 | | |||
| | | | Section 2.8.1 | | | | | and 2.8.1 | | |||
| +-------------------+---------------------+-----------------+ | +-------------------+---------------------+-------------------------+ | |||
| | Address | country | Section 2.6.1 | | | Address | country | Section 2.6.1 | | |||
| +-------------------+---------------------+-----------------+ | +-------------------+---------------------+-------------------------+ | |||
| | Address | countryCode | Section 2.6.1 | | | Address | countryCode | Section 2.6.1 | | |||
| +-------------------+---------------------+-----------------+ | +-------------------+---------------------+-------------------------+ | |||
| | Address | defaultSeparator | Section 2.6.1, | | | Address | defaultSeparator | Sections 2.6.1 | | |||
| | | | Section 3.3.1 | | | | | and 3.3.1 | | |||
| +-------------------+---------------------+-----------------+ | +-------------------+---------------------+-------------------------+ | |||
| | Address | full | Section 2.6.1 | | | Address | full | Section 2.6.1 | | |||
| +-------------------+---------------------+-----------------+ | +-------------------+---------------------+-------------------------+ | |||
| | Address | isOrdered | Section 2.6.1, | | | Address | isOrdered | Sections 2.6.1 | | |||
| | | | Section 3.3.1 | | | | | and 3.3.1 | | |||
| +-------------------+---------------------+-----------------+ | +-------------------+---------------------+-------------------------+ | |||
| | Address | locality | Section 2.6.1 | | | Address | locality | Section 2.6.1 | | |||
| +-------------------+---------------------+-----------------+ | +-------------------+---------------------+-------------------------+ | |||
| | Address | phoneticScript | Section 2.3.13, | | | Address | phoneticScript | Sections 2.3.13 | | |||
| | | | Section 2.3.17 | | | | | and 2.3.17 | | |||
| +-------------------+---------------------+-----------------+ | +-------------------+---------------------+-------------------------+ | |||
| | Address | phoneticSystem | Section 2.3.13 | | | Address | phoneticSystem | Section 2.3.13 | | |||
| +-------------------+---------------------+-----------------+ | +-------------------+---------------------+-------------------------+ | |||
| | Address | postcode | Section 2.6.1 | | | Address | postcode | Section 2.6.1 | | |||
| +-------------------+---------------------+-----------------+ | +-------------------+---------------------+-------------------------+ | |||
| | Address | pref | Section 2.3.15 | | | Address | pref | Section 2.3.15 | | |||
| +-------------------+---------------------+-----------------+ | +-------------------+---------------------+-------------------------+ | |||
| | Address | region | Section 2.6.1 | | | Address | region | Section 2.6.1 | | |||
| +-------------------+---------------------+-----------------+ | +-------------------+---------------------+-------------------------+ | |||
| | Address | timeZone | Section 2.3.21, | | | Address | timeZone | Sections 2.3.21 | | |||
| | | | Section 2.8.2 | | | | | and 2.8.2 | | |||
| +-------------------+---------------------+-----------------+ | +-------------------+---------------------+-------------------------+ | |||
| | AddressComponent | phonetic | Section 2.3.13 | | | AddressComponent | phonetic | Section 2.3.13 | | |||
| +-------------------+---------------------+-----------------+ | +-------------------+---------------------+-------------------------+ | |||
| | Anniversary | @type | not applicable | | | Anniversary | @type | not applicable | | |||
| +-------------------+---------------------+-----------------+ | +-------------------+---------------------+-------------------------+ | |||
| | Anniversary | date | Section 2.5.1 | | | Anniversary | date | Section 2.5.1 | | |||
| +-------------------+---------------------+-----------------+ | +-------------------+---------------------+-------------------------+ | |||
| | Anniversary | kind | Section 2.5.1 | | | Anniversary | kind | Section 2.5.1 | | |||
| +-------------------+---------------------+-----------------+ | +-------------------+---------------------+-------------------------+ | |||
| | Anniversary | place | Section 2.5.1 | | | Anniversary | place | Section 2.5.1 | | |||
| +-------------------+---------------------+-----------------+ | +-------------------+---------------------+-------------------------+ | |||
| | Author | @type | not applicable | | | Author | @type | not applicable | | |||
| +-------------------+---------------------+-----------------+ | +-------------------+---------------------+-------------------------+ | |||
| | Author | name | Section 2.3.3 | | | Author | name | Section 2.3.3 | | |||
| +-------------------+---------------------+-----------------+ | +-------------------+---------------------+-------------------------+ | |||
| | Author | uri | Section 2.3.2 | | | Author | uri | Section 2.3.2 | | |||
| +-------------------+---------------------+-----------------+ | +-------------------+---------------------+-------------------------+ | |||
| | Calendar | @type | not applicable | | | Calendar | @type | not applicable | | |||
| +-------------------+---------------------+-----------------+ | +-------------------+---------------------+-------------------------+ | |||
| | Calendar | contexts | Section 2.3.20 | | | Calendar | contexts | Section 2.3.20 | | |||
| +-------------------+---------------------+-----------------+ | +-------------------+---------------------+-------------------------+ | |||
| | Calendar | kind | Section 2.13.1, | | | Calendar | kind | Sections 2.13.1 | | |||
| | | | Section 2.13.3 | | | | | and 2.13.3 | | |||
| +-------------------+---------------------+-----------------+ | +-------------------+---------------------+-------------------------+ | |||
| | Calendar | label | Section 2.11.11 | | | Calendar | label | Section 2.11.11 | | |||
| +-------------------+---------------------+-----------------+ | +-------------------+---------------------+-------------------------+ | |||
| | Calendar | mediaType | Section 2.3.12 | | | Calendar | mediaType | Section 2.3.12 | | |||
| +-------------------+---------------------+-----------------+ | +-------------------+---------------------+-------------------------+ | |||
| | Calendar | pref | Section 2.3.15 | | | Calendar | pref | Section 2.3.15 | | |||
| +-------------------+---------------------+-----------------+ | +-------------------+---------------------+-------------------------+ | |||
| | Calendar | uri | Section 2.13.1, | | | Calendar | uri | Sections 2.13.1 | | |||
| | | | Section 2.13.3 | | | | | and 2.13.3 | | |||
| +-------------------+---------------------+-----------------+ | +-------------------+---------------------+-------------------------+ | |||
| | Card | @type | not applicable | | | Card | @type | not applicable | | |||
| +-------------------+---------------------+-----------------+ | +-------------------+---------------------+-------------------------+ | |||
| | Card | @version | not applicable | | | Card | @version | not applicable | | |||
| +-------------------+---------------------+-----------------+ | +-------------------+---------------------+-------------------------+ | |||
| | Card | addresses | Section 2.6.1 | | | Card | addresses | Section 2.6.1 | | |||
| +-------------------+---------------------+-----------------+ | +-------------------+---------------------+-------------------------+ | |||
| | Card | anniversaries | Section 2.5.1 | | | Card | anniversaries | Section 2.5.1 | | |||
| +-------------------+---------------------+-----------------+ | +-------------------+---------------------+-------------------------+ | |||
| | Card | calendars | Section 2.13.1, | | | Card | calendars | Sections | | |||
| | | | Section 2.13.3 | | | | | Section 2.13.1 | | |||
| +-------------------+---------------------+-----------------+ | | | | and 2.13.3 | | |||
| | Card | created | Section 2.11.3 | | +-------------------+---------------------+-------------------------+ | |||
| +-------------------+---------------------+-----------------+ | | Card | created | Section 2.11.3 | | |||
| | Card | directories | Section 2.4.3, | | +-------------------+---------------------+-------------------------+ | |||
| | | | Section 2.10.4 | | | Card | directories | Sections | | |||
| +-------------------+---------------------+-----------------+ | | | | Section 2.4.3 and | | |||
| | Card | emails | Section 2.7.1 | | | | | Section 2.10.4 | | |||
| +-------------------+---------------------+-----------------+ | +-------------------+---------------------+-------------------------+ | |||
| | Card | keywords | Section 2.11.1 | | | Card | emails | Section 2.7.1 | | |||
| +-------------------+---------------------+-----------------+ | +-------------------+---------------------+-------------------------+ | |||
| | Card | kind | Section 2.4.2 | | | Card | keywords | Section 2.11.1 | | |||
| +-------------------+---------------------+-----------------+ | +-------------------+---------------------+-------------------------+ | |||
| | Card | language | Section 2.7.4 | | | Card | kind | Section 2.4.2 | | |||
| +-------------------+---------------------+-----------------+ | +-------------------+---------------------+-------------------------+ | |||
| | Card | links | Section 2.9.1, | | | Card | language | Section 2.7.4 | | |||
| | | | Section 2.11.9 | | +-------------------+---------------------+-------------------------+ | |||
| +-------------------+---------------------+-----------------+ | | Card | links | Sections 2.9.1 | | |||
| | Card | localizations | Section 2.3.10 | | | | | and 2.11.9 | | |||
| +-------------------+---------------------+-----------------+ | +-------------------+---------------------+-------------------------+ | |||
| | Card | media | Section 2.5.7, | | | Card | localizations | Section 2.3.10 | | |||
| | | | Section 2.9.2, | | +-------------------+---------------------+-------------------------+ | |||
| | | | Section 2.11.7 | | | Card | media | Sections 2.5.7, | | |||
| +-------------------+---------------------+-----------------+ | | | | 2.9.2, and 2.11.7 | | |||
| | Card | members | Section 2.9.3 | | +-------------------+---------------------+-------------------------+ | |||
| +-------------------+---------------------+-----------------+ | | Card | members | Section 2.9.3 | | |||
| | Card | name | Section 2.5.5 | | +-------------------+---------------------+-------------------------+ | |||
| +-------------------+---------------------+-----------------+ | | Card | name | Section 2.5.5 | | |||
| | Card | nicknames | Section 2.5.5 | | +-------------------+---------------------+-------------------------+ | |||
| +-------------------+---------------------+-----------------+ | | Card | nicknames | Section 2.5.5 | | |||
| | Card | notes | Section 2.11.4 | | +-------------------+---------------------+-------------------------+ | |||
| +-------------------+---------------------+-----------------+ | | Card | notes | Section 2.11.4 | | |||
| | Card | onlineServices | Section 2.7.2 | | +-------------------+---------------------+-------------------------+ | |||
| +-------------------+---------------------+-----------------+ | | Card | onlineServices | Section 2.7.2 | | |||
| | Card | organizations | Section 2.9.4 | | +-------------------+---------------------+-------------------------+ | |||
| +-------------------+---------------------+-----------------+ | | Card | organizations | Section 2.9.4 | | |||
| | Card | personalInfo | Section 2.10.1, | | +-------------------+---------------------+-------------------------+ | |||
| | | | Section 2.10.2, | | | Card | personalInfo | Sections 2.10.1, | | |||
| | | | Section 2.10.3 | | | | | 2.10.2, and | | |||
| +-------------------+---------------------+-----------------+ | | | | 2.10.3 | | |||
| | Card | phones | Section 2.7.6 | | +-------------------+---------------------+-------------------------+ | |||
| +-------------------+---------------------+-----------------+ | | Card | phones | Section 2.7.6 | | |||
| | Card | preferredLanguages | Section 2.7.3 | | +-------------------+---------------------+-------------------------+ | |||
| +-------------------+---------------------+-----------------+ | | Card | preferredLanguages | Section 2.7.3 | | |||
| | Card | prodId | Section 2.11.5 | | +-------------------+---------------------+-------------------------+ | |||
| +-------------------+---------------------+-----------------+ | | Card | prodId | Section 2.11.5 | | |||
| | Card | relatedTo | Section 2.9.5 | | +-------------------+---------------------+-------------------------+ | |||
| +-------------------+---------------------+-----------------+ | | Card | relatedTo | Section 2.9.5 | | |||
| | Card | schedulingAddresses | Section 2.13.1 | | +-------------------+---------------------+-------------------------+ | |||
| +-------------------+---------------------+-----------------+ | | Card | schedulingAddresses | Section 2.13.1 | | |||
| | Card | speakToAs | Section 2.5.4 | | +-------------------+---------------------+-------------------------+ | |||
| +-------------------+---------------------+-----------------+ | | Card | speakToAs | Section 2.5.4 | | |||
| | Card | titles | Section 2.9.6 | | +-------------------+---------------------+-------------------------+ | |||
| +-------------------+---------------------+-----------------+ | | Card | titles | Section 2.9.6 | | |||
| | Card | uid | Section 2.11.8 | | +-------------------+---------------------+-------------------------+ | |||
| +-------------------+---------------------+-----------------+ | | Card | uid | Section 2.11.8 | | |||
| | Card | updated | Section 2.11.6 | | +-------------------+---------------------+-------------------------+ | |||
| +-------------------+---------------------+-----------------+ | | Card | updated | Section 2.11.6 | | |||
| | CryptoKey | @type | not applicable | | +-------------------+---------------------+-------------------------+ | |||
| +-------------------+---------------------+-----------------+ | | CryptoKey | @type | not applicable | | |||
| | CryptoKey | contexts | Section 2.3.20 | | +-------------------+---------------------+-------------------------+ | |||
| +-------------------+---------------------+-----------------+ | | CryptoKey | contexts | Section 2.3.20 | | |||
| | CryptoKey | kind | not applicable | | +-------------------+---------------------+-------------------------+ | |||
| +-------------------+---------------------+-----------------+ | | CryptoKey | kind | not applicable | | |||
| | CryptoKey | label | Section 2.11.11 | | +-------------------+---------------------+-------------------------+ | |||
| +-------------------+---------------------+-----------------+ | | CryptoKey | label | Section 2.11.11 | | |||
| | CryptoKey | mediaType | Section 2.3.12 | | +-------------------+---------------------+-------------------------+ | |||
| +-------------------+---------------------+-----------------+ | | CryptoKey | mediaType | Section 2.3.12 | | |||
| | CryptoKey | pref | Section 2.3.15 | | +-------------------+---------------------+-------------------------+ | |||
| +-------------------+---------------------+-----------------+ | | CryptoKey | pref | Section 2.3.15 | | |||
| | CryptoKey | uri | Section 2.12.1 | | +-------------------+---------------------+-------------------------+ | |||
| +-------------------+---------------------+-----------------+ | | CryptoKey | uri | Section 2.12.1 | | |||
| | Directory | @type | not applicable | | +-------------------+---------------------+-------------------------+ | |||
| +-------------------+---------------------+-----------------+ | | Directory | @type | not applicable | | |||
| | Directory | contexts | Section 2.3.20 | | +-------------------+---------------------+-------------------------+ | |||
| +-------------------+---------------------+-----------------+ | | Directory | contexts | Section 2.3.20 | | |||
| | Directory | kind | Section 2.4.3, | | +-------------------+---------------------+-------------------------+ | |||
| | | | Section 2.10.4 | | | Directory | kind | Sections 2.4.3 | | |||
| +-------------------+---------------------+-----------------+ | | | | and 2.10.4 | | |||
| | Directory | label | Section 2.11.11 | | +-------------------+---------------------+-------------------------+ | |||
| +-------------------+---------------------+-----------------+ | | Directory | label | Section 2.11.11 | | |||
| | Directory | listAs | Section 2.3.9 | | +-------------------+---------------------+-------------------------+ | |||
| +-------------------+---------------------+-----------------+ | | Directory | listAs | Section 2.3.9 | | |||
| | Directory | mediaType | Section 2.3.12 | | +-------------------+---------------------+-------------------------+ | |||
| +-------------------+---------------------+-----------------+ | | Directory | mediaType | Section 2.3.12 | | |||
| | Directory | pref | Section 2.3.15 | | +-------------------+---------------------+-------------------------+ | |||
| +-------------------+---------------------+-----------------+ | | Directory | pref | Section 2.3.15 | | |||
| | Directory | uri | Section 2.4.3, | | +-------------------+---------------------+-------------------------+ | |||
| | | | Section 2.10.4 | | | Directory | uri | Sections 2.4.3 | | |||
| +-------------------+---------------------+-----------------+ | | | | and 2.10.4 | | |||
| | EmailAddress | @type | not applicable | | +-------------------+---------------------+-------------------------+ | |||
| +-------------------+---------------------+-----------------+ | | EmailAddress | @type | not applicable | | |||
| | EmailAddress | address | Section 2.7.1 | | +-------------------+---------------------+-------------------------+ | |||
| +-------------------+---------------------+-----------------+ | | EmailAddress | address | Section 2.7.1 | | |||
| | EmailAddress | contexts | Section 2.3.20 | | +-------------------+---------------------+-------------------------+ | |||
| +-------------------+---------------------+-----------------+ | | EmailAddress | contexts | Section 2.3.20 | | |||
| | EmailAddress | label | Section 2.11.11 | | +-------------------+---------------------+-------------------------+ | |||
| +-------------------+---------------------+-----------------+ | | EmailAddress | label | Section 2.11.11 | | |||
| | EmailAddress | pref | Section 2.3.15 | | +-------------------+---------------------+-------------------------+ | |||
| +-------------------+---------------------+-----------------+ | | EmailAddress | pref | Section 2.3.15 | | |||
| | LanguagePref | @type | not applicable | | +-------------------+---------------------+-------------------------+ | |||
| +-------------------+---------------------+-----------------+ | | LanguagePref | @type | not applicable | | |||
| | LanguagePref | contexts | Section 2.3.20 | | +-------------------+---------------------+-------------------------+ | |||
| +-------------------+---------------------+-----------------+ | | LanguagePref | contexts | Section 2.3.20 | | |||
| | LanguagePref | pref | Section 2.3.15 | | +-------------------+---------------------+-------------------------+ | |||
| +-------------------+---------------------+-----------------+ | | LanguagePref | pref | Section 2.3.15 | | |||
| | Link | @type | not applicable | | +-------------------+---------------------+-------------------------+ | |||
| +-------------------+---------------------+-----------------+ | | Link | @type | not applicable | | |||
| | Link | contexts | Section 2.3.20 | | +-------------------+---------------------+-------------------------+ | |||
| +-------------------+---------------------+-----------------+ | | Link | contexts | Section 2.3.20 | | |||
| | Link | kind | Section 2.9.1, | | +-------------------+---------------------+-------------------------+ | |||
| | | | Section 2.11.9 | | | Link | kind | Sections 2.9.1 | | |||
| +-------------------+---------------------+-----------------+ | | | | and 2.11.9 | | |||
| | Link | label | Section 2.11.11 | | +-------------------+---------------------+-------------------------+ | |||
| +-------------------+---------------------+-----------------+ | | Link | label | Section 2.11.11 | | |||
| | Link | mediaType | Section 2.3.12 | | +-------------------+---------------------+-------------------------+ | |||
| +-------------------+---------------------+-----------------+ | | Link | mediaType | Section 2.3.12 | | |||
| | Link | pref | Section 2.3.15 | | +-------------------+---------------------+-------------------------+ | |||
| +-------------------+---------------------+-----------------+ | | Link | pref | Section 2.3.15 | | |||
| | Link | uri | Section 2.9.1, | | +-------------------+---------------------+-------------------------+ | |||
| | | | Section 2.11.9> | | | Link | uri | Sections 2.9.1 | | |||
| +-------------------+---------------------+-----------------+ | | | | and 2.11.9 | | |||
| | Media | @type | not applicable | | +-------------------+---------------------+-------------------------+ | |||
| +-------------------+---------------------+-----------------+ | | Media | @type | not applicable | | |||
| | Media | contexts | Section 2.3.20 | | +-------------------+---------------------+-------------------------+ | |||
| +-------------------+---------------------+-----------------+ | | Media | contexts | Section 2.3.20 | | |||
| | Media | kind | Section 2.5.7, | | +-------------------+---------------------+-------------------------+ | |||
| | | | Section 2.9.2, | | | Media | kind | Sections 2.5.7, | | |||
| | | | Section 2.11.7 | | | | | 2.9.2, and 2.11.7 | | |||
| +-------------------+---------------------+-----------------+ | +-------------------+---------------------+-------------------------+ | |||
| | Media | label | Section 2.11.11 | | | Media | label | Section 2.11.11 | | |||
| +-------------------+---------------------+-----------------+ | +-------------------+---------------------+-------------------------+ | |||
| | Media | mediaType | Section 2.3.12 | | | Media | mediaType | Section 2.3.12 | | |||
| +-------------------+---------------------+-----------------+ | +-------------------+---------------------+-------------------------+ | |||
| | Media | pref | Section 2.3.15 | | | Media | pref | Section 2.3.15 | | |||
| +-------------------+---------------------+-----------------+ | +-------------------+---------------------+-------------------------+ | |||
| | Media | uri | Section 2.5.7, | | | Media | uri | Sections 2.5.7, | | |||
| | | | Section 2.9.2, | | | | | 2.9.2, and 2.11.7 | | |||
| | | | Section 2.11.7 | | +-------------------+---------------------+-------------------------+ | |||
| +-------------------+---------------------+-----------------+ | | Name | @type | not applicable | | |||
| | Name | @type | not applicable | | +-------------------+---------------------+-------------------------+ | |||
| +-------------------+---------------------+-----------------+ | | Name | components | Sections 2.5.5 | | |||
| | Name | components | Section 2.5.5, | | | | | and 3.3.1 | | |||
| | | | Section 3.3.1 | | +-------------------+---------------------+-------------------------+ | |||
| +-------------------+---------------------+-----------------+ | | Name | defaultSeparator | Sections 2.5.5 | | |||
| | Name | defaultSeparator | Section 2.5.5, | | | | | and 3.3.1 | | |||
| | | | Section 3.3.1 | | +-------------------+---------------------+-------------------------+ | |||
| +-------------------+---------------------+-----------------+ | | Name | full | Section 2.5.2 | | |||
| | Name | full | Section 2.5.2 | | +-------------------+---------------------+-------------------------+ | |||
| +-------------------+---------------------+-----------------+ | | Name | phoneticScript | Sections 2.3.13 | | |||
| | Name | phoneticScript | Section 2.3.13, | | | | | and 2.3.17 | | |||
| | | | Section 2.3.17 | | +-------------------+---------------------+-------------------------+ | |||
| +-------------------+---------------------+-----------------+ | | Name | phoneticSystem | Section 2.3.13 | | |||
| | Name | phoneticSystem | Section 2.3.13 | | +-------------------+---------------------+-------------------------+ | |||
| +-------------------+---------------------+-----------------+ | | Name | isOrdered | Sections 2.5.5 | | |||
| | Name | isOrdered | Section 2.5.5, | | | | | and 3.3.1 | | |||
| | | | Section 3.3.1 | | +-------------------+---------------------+-------------------------+ | |||
| +-------------------+---------------------+-----------------+ | | Name | sortAs | Section 2.3.19 | | |||
| | Name | sortAs | Section 2.3.19 | | +-------------------+---------------------+-------------------------+ | |||
| +-------------------+---------------------+-----------------+ | | NameComponent | @type | not applicable | | |||
| | NameComponent | @type | not applicable | | +-------------------+---------------------+-------------------------+ | |||
| +-------------------+---------------------+-----------------+ | | NameComponent | kind | Section 2.5.5 | | |||
| | NameComponent | kind | Section 2.5.5 | | +-------------------+---------------------+-------------------------+ | |||
| +-------------------+---------------------+-----------------+ | | NameComponent | phonetic | Section 2.3.13 | | |||
| | NameComponent | phonetic | Section 2.3.13 | | +-------------------+---------------------+-------------------------+ | |||
| +-------------------+---------------------+-----------------+ | | NameComponent | value | Section 2.5.5 | | |||
| | NameComponent | value | Section 2.5.5 | | +-------------------+---------------------+-------------------------+ | |||
| +-------------------+---------------------+-----------------+ | | Nickname | @type | not applicable | | |||
| | Nickname | @type | not applicable | | +-------------------+---------------------+-------------------------+ | |||
| +-------------------+---------------------+-----------------+ | | Nickname | contexts | Section 2.3.20 | | |||
| | Nickname | contexts | Section 2.3.20 | | +-------------------+---------------------+-------------------------+ | |||
| +-------------------+---------------------+-----------------+ | | Nickname | name | Section 2.5.5 | | |||
| | Nickname | name | Section 2.5.5 | | +-------------------+---------------------+-------------------------+ | |||
| +-------------------+---------------------+-----------------+ | | Nickname | pref | Section 2.3.15 | | |||
| | Nickname | pref | Section 2.3.15 | | +-------------------+---------------------+-------------------------+ | |||
| +-------------------+---------------------+-----------------+ | | Note | @type | not applicable | | |||
| | Note | @type | not applicable | | +-------------------+---------------------+-------------------------+ | |||
| +-------------------+---------------------+-----------------+ | | Note | author | Sections 2.3.2 | | |||
| | Note | author | Section 2.3.2, | | | | | and 2.3.3 | | |||
| | | | Section 2.3.3 | | +-------------------+---------------------+-------------------------+ | |||
| +-------------------+---------------------+-----------------+ | | Note | created | Section 2.3.5 | | |||
| | Note | created | Section 2.3.5 | | +-------------------+---------------------+-------------------------+ | |||
| +-------------------+---------------------+-----------------+ | | Note | note | Section 2.11.4 | | |||
| | Note | note | Section 2.11.4 | | +-------------------+---------------------+-------------------------+ | |||
| +-------------------+---------------------+-----------------+ | | OnlineService | @type | not applicable | | |||
| | OnlineService | @type | not applicable | | +-------------------+---------------------+-------------------------+ | |||
| +-------------------+---------------------+-----------------+ | | OnlineService | contexts | Section 2.3.20 | | |||
| | OnlineService | contexts | Section 2.3.20 | | +-------------------+---------------------+-------------------------+ | |||
| +-------------------+---------------------+-----------------+ | | OnlineService | kind | Sections 2.7.2 | | |||
| | OnlineService | kind | Section 2.7.2, | | | | | and 2.7.5 | | |||
| | | | Section 2.7.5 | | +-------------------+---------------------+-------------------------+ | |||
| +-------------------+---------------------+-----------------+ | | OnlineService | label | Section 2.11.11 | | |||
| | OnlineService | label | Section 2.11.11 | | +-------------------+---------------------+-------------------------+ | |||
| +-------------------+---------------------+-----------------+ | | OnlineService | pref | Section 2.3.15 | | |||
| | OnlineService | pref | Section 2.3.15 | | +-------------------+---------------------+-------------------------+ | |||
| +-------------------+---------------------+-----------------+ | | OnlineService | service | Section 2.3.18 | | |||
| | OnlineService | service | Section 2.3.18 | | +-------------------+---------------------+-------------------------+ | |||
| +-------------------+---------------------+-----------------+ | | OnlineService | uri | Sections 2.7.2 | | |||
| | OnlineService | uri | Section 2.7.2, | | | | | and 2.7.5 | | |||
| | | | Section 2.7.5 | | +-------------------+---------------------+-------------------------+ | |||
| +-------------------+---------------------+-----------------+ | | OnlineService | user | Section 2.3.22 | | |||
| | OnlineService | user | Section 2.3.22 | | +-------------------+---------------------+-------------------------+ | |||
| +-------------------+---------------------+-----------------+ | | OrgUnit | @type | not applicable | | |||
| | OrgUnit | @type | not applicable | | +-------------------+---------------------+-------------------------+ | |||
| +-------------------+---------------------+-----------------+ | | OrgUnit | name | Section 2.9.4 | | |||
| | OrgUnit | name | Section 2.9.4 | | +-------------------+---------------------+-------------------------+ | |||
| +-------------------+---------------------+-----------------+ | | OrgUnit | sortAs | Section 2.3.19 | | |||
| | OrgUnit | sortAs | Section 2.3.19 | | +-------------------+---------------------+-------------------------+ | |||
| +-------------------+---------------------+-----------------+ | | Organization | @type | not applicable | | |||
| | Organization | @type | not applicable | | +-------------------+---------------------+-------------------------+ | |||
| +-------------------+---------------------+-----------------+ | | Organization | contexts | Section 2.3.20 | | |||
| | Organization | contexts | Section 2.3.20 | | +-------------------+---------------------+-------------------------+ | |||
| +-------------------+---------------------+-----------------+ | | Organization | name | Section 2.9.4 | | |||
| | Organization | name | Section 2.9.4 | | +-------------------+---------------------+-------------------------+ | |||
| +-------------------+---------------------+-----------------+ | | Organization | sortAs | Section 2.3.19 | | |||
| | Organization | sortAs | Section 2.3.19 | | +-------------------+---------------------+-------------------------+ | |||
| +-------------------+---------------------+-----------------+ | | Organization | units | Section 2.9.4 | | |||
| | Organization | units | Section 2.9.4 | | +-------------------+---------------------+-------------------------+ | |||
| +-------------------+---------------------+-----------------+ | | PartialDate | @type | not applicable | | |||
| | PartialDate | @type | not applicable | | +-------------------+---------------------+-------------------------+ | |||
| +-------------------+---------------------+-----------------+ | | PartialDate | calendarScale | Section 2.3.4 | | |||
| | PartialDate | calendarScale | Section 2.3.4 | | +-------------------+---------------------+-------------------------+ | |||
| +-------------------+---------------------+-----------------+ | | PartialDate | day | Section 2.2.2 | | |||
| | PartialDate | day | Section 2.2.2 | | +-------------------+---------------------+-------------------------+ | |||
| +-------------------+---------------------+-----------------+ | | PartialDate | month | Section 2.2.2 | | |||
| | PartialDate | month | Section 2.2.2 | | +-------------------+---------------------+-------------------------+ | |||
| +-------------------+---------------------+-----------------+ | | PartialDate | year | Section 2.2.2 | | |||
| | PartialDate | year | Section 2.2.2 | | +-------------------+---------------------+-------------------------+ | |||
| +-------------------+---------------------+-----------------+ | | PatchObject | @type | not applicable | | |||
| | PatchObject | @type | not applicable | | +-------------------+---------------------+-------------------------+ | |||
| +-------------------+---------------------+-----------------+ | | PersonalInfo | @type | not applicable | | |||
| | PersonalInfo | @type | not applicable | | +-------------------+---------------------+-------------------------+ | |||
| +-------------------+---------------------+-----------------+ | | PersonalInfo | kind | Sections 2.10.1, | | |||
| | PersonalInfo | kind | Section 2.10.1, | | | | | 2.10.2, and | | |||
| | | | Section 2.10.2, | | | | | 2.10.3 | | |||
| | | | Section 2.10.3 | | +-------------------+---------------------+-------------------------+ | |||
| +-------------------+---------------------+-----------------+ | | PersonalInfo | listAs | Section 2.3.9 | | |||
| | PersonalInfo | listAs | Section 2.3.9 | | +-------------------+---------------------+-------------------------+ | |||
| +-------------------+---------------------+-----------------+ | | PersonalInfo | level | Section 2.3.11 | | |||
| | PersonalInfo | level | Section 2.3.11 | | +-------------------+---------------------+-------------------------+ | |||
| +-------------------+---------------------+-----------------+ | | PersonalInfo | value | Sections 2.10.1, | | |||
| | PersonalInfo | value | Section 2.10.1, | | | | | 2.10.2, and | | |||
| | | | Section 2.10.2, | | | | | 2.10.3 | | |||
| | | | Section 2.10.3 | | +-------------------+---------------------+-------------------------+ | |||
| +-------------------+---------------------+-----------------+ | | Phone | @type | not applicable | | |||
| | Phone | @type | not applicable | | +-------------------+---------------------+-------------------------+ | |||
| +-------------------+---------------------+-----------------+ | | Phone | contexts | Section 2.3.20 | | |||
| | Phone | contexts | Section 2.3.20 | | +-------------------+---------------------+-------------------------+ | |||
| +-------------------+---------------------+-----------------+ | | Phone | features | Section 2.7.6 | | |||
| | Phone | features | Section 2.7.6 | | +-------------------+---------------------+-------------------------+ | |||
| +-------------------+---------------------+-----------------+ | | Phone | label | Section 2.11.11 | | |||
| | Phone | label | Section 2.11.11 | | +-------------------+---------------------+-------------------------+ | |||
| +-------------------+---------------------+-----------------+ | | Phone | number | Section 2.7.6 | | |||
| | Phone | number | Section 2.7.6 | | +-------------------+---------------------+-------------------------+ | |||
| +-------------------+---------------------+-----------------+ | | Phone | pref | Section 2.3.15 | | |||
| | Phone | pref | Section 2.3.15 | | +-------------------+---------------------+-------------------------+ | |||
| +-------------------+---------------------+-----------------+ | | Pronouns | @type | not applicable | | |||
| | Pronouns | @type | not applicable | | +-------------------+---------------------+-------------------------+ | |||
| +-------------------+---------------------+-----------------+ | | Pronouns | contexts | Section 2.3.20 | | |||
| | Pronouns | contexts | Section 2.3.20 | | +-------------------+---------------------+-------------------------+ | |||
| +-------------------+---------------------+-----------------+ | | Pronouns | pref | Section 2.3.15 | | |||
| | Pronouns | pref | Section 2.3.15 | | +-------------------+---------------------+-------------------------+ | |||
| +-------------------+---------------------+-----------------+ | | Pronouns | pronouns | Section 2.5.4 | | |||
| | Pronouns | pronouns | Section 2.5.4 | | +-------------------+---------------------+-------------------------+ | |||
| +-------------------+---------------------+-----------------+ | | Relation | @type | not applicable | | |||
| | Relation | @type | not applicable | | +-------------------+---------------------+-------------------------+ | |||
| +-------------------+---------------------+-----------------+ | | Relation | relation | Section 2.9.5 | | |||
| | Relation | relation | Section 2.9.5 | | +-------------------+---------------------+-------------------------+ | |||
| +-------------------+---------------------+-----------------+ | | Resource | @type | not applicable | | |||
| | Resource | @type | not applicable | | +-------------------+---------------------+-------------------------+ | |||
| +-------------------+---------------------+-----------------+ | | SchedulingAddress | @type | not applicable | | |||
| | SchedulingAddress | @type | not applicable | | +-------------------+---------------------+-------------------------+ | |||
| +-------------------+---------------------+-----------------+ | | SchedulingAddress | contexts | Section 2.3.20 | | |||
| | SchedulingAddress | contexts | Section 2.3.20 | | +-------------------+---------------------+-------------------------+ | |||
| +-------------------+---------------------+-----------------+ | | SchedulingAddress | label | Section 2.11.11 | | |||
| | SchedulingAddress | label | Section 2.11.11 | | +-------------------+---------------------+-------------------------+ | |||
| +-------------------+---------------------+-----------------+ | | SchedulingAddress | pref | Section 2.3.15 | | |||
| | SchedulingAddress | pref | Section 2.3.15 | | +-------------------+---------------------+-------------------------+ | |||
| +-------------------+---------------------+-----------------+ | | SchedulingAddress | uri | Section 2.13.1 | | |||
| | SchedulingAddress | uri | Section 2.13.1 | | +-------------------+---------------------+-------------------------+ | |||
| +-------------------+---------------------+-----------------+ | | SpeakToAs | @type | not applicable | | |||
| | SpeakToAs | @type | not applicable | | +-------------------+---------------------+-------------------------+ | |||
| +-------------------+---------------------+-----------------+ | | SpeakToAs | grammaticalGender | Section 2.5.4 | | |||
| | SpeakToAs | grammaticalGender | Section 2.5.4 | | +-------------------+---------------------+-------------------------+ | |||
| +-------------------+---------------------+-----------------+ | | SpeakToAs | pronouns | Section 2.5.4 | | |||
| | SpeakToAs | pronouns | Section 2.5.4 | | +-------------------+---------------------+-------------------------+ | |||
| +-------------------+---------------------+-----------------+ | | AddressComponent | @type | not applicable | | |||
| | AddressComponent | @type | not applicable | | +-------------------+---------------------+-------------------------+ | |||
| +-------------------+---------------------+-----------------+ | | AddressComponent | kind | Section 2.6.1 | | |||
| | AddressComponent | kind | Section 2.6.1 | | +-------------------+---------------------+-------------------------+ | |||
| +-------------------+---------------------+-----------------+ | | AddressComponent | value | Section 2.6.1 | | |||
| | AddressComponent | value | Section 2.6.1 | | +-------------------+---------------------+-------------------------+ | |||
| +-------------------+---------------------+-----------------+ | | Timestamp | @type | not applicable | | |||
| | Timestamp | @type | not applicable | | +-------------------+---------------------+-------------------------+ | |||
| +-------------------+---------------------+-----------------+ | | Timestamp | utc | Section 2.2.2 | | |||
| | Timestamp | utc | Section 2.2.2 | | +-------------------+---------------------+-------------------------+ | |||
| +-------------------+---------------------+-----------------+ | | Title | @type | not applicable | | |||
| | Title | @type | not applicable | | +-------------------+---------------------+-------------------------+ | |||
| +-------------------+---------------------+-----------------+ | | Title | kind | Section 2.9.6 | | |||
| | Title | kind | Section 2.9.6 | | +-------------------+---------------------+-------------------------+ | |||
| +-------------------+---------------------+-----------------+ | | Title | name | Section 2.9.6 | | |||
| | Title | name | Section 2.9.6 | | +-------------------+---------------------+-------------------------+ | |||
| +-------------------+---------------------+-----------------+ | | Title | organizationId | Section 2.9.6 | | |||
| | Title | organization | Section 2.9.6 | | +-------------------+---------------------+-------------------------+ | |||
| +-------------------+---------------------+-----------------+ | ||||
| Table 8: Conversion rules by JSContact property | Table 8: Conversion Rules for JSContact Types and Properties | |||
| Acknowledgements | ||||
| The definition and examples of the PHONETIC (Section 2.3.13) and | ||||
| SCRIPT (Section 2.3.17) parameters are based on the initial draft | ||||
| version of [vOBJECT]. | ||||
| Authors' Addresses | Authors' Addresses | |||
| Mario Loffredo | Mario Loffredo | |||
| IIT-CNR/Registro.it | IIT-CNR/Registro.it | |||
| Via Moruzzi,1 | Via Moruzzi, 1 | |||
| 56124 Pisa | 56124 Pisa | |||
| Italy | Italy | |||
| Email: mario.loffredo@iit.cnr.it | Email: mario.loffredo@iit.cnr.it | |||
| URI: https://www.iit.cnr.it | URI: https://www.iit.cnr.it | |||
| 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 | |||
| URI: https://www.fastmail.com | URI: https://www.fastmail.com | |||
| End of changes. 286 change blocks. | ||||
| 1168 lines changed or deleted | 1116 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. | ||||