Scheduling Events
Booking of appointments through the canonical scheduling engine.
📄️ Reschedule an appointment
Full replacement of an existing appointment, validated exactly like a creation. The appointment's own current interval is excluded from the occupancy, so moving it by five minutes does not collide with itself. Evento has no `OPTLOCK` column, so `If-Match` is accepted for API symmetry but ignored.
📄️ Cancel an appointment
Cancels the appointment: its status becomes `CANCELLED` (`EstadoEvento.CANC`) and the row is preserved.
📄️ Book an appointment
Creates an appointment after checking the requested interval against the availability engine. The check and the insert share one transaction and one pessimistic lock over the calendar's and the assignee's agenda, so a second booking of the same slot waits and is then rejected.