# ===============================================
# SITE
# ===============================================

extend type Query {
  site: SiteQuery
}

extend type Mutation {
  site: SiteMutation
}

# -----------------------------------------------
# QUERIES
# -----------------------------------------------

type SiteQuery {
  config: SiteConfig @auth(requires: ["manage:system"])
}

# -----------------------------------------------
# MUTATIONS
# -----------------------------------------------

type SiteMutation {
  updateConfig(
    host: String
    title: String
    description: String
    robots: [String]
    analyticsService: String
    analyticsId: String
    company: String
    contentLicense: String
    logoUrl: String
    authAutoLogin: Boolean
    authEnforce2FA: Boolean
    authHideLocal: Boolean
    authLoginBgUrl: String
    authJwtAudience: String
    authJwtExpiration: String
    authJwtRenewablePeriod: String
    featurePageRatings: Boolean
    featurePageComments: Boolean
    featurePersonalWikis: Boolean
    securityOpenRedirect: Boolean
    securityIframe: Boolean
    securityReferrerPolicy: Boolean
    securityTrustProxy: Boolean
    securitySRI: Boolean
    securityHSTS: Boolean
    securityHSTSDuration: Int
    securityCSP: Boolean
    securityCSPDirectives: String
    uploadMaxFileSize: Int
    uploadMaxFiles: Int

  ): DefaultResponse @auth(requires: ["manage:system"])
}

# -----------------------------------------------
# TYPES
# -----------------------------------------------

type SiteConfig {
  host: String!
  title: String!
  description: String!
  robots: [String]!
  analyticsService: String!
  analyticsId: String!
  company: String!
  contentLicense: String!
  logoUrl: String!
  authAutoLogin: Boolean
  authEnforce2FA: Boolean
  authHideLocal: Boolean
  authLoginBgUrl: String
  authJwtAudience: String
  authJwtExpiration: String
  authJwtRenewablePeriod: String
  featurePageRatings: Boolean!
  featurePageComments: Boolean!
  featurePersonalWikis: Boolean!
  securityOpenRedirect: Boolean!
  securityIframe: Boolean!
  securityReferrerPolicy: Boolean!
  securityTrustProxy: Boolean!
  securitySRI: Boolean!
  securityHSTS: Boolean!
  securityHSTSDuration: Int!
  securityCSP: Boolean!
  securityCSPDirectives: String!
  uploadMaxFileSize: Int!
  uploadMaxFiles: Int!
}
