type Query { user(id: Int!): User! } type Mutation { signup( email: String! username: String! password: String! ): UserToken! signin( email: String! password: String! ): String! } type Subscription { UserUpdated(UserId: Int!): User } type UserToken { token: String! user: User! } type User { id: Int! username: String! email: String! createdAt: String! context: Context! details: UserDetails! } union UserDetails = Guest | Member type Guest { region(language: String): String! } type Member { address: String! } type Context { user: User! # Circular ref domain: String! }