site.graphql 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266
  1. # ===============================================
  2. # SITES
  3. # ===============================================
  4. extend type Query {
  5. sites: [Site] @auth(requires: ["manage:system"])
  6. siteById (
  7. id: UUID!
  8. ): Site @auth(requires: ["manage:system"])
  9. siteByHostname (
  10. hostname: String!
  11. exact: Boolean!
  12. ): Site @auth(requires: ["manage:system"])
  13. # Legacy
  14. site: SiteQuery
  15. }
  16. extend type Mutation {
  17. createSite (
  18. hostname: String!
  19. title: String!
  20. ): SiteCreateResponse @auth(requires: ["manage:system"])
  21. updateSite (
  22. id: UUID!
  23. patch: SiteUpdateInput!
  24. ): DefaultResponse @auth(requires: ["manage:system"])
  25. uploadSiteLogo (
  26. id: UUID!
  27. image: Upload!
  28. ): DefaultResponse @auth(requires: ["manage:system"])
  29. uploadSiteFavicon (
  30. id: UUID!
  31. image: Upload!
  32. ): DefaultResponse @auth(requires: ["manage:system"])
  33. deleteSite (
  34. id: UUID!
  35. ): DefaultResponse @auth(requires: ["manage:system"])
  36. # Legacy
  37. site: SiteMutation
  38. }
  39. # -----------------------------------------------
  40. # QUERIES
  41. # -----------------------------------------------
  42. type SiteQuery {
  43. config: SiteConfig @auth(requires: ["manage:system"])
  44. }
  45. # -----------------------------------------------
  46. # MUTATIONS
  47. # -----------------------------------------------
  48. type SiteMutation {
  49. updateConfig(
  50. host: String
  51. title: String
  52. description: String
  53. robots: [String]
  54. analyticsService: String
  55. analyticsId: String
  56. company: String
  57. contentLicense: String
  58. logoUrl: String
  59. authAutoLogin: Boolean
  60. authEnforce2FA: Boolean
  61. authHideLocal: Boolean
  62. authLoginBgUrl: String
  63. authJwtAudience: String
  64. authJwtExpiration: String
  65. authJwtRenewablePeriod: String
  66. featurePageRatings: Boolean
  67. featurePageComments: Boolean
  68. featurePersonalWikis: Boolean
  69. securityOpenRedirect: Boolean
  70. securityIframe: Boolean
  71. securityReferrerPolicy: Boolean
  72. securityTrustProxy: Boolean
  73. securitySRI: Boolean
  74. securityHSTS: Boolean
  75. securityHSTSDuration: Int
  76. securityCSP: Boolean
  77. securityCSPDirectives: String
  78. uploadMaxFileSize: Int
  79. uploadMaxFiles: Int
  80. uploadScanSVG: Boolean
  81. uploadForceDownload: Boolean
  82. ): DefaultResponse @auth(requires: ["manage:system"])
  83. }
  84. # -----------------------------------------------
  85. # TYPES
  86. # -----------------------------------------------
  87. type Site {
  88. id: UUID
  89. hostname: String
  90. isEnabled: Boolean
  91. title: String
  92. description: String
  93. company: String
  94. contentLicense: String
  95. logoText: Boolean
  96. robots: SiteRobots
  97. features: SiteFeatures
  98. defaults: SiteDefaults
  99. locale: String
  100. localeNamespaces: [String]
  101. localeNamespacing: Boolean
  102. theme: SiteTheme
  103. }
  104. type SiteRobots {
  105. index: Boolean
  106. follow: Boolean
  107. }
  108. type SiteFeatures {
  109. ratings: Boolean
  110. ratingsMode: SitePageRatingModes
  111. comments: Boolean
  112. contributions: Boolean
  113. profile: Boolean
  114. search: Boolean
  115. }
  116. type SiteDefaults {
  117. timezone: String
  118. dateFormat: String
  119. timeFormat: String
  120. }
  121. type SiteLocale {
  122. locale: String
  123. autoUpdate: Boolean
  124. namespacing: Boolean
  125. namespaces: [String]
  126. }
  127. type SiteTheme {
  128. dark: Boolean
  129. colorPrimary: String
  130. colorSecondary: String
  131. colorAccent: String
  132. colorHeader: String
  133. colorSidebar: String
  134. injectCSS: String
  135. injectHead: String
  136. injectBody: String
  137. sidebarPosition: SiteThemePosition
  138. tocPosition: SiteThemePosition
  139. showSharingMenu: Boolean
  140. showPrintBtn: Boolean
  141. }
  142. enum SiteThemePosition {
  143. left
  144. right
  145. }
  146. enum SitePageRatingModes {
  147. off
  148. thumbs
  149. stars
  150. }
  151. type SiteCreateResponse {
  152. status: ResponseStatus
  153. site: Site
  154. }
  155. input SiteUpdateInput {
  156. hostname: String
  157. isEnabled: Boolean
  158. title: String
  159. description: String
  160. company: String
  161. contentLicense: String
  162. logoText: Boolean
  163. robots: SiteRobotsInput
  164. features: SiteFeaturesInput
  165. defaults: SiteDefaultsInput
  166. theme: SiteThemeInput
  167. }
  168. input SiteRobotsInput {
  169. index: Boolean
  170. follow: Boolean
  171. }
  172. input SiteFeaturesInput {
  173. ratings: Boolean
  174. ratingsMode: SitePageRatingModes
  175. comments: Boolean
  176. contributions: Boolean
  177. profile: Boolean
  178. search: Boolean
  179. }
  180. input SiteDefaultsInput {
  181. timezone: String
  182. dateFormat: String
  183. timeFormat: String
  184. }
  185. input SiteThemeInput {
  186. dark: Boolean
  187. colorPrimary: String
  188. colorSecondary: String
  189. colorAccent: String
  190. colorHeader: String
  191. colorSidebar: String
  192. injectCSS: String
  193. injectHead: String
  194. injectBody: String
  195. sidebarPosition: SiteThemePosition
  196. tocPosition: SiteThemePosition
  197. showSharingMenu: Boolean
  198. showPrintBtn: Boolean
  199. }
  200. # LEGACY
  201. type SiteConfig {
  202. host: String
  203. title: String
  204. description: String
  205. robots: [String]
  206. analyticsService: String
  207. analyticsId: String
  208. company: String
  209. contentLicense: String
  210. logoUrl: String
  211. authAutoLogin: Boolean
  212. authEnforce2FA: Boolean
  213. authHideLocal: Boolean
  214. authLoginBgUrl: String
  215. authJwtAudience: String
  216. authJwtExpiration: String
  217. authJwtRenewablePeriod: String
  218. featurePageRatings: Boolean
  219. featurePageComments: Boolean
  220. featurePersonalWikis: Boolean
  221. securityOpenRedirect: Boolean
  222. securityIframe: Boolean
  223. securityReferrerPolicy: Boolean
  224. securityTrustProxy: Boolean
  225. securitySRI: Boolean
  226. securityHSTS: Boolean
  227. securityHSTSDuration: Int
  228. securityCSP: Boolean
  229. securityCSPDirectives: String
  230. uploadMaxFileSize: Int
  231. uploadMaxFiles: Int
  232. uploadScanSVG: Boolean
  233. uploadForceDownload: Boolean
  234. }