All Classes Namespaces Files Functions Variables Groups
Calendars.idl
1 /**
2  * @file Events.idl
3  * @brief Calendar Events, Exceptions, Recurrence
4  *
5  * @author Marek Sykora, Dusan Juhas
6  *
7  * @copyright Copyright © 2017 Kerio Technologies s.r.o.
8  */
9 
10 #import <Structures.idl>
11 
12 module kerio {
13 module jsonapi {
14 module webmail {
15 module calendars {
16 
17 typedef sequence<long> LongList;
18 
19 enum FreeBusyStatus {
20  Busy, ///< opaque
21  Tentative,
22  Free, ///< transparent
23  OutOfOffice,
24  NotAvailable
25 };
26 
27 /**
28  * Any event can be marked by a label
29  */
30 enum EventLabel {
31  None,
32  Important,
33  Business,
34  Personal,
35  Vacation,
36  MustAttend,
37  TravelRequired,
38  NeedsPreparation,
39  BirthDay,
40  Anniversary,
41  PhoneCall
42 };
43 
44 /**
45  * Purposly merged role and type to avoid useless combinations like optional room
46  */
47 enum AttendeeRole {
48  RoleOrganizer,
49  RoleRequiredAttendee,
50  RoleOptionalAttendee,
51  RoleRoom,
52  RoleEquipment
53 };
54 
55 /**
56  * Enumerate of attendee participation status. It specifies the participation status for the calendar user
57  * specified by the property. If not specified, the default value is PartNotResponded.
58  */
59 enum PartStatus {
60  PartNotResponded, ///< Event needs action
61  PartAccepted, ///< Event accepted
62  PartDeclined, ///< Event declined
63  PartDelegated, ///< Event delegated
64  PartTentative ///< Event tentatively accepted
65 };
66 
67 /**
68  * Response to particular occurrence or event.
69  */
71  PartStatus status;
72  string message;
73 };
74 
75 struct Attendee {
76  string displayName;
77  string emailAddress; ///< [REQUIRED]
78  AttendeeRole role; ///< [REQUIRED]
79  boolean isNotified; ///< [READ-ONLY] is Attendee notified by email on event update? also known as RSVP
80  PartStatus partStatus; ///< [READ-ONLY] A participation status for the event*/
81 };
82 
83 typedef sequence<Attendee> AttendeeList;
84 
85 enum ReminderType {
86  ReminderRelative,
87  ReminderAbsolute
88 };
89 
90 struct Reminder {
91  boolean isSet;
92  ReminderType type; ///< if it is not send the default value is 'ReminderRelative'
93  long minutesBeforeStart;
94  UtcDateTime date;
95 };
96 
97 enum FrequencyType {
98  Daily,
99  Weekly,
100  Monthly,
101  Yearly
102 };
103 
104 enum EndByType {
105  ByRecurrenceNever,
106  ByRecurrenceDate
107 };
108 
109 struct EndBy {
110  EndByType type;
111  UtcDateTime date; ///< also known as until, used for ByRecurrenceDate
112 };
113 
114 struct PreciseBy {
115  LongList byDay;
116  LongList byMonthDay;
117  LongList byMonth;
118  LongList byPosition; ///< 2 = 2nd day, 3 = 3rd day
119  long byInterval; ///< 2 = every 2nd day, 3 = every 3rd day
120 };
121 
123  boolean isSet;
124  FrequencyType frequency; ///< period in which event occurs
125  EndBy endBy; ///< end limitation
126  PreciseBy preciseBy; ///< further specification
127 };
128 
129 /**
130  * Purposly merged role and type to avoid useless combinations like optional room
131  */
132 enum EventAccess {
133  EAccessCreator,
134  EAccessInvitee,
135  EAccessReadOnly
136 };
137 
138 }; }; }; }; // end of namespace
139