site.graphql 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173
  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. }
  14. extend type Mutation {
  15. createSite (
  16. hostname: String!
  17. title: String!
  18. ): SiteCreateResponse @auth(requires: ["manage:system"])
  19. updateSite (
  20. id: UUID!
  21. patch: SiteUpdateInput!
  22. ): DefaultResponse @auth(requires: ["manage:system"])
  23. uploadSiteLogo (
  24. id: UUID!
  25. image: Upload!
  26. ): DefaultResponse @auth(requires: ["manage:system"])
  27. uploadSiteFavicon (
  28. id: UUID!
  29. image: Upload!
  30. ): DefaultResponse @auth(requires: ["manage:system"])
  31. deleteSite (
  32. id: UUID!
  33. ): DefaultResponse @auth(requires: ["manage:system"])
  34. }
  35. # -----------------------------------------------
  36. # TYPES
  37. # -----------------------------------------------
  38. type Site {
  39. id: UUID
  40. hostname: String
  41. isEnabled: Boolean
  42. title: String
  43. description: String
  44. company: String
  45. contentLicense: String
  46. logoText: Boolean
  47. robots: SiteRobots
  48. features: SiteFeatures
  49. defaults: SiteDefaults
  50. locale: String
  51. localeNamespaces: [String]
  52. localeNamespacing: Boolean
  53. theme: SiteTheme
  54. }
  55. type SiteRobots {
  56. index: Boolean
  57. follow: Boolean
  58. }
  59. type SiteFeatures {
  60. ratings: Boolean
  61. ratingsMode: SitePageRatingModes
  62. comments: Boolean
  63. contributions: Boolean
  64. profile: Boolean
  65. search: Boolean
  66. }
  67. type SiteDefaults {
  68. timezone: String
  69. dateFormat: String
  70. timeFormat: String
  71. }
  72. type SiteLocale {
  73. locale: String
  74. autoUpdate: Boolean
  75. namespacing: Boolean
  76. namespaces: [String]
  77. }
  78. type SiteTheme {
  79. dark: Boolean
  80. colorPrimary: String
  81. colorSecondary: String
  82. colorAccent: String
  83. colorHeader: String
  84. colorSidebar: String
  85. injectCSS: String
  86. injectHead: String
  87. injectBody: String
  88. sidebarPosition: SiteThemePosition
  89. tocPosition: SiteThemePosition
  90. showSharingMenu: Boolean
  91. showPrintBtn: Boolean
  92. }
  93. enum SiteThemePosition {
  94. left
  95. right
  96. }
  97. enum SitePageRatingModes {
  98. off
  99. thumbs
  100. stars
  101. }
  102. type SiteCreateResponse {
  103. operation: Operation
  104. site: Site
  105. }
  106. input SiteUpdateInput {
  107. hostname: String
  108. isEnabled: Boolean
  109. title: String
  110. description: String
  111. company: String
  112. contentLicense: String
  113. logoText: Boolean
  114. robots: SiteRobotsInput
  115. features: SiteFeaturesInput
  116. defaults: SiteDefaultsInput
  117. theme: SiteThemeInput
  118. }
  119. input SiteRobotsInput {
  120. index: Boolean
  121. follow: Boolean
  122. }
  123. input SiteFeaturesInput {
  124. ratings: Boolean
  125. ratingsMode: SitePageRatingModes
  126. comments: Boolean
  127. contributions: Boolean
  128. profile: Boolean
  129. search: Boolean
  130. }
  131. input SiteDefaultsInput {
  132. timezone: String
  133. dateFormat: String
  134. timeFormat: String
  135. }
  136. input SiteThemeInput {
  137. dark: Boolean
  138. colorPrimary: String
  139. colorSecondary: String
  140. colorAccent: String
  141. colorHeader: String
  142. colorSidebar: String
  143. injectCSS: String
  144. injectHead: String
  145. injectBody: String
  146. sidebarPosition: SiteThemePosition
  147. tocPosition: SiteThemePosition
  148. showSharingMenu: Boolean
  149. showPrintBtn: Boolean
  150. }