The mimetype for contacts is "application/x-vnd.kolab.contact". This is the specification of the body contents:
<?xml version="1.0" encoding="UTF-8"?>
<contact version="1.0">
<!-- Common fields -->
<uid>(string, no default)</uid>
<body>(string, default empty)</body>
<categories>(string, default empty)</categories>
<creation-date>(datetime, no default)</creation-date>
<last-modification-date>(datetime, no default)</last-modification-date>
<sensitivity>(string, default public)</sensitivity>
{<inline-attachment>(string, no default)</inline-attachment>}
{<link-attachment>(string, no default)</link-attachment>}
<product-id>(string, default empty)</product-id>
<!-- Contact specific fields -->
<name>
<given-name>(string, default empty)</given-name>
<middle-names>(string, default empty)</middle-names>
<last-name>(string, default empty)</last-name>
<full-name>(string, default empty)</full-name>
<initials>(string, default empty)</initials>
<prefix>(string, default empty)</prefix>
<suffix>(string, default empty)</suffix>
</name>
<free-busy-url>(string, default empty)</free-busy-url>
<organization>(string, default empty)</organization>
<web-page>(string, default empty)</web-page>
<im-address>(string, default empty)</im-address>
<department>(string, default empty)</department>
<office-location>(string, default empty)</office-location>
<profession>(string, default empty)</profession>
<job-title>(string, default empty)</job-title>
<manager-name>(string, default empty)</manager-name>
<assistant>(string, default empty)</assistant>
<nick-name>(string, default empty)</nick-name>
<spouse-name>(string, default empty)</spouse-name>
<birthday>(date, no default)</birthday>
<anniversary>(date, no default)</anniversary>
<picture>(string(attachment filename), default empty)</picture>
<children>(string, default empty)</children>
<gender>(string, default empty)</gender>
<language>(string, default empty)</language>
{<phone>
<type>(string, no default)</type>
<number>(string, default empty)</number>
</phone>}
{<email>
<display-name>(string, default empty)</display-name>
<smtp-address>(string, default empty)</smtp-address>
</email>}
{<address>
<type>(string, default home)</type>
<street>(string, default empty)</street>
<locality>(string, default empty)</locality>
<region>(string, default empty)</region>
<postal-code>(string, default empty)</postal-code>
<country>(string, default empty)</country>
</address>}
<preferred-address>(string, default none)</preferred-address>
<latitude>(float, no default)</latitude>
<longitude>(float, no default)</longitude>
</contact>See Section 4.1> for the description of the common fields
A contact has a field for free text for it. This is usually called a note on the contact. This note is stored in the body tag.
gender can be empty or is one of male or female.
You can have one phone number of each type. The types are: business1, business2, businessfax, callback, car, company, home1, home2, homefax, isdn, mobile, pager, primary, radio, telex, ttytdd, assistant, and other.
The Kontact and Horde address books have the notion of a preferred email address. This could be done by a bool on the emails or a separate tag like for preferred address.
The address type can be home, business, and other. The preferred address can be set to one of these or none.
In an address, locality is the city or village name, the meaning of region depends on the country (e.g. it's the state in federal states like the USA), and postal-code is what is also known as "zip" in some countries.