Repository navigation
USAG sends ClubContactID, MeetContactID, ClubContactPhone and MeetContactPhone as JSON numbers. ClubReservation::fromArray() passed them unchanged into ?string parameters, so reservations()->clubs() threw a TypeError for every live sanction.