CalDAV Request To gGt iCloud Calendar Events - calendar

I am trying to build an HTTP request to get events from an iCloud Calendar. I can get the details of a calendar (via PROPFIND) and get the details of a single calendar event via its event id (GET), but cannot write a request which returns calendar events within a specified time range.
Can anyone see what I'm doing wrong in the code below? The only response I get is (code 207). There is a single event in the calendar within the timeframe set.
<multistatus xmlns="DAV:"/>
From:
REPORT /<ICLOUD_USER_ID>/calendars/<ICLOUD_CALENDAR_ID>/ HTTP/1.1
Authorization: Basic <AUTHDATA>
Depth: 2
Prefer: return-minimal
Host: p31-caldav.icloud.com
Connection: close
User-Agent: Paw/2.2.2 (Macintosh; OS X/10.11.2) GCDHTTPRequest
Content-Length: 367
<c:calendar-query xmlns:d="DAV:" xmlns:c="urn:ietf:params:xml:ns:caldav">
<d:prop>
<c:calendar-data />
</d:prop>
<c:filter>
<c:comp-filter name="VCALENDAR">
<c:comp-filter name="VEVENT">
<c:time-range start="20160524T000000Z" end="20160526T000000Z" />
</c:comp-filter>
</c:comp-filter>
</c:filter>
</c:calendar-query>
Thanks in advance,
Jamie
Edit: The get request that does work:
Request:
GET /<ICLOUD_USER_ID>/calendars/<ICLOUD_CALENDAR_ID>/<ICLOUD_EVENT_ID>.ics HTTP/1.1
Authorization: Basic <AUTHDATA>
Depth: 1
Prefer: return-minimal
Host: p31-caldav.icloud.com
Connection: close
User-Agent: Paw/2.2.2 (Macintosh; OS X/10.11.2) GCDHTTPRequest
Response:
BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//Apple Inc.//Mac OS X 10.11.2//EN
CALSCALE:GREGORIAN
BEGIN:VTIMEZONE
TZID:Australia/Sydney
X-LIC-LOCATION:Australia/Sydney
BEGIN:STANDARD
DTSTART:18950201T000000
RDATE;VALUE=DATE-TIME:18950201T000000
TZNAME:AEST
TZOFFSETFROM:+100452
TZOFFSETTO:+1000
END:STANDARD
BEGIN:DAYLIGHT
DTSTART:19170101T000100
RDATE;VALUE=DATE-TIME:19170101T000100
RDATE;VALUE=DATE-TIME:19420101T020000
RDATE;VALUE=DATE-TIME:19420927T020000
RDATE;VALUE=DATE-TIME:19431003T020000
RDATE;VALUE=DATE-TIME:19861019T020000
RDATE;VALUE=DATE-TIME:20000827T020000
TZNAME:AEDT
TZOFFSETFROM:+1000
TZOFFSETTO:+1100
END:DAYLIGHT
BEGIN:STANDARD
DTSTART:19170325T020000
RDATE;VALUE=DATE-TIME:19170325T020000
RDATE;VALUE=DATE-TIME:19420329T020000
RDATE;VALUE=DATE-TIME:19720227T030000
RDATE;VALUE=DATE-TIME:19820404T030000
RDATE;VALUE=DATE-TIME:20060402T030000
RDATE;VALUE=DATE-TIME:20070325T030000
TZNAME:AEST
TZOFFSETFROM:+1100
TZOFFSETTO:+1000
END:STANDARD
BEGIN:STANDARD
DTSTART:19430328T020000
RRULE:FREQ=YEARLY;UNTIL=19440325T150000Z;BYDAY=-1SU;BYMONTH=3
TZNAME:AEST
TZOFFSETFROM:+1100
TZOFFSETTO:+1000
END:STANDARD
BEGIN:STANDARD
DTSTART:19710101T000000
RDATE;VALUE=DATE-TIME:19710101T000000
TZNAME:AEST
TZOFFSETFROM:+1000
TZOFFSETTO:+1000
END:STANDARD
BEGIN:DAYLIGHT
DTSTART:19711031T020000
RRULE:FREQ=YEARLY;UNTIL=19851026T160000Z;BYDAY=-1SU;BYMONTH=10
TZNAME:AEDT
TZOFFSETFROM:+1000
TZOFFSETTO:+1100
END:DAYLIGHT
BEGIN:STANDARD
DTSTART:19730304T030000
RRULE:FREQ=YEARLY;UNTIL=19810228T160000Z;BYDAY=1SU;BYMONTH=3
TZNAME:AEST
TZOFFSETFROM:+1100
TZOFFSETTO:+1000
END:STANDARD
BEGIN:STANDARD
DTSTART:19830306T030000
RRULE:FREQ=YEARLY;UNTIL=19850302T160000Z;BYDAY=1SU;BYMONTH=3
TZNAME:AEST
TZOFFSETFROM:+1100
TZOFFSETTO:+1000
END:STANDARD
BEGIN:STANDARD
DTSTART:19860316T030000
RRULE:FREQ=YEARLY;UNTIL=19890318T160000Z;BYDAY=3SU;BYMONTH=3
TZNAME:AEST
TZOFFSETFROM:+1100
TZOFFSETTO:+1000
END:STANDARD
BEGIN:DAYLIGHT
DTSTART:19871025T020000
RRULE:FREQ=YEARLY;UNTIL=19991030T160000Z;BYDAY=-1SU;BYMONTH=10
TZNAME:AEDT
TZOFFSETFROM:+1000
TZOFFSETTO:+1100
END:DAYLIGHT
BEGIN:STANDARD
DTSTART:19900304T030000
RRULE:FREQ=YEARLY;UNTIL=19950304T160000Z;BYDAY=1SU;BYMONTH=3
TZNAME:AEST
TZOFFSETFROM:+1100
TZOFFSETTO:+1000
END:STANDARD
BEGIN:STANDARD
DTSTART:19960331T030000
RRULE:FREQ=YEARLY;UNTIL=20050326T160000Z;BYDAY=-1SU;BYMONTH=3
TZNAME:AEST
TZOFFSETFROM:+1100
TZOFFSETTO:+1000
END:STANDARD
BEGIN:DAYLIGHT
DTSTART:20011028T020000
RRULE:FREQ=YEARLY;UNTIL=20071027T160000Z;BYDAY=-1SU;BYMONTH=10
TZNAME:AEDT
TZOFFSETFROM:+1000
TZOFFSETTO:+1100
END:DAYLIGHT
BEGIN:STANDARD
DTSTART:20080406T030000
RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4
TZNAME:AEST
TZOFFSETFROM:+1100
TZOFFSETTO:+1000
END:STANDARD
BEGIN:DAYLIGHT
DTSTART:20081005T020000
RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=10
TZNAME:AEDT
TZOFFSETFROM:+1000
TZOFFSETTO:+1100
END:DAYLIGHT
END:VTIMEZONE
BEGIN:VEVENT
CREATED:20160331T004928Z
UID:86ABADB9-CDC3-45D0-B932-5420DC10390A
DTEND;TZID=Australia/Sydney:20160425T093000
SUMMARY:Sample Event
DTSTART;TZID=Australia/Sydney:20160425T073000
DTSTAMP:20160509T000541Z
LAST-MODIFIED:20160408T220749Z
SEQUENCE:1
TRANSP:OPAQUE
X-APPLE-TRAVEL-ADVISORY-BEHAVIOR:AUTOMATIC
END:VEVENT
END:VCALENDAR

