List boats visible to the authenticated user
Returns boats the user has read access to. Use this as the entry point for any analysis scoped to specific boats — the user typically needs to pick a boat before drilling into events, races, or performance data.
Query (recommended: listBoats)
listBoats is the recommended entry point — cursor-paginated, sortable, with a rich filter input:
query ListMyBoats($limit: Int = 50, $after: ID) {
listBoats(limit: $limit, after: $after, sort: Name) {
cursor
boat {
key
name
boatClass {
key
name
}
liveDataStatus {
isOnline
lastSourceTimestamp
}
}
}
}
For more boats, pass the last item's cursor value as the next request's after.
Common filters
listBoats(filter: ListBoatFilterInput) supports:
nameMatches: "..."— case-insensitive substring on boat nameminimumRole: Manager— narrows to boats the user can editboatClass: ID— filter to one boat classdataBetween: { start, end }— boats with logged data overlapping the range (e.g. "what was sailing last weekend?")hasLiveDataAfter: Date— boats that streamed live data after a given timeevent: ID— boats in a specific event
sort accepts Key, Name, or Created.
Legacy alternative: allBoats
allBoats(...) is kept for back-compat — flat list, no pagination, fewer filters. Reach for it only if you specifically need the unpaginated array shape; prefer listBoats for new work.
query AllBoatsLegacy {
allBoats(onlyManagerBoats: false) {
key
name
}
}
Notes
liveDataStatus.isOnlinereflects whether the boat is currently streaming, not whether it has streamed recently. UselastSourceTimestampfor the most recent ingestion time.- Boats can belong to multiple events; this query returns the boats themselves, not their event memberships.