draft-ietf-jmap-jscontact-vcard-05.txt   draft-ietf-jmap-jscontact-vcard-06.txt 
jmap M. Loffredo jmap 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: December 12, 2021 FastMail Expires: January 13, 2022 FastMail
June 10, 2021 July 12, 2021
JSContact: Converting from and to vCard JSContact: Converting from and to vCard
draft-ietf-jmap-jscontact-vcard-05 draft-ietf-jmap-jscontact-vcard-06
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-jmap-jscontact] specification from and in the JSContact [draft-ietf-jmap-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
skipping to change at page 1, line 33 skipping to change at page 1, line 33
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 December 12, 2021. This Internet-Draft will expire on January 13, 2022.
Copyright Notice Copyright Notice
Copyright (c) 2021 IETF Trust and the persons identified as the Copyright (c) 2021 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 Provisions Relating to IETF Documents
(https://trustee.ietf.org/license-info) in effect on the date of (https://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents publication of this document. Please review these documents
skipping to change at page 2, line 35 skipping to change at page 2, line 35
2.4.5. GENDER . . . . . . . . . . . . . . . . . . . . . . . 11 2.4.5. GENDER . . . . . . . . . . . . . . . . . . . . . . . 11
2.5. Delivery Addressing Properties . . . . . . . . . . . . . 11 2.5. Delivery Addressing Properties . . . . . . . . . . . . . 11
2.5.1. ADR . . . . . . . . . . . . . . . . . . . . . . . . . 11 2.5.1. ADR . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.6. Communications Properties . . . . . . . . . . . . . . . . 14 2.6. Communications Properties . . . . . . . . . . . . . . . . 14
2.6.1. TEL . . . . . . . . . . . . . . . . . . . . . . . . . 14 2.6.1. TEL . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.6.2. EMAIL . . . . . . . . . . . . . . . . . . . . . . . . 14 2.6.2. EMAIL . . . . . . . . . . . . . . . . . . . . . . . . 14
2.6.3. IMPP . . . . . . . . . . . . . . . . . . . . . . . . 15 2.6.3. IMPP . . . . . . . . . . . . . . . . . . . . . . . . 15
2.6.4. LANG . . . . . . . . . . . . . . . . . . . . . . . . 16 2.6.4. LANG . . . . . . . . . . . . . . . . . . . . . . . . 16
2.7. Geographical Properties . . . . . . . . . . . . . . . . . 17 2.7. Geographical Properties . . . . . . . . . . . . . . . . . 17
2.7.1. Time Zone Representation . . . . . . . . . . . . . . 18 2.7.1. Time Zone Representation . . . . . . . . . . . . . . 18
2.8. Organizational Properties . . . . . . . . . . . . . . . . 18 2.8. Organizational Properties . . . . . . . . . . . . . . . . 19
2.8.1. TITLE and ROLE . . . . . . . . . . . . . . . . . . . 18 2.8.1. TITLE and ROLE . . . . . . . . . . . . . . . . . . . 19
2.8.2. LOGO . . . . . . . . . . . . . . . . . . . . . . . . 19 2.8.2. LOGO . . . . . . . . . . . . . . . . . . . . . . . . 20
2.8.3. ORG . . . . . . . . . . . . . . . . . . . . . . . . . 20 2.8.3. ORG . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.8.4. MEMBER . . . . . . . . . . . . . . . . . . . . . . . 21 2.8.4. MEMBER . . . . . . . . . . . . . . . . . . . . . . . 22
2.8.5. RELATED . . . . . . . . . . . . . . . . . . . . . . . 23 2.8.5. RELATED . . . . . . . . . . . . . . . . . . . . . . . 24
2.8.6. CONTACT-URI . . . . . . . . . . . . . . . . . . . . . 24 2.8.6. CONTACT-URI . . . . . . . . . . . . . . . . . . . . . 25
2.9. Personal Information Properties . . . . . . . . . . . . . 24 2.9. Personal Information Properties . . . . . . . . . . . . . 25
2.9.1. EXPERTISE . . . . . . . . . . . . . . . . . . . . . . 25 2.9.1. EXPERTISE . . . . . . . . . . . . . . . . . . . . . . 26
2.9.2. HOBBY . . . . . . . . . . . . . . . . . . . . . . . . 25 2.9.2. HOBBY . . . . . . . . . . . . . . . . . . . . . . . . 26
2.9.3. INTEREST . . . . . . . . . . . . . . . . . . . . . . 26 2.9.3. INTEREST . . . . . . . . . . . . . . . . . . . . . . 27
2.9.4. ORG-DIRECTORY . . . . . . . . . . . . . . . . . . . . 27 2.9.4. ORG-DIRECTORY . . . . . . . . . . . . . . . . . . . . 28
2.10. Explanatory Properties . . . . . . . . . . . . . . . . . 28 2.10. Explanatory Properties . . . . . . . . . . . . . . . . . 29
2.10.1. CATEGORIES . . . . . . . . . . . . . . . . . . . . . 28 2.10.1. CATEGORIES . . . . . . . . . . . . . . . . . . . . . 29
2.10.2. NOTE . . . . . . . . . . . . . . . . . . . . . . . . 29 2.10.2. NOTE . . . . . . . . . . . . . . . . . . . . . . . . 30
2.10.3. PRODID . . . . . . . . . . . . . . . . . . . . . . . 30 2.10.3. PRODID . . . . . . . . . . . . . . . . . . . . . . . 31
2.10.4. REV . . . . . . . . . . . . . . . . . . . . . . . . 30 2.10.4. REV . . . . . . . . . . . . . . . . . . . . . . . . 31
2.10.5. SOUND . . . . . . . . . . . . . . . . . . . . . . . 30 2.10.5. SOUND . . . . . . . . . . . . . . . . . . . . . . . 31
2.10.6. UID . . . . . . . . . . . . . . . . . . . . . . . . 31 2.10.6. UID . . . . . . . . . . . . . . . . . . . . . . . . 32
2.10.7. CLIENTPIDMAP and PID Parameter . . . . . . . . . . . 32 2.10.7. CLIENTPIDMAP and PID Parameter . . . . . . . . . . . 33
2.10.8. URL . . . . . . . . . . . . . . . . . . . . . . . . 32 2.10.8. URL . . . . . . . . . . . . . . . . . . . . . . . . 33
2.10.9. VERSION . . . . . . . . . . . . . . . . . . . . . . 32 2.10.9. VERSION . . . . . . . . . . . . . . . . . . . . . . 33
2.11. Security Properties . . . . . . . . . . . . . . . . . . . 32 2.11. Security Properties . . . . . . . . . . . . . . . . . . . 33
2.11.1. KEY . . . . . . . . . . . . . . . . . . . . . . . . 33 2.11.1. KEY . . . . . . . . . . . . . . . . . . . . . . . . 34
2.12. Calendar Properties . . . . . . . . . . . . . . . . . . . 33 2.12. Calendar Properties . . . . . . . . . . . . . . . . . . . 34
2.12.1. FBURL . . . . . . . . . . . . . . . . . . . . . . . 33 2.12.1. FBURL . . . . . . . . . . . . . . . . . . . . . . . 34
2.12.2. CALADRURI . . . . . . . . . . . . . . . . . . . . . 34 2.12.2. CALADRURI . . . . . . . . . . . . . . . . . . . . . 35
2.12.3. CALURI . . . . . . . . . . . . . . . . . . . . . . . 35 2.12.3. CALURI . . . . . . . . . . . . . . . . . . . . . . . 36
2.13. vCard Unmatched Properties . . . . . . . . . . . . . . . 36 2.13. vCard Unmatched Properties . . . . . . . . . . . . . . . 37
2.14. Card Required Properties . . . . . . . . . . . . . . . . 36 2.14. Card Required Properties . . . . . . . . . . . . . . . . 37
3. Translating JSContact properties to vCard . . . . . . . . . . 37 3. Translating JSContact properties to vCard . . . . . . . . . . 38
3.1. Id . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 3.1. Id . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
3.2. Localizations . . . . . . . . . . . . . . . . . . . . . . 37 3.2. Localizations . . . . . . . . . . . . . . . . . . . . . . 38
3.3. Date and Time Representations . . . . . . . . . . . . . . 37 3.3. Date and Time Representations . . . . . . . . . . . . . . 38
3.4. Time Zone . . . . . . . . . . . . . . . . . . . . . . . . 37 3.4. Time Zone . . . . . . . . . . . . . . . . . . . . . . . . 38
3.5. JSContact Types Matching Multiple vCard Properties . . . 38 3.5. JSContact Types Matching Multiple vCard Properties . . . 39
3.5.1. Title . . . . . . . . . . . . . . . . . . . . . . . . 38 3.5.1. Title . . . . . . . . . . . . . . . . . . . . . . . . 39
3.5.2. Resource . . . . . . . . . . . . . . . . . . . . . . 38 3.5.2. Resource . . . . . . . . . . . . . . . . . . . . . . 39
3.6. CardGroup . . . . . . . . . . . . . . . . . . . . . . . . 38 3.6. CardGroup . . . . . . . . . . . . . . . . . . . . . . . . 39
3.7. Card Unmatched Properties . . . . . . . . . . . . . . . . 38 3.7. Card Unmatched Properties . . . . . . . . . . . . . . . . 39
3.8. vCard Required Properties . . . . . . . . . . . . . . . . 38 3.8. vCard Required Properties . . . . . . . . . . . . . . . . 39
4. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 38 4. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 39
5. Implementation Status . . . . . . . . . . . . . . . . . . . . 39 5. Implementation Status . . . . . . . . . . . . . . . . . . . . 40
5.1. CNR . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 5.1. CNR . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
6. Security Considerations . . . . . . . . . . . . . . . . . . . 39 6. Security Considerations . . . . . . . . . . . . . . . . . . . 40
7. References . . . . . . . . . . . . . . . . . . . . . . . . . 39 7. References . . . . . . . . . . . . . . . . . . . . . . . . . 40
7.1. Normative References . . . . . . . . . . . . . . . . . . 40 7.1. Normative References . . . . . . . . . . . . . . . . . . 41
7.2. Informative References . . . . . . . . . . . . . . . . . 41 7.2. Informative References . . . . . . . . . . . . . . . . . 42
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 41 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 42
1. Introduction 1. Introduction
1.1. Motivation 1.1. Motivation
The JSContact specification [draft-ietf-jmap-jscontact] has been The JSContact specification [draft-ietf-jmap-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].
skipping to change at page 18, line 14 skipping to change at page 18, line 14
2.7.1. Time Zone Representation 2.7.1. Time Zone Representation
As specified in Section 6.5.1 of [RFC6350], the time zone information As specified in Section 6.5.1 of [RFC6350], the time zone information
can be represented in three ways: as a time zone name, as a UTC can be represented in three ways: as a time zone name, as a UTC
offset or as a URI. offset or as a URI.
o If the TZ value is defined in the IANA timezone database, it is o If the TZ value is defined in the IANA timezone database, it is
directly matched by the "timeZone" member in JSContact. directly matched by the "timeZone" member in JSContact.
o An UTC offset MUST be converted into the related "Etc/GMT" time o An UTC offset with zero minutes MUST be converted into one its
zone (e.g. the value "-0500" converts to "Etc/GMT+5"). If the UTC equivalent IANA "Etc/GMT" time zone to set in the "timeZone"
offset value contains minutes information or is not an IANA property. For example, the value "-0500" converts to "Etc/GMT+5".
timezone name, it requires special handling. Implementations MUST make sure that such IANA timezone exists.
o Since there is no URI scheme defined for time zones [uri-schemes], o An UTC offset with non-zero minutes MAY be converted to a custom
any implementation that does use some a custom URI for a time zone "TimeZone" object in the JSContact "timeZones" property (see
is not interoperable anyway. In this case, if the URI corresponds example below).
to an IANA time zone [time-zones], this latter SHOULD be used.
Otherwise, the URI value is dumped into a string. o A non-IANA timezone name or URI MAY be converted to a custom
"TimeZone" object in the JSContact "timeZones" property. It is up
to the implementation to determine the time zone definition.
BEGIN:VCARD
VERSION:4.0
...
ADR;TZ=-0530:;;123 Main Street;Any Town;CA;91921-1234;U.S.A.
...
END:VCARD
{
...
"addresses": {
"addr1" : {
"timeZone": "/tz1"
...
}
},
"timeZones": {
"/tz1": {
"@type": "TimeZone",
"tzId": "TZ-0530",
"updated": "2021-06-07T14:24:45Z",
"standard": [{
"@type": "TimeZoneRule",
"offsetFrom": "-0530",
"offsetTo": "-0530",
"start": "1601-01-01T00:00:00"
}]
}
}
...
}
Figure 11: Mapping a TZ UTC offset value with non-zero minutes
2.8. Organizational Properties 2.8. Organizational Properties
2.8.1. TITLE and ROLE 2.8.1. TITLE and ROLE
Both TITLE and ROLE properties are represented as entries of the Both TITLE and ROLE properties are represented as entries of the
"titles" map (Figure 11). The entry value is a "Title" object whose "titles" map (Figure 12). The entry value is a "Title" object whose
"title" member includes information about the language. "title" member includes information about the language.
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). The "title.localizations" includes as defined in (Section 2.1). The "title.localizations" includes
possible language-dependent alternatives. possible language-dependent alternatives.
BEGIN:VCARD BEGIN:VCARD
VERSION:4.0 VERSION:4.0
... ...
TITLE:Research Scientist TITLE:Research Scientist
skipping to change at page 19, line 26 skipping to change at page 20, line 26
"a-title":{ "a-title":{
"title":{ "value" : "Project Leader" } "title":{ "value" : "Project Leader" }
}, },
"another-title":{ "another-title":{
"title":{ "value" : "Research Scientist" } "title":{ "value" : "Research Scientist" }
} }
}, },
... ...
} }
Figure 11: TITLE and ROLE mapping example Figure 12: 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 13). 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 "uri", the "label" 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
skipping to change at page 20, line 26 skipping to change at page 21, line 26
"a-logo":{ "a-logo":{
"type": "uri", "type": "uri",
"label": "logo", "label": "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 13: LOGO mapping example
2.8.3. ORG 2.8.3. ORG
An ORG property is represented as an entry of the "organizations" map An ORG property is represented as an entry of the "organizations" map
(Figure 13). The entry value is an "Organization" object whose (Figure 14). The entry value is an "Organization" object whose
"name" member contains the organizational name and the "units" member "name" member contains the organizational name and the "units" member
contains the organizational units. contains the organizational units.
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). The "localizations" maps for both as defined in (Section 2.1). The "localizations" maps for both
"name" and "units" include possible language-dependent alternatives. "name" and "units" include possible language-dependent alternatives.
BEGIN:VCARD BEGIN:VCARD
VERSION:4.0 VERSION:4.0
... ...
skipping to change at page 21, line 26 skipping to change at page 22, line 26
"name":{ "value": "ABC, Inc." }, "name":{ "value": "ABC, Inc." },
"units":[ "units":[
{ "value": "North American Division" }, { "value": "North American Division" },
{ "value": "Marketing" } { "value": "Marketing" }
] ]
} }
}, },
... ...
} }
Figure 13: ORG mapping example Figure 14: ORG mapping example
2.8.4. MEMBER 2.8.4. MEMBER
According to the JSContact specification, a group of contact cards is According to the JSContact specification, a group of contact cards is
represented through a CardGroup (Figure 14). The uids of the contact represented through a CardGroup (Figure 15). The uids of the contact
cards composing the group are included in the "members" map. cards composing the group are included in the "members" map.
In this case, the PREF parameter has not a JSContact counterpart; In this case, the PREF parameter has not a JSContact counterpart;
however, the implementers MAY insert the map entries by order of however, the implementers MAY insert the map entries by order of
preference. preference.
BEGIN:VCARD BEGIN:VCARD
VERSION:4.0 VERSION:4.0
KIND:group KIND:group
FN:The Doe family FN:The Doe family
skipping to change at page 22, line 23 skipping to change at page 23, line 23
{ {
"kind": "group", "kind": "group",
"fullName":{ "value": "The Doe family" }, "fullName":{ "value": "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 15: 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.
{ {
"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,
skipping to change at page 22, line 47 skipping to change at page 23, line 47
"fullName":{ "value": "The Doe family" }, "fullName":{ "value": "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":{
"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 16: card member of CardGroup object
2.8.5. RELATED 2.8.5. RELATED
All the RELATED instances are converted into the "relatedTo" map All the RELATED instances are converted into the "relatedTo" map
(Figure 16): an entry for each entity the entity described by the (Figure 17): an entry for each entity the entity described by the
Card is associated with. The map keys are the "uid" values of the Card is associated with. The map keys are the "uid" values of the
associated cards. associated cards.
Each map value is a "Relation" object including only the "relation" Each map value is a "Relation" object including only the "relation"
member represented as a set of the RELATED-specific values of the member represented as a set of the RELATED-specific values of the
TYPE parameter as defined in Section 6.6.6 of [RFC6350]. TYPE parameter as defined in Section 6.6.6 of [RFC6350].
If the relation type is unspecified, the "relation" member MUST be If the relation type is unspecified, the "relation" member MUST be
empty. empty.
skipping to change at page 23, line 50 skipping to change at page 24, line 50
}, },
{ {
"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 17: 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 18). The entry value is a
"Resource" object whose "type" member is set to "uri", the "label" "Resource" object whose "type" member is set to "uri", the "label"
member is set to "contact-uri" and the "resource" member is the member is set to "contact-uri" and 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
... ...
skipping to change at page 24, line 38 skipping to change at page 25, line 38
"type": "uri", "type": "uri",
"label": "contact-uri", "label": "contact-uri",
"resource": "mailto:contact@example.com", "resource": "mailto:contact@example.com",
"pref": 1 "pref": 1
}, },
... ...
}, },
... ...
} }
Figure 17: CONTACT-URI mapping example Figure 18: CONTACT-URI mapping example
2.9. Personal Information Properties 2.9. Personal Information Properties
The LEVEL parameter as defined in [RFC6715] is directly mapped to the The LEVEL parameter as defined in [RFC6715] is directly mapped to the
"level" property of the "PersonalInformation" type apart from when "level" property of the "PersonalInformation" type apart from when
LEVEL is used in the EXPERTISE property; in this case, the values are LEVEL is used in the EXPERTISE property; in this case, the values are
converted as in the following: converted as in the following:
o "beginner" is converted into "low"; o "beginner" is converted into "low";
o "average" is converted into "medium"; o "average" is converted into "medium";
o "expert" is converted into "high". o "expert" is converted into "high".
2.9.1. EXPERTISE 2.9.1. EXPERTISE
An EXPERTISE property as defined in [RFC6715] is represented as a An EXPERTISE property as defined in [RFC6715] is represented as a
"PersonalInformation" object in the "personalInfo" map (Figure 18). "PersonalInformation" object in the "personalInfo" map (Figure 19).
The "type" member is set to "expertise". The "type" member is set to "expertise".
The INDEX parameter is represented as the index of the expertise The INDEX parameter is represented as the index of the expertise
among the declared expertises. among the declared expertises.
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
skipping to change at page 25, line 41 skipping to change at page 26, line 41
"PERSINFO-2" : { "PERSINFO-2" : {
"type": "expertise", "type": "expertise",
"value": "chinese literature", "value": "chinese literature",
"level": "low" "level": "low"
}, },
... ...
}, },
... ...
} }
Figure 18: EXPERTISE mapping example Figure 19: EXPERTISE mapping example
2.9.2. HOBBY 2.9.2. HOBBY
A HOBBY property as defined in [RFC6715] is represented as a A HOBBY property as defined in [RFC6715] is represented as a
"PersonalInformation" object in the "personalInfo" map (Figure 19). "PersonalInformation" object in the "personalInfo" map (Figure 20).
The "type" member is set to "hobby". The "type" member is set to "hobby".
The INDEX parameter is represented as the index of the hobby among The INDEX parameter is represented as the index of the hobby among
the declared hobbies. the declared hobbies.
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
skipping to change at page 26, line 32 skipping to change at page 27, line 32
"PERSINFO-2" : { "PERSINFO-2" : {
"type": "hobby", "type": "hobby",
"value": "sewing", "value": "sewing",
"level": "high" "level": "high"
}, },
... ...
}, },
... ...
} }
Figure 19: HOBBY mapping example Figure 20: HOBBY mapping example
2.9.3. INTEREST 2.9.3. INTEREST
An INTEREST property as defined in [RFC6715] is represented as a An INTEREST property as defined in [RFC6715] is represented as a
"PersonalInformation" object in the "personalInfo" map (Figure 20). "PersonalInformation" object in the "personalInfo" map (Figure 21).
The "type" member is set to "interest". The "type" member is set to "interest".
The INDEX parameter is represented as the index of the interest among The INDEX parameter is represented as the index of the interest among
the declared interests. the declared interests.
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
skipping to change at page 27, line 32 skipping to change at page 28, line 32
"PERSINFO-2" : { "PERSINFO-2" : {
"type": "interest", "type": "interest",
"value": "rock 'n' roll music", "value": "rock 'n' roll music",
"level": "high" "level": "high"
}, },
... ...
}, },
... ...
} }
Figure 20: INTEREST mapping example Figure 21: 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 is represented as an entry of the "online"
map (Figure 21). The entry value is a "Resource" object whose "type" map (Figure 22). The entry value is a "Resource" object whose "type"
member is set to "uri", the "label" member is set to "org-directory" member is set to "uri", the "label" member is set to "org-directory"
and the "resource" member is the ORG-DIRECTORY value. and the "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 "org-directory" label.
BEGIN:VCARD BEGIN:VCARD
skipping to change at page 28, line 33 skipping to change at page 29, line 33
"type": "uri", "type": "uri",
"label": "org-directory", "label": "org-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 22: ORG-DIRECTORY mapping example
2.10. Explanatory Properties 2.10. Explanatory Properties
2.10.1. CATEGORIES 2.10.1. CATEGORIES
A CATEGORIES property is converted into a set of entries of the A CATEGORIES property is converted into a set of entries of the
"categories" map (Figure 22). The keys are the comma-separated text "categories" map (Figure 23). The keys are the comma-separated text
values of the CATEGORIES property. values of the CATEGORIES property.
In this case, the PREF parameter has not a JSContact counterpart; In this case, the PREF parameter has not a JSContact counterpart;
however, implementers MAY use a map preserving the order of insertion however, implementers MAY use a map preserving the order of insertion
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
skipping to change at page 29, line 23 skipping to change at page 30, line 23
... ...
"categories":{ "categories":{
"INTERNET": true, "INTERNET": true,
"IETF": true, "IETF": true,
"INDUSTRY": true, "INDUSTRY": true,
"INFORMATION TECHNOLOGY": true "INFORMATION TECHNOLOGY": true
}, },
... ...
} }
Figure 22: CATEGORIES mapping example Figure 23: CATEGORIES mapping example
2.10.2. NOTE 2.10.2. NOTE
A NOTE property is mapped to the "notes" property (Figure 23). All A NOTE property is mapped to the "notes" property (Figure 24). All
the NOTE instances are condensed into a single note and separated by the NOTE instances are condensed into a single note and separated by
newline. newline.
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). The "localizations" map includes as defined in (Section 2.1). The "localizations" map includes
possible language-dependent alternatives. possible language-dependent alternatives.
BEGIN:VCARD BEGIN:VCARD
VERSION:4.0 VERSION:4.0
... ...
skipping to change at page 29, line 50 skipping to change at page 30, line 50
END:VCARD END:VCARD
{ {
... ...
"notes": { "notes": {
"value": "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 24: 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 25).
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
{ {
... ...
"prodId": "-//ONLINE DIRECTORY//NONSGML Version 1//EN", "prodId": "-//ONLINE DIRECTORY//NONSGML Version 1//EN",
... ...
} }
Figure 24: PRODID mapping example Figure 25: 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 26).
BEGIN:VCARD BEGIN:VCARD
VERSION:4.0 VERSION:4.0
... ...
REV:19951031T222710Z REV:19951031T222710Z
... ...
END:VCARD END:VCARD
{ {
... ...
"updated": "1995-10-31T22:27:10Z", "updated": "1995-10-31T22:27:10Z",
... ...
} }
Figure 25: REV mapping example Figure 26: 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 27). 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 "uri", the "label" member is set to "sound" and the
"resource" member is the SOUND value. "resource" member is the SOUND 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
skipping to change at page 31, line 29 skipping to change at page 32, line 29
"a-sound":{ "a-sound":{
"type": "uri", "type": "uri",
"label": "sound", "label": "sound",
"resource": "CID:JOHNQPUBLIC.part8.19960229T080000.xyzMail@example.com" "resource": "CID:JOHNQPUBLIC.part8.19960229T080000.xyzMail@example.com"
}, },
... ...
}, },
... ...
} }
Figure 26: SOUND mapping example Figure 27: SOUND mapping example
2.10.6. UID 2.10.6. UID
The UID property corresponds to the "uid" property (Figure 27) in The UID property corresponds to the "uid" property (Figure 28) in
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
{ {
... ...
"uid": "urn:uuid:f81d4fae-7dec-11d0-a765-00a0c91e6bf6", "uid": "urn:uuid:f81d4fae-7dec-11d0-a765-00a0c91e6bf6",
... ...
} }
Figure 27: UID mapping example Figure 28: 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 29). 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", the "label" member is set to "url" 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
skipping to change at page 32, line 41 skipping to change at page 33, line 41
"an-url":{ "an-url":{
"type": "uri", "type": "uri",
"label": "url", "label": "url",
"resource": "http://example.org/restaurant.french/~chezchic.html" "resource": "http://example.org/restaurant.french/~chezchic.html"
}, },
... ...
}, },
... ...
} }
Figure 28: URL mapping example Figure 29: 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 30). 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 "uri", the "label" member is set to "key" and the
"resource" member is the KEY value. "resource" member is the KEY 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
skipping to change at page 33, line 35 skipping to change at page 34, line 35
"a-key":{ "a-key":{
"type": "uri", "type": "uri",
"label": "key", "label": "key",
"resource": "http://www.example.com/keys/jdoe.cer" "resource": "http://www.example.com/keys/jdoe.cer"
}, },
... ...
}, },
... ...
} }
Figure 29: KEY mapping example Figure 30: 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 31). 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 "uri", the "label" member is set to "fburl" and the
"resource" member is the FBURL value. "resource" member is the FBURL 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
skipping to change at page 34, line 34 skipping to change at page 35, line 34
"type": "uri", "type": "uri",
"label": "fburl", "label": "fburl",
"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 31: 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 "online" map
(Figure 31). 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 "caladruri" and member is set to "uri", the "label" member is set to "caladruri" and
the "resource" member is the CALADRURI value. the "resource" member is the CALADRURI 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
... ...
CALADRURI;PREF=1:mailto:janedoe@example.com CALADRURI;PREF=1:mailto:janedoe@example.com
skipping to change at page 35, line 33 skipping to change at page 36, line 33
"another-caladruri":{ "another-caladruri":{
"type": "uri", "type": "uri",
"label": "caladruri", "label": "caladruri",
"resource": "http://example.com/calendar/jdoe" "resource": "http://example.com/calendar/jdoe"
}, },
... ...
}, },
... ...
} }
Figure 31: CALADRURI mapping example Figure 32: 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 33). 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 "uri", the "label" member is set to "caluri" and the
"resource" member is the CALURI value. "resource" member is the CALURI 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
skipping to change at page 36, line 34 skipping to change at page 37, line 34
"type": "uri", "type": "uri",
"label": "caluri", "label": "caluri",
"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 33: CALURI mapping example
2.13. vCard Unmatched Properties 2.13. vCard Unmatched Properties
The unmatched vCard properties MAY be converted into JSContact The unmatched vCard properties MAY be converted into JSContact
properties whose name contains the prefix "ietf.org/RFC6350/" properties whose name contains the prefix "ietf.org/RFC6350/"
followed by property name in uppercase (i.e. ietf.org/RFC6350/ followed by property name in uppercase (i.e. ietf.org/RFC6350/
GENDER"). GENDER").
2.14. Card Required Properties 2.14. Card Required Properties
 End of changes. 49 change blocks. 
105 lines changed or deleted 140 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/