# =============================================== # PAGES # =============================================== extend type Query { pages: PageQuery } extend type Mutation { pages: PageMutation } # ----------------------------------------------- # QUERIES # ----------------------------------------------- type PageQuery { history( id: Int! offsetPage: Int offsetSize: Int ): PageHistoryResult @auth(requires: ["manage:system", "read:history"]) version( pageId: Int! versionId: Int! ): PageVersion @auth(requires: ["manage:system", "read:history"]) search( query: String! path: String locale: String ): PageSearchResponse! @auth(requires: ["manage:system", "read:pages"]) list( limit: Int orderBy: PageOrderBy orderByDirection: PageOrderByDirection tags: [String!] locale: String creatorId: Int authorId: Int ): [PageListItem!]! @auth(requires: ["manage:system", "read:pages"]) single( id: Int! ): Page @auth(requires: ["manage:pages", "delete:pages", "manage:system"]) tags: [PageTag]! @auth(requires: ["manage:system", "read:pages"]) searchTags( query: String! ): [String]! @auth(requires: ["manage:system", "read:pages"]) tree( path: String parent: Int mode: PageTreeMode! locale: String! includeParents: Boolean ): [PageTreeItem] @auth(requires: ["manage:system", "read:pages"]) links( locale: String! ): [PageLinkItem] @auth(requires: ["manage:system", "read:pages"]) checkConflicts( id: Int! checkoutDate: Date! ): Boolean! @auth(requires: ["write:pages", "manage:pages", "manage:system"]) conflictLatest( id: Int! ): PageConflictLatest! @auth(requires: ["write:pages", "manage:pages", "manage:system"]) } # ----------------------------------------------- # MUTATIONS # ----------------------------------------------- type PageMutation { create( content: String! description: String! editor: String! isPublished: Boolean! isPrivate: Boolean! locale: String! path: String! publishEndDate: Date publishStartDate: Date tags: [String]! title: String! ): PageResponse @auth(requires: ["write:pages", "manage:pages", "manage:system"]) update( id: Int! content: String description: String editor: String isPrivate: Boolean isPublished: Boolean locale: String path: String publishEndDate: Date publishStartDate: Date tags: [String] title: String ): PageResponse @auth(requires: ["write:pages", "manage:pages", "manage:system"]) move( id: Int! destinationPath: String! destinationLocale: String! ): DefaultResponse @auth(requires: ["manage:pages", "manage:system"]) delete( id: Int! ): DefaultResponse @auth(requires: ["delete:pages", "manage:system"]) deleteTag( id: Int! ): DefaultResponse @auth(requires: ["manage:system"]) updateTag( id: Int! tag: String! title: String! ): DefaultResponse @auth(requires: ["manage:system"]) flushCache: DefaultResponse @auth(requires: ["manage:system"]) migrateToLocale( sourceLocale: String! targetLocale: String! ): PageMigrationResponse @auth(requires: ["manage:system"]) rebuildTree: DefaultResponse @auth(requires: ["manage:system"]) render( id: Int! ): DefaultResponse @auth(requires: ["manage:system"]) restore( pageId: Int! versionId: Int! ): DefaultResponse @auth(requires: ["write:pages", "manage:pages", "manage:system"]) } # ----------------------------------------------- # TYPES # ----------------------------------------------- type PageResponse { responseResult: ResponseStatus! page: Page } type PageMigrationResponse { responseResult: ResponseStatus! count: Int } type Page { id: Int! path: String! hash: String! title: String! description: String! isPrivate: Boolean! isPublished: Boolean! privateNS: String publishStartDate: Date! publishEndDate: Date! tags: [PageTag]! content: String! render: String toc: String contentType: String! createdAt: Date! updatedAt: Date! editor: String! locale: String! authorId: Int! authorName: String! authorEmail: String! creatorId: Int! creatorName: String! creatorEmail: String! } type PageTag { id: Int! tag: String! title: String createdAt: Date! updatedAt: Date! } type PageHistory { versionId: Int! versionDate: Date! authorId: Int! authorName: String! actionType: String! valueBefore: String valueAfter: String } type PageVersion { action: String! authorId: String! authorName: String! content: String! contentType: String! createdAt: Date! versionDate: Date! description: String! editor: String! isPrivate: Boolean! isPublished: Boolean! locale: String! pageId: Int! path: String! publishEndDate: Date! publishStartDate: Date! tags: [String]! title: String! versionId: Int! } type PageHistoryResult { trail: [PageHistory] total: Int! } type PageSearchResponse { results: [PageSearchResult]! suggestions: [String]! totalHits: Int! } type PageSearchResult { id: String! title: String! description: String! path: String! locale: String! } type PageListItem { id: Int! path: String! locale: String! title: String description: String contentType: String! isPublished: Boolean! isPrivate: Boolean! privateNS: String createdAt: Date! updatedAt: Date! tags: [String] } type PageTreeItem { id: Int! path: String! depth: Int! title: String! isPrivate: Boolean! isFolder: Boolean! privateNS: String parent: Int pageId: Int locale: String! } type PageLinkItem { id: Int! path: String! title: String! links: [String]! } type PageConflictLatest { id: Int! authorId: String! authorName: String! content: String! createdAt: Date! description: String! isPublished: Boolean! locale: String! path: String! tags: [String] title: String! updatedAt: Date! } enum PageOrderBy { CREATED ID PATH TITLE UPDATED } enum PageOrderByDirection { ASC DESC } enum PageTreeMode { FOLDERS PAGES ALL }