181 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			GraphQL
		
	
	
	
	
	
			
		
		
	
	
			181 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			GraphQL
		
	
	
	
	
	
| # ===============================================
 | |
| # 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"])
 | |
| 
 | |
|   profile: UserProfile
 | |
| 
 | |
|   lastLogins: [UserLastLogin] @auth(requires: ["write:groups", "manage:groups", "write:users", "manage:users", "manage:system"])
 | |
| }
 | |
| 
 | |
| # -----------------------------------------------
 | |
| # MUTATIONS
 | |
| # -----------------------------------------------
 | |
| 
 | |
| type UserMutation {
 | |
|   create(
 | |
|     email: String!
 | |
|     name: String!
 | |
|     passwordRaw: String
 | |
|     providerKey: String!
 | |
|     groups: [Int]!
 | |
|     mustChangePassword: Boolean
 | |
|     sendWelcomeEmail: Boolean
 | |
|   ): UserResponse @auth(requires: ["write:users", "manage:users", "manage:system"])
 | |
| 
 | |
|   update(
 | |
|     id: Int!
 | |
|     email: String
 | |
|     name: String
 | |
|     newPassword: String
 | |
|     groups: [Int]
 | |
|     location: String
 | |
|     jobTitle: String
 | |
|     timezone: String
 | |
|     dateFormat: String
 | |
|     appearance: String
 | |
|   ): DefaultResponse @auth(requires: ["manage:users", "manage:system"])
 | |
| 
 | |
|   delete(
 | |
|     id: Int!
 | |
|     replaceId: Int!
 | |
|   ): DefaultResponse @auth(requires: ["manage:users", "manage:system"])
 | |
| 
 | |
|   verify(
 | |
|     id: Int!
 | |
|   ): DefaultResponse @auth(requires: ["manage:users", "manage:system"])
 | |
| 
 | |
|   activate(
 | |
|     id: Int!
 | |
|   ): DefaultResponse @auth(requires: ["manage:users", "manage:system"])
 | |
| 
 | |
|   deactivate(
 | |
|     id: Int!
 | |
|   ): DefaultResponse @auth(requires: ["manage:users", "manage:system"])
 | |
| 
 | |
|   enableTFA(
 | |
|     id: Int!
 | |
|   ): DefaultResponse @auth(requires: ["manage:users", "manage:system"])
 | |
| 
 | |
|   disableTFA(
 | |
|     id: Int!
 | |
|   ): DefaultResponse @auth(requires: ["manage:users", "manage:system"])
 | |
| 
 | |
|   resetPassword(
 | |
|     id: Int!
 | |
|   ): DefaultResponse
 | |
| 
 | |
|   updateProfile(
 | |
|     name: String!
 | |
|     location: String!
 | |
|     jobTitle: String!
 | |
|     timezone: String!
 | |
|     dateFormat: String!
 | |
|     appearance: String!
 | |
|   ): UserTokenResponse
 | |
| 
 | |
|   changePassword(
 | |
|     current: String!
 | |
|     new: String!
 | |
|   ): UserTokenResponse
 | |
| }
 | |
| 
 | |
| # -----------------------------------------------
 | |
| # TYPES
 | |
| # -----------------------------------------------
 | |
| 
 | |
| type UserResponse {
 | |
|   responseResult: ResponseStatus!
 | |
|   user: User
 | |
| }
 | |
| 
 | |
| type UserLastLogin {
 | |
|   id: Int!
 | |
|   name: String!
 | |
|   lastLoginAt: Date!
 | |
| }
 | |
| 
 | |
| type UserMinimal {
 | |
|   id: Int!
 | |
|   name: String!
 | |
|   email: String!
 | |
|   providerKey: String!
 | |
|   isSystem: Boolean!
 | |
|   isActive: Boolean!
 | |
|   createdAt: Date!
 | |
|   lastLoginAt: Date
 | |
| }
 | |
| 
 | |
| type User {
 | |
|   id: Int!
 | |
|   name: String!
 | |
|   email: String!
 | |
|   providerKey: String!
 | |
|   providerName: String
 | |
|   providerId: String
 | |
|   providerIs2FACapable: Boolean
 | |
|   isSystem: Boolean!
 | |
|   isActive: Boolean!
 | |
|   isVerified: Boolean!
 | |
|   location: String!
 | |
|   jobTitle: String!
 | |
|   timezone: String!
 | |
|   dateFormat: String!
 | |
|   appearance: String!
 | |
|   createdAt: Date!
 | |
|   updatedAt: Date!
 | |
|   lastLoginAt: Date
 | |
|   tfaIsActive: Boolean!
 | |
|   groups: [Group]!
 | |
| }
 | |
| 
 | |
| type UserProfile {
 | |
|   id: Int!
 | |
|   name: String!
 | |
|   email: String!
 | |
|   providerKey: String
 | |
|   providerName: String
 | |
|   isSystem: Boolean!
 | |
|   isVerified: Boolean!
 | |
|   location: String!
 | |
|   jobTitle: String!
 | |
|   timezone: String!
 | |
|   dateFormat: String!
 | |
|   appearance: String!
 | |
|   createdAt: Date!
 | |
|   updatedAt: Date!
 | |
|   lastLoginAt: Date
 | |
|   groups: [String]!
 | |
|   pagesTotal: Int!
 | |
| }
 | |
| 
 | |
| type UserTokenResponse {
 | |
|   responseResult: ResponseStatus!
 | |
|   jwt: String
 | |
| }
 |