You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
whooshy/graphql/bingo.graphql

196 lines
3.4 KiB
GraphQL

type BingoMutation {
"creates a lobby for a game and returns the lobby id"
createLobby: ID
"joins a lobby and returns the connection"
joinLobby(input: joinLobbyInput): PlayerLobbyConnection
"creates a game of bingo and returns the game"
createGame(input: CreateGameInput!): BingoGame
"submit a bingo to the active game session"
submitBingo: BingoGame
"toggle a word (heared or not) on the sessions grid"
toggleWord(input: WordInput!): BingoGrid
"set the username of the current session"
setUsername(input: UsernameInput!): BingoUser
"recreates the active game to a follow-up"
createFollowupGame: BingoGame
"sends a message to the current sessions chat"
sendChatMessage(input: MessageInput!): ChatMessage
}
type BingoQuery {
"returns the currently active bingo game"
gameInfo(input: IdInput): BingoGame
"if there is a bingo in the fields."
checkBingo: Boolean
"returns the grid of the active bingo game"
activeGrid: BingoGrid
}
type PlayerLobbyConnection {
"the id of the player"
playerId: ID!
"the id of the lobby"
lobbyId: ID!
}
type BingoGame {
"the id of the bingo game"
id: ID!
"the words used in the bingo game"
words: [String]!
"the size of the square-grid"
gridSize: Int
"an array of players active in the bingo game"
players(input: IdInput): [BingoUser]
# the player-ids that scored a bingo
bingos: [String]!
"if the game has already finished"
finished: Boolean
"the id of the followup game if it has been created"
followup: ID
"returns the last n chat-messages"
getMessages(input: MessageQueryInput): [ChatMessage!]
}
type BingoUser {
"the id of the bingo user"
id: ID!
"the id of the currently active bingo game"
game: ID
"the name of the user"
username: String
}
type BingoGrid {
"the grid represented as string matrix"
wordGrid: [[String]]!
"the grid represented as bingo field matrix"
fieldGrid: [[BingoField]]!
"if there is a bingo"
bingo: Boolean
}
type BingoField {
"the word contained in the bingo field"
word: String
"if the word was already heared"
submitted: Boolean!
"the base64 encoded word"
base64Word: String
}
type ChatMessage {
"the id of the message"
id: ID!
"the content of the message"
content: String!
# the content of the message rendered by markdown-it
htmlContent: String
"the type of the message"
type: MessageType!
"the username of the sender"
username: String
# the time the message was send (in milliseconds)
datetime: String!
}
# #
# input Types #
# #
input joinLobbyInput {
"the id of the lobby to join"
lobbyId: ID!
}
input CreateGameInput {
"the words used to fill the bingo grid"
words: [String!]!
"the size of the bingo grid"
size: Int! = 3
}
input WordInput {
"the normal word string"
word: String
# the base64-encoded word
base64Word: String
}
input UsernameInput {
"the username string"
username: String!
}
input IdInput {
"the id"
id: ID!
}
input MessageInput {
"the message"
message: String!
}
input MessageQueryInput {
"search for a specific id"
id: ID
"get the last n messages"
last: Int = 10
}
# #
# enum Types #
# #
enum MessageType {
USER
ERROR
INFO
}