page.graphql 7.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333
  1. # ===============================================
  2. # PAGES
  3. # ===============================================
  4. extend type Query {
  5. pages: PageQuery
  6. }
  7. extend type Mutation {
  8. pages: PageMutation
  9. }
  10. # -----------------------------------------------
  11. # QUERIES
  12. # -----------------------------------------------
  13. type PageQuery {
  14. history(
  15. id: Int!
  16. offsetPage: Int
  17. offsetSize: Int
  18. ): PageHistoryResult @auth(requires: ["manage:system", "read:history"])
  19. version(
  20. pageId: Int!
  21. versionId: Int!
  22. ): PageVersion @auth(requires: ["manage:system", "read:history"])
  23. search(
  24. query: String!
  25. path: String
  26. locale: String
  27. ): PageSearchResponse! @auth(requires: ["manage:system", "read:pages"])
  28. list(
  29. limit: Int
  30. orderBy: PageOrderBy
  31. orderByDirection: PageOrderByDirection
  32. tags: [String!]
  33. locale: String
  34. creatorId: Int
  35. authorId: Int
  36. ): [PageListItem!]! @auth(requires: ["manage:system", "read:pages"])
  37. single(
  38. id: Int!
  39. ): Page @auth(requires: ["read:pages", "manage:system"])
  40. tags: [PageTag]! @auth(requires: ["manage:system", "read:pages"])
  41. searchTags(
  42. query: String!
  43. ): [String]! @auth(requires: ["manage:system", "read:pages"])
  44. tree(
  45. path: String
  46. parent: Int
  47. mode: PageTreeMode!
  48. locale: String!
  49. includeAncestors: Boolean
  50. ): [PageTreeItem] @auth(requires: ["manage:system", "read:pages"])
  51. links(
  52. locale: String!
  53. ): [PageLinkItem] @auth(requires: ["manage:system", "read:pages"])
  54. checkConflicts(
  55. id: Int!
  56. checkoutDate: Date!
  57. ): Boolean! @auth(requires: ["write:pages", "manage:pages", "manage:system"])
  58. conflictLatest(
  59. id: Int!
  60. ): PageConflictLatest! @auth(requires: ["write:pages", "manage:pages", "manage:system"])
  61. }
  62. # -----------------------------------------------
  63. # MUTATIONS
  64. # -----------------------------------------------
  65. type PageMutation {
  66. create(
  67. content: String!
  68. description: String!
  69. editor: String!
  70. isPublished: Boolean!
  71. isPrivate: Boolean!
  72. locale: String!
  73. path: String!
  74. publishEndDate: Date
  75. publishStartDate: Date
  76. scriptCss: String
  77. scriptJs: String
  78. tags: [String]!
  79. title: String!
  80. ): PageResponse @auth(requires: ["write:pages", "manage:pages", "manage:system"])
  81. update(
  82. id: Int!
  83. content: String
  84. description: String
  85. editor: String
  86. isPrivate: Boolean
  87. isPublished: Boolean
  88. locale: String
  89. path: String
  90. publishEndDate: Date
  91. publishStartDate: Date
  92. scriptCss: String
  93. scriptJs: String
  94. tags: [String]
  95. title: String
  96. ): PageResponse @auth(requires: ["write:pages", "manage:pages", "manage:system"])
  97. convert(
  98. id: Int!
  99. editor: String!
  100. ): DefaultResponse @auth(requires: ["write:pages", "manage:pages", "manage:system"])
  101. move(
  102. id: Int!
  103. destinationPath: String!
  104. destinationLocale: String!
  105. ): DefaultResponse @auth(requires: ["manage:pages", "manage:system"])
  106. delete(
  107. id: Int!
  108. ): DefaultResponse @auth(requires: ["delete:pages", "manage:system"])
  109. deleteTag(
  110. id: Int!
  111. ): DefaultResponse @auth(requires: ["manage:system"])
  112. updateTag(
  113. id: Int!
  114. tag: String!
  115. title: String!
  116. ): DefaultResponse @auth(requires: ["manage:system"])
  117. flushCache: DefaultResponse @auth(requires: ["manage:system"])
  118. migrateToLocale(
  119. sourceLocale: String!
  120. targetLocale: String!
  121. ): PageMigrationResponse @auth(requires: ["manage:system"])
  122. rebuildTree: DefaultResponse @auth(requires: ["manage:system"])
  123. render(
  124. id: Int!
  125. ): DefaultResponse @auth(requires: ["manage:system"])
  126. restore(
  127. pageId: Int!
  128. versionId: Int!
  129. ): DefaultResponse @auth(requires: ["write:pages", "manage:pages", "manage:system"])
  130. purgeHistory (
  131. olderThan: String!
  132. ): DefaultResponse @auth(requires: ["manage:system"])
  133. }
  134. # -----------------------------------------------
  135. # TYPES
  136. # -----------------------------------------------
  137. type PageResponse {
  138. responseResult: ResponseStatus!
  139. page: Page
  140. }
  141. type PageMigrationResponse {
  142. responseResult: ResponseStatus!
  143. count: Int
  144. }
  145. type Page {
  146. id: Int!
  147. path: String!
  148. hash: String!
  149. title: String!
  150. description: String!
  151. isPrivate: Boolean! @auth(requires: ["write:pages", "manage:system"])
  152. isPublished: Boolean! @auth(requires: ["write:pages", "manage:system"])
  153. privateNS: String @auth(requires: ["write:pages", "manage:system"])
  154. publishStartDate: Date! @auth(requires: ["write:pages", "manage:system"])
  155. publishEndDate: Date! @auth(requires: ["write:pages", "manage:system"])
  156. tags: [PageTag]!
  157. content: String! @auth(requires: ["read:source", "write:pages", "manage:system"])
  158. render: String
  159. toc: String
  160. contentType: String!
  161. createdAt: Date!
  162. updatedAt: Date!
  163. editor: String! @auth(requires: ["write:pages", "manage:system"])
  164. locale: String!
  165. scriptCss: String
  166. scriptJs: String
  167. authorId: Int! @auth(requires: ["write:pages", "manage:system"])
  168. authorName: String! @auth(requires: ["write:pages", "manage:system"])
  169. authorEmail: String! @auth(requires: ["write:pages", "manage:system"])
  170. creatorId: Int! @auth(requires: ["write:pages", "manage:system"])
  171. creatorName: String! @auth(requires: ["write:pages", "manage:system"])
  172. creatorEmail: String! @auth(requires: ["write:pages", "manage:system"])
  173. }
  174. type PageTag {
  175. id: Int!
  176. tag: String!
  177. title: String
  178. createdAt: Date!
  179. updatedAt: Date!
  180. }
  181. type PageHistory {
  182. versionId: Int!
  183. versionDate: Date!
  184. authorId: Int!
  185. authorName: String!
  186. actionType: String!
  187. valueBefore: String
  188. valueAfter: String
  189. }
  190. type PageVersion {
  191. action: String!
  192. authorId: String!
  193. authorName: String!
  194. content: String!
  195. contentType: String!
  196. createdAt: Date!
  197. versionDate: Date!
  198. description: String!
  199. editor: String!
  200. isPrivate: Boolean!
  201. isPublished: Boolean!
  202. locale: String!
  203. pageId: Int!
  204. path: String!
  205. publishEndDate: Date!
  206. publishStartDate: Date!
  207. tags: [String]!
  208. title: String!
  209. versionId: Int!
  210. }
  211. type PageHistoryResult {
  212. trail: [PageHistory]
  213. total: Int!
  214. }
  215. type PageSearchResponse {
  216. results: [PageSearchResult]!
  217. suggestions: [String]!
  218. totalHits: Int!
  219. }
  220. type PageSearchResult {
  221. id: String!
  222. title: String!
  223. description: String!
  224. path: String!
  225. locale: String!
  226. }
  227. type PageListItem {
  228. id: Int!
  229. path: String!
  230. locale: String!
  231. title: String
  232. description: String
  233. contentType: String!
  234. isPublished: Boolean!
  235. isPrivate: Boolean!
  236. privateNS: String
  237. createdAt: Date!
  238. updatedAt: Date!
  239. tags: [String]
  240. }
  241. type PageTreeItem {
  242. id: Int!
  243. path: String!
  244. depth: Int!
  245. title: String!
  246. isPrivate: Boolean!
  247. isFolder: Boolean!
  248. privateNS: String
  249. parent: Int
  250. pageId: Int
  251. locale: String!
  252. }
  253. type PageLinkItem {
  254. id: Int!
  255. path: String!
  256. title: String!
  257. links: [String]!
  258. }
  259. type PageConflictLatest {
  260. id: Int!
  261. authorId: String!
  262. authorName: String!
  263. content: String!
  264. createdAt: Date!
  265. description: String!
  266. isPublished: Boolean!
  267. locale: String!
  268. path: String!
  269. tags: [String]
  270. title: String!
  271. updatedAt: Date!
  272. }
  273. enum PageOrderBy {
  274. CREATED
  275. ID
  276. PATH
  277. TITLE
  278. UPDATED
  279. }
  280. enum PageOrderByDirection {
  281. ASC
  282. DESC
  283. }
  284. enum PageTreeMode {
  285. FOLDERS
  286. PAGES
  287. ALL
  288. }