Files
project-inter-server/schema.graphqls

94 lines
1.4 KiB
GraphQL

# Base types
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!
orderedStop(forStopId: ID): OrderedStop
shuttles: [Shuttle!]
polylineCoordinates: [Coordinates!]!
color: String!
}
type OrderedStop {
nextStop: OrderedStop
previousStop: OrderedStop
route: Route
routeId: ID!
stop: Stop
stopId: ID!
}
type Stop {
id: ID!
name: String!
coordinates: Coordinates!
etas: [ETA!]
orderedStops: [OrderedStop!]
}
type Coordinates {
latitude: Float!
longitude: Float!
}
type ETA {
stop: Stop
stopId: ID!
shuttle: Shuttle
shuttleId: ID!
secondsRemaining: Float!
}
type Shuttle {
name: String!
id: ID!,
coordinates: Coordinates!
route: Route
routeId: ID!
etas: [ETA!]
eta(forStopId: ID): ETA
orientationInDegrees: Float!
}
# Queries
type Query {
systems: [System!]!
system(id: ID): System
isNotificationScheduled(input: NotificationInput!): Boolean
}
# Mutations
type Mutation {
scheduleNotification(input: NotificationInput!): NotificationResponse!
cancelNotification(input: NotificationInput!): NotificationResponse!
}
input NotificationInput {
deviceId: ID!
shuttleId: ID!
stopId: ID!
}
type NotificationResponse {
success: Boolean!
message: String!
data: Notification
}
type Notification {
deviceId: ID!
shuttleId: ID!
stopId: ID!
}