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