Times and days
UTC everywhere, and how a local day is cut.
Every time in every answer is UTC, written as ISO 8601 with a Z: 2026-10-07T19:00:00Z.
Asking for a local day
Endpoints that take date also take tz, an IANA zone such as Asia/Bangkok. The day is then cut at local midnight, and the times in the answer stay UTC, so nothing you store needs converting twice.
A slot that crosses midnight appears in both days. Use its id to keep one copy.