type Presence { game: String status: String } type User { id: ID! discordId: String name: String! avatar: String bot: Boolean tag: String! presence: Presence } type Role { id: ID! discordId: String name: String color: String members(first: Int = 10, offset: Int = 0, id: String): [GuildMember] } type GuildMember { id: ID! discordId: String user: User nickname: String roles(first: Int = 10, offset: Int = 0, id: String): [Role] highestRole: Role } type DJ { queue(first: Int = 10, offset: Int = 0, id: String): [MediaEntry] queueCount: Int! songStartTime: String playing: Boolean! volume: Float repeat: Boolean currentSong: MediaEntry quality: String voiceChannel: String connected: Boolean! } type Guild { id: ID! discordId: String name: String owner: GuildMember dj: DJ members(first: Int = 10, offset: Int = 0, id: String): [GuildMember] memberCount: Int! roles(first: Int = 10, offset: Int = 0, id: String): [Role] icon: String ready: Boolean saved(first: Int = 10, offset: Int = 0, id: String, name: String): [MediaEntry!] savedCount: Int! } type Client { guilds(first: Int = 10, offset: Int = 0, id: String): [Guild] guildCount: Int voiceConnectionCount: Int user: User ping: Float status: Int uptime: Int } type MediaEntry { id: ID! url: String! name: String! thumbnail: String } type LogEntry { id: ID! message: String level: String timestamp: String } type Query { client: Client presences: [String]! config: String prefix: String logs(first: Int, offset: Int = 0, id: String, last: Int = 10, level: String): [LogEntry] }