sandbox-calendaring-types.patch

V. Richter, 06/23/2014 10:04 AM

Download (43.5 KB)

View differences:

proto/sandbox/rst/calendar/Attendee.proto
1
package rst.calendar;
2

  
3
option java_outer_classname = "AttendeeType";
4

  
5
/**
6
* A description of an Attendee of a calendar component.
7
*
8
* This message represents an ATTENDEE property in RFC 2445.
9
*
10
* For a documentation of the RFC 2445 iCalendar specification visit
11
* http://www.ietf.org/rfc/rfc2445.txt
12
*
13
* @author Viktor Richter <vrichter@techfak.uni-bielefeld.de>
14
*/
15
message Attendee {
16

  
17
    /**
18
    * Used to identify the type of a calendar user specified by an
19
    * attendee definition. An attendee at a calender event does
20
    * not inevitably have to be a person. It also can be a group
21
    * room or different noteworthy physical resource.
22
    *
23
    * This enum represents the possible values of a CUTYPE in RFC 2445
24
    */
25
    enum UserType {
26

  
27
        /**
28
        * The attendee is an individual.
29
        */
30
        INDIVIDUAL = 1;
31

  
32
        /**
33
        * The attendee is a group of individuals.
34
        */
35
        GROUP = 2;
36

  
37
        /**
38
        * The attendee is a physical resource.
39
        */
40
        RESOURCE = 3;
41

  
42
        /**
43
        * The attendee is a room.
44
        */
45
        ROOM = 4;
46
    }
47

  
48
    /**
49
    * Used to specify the participation role of an attendee.
50
    *
51
    * This enum represents the possible values of a ROLE in RFC 2445
52
    */
53
    enum Role {
54

  
55
        /**
56
        * Chair of the calendar entity.
57
        */
58
        CHAIR = 1;
59

  
60
        /**
61
        * Someone whose participation is required.
62
        */
63
        REQUIRED_PARTICIPANT = 2;
64

  
65
        /**
66
        * Someone whose participation is optional.
67
        */
68
        OPTIONAL_PARTICIPANT = 3;
69

  
70
        /**
71
        * Someone whose participation is for information purposes only.
72
        */
73
        NON_PARTICIPANT = 4;
74
    }
75

  
76
    /**
77
    * Used to specify the participation status of an attendee.
78
    *
79
    * This enum represents the possible values of a PARTSTAT in RFC 2445
80
    */
81
    enum ParticipatonStatus {
82

  
83
        /**
84
        * The attendee has yet to react.
85
        */
86
        NEEDS_ACTION = 1;
87

  
88
        /**
89
        * The attendee has accepted the participation.
90
        */
91
        ACCEPTED = 2;
92

  
93
        /**
94
        * The attendee has declined the participation.
95
        */
96
        DECLINED = 3;
97
    }
98

  
99
    /**
100
    * Specifies the attendees calendar user address as URI, which can for
101
    * example be a MAILTO.
102
    *
103
    * This field corresponds to the cal-address of an attendee in RFC 2445
104
    */
105
    required string calendar_adress = 1;
106

  
107
    /**
108
    * Specifies what type of calendar user this attendee is.
109
    * An attendee can be a person, group, room or resource.
110
    *
111
    * This field corresponds to the cutypeparam of an attendee in RFC 2445
112
    */
113
    optional UserType calendar_user_type = 6 [default = INDIVIDUAL];
114

  
115
    /**
116
    * Specifies the groups the attendee belongs to via a list of URIs.
117
    *
118
    * This field corresponds to the memberparam of an attendee in RFC 2445.
119
    * The original memberparam is a single string holding the uris as a comma
120
    * separated list of double quoted uris.
121
    */
122
    repeated string member = 7;
123

  
124
    /**
125
    * Specifies the participation role of the attendee.
126
    *
127
    * This field corresponds to the roleparam of an attendee in RFC 2445
128
    */
129
    optional Role participation_role = 8 [default = REQUIRED_PARTICIPANT];
130

  
131
    /**
132
    * Specifies the participation status of the attendee.
133
    *
134
    * This field corresponds to the partstatparam of an attendee in RFC 2445
135
    */
136
    optional ParticipatonStatus participation_status = 9 [default = NEEDS_ACTION];
137

  
138
    /**
139
    * Specifies whether the favor of a reply is requested.
140
    *
141
    * This field corresponds to the rsvpparam of an attendee in RFC 2445
142
    */
143
    optional bool reply_requested = 10 [default = false];
144

  
145
    /**
146
    * An URI specifying a user to whom this participation was delegated.
147
    *
148
    * This field corresponds to the deltoparam of an attendee in RFC 2445
149
    */
150
    optional string delegated_to = 11;
151

  
152
    /**
153
    * An URI specifying a user from which this participation was delegated.
154
    *
155
    * This field corresponds to the delfromparam of an attendee in RFC 2445
156
    */
157
    optional string delegated_from = 12;
158

  
159
    /**
160
    * Specifies another user that is acting on behalf of the attendee
161
    *
162
    * This field corresponds to the sentbyparam of an attendee in RFC 2445
163
    */
164
    optional string sent_by = 4;
165

  
166
    /**
167
    * Specifies the common or display name of the attendee.
168
    *
169
    * This field corresponds to the cnparam of an attendee in RFC 2445
170
    */
171
    optional string common_name = 2;
172

  
173
    /**
174
    * Specifies a reference (uri) to the directory entry associated with the
175
    * calendar user acting as attendee.
176
    *
177
    * This field corresponds to the dirparam of an attendee in RFC 2445
178
    */
179
    optional string directory = 3;
180

  
181
    /**
182
    * Specifies the language as defined in http://www.ietf.org/rfc/rfc1766.txt.
183
    * If specified the language applies to the common_name field.
184
    *
185
    * This field corresponds to the languageparam of an attendee in RFC 2445
186
    */
187
    optional string language = 5;
188

  
189
}
proto/sandbox/rst/calendar/CalendarComponents.proto
1
package rst.calendar;
2

  
3
import "rst/calendar/TimeZone.proto";
4
import "rst/calendar/Event.proto";
5
import "rst/calendar/Todo.proto";
6

  
7
option java_outer_classname = "CalendarComponentsType";
8

  
9
/**
10
* A container message for multiple calendar components.
11
*
12
* @author Viktor Richter <vrichter@techfak.uni-bielefeld.de>
13
*/
14
message CalendarComponents {
15

  
16
    /**
17
    * A set of TimeZones
18
    */
19
    repeated TimeZone timezones = 1;
20

  
21
    /**
22
    * A set of Events
23
    */
24
    repeated Event events = 2;
25

  
26
    /**
27
    * A set of Todos
28
    */
29
    repeated Todo todos = 3;
30

  
31
}
proto/sandbox/rst/calendar/DateTime.proto
1
package rst.calendar;
2

  
3
option java_outer_classname = "DateTimeType";
4

  
5
/**
6
* A description of date and time of day.
7
*
8
* This message represents a DATE-TIME property in RFC 2445.
9
*
10
* For a documentation of the RFC 2445 iCalendar specification visit
11
* http://www.ietf.org/rfc/rfc2445.txt
12
*
13
* @author Viktor Richter <vrichter@techfak.uni-bielefeld.de>
14
*/
15
message DateTime {
16

  
17
    /**
18
    * A DateTime can have one of the three following forms.
19
    */
20
    enum Type {
21

  
22
        /**
23
        * UTC that this time is meant to be in absolute Coordinated Universal
24
        * Time.
25
        */
26
        UTC = 1;
27

  
28
        /**
29
        * FLOATING is used to specify time which is not bound to any time zone.
30
        *
31
        * Example: Dinner may always be at 6pm regardless of the current time
32
        * zone.
33
        */
34
        FLOATING = 2;
35

  
36
        /**
37
        * LOCAL specifies that this time is bound to a specific time zone.
38
        *
39
        * This additionally requires the timezone_id field to be set.
40
        */
41
        LOCAL = 3;
42

  
43
    }
44

  
45
    /**
46
    * Specifies whether this time is floating, utc or local.
47
    */
48
    optional Type date_time_type = 1 [default = UTC];
49

  
50
    /**
51
    * Specifies the time zone to which this time is bound.
52
    *
53
    * The value of timezone_id must match the timezone_id of a known or
54
    * attached TimeZone definition.
55
    *
56
    * This field MUST be specified when DateTimeType is LOCAL.
57
    * In all other cases it has no meaning.
58
    */
59
    optional string timezone_id = 2 [default = "UTC"];
60

  
61
    /**
62
    * The time since epoch (01.01.1970 at 00:00 UTC) in milliseconds.
63
    */
64
    optional uint64 milliseconds_since_epoch = 3 [default = 0];
65

  
66
}
proto/sandbox/rst/calendar/Entry.proto
1
package rst.calendar;
2

  
3
import "rst/calendar/TimeZone.proto";
4
import "rst/calendar/DateTime.proto";
5
import "rst/calendar/RecurrenceId.proto";
6
import "rst/calendar/Attendee.proto";
7
import "rst/calendar/Organizer.proto";
8
import "rst/calendar/Recurrence.proto";
9
import "rst/calendar/RequestStatus.proto";
10
import "rst/calendar/Relationship.proto";
11

  
12
option java_outer_classname = "EntryType";
13

  
14
/**
15
* A description of a calendar entry holding the common properties of
16
* VEVENT and VTODO components from RFC 2445.
17
*
18
* For a documentation of the RFC 2445 iCalendar specification visit
19
* http://www.ietf.org/rfc/rfc2445.txt
20
*
21
* @author Viktor Richter <vrichter@techfak.uni-bielefeld.de>
22
*/
23
message Entry {
24

  
25
    /**
26
    * This enum is used to restrict access or visibility of of the entry.
27
    *
28
    * It represents the possible values of a CLASS in RFC 2445
29
    */
30
    enum Visibility {
31

  
32
        /**
33
        * The entry can be seen by everyone.
34
        */
35
        PUBLIC = 1;
36

  
37
        /**
38
        * The entry is private.
39
        */
40
        PRIVATE = 2;
41

  
42
        /**
43
        * The entry is confidential.
44
        */
45
        CONFIDENTIAL = 3;
46
    }
47

  
48
    /**
49
    * Specifies the visibility classification of this entry.
50
    *
51
    * This field corresponds to the class property of an entry in RFC 2445.
52
    */
53
    optional Visibility visibility = 1 [default = PUBLIC];
54

  
55
    /**
56
    * Specifies when the entry was created in utc time.
57
    *
58
    * More precisely: Tells when the entry was first created in the
59
    * calendar store.
60
    *
61
    * This field corresponds to the created property of an entry in RFC 2445.
62
    */
63
    //@constraint(value.type == DateTime.Type.UTC)
64
    optional DateTime created_utc = 2;
65

  
66
    /**
67
    * A more complete description of the entry.
68
    *
69
    * This field corresponds to the description property of an entry in
70
    * RFC 2445.
71
    */
72
    optional string description = 3;
73

  
74
    /**
75
    * Specifies when the entry starts.
76
    *
77
    * This field corresponds to the dtstart property of an entry in RFC 2445.
78
    */
79
    optional DateTime date_time_start = 4;
80

  
81
    /**
82
    * Specifies the global position of the associated activity.
83
    *
84
    * This field corresponds to the latitude part of the geo property of an
85
    * entry in RFC 2445.
86
    */
87
    optional double geo_latitude = 5 [default = 0.];
88

  
89
    /**
90
    * Specifies the global position of the associated activity.
91
    *
92
    * This field corresponds to the longitude part of the geo property of an
93
    * entry in RFC 2445.
94
    */
95
    optional double geo_longitude = 6 [default = 0.];
96

  
97
    /**
98
    * Specifies when the entry was modified the last time in utc time.
99
    *
100
    * More precisely: Tells when the entry was last modified in the
101
    * calendar store.
102
    *
103
    * This field corresponds to the last-mod property of an entry in RFC 2445.
104
    */
105
    //@constraint(value.type == DateTime.Type.UTC)
106
    optional DateTime last_modified = 7;
107

  
108
    /**
109
    * Specifies where the entry will take place.
110
    *
111
    * This field corresponds to the location property of an entry in RFC 2445.
112
    */
113
    optional string location = 8;
114

  
115
    /**
116
    * Defines the organizer of the entry.
117
    *
118
    * This field corresponds to the organizer property of an entry in RFC 2445.
119
    */
120
    optional Organizer organizer = 9;
121

  
122
    /**
123
    * The priority of the entry as an integer between 0 and 9.
124
    *
125
    * 0 means not defined, 1 means highest, 9 means lowest priority.
126
    *
127
    * This field corresponds to the priority property of an entry in RFC 2445.
128
    */
129
    //@constraint(0 <= value <= 9)
130
    optional uint32 priority = 10  [default = 0];
131

  
132
    /**
133
    * Specifies when the entry was created.
134
    *
135
    * More precise: When the iCalendar object representation of the calendar
136
    * service information was created or last modified.
137
    *
138
    * This field corresponds to the dtstamp property of an entry in RFC 2445.
139
    */
140
    optional DateTime date_time_stamp = 11;
141

  
142
    /**
143
    * This is incremented every time the entry is changed significantly.
144
    *
145
    * This field corresponds to the seq property of an entry in RFC 2445.
146
    */
147
    optional uint32 sequence_number = 12 [default = 0];
148

  
149
    /**
150
    * A short summary or the subject of the entry.
151
    *
152
    * This field corresponds to the summary property of an entry in RFC 2445.
153
    */
154
    optional string summary = 13;
155

  
156
    /**
157
    * The globally unique id of the entry.
158
    *
159
    * This field corresponds to the uid property of an entry in RFC 2445.
160
    */
161
    optional string uid = 14;
162

  
163
    /**
164
    * The Uniform Resource Locator associated with this entry.
165
    *
166
    * This field corresponds to the url property of an entry in RFC 2445.
167
    */
168
    optional string url = 15;
169

  
170
    /**
171
    * Combined with uid and sequence, this can be used to reference a specific
172
    * entry in a recurrence set.
173
    *
174
    * This field corresponds to the recurid property of an entry in RFC 2445.
175
    */
176
    optional RecurrenceId recurrence_id = 16;
177

  
178
    /**
179
    * This provides a means to attach a document via URI or binary attachment
180
    * as string.
181
    *
182
    * This field corresponds to the attach property of an entry in RFC 2445.
183
    */
184
    repeated string attach = 17;
185

  
186
    /**
187
    * Specifies attendees to this entry.
188
    *
189
    * This field corresponds to the attendee property of an entry in RFC 2445.
190
    */
191
    repeated Attendee attendees = 18;
192

  
193
    /**
194
    * A list of categories, this entry is associated with.
195
    *
196
    * This field corresponds to the categories property of an entry in RFC 2445.
197
    */
198
    repeated string categories = 19;
199

  
200
    /**
201
    * Provides a comment to this entry.
202
    *
203
    * This field corresponds to the comment property of an entry in RFC 2445.
204
    */
205
    repeated string comments = 20;
206

  
207
    /**
208
    * Contact information or reference to contact information.
209
    *
210
    * This field corresponds to the contact property of an entry in RFC 2445.
211
    */
212
    repeated string contacts = 21;
213

  
214
    /**
215
    * Specifies a set of dates when the entry is.
216
    *
217
    * This field corresponds to rdate, rrule, exdate and exrule properties of
218
    * an entry in RFC 2445.
219
    */
220
    optional Recurrence recurrence = 22;
221

  
222
    /**
223
    * Holds the status code of a scheduling request.
224
    *
225
    * This field corresponds to the rstatus property of an entry in RFC 2445.
226
    */
227
    repeated RequestStatus request_status = 23;
228

  
229
    /**
230
    * Represents relationships to other calendar components.
231
    *
232
    * This field corresponds to the related property of an entry in RFC 2445.
233
    */
234
    repeated Relationship related = 24;
235

  
236
    /**
237
    * Specifies the equipment or resources needed for this entry.
238
    *
239
    * This field corresponds to the resources property of an entry in RFC 2445.
240
    */
241
    repeated string resources = 25;
242

  
243
}
proto/sandbox/rst/calendar/Event.proto
1
package rst.calendar;
2

  
3
import "rst/calendar/DateTime.proto";
4
import "rst/calendar/Entry.proto";
5

  
6
option java_outer_classname = "EventType";
7

  
8
/**
9
* A description of a calendar event following the iCalendar definitions.
10
*
11
* This message represents a VEVENT component in RFC 2445.
12
*
13
* For a documentation of the RFC 2445 iCalendar specification visit
14
* http://www.ietf.org/rfc/rfc2445.txt
15
*
16
* @author Viktor Richter <vrichter@techfak.uni-bielefeld.de>
17
*/
18
message Event {
19

  
20
    /**
21
    * The overall status of an event.
22
    */
23
    enum EventStatus {
24

  
25
        /**
26
        * Used for tentative events.
27
        */
28
        TENTATIVE = 1;
29

  
30
        /**
31
        * Used for confirmed events.
32
        */
33
        CONFIRMED = 2;
34

  
35
        /**
36
        * Used for canceled events.
37
        */
38
        CANCELED = 3;
39
    }
40

  
41
    /**
42
    * The transparency of an event.
43
    */
44
    enum Transparency {
45

  
46
        /**
47
        * Used for events which do not consume time in the calendar.
48
        */
49
        TRANSPARENT = 1;
50

  
51
        /**
52
        * Used for events which actually consume time in the calendar.
53
        */
54
        OPAQUE = 2;
55
    }
56

  
57
    /**
58
    * This field holds all properties that Event has in common with Todo.
59
    *
60
    * It corresponds to the following properties: class, created, description,
61
    * dtstamp, dtstart, geo, last-mod, location, organizer, priority, seq,
62
    * summary, uid, url, recurid, attach, attendee, categories, comment,
63
    * contact, exdate, exrule, rstatus, related, resources, rdate and rrule
64
    * int the VTODO component in RFC 2445.
65
    */
66
    optional Entry entry = 1;
67

  
68
    /**
69
    * The overall status of the event.
70
    *
71
    * This field corresponds to the status property of VEVENT in RFC 2445.
72
    */
73
    optional EventStatus event_status = 2 [default = CONFIRMED];
74

  
75
    /**
76
    * Specifies whether this event is transparent to busy-time searches or not.
77
    *
78
    * This field corresponds to the transp property of VEVENT in RFC 2445.
79
    * corresponds to TRANSP
80
    */
81
    optional Transparency transparency = 3 [default = OPAQUE];
82

  
83
    /**
84
    * Specifies the date and time when the event ends.
85
    * Either end_date_time or duration can be specified but not both at the
86
    * same time.
87
    *
88
    * This field corresponds to the dtend property of VEVENT in RFC 2445.
89
    */
90
    optional DateTime end_date_time = 4;
91

  
92
    /**
93
    * Specifies the duration of the event in milliseconds.
94
    * Either end_date_time or duration can be specified but not both at the
95
    * same time.
96
    *
97
    * This field corresponds to the duration property of VEVENT in RFC 2445.
98
    */
99
    optional sint64 duration = 5;
100
}
proto/sandbox/rst/calendar/Observance.proto
1
package rst.calendar;
2

  
3
import "rst/calendar/DateTime.proto";
4
import "rst/calendar/Recurrence.proto";
5

  
6
option java_outer_classname = "ObservanceType";
7

  
8
/**
9
* A description of a shift in a time zone following the iCalendar definitions.
10
* Observances are used to describe standard-daylight changes for a time zone.
11
*
12
* This message represents a tzprop property in RFC 2445.
13
*
14
* For a documentation of the RFC 2445 iCalendar specification visit
15
* http://www.ietf.org/rfc/rfc2445.txt
16
*
17
* @author Viktor Richter <vrichter@techfak.uni-bielefeld.de>
18
*/
19
message Observance {
20

  
21
    /**
22
    * This enum tells whether the observance describes a daylight (summer)
23
    * or standard (winter) time.
24
    */
25
    enum Type {
26

  
27
        /**
28
        * An observance setting the time zone to standard (winter) time.
29
        */
30
        STANDARD = 1;
31

  
32
        /**
33
        * An observance setting the time zone to daylight (summer) time.
34
        */
35
        DAYLIGHT = 2;
36
    }
37

  
38
    /**
39
    * This field tells of which type this observance is STANDARD (winter) or
40
    * DAYLIGHT (summer).
41
    */
42
    required Type type = 3 [default = STANDARD];
43

  
44
    /**
45
    * Specifies when the Observance begins (since when it is in use) in
46
    * utc-time.
47
    *
48
    * This field corresponds to dtstart of a tzprop in RFC 2445.
49
    */
50
    required DateTime start_utc = 4;
51

  
52
    /**
53
    * Specifies the name of the observance.
54
    *
55
    * This field corresponds to tzname of a tzprop in RFC 2445.
56
    */
57
    optional string name = 6;
58

  
59
    /**
60
    * Specifies a set of dates when the observance gets active.
61
    *
62
    * This field corresponds to rdate and rrule of a tzprop in RFC 2445.
63
    *
64
    * The exclude_dates and exclude_rules of this recurrence should be ignored.
65
    */
66
    optional Recurrence recurrence = 7;
67

  
68
    /**
69
    * Specifies the time offset in use before the observance is active in
70
    * milliseconds.
71
    *
72
    * This field corresponds to tzoffsetfrom of a tzprop in RFC 2445.
73
    */
74
    required sint64 offset_from = 8 [default = 0];
75

  
76
    /**
77
    * Specifies the time offset in use while observance is active in
78
    * milliseconds
79
    *
80
    * This field corresponds to tzoffsetto of a tzprop in RFC 2445.
81
    */
82
    required sint64 offset_to = 9 [default = 0];
83

  
84
}
proto/sandbox/rst/calendar/Organizer.proto
1
package rst.calendar;
2

  
3
option java_outer_classname = "OrganizerType";
4

  
5
/**
6
* A description of a organizer of a calendar component.
7
*
8
* This message represents a ORGANIZER property in RFC 2445.
9
*
10
* For a documentation of the RFC 2445 iCalendar specification visit
11
* http://www.ietf.org/rfc/rfc2445.txt
12
*
13
* @author Viktor Richter <vrichter@techfak.uni-bielefeld.de>
14
*/
15
message Organizer {
16

  
17
    /**
18
    * Specifies the organizers calendar user address as URI.
19
    * Can for example be a MAILTO.
20
    *
21
    * This field corresponds to cal-address of an ORGANIZER in RFC 2445.
22
    */
23
    required string calendar_adress = 1;
24

  
25
    /**
26
    * Specifies the common or display name of the organizer.
27
    *
28
    * This field corresponds to cnparam of an ORGANIZER in RFC 2445.
29
    */
30
    optional string common_name = 2;
31

  
32
    /**
33
    * Specifies a reference (uri) to the directory entry associated with the
34
    * calendar user acting as organizer.
35
    *
36
    * This field corresponds to dirparam of an ORGANIZER in RFC 2445.
37
    */
38
    optional string directory = 3;
39

  
40
    /**
41
    * Specifies another user that is acting on behalf of the organizer.
42
    *
43
    * This field corresponds to sentbyparam of an ORGANIZER in RFC 2445.
44
    */
45
    optional string sent_by = 4;
46

  
47
    /**
48
    * Specifies the language as defined in http://www.ietf.org/rfc/rfc1766.txt.
49
    * If specified the language applies to the common_name field.
50
    *
51
    * This field corresponds to languageparam of an ORGANIZER in RFC 2445.
52
    */
53
    optional string language = 5;
54

  
55
}
proto/sandbox/rst/calendar/Recurrence.proto
1
package rst.calendar;
2

  
3
import "rst/calendar/DateTime.proto";
4
import "rst/calendar/RecurrenceRule.proto";
5

  
6
option java_outer_classname = "RecurrenceType";
7

  
8
/**
9
* A description of a recurrence following the iCalendar definitions.
10
* can be used to generate a set of dates.
11
*
12
* The final set of dates is created by combining all dates from
13
* recurrence_dates and recurrence_rules and removing all dates generated
14
* by exclude_dates and exclude_rules.
15
*
16
* This message combines a representation of repeating RDATE, RRULE, EXDATE and
17
* EXRULE properties in RFC 2445.
18
*
19
* For a documentation of the RFC 2445 iCalendar specification visit
20
* http://www.ietf.org/rfc/rfc2445.txt
21
*
22
* @author Viktor Richter <vrichter@techfak.uni-bielefeld.de>
23
*/
24
message Recurrence {
25

  
26
    /**
27
    * Specifies a set of specific dates to include.
28
    *
29
    * This field represents a set of RDATE in RFC 2445.
30
    */
31
    repeated DateTime recurrence_dates = 1;
32

  
33
    /**
34
    * Specifies a set of rules that generate dates to include.
35
    *
36
    * This field represents a set of RRULE in RFC 2445.
37
    */
38
    repeated RecurrenceRule recurrence_rules = 2;
39

  
40
    /**
41
    * Specifies a set of dates to exclude.
42
    *
43
    * This field represents a set of EXDATE in RFC 2445.
44
    */
45
    repeated DateTime exclude_dates = 3;
46

  
47
    /**
48
    * Specifies a set of rules that generate dates to exclude.
49
    *
50
    * This field represents a set of EXRULE in RFC 2445.
51
    */
52
    repeated RecurrenceRule exclude_rules = 4;
53

  
54
}
proto/sandbox/rst/calendar/RecurrenceId.proto
1
package rst.calendar;
2

  
3
import "rst/calendar/DateTime.proto";
4

  
5
option java_outer_classname = "RecurrenceIdType";
6

  
7
/**
8
* The recurrence id can be used to reference a single component out of a
9
* recurring component set.
10
*
11
* While the UID of a component references its whole recurrence set the
12
* combination of the UID with a RecurrenceId can be used to point to a
13
* specific instance within this set.
14
*
15
* This message represents a RECURRENCE-ID property in RFC 2445.
16
*
17
* For a documentation of the RFC 2445 iCalendar specification visit
18
* http://www.ietf.org/rfc/rfc2445.txt
19
*
20
* @author Viktor Richter <vrichter@techfak.uni-bielefeld.de>
21
*/
22
message RecurrenceId {
23

  
24
    /**
25
    * Specifies whether this RecurrenceId uses a date or a date-time.
26
    */
27
    enum Type {
28

  
29
        /**
30
        * Specifies a date and time.
31
        */
32
        DATE_TIME = 1;
33

  
34
        /**
35
        * Specifies a date (whole day).
36
        */
37
        DATE = 2;
38
    }
39

  
40

  
41
    /**
42
    * Specifies whether this RecurrenceId references a single instance or
43
    * the same with all prior or future instances.
44
    *
45
    * This enum corresponds to the RANGE parameter in RFC 2445.
46
    */
47
    enum Range {
48

  
49
        /**
50
        * Specifies a single instance.
51
        */
52
        SINGLE = 1;
53

  
54
        /**
55
        * Specifies an instance and all instances following it.
56
        */
57
        THIS_AND_FUTURE = 2;
58

  
59
        /**
60
        * Specifies a instance and all instances prior to it.
61
        */
62
        THIS_AND_PRIOR = 3;
63
    }
64

  
65
    /**
66
    * Specifies whether the id should be interpreted as a date with time
67
    * or as a date, ignoring time.
68
    *
69
    * This field corresponds to the VALUE part of a ridparam property RFC 2445.
70
    */
71
    optional Type type = 1 [default = DATE_TIME];
72

  
73
    /**
74
    * Specifies whether a single instance or set is referenced.
75
    *
76
    * This field corresponds to the rangeparam part of a ridparam
77
    * property RFC 2445.
78
    */
79
    optional Range range = 2 [default = SINGLE];
80

  
81
    /**
82
    * Specifies ReferenceId value as a DateTime this should match the date value
83
    * of an instance in the recurrence set.
84
    *
85
    * This field corresponds to the ridval part of a RECURRENCE-ID
86
    * property RFC 2445.
87
    */
88
    optional DateTime rid = 3;
89

  
90
}
proto/sandbox/rst/calendar/RecurrenceRule.proto
1
package rst.calendar;
2

  
3
import "rst/calendar/DateTime.proto";
4

  
5
option java_outer_classname = "RecurrenceRuleType";
6

  
7
/**
8
* Specifies a rule or repeating pattern for recurring components.
9
*
10
* This message represents a RECUR property in RFC 2445.
11
*
12
* For a documentation of the RFC 2445 iCalendar specification visit
13
* http://www.ietf.org/rfc/rfc2445.txt
14
*
15
* @author Viktor Richter <vrichter@techfak.uni-bielefeld.de>
16
*/
17
message RecurrenceRule {
18

  
19
    /**
20
    * This enum defines a frequency of the recurrence (How often does it recur).
21
    */
22
    enum Frequency {
23

  
24
        /**
25
        * Every second.
26
        */
27
        SECONDLY = 1;
28

  
29
        /**
30
        * Every minute.
31
        */
32
        MINUTELY = 2;
33

  
34
        /**
35
        * Every hour.
36
        */
37
        HOURLY = 3;
38

  
39
        /**
40
        * Every day.
41
        */
42
        DAILY = 4;
43

  
44
        /**
45
        * Every week.
46
        */
47
        WEEKLY = 5;
48

  
49
        /**
50
        * Every month.
51
        */
52
        MONTHLY = 6;
53

  
54
        /**
55
        * Every year.
56
        */
57
        YEARLY = 7;
58

  
59
    }
60

  
61
    /**
62
    * This enum defines a day in within the week.
63
    */
64
    enum Weekday {
65

  
66
        /**
67
        * Sunday.
68
        */
69
        SUNDAY = 1;
70

  
71
        /**
72
        * Monday.
73
        */
74
        MONDAY = 2;
75

  
76
        /**
77
        * Tuesday.
78
        */
79
        TUESDAY = 3;
80

  
81
        /**
82
        * Wednesday.
83
        */
84
        WEDNESDAY = 4;
85

  
86
        /**
87
        * Thursday.
88
        */
89
        THURSDAY = 5;
90

  
91
        /**
92
        * Friday.
93
        */
94
        FRIDAY = 6;
95

  
96
        /**
97
        * Saturday.
98
        */
99
        SATURDAY = 7;
100
    }
101

  
102
    /**
103
    * Specifies the end date of the recurrence in utc. Either this or count may
104
    * be specified but not both at the same time.
105
    *
106
    * This field corresponds to the UNTIL part of a recur value in RFC 2445.
107
    */
108
    optional DateTime until_date_utc = 2;
109

  
110
    /**
111
    * Specifies the recurrence count. Either this or until_date_utc may
112
    * be specified but not both at the same time.
113
    *
114
    * This field corresponds to the COUNT part of a recur value in RFC 2445.
115
    */
116
    optional uint32 count = 3;
117

  
118
    /**
119
    * Specifies the frequency of the recurrence.
120
    *
121
    * This field corresponds to the freq part of a recur value in RFC 2445.
122
    */
123
    required Frequency frequency = 4 [default = YEARLY];
124

  
125
    /**
126
    * Tells how often the rule repeats.
127
    *
128
    * Example: interval = n and frequency = weekly means every n'th week
129
    *
130
    * This field corresponds to the INTERVAL part of a recur value in RFC 2445.
131
    */
132
    optional uint32 interval = 5 [default = 1];
133

  
134
    /**
135
    * A list of occurrence seconds.
136
    *
137
    * This field corresponds to the BYSECOND part of a recur value in RFC 2445.
138
    */
139
    //@constraint(0 <= value < 60)
140
    repeated uint32 by_second = 6;
141

  
142
    /**
143
    * A list of occurrence minutes.
144
    *
145
    * This field corresponds to the BYMINUTE part of a recur value in RFC 2445.
146
    */
147
    //@constraint(0 <= value < 60)
148
    repeated uint32 by_minute = 7;
149

  
150
    /**
151
    * A list of occurrence hours.
152
    *
153
    * This field corresponds to the BYHOUR part of a recur value in RFC 2445.
154
    */
155
    //@constraint(0 <= value < 24)
156
    repeated uint32 by_hour = 8;
157

  
158
    /**
159
    * A list of occurrence weekdays.
160
    *
161
    * This field corresponds to the BYDAY part of a recur value in RFC 2445.
162
    */
163
    repeated Weekday by_week_day = 9;
164

  
165
    /**
166
    * A list of occurrence days.
167
    *
168
    * Example: frequency = MONTHLY, by_week_day = MO and by_day_n = -1
169
    * means the last Monday of the month.
170
    *
171
    * This field corresponds to the BYDAY part of a recur value in RFC 2445.
172
    */
173
    repeated sint32 by_day_number = 10;
174

  
175
    /**
176
    * A list of occurrence days of the month. If by_moth_day is negative, it is
177
    * counted from the end of the month.
178
    *
179
    * This field corresponds to the BYMONTHDAY part of a recur value in RFC 2445.
180
    */
181
    //@constraint(-31 <= value <= 31)
182
    repeated sint32 by_month_day = 11;
183

  
184
    /**
185
    * A list of occurrence days of the year. If by_year_day is negative, it is
186
    * counted from the end of the year.
187
    *
188
    * This field corresponds to the BYYEARDAY part of a recur value in RFC 2445.
189
    */
190
    //@constraint(-366 <= value <= 366)
191
    repeated sint32 by_year_day = 12;
192

  
193
    /**
194
    * A list of occurrence weeks of the year. If by_week_number is negative,
195
    * it is counted from the end of the year.
196
    *
197
    * This field corresponds to the BYWEEKNO part of a recur value in RFC 2445.
198
    */
199
    //@constraint(-53 <= value <= 53)
200
    repeated sint32 by_week_number = 13;
201

  
202
    /**
203
    * A list of occurrence months. If by_month is negative, it is counted
204
    * from the end of the year.
205
    *
206
    * This field corresponds to the BYMONTH part of a recur value in RFC 2445.
207
    */
208
    //@constraint(1 <= value <= 31)
209
    repeated uint32 by_month = 14;
210

  
211
    /**
212
    * Further filters the set by specifying which exact occurrences to use.
213
    *
214
    * Example: frequency = MONTHLY, by_week_day=FRIDAY and
215
    * by_set_pos = -1 specifies the last Friday of the month.
216
    *
217
    * This field corresponds to the BYSETPOS part of a recur value in RFC 2445.
218
    */
219
    repeated sint32 by_set_pos = 15;
220

  
221
    /**
222
    * Specifies which day is the first day of the week.
223
    *
224
    * This field corresponds to the WKST part of a recur value in RFC 2445.
225
    */
226
    optional Weekday week_start = 16 [default = MONDAY];
227

  
228
}
proto/sandbox/rst/calendar/Relationship.proto
1
package rst.calendar;
2

  
3
option java_outer_classname = "RelationshipType";
4

  
5
/**
6
* This is used to specify relationships between calendar components.
7
*
8
* This message represents a RELATED-TO property in RFC 2445.
9
*
10
* For a documentation of the RFC 2445 iCalendar specification visit
11
* http://www.ietf.org/rfc/rfc2445.txt
12
*
13
* @author Viktor Richter <vrichter@techfak.uni-bielefeld.de>
14
*/
15
message Relationship {
16

  
17
    /**
18
    * Specifies the type of the relationship.
19
    *
20
    * This enum represents the possible values of a reltypeparam in RFC 2445.
21
    */
22
    enum Type {
23

  
24
        /**
25
        * The component is a subordinate of the referenced component.
26
        */
27
        PARENT = 1;
28

  
29
        /**
30
        * The component is a superior of the referenced component.
31
        */
32
        CHILD = 2;
33

  
34
        /**
35
        * The component is a peer of the referenced component.
36
        */
37
        SIBLING = 3;
38
    }
39

  
40
    /**
41
    * The type of relationship to the referenced component.
42
    *
43
    *
44
    * This field corresponds to the reltypeparam parameter in RFC 2445.
45
    */
46
    optional Type relationship_type = 1 [default = PARENT];
47

  
48
    /**
49
    * The unique identifier of the related component. This should
50
    * typically be its uid.
51
    *
52
    * This field corresponds to the text part of related property in RFC 2445.
53
    */
54
    required string uid = 2;
55

  
56
}
proto/sandbox/rst/calendar/RequestStatus.proto
1
package rst.calendar;
2

  
3
option java_outer_classname = "RequestStatusType";
4

  
5
/**
6
* A description of a status code used in scheduling requests.
7
*
8
* This message represents a REQUEST-STATUS property in RFC 2445.
9
*
10
* For a documentation of the RFC 2445 iCalendar specification visit
11
* http://www.ietf.org/rfc/rfc2445.txt
12
*
13
* @author Viktor Richter <vrichter@techfak.uni-bielefeld.de>
14
*/
15
message RequestStatus {
16

  
17
    /**
18
    * Specifies the language used in the status code as defined in
19
    * http://www.ietf.org/rfc/rfc1766.txt.
20
    *
21
    * This field corresponds to the languageparm parameter of REQUEST-STATUS
22
    * in RFC 2445.
23
    */
24
    optional string language = 1;
25

  
26
    /**
27
    * A hierarchical numeric status code as string.
28
    * 3-tuple of integers separated by a period character.
29
    * example: "3.1.2"
30
    *
31
    * The level of the integer corresponds to the level of status code
32
    * granularity (least granularity to highest from left to right).
33
    *
34
    * The return status interpretation of the leftmost integer is following:
35
    * 1.xx preliminary success, completion is pending
36
    * 2.xx completed successfully
37
    * 3.xx not successful, error in the syntax or semantic of the request
38
    * 4.xx scheduling error, an error occurred within the calendaring service
39
    * not directly related to the request itself.
40
    *
41
    * This field corresponds to the statcode parameter of REQUEST-STATUS
42
    * in RFC 2445.
43
    */
44
    required string status_code = 2;
45

  
46
    /**
47
    * A status description text.
48
    *
49
    * This field corresponds to the statdesc parameter of REQUEST-STATUS
50
    * in RFC 2445.
51
    */
52
    required string status_description = 3;
53

  
54
    /**
55
    * Exception data as text. Can be the offending property name and value or
56
    * a complete property line.
57
    *
58
    * This field corresponds to the extdata parameter of REQUEST-STATUS
59
    * in RFC 2445.
60
    */
61
    required string exception_text_data = 4;
62

  
63
}
proto/sandbox/rst/calendar/TimeZone.proto
1
package rst.calendar;
2

  
3
import "rst/calendar/DateTime.proto";
4
import "rst/calendar/Observance.proto";
5

  
6
option java_outer_classname = "TimeZoneType";
7

  
8
/**
9
* A description of a TimeZone following the icalendar definitions.
10
* The TimeZone must at least hold it timezone_id and one standards or daylights
11
* Observance.
12
*
13
* This message represents a VTIMEZONE component in RFC 2445.
14
*
15
* For a documentation of the RFC 2445 iCalendar specification visit
16
* http://www.ietf.org/rfc/rfc2445.txt
17
*
18
* @author Viktor Richter <vrichter@techfak.uni-bielefeld.de>
19
*/
20
//@constraint(len(.standards) + len(.daylights) > 0)
21
message TimeZone {
22

  
23
    /**
24
    * The id of the time zone. This should be unique.
25
    *
26
    * This field corresponds to the tzid parameter of VTIMEZONE in RFC 2445.
27
    */
28
    required string timezone_id = 1;
29

  
30
    /**
31
    * Specifies when the time zone was modified the last time in utc time.
32
    *
33
    * More precisely: Tells when this time zone data was last modified
34
    * in the calendar store.
35
    *
36
    * This field corresponds to the last-mod parameter of VTIMEZONE in RFC 2445.
37
    */
38
    //@constraint(value.type == DateTime.Type.UTC)
39
    optional DateTime last_modified_utc = 2;
40

  
41
    /**
42
    * Specifies a network location where an up to date version of this time zone
43
    * can be retrieved.
44
    *
45
    * This field corresponds to the tzurl parameter of VTIMEZONE in RFC 2445.
46
    */
47
    optional string timezone_url = 3;
48

  
49
    /**
50
    * The location to which this time zone applies. This can define where the
51
    * TimeZone is applied.
52
    *
53
    * Example: "Europe/Berlin" for the TimeZone that is used in Berlin,
54
    * in Germany
55
    *
56
    * This is a field corresponding to X-LIC-LOCATION, which is not in RFC 2445.
57
    */
58
    optional string x_location = 4;
59

  
60
    /**
61
    * A collection of standard-observances for this TimeZone. Defines all its
62
    * 'winter' times.
63
    *
64
    * This field corresponds to the standardc parameter of VTIMEZONE in
65
    * RFC 2445.
66
    */
67
    repeated Observance standards = 5;
68

  
69
    /**
70
    * A collection of daylight-observances for this TimeZone. Defines all its
71
    * 'summer' times.
72
    *
73
    * This field corresponds to the daylightc parameter of VTIMEZONE in
74
    * RFC 2445.
75
    */
76
    repeated Observance daylights = 6;
77

  
78
}
proto/sandbox/rst/calendar/Todo.proto
1
package rst.calendar;
2

  
3
import "rst/calendar/DateTime.proto";
4
import "rst/calendar/Entry.proto";
5

  
6
option java_outer_classname = "TodoType";
7

  
8
/**
9
* A description of an calendar todo following the icalendar definitions.
10
*
11
* This message represents a VTODO component in RFC 2445.
12
*
13
* For a documentation of the RFC 2445 iCalendar specification visit
14
* http://www.ietf.org/rfc/rfc2445.txt
15
*
16
* @author Viktor Richter <vrichter@techfak.uni-bielefeld.de>
17
*/
18
message Todo {
19

  
20
    /**
21
    * The overall status of a todo.
22
    */
23
    enum TodoStatus {
24

  
25
        /**
26
        * Used for todos that need an action.
27
        */
28
        NEEDS_ACTION = 1;
29

  
30
        /**
31
        * Used for completed todos.
32
        */
33
        COMPLETED = 2;
34

  
35
        /**
36
        * Used for todos that are currently in process of.
37
        */
38
        IN_PROCESS = 3;
39

  
40
        /**
41
        * Used for canceled todos.
42
        */
43
        CANCELED = 4;
44
    }
... This diff was truncated because it exceeds the maximum size that can be displayed.