| < draft-ietf-calext-jscontact-vcard-00.txt | draft-ietf-calext-jscontact-vcard-01.txt > | |||
|---|---|---|---|---|
| CalExt M. Loffredo | calext M. Loffredo | |||
| Internet-Draft IIT-CNR/Registro.it | Internet-Draft IIT-CNR/Registro.it | |||
| Intended status: Standards Track R. Stepanek | Intended status: Standards Track R. Stepanek | |||
| Expires: 8 September 2022 FastMail | Expires: 13 October 2022 FastMail | |||
| 7 March 2022 | 11 April 2022 | |||
| JSContact: Converting from and to vCard | JSContact: Converting from and to vCard | |||
| draft-ietf-calext-jscontact-vcard-00 | draft-ietf-calext-jscontact-vcard-01 | |||
| Abstract | Abstract | |||
| This document defines how to convert contact information as defined | This document defines how to convert contact information as defined | |||
| in the JSContact [draft-ietf-calext-jscontact] specification from and | in the JSContact [I-D.ietf-calext-jscontact] specification from and | |||
| to vCard. | to vCard. | |||
| Status of This Memo | Status of This Memo | |||
| This Internet-Draft is submitted in full conformance with the | This Internet-Draft is submitted in full conformance with the | |||
| provisions of BCP 78 and BCP 79. | provisions of BCP 78 and BCP 79. | |||
| Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
| Task Force (IETF). Note that other groups may also distribute | Task Force (IETF). Note that other groups may also distribute | |||
| working documents as Internet-Drafts. The list of current Internet- | working documents as Internet-Drafts. The list of current Internet- | |||
| Drafts is at https://datatracker.ietf.org/drafts/current/. | Drafts is at https://datatracker.ietf.org/drafts/current/. | |||
| Internet-Drafts are draft documents valid for a maximum of six months | Internet-Drafts are draft documents valid for a maximum of six months | |||
| and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
| time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
| material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
| This Internet-Draft will expire on 8 September 2022. | This Internet-Draft will expire on 13 October 2022. | |||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2022 IETF Trust and the persons identified as the | Copyright (c) 2022 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 (https://trustee.ietf.org/ | |||
| license-info) in effect on the date of publication of this document. | license-info) in effect on the date of publication of this document. | |||
| Please review these documents carefully, as they describe your rights | Please review these documents carefully, as they describe your rights | |||
| skipping to change at page 2, line 26 ¶ | skipping to change at page 2, line 26 ¶ | |||
| 2.3.1. BEGIN and END . . . . . . . . . . . . . . . . . . . . 6 | 2.3.1. BEGIN and END . . . . . . . . . . . . . . . . . . . . 6 | |||
| 2.3.2. SOURCE . . . . . . . . . . . . . . . . . . . . . . . 6 | 2.3.2. SOURCE . . . . . . . . . . . . . . . . . . . . . . . 6 | |||
| 2.3.3. KIND . . . . . . . . . . . . . . . . . . . . . . . . 6 | 2.3.3. KIND . . . . . . . . . . . . . . . . . . . . . . . . 6 | |||
| 2.3.4. XML . . . . . . . . . . . . . . . . . . . . . . . . . 7 | 2.3.4. XML . . . . . . . . . . . . . . . . . . . . . . . . . 7 | |||
| 2.4. Identification Properties . . . . . . . . . . . . . . . . 7 | 2.4. Identification Properties . . . . . . . . . . . . . . . . 7 | |||
| 2.4.1. FN . . . . . . . . . . . . . . . . . . . . . . . . . 7 | 2.4.1. FN . . . . . . . . . . . . . . . . . . . . . . . . . 7 | |||
| 2.4.2. N and NICKNAME . . . . . . . . . . . . . . . . . . . 7 | 2.4.2. N and NICKNAME . . . . . . . . . . . . . . . . . . . 7 | |||
| 2.4.3. PHOTO . . . . . . . . . . . . . . . . . . . . . . . . 9 | 2.4.3. PHOTO . . . . . . . . . . . . . . . . . . . . . . . . 9 | |||
| 2.4.4. BDAY, BIRTHPLACE, DEATHDATE, DEATHPLACE, | 2.4.4. BDAY, BIRTHPLACE, DEATHDATE, DEATHPLACE, | |||
| ANNIVERSARY . . . . . . . . . . . . . . . . . . . . . 9 | ANNIVERSARY . . . . . . . . . . . . . . . . . . . . . 9 | |||
| 2.4.5. GENDER . . . . . . . . . . . . . . . . . . . . . . . 11 | 2.4.5. GENDER . . . . . . . . . . . . . . . . . . . . . . . 12 | |||
| 2.5. Delivery Addressing Properties . . . . . . . . . . . . . 12 | 2.5. Delivery Addressing Properties . . . . . . . . . . . . . 13 | |||
| 2.5.1. ADR . . . . . . . . . . . . . . . . . . . . . . . . . 12 | 2.5.1. ADR . . . . . . . . . . . . . . . . . . . . . . . . . 13 | |||
| 2.6. Communications Properties . . . . . . . . . . . . . . . . 15 | 2.6. Communications Properties . . . . . . . . . . . . . . . . 15 | |||
| 2.6.1. TEL . . . . . . . . . . . . . . . . . . . . . . . . . 15 | 2.6.1. TEL . . . . . . . . . . . . . . . . . . . . . . . . . 16 | |||
| 2.6.2. EMAIL . . . . . . . . . . . . . . . . . . . . . . . . 15 | 2.6.2. EMAIL . . . . . . . . . . . . . . . . . . . . . . . . 16 | |||
| 2.6.3. IMPP . . . . . . . . . . . . . . . . . . . . . . . . 16 | 2.6.3. IMPP . . . . . . . . . . . . . . . . . . . . . . . . 17 | |||
| 2.6.4. LANG . . . . . . . . . . . . . . . . . . . . . . . . 17 | 2.6.4. LANG . . . . . . . . . . . . . . . . . . . . . . . . 18 | |||
| 2.7. Geographical Properties . . . . . . . . . . . . . . . . . 18 | 2.7. Geographical Properties . . . . . . . . . . . . . . . . . 19 | |||
| 2.7.1. Time Zone Representation . . . . . . . . . . . . . . 18 | 2.7.1. Time Zone Representation . . . . . . . . . . . . . . 20 | |||
| 2.8. Organizational Properties . . . . . . . . . . . . . . . . 19 | 2.8. Organizational Properties . . . . . . . . . . . . . . . . 20 | |||
| 2.8.1. TITLE and ROLE . . . . . . . . . . . . . . . . . . . 19 | 2.8.1. TITLE and ROLE . . . . . . . . . . . . . . . . . . . 20 | |||
| 2.8.2. LOGO . . . . . . . . . . . . . . . . . . . . . . . . 20 | 2.8.2. LOGO . . . . . . . . . . . . . . . . . . . . . . . . 21 | |||
| 2.8.3. ORG . . . . . . . . . . . . . . . . . . . . . . . . . 20 | 2.8.3. ORG . . . . . . . . . . . . . . . . . . . . . . . . . 22 | |||
| 2.8.4. MEMBER . . . . . . . . . . . . . . . . . . . . . . . 21 | 2.8.4. MEMBER . . . . . . . . . . . . . . . . . . . . . . . 23 | |||
| 2.8.5. RELATED . . . . . . . . . . . . . . . . . . . . . . . 23 | 2.8.5. RELATED . . . . . . . . . . . . . . . . . . . . . . . 25 | |||
| 2.8.6. CONTACT-URI . . . . . . . . . . . . . . . . . . . . . 24 | 2.8.6. CONTACT-URI . . . . . . . . . . . . . . . . . . . . . 26 | |||
| 2.9. Personal Information Properties . . . . . . . . . . . . . 24 | 2.9. Personal Information Properties . . . . . . . . . . . . . 26 | |||
| 2.9.1. EXPERTISE . . . . . . . . . . . . . . . . . . . . . . 25 | 2.9.1. EXPERTISE . . . . . . . . . . . . . . . . . . . . . . 27 | |||
| 2.9.2. HOBBY . . . . . . . . . . . . . . . . . . . . . . . . 25 | 2.9.2. HOBBY . . . . . . . . . . . . . . . . . . . . . . . . 27 | |||
| 2.9.3. INTEREST . . . . . . . . . . . . . . . . . . . . . . 26 | 2.9.3. INTEREST . . . . . . . . . . . . . . . . . . . . . . 28 | |||
| 2.9.4. ORG-DIRECTORY . . . . . . . . . . . . . . . . . . . . 27 | 2.9.4. ORG-DIRECTORY . . . . . . . . . . . . . . . . . . . . 29 | |||
| 2.10. Explanatory Properties . . . . . . . . . . . . . . . . . 28 | 2.10. Explanatory Properties . . . . . . . . . . . . . . . . . 30 | |||
| 2.10.1. CATEGORIES . . . . . . . . . . . . . . . . . . . . . 28 | 2.10.1. CATEGORIES . . . . . . . . . . . . . . . . . . . . . 30 | |||
| 2.10.2. NOTE . . . . . . . . . . . . . . . . . . . . . . . . 29 | 2.10.2. NOTE . . . . . . . . . . . . . . . . . . . . . . . . 31 | |||
| 2.10.3. PRODID . . . . . . . . . . . . . . . . . . . . . . . 30 | 2.10.3. PRODID . . . . . . . . . . . . . . . . . . . . . . . 32 | |||
| 2.10.4. REV . . . . . . . . . . . . . . . . . . . . . . . . 30 | 2.10.4. REV . . . . . . . . . . . . . . . . . . . . . . . . 32 | |||
| 2.10.5. SOUND . . . . . . . . . . . . . . . . . . . . . . . 30 | 2.10.5. SOUND . . . . . . . . . . . . . . . . . . . . . . . 32 | |||
| 2.10.6. UID . . . . . . . . . . . . . . . . . . . . . . . . 31 | 2.10.6. UID . . . . . . . . . . . . . . . . . . . . . . . . 33 | |||
| 2.10.7. CLIENTPIDMAP and PID Parameter . . . . . . . . . . . 32 | 2.10.7. CLIENTPIDMAP and PID Parameter . . . . . . . . . . . 34 | |||
| 2.10.8. URL . . . . . . . . . . . . . . . . . . . . . . . . 32 | 2.10.8. URL . . . . . . . . . . . . . . . . . . . . . . . . 34 | |||
| 2.10.9. VERSION . . . . . . . . . . . . . . . . . . . . . . 32 | 2.10.9. VERSION . . . . . . . . . . . . . . . . . . . . . . 34 | |||
| 2.11. Security Properties . . . . . . . . . . . . . . . . . . . 32 | 2.11. Security Properties . . . . . . . . . . . . . . . . . . . 34 | |||
| 2.11.1. KEY . . . . . . . . . . . . . . . . . . . . . . . . 33 | 2.11.1. KEY . . . . . . . . . . . . . . . . . . . . . . . . 35 | |||
| 2.12. Calendar Properties . . . . . . . . . . . . . . . . . . . 33 | 2.12. Calendar Properties . . . . . . . . . . . . . . . . . . . 35 | |||
| 2.12.1. FBURL . . . . . . . . . . . . . . . . . . . . . . . 33 | 2.12.1. FBURL . . . . . . . . . . . . . . . . . . . . . . . 35 | |||
| 2.12.2. CALADRURI . . . . . . . . . . . . . . . . . . . . . 34 | 2.12.2. CALADRURI . . . . . . . . . . . . . . . . . . . . . 36 | |||
| 2.12.3. CALURI . . . . . . . . . . . . . . . . . . . . . . . 35 | 2.12.3. CALURI . . . . . . . . . . . . . . . . . . . . . . . 37 | |||
| 2.13. vCard Unmatched Properties . . . . . . . . . . . . . . . 36 | 2.13. vCard Unmatched Properties . . . . . . . . . . . . . . . 38 | |||
| 2.14. Card Required Properties . . . . . . . . . . . . . . . . 36 | 2.14. Card Required Properties . . . . . . . . . . . . . . . . 38 | |||
| 3. Translating JSContact properties to vCard . . . . . . . . . . 37 | 3. Translating JSContact properties to vCard . . . . . . . . . . 39 | |||
| 3.1. Id . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 | 3.1. Id . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 | |||
| 3.2. Localizations . . . . . . . . . . . . . . . . . . . . . . 37 | 3.2. Localizations . . . . . . . . . . . . . . . . . . . . . . 39 | |||
| 3.3. Date and Time Representations . . . . . . . . . . . . . . 37 | 3.3. Date and Time Representations . . . . . . . . . . . . . . 39 | |||
| 3.4. Time Zone . . . . . . . . . . . . . . . . . . . . . . . . 37 | 3.4. Time Zone . . . . . . . . . . . . . . . . . . . . . . . . 39 | |||
| 3.5. JSContact Types Matching Multiple vCard Properties . . . 38 | 3.5. JSContact Types Matching Multiple vCard Properties . . . 40 | |||
| 3.5.1. Title . . . . . . . . . . . . . . . . . . . . . . . . 38 | 3.5.1. Title . . . . . . . . . . . . . . . . . . . . . . . . 40 | |||
| 3.5.2. Resource . . . . . . . . . . . . . . . . . . . . . . 38 | 3.5.2. Resource . . . . . . . . . . . . . . . . . . . . . . 40 | |||
| 3.6. CardGroup . . . . . . . . . . . . . . . . . . . . . . . . 38 | 3.6. CardGroup . . . . . . . . . . . . . . . . . . . . . . . . 40 | |||
| 3.7. Card Unmatched Properties . . . . . . . . . . . . . . . . 38 | 3.7. Card Unmatched Properties . . . . . . . . . . . . . . . . 40 | |||
| 3.8. vCard Required Properties . . . . . . . . . . . . . . . . 38 | 3.8. vCard Required Properties . . . . . . . . . . . . . . . . 40 | |||
| 4. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 38 | 4. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 40 | |||
| 5. Implementation Status . . . . . . . . . . . . . . . . . . . . 39 | 5. Implementation Status . . . . . . . . . . . . . . . . . . . . 41 | |||
| 5.1. CNR . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 | 5.1. CNR . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 | |||
| 6. Security Considerations . . . . . . . . . . . . . . . . . . . 39 | 6. Security Considerations . . . . . . . . . . . . . . . . . . . 41 | |||
| 7. References . . . . . . . . . . . . . . . . . . . . . . . . . 39 | 7. References . . . . . . . . . . . . . . . . . . . . . . . . . 41 | |||
| 7.1. Normative References . . . . . . . . . . . . . . . . . . 39 | 7.1. Normative References . . . . . . . . . . . . . . . . . . 41 | |||
| 7.2. Informative References . . . . . . . . . . . . . . . . . 40 | 7.2. Informative References . . . . . . . . . . . . . . . . . 42 | |||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 41 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 43 | |||
| 1. Introduction | 1. Introduction | |||
| 1.1. Motivation | 1.1. Motivation | |||
| The JSContact specification [draft-ietf-calext-jscontact] has been | The JSContact specification [I-D.ietf-calext-jscontact] has been | |||
| defined to represent contact card information as a more efficient | defined to represent contact card information as a more efficient | |||
| alternative to vCard [RFC6350] and its JSON-based version named jCard | alternative to vCard [RFC6350] and its JSON-based version named jCard | |||
| [RFC7095]. | [RFC7095]. | |||
| While new applications might adopt JSContact as their main format to | While new applications might adopt JSContact as their main format to | |||
| exchange contact card data, they are likely to interoperate with | exchange contact card data, they are likely to interoperate with | |||
| services and clients that just support vCard/jCard. Similarly, | services and clients that just support vCard/jCard. Similarly, | |||
| existing contact data providers and consumers already using vCard/ | existing contact data providers and consumers already using vCard/ | |||
| jCard might want to represent their data also according to the | jCard might want to represent their data also according to the | |||
| JSContact specification. | JSContact specification. | |||
| To facilitate this, this document defines how to convert contact | To facilitate this, this document defines how to convert contact | |||
| information as defined in the JSContact [draft-ietf-calext-jscontact] | information as defined in the JSContact [I-D.ietf-calext-jscontact] | |||
| specification from and to vCard. | specification from and to vCard. | |||
| 1.2. Scope and Caveats | 1.2. Scope and Caveats | |||
| JSContact and vCard have a lot of semantics in common, however some | JSContact and vCard have a lot of semantics in common, however some | |||
| differences must be outlined: | differences must be outlined: | |||
| * The JSContact data model defines some contact information that | * The JSContact data model defines some contact information that | |||
| doesn't have a direct mapping with vCard properties. In | doesn't have a direct mapping with vCard properties. In | |||
| particular, unlike vCard, JSContact distinguishes between a single | particular, unlike vCard, JSContact distinguishes between a single | |||
| skipping to change at page 5, line 24 ¶ | skipping to change at page 5, line 24 ¶ | |||
| "uid" member of both the resulting CardGroup object and its "card" | "uid" member of both the resulting CardGroup object and its "card" | |||
| member MUST have the same value. | member MUST have the same value. | |||
| 2.1. Common Parameters | 2.1. Common Parameters | |||
| The following mapping rules apply to parameters that are common to | The following mapping rules apply to parameters that are common to | |||
| most of the vCard properties: | most of the vCard properties: | |||
| * The generic values of the TYPE parameter are mapped to the values | * The generic values of the TYPE parameter are mapped to the values | |||
| of the "Context" type as defined in Section 1.5.1 of | of the "Context" type as defined in Section 1.5.1 of | |||
| [draft-ietf-calext-jscontact]. The "home" value corresponds to | [I-D.ietf-calext-jscontact]. The "home" value corresponds to the | |||
| the "private" key. The mapping of those specific TYPE values used | "private" key. The mapping of those specific TYPE values used in | |||
| in the TEL and RELATED properties are defined in Section 2.6.1 and | the TEL and RELATED properties are defined in Section 2.6.1 and | |||
| Section 2.8.5. | Section 2.8.5. | |||
| * The PREF parameter is mapped to the "pref" property. | * The PREF parameter is mapped to the "pref" property. | |||
| * The MEDIATYPE parameter is mapped to the "mediaType" property. As | * The MEDIATYPE parameter is mapped to the "mediaType" property. As | |||
| described in Section 5.7 of [RFC6350], the media type of a | described in Section 5.7 of [RFC6350], the media type of a | |||
| resource can be identified by its URI. For example, "image/gif" | resource can be identified by its URI. For example, "image/gif" | |||
| can be derived from the ".gif" extension of a GIF image URI. | can be derived from the ".gif" extension of a GIF image URI. | |||
| JSContact producers MAY provide the media type information even | JSContact producers MAY provide the media type information even | |||
| when it is not specified in the vCard. | when it is not specified in the vCard. | |||
| * The ALTID and LANGUAGE parameters are used in combination for | * The ALTID and LANGUAGE parameters are used in combination for | |||
| associating the language-dependent alternatives with a given | associating the language-dependent alternatives with a given | |||
| skipping to change at page 6, line 13 ¶ | skipping to change at page 6, line 13 ¶ | |||
| 2.3. General Properties | 2.3. General Properties | |||
| 2.3.1. BEGIN and END | 2.3.1. BEGIN and END | |||
| The BEGIN and END properties don't have a direct match with a | The BEGIN and END properties don't have a direct match with a | |||
| JSContact feature. | JSContact feature. | |||
| 2.3.2. SOURCE | 2.3.2. SOURCE | |||
| A SOURCE property is represented as an entry of the "online" map | A SOURCE property is represented as an entry of the "online" map | |||
| (Figure 1). The entry value is a "Resource" object whose "type" | (Figure 1). The entry value is a "Resource" object whose "type" | |||
| member is set to "uri", the "label" member is set to "source" and the | member is set to "directorySource" and the "resource" member is the | |||
| "resource" member is the SOURCE value. | SOURCE value. | |||
| The PREF and MEDIATYPE parameters are mapped according to the rules | The PREF and MEDIATYPE parameters are mapped according to the rules | |||
| as defined in Section 2.1. | as defined in Section 2.1. | |||
| BEGIN:VCARD | BEGIN:VCARD | |||
| VERSION:4.0 | VERSION:4.0 | |||
| ... | ... | |||
| SOURCE:http://directory.example.com/addressbooks/jdoe/Jean%20Dupont.vcf | SOURCE:http://directory.example.com/addressbooks/jdoe/Jean%20Dupont.vcf | |||
| ... | ... | |||
| END:VCARD | END:VCARD | |||
| { | { | |||
| "@type": "Card", | ||||
| ... | ... | |||
| "online":{ | "online":{ | |||
| ... | ... | |||
| "a-source":{ | "a-source":{ | |||
| "type": "uri", | "@type": "Resource", | |||
| "label": "source", | "type": "directorySource", | |||
| "resource": "http://directory.example.com/addressbooks/jdoe/Jean%20Dupont.vcf" | "resource": "http://directory.example.com/addressbooks/jdoe/Jean%20Dupont.vcf" | |||
| }, | }, | |||
| ... | ... | |||
| }, | }, | |||
| ... | ... | |||
| } | } | |||
| Figure 1: SOURCE mapping example | Figure 1: SOURCE mapping example | |||
| 2.3.3. KIND | 2.3.3. KIND | |||
| skipping to change at page 7, line 13 ¶ | skipping to change at page 7, line 13 ¶ | |||
| "group" is reserved for a CardGroup instance. | "group" is reserved for a CardGroup instance. | |||
| BEGIN:VCARD | BEGIN:VCARD | |||
| VERSION:4.0 | VERSION:4.0 | |||
| ... | ... | |||
| KIND:individual | KIND:individual | |||
| ... | ... | |||
| END:VCARD | END:VCARD | |||
| { | { | |||
| "@type": "Card", | ||||
| ... | ... | |||
| "kind": "individual", | "kind": "individual", | |||
| ... | ... | |||
| } | } | |||
| Figure 2: KIND mapping example | Figure 2: KIND mapping example | |||
| 2.3.4. XML | 2.3.4. XML | |||
| The XML property doesn't have a direct match with a JSContact | The XML property doesn't have a direct match with a JSContact | |||
| skipping to change at page 8, line 21 ¶ | skipping to change at page 8, line 21 ¶ | |||
| +--------------------+--------------+ | +--------------------+--------------+ | |||
| | Family Names | surname | | | Family Names | surname | | |||
| +--------------------+--------------+ | +--------------------+--------------+ | |||
| | Additional Names | additional | | | Additional Names | additional | | |||
| +--------------------+--------------+ | +--------------------+--------------+ | |||
| | Honorific Suffixes | suffix | | | Honorific Suffixes | suffix | | |||
| +--------------------+--------------+ | +--------------------+--------------+ | |||
| Table 1: N components mapping | Table 1: N components mapping | |||
| BEGIN:VCARD | BEGIN:VCARD | |||
| VERSION:4.0 | VERSION:4.0 | |||
| ... | ... | |||
| FN:Mr. John Q. Public\, Esq. | FN:Mr. John Q. Public\, Esq. | |||
| N:Public;John;Quinlan;Mr.;Esq. | N:Public;John;Quinlan;Mr.;Esq. | |||
| NICKNAME:Johnny | NICKNAME:Johnny | |||
| ... | ... | |||
| END:VCARD | END:VCARD | |||
| { | { | |||
| ... | "@type": "Card", | |||
| "fullName":{ "value": "Mr. John Q. Public, Esq." }, | ... | |||
| "name":{ | "fullName": "Mr. John Q. Public, Esq.", | |||
| "components":[ | "name":{ | |||
| { "value":"Mr.", "type": "prefix" }, | "@type": "Name", | |||
| { "value":"John", "type": "personal" }, | "components":[ | |||
| { "value":"Public", "type": "surname" }, | { "@type": "NameComponent", "type": "prefix", "value":"Mr." }, | |||
| { "value":"Quinlan", "type": "additional" }, | { "@type": "NameComponent", "type": "personal", "value":"John" }, | |||
| { "value":"Esq.", "type": "suffix" } | { "@type": "NameComponent", "type": "surname", "value":"Public" }, | |||
| ] | { "@type": "NameComponent", "type": "additional", "value":"Quinlan" }, | |||
| }, | { "@type": "NameComponent", "type": "suffix", "value":"Esq." } | |||
| "nickNames":[ | ] | |||
| { "value": "Johnny" } | }, | |||
| ], | "nickNames":[ | |||
| ... | "Johnny" | |||
| } | ], | |||
| ... | ||||
| } | ||||
| Figure 3: FN, N, NICKNAME mapping example | Figure 3: FN, N, NICKNAME mapping example | |||
| 2.4.3. PHOTO | 2.4.3. PHOTO | |||
| A PHOTO property is represented as an entry of the "photos" map | A PHOTO property is represented as an entry of the "photos" map | |||
| (Figure 4). The entry value is a "File" object whose "href" member | (Figure 4). The entry value is a "File" object whose "href" member | |||
| is the PHOTO value. | is the PHOTO value. | |||
| The PREF and MEDIATYPE parameters are mapped according to the rules | The PREF and MEDIATYPE parameters are mapped according to the rules | |||
| as defined in Section 2.1. | as defined in Section 2.1. | |||
| BEGIN:VCARD | BEGIN:VCARD | |||
| VERSION:4.0 | VERSION:4.0 | |||
| ... | ... | |||
| PHOTO:http://www.example.com/pub/photos/jqpublic.gif | PHOTO:http://www.example.com/pub/photos/jqpublic.gif | |||
| ... | ... | |||
| END:VCARD | END:VCARD | |||
| { | { | |||
| "@type": "Card", | ||||
| ... | ... | |||
| "photos":{ | "photos":{ | |||
| ... | ... | |||
| "a-photo":{ | "a-photo":{ | |||
| "@type": "File", | ||||
| "href": "http://www.example.com/pub/photos/jqpublic.gif" | "href": "http://www.example.com/pub/photos/jqpublic.gif" | |||
| }, | }, | |||
| ... | ... | |||
| }, | }, | |||
| ... | ... | |||
| } | } | |||
| Figure 4: PHOTO mapping example | Figure 4: PHOTO mapping example | |||
| 2.4.4. BDAY, BIRTHPLACE, DEATHDATE, DEATHPLACE, ANNIVERSARY | 2.4.4. BDAY, BIRTHPLACE, DEATHDATE, DEATHPLACE, ANNIVERSARY | |||
| skipping to change at page 10, line 26 ¶ | skipping to change at page 11, line 17 ¶ | |||
| ... | ... | |||
| BDAY:19531015T231000Z | BDAY:19531015T231000Z | |||
| BIRTHPLACE:Mail Drop: TNE QB\n123 Main Street\nAny Town, CA 91921-1234\nU.S.A. | BIRTHPLACE:Mail Drop: TNE QB\n123 Main Street\nAny Town, CA 91921-1234\nU.S.A. | |||
| DEATHDATE:19960415 | DEATHDATE:19960415 | |||
| DEATHPLACE:4445 Courtright Street\nNew England, ND 58647\nU.S.A. | DEATHPLACE:4445 Courtright Street\nNew England, ND 58647\nU.S.A. | |||
| ANNIVERSARY:19860201 | ANNIVERSARY:19860201 | |||
| ... | ... | |||
| END:VCARD | END:VCARD | |||
| { | { | |||
| "@type": "Card", | ||||
| ... | ... | |||
| "anniversaries": { | "anniversaries": { | |||
| "ANNIVERSARY-1" : { | "ANNIVERSARY-1" : { | |||
| "@type": "Anniversary", | ||||
| "type": "birth", | "type": "birth", | |||
| "date": "1953-10-15T23:10:00Z", | "date": "1953-10-15T23:10:00Z", | |||
| "place":{ | "place":{ | |||
| "fullAddress":{ | "@type": "Address", | |||
| "value": "Mail Drop: TNE QB\n123 Main Street\nAny Town, CA 91921-1234\nU.S.A." | "fullAddress": "Mail Drop: TNE QB\n123 Main Street\nAny Town, CA 91921-1234\nU.S.A." | |||
| } | ||||
| } | } | |||
| }, | }, | |||
| "ANNIVERSARY-2" : { | "ANNIVERSARY-2" : { | |||
| "type": "birth", | "@type": "Anniversary", | |||
| "date": "1953-10-15T23:10:00Z", | "type": "death", | |||
| "date": "1996-04-15", | ||||
| "place":{ | "place":{ | |||
| "fullAddress":{ | "@type": "Address", | |||
| "value": "4445 Courtright Street\nNew England, ND 58647\nU.S.A." | "fullAddress": "4445 Courtright Street\nNew England, ND 58647\nU.S.A." | |||
| } | ||||
| } | } | |||
| }, | }, | |||
| "ANNIVERSARY-3" : { | "ANNIVERSARY-3" : { | |||
| "@type": "Anniversary", | ||||
| "label": "marriage date", | "label": "marriage date", | |||
| "date": "1986-02-01" | "date": "1986-02-01" | |||
| } | } | |||
| }, | }, | |||
| ... | ... | |||
| } | } | |||
| Figure 5: BDAY, BIRTHPLACE, DEATHDATE, DEATHPLACE, ANNIVERSARY | Figure 5: BDAY, BIRTHPLACE, DEATHDATE, DEATHPLACE, ANNIVERSARY | |||
| mapping example | mapping example | |||
| 2.4.5. GENDER | 2.4.5. GENDER | |||
| The GENDER property is a single structured value with two optional | The GENDER property is a single structured value with two optional | |||
| components: the biological sex and the gender information. The | components: the biological sex and the gender information. The | |||
| former is represented as an enumerated value, while the latter as a | former is represented as an enumerated value, while the latter as a | |||
| free-form text. As opposed to such a representation, the JSContact | free-form text. As opposed to such a representation, the JSContact | |||
| specification includes the "SpeakToAs" object just to represent how | specification includes the "SpeakToAs" object just to represent how | |||
| skipping to change at page 14, line 5 ¶ | skipping to change at page 15, line 5 ¶ | |||
| "countryCode" member. | "countryCode" member. | |||
| The PREF and TYPE parameters are mapped according to the rules as | The PREF and TYPE parameters are mapped according to the rules as | |||
| defined in Section 2.1. | defined in Section 2.1. | |||
| The ALTID and LANGUAGE parameters are mapped according to the rules | The ALTID and LANGUAGE parameters are mapped according to the rules | |||
| as defined in Section 2.1. Each possible language-dependent | as defined in Section 2.1. Each possible language-dependent | |||
| alternative is represented as an entry of the PatchObject map where | alternative is represented as an entry of the PatchObject map where | |||
| the key references the "fullAddress" member. | the key references the "fullAddress" member. | |||
| BEGIN:VCARD | BEGIN:VCARD | |||
| VERSION:4.0 | VERSION:4.0 | |||
| ... | ... | |||
| ADR;TYPE=work;CC=US:;;54321 Oak St;Reston;VA;20190;USA | ADR;TYPE=work;CC=US:;;54321 Oak St;Reston;VA;20190;USA | |||
| ADR;TYPE=home;CC=US:;;12345 Elm St;Reston;VA;20190;USA | ADR;TYPE=home;CC=US:;;12345 Elm St;Reston;VA;20190;USA | |||
| ... | ... | |||
| END:VCARD | END:VCARD | |||
| { | { | |||
| ... | "@type": "Card", | |||
| "addresses":{ | ... | |||
| "work-address" :{ | "addresses":{ | |||
| "contexts":{ "work": true }, | "work-address" :{ | |||
| "fullAddress":{ | "@type": "Address", | |||
| "value": "54321 Oak St\nReston\nVA\n20190\nUSA" | "contexts":{ "work": true }, | |||
| }, | "fullAddress": "54321 Oak St\nReston\nVA\n20190\nUSA", | |||
| "street": [ | "street": [ | |||
| { "name": "Oak St" }, | { "@type": "StreetComponent", "type": "name", "value": "Oak St" }, | |||
| { "number" : "54321" } | { "@type": "StreetComponent", "type": "number", "value": "54321" } | |||
| ], | ], | |||
| "locality": "Reston", | "locality": "Reston", | |||
| "region": "VA", | "region": "VA", | |||
| "country": "USA", | "country": "USA", | |||
| "postcode": "20190", | "postcode": "20190", | |||
| "countryCode": "US" | "countryCode": "US" | |||
| }, | }, | |||
| "private-address":{ | "private-address":{ | |||
| "contexts":{ "private": true }, | "@type": "Address", | |||
| "fullAddress":{ | "contexts":{ "private": true }, | |||
| "value": "12345 Elm St\nReston\nVA\n20190\nUSA" | "fullAddress": "12345 Elm St\nReston\nVA\n20190\nUSA", | |||
| }, | "street": [ | |||
| "street": [ | { "@type": "StreetComponent", "type": "name", "value": "Elm St" }, | |||
| { "name": "Elm St" }, | { "@type": "StreetComponent", "type": "number", "value": "12345" } | |||
| { "number" : "12345" } | ], | |||
| ], | "locality": "Reston", | |||
| "locality": "Reston", | "region": "VA", | |||
| "region": "VA", | "country": "USA", | |||
| "country": "USA", | "postcode": "20190", | |||
| "postcode": "20190", | "countryCode": "US" | |||
| "countryCode": "US" | } | |||
| } | }, | |||
| }, | ... | |||
| ... | } | |||
| } | ||||
| Figure 6: ADR mapping example | Figure 6: ADR mapping example | |||
| 2.6. Communications Properties | 2.6. Communications Properties | |||
| 2.6.1. TEL | 2.6.1. TEL | |||
| A TEL property is represented as an entry of the "phones" map | A TEL property is represented as an entry of the "phones" map | |||
| (Figure 7). The entry value is a "Phone" object. The TEL-specific | (Figure 7). The entry value is a "Phone" object. The TEL-specific | |||
| values of the TYPE parameter are mapped to the "features" map keys. | values of the TYPE parameter are mapped to the "features" map keys. | |||
| The values that don't match a key are represented as comma-separated | The values that don't match a key are represented as comma-separated | |||
| values of the "label" member. The "phone" member is set to the TEL | values of the "label" member. The "phone" member is set to the TEL | |||
| value. | value. | |||
| The PREF and TYPE parameters are mapped according to the rules as | The PREF and TYPE parameters are mapped according to the rules as | |||
| skipping to change at page 15, line 28 ¶ | skipping to change at page 16, line 25 ¶ | |||
| BEGIN:VCARD | BEGIN:VCARD | |||
| VERSION:4.0 | VERSION:4.0 | |||
| ... | ... | |||
| 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 | |||
| ... | ... | |||
| END:VCARD | END:VCARD | |||
| { | { | |||
| "@type": "Card", | ||||
| ... | ... | |||
| "phones":{ | "phones":{ | |||
| "a-phone":{ | "a-phone":{ | |||
| "@type": "Phone", | ||||
| "contexts":{ "private": true }, | "contexts":{ "private": true }, | |||
| "features":{ "voice": true }, | "features":{ "voice": true }, | |||
| "phone": "tel:+1-555-555-5555;ext=5555", | "phone": "tel:+1-555-555-5555;ext=5555", | |||
| "pref": 1 | "pref": 1 | |||
| }, | }, | |||
| "another-phone":{ | "another-phone":{ | |||
| "@type": "Phone", | ||||
| "contexts":{ "private": true }, | "contexts":{ "private": true }, | |||
| "phone": "tel:+33-01-23-45-67" | "phone": "tel:+33-01-23-45-67" | |||
| } | } | |||
| ], | ], | |||
| ... | ... | |||
| } | } | |||
| Figure 7: TEL mapping example | Figure 7: TEL mapping example | |||
| 2.6.2. EMAIL | 2.6.2. EMAIL | |||
| skipping to change at page 16, line 17 ¶ | skipping to change at page 17, line 17 ¶ | |||
| BEGIN:VCARD | BEGIN:VCARD | |||
| VERSION:4.0 | VERSION:4.0 | |||
| ... | ... | |||
| 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 | |||
| ... | ... | |||
| END:VCARD | END:VCARD | |||
| { | { | |||
| "@type": "Card", | ||||
| ... | ... | |||
| "emails":{ | "emails":{ | |||
| "work-email":{ | "work-email":{ | |||
| "@type": "EmailAddress", | ||||
| "contexts":{ "work": true }, | "contexts":{ "work": true }, | |||
| "email": "jqpublic@xyz.example.com" | "email": "jqpublic@xyz.example.com" | |||
| }, | }, | |||
| "private-email":{ | "private-email":{ | |||
| "contexts":{ "private", true }, | "@type": "EmailAddress", | |||
| "email": "jane_doe@example.com", | "email": "jane_doe@example.com", | |||
| "pref": 1 | "pref": 1 | |||
| } | } | |||
| }, | }, | |||
| ... | ... | |||
| } | } | |||
| Figure 8: EMAIL mapping example | Figure 8: EMAIL mapping example | |||
| 2.6.3. IMPP | 2.6.3. IMPP | |||
| skipping to change at page 17, line 13 ¶ | skipping to change at page 18, line 13 ¶ | |||
| defined in Section 2.1. | defined in Section 2.1. | |||
| BEGIN:VCARD | BEGIN:VCARD | |||
| VERSION:4.0 | VERSION:4.0 | |||
| ... | ... | |||
| IMPP;PREF=1:xmpp:alice@example.com | IMPP;PREF=1:xmpp:alice@example.com | |||
| ... | ... | |||
| END:VCARD | END:VCARD | |||
| { | { | |||
| "@type": "Card", | ||||
| ... | ... | |||
| "online":{ | "online":{ | |||
| ... | ... | |||
| { | { | |||
| "@type": "Resource", | ||||
| "type": "username", | "type": "username", | |||
| "label": "XMPP", | "label": "XMPP", | |||
| "value": "alice@example.com" | "value": "alice@example.com", | |||
| "pref": 1 | ||||
| }, | }, | |||
| ... | ... | |||
| }, | }, | |||
| ... | ... | |||
| } | } | |||
| Figure 9: IMPP mapping example | Figure 9: IMPP mapping example | |||
| 2.6.4. LANG | 2.6.4. LANG | |||
| skipping to change at page 18, line 15 ¶ | skipping to change at page 19, line 15 ¶ | |||
| BEGIN:VCARD | BEGIN:VCARD | |||
| VERSION:4.0 | VERSION:4.0 | |||
| ... | ... | |||
| 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 | |||
| ... | ... | |||
| END:VCARD | END:VCARD | |||
| { | { | |||
| "@type": "Card", | ||||
| ... | ... | |||
| "preferredContactLanguages":{ | "preferredContactLanguages":{ | |||
| "en":[ | "en":[ | |||
| { | { | |||
| "@type": "ContactLanguage", | ||||
| "context": "work", | "context": "work", | |||
| "pref": 1 | "pref": 1 | |||
| } | } | |||
| ], | ], | |||
| "fr":[ | "fr":[ | |||
| { | { | |||
| "@type": "ContactLanguage", | ||||
| "context": "work", | "context": "work", | |||
| "pref": 2 | "pref": 2 | |||
| }, | }, | |||
| { | { | |||
| "@type": "ContactLanguage", | ||||
| "context": "private" | "context": "private" | |||
| } | } | |||
| ] | ] | |||
| }, | }, | |||
| ... | ... | |||
| } | } | |||
| Figure 10: LANG mapping example | Figure 10: LANG mapping example | |||
| 2.7. Geographical Properties | 2.7. Geographical Properties | |||
| skipping to change at page 19, line 39 ¶ | skipping to change at page 21, line 14 ¶ | |||
| BEGIN:VCARD | BEGIN:VCARD | |||
| VERSION:4.0 | VERSION:4.0 | |||
| ... | ... | |||
| TITLE:Research Scientist | TITLE:Research Scientist | |||
| ROLE:Project Leader | ROLE:Project Leader | |||
| ... | ... | |||
| END:VCARD | END:VCARD | |||
| { | { | |||
| "@type": "Card", | ||||
| ... | ... | |||
| "titles":{ | "titles":{ | |||
| "a-title":{ | "a-title":{ | |||
| "title":{ "value" : "Project Leader" } | "@type": "Title", | |||
| "title": "Project Leader" | ||||
| }, | }, | |||
| "another-title":{ | "another-title":{ | |||
| "title":{ "value" : "Research Scientist" } | "@type": "Title", | |||
| "title": "Research Scientist" | ||||
| } | } | |||
| }, | }, | |||
| ... | ... | |||
| } | } | |||
| Figure 11: TITLE and ROLE mapping example | Figure 11: TITLE and ROLE mapping example | |||
| 2.8.2. LOGO | 2.8.2. LOGO | |||
| A LOGO property is represented as an entry of the "online" map | A LOGO property is represented as an entry of the "online" map | |||
| (Figure 12). The entry value is a "Resource" object whose "type" | (Figure 12). The entry value is a "Resource" object whose "type" | |||
| member is set to "uri", the "label" member is set to "logo" and the | member is set to "logo" and the "resource" member is the LOGO value. | |||
| "resource" member is the LOGO value. | ||||
| The PREF and TYPE parameters are mapped according to the rules as | The PREF and TYPE parameters are mapped according to the rules as | |||
| defined in Section 2.1. | defined in Section 2.1. | |||
| BEGIN:VCARD | BEGIN:VCARD | |||
| VERSION:4.0 | VERSION:4.0 | |||
| ... | ... | |||
| LOGO:http://www.example.com/pub/logos/abccorp.jpg | LOGO:http://www.example.com/pub/logos/abccorp.jpg | |||
| ... | ... | |||
| END:VCARD | END:VCARD | |||
| { | { | |||
| "@type": "Card", | ||||
| ... | ... | |||
| "online":{ | "online":{ | |||
| ... | ... | |||
| "a-logo":{ | "a-logo":{ | |||
| "type": "uri", | "@type": "Resource", | |||
| "label": "logo", | "type": "logo", | |||
| "resource": "http://www.example.com/pub/logos/abccorp.jpg" | "resource": "http://www.example.com/pub/logos/abccorp.jpg" | |||
| }, | }, | |||
| ... | ... | |||
| }, | }, | |||
| ... | ... | |||
| } | } | |||
| Figure 12: LOGO mapping example | Figure 12: LOGO mapping example | |||
| 2.8.3. ORG | 2.8.3. ORG | |||
| skipping to change at page 21, line 13 ¶ | skipping to change at page 23, line 13 ¶ | |||
| as defined in Section 2.1. | as defined in Section 2.1. | |||
| BEGIN:VCARD | BEGIN:VCARD | |||
| VERSION:4.0 | VERSION:4.0 | |||
| ... | ... | |||
| ORG:ABC\, Inc.;North American Division;Marketing | ORG:ABC\, Inc.;North American Division;Marketing | |||
| ... | ... | |||
| END:VCARD | END:VCARD | |||
| { | { | |||
| "@type": "Card", | ||||
| ... | ... | |||
| "organizations":{ | "organizations":{ | |||
| "an-organization":{ | "an-organization":{ | |||
| "name":{ "value": "ABC, Inc." }, | "@type": "Organization", | |||
| "name": "ABC, Inc.", | ||||
| "units":[ | "units":[ | |||
| { "value": "North American Division" }, | "North American Division", | |||
| { "value": "Marketing" } | "Marketing" | |||
| ] | ] | |||
| } | } | |||
| }, | }, | |||
| ... | ... | |||
| } | } | |||
| Figure 13: ORG mapping example | Figure 13: ORG mapping example | |||
| 2.8.4. MEMBER | 2.8.4. MEMBER | |||
| skipping to change at page 22, line 14 ¶ | skipping to change at page 24, line 14 ¶ | |||
| BEGIN:VCARD | BEGIN:VCARD | |||
| VERSION:4.0 | VERSION:4.0 | |||
| KIND:group | KIND:group | |||
| FN:The Doe family | FN:The Doe family | |||
| MEMBER:urn:uuid:03a0e51f-d1aa-4385-8a53-e29025acd8af | MEMBER:urn:uuid:03a0e51f-d1aa-4385-8a53-e29025acd8af | |||
| MEMBER:urn:uuid:b8767877-b4a1-4c70-9acc-505d3819e519 | MEMBER:urn:uuid:b8767877-b4a1-4c70-9acc-505d3819e519 | |||
| END:VCARD | END:VCARD | |||
| { | { | |||
| "@type": "CardGroup", | ||||
| "kind": "group", | "kind": "group", | |||
| "fullName":{ "value": "The Doe family" }, | "fullName": "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 14: Group example | Figure 14: Group example | |||
| Only if the GROUP contains properties that don't have a mapping to | Only if the GROUP contains properties that don't have a mapping to | |||
| CardGroup properties, then the CardGroup.card property MAY contain | CardGroup properties, then the CardGroup.card property MAY contain | |||
| the optional Card object of this group. | the optional Card object of this group. | |||
| { | { | |||
| "@type": "CardGroup", | ||||
| "name": "The Doe family", | "name": "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 | |||
| }, | }, | |||
| "card": { | "card": { | |||
| "fullName":{ "value": "The Doe family" }, | "@type": "Card", | |||
| "fullName": "The Doe family", | ||||
| "uid": "urn:uuid:ab4310aa-fa43-11e9-8f0b-362b9e155667", | "uid": "urn:uuid:ab4310aa-fa43-11e9-8f0b-362b9e155667", | |||
| "photos":{ | "photos":{ | |||
| "a-photo":{ | "a-photo":{ | |||
| "@type": "File", | ||||
| "href": "http://www.example.com/pub/photos/jqpublic.gif" | "href": "http://www.example.com/pub/photos/jqpublic.gif" | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| Figure 15: card member of CardGroup object | Figure 15: card member of CardGroup object | |||
| 2.8.5. RELATED | 2.8.5. RELATED | |||
| skipping to change at page 23, line 29 ¶ | skipping to change at page 25, line 29 ¶ | |||
| BEGIN:VCARD | BEGIN:VCARD | |||
| VERSION:4.0 | VERSION:4.0 | |||
| ... | ... | |||
| RELATED;TYPE=friend:urn:uuid:f81d4fae-7dec-11d0-a765-00a0c91e6bf6 | RELATED;TYPE=friend:urn:uuid:f81d4fae-7dec-11d0-a765-00a0c91e6bf6 | |||
| RELATED;TYPE=contact:http://example.com/directory/jdoe.vcf | RELATED;TYPE=contact:http://example.com/directory/jdoe.vcf | |||
| RELATED;VALUE=text:Please contact my assistant Jane Doe for any inquiries. | RELATED;VALUE=text:Please contact my assistant Jane Doe for any inquiries. | |||
| ... | ... | |||
| END:VCARD | END:VCARD | |||
| { | { | |||
| "@type": "Card", | ||||
| ... | ... | |||
| "relatedTo":{ | "relatedTo":{ | |||
| { | { | |||
| "@type": "Relation", | ||||
| "urn:uuid:f81d4fae-7dec-11d0-a765-00a0c91e6bf6":{ | "urn:uuid:f81d4fae-7dec-11d0-a765-00a0c91e6bf6":{ | |||
| "relation":{ "friend": true } | "relation":{ "friend": true } | |||
| } | } | |||
| }, | }, | |||
| { | { | |||
| "@type": "Relation", | ||||
| "http://example.com/directory/jdoe.vcf":{ | "http://example.com/directory/jdoe.vcf":{ | |||
| "relation":{ "contact": true } | "relation":{ "contact": true } | |||
| } | } | |||
| }, | }, | |||
| { | { | |||
| "@type": "Relation", | ||||
| "Please contact my assistant Jane Doe for any inquiries.":{ | "Please contact my assistant Jane Doe for any inquiries.":{ | |||
| "relation":{ } | "relation":{ } | |||
| } | } | |||
| } | } | |||
| }, | }, | |||
| ... | ... | |||
| } | } | |||
| Figure 16: RELATED mapping example | Figure 16: RELATED mapping example | |||
| 2.8.6. CONTACT-URI | 2.8.6. CONTACT-URI | |||
| A CONTACT-URI property as defined in [RFC8605] is represented as an | A CONTACT-URI property as defined in [RFC8605] is represented as an | |||
| entry of the "online" map (Figure 17). The entry value is a | entry of the "online" map (Figure 17). The entry value is a | |||
| "Resource" object whose "type" member is set to "uri", the "label" | "Resource" object whose "type" member is set to "contact" and the | |||
| member is set to "contact-uri" and the "resource" member is the | "resource" member is the CONTACT-URI value. | |||
| CONTACT-URI value. | ||||
| The PREF and TYPE parameters are mapped according to the rules as | The PREF and TYPE parameters are mapped according to the rules as | |||
| defined in Section 2.1. | defined in Section 2.1. | |||
| BEGIN:VCARD | BEGIN:VCARD | |||
| VERSION:4.0 | VERSION:4.0 | |||
| ... | ... | |||
| CONTACT-URI;PREF=1:mailto:contact@example.com | CONTACT-URI;PREF=1:mailto:contact@example.com | |||
| ... | ... | |||
| END:VCARD | END:VCARD | |||
| { | { | |||
| "@type": "Card", | ||||
| ... | ... | |||
| "online":{ | "online":{ | |||
| ... | ... | |||
| "a-contact-uri":{ | "a-contact-uri":{ | |||
| "type": "uri", | "@type": "Resource", | |||
| "label": "contact-uri", | "type": "contact", | |||
| "resource": "mailto:contact@example.com", | "resource": "mailto:contact@example.com", | |||
| "pref": 1 | "pref": 1 | |||
| }, | }, | |||
| ... | ... | |||
| }, | }, | |||
| ... | ... | |||
| } | } | |||
| Figure 17: CONTACT-URI mapping example | Figure 17: CONTACT-URI mapping example | |||
| skipping to change at page 25, line 23 ¶ | skipping to change at page 27, line 23 ¶ | |||
| BEGIN:VCARD | BEGIN:VCARD | |||
| VERSION:4.0 | VERSION:4.0 | |||
| ... | ... | |||
| 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 | |||
| ... | ... | |||
| END:VCARD | END:VCARD | |||
| { | { | |||
| "@type": "Card", | ||||
| ... | ... | |||
| "personalInfo":{ | "personalInfo":{ | |||
| ... | ... | |||
| "PERSINFO-1" : { | "PERSINFO-1" : { | |||
| "@type": "PersonalInformation", | ||||
| "type": "expertise", | "type": "expertise", | |||
| "value": "chemistry", | "value": "chemistry", | |||
| "level": "high" | "level": "high" | |||
| }, | }, | |||
| "PERSINFO-2" : { | "PERSINFO-2" : { | |||
| "@type": "PersonalInformation", | ||||
| "type": "expertise", | "type": "expertise", | |||
| "value": "chinese literature", | "value": "chinese literature", | |||
| "level": "low" | "level": "low" | |||
| }, | }, | |||
| ... | ... | |||
| }, | }, | |||
| ... | ... | |||
| } | } | |||
| Figure 18: EXPERTISE mapping example | Figure 18: EXPERTISE mapping example | |||
| skipping to change at page 26, line 14 ¶ | skipping to change at page 28, line 17 ¶ | |||
| BEGIN:VCARD | BEGIN:VCARD | |||
| VERSION:4.0 | VERSION:4.0 | |||
| ... | ... | |||
| HOBBY;INDEX=1;LEVEL=high:reading | HOBBY;INDEX=1;LEVEL=high:reading | |||
| HOBBY;INDEX=2;LEVEL=high:sewing | HOBBY;INDEX=2;LEVEL=high:sewing | |||
| ... | ... | |||
| END:VCARD | END:VCARD | |||
| { | { | |||
| "@type": "Card", | ||||
| ... | ... | |||
| "personalInfo":{ | "personalInfo":{ | |||
| ... | ... | |||
| "PERSINFO-1" : { | "PERSINFO-1" : { | |||
| "@type": "PersonalInformation", | ||||
| "type": "hobby", | "type": "hobby", | |||
| "value": "reading", | "value": "reading", | |||
| "level": "high" | "level": "high" | |||
| }, | }, | |||
| "PERSINFO-2" : { | "PERSINFO-2" : { | |||
| "@type": "PersonalInformation", | ||||
| "type": "hobby", | "type": "hobby", | |||
| "value": "sewing", | "value": "sewing", | |||
| "level": "high" | "level": "high" | |||
| }, | }, | |||
| ... | ... | |||
| }, | }, | |||
| ... | ... | |||
| } | } | |||
| Figure 19: HOBBY mapping example | Figure 19: HOBBY mapping example | |||
| skipping to change at page 27, line 14 ¶ | skipping to change at page 29, line 14 ¶ | |||
| BEGIN:VCARD | BEGIN:VCARD | |||
| VERSION:4.0 | VERSION:4.0 | |||
| ... | ... | |||
| INTEREST;INDEX=1;LEVEL=medium:r&b music | INTEREST;INDEX=1;LEVEL=medium:r&b music | |||
| INTEREST;INDEX=2;LEVEL=high:rock ’n’ roll music | INTEREST;INDEX=2;LEVEL=high:rock ’n’ roll music | |||
| ... | ... | |||
| END:VCARD | END:VCARD | |||
| { | { | |||
| "@type": "Card", | ||||
| ... | ... | |||
| "personalInfo":{ | "personalInfo":{ | |||
| ... | ... | |||
| "PERSINFO-1" : { | "PERSINFO-1" : { | |||
| "@type": "PersonalInformation", | ||||
| "type": "interest", | "type": "interest", | |||
| "value": "r&b music", | "value": "r&b music", | |||
| "level": "medium" | "level": "medium" | |||
| }, | }, | |||
| "PERSINFO-2" : { | "PERSINFO-2" : { | |||
| "@type": "PersonalInformation", | ||||
| "type": "interest", | "type": "interest", | |||
| "value": "rock ’n’ roll music", | "value": "rock ’n’ roll music", | |||
| "level": "high" | "level": "high" | |||
| }, | }, | |||
| ... | ... | |||
| }, | }, | |||
| ... | ... | |||
| } | } | |||
| Figure 20: INTEREST mapping example | Figure 20: INTEREST mapping example | |||
| 2.9.4. ORG-DIRECTORY | 2.9.4. ORG-DIRECTORY | |||
| An ORG-DIRECTORY property is represented as an entry of the "online" | An ORG-DIRECTORY property as defined in [RFC6715] is represented as | |||
| map (Figure 21). The entry value is a "Resource" object whose "type" | an entry of the "online" map (Figure 21). The entry value is a | |||
| member is set to "uri", the "label" member is set to "org-directory" | "Resource" object whose "type" member is set to "directory" and the | |||
| and the "resource" member is the ORG-DIRECTORY value. | "resource" member is the ORG-DIRECTORY value. | |||
| The PREF and TYPE parameters are mapped according to the rules as | The PREF and TYPE parameters are mapped according to the rules as | |||
| defined in Section 2.1. | defined in Section 2.1. | |||
| The INDEX parameter is represented as the index of the directory | The INDEX parameter is represented as the index of the directory | |||
| among the online resources with the "org-directory" label. | among the online resources with the "directory" type. | |||
| BEGIN:VCARD | BEGIN:VCARD | |||
| VERSION:4.0 | VERSION:4.0 | |||
| ... | ... | |||
| ORG-DIRECTORY;INDEX=1:http://directory.mycompany.example.com | ORG-DIRECTORY;INDEX=1:http://directory.mycompany.example.com | |||
| ORG-DIRECTORY;PREF=1:ldap://ldap.tech.example/o=Example%20Tech,ou=Engineering | ORG-DIRECTORY;PREF=1:ldap://ldap.tech.example/o=Example%20Tech,ou=Engineering | |||
| ... | ... | |||
| END:VCARD | END:VCARD | |||
| { | { | |||
| ... | ... | |||
| "online":{ | "online":{ | |||
| "@type": "Card", | ||||
| ... | ... | |||
| "an-org-directory":{ | "an-org-directory":{ | |||
| "type": "uri", | "@type": "Resource", | |||
| "label": "org-directory", | "type": "directory", | |||
| "resource": "http://directory.mycompany.example.com" | "resource": "http://directory.mycompany.example.com" | |||
| }, | }, | |||
| "another-org-directory":{ | "another-org-directory":{ | |||
| "type": "uri", | "@type": "Resource", | |||
| "label": "org-directory", | "type": "directory", | |||
| "resource": "ldap://ldap.tech.example/o=Example%20Tech,ou=Engineering", | "resource": "ldap://ldap.tech.example/o=Example%20Tech,ou=Engineering", | |||
| "pref": 1 | "pref": 1 | |||
| }, | }, | |||
| ... | ... | |||
| }, | }, | |||
| ... | ... | |||
| } | } | |||
| Figure 21: ORG-DIRECTORY mapping example | Figure 21: ORG-DIRECTORY mapping example | |||
| skipping to change at page 29, line 13 ¶ | skipping to change at page 31, line 13 ¶ | |||
| and the map entries can be inserted by order of preference. | and the map entries can be inserted by order of preference. | |||
| BEGIN:VCARD | BEGIN:VCARD | |||
| VERSION:4.0 | VERSION:4.0 | |||
| ... | ... | |||
| CATEGORIES:INTERNET,IETF,INDUSTRY,INFORMATION TECHNOLOGY | CATEGORIES:INTERNET,IETF,INDUSTRY,INFORMATION TECHNOLOGY | |||
| ... | ... | |||
| END:VCARD | END:VCARD | |||
| { | { | |||
| "@type": "Card", | ||||
| ... | ... | |||
| "categories":{ | "categories":{ | |||
| "INTERNET": true, | "INTERNET": true, | |||
| "IETF": true, | "IETF": true, | |||
| "INDUSTRY": true, | "INDUSTRY": true, | |||
| "INFORMATION TECHNOLOGY": true | "INFORMATION TECHNOLOGY": true | |||
| }, | }, | |||
| ... | ... | |||
| } | } | |||
| skipping to change at page 29, line 42 ¶ | skipping to change at page 31, line 43 ¶ | |||
| as defined in Section 2.1. | as defined in Section 2.1. | |||
| BEGIN:VCARD | BEGIN:VCARD | |||
| VERSION:4.0 | VERSION:4.0 | |||
| ... | ... | |||
| NOTE:This fax number is operational 0800 to 1715 EST\, Mon-Fri. | NOTE:This fax number is operational 0800 to 1715 EST\, Mon-Fri. | |||
| ... | ... | |||
| END:VCARD | END:VCARD | |||
| { | { | |||
| "@type": "Card", | ||||
| ... | ... | |||
| "notes": { | "notes": "This fax number is operational 0800 to 1715 EST, Mon-Fri.", | |||
| "value": "This fax number is operational 0800 to 1715 EST, Mon-Fri." | ||||
| }, | ||||
| ... | ... | |||
| } | } | |||
| Figure 23: NOTE mapping example | Figure 23: NOTE mapping example | |||
| 2.10.3. PRODID | 2.10.3. PRODID | |||
| The PRODID property is converted into the "prodId" member | The PRODID property is converted into the "prodId" member | |||
| (Figure 24). | (Figure 24). | |||
| BEGIN:VCARD | BEGIN:VCARD | |||
| VERSION:4.0 | VERSION:4.0 | |||
| ... | ... | |||
| PRODID:-//ONLINE DIRECTORY//NONSGML Version 1//EN | PRODID:-//ONLINE DIRECTORY//NONSGML Version 1//EN | |||
| ... | ... | |||
| END:VCARD | END:VCARD | |||
| { | { | |||
| "@type": "Card", | ||||
| ... | ... | |||
| "prodId": "-//ONLINE DIRECTORY//NONSGML Version 1//EN", | "prodId": "-//ONLINE DIRECTORY//NONSGML Version 1//EN", | |||
| ... | ... | |||
| } | } | |||
| Figure 24: PRODID mapping example | Figure 24: PRODID mapping example | |||
| 2.10.4. REV | 2.10.4. REV | |||
| The REV property is transformed into the "updated" member | The REV property is transformed into the "updated" member | |||
| (Figure 25). | (Figure 25). | |||
| BEGIN:VCARD | BEGIN:VCARD | |||
| VERSION:4.0 | VERSION:4.0 | |||
| ... | ... | |||
| REV:19951031T222710Z | REV:19951031T222710Z | |||
| ... | ... | |||
| END:VCARD | END:VCARD | |||
| { | { | |||
| "@type": "Card", | ||||
| ... | ... | |||
| "updated": "1995-10-31T22:27:10Z", | "updated": "1995-10-31T22:27:10Z", | |||
| ... | ... | |||
| } | } | |||
| Figure 25: REV mapping example | Figure 25: REV mapping example | |||
| 2.10.5. SOUND | 2.10.5. SOUND | |||
| A SOUND property is represented as an entry of the "online" map | A SOUND property is represented as an entry of the "online" map | |||
| (Figure 26). The entry value is a "Resource" object whose "type" | (Figure 26). The entry value is a "Resource" object whose "type" | |||
| member is set to "uri", the "label" member is set to "sound" and the | member is set to "audio" and the "resource" member is the SOUND | |||
| "resource" member is the SOUND value. | value. | |||
| The PREF and TYPE parameters are mapped according to the rules as | The PREF and TYPE parameters are mapped according to the rules as | |||
| defined in Section 2.1. | defined in Section 2.1. | |||
| BEGIN:VCARD | BEGIN:VCARD | |||
| VERSION:4.0 | VERSION:4.0 | |||
| ... | ... | |||
| SOUND:CID:JOHNQPUBLIC.part8.19960229T080000.xyzMail@example.com | SOUND:CID:JOHNQPUBLIC.part8.19960229T080000.xyzMail@example.com | |||
| ... | ... | |||
| END:VCARD | END:VCARD | |||
| { | { | |||
| "@type": "Card", | ||||
| ... | ... | |||
| "online":{ | "online":{ | |||
| ... | ... | |||
| "a-sound":{ | "a-sound":{ | |||
| "type": "uri", | "@type": "Resource", | |||
| "label": "sound", | "type": "audio", | |||
| "resource": "CID:JOHNQPUBLIC.part8.19960229T080000.xyzMail@example.com" | "resource": "CID:JOHNQPUBLIC.part8.19960229T080000.xyzMail@example.com" | |||
| }, | }, | |||
| ... | ... | |||
| }, | }, | |||
| ... | ... | |||
| } | } | |||
| Figure 26: SOUND mapping example | Figure 26: SOUND mapping example | |||
| 2.10.6. UID | 2.10.6. UID | |||
| skipping to change at page 31, line 44 ¶ | skipping to change at page 33, line 45 ¶ | |||
| both Card and CardGroup. | both Card and CardGroup. | |||
| BEGIN:VCARD | BEGIN:VCARD | |||
| VERSION:4.0 | VERSION:4.0 | |||
| ... | ... | |||
| UID:urn:uuid:f81d4fae-7dec-11d0-a765-00a0c91e6bf6 | UID:urn:uuid:f81d4fae-7dec-11d0-a765-00a0c91e6bf6 | |||
| ... | ... | |||
| END:VCARD | END:VCARD | |||
| { | { | |||
| "@type": "Card", | ||||
| ... | ... | |||
| "uid": "urn:uuid:f81d4fae-7dec-11d0-a765-00a0c91e6bf6", | "uid": "urn:uuid:f81d4fae-7dec-11d0-a765-00a0c91e6bf6", | |||
| ... | ... | |||
| } | } | |||
| Figure 27: UID mapping example | Figure 27: UID mapping example | |||
| 2.10.7. CLIENTPIDMAP and PID Parameter | 2.10.7. CLIENTPIDMAP and PID Parameter | |||
| The CLIENTPIDMAP property and the PDI parameter don't have a direct | The CLIENTPIDMAP property and the PDI parameter don't have a direct | |||
| match with a Card feature. | match with a Card feature. | |||
| 2.10.8. URL | 2.10.8. URL | |||
| An URL property is represented as an entry of the "online" map | An URL property is represented as an entry of the "online" map | |||
| (Figure 28). The entry value is a "Resource" object whose "type" | (Figure 28). The entry value is a "Resource" object whose "type" | |||
| member is set to "uri", the "label" member is set to "url" and the | member is set to "uri" and the "resource" member is the URL value. | |||
| "resource" member is the URL value. | ||||
| The PREF and TYPE parameters are mapped according to the rules as | The PREF and TYPE parameters are mapped according to the rules as | |||
| defined in Section 2.1. | defined in Section 2.1. | |||
| BEGIN:VCARD | BEGIN:VCARD | |||
| VERSION:4.0 | VERSION:4.0 | |||
| ... | ... | |||
| URL:http://example.org/restaurant.french/~chezchic.html | URL:http://example.org/restaurant.french/~chezchic.html | |||
| ... | ... | |||
| END:VCARD | END:VCARD | |||
| { | { | |||
| "@type": "Card", | ||||
| ... | ... | |||
| "online":{ | "online":{ | |||
| ... | ... | |||
| "an-url":{ | "an-url":{ | |||
| "@type": "Resource", | ||||
| "type": "uri", | "type": "uri", | |||
| "label": "url", | ||||
| "resource": "http://example.org/restaurant.french/~chezchic.html" | "resource": "http://example.org/restaurant.french/~chezchic.html" | |||
| }, | }, | |||
| ... | ... | |||
| }, | }, | |||
| ... | ... | |||
| } | } | |||
| Figure 28: URL mapping example | Figure 28: URL mapping example | |||
| 2.10.9. VERSION | 2.10.9. VERSION | |||
| The VERSION property doesn't have a direct match with a JSContact | The VERSION property doesn't have a direct match with a JSContact | |||
| feature. | feature. | |||
| 2.11. Security Properties | 2.11. Security Properties | |||
| 2.11.1. KEY | 2.11.1. KEY | |||
| A KEY property is represented as an entry of the "online" map | A KEY property is represented as an entry of the "online" map | |||
| (Figure 29). The entry value is a "Resource" object whose "type" | (Figure 29). The entry value is a "Resource" object whose "type" | |||
| member is set to "uri", the "label" member is set to "key" and the | member is set to "publicKey" and the "resource" member is the KEY | |||
| "resource" member is the KEY value. | value. | |||
| The PREF and TYPE parameters are mapped according to the rules as | The PREF and TYPE parameters are mapped according to the rules as | |||
| defined in Section 2.1. | defined in Section 2.1. | |||
| BEGIN:VCARD | BEGIN:VCARD | |||
| VERSION:4.0 | VERSION:4.0 | |||
| ... | ... | |||
| KEY:http://www.example.com/keys/jdoe.cer | KEY:http://www.example.com/keys/jdoe.cer | |||
| ... | ... | |||
| END:VCARD | END:VCARD | |||
| { | { | |||
| "@type": "Card", | ||||
| ... | ... | |||
| "online":{ | "online":{ | |||
| ... | ... | |||
| "a-key":{ | "a-key":{ | |||
| "type": "uri", | "@type": "Resource", | |||
| "label": "key", | "type": "publicKey", | |||
| "resource": "http://www.example.com/keys/jdoe.cer" | "resource": "http://www.example.com/keys/jdoe.cer" | |||
| }, | }, | |||
| ... | ... | |||
| }, | }, | |||
| ... | ... | |||
| } | } | |||
| Figure 29: KEY mapping example | Figure 29: KEY mapping example | |||
| 2.12. Calendar Properties | 2.12. Calendar Properties | |||
| 2.12.1. FBURL | 2.12.1. FBURL | |||
| An FBURL property is represented as an entry of the "online" map | An FBURL property is represented as an entry of the "online" map | |||
| (Figure 30). The entry value is a "Resource" object whose "type" | (Figure 30). The entry value is a "Resource" object whose "type" | |||
| member is set to "uri", the "label" member is set to "fburl" and the | member is set to "freeBusy" and the "resource" member is the FBURL | |||
| "resource" member is the FBURL value. | value. | |||
| The PREF and TYPE parameters are mapped according to the rules as | The PREF and TYPE parameters are mapped according to the rules as | |||
| defined in Section 2.1. | defined in Section 2.1. | |||
| BEGIN:VCARD | BEGIN:VCARD | |||
| VERSION:4.0 | VERSION:4.0 | |||
| ... | ... | |||
| FBURL;PREF=1:http://www.example.com/busy/janedoe | FBURL;PREF=1:http://www.example.com/busy/janedoe | |||
| FBURL;MEDIATYPE=text/calendar:ftp://example.com/busy/project-a.ifb | FBURL;MEDIATYPE=text/calendar:ftp://example.com/busy/project-a.ifb | |||
| ... | ... | |||
| END:VCARD | END:VCARD | |||
| { | { | |||
| "@type": "Card", | ||||
| ... | ... | |||
| "online":{ | "online":{ | |||
| ... | ... | |||
| "an-fburl":{ | "an-fburl":{ | |||
| "type": "uri", | "@type": "Resource", | |||
| "label": "fburl", | "type": "freeBusy", | |||
| "resource": "http://www.example.com/busy/janedoe", | "resource": "http://www.example.com/busy/janedoe", | |||
| "pref": 1 | "pref": 1 | |||
| }, | }, | |||
| "another-fburl":{ | "another-fburl":{ | |||
| "type": "uri", | "@type": "Resource", | |||
| "label": "fburl", | "type": "freeBusy", | |||
| "resource": "ftp://example.com/busy/project-a.ifb", | "resource": "ftp://example.com/busy/project-a.ifb", | |||
| "mediaType": "text/calendar" | "mediaType": "text/calendar" | |||
| }, | }, | |||
| ... | ... | |||
| }, | }, | |||
| ... | ... | |||
| } | } | |||
| Figure 30: FBURL mapping example | Figure 30: FBURL mapping example | |||
| 2.12.2. CALADRURI | 2.12.2. CALADRURI | |||
| A CALADRURI property is represented as an entry of the "online" map | A CALADRURI property is represented as an entry of the "scheduling" | |||
| (Figure 31). The entry value is a "Resource" object whose "type" | map (Figure 31). The entry value is a "Scheduling" object whose | |||
| member is set to "uri", the "label" member is set to "caladruri" and | "sendTo" map includes an entry whose key is set to "imip" and value | |||
| the "resource" member is the CALADRURI value. | is set to the CALADRURI value. | |||
| The PREF and TYPE parameters are mapped according to the rules as | The PREF parameter is mapped according to the rules as defined in | |||
| defined in Section 2.1. | Section 2.1. | |||
| BEGIN:VCARD | BEGIN:VCARD | |||
| VERSION:4.0 | VERSION:4.0 | |||
| ... | ... | |||
| CALADRURI;PREF=1:mailto:janedoe@example.com | CALADRURI;PREF=1:mailto:janedoe@example.com | |||
| CALADRURI:http://example.com/calendar/jdoe | CALADRURI:http://example.com/calendar/jdoe | |||
| ... | ... | |||
| END:VCARD | END:VCARD | |||
| { | { | |||
| "@type": "Card", | ||||
| ... | ... | |||
| "online":{ | "scheduling":{ | |||
| ... | ... | |||
| "a-caladruri":{ | "a-caladruri":{ | |||
| "type": "uri", | "@type": "Scheduling", | |||
| "label": "caladruri", | "sendTo": { | |||
| "resource": "mailto:janedoe@example.com", | "imip": "mailto:janedoe@example.com" | |||
| }, | ||||
| "pref": 1 | "pref": 1 | |||
| }, | }, | |||
| "another-caladruri":{ | "another-caladruri":{ | |||
| "type": "uri", | "@type": "Scheduling", | |||
| "label": "caladruri", | "sendTo": { | |||
| "resource": "http://example.com/calendar/jdoe" | "imip": "http://example.com/calendar/jdoe" | |||
| } | ||||
| }, | }, | |||
| ... | ... | |||
| }, | }, | |||
| ... | ... | |||
| } | } | |||
| Figure 31: CALADRURI mapping example | Figure 31: CALADRURI mapping example | |||
| 2.12.3. CALURI | 2.12.3. CALURI | |||
| A CALURI property is represented as an entry of the "online" map | A CALURI property is represented as an entry of the "online" map | |||
| (Figure 32). The entry value is a "Resource" object whose "type" | (Figure 32). The entry value is a "Resource" object whose "type" | |||
| member is set to "uri", the "label" member is set to "caluri" and the | member is set to "calendar" and the "resource" member is the CALURI | |||
| "resource" member is the CALURI value. | value. | |||
| The PREF and TYPE parameters are mapped according to the rules as | The PREF and TYPE parameters are mapped according to the rules as | |||
| defined in Section 2.1. | defined in Section 2.1. | |||
| BEGIN:VCARD | BEGIN:VCARD | |||
| VERSION:4.0 | VERSION:4.0 | |||
| ... | ... | |||
| CALURI;PREF=1:http://cal.example.com/calA | CALURI;PREF=1:http://cal.example.com/calA | |||
| CALURI;MEDIATYPE=text/calendar:ftp://ftp.example.com/calA.ics | CALURI;MEDIATYPE=text/calendar:ftp://ftp.example.com/calA.ics | |||
| ... | ... | |||
| END:VCARD | END:VCARD | |||
| { | { | |||
| "@type": "Card", | ||||
| ... | ... | |||
| "online":{ | "online":{ | |||
| ... | ... | |||
| "a-caluri":{ | "a-caluri":{ | |||
| "type": "uri", | "@type": "Resource", | |||
| "label": "caluri", | "type": "calendar", | |||
| "resource": "http://cal.example.com/calA", | "resource": "http://cal.example.com/calA", | |||
| "pref": 1 | "pref": 1 | |||
| }, | }, | |||
| "another-caluri":{ | "another-caluri":{ | |||
| "type": "uri", | "@type": "Resource", | |||
| "label": "caluri", | "type": "calendar", | |||
| "resource": "ftp://ftp.example.com/calA.ics", | "resource": "ftp://ftp.example.com/calA.ics", | |||
| "mediaType": "text/calendar" | "mediaType": "text/calendar" | |||
| }, | }, | |||
| ... | ... | |||
| }, | }, | |||
| ... | ... | |||
| } | } | |||
| Figure 32: CALURI mapping example | Figure 32: CALURI mapping example | |||
| skipping to change at page 38, line 22 ¶ | skipping to change at page 40, line 22 ¶ | |||
| The "titles" property contains information about the job, the | The "titles" property contains information about the job, the | |||
| position or the role of the entity the card represents. In vCard, | position or the role of the entity the card represents. In vCard, | |||
| such information is split into the TITLE and the ROLE properties. | such information is split into the TITLE and the ROLE properties. | |||
| This specification defines TITLE as the default target property when | This specification defines TITLE as the default target property when | |||
| converting the "titles" property. | converting the "titles" property. | |||
| 3.5.2. Resource | 3.5.2. Resource | |||
| The "online" property includes resources that are usually represented | The "online" property includes resources that are usually represented | |||
| through different vCard properties. The matched vCard property of a | through different vCard properties. The matched vCard property of a | |||
| "Resource" object can be derived from the value of its "label" | "Resource" object can be derived from the value of its "type" member. | |||
| member. | ||||
| Any resource included in the "online" map that doesn't match a vCard | Any resource included in the "online" map that doesn't match a vCard | |||
| property MAY be converted into a vCard extended property. | property MAY be converted into a vCard extended property. | |||
| 3.6. CardGroup | 3.6. CardGroup | |||
| A CardGroup object is converted into a vCard by merging its | A CardGroup object is converted into a vCard by merging its | |||
| properties with the properties of "CardGroup.card" object. If the | properties with the properties of "CardGroup.card" object. If the | |||
| "CardGroup.card.fullName" property exists, it MUST be used to set the | "CardGroup.card.fullName" property exists, it MUST be used to set the | |||
| FN value. | FN value. | |||
| skipping to change at page 41, line 5 ¶ | skipping to change at page 43, line 5 ¶ | |||
| RFC 7942, DOI 10.17487/RFC7942, July 2016, | RFC 7942, DOI 10.17487/RFC7942, July 2016, | |||
| <https://www.rfc-editor.org/info/rfc7942>. | <https://www.rfc-editor.org/info/rfc7942>. | |||
| [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>. | |||
| 7.2. Informative References | 7.2. Informative References | |||
| [draft-ietf-calext-jscontact] | [I-D.ietf-calext-jscontact] | |||
| "JSContact: A JSON representation of contact data", | Stepanek, R. and M. Loffredo, "JSContact: A JSON | |||
| <https://datatracker.ietf.org/doc/draft-ietf-calext- | representation of contact data", Work in Progress, | |||
| jscontact/>. | Internet-Draft, draft-ietf-calext-jscontact-00, 17 January | |||
| 2020, <https://www.ietf.org/archive/id/draft-ietf-calext- | ||||
| jscontact-00.txt>. | ||||
| [time-zones] | [time-zones] | |||
| "Time Zone Database", <https://www.iana.org/time-zones>. | "Time Zone Database", <https://www.iana.org/time-zones>. | |||
| [uri-schemes] | [uri-schemes] | |||
| "Uniform Resource Identifier (URI) Schemes", | "Uniform Resource Identifier (URI) Schemes", | |||
| <https://www.iana.org/assignments/uri-schemes/uri- | <https://www.iana.org/assignments/uri-schemes/uri- | |||
| schemes.xhtml>. | schemes.xhtml>. | |||
| Authors' Addresses | Authors' Addresses | |||
| End of changes. 111 change blocks. | ||||
| 225 lines changed or deleted | 277 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ | ||||