- add sources.
[platform/framework/web/crosswalk.git] / src / chrome / browser / chromeos / contacts / contact.proto
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 //
5 // Protocol buffer definitions for the user's contacts.
6
7 syntax = "proto2";
8
9 option optimize_for = LITE_RUNTIME;
10
11 package contacts;
12
13 // A contact, roughly based on the GData Contact kind:
14 // https://developers.google.com/gdata/docs/2.0/elements#gdContactKind
15 // All strings are UTF-8 with Unicode byte order marks stripped out.
16 message Contact {
17   // Next ID to use: 16
18
19   // Provider-assigned unique identifier.
20   optional string contact_id = 1;
21
22   // Last time at which this contact was updated within the upstream provider,
23   // as given by base::Time::ToInternalValue().
24   optional int64 update_time = 2;
25
26   // Has the contact been deleted recently within the upstream provider?
27   optional bool deleted = 3 [default = false];
28
29   // Affinity between the user and this contact, in the range [0.0, 1.0].
30   // Unset if the affinity is unknown.
31   optional float affinity = 15;
32
33   // Taken from https://developers.google.com/gdata/docs/2.0/elements#gdName.
34   optional string full_name = 4;
35   optional string given_name = 5;
36   optional string additional_name = 6;
37   optional string family_name = 7;
38   optional string name_prefix = 8;
39   optional string name_suffix = 9;
40
41   // Raw photo data as supplied by the provider.  This data is untrusted and
42   // must be decoded within a sandbox by e.g. ImageDecoder before being used.
43   // Unset if no photo is available.
44   optional bytes raw_untrusted_photo = 10;
45
46   // Describes an address-like message's type.
47   message AddressType {
48     // Next ID to use: 3
49     enum Relation {
50       HOME = 0;
51       WORK = 1;
52       MOBILE = 2;
53       OTHER = 3;
54     }
55     optional Relation relation = 1 [default = OTHER];
56     optional string label = 2;
57   }
58
59   message EmailAddress {
60     // Next ID to use: 4
61     optional string address = 1;
62     optional AddressType type = 2;
63     optional bool primary = 3 [default = false];
64   }
65   repeated EmailAddress email_addresses = 11;
66
67   message PhoneNumber {
68     // Next ID to use: 4
69     optional string number = 1;
70     optional AddressType type = 2;
71     optional bool primary = 3 [default = false];
72   }
73   repeated PhoneNumber phone_numbers = 12;
74
75   message PostalAddress {
76     // Next ID to use: 4
77     optional string address = 1;
78     optional AddressType type = 2;
79     optional bool primary = 3 [default = false];
80   }
81   repeated PostalAddress postal_addresses = 13;
82
83   message InstantMessagingAddress {
84     // Next ID to use: 5
85     optional string address = 1;
86     // Taken from https://developers.google.com/gdata/docs/2.0/elements#gdIm.
87     enum Protocol {
88       AIM = 0;
89       MSN = 1;
90       YAHOO = 2;
91       SKYPE = 3;
92       QQ = 4;
93       GOOGLE_TALK = 5;
94       ICQ = 6;
95       JABBER = 7;
96       OTHER = 8;
97     }
98     optional Protocol protocol = 2 [default = OTHER];
99     optional AddressType type = 3;
100     optional bool primary = 4 [default = false];
101   }
102   repeated InstantMessagingAddress instant_messaging_addresses = 14;
103 }
104
105 // Singleton message used by ContactDatabase to store update-related metadata.
106 message UpdateMetadata {
107   // Next ID to use: 3
108
109   // Time at which the last successful update was started, as given by
110   // base::Time::ToInternalValue().
111   optional int64 last_update_start_time = 1;
112
113   // Latest time that we've seen in a contact's |update_time| field.  Note that
114   // the time may have come from a deleted contact that has been discarded.
115   optional int64 last_contact_update_time = 2;
116 }