user.graphql 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166
  1. # ===============================================
  2. # USERS
  3. # ===============================================
  4. extend type Query {
  5. users: UserQuery
  6. }
  7. extend type Mutation {
  8. users: UserMutation
  9. }
  10. # -----------------------------------------------
  11. # QUERIES
  12. # -----------------------------------------------
  13. type UserQuery {
  14. list(
  15. filter: String
  16. orderBy: String
  17. ): [UserMinimal] @auth(requires: ["write:users", "manage:users", "manage:system"])
  18. search(
  19. query: String!
  20. ): [UserMinimal] @auth(requires: ["write:groups", "manage:groups", "write:users", "manage:users", "manage:system"])
  21. single(
  22. id: Int!
  23. ): User @auth(requires: ["manage:users", "manage:system"])
  24. profile: UserProfile
  25. lastLogins: [UserLastLogin] @auth(requires: ["write:groups", "manage:groups", "write:users", "manage:users", "manage:system"])
  26. }
  27. # -----------------------------------------------
  28. # MUTATIONS
  29. # -----------------------------------------------
  30. type UserMutation {
  31. create(
  32. email: String!
  33. name: String!
  34. passwordRaw: String
  35. providerKey: String!
  36. groups: [Int]!
  37. mustChangePassword: Boolean
  38. sendWelcomeEmail: Boolean
  39. ): UserResponse @auth(requires: ["write:users", "manage:users", "manage:system"])
  40. update(
  41. id: Int!
  42. email: String
  43. name: String
  44. newPassword: String
  45. groups: [Int]
  46. location: String
  47. jobTitle: String
  48. timezone: String
  49. dateFormat: String
  50. appearance: String
  51. ): DefaultResponse @auth(requires: ["manage:users", "manage:system"])
  52. delete(
  53. id: Int!
  54. ): DefaultResponse @auth(requires: ["manage:users", "manage:system"])
  55. verify(
  56. id: Int!
  57. ): DefaultResponse @auth(requires: ["manage:users", "manage:system"])
  58. activate(
  59. id: Int!
  60. ): DefaultResponse @auth(requires: ["manage:users", "manage:system"])
  61. deactivate(
  62. id: Int!
  63. ): DefaultResponse @auth(requires: ["manage:users", "manage:system"])
  64. resetPassword(
  65. id: Int!
  66. ): DefaultResponse
  67. updateProfile(
  68. name: String!
  69. location: String!
  70. jobTitle: String!
  71. timezone: String!
  72. dateFormat: String!
  73. appearance: String!
  74. ): UserTokenResponse
  75. changePassword(
  76. current: String!
  77. new: String!
  78. ): UserTokenResponse
  79. }
  80. # -----------------------------------------------
  81. # TYPES
  82. # -----------------------------------------------
  83. type UserResponse {
  84. responseResult: ResponseStatus!
  85. user: User
  86. }
  87. type UserLastLogin {
  88. id: Int!
  89. name: String!
  90. lastLoginAt: Date!
  91. }
  92. type UserMinimal {
  93. id: Int!
  94. name: String!
  95. email: String!
  96. providerKey: String!
  97. isSystem: Boolean!
  98. createdAt: Date!
  99. }
  100. type User {
  101. id: Int!
  102. name: String!
  103. email: String!
  104. providerKey: String!
  105. providerId: String
  106. isSystem: Boolean!
  107. isActive: Boolean!
  108. isVerified: Boolean!
  109. location: String!
  110. jobTitle: String!
  111. timezone: String!
  112. dateFormat: String!
  113. appearance: String!
  114. createdAt: Date!
  115. updatedAt: Date!
  116. lastLoginAt: Date
  117. groups: [Group]!
  118. }
  119. type UserProfile {
  120. id: Int!
  121. name: String!
  122. email: String!
  123. providerKey: String
  124. providerName: String
  125. isSystem: Boolean!
  126. isVerified: Boolean!
  127. location: String!
  128. jobTitle: String!
  129. timezone: String!
  130. dateFormat: String!
  131. appearance: String!
  132. createdAt: Date!
  133. updatedAt: Date!
  134. lastLoginAt: Date
  135. groups: [String]!
  136. pagesTotal: Int!
  137. }
  138. type UserTokenResponse {
  139. responseResult: ResponseStatus!
  140. jwt: String
  141. }