authentication.graphql 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147
  1. # ===============================================
  2. # AUTHENTICATION
  3. # ===============================================
  4. extend type Query {
  5. authentication: AuthenticationQuery
  6. }
  7. extend type Mutation {
  8. authentication: AuthenticationMutation
  9. }
  10. # -----------------------------------------------
  11. # QUERIES
  12. # -----------------------------------------------
  13. type AuthenticationQuery {
  14. apiKeys: [AuthenticationApiKey] @auth(requires: ["manage:system", "manage:api"])
  15. apiState: Boolean! @auth(requires: ["manage:system", "manage:api"])
  16. strategies: [AuthenticationStrategy] @auth(requires: ["manage:system"])
  17. activeStrategies: [AuthenticationActiveStrategy]
  18. }
  19. # -----------------------------------------------
  20. # MUTATIONS
  21. # -----------------------------------------------
  22. type AuthenticationMutation {
  23. createApiKey(
  24. name: String!
  25. expiration: String!
  26. fullAccess: Boolean!
  27. group: Int
  28. ): AuthenticationCreateApiKeyResponse @auth(requires: ["manage:system", "manage:api"])
  29. login(
  30. username: String!
  31. password: String!
  32. strategy: String!
  33. ): AuthenticationLoginResponse @rateLimit(limit: 5, duration: 60)
  34. loginTFA(
  35. continuationToken: String!
  36. securityCode: String!
  37. setup: Boolean
  38. ): AuthenticationLoginResponse @rateLimit(limit: 5, duration: 60)
  39. loginChangePassword(
  40. continuationToken: String!
  41. newPassword: String!
  42. ): AuthenticationLoginResponse @rateLimit(limit: 5, duration: 60)
  43. register(
  44. email: String!
  45. password: String!
  46. name: String!
  47. ): AuthenticationRegisterResponse
  48. revokeApiKey(
  49. id: Int!
  50. ): DefaultResponse @auth(requires: ["manage:system", "manage:api"])
  51. setApiState(
  52. enabled: Boolean!
  53. ): DefaultResponse @auth(requires: ["manage:system", "manage:api"])
  54. updateStrategies(
  55. strategies: [AuthenticationStrategyInput]!
  56. ): DefaultResponse @auth(requires: ["manage:system"])
  57. regenerateCertificates: DefaultResponse @auth(requires: ["manage:system"])
  58. resetGuestUser: DefaultResponse @auth(requires: ["manage:system"])
  59. }
  60. # -----------------------------------------------
  61. # TYPES
  62. # -----------------------------------------------
  63. type AuthenticationStrategy {
  64. key: String!
  65. props: [KeyValuePair] @auth(requires: ["manage:system"])
  66. title: String!
  67. description: String
  68. isAvailable: Boolean
  69. useForm: Boolean!
  70. usernameType: String
  71. logo: String
  72. color: String
  73. website: String
  74. icon: String
  75. }
  76. type AuthenticationActiveStrategy {
  77. key: String!
  78. strategy: AuthenticationStrategy!
  79. displayName: String!
  80. order: Int!
  81. config: [KeyValuePair] @auth(requires: ["manage:system"])
  82. selfRegistration: Boolean!
  83. domainWhitelist: [String]! @auth(requires: ["manage:system"])
  84. autoEnrollGroups: [Int]! @auth(requires: ["manage:system"])
  85. }
  86. type AuthenticationLoginResponse {
  87. responseResult: ResponseStatus
  88. jwt: String
  89. mustChangePwd: Boolean
  90. mustProvideTFA: Boolean
  91. mustSetupTFA: Boolean
  92. continuationToken: String
  93. redirect: String
  94. tfaQRImage: String
  95. }
  96. type AuthenticationRegisterResponse {
  97. responseResult: ResponseStatus
  98. jwt: String
  99. }
  100. input AuthenticationStrategyInput {
  101. key: String!
  102. strategyKey: String!
  103. config: [KeyValuePairInput]
  104. displayName: String!
  105. order: Int!
  106. selfRegistration: Boolean!
  107. domainWhitelist: [String]!
  108. autoEnrollGroups: [Int]!
  109. }
  110. type AuthenticationApiKey {
  111. id: Int!
  112. name: String!
  113. keyShort: String!
  114. expiration: Date!
  115. createdAt: Date!
  116. updatedAt: Date!
  117. isRevoked: Boolean!
  118. }
  119. type AuthenticationCreateApiKeyResponse {
  120. responseResult: ResponseStatus
  121. key: String
  122. }