There is no such thing like Depth: 2. You probably want Depth: 1.
Check: RFC2518

This is about the calendar provider implementation. The body of the request is completely fine, and seeing the event iCalendar representation, the response for the request should return the event.
The very only thing that I see that might be causing this is the Prefer: return-minimal header. Refer to The "return-minimal" Preference to know more about it. The calendar-query REPORT is requesting just for the calendar-data. Normally the client requests for the eTags, so it checks if there are any difference between the calendars object it has and the ones in the server, if there is any different calendar object then the client sends a CALDAV:calendar-multiget REPORT with the href of the calendar objects that are differents.
Try it removing the Prefer: return-minimal header or instead try to change
<d:prop>
<c:calendar-data />
</d:prop>
to
<d:prop>
<d:getetag />
</d:prop>
Hope it helps.

As suggested, try to only ask for the etag and then use the answered urls for a calendar-multiget REPORT.
I can recommended to you to use fiddler or any other program so you can see the requests and responses clearly. Also try to watch the requests from other clients like emClient for example.

Method-: REPORT
Content type-: application/xml; charset=utf-8
Header -: Depth : 1
URL-:GET /<ICLOUD_USER_ID>/calendars/
Set credentials
Following is RequestContent-:
<C:calendar-query xmlns:D='DAV:'
xmlns:C='urn:ietf:params:xml:ns:caldav'>
<D:prop>
<D:getetag/>
<C:calendar-data>
<C:comp name='VCALENDAR'>
<C:prop name='VERSION'/>
<C:comp name='VEVENT'>
<C:prop name='SUMMARY'/>
<C:prop name='DESCRIPTION'/>
<C:prop name='STATUS'/>
<C:prop name='TRANSP'/>
<C:prop name='ATTENDEE'/>
<C:prop name='UID'/>
<C:prop name='DTSTART'/>
<C:prop name='DTEND'/>
<C:prop name='DURATION'/>
<C:prop name='RRULE'/>
<C:prop name='RDATE'/>
<C:prop name='EXRULE'/>
<C:prop name='EXDATE'/>
<C:prop name='RECURRENCE-ID'/>
</C:comp>
</C:comp>
</C:calendar-data>
</D:prop>
<C:filter>
<C:comp-filter name='VCALENDAR'>
<C:comp-filter name='VEVENT'>
<C:time-range start='20160524T000000Z'
end='20160526T000000Z'/>
</C:comp-filter>
</C:comp-filter>
</C:filter>
</C:calendar-query>
I think problem is with URL and method used. Use URL till calendars i.e /ICLOUD_USER_ID/calendars/ and method should be REPORT.

