# =============================================== # USERS # =============================================== extend type Query { users: UserQuery } extend type Mutation { users: UserMutation } # ----------------------------------------------- # QUERIES # ----------------------------------------------- type UserQuery { list( filter: String orderBy: String ): [UserMinimal] @auth(requires: ["write:users", "manage:users", "manage:system"]) search( query: String! ): [UserMinimal] @auth(requires: ["write:groups", "manage:groups", "write:users", "manage:users", "manage:system"]) single( id: Int! ): User @auth(requires: ["manage:users", "manage:system"]) } # ----------------------------------------------- # MUTATIONS # ----------------------------------------------- type UserMutation { create( email: String! name: String passwordRaw: String provider: String! providerId: String role: UserRole! ): UserResponse @auth(requires: ["write:users", "manage:users", "manage:system"]) update( id: Int! email: String name: String provider: String providerId: String role: UserRole ): UserResponse @auth(requires: ["manage:users", "manage:system"]) delete( id: Int! ): DefaultResponse @auth(requires: ["manage:users", "manage:system"]) resetPassword( id: Int! ): DefaultResponse setPassword( id: Int! passwordRaw: String! ): DefaultResponse } # ----------------------------------------------- # TYPES # ----------------------------------------------- enum UserRole { guest user admin } type UserResponse { responseResult: ResponseStatus! user: User } type UserMinimal { id: Int! name: String! email: String! providerKey: String! createdAt: Date! } type User { id: Int! name: String! email: String! providerKey: String! providerId: String role: UserRole! createdAt: Date! updatedAt: Date! groups: [Group] }