Service: zimbraMail

Command: CheckRecurConflicts
Namespace: urn:zimbraMail
Description: Check conflicts in recurrence against list of users.
Set all attribute to get all instances, even those without conflicts. By default only instances that have conflicts are returned.
Properties:
Authorization token required true
Admin Authorization token required false

CheckRecurConflictsRequest

    <CheckRecurConflictsRequest [s="{start-time-millis} (Long)"] [e="{end-time-millis} (Long)"]
                                   [all="{get-all-instances} (0|1)"] [excludeUid="{exclude-uid}"]> ## CheckRecurConflictsRequest
        (<tz id="{timezone-id}" stdoff="{timezone-std-offset} (Integer)" dayoff="{timezone-daylight-offset} (Integer)"
                 [stdname="..."] [dayname="..."]> ## CalTZInfo
            <standard [week="{tzonset-week} (Integer)"] [wkday="{tzonset-day-of-week} (Integer)"]
                          mon="{tzonset-month} (Integer)" [mday="{tzonset-day-of-month} (Integer)"]
                          hour="{tzonset-hour} (Integer)" min="{tzonset-minute} (Integer)" sec="{tzonset-second} (Integer)" /> ## TzOnsetInfo
            <daylight ... /> ## See /tz/standard [ ## TzOnsetInfo]
          </tz>)*
        List of any of: {
            <cancel [s="{dtstart-millis} (Long)"] [e="{dtend-millis} (Long)"]> ## ExpandedRecurrenceCancel
                <exceptId [range="{range-THISANDFUTURE|THISANDPRIOR}"] [d="{DATETIME-YYYYMMDD['T'HHMMSS[Z]]}"]
                              [tz="{timezone-identifier}"] /> ## InstanceRecurIdInfo
                <dur [neg="{duration-negative} (0|1)"] [w="{duration-weeks} (Integer)"] [d="{duration-days} (Integer)"]
                         [h="{duration-hours} (Integer)"] [m="{duration-minutes} (Integer)"]
                         [s="{duration-seconds} (Integer)"] [related="{alarm-related}"]
                         [count="{alarm-repeat-count} (Integer)"] /> ## DurationInfo
                <recur> ## RecurrenceInfo
                    List of any of: {
                        <add> ## AddRecurrenceInfo
                            List of any of: {
                                <add> ... </add> ## See /cancel/recur/add [ ## AddRecurrenceInfo] # [inside itself]
                                <exclude> ## ExcludeRecurrenceInfo
                                    List of any of: {
                                        <add> ... </add> ## See /cancel/recur/add [ ## AddRecurrenceInfo] # [inside itself]
                                        <exclude> ... </exclude> ## See /cancel/recur/add/exclude [ ## ExcludeRecurrenceInfo] # [inside itself]
                                        <except rangeType="{range-type} (int)" recurId="{YYMMDD[THHMMSS[Z]]}"
                                                    [tz="{timezone-name}"] [ridZ="{YYMMDDTHHMMSSZ}"]> ## ExceptionRuleInfo
                                            <add> ... </add> ## See /cancel/recur [ ## RecurrenceInfo] # [inside itself]
                                            <exclude> ... </exclude> ## See /cancel/recur [ ## RecurrenceInfo] # [inside itself]
                                         </except>
                                        <cancel rangeType="{range-type} (int)" recurId="{YYMMDD[THHMMSS[Z]]}"
                                                    [tz="{timezone-name}"] [ridZ="{YYMMDDTHHMMSSZ}"] /> ## CancelRuleInfo
                                        <dates [tz="{TZID}"]> ## SingleDates
                                            (<dtval> ## DtVal
                                                <s [d="{YYYYMMDD['T'HHMMSS[Z]]}"] [tz="{timezone-identifier}"]
                                                       [u="{utc-time} (Long)"] /> ## DtTimeInfo
                                                <e ... /> ## See /cancel/recur/add/exclude/dates/dtval/s [ ## DtTimeInfo]
                                                <dur ... /> ## See /cancel/dur [ ## DurationInfo]
                                              </dtval>)*
                                         </dates>
                                        <rule freq="{freq}"> ## SimpleRepeatingRule
                                            <until d="{YYYYMMDD[ThhmmssZ]}" /> ## DateTimeStringAttr
                                            <count num="{num} (int)" /> ## NumAttr
                                            <interval ival="{rule-interval} (int)" /> ## IntervalRule
                                            <bysecond seclist="{second-list}" /> ## BySecondRule
                                            <byminute minlist="{minute-list}" /> ## ByMinuteRule
                                            <byhour hrlist="{hour-list}" /> ## ByHourRule
                                            <byday> ## ByDayRule
                                                (<wkday day="{weekday}" [ordwk="{ord-wk-[[+]|-]num} (Integer)"] /> ## WkDay)*
                                             </byday>
                                            <bymonthday modaylist="{modaylist}" /> ## ByMonthDayRule
                                            <byyearday yrdaylist="{byyearday-yrdaylist}" /> ## ByYearDayRule
                                            <byweekno wklist="{byweekno-wklist}" /> ## ByWeekNoRule
                                            <bymonth molist="{month-list}" /> ## ByMonthRule
                                            <bysetpos poslist="{bysetpos-list}" /> ## BySetPosRule
                                            <wkst day="{weekday}" /> ## WkstRule
                                            (<rule-x-name [name="{xname-name}"] [value="{xname-value}"] /> ## XNameRule)*
                                         </rule>
                                    }
                                 </exclude>
                                <except ... > ... </except> ## See /cancel/recur/add/exclude/except [ ## ExceptionRuleInfo]
                                <cancel ... /> ## See /cancel/recur/add/exclude/cancel [ ## CancelRuleInfo]
                                <dates [tz="{TZID}"]> ... </dates> ## See /cancel/recur/add/exclude/dates [ ## SingleDates]
                                <rule freq="{freq}"> ... </rule> ## See /cancel/recur/add/exclude/rule [ ## SimpleRepeatingRule]
                            }
                         </add>
                        <exclude> ... </exclude> ## See /cancel/recur/add/exclude [ ## ExcludeRecurrenceInfo]
                        <except ... > ... </except> ## See /cancel/recur/add/exclude/except [ ## ExceptionRuleInfo]
                        <cancel ... /> ## See /cancel/recur/add/exclude/cancel [ ## CancelRuleInfo]
                        <dates [tz="{TZID}"]> ... </dates> ## See /cancel/recur/add/exclude/dates [ ## SingleDates]
                        <rule freq="{freq}"> ... </rule> ## See /cancel/recur/add/exclude/rule [ ## SimpleRepeatingRule]
                    }
                 </recur>
             </cancel>
            <comp [s="{dtstart-millis} (Long)"] [e="{dtend-millis} (Long)"]> ## ExpandedRecurrenceInvite
                <exceptId ... /> ## See /cancel/exceptId [ ## InstanceRecurIdInfo]
                <dur ... /> ## See /cancel/dur [ ## DurationInfo]
                <recur> ... </recur> ## See /cancel/recur [ ## RecurrenceInfo]
             </comp>
            <except [s="{dtstart-millis} (Long)"] [e="{dtend-millis} (Long)"]> ## ExpandedRecurrenceException
                <exceptId ... /> ## See /cancel/exceptId [ ## InstanceRecurIdInfo]
                <dur ... /> ## See /cancel/dur [ ## DurationInfo]
                <recur> ... </recur> ## See /cancel/recur [ ## RecurrenceInfo]
             </except>
        }
        (<usr [l="{calendar-folder-id} (Integer)"] [id="{id}"] [name="{email}"] /> ## FreeBusyUserSpec)*
    </CheckRecurConflictsRequest>

elements and attributes you can define within a <CheckRecurConflictsRequest> element:

XPath Required / Optional Description
@s Optional (0 or 1) Type: Long
Start time in millis. If not specified, defaults to current time
@e Optional (0 or 1) Type: Long
End time in millis. If not specified, unlimited
@all Optional (0 or 1) Type: 0|1
Set this to get all instances, even those without conflicts. By default only instances that have conflicts are returned.
@excludeUid Optional (0 or 1) Type: String
UID of appointment to exclude from free/busy search
/tz Optional (0 or more) Timezones
/tz@id Required (only 1) Type: String
Timezone ID. If this is the only detail present then this should be an existing server-known timezone's ID Otherwise, it must be present, although it will be ignored by the server
/tz@stdoff Required (only 1) Type: Integer
Standard Time's offset in minutes from UTC; local = UTC + offset
/tz@dayoff Required (only 1) Type: Integer
Daylight Saving Time's offset in minutes from UTC; present only if DST is used
/tz@stdname Optional (0 or 1) Type: String
Standard Time component's timezone name
/tz@dayname Optional (0 or 1) Type: String
Daylight Saving Time component's timezone name
/tz/standard Optional (0 or 1) Time/rule for transitioning from daylight time to standard time. Either specify week/wkday combo, or mday.
/tz/standard@week Optional (0 or 1) Type: Integer
Week number; 1=first, 2=second, 3=third, 4=fourth, -1=last
/tz/standard@wkday Optional (0 or 1) Type: Integer
Day of week; 1=Sunday, 2=Monday, etc.
/tz/standard@mon Required (only 1) Type: Integer
Month; 1=January, 2=February, etc.
/tz/standard@mday Optional (0 or 1) Type: Integer
Day of month (1..31)
/tz/standard@hour Required (only 1) Type: Integer
Transition hour (0..23)
/tz/standard@min Required (only 1) Type: Integer
Transition minute (0..59)
/tz/standard@sec Required (only 1) Type: Integer
Transition second; 0..59, usually 0
/tz/daylight Optional (0 or 1) Time/rule for transitioning from standard time to daylight time
See /tz/standard for more details.
/cancel Optional (0 or 1)
/cancel@s Optional (0 or 1) Type: Long
DTSTART time in milliseconds since the Epoch
/cancel@e Optional (0 or 1) Type: Long
DTEND time in milliseconds since the Epoch
/cancel/exceptId Optional (0 or 1) RECURRENCE_ID
/cancel/exceptId@range Optional (0 or 1) Type: String
Range - THISANDFUTURE|THISANDPRIOR
/cancel/exceptId@d Optional (0 or 1) Type: String
Date and/or time. Format is : YYYYMMDD['T'HHMMSS[Z]]
where:
     YYYY - 4 digit year
     MM   - 2 digit month
     DD   - 2 digit day
 Optionally:
     'T' the literal char "T" then 
     HH - 2 digit hour (00-23)
     MM - 2 digit minute (00-59)
     SS - 2 digit second (00-59)
     ...and finally an optional "Z" meaning that the time is UTC,
     otherwise the tz="TIMEZONE" param MUST be specified with the DATETIME
     e.g:
         20050612  June 12, 2005
         20050315T18302305Z  March 15, 2005 6:30:23.05 PM UTC
 
/cancel/exceptId@tz Optional (0 or 1) Type: String
Java timezone identifier
/cancel/dur Optional (0 or 1) DURATION
/cancel/dur@neg Optional (0 or 1) Type: 0|1
Set if the duration is negative.
/cancel/dur@w Optional (0 or 1) Type: Integer
Weeks component of the duration
Special note: if WEEKS are specified, NO OTHER OFFSET MAY BE SPECIFIED (weeks must be alone, per RFC2445)
/cancel/dur@d Optional (0 or 1) Type: Integer
Days component of the duration
/cancel/dur@h Optional (0 or 1) Type: Integer
Hours component of the duration
/cancel/dur@m Optional (0 or 1) Type: Integer
Minutes component of the duration
/cancel/dur@s Optional (0 or 1) Type: Integer
Seconds component of the duration
/cancel/dur@related Optional (0 or 1) Type: String
Specifies whether the alarm is related to the start of end.
Valid values are : START|END
/cancel/dur@count Optional (0 or 1) Type: Integer
Alarm repeat count
/cancel/recur Optional (0 or 1) RRULE/RDATE/EXDATE information
/cancel/recur/add Optional (0 or 1)
/cancel/recur/add/add Optional (0 or 1) See /cancel/recur/add for more details.
/cancel/recur/add/exclude Optional (0 or 1)
/cancel/recur/add/exclude/add Optional (0 or 1) See /cancel/recur/add for more details.
/cancel/recur/add/exclude/exclude Optional (0 or 1) See /cancel/recur/add/exclude for more details.
/cancel/recur/add/exclude/except Optional (0 or 1)
/cancel/recur/add/exclude/except@rangeType Required (only 1) Type: int
Recurrence range type
/cancel/recur/add/exclude/except@recurId Required (only 1) Type: String
Recurrence ID in format : YYMMDD[THHMMSS[Z]]
/cancel/recur/add/exclude/except@tz Optional (0 or 1) Type: String
Timezone name
/cancel/recur/add/exclude/except@ridZ Optional (0 or 1) Type: String
Recurrence-id in UTC time zone; used in non-all-day appointments only
Format: YYMMDDTHHMMSSZ
/cancel/recur/add/exclude/except/add Optional (0 or 1) Dates or rules which ADD instances. ADDs are evaluated before EXCLUDEs
See /cancel/recur for more details.
/cancel/recur/add/exclude/except/exclude Optional (0 or 1) Dates or rules which EXCLUDE instances
See /cancel/recur for more details.
/cancel/recur/add/exclude/cancel Optional (0 or 1)
/cancel/recur/add/exclude/cancel@rangeType Required (only 1) Type: int
Recurrence range type
/cancel/recur/add/exclude/cancel@recurId Required (only 1) Type: String
Recurrence ID in format : YYMMDD[THHMMSS[Z]]
/cancel/recur/add/exclude/cancel@tz Optional (0 or 1) Type: String
Timezone name
/cancel/recur/add/exclude/cancel@ridZ Optional (0 or 1) Type: String
Recurrence-id in UTC time zone; used in non-all-day appointments only
Format: YYMMDDTHHMMSSZ
/cancel/recur/add/exclude/dates Optional (0 or 1)
/cancel/recur/add/exclude/dates@tz Optional (0 or 1) Type: String
TZID
/cancel/recur/add/exclude/dates/dtval Optional (0 or more) Information on start date/time and end date/time or duration
/cancel/recur/add/exclude/dates/dtval/s Optional (0 or 1) Start DATE-TIME
/cancel/recur/add/exclude/dates/dtval/s@d Optional (0 or 1) Type: String
Date and/or time. Format is : YYYYMMDD['T'HHMMSS[Z]]
where:
     YYYY - 4 digit year
     MM   - 2 digit month
     DD   - 2 digit day
 Optionally:
     'T' the literal char "T" then
     HH - 2 digit hour (00-23)
     MM - 2 digit minute (00-59)
     SS - 2 digit second (00-59)
     ...and finally an optional "Z" meaning that the time is UTC,
     otherwise the tz="TIMEZONE" param MUST be specified with the DATETIME
     e.g:
         20050612  June 12, 2005
         20050315T18302305Z  March 15, 2005 6:30:23.05 PM UTC
 
/cancel/recur/add/exclude/dates/dtval/s@tz Optional (0 or 1) Type: String
Java timezone identifier
/cancel/recur/add/exclude/dates/dtval/s@u Optional (0 or 1) Type: Long
UTC time as milliseconds since the epoch. Set if non-all-day
/cancel/recur/add/exclude/dates/dtval/e Optional (0 or 1) Start DATE-TIME
See /cancel/recur/add/exclude/dates/dtval/s for more details.
/cancel/recur/add/exclude/dates/dtval/dur Optional (0 or 1) Duration information
See /cancel/dur for more details.
/cancel/recur/add/exclude/rule Optional (0 or 1)
/cancel/recur/add/exclude/rule@freq Required (only 1) Type: String
Frequency - SEC,MIN,HOU,DAI,WEE,MON,YEA
/cancel/recur/add/exclude/rule/until Optional (0 or 1) UNTIL date specification
/cancel/recur/add/exclude/rule/until@d Required (only 1) Type: String
Date in format : YYYYMMDD[ThhmmssZ]
/cancel/recur/add/exclude/rule/count Optional (0 or 1) Count of instances to generate
/cancel/recur/add/exclude/rule/count@num Required (only 1) Type: int
Number
/cancel/recur/add/exclude/rule/interval Optional (0 or 1) Interval specification
/cancel/recur/add/exclude/rule/interval@ival Required (only 1) Type: int
Rule interval count - a positive integer
/cancel/recur/add/exclude/rule/bysecond Optional (0 or 1) BYSECOND rule
/cancel/recur/add/exclude/rule/bysecond@seclist Required (only 1) Type: String
Comma separated list of seconds where second is a number between 0 and 59
/cancel/recur/add/exclude/rule/byminute Optional (0 or 1) BYMINUTE rule
/cancel/recur/add/exclude/rule/byminute@minlist Required (only 1) Type: String
Comma separated list of minutes where minute is a number between 0 and 59
/cancel/recur/add/exclude/rule/byhour Optional (0 or 1) BYHOUR rule
/cancel/recur/add/exclude/rule/byhour@hrlist Required (only 1) Type: String
Comma separated list of hours where hour is a number between 0 and 23
/cancel/recur/add/exclude/rule/byday Optional (0 or 1) BYDAY rule
/cancel/recur/add/exclude/rule/byday/wkday Optional (0 or more) By day weekday rule specification
/cancel/recur/add/exclude/rule/byday/wkday@day Required (only 1) Type: String
Weekday - SU|MO|TU|WE|TH|FR|SA
/cancel/recur/add/exclude/rule/byday/wkday@ordwk Optional (0 or 1) Type: Integer
Week number. [[+]|-]num num: 1 to 53
/cancel/recur/add/exclude/rule/bymonthday Optional (0 or 1) BYMONTHDAY rule
/cancel/recur/add/exclude/rule/bymonthday@modaylist Required (only 1) Type: String
Comma separated list of day numbers from either the start (positive) or the end (negative) of the month - format : [[+]|-]num[,...] where num between 1 to 31
e.g. modaylist="1,+2,-7"
means first day of the month, plus the 2nd day of the month, plus the 7th from last day of the month.
/cancel/recur/add/exclude/rule/byyearday Optional (0 or 1) BYYEARDAY rule
/cancel/recur/add/exclude/rule/byyearday@yrdaylist Required (only 1) Type: String
BYYEARDAY yearday list. Format : [[+]|-]num[,...]" where num is between 1 and 366
e.g. <byyearday yrdaylist="1,+2,-1"/> means January 1st, January 2nd, and December 31st.
/cancel/recur/add/exclude/rule/byweekno Optional (0 or 1) BYWEEKNO rule
/cancel/recur/add/exclude/rule/byweekno@wklist Required (only 1) Type: String
BYWEEKNO Week list. Format : [[+]|-]num[,...] where num is between 1 and 53
e.g. <byweekno wklist="1,+2,-1"/> means first week, 2nd week, and last week of the year.
/cancel/recur/add/exclude/rule/bymonth Optional (0 or 1) BYMONTH rule
/cancel/recur/add/exclude/rule/bymonth@molist Required (only 1) Type: String
Comma separated list of months where month is a number between 1 and 12
/cancel/recur/add/exclude/rule/bysetpos Optional (0 or 1) BYSETPOS rule
/cancel/recur/add/exclude/rule/bysetpos@poslist Required (only 1) Type: String
Format [[+]|-]num[,...] where num is from 1 to 366
<bysetpos> MUST only be used in conjunction with another <byXXX> element.
/cancel/recur/add/exclude/rule/wkst Optional (0 or 1) Week start day - SU,MO,TU,WE,TH,FR,SA
/cancel/recur/add/exclude/rule/wkst@day Required (only 1) Type: String
Weekday - SU|MO|TU|WE|TH|FR|SA
/cancel/recur/add/exclude/rule/rule-x-name Optional (0 or more) X Name rules
/cancel/recur/add/exclude/rule/rule-x-name@name Optional (0 or 1) Type: String
XNAME Name
/cancel/recur/add/exclude/rule/rule-x-name@value Optional (0 or 1) Type: String
XNAME Value
/cancel/recur/add/except Optional (0 or 1) See /cancel/recur/add/exclude/except for more details.
/cancel/recur/add/cancel Optional (0 or 1) See /cancel/recur/add/exclude/cancel for more details.
/cancel/recur/add/dates Optional (0 or 1) See /cancel/recur/add/exclude/dates for more details.
/cancel/recur/add/rule Optional (0 or 1) See /cancel/recur/add/exclude/rule for more details.
/cancel/recur/exclude Optional (0 or 1) See /cancel/recur/add/exclude for more details.
/cancel/recur/except Optional (0 or 1) See /cancel/recur/add/exclude/except for more details.
/cancel/recur/cancel Optional (0 or 1) See /cancel/recur/add/exclude/cancel for more details.
/cancel/recur/dates Optional (0 or 1) See /cancel/recur/add/exclude/dates for more details.
/cancel/recur/rule Optional (0 or 1) See /cancel/recur/add/exclude/rule for more details.
/comp Optional (0 or 1)
/comp@s Optional (0 or 1) Type: Long
DTSTART time in milliseconds since the Epoch
/comp@e Optional (0 or 1) Type: Long
DTEND time in milliseconds since the Epoch
/comp/exceptId Optional (0 or 1) RECURRENCE_ID
See /cancel/exceptId for more details.
/comp/dur Optional (0 or 1) DURATION
See /cancel/dur for more details.
/comp/recur Optional (0 or 1) RRULE/RDATE/EXDATE information
See /cancel/recur for more details.
/except Optional (0 or 1)
/except@s Optional (0 or 1) Type: Long
DTSTART time in milliseconds since the Epoch
/except@e Optional (0 or 1) Type: Long
DTEND time in milliseconds since the Epoch
/except/exceptId Optional (0 or 1) RECURRENCE_ID
See /cancel/exceptId for more details.
/except/dur Optional (0 or 1) DURATION
See /cancel/dur for more details.
/except/recur Optional (0 or 1) RRULE/RDATE/EXDATE information
See /cancel/recur for more details.
/usr Optional (0 or more) Freebusy user specifications
/usr@l Optional (0 or 1) Type: Integer
Calendar folder ID; if omitted, get f/b on all calendar folders
/usr@id Optional (0 or 1) Type: String
Zimbra ID Either "name" or "id" must be specified
/usr@name Optional (0 or 1) Type: String
Email address. Either "name" or "id" must be specified

CheckRecurConflictsResponse

    <CheckRecurConflictsResponse> ## CheckRecurConflictsResponse
        (<inst [s="{start-time-millis} (Long)"] [dur="{duration-millies} (Long)"] [allDay="{is-all-day} (0|1)"]
                   [tzo="{tz-offset-millis} (Integer)"] [ridZ="{utc-recurrence-id}"]> ## ConflictRecurrenceInstance
            (<usr name="{email}" fb="{freebusy-status-B|T|O}" /> ## FreeBusyUserStatus)*
          </inst>)*
    </CheckRecurConflictsResponse>

elements and attributes you can define within a <CheckRecurConflictsResponse> element:

XPath Required / Optional Description
/inst Optional (0 or more) Information on conflicting instances
/inst@s Optional (0 or 1) Type: Long
Start time in milliseconds
/inst@dur Optional (0 or 1) Type: Long
Duration in milliseconds
/inst@allDay Optional (0 or 1) Type: 0|1
Set if the instance is for an all day appointment
/inst@tzo Optional (0 or 1) Type: Integer
GMT offset of start time in milliseconds; returned only when allDay is set
/inst@ridZ Optional (0 or 1) Type: String
Recurrence ID string in UTC timezone
/inst/usr Optional (0 or more) Free/Busy user status
/inst/usr@name Required (only 1) Type: String
Email address for a user who has a conflict with the instance
/inst/usr@fb Required (only 1) Type: String
Free/Busy status - B|T|O (Busy, Tentative or Out-of-office)