Related

ical4j: add organizer who is able to cancel an event?

I am using ical4j to send out emails with a calendar attachment. I am able to add an organizer based on this SO post: How should I use iCal4j to add a meeting organizer to an iCal event
event.getProperties().add(new Organizer("mailto:bob#example.com"));
The problem is that no attendees added to the calendar is able to cancel an event. If I create (manually, no ical4j) an calendar appointment in Outlook Online, I am able to cancel an event as shown below:
However, the email with an ical4j attachment I received as the organizer (see the above code example) only gives me three options: Yes, No, Maybe as shown below:
How can I make someone among an meeting's attendees be able to cancel the meeting?
------- Update 11/15 -------
Based on the suggestion from #fortuna, my program generated the following event. I am still unable to cancel an event.
BEGIN:VCALENDAR
PRODID:-//Events Calendar//iCal4j 3.0.1//EN
CALSCALE:GREGORIAN
METHOD:REQUEST
BEGIN:VEVENT
DTSTAMP:20211115T144506Z
DTSTART;TZID=America/New_York:20211215T110000
DTEND;TZID=America/New_York:20211215T114500
SUMMARY:ABC123 School
TZID:America/New_York
LOCATION:Virtual
UID:153ab747-bbd2-4964-9112-9fa0d29ed306
STATUS:CONFIRMED
ORGANIZER;ROLE=CHAIR:mailto:dev1#example.com
ATTENDEE;ROLE=REQ-PARTICIPANT:mailto:dev2#example.com
ATTENDEE;ROLE=REQ-PARTICIPANT:mailto:dev1#gmail.com
END:VEVENT
END:VCALENDAR
I manually generated an event in Outlook Online and forwarded it to my yahoo account to get the calendar attachment:
BEGIN:VCALENDAR
METHOD:REQUEST
PRODID:Microsoft Exchange Server 2010
VERSION:2.0
BEGIN:VTIMEZONE
TZID:Eastern Standard Time
BEGIN:STANDARD
DTSTART:16010101T020000
TZOFFSETFROM:-0400
TZOFFSETTO:-0500
RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=1SU;BYMONTH=11
END:STANDARD
BEGIN:DAYLIGHT
DTSTART:16010101T020000
TZOFFSETFROM:-0500
TZOFFSETTO:-0400
RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=2SU;BYMONTH=3
END:DAYLIGHT
END:VTIMEZONE
BEGIN:VEVENT
ORGANIZER;CN="dev1":mailto:dev1#example.com
ATTENDEE;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION;RSVP=TRUE;CN=dev2
g:mailto:dev2#yahoo.com
ATTENDEE;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION;RSVP=TRUE;CN="dev3"
:mailto:dev3#example.com
DESCRIPTION;LANGUAGE=en-US:\n\n\n________________________________________\n
From: dev1 <dev1#example.com>\nSent: Monday\, November 15\, 2021 8:5
2:23 AM (UTC-05:00) Eastern Time (US & Canada)\nTo: dev3\; dev1\,
\nSubject: test\, please ignore it.\nWhen: Monday\, N
ovember 22\, 2021 10:30 AM-11:00 AM.\nWhere:\n\ntest\n\n__________________
______________________________________________________________\nMicrosoft
Teams meeting\nJoin on your computer or mobile app\nClick here to join the
.....
cdd5fc5d11c&threadId=19_meeting_OGYzZjAdddxMjYtYYy00ZDE4LWE0NjctZjY4OTA0ZG
I0ZTQ4#thread.v2&messageId=0&language=en-US>\n____________________________
____________________________________________________\n
UID:040000008200E00074C5B7101A82E00800000000933C540328DAD701000000000000000
0100000001771BBC5CAD45B499CBF167EE077185B
SUMMARY;LANGUAGE=en-US:FW: another test for GRD\, please ignore it.
DTSTART;TZID=Eastern Standard Time:20211122T103000
DTEND;TZID=Eastern Standard Time:20211122T110000
CLASS:PUBLIC
PRIORITY:5
DTSTAMP:20211115T135223Z
TRANSP:OPAQUE
STATUS:CONFIRMED
SEQUENCE:0
LOCATION;LANGUAGE=en-US:
X-MICROSOFT-CDO-APPT-SEQUENCE:0
X-MICROSOFT-CDO-OWNERAPPTID:2119924365
X-MICROSOFT-CDO-BUSYSTATUS:TENTATIVE
X-MICROSOFT-CDO-INTENDEDSTATUS:BUSY
X-MICROSOFT-CDO-ALLDAYEVENT:FALSE
X-MICROSOFT-CDO-IMPORTANCE:1
X-MICROSOFT-CDO-INSTTYPE:0
X-MICROSOFT-ONLINEMEETINGINFORMATION:{"OnlineMeetingChannelId":null\,"Onlin
eMeetingProvider":3}
X-MICROSOFT-ONLINEMEETINGTOLLNUMBER:+1 571-429-6038
X-MICROSOFT-ONLINEMEETINGCONFERENCEID:475654328
X-MICROSOFT-SKYPETEAMSMEETINGURL:https://teams.microsoft.com/l/meetup-join/
19%3ameeting_OGYzZjAxMjYtYzFlYy00ZDE4LWE0NjctZjY4OTA0ZGI0ZTQ4%40thread.v2/
0?context=%7b%22Tid%22%3a989b5e2ddda-14e4-4efe-93b7-8cdd5fc5d11c%22%2c%22O
id%22%3a%2256f6a1be-b722-47fd-b69c-5950f281818f%22%7d
X-MICROSOFT-SCHEDULINGSERVICEUPDATEURL:https://api.scheduler.teams.microsof
t.com/teams/989b5e2a-14e4-4efe-9ddd5fsasdfc5d11c/56f6a1be-b722-47fd-b69c-5
950f281818f/19_meeting_OGYzZjddYtYzFl4Ysa00ZDE4LWE0NjctZjY4OTA0ZGI0ZTQ4#th
read.v2/0
X-MICROSOFT-SKYPETEAMSPROPERTIES:{"cid":"19:meeting_OGYzZjAxMjYtYzFlYy00ZDE
4LWE0NjctZjY4OTA0ZGI0ZTQ4#thread.v2"\,"rid":0\,"mid":0\,"uid":null\,"priva
te":true\,"type":0}
X-MICROSOFT-ONLINEMEETINGCONFLINK:conf:sip:dev1#example.com\;gruu\;opaque=app:
conf:focus:id:teams:2:0!19:meeting_OGYzZxAxMjYtdasYzFlYy00Z4LWE0NjctZjY4OTA
0ZGI0ZTQ4-thread.v2!56f6a1beb72247fdb69c5818dasdfsadf!989b5e2a14e44efe93b78
cdd5fc5d11c
X-MICROSOFT-DONOTFORWARDMEETING:FALSE
X-MICROSOFT-DISALLOW-COUNTER:FALSE
X-MICROSOFT-LOCATIONS:[]
BEGIN:VALARM
DESCRIPTION:REMINDER
TRIGGER;RELATED=START:-PT15M
ACTION:DISPLAY
END:VALARM
END:VEVENT
END:VCALENDAR
I suspect you may need to add something like a participation role to your organizer property:
https://datatracker.ietf.org/doc/html/rfc5545#section-3.2.16
e.g. ORGANIZER;ROLE=CHAIR:bob#example.com
Another way to find out how Outlook does it is to forward the event "as icalendar" to another email address and inspect the ".ics" attachment.

ICS file in gmail - EXDATE (excluding dates) does not work in gmail

I have ics file with EXDATE and this not work for gmail.
It works in outlook but gmail add calendar event also for dates that are excluded.
This is known issue or I have some bugs in ics?
BEGIN:VCALENDAR
VERSION:2.0
PRODID: something
X-MS-OLK-FORCEINSPECTOROPEN:TRUE
X-WR-TIMEZONE:Europe/Oslo
CALSCALE:GREGORIAN
BEGIN:VTIMEZONE
TZID:Europe/Oslo
TZURL:http://tzurl.org/zoneinfo-outlook/Europe/Oslo
X-LIC-LOCATION:Europe/Oslo
BEGIN:DAYLIGHT
TZOFFSETFROM:+0100
TZOFFSETTO:+0200
TZNAME:CEST
DTSTART:19700329T020000
RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
END:DAYLIGHT
BEGIN:STANDARD
TZOFFSETFROM:+0200
TZOFFSETTO:+0100
TZNAME:CET
END:STANDARD
END:VTIMEZONE
BEGIN:VEVENT
ORGANIZER;CN=Some:mailto:some#some.com
ATTENDEE;ROLE=REQ-PARTICIPANT;CUTYPE=INDIVIDUAL;PARTSTAT=ACCEPTED;RSVP=TRUE;CN=some#some.com:mailto:some#some.com
DESCRIPTION;LANGUAGE=en-US:
SUMMARY:Test
DTSTAMP:20210331T112255
DTSTART;VALUE=DATE-TIME:20210305T060000
DTEND;VALUE=DATE-TIME:20210305T133000
RRULE:FREQ=DAILY;UNTIL=20210308T060000;INTERVAL=1
EXDATE;VALUE=DATE-TIME:20210306T123000
EXDATE;VALUE=DATE-TIME:20210307T123000
TRANSP:OPAQUE
STATUS:CONFIRMED
END:VEVENT
END:VCALENDAR
another EXDATE also not works for gmail but works in outlook
EXDATE;VALUE=DATE-TIME:20210306T123000,20210307T123000
Thanks for any advice!

In gmail, Add to calendar button not working properly in ics file header

I sent invitation mail with attachment of .ics file. but when mail is sent to the user, User have a .ics file header with message body and a attachment link
In ics file heade, when user click on add calendar button to add event in the calendar. it does not add event in the calendar and just loading after some time shows the message
'Calendar could not load the data. Please try reloading later.'
Here is my .ics file
BEGIN:VCALENDAR
PRODID:-//Google Inc//Google Calendar 70.9054//EN
VERSION:2.0
CALSCALE:GREGORIAN
METHOD:PUBLISH
BEGIN:VEVENT
DTSTART;VALUE=DATE:20190514
DTEND;VALUE=DATE:20190515
RRULE:FREQ=DAILY;COUNT=2
DESCRIPTION:
LOCATION:Vrandawan Dham Colony\, Ujjain\, Madhya Pradesh 456010\,
India
SEQUENCE:0
STATUS:CONFIRMED
SUMMARY:AllDRepeatDaily_times
TRANSP:TRANSPARENT
END:VEVENT
END:VCALENDAR`
I removed UID from Ics file but it does not work for me
I am thankful, If anyone help me regarding this issue
Below code works for me
BEGIN:VCALENDAR
PRODID:-//Google Inc//Google Calendar 70.9054//EN
VERSION:2.0
CALSCALE:GREGORIAN
METHOD:PUBLISH
BEGIN:VEVENT
DTSTART:20190514
DTEND:20190515
RRULE:FREQ=DAILY;COUNT=2
DESCRIPTION:
LOCATION:
India
SEQUENCE:0
STATUS:CONFIRMED
SUMMARY:AllDRepeatDaily_times
TRANSP:TRANSPARENT
END:VEVENT
END:VCALENDAR

Reading a iCal file only gets most recent event?

I have an ics file which is generated by a project I am doing, and it validates in http://severinghaus.org/projects/icv/. When I try to import it into KOrganizer or Maya it only loads the most recent event however. For example, the ics file is:
BEGIN:VCALENDAR
CALSCALE:GREGORIAN
PRODID:-//K Desktop Environment//NONSGML libkcal 4.3//EN
VERSION:2.0
BEGIN:VEVENT
DTSTAMP:20130504T094939Z
CREATED:20130503T230000Z
LAST-MODIFIED:20130504T094939Z
SUMMARY:Cat
DTSTART:20130504T000000
DTEND:20130504T010000
TRANSP:OPAQUE
END:VEVENT
BEGIN:VEVENT
DTSTAMP:20130504T094939Z
CREATED:20130503T230000Z
LAST-MODIFIED:20130504T094939Z
SUMMARY:Foo
DTSTART:20130504T000000
DTEND:20130504T010000
TRANSP:OPAQUE
END:VEVENT
BEGIN:VEVENT
DTSTAMP:20130504T094939Z
CREATED:20130503T230000Z
LAST-MODIFIED:20130504T094939Z
SUMMARY:Dog
DTSTART:20130504T000000
DTEND:20130504T010000
TRANSP:OPAQUE
END:VEVENT
END:VCALENDAR
It will read it in, but only display the first event. It also changes the ics file to
BEGIN:VCALENDAR
PRODID:-//K Desktop Environment//NONSGML libkcal 4.3//EN
VERSION:2.0
X-KDE-ICAL-IMPLEMENTATION-VERSION:1.0
BEGIN:VEVENT
DTSTAMP:20130504T094939Z
CREATED:20130504T094939Z
LAST-MODIFIED:20130504T094939Z
SUMMARY:Cat
DTSTART:20130504T000000
DTEND:20130504T010000
TRANSP:OPAQUE
END:VEVENT
END:VCALENDAR
Does anyone know if it is my ics file which is at fault, or Kontact?
Well, for one thing, every event must have a unique UID property..

update calendar failed when rrule has BYDAY && (COUNT or UNTIL)

I use ical and darwin in my web site.
when i create a event with rrule, it failed when the event has byday and count.
Forexample:
success 1(weekly and no count):
BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//ZHAOXI//iCalendar 1.0.0//
BEGIN:VEVENT
UID:20130410T020715CST-05076UU95w#ZHAOXI
DTSTAMP:20130409T180715Z
CLASS:PUBLIC
DTSTART:20130411T110000
DTEND:20130411T150000
ORGANIZER;SCHEDULE-AGENT=NONE;SCHEDULE-STATUS=5.3:MAILTO:user_3#zhaoxi.me
RRULE:FREQ=WEEKLY;BYDAY=TH,SA
SEQUENCE:0
SUMMARY:ssssss
X-ZX-RESPONSE:Y
END:VEVENT
BEGIN:VEVENT
UID:20130410T020715CST-05076UU95w#ZHAOXI
DTSTAMP:20130409T180718Z
CLASS:PUBLIC
DTSTART:20130413T130000
DTEND:20130413T170000
ORGANIZER:MAILTO:user_3#zhaoxi.me
RECURRENCE-ID:20130413T110000
SEQUENCE:1
SUMMARY:ssssss
X-ZX-RESPONSE:Y
END:VEVENT
END:VCALENDAR
success 2 (daily with count):
BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//ZHAOXI//iCalendar 1.0.0//
BEGIN:VEVENT
UID:20130410T021754CST-68882mJ5aU#ZHAOXI
DTSTAMP:20130409T181754Z
CLASS:PUBLIC
DTSTART:20130416T173000
DTEND:20130416T200000
ORGANIZER;SCHEDULE-AGENT=NONE;SCHEDULE-STATUS=5.3:MAILTO:user_3#zhaoxi.me
RRULE:FREQ=DAILY;COUNT=10
SEQUENCE:0
SUMMARY:sdf
X-ZX-RESPONSE:Y
END:VEVENT
BEGIN:VEVENT
UID:20130410T021754CST-68882mJ5aU#ZHAOXI
DTSTAMP:20130409T181805Z
CLASS:PUBLIC
DTSTART:20130417T190000
DTEND:20130417T213000
ORGANIZER:MAILTO:user_3#zhaoxi.me
RECURRENCE-ID:20130417T173000
SEQUENCE:1
SUMMARY:sdf
X-ZX-RESPONSE:Y
END:VEVENT
BEGIN:VEVENT
UID:20130410T021754CST-68882mJ5aU#ZHAOXI
DTSTAMP:20130409T181850Z
CLASS:PUBLIC
DTSTART:20130419T183000
DTEND:20130419T210000
ORGANIZER:MAILTO:user_3#zhaoxi.me
RECURRENCE-ID:20130419T173000
SEQUENCE:1
SUMMARY:sdf
X-ZX-RESPONSE:Y
END:VEVENT
END:VCALENDAR
failed 1:
BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//ZHAOXI//iCalendar 1.0.0//
BEGIN:VEVENT
UID:20130410T015311CST-3605lc7xEv#ZHAOXI
DTSTAMP:20130409T175311Z
CLASS:PUBLIC
DTSTART:20130411T050000
DTEND:20130411T083000
ORGANIZER;SCHEDULE-AGENT=NONE;SCHEDULE-STATUS=5.3:MAILTO:user_3#zhaoxi.me
RRULE:FREQ=WEEKLY;UNTIL=20130420T050000Z;BYDAY=TH,SA
SEQUENCE:0
SUMMARY:dddddddd
X-ZX-RESPONSE:Y
END:VEVENT
BEGIN:VEVENT
UID:20130410T015311CST-3605lc7xEv#ZHAOXI
DTSTAMP:20130409T180755Z
CLASS:PUBLIC
DTSTART:20130413T070000
DTEND:20130413T103000
ORGANIZER:MAILTO:user_3#zhaoxi.me
RECURRENCE-ID:20130413T053000
SEQUENCE:1
SUMMARY:dddddddd
X-ZX-RESPONSE:Y
END:VEVENT
END:VCALENDAR
I think the difference is the rrule, but i could not find the reason~
Your master component has
DTSTART:20130411T050000
but your exception has
RECURRENCE-ID:20130413T053000
The recurrence id should always match one of (expanded) instances of the event. The date part is correct (20130413 is the saturday following the first instance) but the time part is 053000 when the first instance shows a time part of 050000.
In other words, your recurrence-id should be:
RECURRENCE-ID:20130413T050000
there is nothing wrong in your rrule, but however RFC5545 ยง3.8.4.7 specifies
"UID" itself MUST be a globally unique identifier and in all 3 of your icalendar files you are using the same UID. Have you tried with each event having a different UID to see how the server handles it?

Resources