type Query{ #get all of user users:UsersData #get all of freedom users freedomUsers:FreedomUsersData #get users in recycle bin recycleUsers:RecycleUsersData #get user info userInfos(id:Int!):UserInfosData #get user roles rolesInUser(id:Int!):RolesData #get user permission permissionsInUser(id:Int!):PermissionsData } type Mutation{ #create user , specify organization createUser( organizationId: Int, userName: String!, password: String!, ):Data #create user with UserInfo, specify organization createUserWithUserInfo( organizationId: Int, userName: String!, password: String!, groups: [UserInfoGroup] ):Data #update user , specify organization updateUser( id:Int, userName: String, password: String, ):Data #add userinfo to user , user must exist addUserInfo( id:Int!, groups: [UserInfoGroup] ):Data #banned user,set status false bannedUser(id:Int!):Data #unbanned user,set status true unBannedUser(id:Int!):Data #soft delete user and move it to recycle bin,set recycle true softDeleteUser(id:Int!):Data #restore user from recycle bin restoreUser(id:Int!):Data #restore users from recycle bin restoreUsers(ids:[Int!]!):Data #delete user and it's user info,hard delete deleteUser(id:Int!):Data #delete in batches,hard delete deleteUsers(ids:[Int!]!):Data #set roles setRoles(id:Int!,roleIds:[Int!]!):Data #set permission ,that is final result ,generate by role adds reduces setUserOwnPermissions(id:Int!,permissionIds:[Int!]!):Data } #users return Data type UsersData{ #error code code:Int #error message message:String #array of user users:[User] } #freeUsers return Data type FreedomUsersData{ #error code code:Int #error message message:String #array of user freedomUsers:[User] } #recycleUsers return Data type RecycleUsersData{ #error code code:Int #error message message:String #array of user recycleUsers:[User] } #input user info group input UserInfoGroup{ #id of InfoGroup groupId:Int #array of union info type infos:[UnionUserInfo] } #userinfo union type , name is required #when text ,value is required #when checkbox , array is required #when file , base64、rawName、bucketName is required input UnionUserInfo{ name:String! value:String array:[String] base64:String rawName:String bucketName:String } #userInfos return Data type UserInfosData{ #error code code:Int #error message message:String #array of user userInfos:[UserInfo] } type UserInfo{ key:String value:String } type RolesData{ #error code code:Int #error message message:String roles:[Role] } type PermissionsData{ #error code code:Int #error message message:String permissions:[Permission] }