The original view for the system was to provide a mostly automatic system to manage a race. Due to issues with the rider identification we are redesigning the system to assist an operator in managing a race.
The operator will be responsible for three things during a race with this system:
assigning a waiting rider to the start box so the system knows who is starting next
assigning a finished rider to an incoming stop event to assign a time
assiging penalties to riders on track (such as second penalties and DSQ)
Before the race the system should be set up by adding a description of the event and after a race the operator should be able to correct the penalties, assign a time manually and find out the final outcome of the race
These endpoints should be available to ineteract with the timing system:
Race endpoints
GET /RiderReady?id=riderId
Returns: a 200 code, if the rider is already in the track, if the id is not valid/unknown if there is no active race the endpoint returns a 400
Signals the system that a rider is in the startbox and is ready to start. When this endpoint is called the 'go' light for the start box should turn on. The next timing event the system receives from the start gate is assumed to be this rider entering the course. Once a timing event is recieved the 'go' light will turn off.
GET /ClearStartBox
Returns: a 200 code, if there is no active race the endpoint returns a 400
Signals the system that there is no rider in the start box at the moment. Any further timing events from the start gate are ignored.
GET /MatchEndTime?id=riderId&time=timeId
Returns: a 200 code, If there is no active race or either id is not valid/unknown it will return a 400.
The time id will need to be obtained from the /PendingTimes endpoint.
This endpoint will:
Check if the rider exists, if not race is not affected
Check if rider is on track and timing event exist, if not race is not affected
Make make a lap from given timing event and the given rider start time
Apply pending penalties to the new lap
Remove rider from 'on track' status
Remove the used timing event
Fire the OnRiderMatched event
GET /IgnoreEndTime?time=timeId
Returns a 200 code.
Removes the specified end time event from the system. The removed time will not appear in any further calls to /PendingTimes and cannot be used in further calls to /MatchEndTime or this endpoint.
If the provided time id does not exist the race is not affected
GET /PendingTimes
Returns a 200 and a json like [ {"Id": <some guid>, "Microseconds": 1000 }, {"Id": <another guid>, "Microseconds": 1000 } ]. If there is no active race the endpoint will return a 400.
The list is ordered from most recent event to least recent.
The original view for the system was to provide a mostly automatic system to manage a race. Due to issues with the rider identification we are redesigning the system to assist an operator in managing a race.
The operator will be responsible for three things during a race with this system:
Before the race the system should be set up by adding a description of the event and after a race the operator should be able to correct the penalties, assign a time manually and find out the final outcome of the race
These endpoints should be available to ineteract with the timing system:
Race endpoints
GET /RiderReady?id=riderId
GET /ClearStartBox
GET /MatchEndTime?id=riderId&time=timeId
GET /IgnoreEndTime?time=timeId
GET /PendingTimes
[ {"Id": <some guid>, "Microseconds": 1000 }, {"Id": <another guid>, "Microseconds": 1000 } ]
. If there is no active race the endpoint will return a 400.GET /RidersOnTrack
if there is no active race the endpoint will return a 400
Event management endpoints
Config enpoints