wikijs-fork/server/graph/schemas/page.graphql
2020-02-09 00:49:32 -05:00

261 lines
4.8 KiB
GraphQL

# ===============================================
# 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:pages"])
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
): [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"])
}
# -----------------------------------------------
# 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"])
}
# -----------------------------------------------
# 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: String!
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!
authorId: Int!
authorName: String!
actionType: String!
valueBefore: String
valueAfter: String
createdAt: Date!
}
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]!
}
enum PageOrderBy {
CREATED
ID
PATH
TITLE
UPDATED
}
enum PageOrderByDirection {
ASC
DESC
}
enum PageTreeMode {
FOLDERS
PAGES
ALL
}