From bd9a92c588aef315ca65340842e8d07fa70cd9f8 Mon Sep 17 00:00:00 2001 From: Rin Date: Fri, 16 Jun 2023 17:33:07 +1000 Subject: [PATCH] add draft post for iCal+GSuite integration --- .../ical-and-google/gsuite-caldav-dep.png | Bin 0 -> 15039 bytes content/posts/ical-and-google/index.md | 80 ++++++++++++++++++ 2 files changed, 80 insertions(+) create mode 100644 content/posts/ical-and-google/gsuite-caldav-dep.png create mode 100644 content/posts/ical-and-google/index.md diff --git a/content/posts/ical-and-google/gsuite-caldav-dep.png b/content/posts/ical-and-google/gsuite-caldav-dep.png new file mode 100644 index 0000000000000000000000000000000000000000..c707637a0af5675ebc033eba7e2be829770b0d27 GIT binary patch literal 15039 zcmcJ$bx@p58}9ia!7afZ65I(MG{GUb1oz+;JU9e*cXyZI?vUW_1HpBM;4;80@ArOt zPVL#V|Lv)IYHFstr)|2sdamnthbt>eW1^9u0RVt0DxaVVh8g{NQg_ac!QLNdCXXEK za7akzZ}Jl1-ourUQ=vF|p_^R{6b;EAzzx3|=EAlLFjS@j-LW0FI1+xzylYYRyOnAQ ze~fKrS$T6EiwBEv*n-8F30i&lwtCqIsByiS+S~!6tPx%TLVodbU(`9ep zves;e43JsC+%9P#Gwz`#u|8HG_V8`)@e_P9T<2N7rZv%p44JQA#P)Z)7&H0}e>gKTi zx6S?^s#b7;lX*&#&ADbN8~wi{W;oqB(DO4*c&lX_oStM``KSwVgGJ zo6y|c5IQ_v{e?~5#wJ*9kFVth9iC+!fQmYorn;X3&f380caZxA+*8{f>a1Z@Y=GjfRCF-e0_!DUdyZ8CxTFVoAHtmuO%eg~; zWNyqCPz~&xf$QXVKiI)kc4{i!#gE)u={L3J7NP{~!VH}pfgQYQcfFyxyekK-?`7Sx zVS2m4JMOzACqB?KFQ3<(>pokT205Ge2l>D5r=Xv<-6zjTkGY4d!cdjSY~4G1yaMmp zI$UN+l^j?^y6W$)a;ko)bhk8K9~|qQbnIPY((vu2%ZWRE@C!7egKj=Ec+B#LTweQ} zFDi*{qKc@_4E{5J%`goY3q-GY=P@}jDKg@uD2laCy+NOSJ-LHHIi&JUZBm!=W|oS} z&I06`GVJB+6tTsBk71Nigr}jfe6pwd&h$lF0B}Eq+&d@I=iJCj;^vOPJ8WxgaNeZ; zb~h27!H6(!E>!JLylRaLT}wB28X=amw;npn8Yex*Yese{uap;>zkG8g^Tkq=>A=9P zG~%nR-;x`~2-D%iWR0)C-GOC^PDoKBP=mBc>iICkG|CtxAS{( zd#zljNt@JBaR(s=G`@Z|dG=&-!0K{z)a;|0LJm2Nd>a8UM5`CFenDfEHV2^4DYg{J zT~2hhKgTHQk2BpBnA&Ex!4IPK{9O>K@)IqrToYXJGEXaJkWbf6Ey?5sfZtJ)CaK;O zlbi$SXliHoa;hpbmXZ$tdaC;pECRhmB${V@T5{`1X(8kZk;>ABH? z>D2@f2YU;R-JsuWA_00O`Qvsqip(i+R2M(opQ3f;NmtxZi$VP(KJg52R5aaxYd5t- zgyP=eb$$<_ENBtUy~Ol=V+;q}Lq%_sVEPAs5L$q0#b?Xee(wuDB(WQ(RO29kv_QW^ z#jCOVLD?Okf}G@FAR{vpF6)%Ei)g4u(70FEvhO89s%*{30RNz+k+o|V+}=IX3;)KI zIFz#q4?nbB!L}xD4~JoB=vC7#O7gN1Fb9-tI2yGuKySxa}0tH1YB? zyHU7A=GiOBr%!ZLqtM8jLk{UnqkWP+WYXgAq=1;wz?c4f>JWI{DRuO@z3Sh#Zy~Yz zV6Vo{g2zgxJV-onUkDCf`M@3o;4}*#gS8x**N-h3VIMP&{k3a2o??bFlaL6j1_%>Fql4rxm?!yb9L&X5Ek?IFE+H{U#>n-lw3F)~1O) z@?N?<@$`eAV9?LK&T**_%hd8O&l!f9Jhx3Kx(YT>^KDu4s!HgA0q-%qcI^b-B{mP~ zcN4!O^lueebl!{=z7EE$;M2-Cz%Ov_X-xM{{^zcrJxA1|e%fJ0LKxU7MJbeceETY= z>?UDL&BqO1Rkzh+dMD>PHv_|vKAb{fQR0>qUo~|M_~;HW}~%3NzJWBHRm#Iau;0?j2N7rOG?x2zcI%0KG|9!t={l@;ft>@rubNl zVy0xURr~00NqPFdKcWTx?B9!dUjHU97Qb~3q&RBJK0(S0=Q;?P_fEmWZm{&DZ*xbB zddOPbuK_9VJ}RiE^R|5x9TSi$p#fD|q5=LkVX^vKPl1)Re3ga-OBPX+TnBbutCLSf zy;3#ct3<0cJ~_PSTJH$}r}bA;jWT@O4O-%^LoPTlW7x|_o#%EU4GLk*mz zlBz9sA4`8SAy6qk>W&L@GHqm2n<@V1;8jI(lpF@8Y}H{dl## z+82hXn-4ZU_5FO>-=6?eL3F{taKK2q+3XH{kES7_{a(VpA#dF7AbAU_Yjj%<}tWLdVgjFo`0w~@{Z3s)Iuk*EA8#?(xR699c)VWSx5;i*n7O?A+1+=>%8#qLO?436b zI+4cF(~!ljO||+|@7MkN$bbRV0L@2mLoo5cZ#!@3STZk{Qh_M<;h|*apOwF6sY^2z z4H0mF(Y$%(=$zDjJp}NtO0pnbn`;X@kI?k#wo-L5Dk${|10>LwItEZxb8C|tuzWbz zVI5TP{jADtF$KZZwr@U+=&Vb3=urvZQIs9;M$IgMbW2j<-RwTVz%YI-v z&)Vxjwpsf*+fg&4G!Ua*VD>4P@{;qH?Y=D&G82gbkN1n6C9%*rtqge!B2->_wlsuqoX1MiIKd zncqHjUUAXF4S6TgVfs~z`BF}I3(Ev+A zu&cx3izhIXm9K4%FFQ2EUbEoRbeYqclatEBFn$}|>0aH0+pJep%dLgx(d71=Zg4xF%RYjy#Q_cThh*p&I?UnP zQFL7dMvfF5VUStL>qM`8FXfo()jnkYytv)sF1K$~bcQCMWpuYjr$OM?)|%sdmA*%R zW=GKqrA8Xc?6m2w`@8W8l0O+WQXp&To#EwFYfg-L^hGJv;^wEt6d#_^lQ<0kOnKre zzN`K~Puh<~_Idt?6X{sXA~Vz>yJa)B*c`*9ZwCpGfcoygMG}ZX1_EWL-84ZY7^@m} zJ8DAh7p)<|-G+G&^Eyy}e4y8UA4AS;9gs-)8Zoh|r-my;hTS_uv0=T>!hbLD5Fnt> zX_Ih9Vb53QQ1}T~=u$X~pj7#{(!zXIjZo4Fnu)~ANo<-WqPCni7oDY(Q^PHp%iax> z=N27J=L){o2K};HDDOA_apLLjw~t~!82fW?!Af$>y6GtTCt@gSca3@_w?@U+&pzFn zcdC-&8`YY|#eABSPy}hHz@vVCHXtuQ^&w-*%AA)`@mdtmBx&p)v?z_N3Mf_Hkr_`MN)ROHo2 z@3EIIxb~bT>3VB6w7nlfix*Z10N~Rz_2}e0K7t-&E%s4UBP!t5T#oP&d$#6d${w7* zSt3Tf5fNbek&C995rO(W_lV=SH^4e-$`-K{Ro=4t*V6O_GDohL1shfj2M|FD&@pG( zEP1$~DWCt6iS8na>-ID?I+}jpif?WJk@_MBvD~ydzk(gCL)RJ>+*~YuBH`LUn%FI z*F@&7*58i|G$ypAN^~Y0g??bb#hCK50wa!Og=*%C)9;!#1;n6=30Or$rX_VEl}E(I zLK>Q@8@1ex(a>TYsipm0CxXL|h+>YZ9#fyRGc;X(t5f1%SiR*xK5?8oE6ZtCxTW<( z2v2#;W0*Qw_2z*&cI48i_ThXngt=65@S$7%Ep4vFsCKdPDJkEpdWxRIFa8yxnadZI zrIVpEHDx^+FCNRup32o+m=;|=f#%p3SrfA+>GuU~_b4!nGrCH(({Of>s^{rcr}DXs zq1091n*2C)?Vx8a&**TWTortOxrP+(k(#Y`qCJ;ZyDzHGE?lp~@d$PzE8YVD{+s;s zPnwIOdhrxx?PgXD$r-2SZ`e4<)*JycP)fOxLC%>PVY39 zN=dC38*dGLU6x~WR4``-oPZx>q4PTN=a}*SIH^<%pPf&PR@LhgihC%fjF3cP;A(P14%NzO*@n<6yT-_Xtz#xhnSBIJsrntVPE9NZX z>Hb7;0h`*a8&k=gXSaCl9LA@0uycI1=xdyi23IK^a~nb0fp7jafS3gL;X-!a2q(F} z+ftUcKC&oloH|*2a0QctLo-)~;=R>tF@eA5yr|?8mQ5Hy-RBj!9I9#Aocm=+PE?jT z+)j)tn`F6Ab0^`GkKcKjwnlob-6S_Fpv)rNaasJaR&>?cd(p*zH$>|b6JIl(PjLwo z!n^nDlGvt}(XVzD>Ym?%Lo~tRSV(1Uns;w6^vndhi_I{2e?NryOBsFTAqR3SKR90H zjf`+ge6*rUk^jjO3S=B7`uNoNTOv|1MrR=a%|CHBZC`l{6jQ_b7Yb`etB{2MQp*DY zQf?>I6b_SGy#wn0R|e)#^8Y!dpKbA!x*w0e)uoU zn4CElAns(A{X};sTYeiJcjoZx?kdC?)dVI-oL-mDZ8{BpSoIy_w5Y5{svz>7Ed z9`b%B-)mj2^&wJ%$%%QrvdowRlrnX;{ret{@1utm=lD-EkIjckp_aY5R`Zm669`QD?At5OS0Tw}NEr#| z7RLxzzq0FK-!c+yyAF}6`we(JIBF4KWu8pkk9}lG^GM`E8_!(PY$~}o5CrdBN zI&_eP(7moYMB-R;NVOty`R*Q5T~_`x6YSi_2LOtpebqkCO8g9DLp2k>@@?u{AWThB zI?#5596PuRa<0ehAQNqG2DhcDa5h4KN;&qyr7}nJPeketo<&&jXB8Ec_BkB4qyuLe z7c#Vl3Tufr#QY)c_i7t)15dKp@%dT?m0z1X5^0y+*OZ83tie^Di;e1@g>!T7TV1={L@>2&;#irTQi17*TaaOrF4l5%d{ z-1hQQ@v84={7wPitDM=rDNSZ($ltSq=Yd2rU1V!bN?Y{^!QZ?XxbV{|naZfqBa>0@ z-I^Pn46XF>9;DX{+aVgL{-8o{dk08wQx1fttRc8b;79u5$%dz4Lcu&&b+4q7(O`a` z%Kk!3>@7*i~UNzl>7m9-%4>rBPg0@_s8o!lyIADiK}axf4wG`1_h8#NQG$J zl4uTy9KUub@4nG(O4@#ubyzy<|77m7rMP3Jq(;_RW7G503m0GKIvTTXvGy2w6^<1A zZslmgBAtov^cwTkpdV&sZgrLSD|+JRnD{@?+J}re8zl=@Qp>F!uG4r*_u1=V{64># zIk`8{N7=4|wbm#$9hBlWyT4>+3k~x!40)OgtPS^Ciy|2-?r{}V+!yOF;;4A=IH#W? zb?kKnE5w*HnB2dIbRyQ;>2GjzDL7?a6UMdW5j)P}>>(dER$>0pGVb@{@TYrBJn(xM z`hGs0DIwr+mAfWfbZwm;!iL)@MkL^T;%DBsDteC{k&mx$Yf@VJF^rtX)e2^c*i5}5 zBjHu4nA_7tLySa~(c-3BKW=hR`TaLXK*7!kxo4nx?`&~O4wsHDp9lc-CYxDuG@dQv zt*t_^!Vp}KdLNmOZr%WhiDr6$W?$pZGo(@U%9$kC45-QR@siDk>csIDkf+4?v9NQw03c!DM=hOPE0X zo&-R3ScD9x^-4U^1sx^H%nA{}OO*g(a=2K3H@@6aV?F|6?VVGExrOpbz{kjqe#a4;nNB)LwA@iH*GVvj z3)qe#1^6{v*Zd&%gnYm1$i(VZJd4V-D<=SlG|w40$GOhpamMI2^T>DA4j&{BW7xET zB8$oe$Br4&E#e|nOGd+Fo6C$DPMDX5iQrKng8woi956WPi6|Bpoe1dc`7I_z)jRMz z@a$(|O+RvAPFK15Y6LRl;|&WdmQX7ZrrP6?cyqY?$u1;cy;c!Mswa(~{+5x1`818P z`rHx2m`-KOz6$`{Zy*$fAFmucRnn~ve22badpEmY5<#8dB7<73H$n4ZDT&}wn=jy!Epxc2NPflN0LP*yzt>x8m~WpcUuwW!bOUw8N#bP64Nb#vD>00?eCx*R&cx|0Gq)9s*yWnd|UT(+XJQ8C}-C?g72ksc z3fs;PI9)LU?FR7j`wcQ-!` z_oTLrcoa!#2Ke|Z%QU~|l8||ZuT=ai%f3yRrBzWH+ zgJ8=|enM|#R2jBTy5HmxSi7QTxfIX-DOmbpn^h1RD7<4}qgj*7koQd|0s(%2mhm>+ zceJnB4A_m{07qlIu5%^*@S5VTY^=lQ>jX;66o$8pxls}lM@54|oZb5)?5DSjeqEJN zxj1n^QlC#RAQRyLa&wE7h;z_cP&m%ai=!9ejGwgHZ{Vr<^4AW~ijIOysF1+|meD7` zoa}4r_<-Y8lr^!`4k-j2;fQP zv;g&>fBG>m%F)erS;{SENcvJB_5u0q20Mn+$TE{lA+0vW87pk7FBXaVobQb6W`zkF!mAi@8qD@6NS)iC&BDCTALi*hXEd@W*=_ z)E&_Aw9O&@V zre3Q*A}|HyFTT7Dpw6JU7#VJ14iWwm|Fs5czMNa6Jj=XJaY!j@Vm}u^McBm>q=pjS zc$P~v+KBN=Y?j9;aEB~0uWM(f#>W_0E;!hjWQh1#CzTRU0Ce1{Uy*tcK8;TuSEL*m zsfS*lpl5&Cy@l}P2z_)X!NVbi%ER(E-8r1wS?~G_F|v*BEA{)TN39z5zKQS>U(him z89foMv#vD8P(I(-te~|@Vs{9G>L%FI+~x_p2kXW44n4UC&-CCK-O#Cd`#q?L0f5Bw z9~MBeaNwQq%Y84bb>zCJo=4G@tp7u9@Xf)`OJ&Qic=~3-2?f7^5Y4Fsy)5e57wArK7WdrxJdU7NshE zYmScqDx4C<_PFbUgL1?(Z$bsbqeJiaLO=MF->%bJ3>tsRVPZr^5IIrtJ&!+1KNR$9 zVgFD@c(%JIj$mBU_#RY5|FHSIW@I>O&o^SV0IA;Rs+qp#I)F9N_cPxgNga&YReG`; zzJIiM&UF@TBQHUl@X_~{pAhJ)d^!+`cu1;n=`jKPXZ2u?T`_?c&#r$?&*0+>bVVM_ z2cJ!I6PZI=Zht^}WqoZ2EK?{JU0yK+I8poCx|(V>U=Xsly0Zme>kOA5y)L)BaOsZw zCZ>7ezBq;+Lq8N6x^7<5>7=ySS07PgrzJJ;k&)eo+vbRXYB87Q`hGaT*q50}BO}^@ z3~0#Vglnd#SsjgC90#vGw_3q1qpw2b;i5jz0gg@;1pwYc$S!bby@*sd9ti$bVg)Z& z`OS|Nrq#kQh}N9IX#_=TFI23q8E5#QY`YGYxxN;xEUrQb>HcQXbf@L+5rQu^m6ZA- z!=U-+<3Fp%ITH|nwG^*z>2g=Al5e>vj)MHfpikJ}N#F+6xyy^Y0Xor2Uy8LC#9mUR zG*g}%%bAR(2nb4K2grZsgh zV{Zfrpz6Z}l+};XvHS}s`C`&y9cM|$a?2sPw^>hSf5!QXeN))Ujsrh5p2P@;V$*7jZate32n4CYD5= z#RNih?kmEjypZXIBudFC*50|Uen%co{cg3f;0iredR91ve|lw*k(vAjqM=iMxT1tK z`M3^BOS#DQ+t|Cyx%o3vd3!w1~J1&y1G;Hxsg-(KE zki@DT4yIXP->c{U-fU3t`w5b8FwLriMEd@=C{=Q*aqh$iY$6LorT1K9JQM!G*aCa-z^_F);)I?JLQ)a3GJ#l9%;MrAcZ&UE?jTnYbTBz5o}5DQA8xLSSHPdL z%L+U0J9^_YQDz8<_}C zjHwTf-?sW9MPY;%0)^!=SX3p@oo>f@CXkLEtOm60en}#KO$&YjH3XU2&0pMFy4A;t ziuI#-_S0l>#M3Hr$LMQ1w)Dsz#_k8o{AKZrmMJ&jCGE0{ZIT z_MYLKu2wFF7ySqpF0SIIGJOqE%-`~I9M3jnC{i1)V}_`vdxaBfDsNSGfeMPvU8RlM z7`9|I+CZeW&-n(r<=u@w8t?-#+h~v7vFs^}7CiL7P*b&>4Ib*BEaT8u7J5=Pi~RB1 zlmk&eBZ6Yl>2-TUp0v95)9`2X*?m$)Ny4JP7%PwNG3hT0p zF7sc+n9-YGZkUTb?35whp2n{N7v@`_$WG`00em^JwBiHCrb z|L?6YwJZ?#2);b17&JjCri?ow0*|)d zJ*|-Pan0Q*AO8HOHA9kv6Q~e{d^W$-y+Q01rWyM@p9LO>fBPL|8gzL;w>GF~`T4Nh zC|NW)g`x}=Mv3Fsb)aZJ%9R`vAV{IHb(907~#p)0{*3RC`1~!A>qZl)mNVLsEw`I_w6Wu)%GtCfY-&VHZD5< zf+O+qy*{GYvcwt>w%&R+S8xJ)c?L&n{`&SUBxEkIN1kwnAo$ZwW|7XKy+JD$O0t@_ zKno@#?HY#`1hMi&+@d*62E0I5nPm^fVAAthJ^9?tB#P#{-!hKV3QYgXlhH*cWJ!6|w~QiuM~^JklhSipQ(u=M+eRxHZuga-R|LbSWQ2K_Ru6e-wh} z`@K@N4?yof6ok_K)1In5A1X)j!~RuBmK9vB64I{<-`Y@N9}w{T4}>!6#_0xIACW@URUO4fBRyK&a=tBVI`ek1WC^=ak_vtq zttOYgPG-ds8qoSbK@(<0J6l5Y{!JfRJffms2(&%5)Iwta<+QYc7q+NFG~yMmJww^v z(I-wjSH<`|>EN7ixuG^kmps`vbIxs{caZQrJ_y~{m-VaX)9OX+|F{GVWHhh5)b`3F zuQK)kwqilP z+6LcW4C*}D*jtHESs;(z|w}C zfAo8@?lRW8=qg?DLIaMvR@b0hl`a1)xpB zHekj2{|}Ga4uY*ESh7}ACcx$-DYF}M7*(`+0SMMOoQo#ayI7-AG(|o_`o{q#{ z5ppJq9g3U46xpMvHzn{eevx>~dmFr@dH-Y~Z#DM2O7wp3Wl57Q1Qt*vt!Z^P88E^F z)3VLi3lII(3k4F=HMh6=+m({CHK>B*b~>pYs`3E{N7ZW zHts&xFb47JvP>L#meilS z;!0#}7-X!lJT(=Vx!N_WPr?f^9=w?Jnw7rVbBw#;@WA#6zfVaWXDO+`%UNL+A!0}d z^fIbnsPXVrGGp(x2NJ~tc?gWdX^d4<)}B&~O3BFsW0>T^py^k&hKRsus>Fl$0FXhs zH=f@AP-VZ{c&u*R(C6Ca6}aFRVoHkTj}WnAOFv&B$~0=FpQ^JuzS`ioQfB^{xzv7= zM>c*%#LRMmvLK!m23j#p+VVOOtE2lJPWcr}EL9i~AL!^k_%Sko@;5_Lw#+9Nw4RimLJNK2v{qgub@@t8iCrQBc8U?8&vk6Rl<-*3VvH@wS72 zM=et*8A7&~)8&k%#KlFB$TbFTzl%_hsOVq;{-(^xseo;A+g2kU@}E`$Zjf?AiJfis zwCXp_xd!X|v5bK6W5cngsG5mnKCT$)BDlO{M)vL=&8#`r-@>-?doGWnguohx1x^O*hM1Y@R59jH7{Kb+Ime`R|u|UFle? zxg7wAjjdDYPg8-nRbZR&YcPM5wT_HuQz^RHfB+vLn5z!8I^%6KhfZ}Jy>4ra&sH5-Ts_^+%I z{~#X$-n{l_&~a=G&W>MkS*;=*U$hyDJ1J}iR5$wWZ6U2 zZNi)__CmaWW<(hixm7%tnJkhc!u^rCnC&{=$eXLPvuw$*9qXX8>*J^T7UR2)OO0hI0Kz}C} za((?p$+no729#-pR{yig1ZA4jNm5OzX~f8UTo*_LcK^k2z!3BdG6h*kWo>uu6-Vub^#ybU z>~zn(3~r*o`jbx!H|7X8Q1r0su%H@oN#CX4gN~kl9V|G?T z=EXOOFWMQ=vpF>6bD5zeKR=8m{Qxk8Xu8ygXA@z*P^j~?18~R~RMQ3+=kPO#1uH?7 z0`$zP=zz=_r^fGOG_)NG`nkB$NO?XqOcA0Fzcb$p?mxbgZO4kDuTL!K<>;(FFmQ>2 zC_Be2oa433JGeZUFi=@v-xHW6Bh~2_MrCVYiv&NL9FZiQ4;;K`)QV@VJ{{7;HY?4SbB7e(`RRQu8?M5=H^!ggdi0K1s(%U5`znVVf zX?Fe+v%tEBNn{{8sADANJ3Essxbantxx@%d2Dxe@=5MLDtAY^+_JXZ!9+qt?=?iuU z0E!a~nIUlbd2VR1Tyusa){-SeXAEa!rq0lEarS0x$qZwlZs|~(xFPWWCEJ$vPFEP( zclzFeH2kB2uWezYw|ZTw5>+n^>*fcrO;yZy%s^g~gg5%VC%LHD z(E-m>AuMN%ujxaHH1muH^#4Q64pe8K!p&#?L?xS#NZ3YTLfiH@(Kp>P7Y~{1 z-Y2WPWNdyP!S<6vR>ceuue6Y5Q)EgXK)(BQ^x;Tn;;$4vKc94KLcm{~rZZv|r8_zQ zXtgUxeqOngqjq!eRFaLK_>Pejyby@@v7s@#(^cS+9MZc1j7+q_nh;_M`_OOXOiIw< zw>)yhD2i^OYTOZA0Vh5OzGuz>2p`!zwNXlO-dJslawb_3qb>ih8vVEN;ut~vBVyB| zpwQe?v_RE+><+bvQN0P7pn`XJ0WzN4FH^I*2$O8z)^LPda=5LG z&{^8+;Uu`Z)*O*7XpzxY$H}s1S1+0QPx6drZwGTCvD*%DoN_;?)V%12^N+cU*<)Kd z*q@55Dvl-|Q|W+1>_yl9;AJoAe-EfyIb^^{0mStoZu|=RrZ| z96cEEhs7JtseK7a6Xgj7E_%mS-s!0YpqVubQ=@Xj%8HpA`}`G;D#5(@pKE@)u@{j^ zIGKlnQvuWqk?y=^r~nywOG+h53g!`#biLYH5jmxx|J9~Asut==nPIT*i7<~tE*bbtwy^+t^d(q4r(iS6umd~w*E!y?E2hnR(+%WqCjJjnS};@*nLFAXu8m7 zaAKwO4gpVe1&bf8z| zKtoWHDg9tSeywyZKZZf>dBgn7>{i#0-d47J4`ZYw6I(xdW!Wwu-*-A+&>sy7u0im&u}Em=FBWVTE10pBa&2%!KE4Um&WYIL+@ zJ0Z#sicu+#^6=`VrhgMO9xYs`1TP z#H1CPj*oPh@yR<+Ljv2s^=PrW$-Smh(@A%`{(RLVd~~>yLD#qSR3bn7j)`}XOGbNi z>0)@tKh+5?4fwNb&BM0rp7||Z3jEPm7!>%9G?L4(c1*Dx9r*L zGZpJ>*NaU`J-e?gxfbVgtrtYbdQPz&{tYqAe(zxi z{5LRB=T8&de}}). + +## Background: CalDAV and friends + +So before we get into this, it'll be useful to explain how online calendars work. You've probably seen calendar invites in your email before, and noticed that a lot of email providers also provide planning/calendar apps. The way this integration is done is via [CalDAV](https://en.wikipedia.org/wiki/CalDAV). + +## What is CalDAV? + +CalDAV, or Calendering Extensions for WebDAV, is a standard to allow for standardised events, tasks, and busy/free info to be shared and subscribed to. It structures data using the iCalendar format (not to be confused with the macOS app iCal, which uses this same format), and allows for sharing and subscription to calendars via an updated ics file, and can fall back to delivering updates via email (this is how Microsoft Exchange handles sending out event updates to external CalDAV servers, for example). Access can be public, or controlled via a multitude of authentication mechanisms, and ACLs are used to control whether a user can view events, free/busy information only, or edit/create/delete events. + +## Authentication with CalDAV + +CalDAV servers can allow for a myriad methods of authentication, including OAuth, Basic Auth, SAML, OIDC, and so on. This is where our issue comes in. + +## The Problem + +By default, Calendar.app *does* allow for the import of and syncing with Google Calendar accounts, however there exist several limitations: + +1. You can only import the main calendar associated with your account. If you have several calendars, or are invited to another calendar that you want to sync to Calendar.app, this is not possible. +2. You can import the Calendar address as an arbitrary CalDAV endpoint, however the Google API only accepts OAuth requests, which Calendar.app doesn't know and will not open the flow for. + +## How do we fix it? + +We need some way to either force Calendar.app to open the OAuth flow, or get the google API to accept some other authentication mechanism. After fighting Calendar.app for a while, including some time in IDA, we found no easy (or hard) way to do this, so we turned our attention to making the Google CalDAV API behave. + +After digging around the API Docs for a while, we discovered that there exists a legacy endpoint: + +!["A screenshot showing that an \"old endpoint\" at https://google.com/calendar/dav exists, but is deprecated" !](gsuite-caldav-dep.png) + +With a little more google-fu, we managed to find some old tutorials on syncing to the google CalDAV servers that use this deprecated endpoint. + +If we put all that together, we can maybe clobber Calendar.app into syncing properly while also allowing you to have more than one calendar per Google account. + +Some testing later, it turns out we were right! + +## The Actual How-To + +*Note: This has been tested on macOS 13.3.1(a) (22E772610a) with Apple Calendar 11.0 (2932.4.5).* + +### Steps +1. Create an app password for Calendar from [My Account](https://myaccount.google.com) → +Security → 2-Step Verification → App passwords +2. Generate App password for Calendar. (Device type likely doesn't matter here, but we tested Mac) +3. In Apple Calendar, go to Calendar → Add Account → Other CalDAV Account +Account Type → Advanced: + * **User Name:** \ + * **Password:** \ + * **Server Address:** www.google.com + * **Server Path:** /calendar/dav/\@group.calendar.google.com/user + * **Port:** 443 + * **Use SSL:** [X] + +4. Click "Sign In" and it should Just Work™! + +### Notes +The `calid` value comes from Other calendars → Settings → Integrate calendar → Calendar ID. + +This seemingly only works with the old www.google.com/calendar/dav endpoint, since the newer https://apidata.googleusercontent.com/caldav/v2 one requires OAuth, and the DataAccess.framework handling for CalDAV requests will only use OAuth for Google account types, and not generic CalDAV. + +### Resources +* [Google CalDAV API Docs](https://developers.google.com/calendar/caldav/v2/guide) +* [CalDAV URL example for deprecated endpoint](https://www.davx5.com/tested-with/google) +* [App-password Docs](https://support.google.com/accounts/answer/185833?hl=en) + +## The Caveats +Since this is a deprecated endpoint, this could stop working at any time, and [knowing Google](https://9to5google.com/2023/06/15/google-domains-squarespace), it really could be ANY TIME. + +## Thanks +Massive thanks to two Anonymous Friends who did most of the legwork here, in between their knowledge of GSuite and macOS; we just did the write-up and background. \ No newline at end of file