# source: http://localhost:4000/graphql # timestamp: Thu May 07 2020 16:24:38 GMT-0400 (Amazon Standard Time) directive @auth(roles: [String!]) on FIELD_DEFINITION directive @cacheControl( maxAge: Int scope: CacheControlScope ) on FIELD_DEFINITION | OBJECT | INTERFACE type AuthPayload { user: User! token: String! expiresIn: String! } enum CacheControlScope { PUBLIC PRIVATE } input CreateResetTokenInput { username: String! } type Group { cn: String! dn: String! name: String members: [User!]! } input GroupWhereInput { cn: String dn: String name: String } input LoginInput { username: String! password: String! } type Mutation { login(data: LoginInput!): AuthPayload! updatePassword(data: UpdatePasswordInput!): AuthPayload! replacePassword(data: ReplacePasswordInput!): String! createResetToken(data: CreateResetTokenInput!): ResetToken! useResetToken(data: UseResetTokenInput!): Boolean! importUsers: String! } type Query { """ Returns only a few fields of User """ basicUser(sAMAccountName: String!): User! me: User! users( where: UserWhereInput! limit: Int = 15 onlyStudents: Boolean = false ): [User!] user(sAMAccountName: String!): User! groups(where: GroupWhereInput!, limit: Int = 10): [Group!]! stats: Stats! wifiDevices( search: String = "" identifiedOnly: Boolean = true ): [WifiDevice]! userPresence(search: String): [UserPresence!] } input ReplacePasswordInput { username: String! newPassword: String! } type ResetToken { id: ID! user: User! creator: User! token: String! expiration: String! createdAt: String! updatedAt: String! } type Stats { tokenCountTotal: Int! tokenCountUsed: Int! tokenCountExpired: Int! tokenCountNotUsed: Int! } enum Status { ONLINE OFFLINE } input UpdatePasswordInput { oldPassword: String! newPassword: String! } """ The `Upload` scalar type represents a file upload. """ scalar Upload """ A mix between the database User and the Active Directory User """ type User { id: ID wifiDevices: [WifiDevice!] lastLogin: String lastLoginPrior: String roles: [String!] firstName: String groups: [Group!] isSuperAdmin: Boolean! isTokenCreator: Boolean! isServant: Boolean! isStudent: Boolean! isWatcher: Boolean! createdAt: String! updatedAt: String! accountExpires: String badPasswordTime: String badPwdCount: String cn: String department: String description: String displayName: String distinguishedName: String dn: String extensionAttribute1: String extensionAttribute10: String extensionAttribute2: String extensionAttribute6: String extensionAttribute7: String givenName: String homeDirectory: String homeDrive: String lastLogon: String lastLogonTimestamp: String lockoutTime: String logonCount: String mail: String name: String objectCategory: String objectGUID: String objectSid: String primaryGroupID: String pwdLastSet: String sAMAccountName: String! sAMAccountType: String sn: String thumbnailPhoto: String title: String userAccountControl: String userPrincipalName: String whenChanged: String whenCreated: String } input UseResetTokenInput { token: String! newPassword: String! } type UserPresence { user: User! wifiDevices: [WifiDevice!]! } input UserWhereInput { cn: String displayName: String sAMAccountName: String } type WifiDevice { user: User id: String oui: String mac: String hostname: String firstSeen: String lastSeen: String essid: String ip: String uptime: Int apName: String status: Status }