Skip to content

Interfaces

Greg Wilkins edited this page Oct 21, 2026 · 2 revisions

The plugin's REST endpoints and PUT handlers, what it reads from Signal K, and what it fetches from the internet.

  • REST (read): GET /signalk/v1/api/nemesis/snapshot, /tracks?periodS=&toT=&sinceT=, /user, /course (the course, resolved), /course/waypoints and /course/routes (what the Course tab can add), and for the CYCA tracker /cyca (poll state), /cyca/races (?refresh=1 reads the feed first) and /cyca/mapping (also at /plugins/signalk-nemesis/*, which is admin only when security is on).
  • PUT handlers (write, need read/write access): navigation.racing.nemesis.setNemesis {id, nemesis}, .setTcf {id, tcf} (id self is our boat), .setStartTime {startTime: RFC 3339 | null}, .setCycaRace {raceId | null}, .setCycaLink {name: CYCA boat name, mmsi | null}, .setCycaNoAis {entryId, noAis}, .setCourse {marks: [{name, waypointId?, lat?, lon?}]} or {routeId}. As REST: PUT /signalk/v1/api/vessels/self/navigation/racing/nemesis/setTcf with body {"value": {...}}.
  • Consumed: other vessels' AIS position, COG, SOG and name; our position, COG, SOG, heading; our true wind direction (environment.wind.directionTrue, for Upwind and Downwind); the Course API and waypoint/route resources; NMEA next point (navigation.courseRhumbline|courseGreatCircle.nextPoint.*); signalk-racer's navigation.racing.startTime; our vessel name (to find our own CYCA entry).
  • Fetched (only with a CYCA race picked): https://feeds.cycaracing.com/v2/..., the race list when the CYCA tab asks for it, the race's fleet every 10 minutes while it runs, and a nemesis boat's track when its history has a gap.
  • Published to the data model: nothing yet.

All values are SI on the wire (radians, m/s, metres, epoch ms); the webapp converts to knots, degrees and nm.

Clone this wiki locally