رویدادها
مدل رویداد دو ویژگی دارد که بقیهٔ مدل حول آن ها شکل گرفته: تکرار (recurrence) و ردیابیِ منشأ برای همگامسازی با منابع خارجی.
API مسیرِ REST مستقل (CRUD) برای Event ندارد؛ کلاینتها (اندروید و وب) آن را
فقط از طریق /api/sync/* میخوانند و مینویسند — دلیلش را در
«چرا فقط sync؟» بخوانید.
فیلدهای کلیدی
title،description،location،startTime/endTime،allDaycolor(ARGB عددی) وemojitype:JALALI/GREGORIANrrule: قاعدهٔ تکرار بهصورت رشتهٔ استاندارد RFC 5545، بدون پیشوندِRRULE:— مثلFREQ=WEEKLY;COUNT=10;WKST=SU;BYDAY=MOexdate: فهرستِ جداشده با کاما از زمانِ شروعِ رخدادهای حذفشده از سری (ISO-8601) — معادلِ EXDATE در RFC 5545source/sourceId: منشأ رویداد (LOCAL،GOOGLE،ANDROID_PROVIDER،SERVER) و شناسهٔ خارجی آن
تکرار (recurrence)
رویدادهای تکرارشونده با رشتهٔ rrule تعریف میشوند و رخدادهای مستثنا با exdate.
سرور فقط master و قاعدهٔ تکرار را ذخیره میکند؛ گسترشِ نمایشی (expansion) — یعنی
تبدیلِ آن قاعده به فهرستِ رخدادهای واقعی — سمتِ کلاینت انجام میشود، مثلاً با
کتابخانهٔ rrule (rrulestr)؛ رخدادهایی که شروعشان در exdate آمده را رد کنید.
در push مقدار rrule با پیشوندِ RRULE: هم پذیرفته میشود ولی نرمال و بدون پیشوند
ذخیره میشود؛ مقدار نامعتبر → خطای per-item با status: "error".
iCal
فیلد ical از payload همگامسازی حذف شده است (پیشتر همیشه null بود).
قالبِ برنامهٔ آینده برای خروجی iCal و ویژگیهای سفارشیِ X-TAGHVIMAM-* در
پشتیبانی iCal آمده است.