type Authentication { id: ID! createdAt: DateTime! } type BrowserSession { id: ID! user: User! lastAuthentication: Authentication createdAt: DateTime! } type BrowserSessionConnection { """ Information to aid in pagination. """ pageInfo: PageInfo! """ A list of edges. """ edges: [BrowserSessionEdge!]! """ A list of nodes. """ nodes: [BrowserSession!]! } """ An edge in a connection. """ type BrowserSessionEdge { """ A cursor for use in pagination """ cursor: String! """ The item at the end of the edge """ node: BrowserSession! } """ Implement the DateTime scalar The input/output is a string in RFC3339 format. """ scalar DateTime """ Information about pagination in a connection """ type PageInfo { """ When paginating backwards, are there more items? """ hasPreviousPage: Boolean! """ When paginating forwards, are there more items? """ hasNextPage: Boolean! """ When paginating backwards, the cursor to continue. """ startCursor: String """ When paginating forwards, the cursor to continue. """ endCursor: String } type Query { """ Get the current logged in browser session """ currentBrowserSession: BrowserSession """ Get the current logged in user """ currentUser: User } type User { id: ID! username: String! primaryEmail: UserEmail browserSessions(after: String, before: String, first: Int, last: Int): BrowserSessionConnection! emails(after: String, before: String, first: Int, last: Int): UserEmailConnection! } type UserEmail { id: ID! email: String! createdAt: DateTime! confirmedAt: DateTime } type UserEmailConnection { """ Information to aid in pagination. """ pageInfo: PageInfo! """ A list of edges. """ edges: [UserEmailEdge!]! """ A list of nodes. """ nodes: [UserEmail!]! totalCount: Int! } """ An edge in a connection. """ type UserEmailEdge { """ A cursor for use in pagination """ cursor: String! """ The item at the end of the edge """ node: UserEmail! } schema { query: Query }