type Query { systems: [System!]! system(id: ID): System } type System { id: ID! name: String! routes: [Route!]! route(id: ID): Route stops: [Stop!]! stop(id: ID): Stop shuttles: [Shuttle!]! shuttle(id: ID): Shuttle } type Route { name: String! id: ID! system: System! orderedStops: [OrderedStop!]! nextOrderedStop(forStopId: ID): OrderedStop shuttles: [Shuttle!]! polylineCoordinates: [Coordinates!]! color: String! } type OrderedStop { nextStop: OrderedStop previousStop: OrderedStop route: Route! stop: Stop! } type Stop { id: ID! name: String! coordinates: Coordinates! system: System! etas: [ETA!]! orderedStops: [OrderedStop!]! } type Coordinates { latitude: Float! longitude: Float! } type ETA { stop: Stop! shuttle: Shuttle! secondsRemaining: Float! } type Shuttle { name: String! id: ID!, coordinates: Coordinates! route: Route! system: System! etas: [ETA!]! eta(forStopId: ID): ETA }