Wiki source code of Creating a CalDAV collection

Last modified by Pascal Robert on 2013/11/18 06:15

Show last authors
1 To create a new CalDAV collection, you must use the [[MKCALENDAR>>url:http://tools.ietf.org/html/rfc4791#section-5.3.1||rel="nofollow" style="text-decoration: underline;" shape="rect" class="external-link"]] HTTP method. You don't need to pass any properties in the request, you can create a collection with only:
2
3 (% class="syntaxhighlighter nogutter html" %)
4 (((
5
6
7 |(((
8 (% class="container" title="Hint: double-click to select code" %)
9 (((
10 (% class="line number1 index0 alt2" %)
11 (((
12 {{code language="none"}}
13 MKCALENDAR /calendars/__uids__/D0CA5B92-B12F-4CC1-AB67-CCDC5ED665B4/mynewcalendar/
14 {{/code}}
15 )))
16
17 (% class="line number2 index1 alt1" %)
18 (((
19 {{code language="none"}}
20  
21 {{/code}}
22 )))
23
24 (% class="line number3 index2 alt2" %)
25 (((
26 {{code language="none"}}
27 <?
28 {{/code}}
29
30 {{code language="none"}}
31 xml
32 {{/code}}
33
34
35
36 {{code language="none"}}
37 version
38 {{/code}}
39
40 {{code language="none"}}
41 =
42 {{/code}}
43
44 {{code language="none"}}
45 "1.0"
46 {{/code}}
47
48
49
50 {{code language="none"}}
51 encoding
52 {{/code}}
53
54 {{code language="none"}}
55 =
56 {{/code}}
57
58 {{code language="none"}}
59 "utf-8"
60 {{/code}}
61
62
63
64 {{code language="none"}}
65 ?>
66 {{/code}}
67 )))
68
69 (% class="line number4 index3 alt1" %)
70 (((
71 {{code language="none"}}
72 <
73 {{/code}}
74
75 {{code language="none"}}
76 C:mkcalendar
77 {{/code}}
78
79
80
81 {{code language="none"}}
82 xmlns:D
83 {{/code}}
84
85 {{code language="none"}}
86 =
87 {{/code}}
88
89 {{code language="none"}}
90 "DAV:"
91 {{/code}}
92
93
94
95 {{code language="none"}}
96 xmlns:C
97 {{/code}}
98
99 {{code language="none"}}
100 =
101 {{/code}}
102
103 [[urn:ietf:params:xml:ns:caldav>>url:http://urnietfparamsxml:ns:caldav||shape="rect"]]
104
105 {{code language="none"}}
106 ""
107 {{/code}}
108
109 {{code language="none"}}
110 >
111 {{/code}}
112 )))
113
114 (% class="line number5 index4 alt2" %)
115 (((
116 {{code language="none"}}
117 </
118 {{/code}}
119
120 {{code language="none"}}
121 C:mkcalendar
122 {{/code}}
123
124 {{code language="none"}}
125 >
126 {{/code}}
127 )))
128 )))
129 )))
130
131
132 )))
133
134 If you do it with this simple request, the display name of the collection will be the last part of the URL (//mynewcalendar//). In the request, you can send most of the DAV and CalDAV [[attributes that applies to a calendar collection>>url:http://www.macti.ca/wiki/display/CAL/CalDAV+and+CardDAV+properties||style="text-decoration: underline;" shape="rect"]] (warning: some of the
135
136 A successful request will return a HTTP 201 status code.
137
138 (% class="syntaxhighlighter nogutter html" %)
139 (((
140
141
142 |(((
143 (% class="container" title="Hint: double-click to select code" %)
144 (((
145 (% class="line number1 index0 alt2" %)
146 (((
147 {{code language="none"}}
148 HTTP/1.1 201 Created
149 {{/code}}
150 )))
151
152 (% class="line number2 index1 alt1" %)
153 (((
154 {{code language="none"}}
155 Content-Length: 0
156 {{/code}}
157 )))
158
159 (% class="line number3 index2 alt2" %)
160 (((
161 {{code language="none"}}
162 Server: CalendarServer/4.2(CalendarServerv19.0.95) Twisted/12.0.0 TwistedWeb/9.0.0
163 {{/code}}
164 )))
165
166 (% class="line number4 index3 alt1" %)
167 (((
168 {{code language="none"}}
169 Last-Modified: Thu, 21 Feb 2013 03:09:56 GMT
170 {{/code}}
171 )))
172
173 (% class="line number5 index4 alt2" %)
174 (((
175 {{code language="none"}}
176 DAV: 1, access-control, calendar-access, addressbook, extended-mkcol
177 {{/code}}
178 )))
179
180 (% class="line number6 index5 alt1" %)
181 (((
182 {{code language="none"}}
183 Etag: "25b621cd05498be5ab945acda80cf3dc"
184 {{/code}}
185 )))
186
187 (% class="line number7 index6 alt2" %)
188 (((
189 {{code language="none"}}
190 Date: Thu, 21 Feb 2013 03:09:56 GMT
191 {{/code}}
192 )))
193
194 (% class="line number8 index7 alt1" %)
195 (((
196 {{code language="none"}}
197 Connection: close, close
198 {{/code}}
199 )))
200 )))
201 )))
202
203
204 )))
205
206 So you only need to read the status code to know if the request was successful (you might want to store the value of the [[Etag>>url:http://tools.ietf.org/html/rfc2616#section-14.19||rel="nofollow" style="text-decoration: underline;" shape="rect" class="external-link"]] value if needed).
207
208 If you don't put a slash at the end of the URL, e.g.// /mycalendar// instead of ///mycalendar///, the status code will 301 (Moved Permanently), and the collection WON'T be created, so be sure you add the slash at the end.
209
210 If you don't get a 201 status code, it means you got an error. The following errors can occur:
211
212 * 403 (Forbidden)
213 * 409 (Conflict)
214 * 415 (Unsupported Media Type)
215 * 507 (Insufficient Storage)
216 * 207 (Multi-Status)
217
218 As a rule of thumb:
219
220 * If you get a 201 (Created) status code, it's a success, you don't have anything special to do.
221 * If you get a 3xx (redirection), resend the request by adding a / at the end of the URL.
222 * If you get a 4xx or a 207 status code, it's an error on the client side. If the content-type of the response is "text/xml", parse it to find the exact error.
223 * If you get a 5xx status code, it's an error on the server side. You can't do much except asking the manager of the server about the problem, or retry to send the request later.
224
225 A 405 (Unsupported Media Type) might happen if you send the wrong namespace in your request. Example:
226
227 (% class="syntaxhighlighter nogutter html" %)
228 (((
229
230
231 |(((
232 (% class="container" title="Hint: double-click to select code" %)
233 (((
234 (% class="line number1 index0 alt2" %)
235 (((
236 {{code language="none"}}
237 MKCALENDAR /calendars/__uids__/D0CA5B92-B12F-4CC1-AB67-CCDC5ED665B4/mynewcalendar/
238 {{/code}}
239 )))
240
241 (% class="line number2 index1 alt1" %)
242 (((
243
244 )))
245
246 (% class="line number3 index2 alt2" %)
247 (((
248 {{code language="none"}}
249 <?
250 {{/code}}
251
252 {{code language="none"}}
253 xml
254 {{/code}}
255
256
257
258 {{code language="none"}}
259 version
260 {{/code}}
261
262 {{code language="none"}}
263 =
264 {{/code}}
265
266 {{code language="none"}}
267 "1.0"
268 {{/code}}
269
270
271
272 {{code language="none"}}
273 encoding
274 {{/code}}
275
276 {{code language="none"}}
277 =
278 {{/code}}
279
280 {{code language="none"}}
281 "utf-8"
282 {{/code}}
283
284
285
286 {{code language="none"}}
287 ?>
288 {{/code}}
289 )))
290
291 (% class="line number4 index3 alt1" %)
292 (((
293 {{code language="none"}}
294 <
295 {{/code}}
296
297 {{code language="none"}}
298 C:mkcalendar
299 {{/code}}
300
301
302
303 {{code language="none"}}
304 xmlns:D
305 {{/code}}
306
307 {{code language="none"}}
308 =
309 {{/code}}
310
311 {{code language="none"}}
312 "DAV:"
313 {{/code}}
314
315
316
317 {{code language="none"}}
318 xmlns:C
319 {{/code}}
320
321 {{code language="none"}}
322 =
323 {{/code}}
324
325 [[urn:ietf:params:xml:ns:carddav>>url:http://urnietfparamsxml:ns:carddav||shape="rect"]]
326
327 {{code language="none"}}
328 ""
329 {{/code}}
330
331 {{code language="none"}}
332 >
333 {{/code}}
334 )))
335
336 (% class="line number5 index4 alt2" %)
337 (((
338 {{code language="none"}}
339 </
340 {{/code}}
341
342 {{code language="none"}}
343 C:mkcalendar
344 {{/code}}
345
346 {{code language="none"}}
347 >
348 {{/code}}
349 )))
350
351 (% class="line number6 index5 alt1" %)
352 (((
353 {{code language="none"}}
354  
355 {{/code}}
356 )))
357
358 (% class="line number7 index6 alt2" %)
359 (((
360 {{code language="none"}}
361 HTTP/1.1 415 Unsupported Media Type
362 {{/code}}
363 )))
364 )))
365 )))
366
367
368 )))
369
370 Where is the error in my request? It was using the Ca**rd**DAV namespace instead of the Ca**l**DAV namespace, hence the error.
371
372 A 403 (Forbidden) error might happen if you try to create a new collection on top of another collection. For example, if you sent the same MKCALENDAR requests two times:
373
374 (% class="syntaxhighlighter nogutter html" %)
375 (((
376
377
378 |(((
379 (% class="container" title="Hint: double-click to select code" %)
380 (((
381 (% class="line number1 index0 alt2" %)
382 (((
383 {{code language="none"}}
384 MKCALENDAR /calendars/__uids__/D0CA5B92-B12F-4CC1-AB67-CCDC5ED665B4/mynewcalendar/
385 {{/code}}
386 )))
387
388 (% class="line number2 index1 alt1" %)
389 (((
390 {{code language="none"}}
391  
392 {{/code}}
393
394
395 )))
396
397 (% class="line number3 index2 alt2" %)
398 (((
399 {{code language="none"}}
400 <?
401 {{/code}}
402
403 {{code language="none"}}
404 xml
405 {{/code}}
406
407
408
409 {{code language="none"}}
410 version
411 {{/code}}
412
413 {{code language="none"}}
414 =
415 {{/code}}
416
417 {{code language="none"}}
418 "1.0"
419 {{/code}}
420
421
422
423 {{code language="none"}}
424 encoding
425 {{/code}}
426
427 {{code language="none"}}
428 =
429 {{/code}}
430
431 {{code language="none"}}
432 "utf-8"
433 {{/code}}
434
435
436
437 {{code language="none"}}
438 ?>
439 {{/code}}
440 )))
441
442 (% class="line number4 index3 alt1" %)
443 (((
444 {{code language="none"}}
445 <
446 {{/code}}
447
448 {{code language="none"}}
449 C:mkcalendar
450 {{/code}}
451
452
453
454 {{code language="none"}}
455 xmlns:D
456 {{/code}}
457
458 {{code language="none"}}
459 =
460 {{/code}}
461
462 {{code language="none"}}
463 "DAV:"
464 {{/code}}
465
466
467
468 {{code language="none"}}
469 xmlns:C
470 {{/code}}
471
472 {{code language="none"}}
473 =
474 {{/code}}
475
476 [[urn:ietf:params:xml:ns:caldav>>url:http://urnietfparamsxml:ns:caldav||shape="rect"]]
477
478 {{code language="none"}}
479 ""
480 {{/code}}
481
482 {{code language="none"}}
483 >
484 {{/code}}
485 )))
486
487 (% class="line number5 index4 alt2" %)
488 (((
489 {{code language="none"}}
490 </
491 {{/code}}
492
493 {{code language="none"}}
494 C:mkcalendar
495 {{/code}}
496
497 {{code language="none"}}
498 >
499 {{/code}}
500 )))
501
502 (% class="line number6 index5 alt1" %)
503 (((
504 {{code language="none"}}
505  
506 {{/code}}
507 )))
508
509 (% class="line number7 index6 alt2" %)
510 (((
511 {{code language="none"}}
512 MKCALENDAR /calendars/__uids__/D0CA5B92-B12F-4CC1-AB67-CCDC5ED665B4/mynewcalendar/
513 {{/code}}
514 )))
515
516 (% class="line number8 index7 alt1" %)
517 (((
518 {{code language="none"}}
519  
520 {{/code}}
521
522
523 )))
524
525 (% class="line number9 index8 alt2" %)
526 (((
527 {{code language="none"}}
528 <?
529 {{/code}}
530
531 {{code language="none"}}
532 xml
533 {{/code}}
534
535
536
537 {{code language="none"}}
538 version
539 {{/code}}
540
541 {{code language="none"}}
542 =
543 {{/code}}
544
545 {{code language="none"}}
546 "1.0"
547 {{/code}}
548
549
550
551 {{code language="none"}}
552 encoding
553 {{/code}}
554
555 {{code language="none"}}
556 =
557 {{/code}}
558
559 {{code language="none"}}
560 "utf-8"
561 {{/code}}
562
563
564
565 {{code language="none"}}
566 ?>
567 {{/code}}
568 )))
569
570 (% class="line number10 index9 alt1" %)
571 (((
572 {{code language="none"}}
573 <
574 {{/code}}
575
576 {{code language="none"}}
577 C:mkcalendar
578 {{/code}}
579
580
581
582 {{code language="none"}}
583 xmlns:D
584 {{/code}}
585
586 {{code language="none"}}
587 =
588 {{/code}}
589
590 {{code language="none"}}
591 "DAV:"
592 {{/code}}
593
594
595
596 {{code language="none"}}
597 xmlns:C
598 {{/code}}
599
600 {{code language="none"}}
601 =
602 {{/code}}
603
604 [[urn:ietf:params:xml:ns:caldav>>url:http://urnietfparamsxml:ns:caldav||shape="rect"]]
605
606 {{code language="none"}}
607 ""
608 {{/code}}
609
610 {{code language="none"}}
611 >
612 {{/code}}
613 )))
614
615 (% class="line number11 index10 alt2" %)
616 (((
617 {{code language="none"}}
618 </
619 {{/code}}
620
621 {{code language="none"}}
622 C:mkcalendar
623 {{/code}}
624
625 {{code language="none"}}
626 >
627 {{/code}}
628 )))
629 )))
630 )))
631
632
633 )))
634
635 The last one will return:
636
637 (% class="syntaxhighlighter nogutter html" %)
638 (((
639
640
641 |(((
642 (% class="container" title="Hint: double-click to select code" %)
643 (((
644 (% class="line number1 index0 alt2" %)
645 (((
646 {{code language="none"}}
647 HTTP/1.1 403 Forbidden
648 {{/code}}
649 )))
650
651 (% class="line number2 index1 alt1" %)
652 (((
653 {{code language="none"}}
654 Content-Length: 215
655 {{/code}}
656 )))
657
658 (% class="line number3 index2 alt2" %)
659 (((
660 {{code language="none"}}
661 Date: Thu, 21 Feb 2013 02:49:23 GMT
662 {{/code}}
663 )))
664
665 (% class="line number4 index3 alt1" %)
666 (((
667 {{code language="none"}}
668 DAV: 1, access-control, calendar-access, calendar-schedule, calendar-auto-schedule, calendar-availability, inbox-availability, calendar-proxy, calendarserver-private-events, calendarserver-private-comments, calendarserver-sharing, calendarserver-sharing-no-scheduling, calendar-query-extended, calendar-default-alarms, addressbook, extended-mkcol, calendarserver-principal-property-search, calendarserver-principal-search
669 {{/code}}
670 )))
671
672 (% class="line number5 index4 alt2" %)
673 (((
674 {{code language="none"}}
675 Content-Type: text/xml
676 {{/code}}
677 )))
678
679 (% class="line number6 index5 alt1" %)
680 (((
681 {{code language="none"}}
682 Server: CalendarServer/4.2(CalendarServerv19.0.95) Twisted/12.0.0 TwistedWeb/9.0.0
683 {{/code}}
684 )))
685
686 (% class="line number7 index6 alt2" %)
687 (((
688 {{code language="none"}}
689 Connection: close
690 {{/code}}
691 )))
692
693 (% class="line number8 index7 alt1" %)
694 (((
695 {{code language="none"}}
696 <?
697 {{/code}}
698
699 {{code language="none"}}
700 xml
701 {{/code}}
702
703
704
705 {{code language="none"}}
706 version
707 {{/code}}
708
709 {{code language="none"}}
710 =
711 {{/code}}
712
713 {{code language="none"}}
714 '1.0'
715 {{/code}}
716
717
718
719 {{code language="none"}}
720 encoding
721 {{/code}}
722
723 {{code language="none"}}
724 =
725 {{/code}}
726
727 {{code language="none"}}
728 'UTF-8'
729 {{/code}}
730
731 {{code language="none"}}
732 ?>
733 {{/code}}
734 )))
735
736 (% class="line number9 index8 alt2" %)
737 (((
738 {{code language="none"}}
739 <
740 {{/code}}
741
742 {{code language="none"}}
743 error
744 {{/code}}
745
746
747
748 {{code language="none"}}
749 xmlns
750 {{/code}}
751
752 {{code language="none"}}
753 =
754 {{/code}}
755
756 {{code language="none"}}
757 'DAV:'
758 {{/code}}
759
760 {{code language="none"}}
761 >
762 {{/code}}
763 )))
764
765 (% class="line number10 index9 alt1" %)
766 (((
767 {{code language="none"}}
768   
769 {{/code}}
770
771 {{code language="none"}}
772 <
773 {{/code}}
774
775 {{code language="none"}}
776 resource-must-be-null
777 {{/code}}
778
779 {{code language="none"}}
780 />
781 {{/code}}
782 )))
783
784 (% class="line number11 index10 alt2" %)
785 (((
786 {{code language="none"}}
787   
788 {{/code}}
789
790 {{code language="none"}}
791 <
792 {{/code}}
793
794 {{code language="none"}}
795 error-description
796 {{/code}}
797
798
799
800 {{code language="none"}}
801 xmlns
802 {{/code}}
803
804 {{code language="none"}}
805 =
806 {{/code}}
807
808 http:~/~/twistedmatrix.com/xml_namespace/dav/'
809
810 {{code language="none"}}
811 '
812 {{/code}}
813
814 {{code language="none"}}
815 >Resource already exists</
816 {{/code}}
817
818 {{code language="none"}}
819 error-description
820 {{/code}}
821
822 {{code language="none"}}
823 >
824 {{/code}}
825 )))
826
827 (% class="line number12 index11 alt1" %)
828 (((
829 {{code language="none"}}
830 </
831 {{/code}}
832
833 {{code language="none"}}
834 error
835 {{/code}}
836
837 {{code language="none"}}
838 >
839 {{/code}}
840 )))
841 )))
842 )))
843
844
845 )))
846
847 The following errors might be present in the body of the response:
848
849
850
851 * //resource-must-be-null// (namespace: DAV): you can't create this collection at this URL. As we saw in the example just above, you will get this error if you try to create a collection on an already existing collection.
852 * //calendar-collection-location-ok// (namespace: [[urn:ietf:params:xml:ns:caldav>>url:http://urnietfparamsxml:ns:caldav||shape="rect"]]): identify a location where a calendar collection. You will get this error if you try to create a calendar collection inside another calendar collection, which isn't allowed in CalDAV.
853 * //needs-privilege// (namespace: DAV): you don't have privilege to create this collection at the specified URL.
854 * //valid-calendar-data// (namespace: [[urn:ietf:params:xml:ns:caldav>>url:http://urnietfparamsxml:ns:caldav||shape="rect"]]): you must pass a valid VTIMEZONE component for the //calendar-timezone// property.
855 * //initialize-calendar-collection// (namespace: [[urn:ietf:params:xml:ns:caldav>>url:http://urnietfparamsxml:ns:caldav||shape="rect"]]): the resourcetype property must be of both //DAV:collection// and //[[urn:ietf:params:xml:ns:caldav:calendar>>url:http://urnietfparamsxml:ns:caldav:calendar||shape="rect"]]//.
856
857 If you get a 207 (Multi-Status) for the response, you have to parse each <response> element to analyse each error. For example, I tried to create a collection that only supports VJOURNAL component:
858
859 (% class="syntaxhighlighter nogutter html" %)
860 (((
861
862
863 |(((
864 (% class="container" title="Hint: double-click to select code" %)
865 (((
866 (% class="line number1 index0 alt2" %)
867 (((
868 {{code language="none"}}
869 <?
870 {{/code}}
871
872 {{code language="none"}}
873 xml
874 {{/code}}
875
876
877
878 {{code language="none"}}
879 version
880 {{/code}}
881
882 {{code language="none"}}
883 =
884 {{/code}}
885
886 {{code language="none"}}
887 "1.0"
888 {{/code}}
889
890
891
892 {{code language="none"}}
893 encoding
894 {{/code}}
895
896 {{code language="none"}}
897 =
898 {{/code}}
899
900 {{code language="none"}}
901 "utf-8"
902 {{/code}}
903
904
905
906 {{code language="none"}}
907 ?>
908 {{/code}}
909 )))
910
911 (% class="line number2 index1 alt1" %)
912 (((
913 {{code language="none"}}
914 <
915 {{/code}}
916
917 {{code language="none"}}
918 C:mkcalendar
919 {{/code}}
920
921
922
923 {{code language="none"}}
924 xmlns:D
925 {{/code}}
926
927 {{code language="none"}}
928 =
929 {{/code}}
930
931 {{code language="none"}}
932 "DAV:"
933 {{/code}}
934
935
936
937 {{code language="none"}}
938 xmlns:C
939 {{/code}}
940
941 {{code language="none"}}
942 =
943 {{/code}}
944
945 [[urn:ietf:params:xml:ns:caldav>>url:http://urnietfparamsxml:ns:caldav||shape="rect"]]
946
947 {{code language="none"}}
948 ""
949 {{/code}}
950
951 {{code language="none"}}
952 >
953 {{/code}}
954 )))
955
956 (% class="line number3 index2 alt2" %)
957 (((
958 {{code language="none"}}
959 <
960 {{/code}}
961
962 {{code language="none"}}
963 D:set
964 {{/code}}
965
966 {{code language="none"}}
967 >
968 {{/code}}
969 )))
970
971 (% class="line number4 index3 alt1" %)
972 (((
973 {{code language="none"}}
974 <
975 {{/code}}
976
977 {{code language="none"}}
978 D:prop
979 {{/code}}
980
981 {{code language="none"}}
982 >
983 {{/code}}
984 )))
985
986 (% class="line number5 index4 alt2" %)
987 (((
988 {{code language="none"}}
989 <
990 {{/code}}
991
992 {{code language="none"}}
993 C:supported-calendar-component-set
994 {{/code}}
995
996 {{code language="none"}}
997 >
998 {{/code}}
999 )))
1000
1001 (% class="line number6 index5 alt1" %)
1002 (((
1003 {{code language="none"}}
1004 <
1005 {{/code}}
1006
1007 {{code language="none"}}
1008 C:comp
1009 {{/code}}
1010
1011
1012
1013 {{code language="none"}}
1014 name
1015 {{/code}}
1016
1017 {{code language="none"}}
1018 =
1019 {{/code}}
1020
1021 {{code language="none"}}
1022 "VJOURNAL"
1023 {{/code}}
1024
1025 {{code language="none"}}
1026 />
1027 {{/code}}
1028 )))
1029
1030 (% class="line number7 index6 alt2" %)
1031 (((
1032 {{code language="none"}}
1033 </
1034 {{/code}}
1035
1036 {{code language="none"}}
1037 C:supported-calendar-component-set
1038 {{/code}}
1039
1040 {{code language="none"}}
1041 >
1042 {{/code}}
1043 )))
1044
1045 (% class="line number8 index7 alt1" %)
1046 (((
1047 {{code language="none"}}
1048 </
1049 {{/code}}
1050
1051 {{code language="none"}}
1052 D:prop
1053 {{/code}}
1054
1055 {{code language="none"}}
1056 >
1057 {{/code}}
1058 )))
1059
1060 (% class="line number9 index8 alt2" %)
1061 (((
1062 {{code language="none"}}
1063 </
1064 {{/code}}
1065
1066 {{code language="none"}}
1067 D:set
1068 {{/code}}
1069
1070 {{code language="none"}}
1071 >
1072 {{/code}}
1073 )))
1074
1075 (% class="line number10 index9 alt1" %)
1076 (((
1077 {{code language="none"}}
1078 </
1079 {{/code}}
1080
1081 {{code language="none"}}
1082 C:mkcalendar
1083 {{/code}}
1084
1085 {{code language="none"}}
1086 >
1087 {{/code}}
1088 )))
1089 )))
1090 )))
1091
1092
1093 )))
1094
1095 VJOURNAL is not supported as a component type on calendar or tasks collections, hence the response will be of the Multi-Status type:
1096
1097 (% class="syntaxhighlighter nogutter html" %)
1098 (((
1099
1100
1101 |(((
1102 (% class="container" title="Hint: double-click to select code" %)
1103 (((
1104 (% class="line number1 index0 alt2" %)
1105 (((
1106 {{code language="none"}}
1107 HTTP/1.1 207 Multi-Status
1108 {{/code}}
1109 )))
1110
1111 (% class="line number2 index1 alt1" %)
1112 (((
1113
1114 )))
1115
1116 (% class="line number3 index2 alt2" %)
1117 (((
1118 {{code language="none"}}
1119 <?
1120 {{/code}}
1121
1122 {{code language="none"}}
1123 xml
1124 {{/code}}
1125
1126
1127
1128 {{code language="none"}}
1129 version
1130 {{/code}}
1131
1132 {{code language="none"}}
1133 =
1134 {{/code}}
1135
1136 {{code language="none"}}
1137 '1.0'
1138 {{/code}}
1139
1140
1141
1142 {{code language="none"}}
1143 encoding
1144 {{/code}}
1145
1146 {{code language="none"}}
1147 =
1148 {{/code}}
1149
1150 {{code language="none"}}
1151 'UTF-8'
1152 {{/code}}
1153
1154 {{code language="none"}}
1155 ?>
1156 {{/code}}
1157 )))
1158
1159 (% class="line number4 index3 alt1" %)
1160 (((
1161 {{code language="none"}}
1162 <
1163 {{/code}}
1164
1165 {{code language="none"}}
1166 multistatus
1167 {{/code}}
1168
1169
1170
1171 {{code language="none"}}
1172 xmlns
1173 {{/code}}
1174
1175 {{code language="none"}}
1176 =
1177 {{/code}}
1178
1179 {{code language="none"}}
1180 'DAV:'
1181 {{/code}}
1182
1183 {{code language="none"}}
1184 >
1185 {{/code}}
1186 )))
1187
1188 (% class="line number5 index4 alt2" %)
1189 (((
1190 {{code language="none"}}
1191   
1192 {{/code}}
1193
1194 {{code language="none"}}
1195 <
1196 {{/code}}
1197
1198 {{code language="none"}}
1199 response
1200 {{/code}}
1201
1202 {{code language="none"}}
1203 >
1204 {{/code}}
1205 )))
1206
1207 (% class="line number6 index5 alt1" %)
1208 (((
1209 {{code language="none"}}
1210     
1211 {{/code}}
1212
1213 {{code language="none"}}
1214 <
1215 {{/code}}
1216
1217 {{code language="none"}}
1218 href
1219 {{/code}}
1220
1221 {{code language="none"}}
1222 >/calendars/__uids__/D0CA5B92-B12F-4CC1-AB67-CCDC5ED665B4/calendrier6/</
1223 {{/code}}
1224
1225 {{code language="none"}}
1226 href
1227 {{/code}}
1228
1229 {{code language="none"}}
1230 >
1231 {{/code}}
1232 )))
1233
1234 (% class="line number7 index6 alt2" %)
1235 (((
1236 {{code language="none"}}
1237     
1238 {{/code}}
1239
1240 {{code language="none"}}
1241 <
1242 {{/code}}
1243
1244 {{code language="none"}}
1245 propstat
1246 {{/code}}
1247
1248 {{code language="none"}}
1249 >
1250 {{/code}}
1251 )))
1252
1253 (% class="line number8 index7 alt1" %)
1254 (((
1255 {{code language="none"}}
1256       
1257 {{/code}}
1258
1259 {{code language="none"}}
1260 <
1261 {{/code}}
1262
1263 {{code language="none"}}
1264 prop
1265 {{/code}}
1266
1267 {{code language="none"}}
1268 >
1269 {{/code}}
1270 )))
1271
1272 (% class="line number9 index8 alt2" %)
1273 (((
1274 {{code language="none"}}
1275         
1276 {{/code}}
1277
1278 {{code language="none"}}
1279 <
1280 {{/code}}
1281
1282 {{code language="none"}}
1283 supported-calendar-component-set
1284 {{/code}}
1285
1286
1287
1288 {{code language="none"}}
1289 xmlns
1290 {{/code}}
1291
1292 {{code language="none"}}
1293 =
1294 {{/code}}
1295
1296 [[urn:ietf:params:xml:ns:caldav>>url:http://urnietfparamsxml:ns:caldav||shape="rect"]]
1297
1298 {{code language="none"}}
1299 ''
1300 {{/code}}
1301
1302 {{code language="none"}}
1303 />
1304 {{/code}}
1305 )))
1306
1307 (% class="line number10 index9 alt1" %)
1308 (((
1309 {{code language="none"}}
1310       
1311 {{/code}}
1312
1313 {{code language="none"}}
1314 </
1315 {{/code}}
1316
1317 {{code language="none"}}
1318 prop
1319 {{/code}}
1320
1321 {{code language="none"}}
1322 >
1323 {{/code}}
1324 )))
1325
1326 (% class="line number11 index10 alt2" %)
1327 (((
1328 {{code language="none"}}
1329       
1330 {{/code}}
1331
1332 {{code language="none"}}
1333 <
1334 {{/code}}
1335
1336 {{code language="none"}}
1337 status
1338 {{/code}}
1339
1340 {{code language="none"}}
1341 >HTTP/1.1 403 Forbidden</
1342 {{/code}}
1343
1344 {{code language="none"}}
1345 status
1346 {{/code}}
1347
1348 {{code language="none"}}
1349 >
1350 {{/code}}
1351 )))
1352
1353 (% class="line number12 index11 alt1" %)
1354 (((
1355 {{code language="none"}}
1356       
1357 {{/code}}
1358
1359 {{code language="none"}}
1360 <
1361 {{/code}}
1362
1363 {{code language="none"}}
1364 responsedescription
1365 {{/code}}
1366
1367 {{code language="none"}}
1368 >Invalid CALDAV:supported-calendar-component-set</
1369 {{/code}}
1370
1371 {{code language="none"}}
1372 responsedescription
1373 {{/code}}
1374
1375 {{code language="none"}}
1376 >
1377 {{/code}}
1378 )))
1379
1380 (% class="line number13 index12 alt2" %)
1381 (((
1382 {{code language="none"}}
1383     
1384 {{/code}}
1385
1386 {{code language="none"}}
1387 </
1388 {{/code}}
1389
1390 {{code language="none"}}
1391 propstat
1392 {{/code}}
1393
1394 {{code language="none"}}
1395 >
1396 {{/code}}
1397 )))
1398
1399 (% class="line number14 index13 alt1" %)
1400 (((
1401 {{code language="none"}}
1402   
1403 {{/code}}
1404
1405 {{code language="none"}}
1406 </
1407 {{/code}}
1408
1409 {{code language="none"}}
1410 response
1411 {{/code}}
1412
1413 {{code language="none"}}
1414 >
1415 {{/code}}
1416 )))
1417
1418 (% class="line number15 index14 alt2" %)
1419 (((
1420 {{code language="none"}}
1421 </
1422 {{/code}}
1423
1424 {{code language="none"}}
1425 multistatus
1426 {{/code}}
1427
1428 {{code language="none"}}
1429 >
1430 {{/code}}
1431 )))
1432 )))
1433 )))
1434 )))