* fix: admin api UI update * feat: admin api - create dialog UI * feat: admin api - create + list keys * feat: admin api localization (wip) * feat: admin api localization * feat: admin api - toggle state * feat: process API keys + format gql request errors to json
		
			
				
	
	
		
			143 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			GraphQL
		
	
	
	
	
	
			
		
		
	
	
			143 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			GraphQL
		
	
	
	
	
	
# ===============================================
 | 
						|
# AUTHENTICATION
 | 
						|
# ===============================================
 | 
						|
 | 
						|
extend type Query {
 | 
						|
  authentication: AuthenticationQuery
 | 
						|
}
 | 
						|
 | 
						|
extend type Mutation {
 | 
						|
  authentication: AuthenticationMutation
 | 
						|
}
 | 
						|
 | 
						|
# -----------------------------------------------
 | 
						|
# QUERIES
 | 
						|
# -----------------------------------------------
 | 
						|
 | 
						|
type AuthenticationQuery {
 | 
						|
  apiKeys: [AuthenticationApiKey] @auth(requires: ["manage:system", "manage:api"])
 | 
						|
 | 
						|
  apiState: Boolean! @auth(requires: ["manage:system", "manage:api"])
 | 
						|
 | 
						|
  strategies(
 | 
						|
    isEnabled: Boolean
 | 
						|
  ): [AuthenticationStrategy]
 | 
						|
}
 | 
						|
 | 
						|
# -----------------------------------------------
 | 
						|
# MUTATIONS
 | 
						|
# -----------------------------------------------
 | 
						|
 | 
						|
type AuthenticationMutation {
 | 
						|
  createApiKey(
 | 
						|
    name: String!
 | 
						|
    expiration: String!
 | 
						|
    fullAccess: Boolean!
 | 
						|
    group: Int
 | 
						|
  ): AuthenticationCreateApiKeyResponse @auth(requires: ["manage:system", "manage:api"])
 | 
						|
 | 
						|
  login(
 | 
						|
    username: String!
 | 
						|
    password: String!
 | 
						|
    strategy: String!
 | 
						|
  ): AuthenticationLoginResponse @rateLimit(limit: 5, duration: 60)
 | 
						|
 | 
						|
  loginTFA(
 | 
						|
    continuationToken: String!
 | 
						|
    securityCode: String!
 | 
						|
  ): AuthenticationLoginResponse @rateLimit(limit: 5, duration: 60)
 | 
						|
 | 
						|
  loginChangePassword(
 | 
						|
    continuationToken: String!
 | 
						|
    newPassword: String!
 | 
						|
  ): AuthenticationLoginResponse @rateLimit(limit: 5, duration: 60)
 | 
						|
 | 
						|
  register(
 | 
						|
    email: String!
 | 
						|
    password: String!
 | 
						|
    name: String!
 | 
						|
  ): AuthenticationRegisterResponse
 | 
						|
 | 
						|
  revokeApiKey(
 | 
						|
    id: Int!
 | 
						|
  ): DefaultResponse @auth(requires: ["manage:system", "manage:api"])
 | 
						|
 | 
						|
  setApiState(
 | 
						|
    enabled: Boolean!
 | 
						|
  ): DefaultResponse @auth(requires: ["manage:system", "manage:api"])
 | 
						|
 | 
						|
  updateStrategies(
 | 
						|
    strategies: [AuthenticationStrategyInput]!
 | 
						|
    config: AuthenticationConfigInput
 | 
						|
  ): DefaultResponse @auth(requires: ["manage:system"])
 | 
						|
 | 
						|
  regenerateCertificates: DefaultResponse @auth(requires: ["manage:system"])
 | 
						|
 | 
						|
  resetGuestUser: DefaultResponse @auth(requires: ["manage:system"])
 | 
						|
}
 | 
						|
 | 
						|
# -----------------------------------------------
 | 
						|
# TYPES
 | 
						|
# -----------------------------------------------
 | 
						|
 | 
						|
type AuthenticationStrategy {
 | 
						|
  isEnabled: Boolean!
 | 
						|
  key: String!
 | 
						|
  props: [String]
 | 
						|
  title: String!
 | 
						|
  description: String
 | 
						|
  isAvailable: Boolean
 | 
						|
  useForm: Boolean!
 | 
						|
  logo: String
 | 
						|
  color: String
 | 
						|
  website: String
 | 
						|
  icon: String
 | 
						|
  config: [KeyValuePair] @auth(requires: ["manage:system"])
 | 
						|
  selfRegistration: Boolean!
 | 
						|
  domainWhitelist: [String]! @auth(requires: ["manage:system"])
 | 
						|
  autoEnrollGroups: [Int]! @auth(requires: ["manage:system"])
 | 
						|
}
 | 
						|
 | 
						|
type AuthenticationLoginResponse {
 | 
						|
  responseResult: ResponseStatus
 | 
						|
  jwt: String
 | 
						|
  mustChangePwd: Boolean
 | 
						|
  mustProvideTFA: Boolean
 | 
						|
  continuationToken: String
 | 
						|
}
 | 
						|
 | 
						|
type AuthenticationRegisterResponse {
 | 
						|
  responseResult: ResponseStatus
 | 
						|
  jwt: String
 | 
						|
}
 | 
						|
 | 
						|
input AuthenticationStrategyInput {
 | 
						|
  isEnabled: Boolean!
 | 
						|
  key: String!
 | 
						|
  config: [KeyValuePairInput]
 | 
						|
  selfRegistration: Boolean!
 | 
						|
  domainWhitelist: [String]!
 | 
						|
  autoEnrollGroups: [Int]!
 | 
						|
}
 | 
						|
 | 
						|
input AuthenticationConfigInput {
 | 
						|
  audience: String!
 | 
						|
  tokenExpiration: String!
 | 
						|
  tokenRenewal: String!
 | 
						|
}
 | 
						|
 | 
						|
type AuthenticationApiKey {
 | 
						|
  id: Int!
 | 
						|
  name: String!
 | 
						|
  keyShort: String!
 | 
						|
  expiration: Date!
 | 
						|
  createdAt: Date!
 | 
						|
  updatedAt: Date!
 | 
						|
  isRevoked: Boolean!
 | 
						|
}
 | 
						|
 | 
						|
type AuthenticationCreateApiKeyResponse {
 | 
						|
  responseResult: ResponseStatus
 | 
						|
  key: String
 | 
						|
}
 |