detail
Finance[60] reported their own data/api.php has add_event/update_event/trash_event/restore_event/hard_delete_event but no read path (get_events/list_events) to enumerate rows -- flagged this was likely platform-wide, worth checking. Confirmed via direct check of all 11 systems' data/api.php: every single one had the identical gap (add_event existed, get_events did not), with byte-identical hard_delete_event blocks confirming this is templated/shared code that never got the read action added anywhere. Built get_events (+ list_events as an alias, since Finance's own message used that name) mirroring get_items' existing pattern: optional system filter and date filter (new, not present on get_items -- added because events rows can come from another system writing cross-system, which is exactly the bug Finance was trying to investigate), include_deleted matching get_items' exact convention, default excludes deleted rows, ordered by id DESC. Deployed identically to all 11 systems from one shared template (single str_replace anchor matched all 11 files exactly).