user.graphql 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149
  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. }
  26. # -----------------------------------------------
  27. # MUTATIONS
  28. # -----------------------------------------------
  29. type UserMutation {
  30. create(
  31. email: String!
  32. name: String!
  33. passwordRaw: String
  34. providerKey: String!
  35. groups: [Int]!
  36. mustChangePassword: Boolean
  37. sendWelcomeEmail: Boolean
  38. ): UserResponse @auth(requires: ["write:users", "manage:users", "manage:system"])
  39. update(
  40. id: Int!
  41. email: String
  42. name: String
  43. newPassword: String
  44. groups: [Int]
  45. location: String
  46. jobTitle: String
  47. timezone: String
  48. ): DefaultResponse @auth(requires: ["manage:users", "manage:system"])
  49. delete(
  50. id: Int!
  51. ): DefaultResponse @auth(requires: ["manage:users", "manage:system"])
  52. verify(
  53. id: Int!
  54. ): DefaultResponse @auth(requires: ["manage:users", "manage:system"])
  55. activate(
  56. id: Int!
  57. ): DefaultResponse @auth(requires: ["manage:users", "manage:system"])
  58. deactivate(
  59. id: Int!
  60. ): DefaultResponse @auth(requires: ["manage:users", "manage:system"])
  61. resetPassword(
  62. id: Int!
  63. ): DefaultResponse
  64. updateProfile(
  65. name: String!
  66. location: String!
  67. jobTitle: String!
  68. timezone: String!
  69. ): UserTokenResponse
  70. changePassword(
  71. current: String!
  72. new: String!
  73. ): UserTokenResponse
  74. }
  75. # -----------------------------------------------
  76. # TYPES
  77. # -----------------------------------------------
  78. type UserResponse {
  79. responseResult: ResponseStatus!
  80. user: User
  81. }
  82. type UserMinimal {
  83. id: Int!
  84. name: String!
  85. email: String!
  86. providerKey: String!
  87. isSystem: Boolean!
  88. createdAt: Date!
  89. }
  90. type User {
  91. id: Int!
  92. name: String!
  93. email: String!
  94. providerKey: String!
  95. providerId: String
  96. isSystem: Boolean!
  97. isActive: Boolean!
  98. isVerified: Boolean!
  99. location: String!
  100. jobTitle: String!
  101. timezone: String!
  102. createdAt: Date!
  103. updatedAt: Date!
  104. groups: [Group]!
  105. }
  106. type UserProfile {
  107. id: Int!
  108. name: String!
  109. email: String!
  110. providerKey: String
  111. providerName: String
  112. isSystem: Boolean!
  113. isVerified: Boolean!
  114. location: String!
  115. jobTitle: String!
  116. timezone: String!
  117. createdAt: Date!
  118. updatedAt: Date!
  119. lastLoginAt: Date
  120. groups: [String]!
  121. pagesTotal: Int!
  122. }
  123. type UserTokenResponse {
  124. responseResult: ResponseStatus!
  125. jwt: String
  126. }