79 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			GraphQL
		
	
	
	
	
	
			
		
		
	
	
			79 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			GraphQL
		
	
	
	
	
	
# ===============================================
 | 
						|
# STORAGE
 | 
						|
# ===============================================
 | 
						|
 | 
						|
extend type Query {
 | 
						|
  storage: StorageQuery
 | 
						|
}
 | 
						|
 | 
						|
extend type Mutation {
 | 
						|
  storage: StorageMutation
 | 
						|
}
 | 
						|
 | 
						|
# -----------------------------------------------
 | 
						|
# QUERIES
 | 
						|
# -----------------------------------------------
 | 
						|
 | 
						|
type StorageQuery {
 | 
						|
  targets: [StorageTarget] @auth(requires: ["manage:system"])
 | 
						|
  status: [StorageStatus] @auth(requires: ["manage:system"])
 | 
						|
}
 | 
						|
 | 
						|
# -----------------------------------------------
 | 
						|
# MUTATIONS
 | 
						|
# -----------------------------------------------
 | 
						|
 | 
						|
type StorageMutation {
 | 
						|
  updateTargets(
 | 
						|
    targets: [StorageTargetInput]!
 | 
						|
  ): DefaultResponse @auth(requires: ["manage:system"])
 | 
						|
 | 
						|
  executeAction(
 | 
						|
    targetKey: String!
 | 
						|
    handler: String!
 | 
						|
  ): DefaultResponse @auth(requires: ["manage:system"])
 | 
						|
}
 | 
						|
 | 
						|
# -----------------------------------------------
 | 
						|
# TYPES
 | 
						|
# -----------------------------------------------
 | 
						|
 | 
						|
type StorageTarget {
 | 
						|
  isAvailable: Boolean!
 | 
						|
  isEnabled: Boolean!
 | 
						|
  key: String!
 | 
						|
  title: String!
 | 
						|
  description: String
 | 
						|
  logo: String
 | 
						|
  website: String
 | 
						|
  supportedModes: [String]
 | 
						|
  mode: String
 | 
						|
  hasSchedule: Boolean!
 | 
						|
  syncInterval: String
 | 
						|
  syncIntervalDefault: String
 | 
						|
  config: [KeyValuePair]
 | 
						|
  actions: [StorageTargetAction]
 | 
						|
}
 | 
						|
 | 
						|
input StorageTargetInput {
 | 
						|
  isEnabled: Boolean!
 | 
						|
  key: String!
 | 
						|
  mode: String!
 | 
						|
  syncInterval: String
 | 
						|
  config: [KeyValuePairInput]
 | 
						|
}
 | 
						|
 | 
						|
type StorageStatus {
 | 
						|
  key: String!
 | 
						|
  title: String!
 | 
						|
  status: String!
 | 
						|
  message: String!
 | 
						|
  lastAttempt: String!
 | 
						|
}
 | 
						|
 | 
						|
type StorageTargetAction {
 | 
						|
  handler: String!
 | 
						|
  label: String!
 | 
						|
  hint: String!
 | 
						|
}
 |