SAP Sailing Analytics Webservices API Version 1.0 - Overview

A number of web services are available to query the state of a SAP Sailing Analytics server instance. Note that different server instances exist, and not all servers hold the same data. Usually, events get their own URL which is then made sure to point to a server instance holding the data for that event. We use an Apache reverse proxy to map URLs (and in particular the sub-domain) to a particular server instance. So, www.sapsailing.com may end up on a different server instance than tw2013.sapsailing.com or ess40-2013.sapsailing.com. Usually, we hand out a per-event or per-series URL, such as the ones above (except www.sapsailing.com which is the general landing page), and you would only fetch the content for the event you're interested in, even if the server instance has more. In all subsequent explanations, you may replace the "www.sapsailing.com" hostname by an according per-event host name to make sure you get to the event you're interested in.

Webservice URL Description
/api/v1/events/createEvent Creates a new event
/api/v1/events Gets all events
/api/v1/events/{id} Gets the details of an event
/api/v1/events/{id}/racestates Gets the race states of all races of an event
/api/v1/regattas Gets all regattas
/api/v1/regattas/{name} Gets the details of a regatta
/api/v1/regattas/{name}/races Gets the list of races in a regatta
/api/v1/regattas/{name}/entries Gets the entries of a regatta
/api/v1/regattas/{regattaname}/races/{racename}/entries Gets the entries of a race
/api/v1/regattas/{regattaname}/races/{racename}/firstlegbearing Gets the bearing of the first leg
/api/v1/regattas/{regattaname}/races/{racename}/markpassings Gets all mark passings of a race, by competitor and by waypoint
/api/v1/regattas/{regattaname}/races/{racename}/competitors/positions Gets the GPS positions of the competitors of a race
/api/v1/regattas/{regattaname}/races/{racename}/competitors/live Gets some competitor information (e.g current rank, current leg) for a live race
/api/v1/regattas/{regattaname}/races/{racename}/competitors/legs Gets some leg information (e.g. rank, distance traveled) for all competitors of a race
/api/v1/regattas/{regattaname}/races/{racename}/marks/positions Gets all GPS positions of the course marks of a race
/api/v1/regattas/{regattaname}/races/{racename}/course Gets the course of a race
/api/v1/regattas/{regattaname}/races/{racename}/times Gets the timing data for a race, including the start/end times, the tracking start/end times as well as the "split times" or "mark passing times" of the first competitor rounding each mark.
/api/v1/regattas/{regattaname}/races/{racename}/targettime Gets the estimated target time of a race
/api/v1/regattas/{regattaname}/races/{racename}/wind Gets all GPS positions and data values for the wind of a race
/api/v1/regattas/datamining Gets all query identifiers for regattas
/api/v1/regattas/{regattaname}/datamining/{queryidentifier} Executes the query for the regatta and gets the result
/api/v1/regattas/{regattaname}/addracecolumns Adds one or more race columns to a regatta
/api/v1/regattas/{regattaname}/removeracecolumn Removes a race column from a regatta
/api/v1/regattas/{regattaname}/competitors Obtains the competitors participating in a regatta
/api/v1/regattas/{regattaname}/competitors/createandadd Creates a competitor and adds it to the regatta
/api/v1/regattas/{regattaname}/competitors/{competitorId}/add Registers a competitor with a regatta (POST)
/api/v1/regattas/{regattaname}/competitors/{competitorId}/remove Removes a competitor from a regatta (POST)
/api/v1/regattas/{regattaname}/races/{racename}/datamining/{queryidentifier} Executes the query for the race and gets the result
/api/v1/leaderboardgroups Gets all leaderboard groups
/api/v1/leaderboardgroups/{name} Gets the details of a group of leaderboards
/api/v1/leaderboards Gets all leaderboards
/api/v1/leaderboards/{name} Gets the details of a leaderboard
/api/v1/leaderboards/{name}/device_mappings/start Tracking App Device Checkin on leaderboard
/api/v1/leaderboards/{name}/device_mappings/end Tracking App Device Checkout on leaderboard
/api/v1/leaderboards/{name}/competitors/{id} Gets the details of a competitor in the context of a leaderboard
/api/v1/leaderboards/{name}/marks Gets the marks of a race (from the RaceLog and if possible the TrackedRace)
/api/v1/leaderboards/{name}/settrackingtimes Modifies the race's tracking interval
/api/v1/leaderboards/{name}/starttracking Starts tracking for a race log / smart phone-tracked race
/api/v1/leaderboards/{name}/stoptracking Stops tracking for a race
/api/v1/leaderboards/{name}/marks/{id}/gps_fixes Pings the location of a mark via the RegattaLog
/api/v1/gps_fixes Adds GPS-fixes that originated from a device with a unique identifier
/api/v1/competitors/{id} Gets the details of a competitor
/api/v1/competitors/{id}/team Gets the details of a competitor's team
/api/v1/competitors/{id}/team/image Sets the team image
/api/v1/regattas/{regattaname}/races/{racename}/startorder Gets the order in which competitors have started or are expected to start
/api/v1/regattas/{regattaname}/races/{racename}/maneuvers Gets all maneuvers performed by all competitors of a race
/api/v1/statistics/years?[years={year}[&years={year}]] Gets statistics regarding regattas and races grouped by years
/api/v1/trackedRaces/allRaces Gets all TrackedRaces found on the local instance as well as the collected TrackedRaces from all remote instances and provides them in a list sorted by race start time, together with a sequence number for each one. This is a simple way to check how many races have been tracked altogether and which one may be an "anniversary race."
/api/v1/trackedRaces/getRaces Gets all TrackedRaces found on the local instance with a valid start time.
/api/v1/trackedRaces/raceDetails?raceName={raceName}&regattaName={regattaName} Gets more information about a specified RegattaAndRace identifier
Back to Web Services Home