# =============================================== # SYSTEM # =============================================== extend type Query { systemExtensions: [SystemExtension] systemFlags: [SystemFlag] systemInfo: SystemInfo systemInstances: [SystemInstance] systemSecurity: SystemSecurity systemJobs( states: [SystemJobState] ): [SystemJob] systemJobsScheduled: [SystemJobScheduled] systemJobsUpcoming: [SystemJobUpcoming] } extend type Mutation { cancelJob( id: UUID! ): DefaultResponse disconnectWS: DefaultResponse installExtension( key: String! ): DefaultResponse retryJob( id: UUID! ): DefaultResponse updateSystemFlags( flags: [SystemFlagInput]! ): DefaultResponse updateSystemSecurity( authJwtAudience: String authJwtExpiration: String authJwtRenewablePeriod: String corsConfig: String corsMode: SystemSecurityCorsMode cspDirectives: String disallowFloc: Boolean disallowIframe: Boolean disallowOpenRedirect: Boolean enforceCsp: Boolean enforceHsts: Boolean enforceSameOriginReferrerPolicy: Boolean forceAssetDownload: Boolean hstsDuration: Int trustProxy: Boolean uploadMaxFiles: Int uploadMaxFileSize: Int uploadScanSVG: Boolean ): DefaultResponse } # ----------------------------------------------- # TYPES # ----------------------------------------------- type SystemFlag { key: String value: Boolean } input SystemFlagInput { key: String! value: Boolean! } type SystemInfo { configFile: String cpuCores: Int currentVersion: String dbHost: String dbType: String dbVersion: String groupsTotal: Int hostname: String httpPort: Int httpRedirection: Boolean httpsPort: Int isMailConfigured: Boolean isSchedulerHealthy: Boolean latestVersion: String latestVersionReleaseDate: Date nodeVersion: String operatingSystem: String pagesTotal: Int platform: String ramTotal: String sslDomain: String sslExpirationDate: Date sslProvider: String sslStatus: String sslSubscriberEmail: String tagsTotal: Int upgradeCapable: Boolean usersTotal: Int workingDirectory: String } type SystemInstance { id: String activeConnections: Int activeListeners: Int dbUser: String dbFirstSeen: Date dbLastSeen: Date ip: String } enum SystemImportUsersGroupMode { MULTI SINGLE NONE } type SystemImportUsersResponse { operation: Operation usersCount: Int groupsCount: Int failed: [SystemImportUsersResponseFailed] } type SystemImportUsersResponseFailed { provider: String email: String error: String } type SystemExtension { key: String title: String description: String isInstalled: Boolean isInstallable: Boolean isCompatible: Boolean } type SystemSecurity { authJwtAudience: String authJwtExpiration: String authJwtRenewablePeriod: String corsConfig: String corsMode: SystemSecurityCorsMode cspDirectives: String disallowFloc: Boolean disallowIframe: Boolean disallowOpenRedirect: Boolean enforceCsp: Boolean enforceHsts: Boolean enforceSameOriginReferrerPolicy: Boolean forceAssetDownload: Boolean hstsDuration: Int trustProxy: Boolean uploadMaxFiles: Int uploadMaxFileSize: Int uploadScanSVG: Boolean } enum SystemSecurityCorsMode { OFF REFLECT HOSTNAMES REGEX } type SystemJob { id: UUID task: String state: SystemJobState useWorker: Boolean wasScheduled: Boolean payload: JSON attempt: Int maxRetries: Int lastErrorMessage: String executedBy: String createdAt: Date startedAt: Date completedAt: Date } type SystemJobScheduled { id: UUID task: String cron: String type: String payload: JSON createdAt: Date updatedAt: Date } type SystemJobUpcoming { id: UUID task: String useWorker: Boolean payload: JSON retries: Int maxRetries: Int waitUntil: Date isScheduled: Boolean createdBy: String createdAt: Date updatedAt: Date } enum SystemJobState { ACTIVE COMPLETED FAILED INTERRUPTED }