رفتن به محتوای اصلی

رویدادها

مدل رویداد دو ویژگی دارد که بقیهٔ مدل حول آن‌ها شکل گرفته: تکرار (recurrence) و ردیابیِ منشأ برای همگام‌سازی با منابع خارجی.

رویداد فقط از طریق همگام‌سازی در دسترس است

API مسیرِ REST مستقل (CRUD) برای Event ندارد؛ کلاینت‌ها (اندروید و وب) آن را فقط از طریق /api/sync/* می‌خوانند و می‌نویسند — دلیلش را در «چرا فقط sync؟» بخوانید.

فیلدهای کلیدی

  • title، description، location، startTime/endTime، allDay
  • color (ARGB عددی) و emoji
  • type: JALALI / GREGORIAN
  • rrule: قاعدهٔ تکرار به‌صورت رشتهٔ استاندارد RFC 5545، بدون پیشوندِ RRULE: — مثل FREQ=WEEKLY;COUNT=10;WKST=SU;BYDAY=MO
  • exdate: فهرستِ جداشده با کاما از زمانِ شروعِ رخدادهای حذف‌شده از سری (ISO-8601) — معادلِ EXDATE در RFC 5545
  • source / 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 آمده است.