schema { query: Query mutation: Mutation } type BlockQuoteBlock implements StreamFieldInterface { id: String blockType: String! field: String! rawValue: String! value: String! } type BooleanBlock implements StreamFieldInterface { id: String blockType: String! field: String! rawValue: String! value: Boolean! } type CharBlock implements StreamFieldInterface { id: String blockType: String! field: String! rawValue: String! value: String! } type ChoiceBlock implements StreamFieldInterface { id: String blockType: String! field: String! rawValue: String! value: String! choices: [ChoiceOption!]! } type ChoiceOption { key: String! value: String! } type Circle implements PageInterface { id: ID path: String! depth: Int numchild: Int! translationKey: UUID! title: String! draftTitle: String! slug: String! contentType: String! live: Boolean! hasUnpublishedChanges: Boolean! urlPath: String! owner: User seoTitle: String! showInMenus: Boolean! searchDescription: String goLiveAt: DateTime expireAt: DateTime expired: Boolean! locked: Boolean lockedAt: DateTime lockedBy: User firstPublishedAt: DateTime lastPublishedAt: DateTime latestRevisionCreatedAt: DateTime aliasOf: Page pageType: String url: String parent: PageInterface children(limit: PositiveInt, offset: PositiveInt, order: String, searchQuery: String, id: ID): [PageInterface!]! siblings(limit: PositiveInt, offset: PositiveInt, order: String, searchQuery: String, id: ID): [PageInterface!]! nextSiblings(limit: PositiveInt, offset: PositiveInt, order: String, searchQuery: String, id: ID): [PageInterface!]! previousSiblings(limit: PositiveInt, offset: PositiveInt, order: String, searchQuery: String, id: ID): [PageInterface!]! descendants(limit: PositiveInt, offset: PositiveInt, order: String, searchQuery: String, id: ID): [PageInterface!]! ancestors(limit: PositiveInt, offset: PositiveInt, order: String, searchQuery: String, id: ID): [PageInterface!]! } type CollectionObjectType { id: ID! path: String! depth: Int! numchild: Int! name: String! descendants: [CollectionObjectType]! ancestors: [CollectionObjectType]! } type CompetencePage implements PageInterface { id: ID path: String! depth: Int numchild: Int! translationKey: UUID! title: String! draftTitle: String! slug: String! contentType: String! live: Boolean! hasUnpublishedChanges: Boolean! urlPath: String! owner: User seoTitle: String! showInMenus: Boolean! searchDescription: String goLiveAt: DateTime expireAt: DateTime expired: Boolean! locked: Boolean lockedAt: DateTime lockedBy: User firstPublishedAt: DateTime lastPublishedAt: DateTime latestRevisionCreatedAt: DateTime aliasOf: Page pageType: String url: String parent: PageInterface children(limit: PositiveInt, offset: PositiveInt, order: String, searchQuery: String, id: ID): [PageInterface!]! siblings(limit: PositiveInt, offset: PositiveInt, order: String, searchQuery: String, id: ID): [PageInterface!]! nextSiblings(limit: PositiveInt, offset: PositiveInt, order: String, searchQuery: String, id: ID): [PageInterface!]! previousSiblings(limit: PositiveInt, offset: PositiveInt, order: String, searchQuery: String, id: ID): [PageInterface!]! descendants(limit: PositiveInt, offset: PositiveInt, order: String, searchQuery: String, id: ID): [PageInterface!]! ancestors(limit: PositiveInt, offset: PositiveInt, order: String, searchQuery: String, id: ID): [PageInterface!]! } type CompetenceProfilePage implements PageInterface { id: ID path: String! depth: Int numchild: Int! translationKey: UUID! title: String! draftTitle: String! slug: String! contentType: String! live: Boolean! hasUnpublishedChanges: Boolean! urlPath: String! owner: User seoTitle: String! showInMenus: Boolean! searchDescription: String goLiveAt: DateTime expireAt: DateTime expired: Boolean! locked: Boolean lockedAt: DateTime lockedBy: User firstPublishedAt: DateTime lastPublishedAt: DateTime latestRevisionCreatedAt: DateTime aliasOf: Page pageType: String url: String parent: PageInterface children(limit: PositiveInt, offset: PositiveInt, order: String, searchQuery: String, id: ID): [PageInterface!]! siblings(limit: PositiveInt, offset: PositiveInt, order: String, searchQuery: String, id: ID): [PageInterface!]! nextSiblings(limit: PositiveInt, offset: PositiveInt, order: String, searchQuery: String, id: ID): [PageInterface!]! previousSiblings(limit: PositiveInt, offset: PositiveInt, order: String, searchQuery: String, id: ID): [PageInterface!]! descendants(limit: PositiveInt, offset: PositiveInt, order: String, searchQuery: String, id: ID): [PageInterface!]! ancestors(limit: PositiveInt, offset: PositiveInt, order: String, searchQuery: String, id: ID): [PageInterface!]! } type Course { id: ID } type CourseCategory { id: ID } type CourseCompletion { id: ID } type CoursePage implements PageInterface { id: ID path: String! depth: Int numchild: Int! translationKey: UUID! title: String! draftTitle: String! slug: String! contentType: String! live: Boolean! hasUnpublishedChanges: Boolean! urlPath: String! owner: User seoTitle: String! showInMenus: Boolean! searchDescription: String goLiveAt: DateTime expireAt: DateTime expired: Boolean! locked: Boolean lockedAt: DateTime lockedBy: User firstPublishedAt: DateTime lastPublishedAt: DateTime latestRevisionCreatedAt: DateTime aliasOf: Page pageType: String url: String parent: PageInterface children(limit: PositiveInt, offset: PositiveInt, order: String, searchQuery: String, id: ID): [PageInterface!]! siblings(limit: PositiveInt, offset: PositiveInt, order: String, searchQuery: String, id: ID): [PageInterface!]! nextSiblings(limit: PositiveInt, offset: PositiveInt, order: String, searchQuery: String, id: ID): [PageInterface!]! previousSiblings(limit: PositiveInt, offset: PositiveInt, order: String, searchQuery: String, id: ID): [PageInterface!]! descendants(limit: PositiveInt, offset: PositiveInt, order: String, searchQuery: String, id: ID): [PageInterface!]! ancestors(limit: PositiveInt, offset: PositiveInt, order: String, searchQuery: String, id: ID): [PageInterface!]! } type CourseSession { id: ID } type CourseSessionUser { id: ID } type DateBlock implements StreamFieldInterface { id: String blockType: String! field: String! rawValue: String! value(format: String): String! } scalar DateTime type DateTimeBlock implements StreamFieldInterface { id: String blockType: String! field: String! rawValue: String! value(format: String): String! } type DecimalBlock implements StreamFieldInterface { id: String blockType: String! field: String! rawValue: String! value: Float! } type DocumentChooserBlock implements StreamFieldInterface { id: String blockType: String! field: String! rawValue: String! document: LibraryDocument! } type EmailBlock implements StreamFieldInterface { id: String blockType: String! field: String! rawValue: String! value: String! } type EmbedBlock implements StreamFieldInterface { id: String blockType: String! field: String! rawValue: String! value: String! url: String! embed: String rawEmbed: JSONString } type ErrorType { field: String! messages: [String!]! } type FloatBlock implements StreamFieldInterface { id: String blockType: String! field: String! rawValue: String! value: Float! } type ImageChooserBlock implements StreamFieldInterface { id: String blockType: String! field: String! rawValue: String! image: ImageObjectType! } type ImageObjectType { id: ID! collection: CollectionObjectType! title: String! file: String! width: Int! height: Int! createdAt: DateTime! uploadedByUser: User focalPointX: Int focalPointY: Int focalPointWidth: Int focalPointHeight: Int fileSize: Int fileHash: String! renditions: [ImageRenditionObjectType!]! src: String! @deprecated(reason: "Use the `url` attribute") url: String! aspectRatio: Float! sizes: String! tags: [TagObjectType!]! rendition(max: String, min: String, width: Int, height: Int, fill: String, format: String, bgcolor: String, jpegquality: Int, webpquality: Int): ImageRenditionObjectType srcSet(sizes: [Int], format: String): String } type ImageRenditionObjectType { id: ID! filterSpec: String! file: String! width: Int! height: Int! focalPointKey: String! image: ImageObjectType! title: String! createdAt: DateTime! focalPointX: Int focalPointY: Int focalPointWidth: Int focalPointHeight: Int fileSize: Int fileHash: String! src: String! @deprecated(reason: "Use the `url` attribute") url: String! aspectRatio: Float! sizes: String! collection: CollectionObjectType! tags: [TagObjectType!]! } type IntegerBlock implements StreamFieldInterface { id: String blockType: String! field: String! rawValue: String! value: Int! } scalar JSONString type LearningContent implements PageInterface { id: ID path: String! depth: Int numchild: Int! translationKey: UUID! title: String! draftTitle: String! slug: String! contentType: String! live: Boolean! hasUnpublishedChanges: Boolean! urlPath: String! owner: User seoTitle: String! showInMenus: Boolean! searchDescription: String goLiveAt: DateTime expireAt: DateTime expired: Boolean! locked: Boolean lockedAt: DateTime lockedBy: User firstPublishedAt: DateTime lastPublishedAt: DateTime latestRevisionCreatedAt: DateTime aliasOf: Page pageType: String url: String parent: PageInterface children(limit: PositiveInt, offset: PositiveInt, order: String, searchQuery: String, id: ID): [PageInterface!]! siblings(limit: PositiveInt, offset: PositiveInt, order: String, searchQuery: String, id: ID): [PageInterface!]! nextSiblings(limit: PositiveInt, offset: PositiveInt, order: String, searchQuery: String, id: ID): [PageInterface!]! previousSiblings(limit: PositiveInt, offset: PositiveInt, order: String, searchQuery: String, id: ID): [PageInterface!]! descendants(limit: PositiveInt, offset: PositiveInt, order: String, searchQuery: String, id: ID): [PageInterface!]! ancestors(limit: PositiveInt, offset: PositiveInt, order: String, searchQuery: String, id: ID): [PageInterface!]! } type LearningPath implements PageInterface { id: ID path: String! depth: Int numchild: Int! translationKey: UUID! title: String! draftTitle: String! slug: String! contentType: String! live: Boolean! hasUnpublishedChanges: Boolean! urlPath: String! owner: User seoTitle: String! showInMenus: Boolean! searchDescription: String goLiveAt: DateTime expireAt: DateTime expired: Boolean! locked: Boolean lockedAt: DateTime lockedBy: User firstPublishedAt: DateTime lastPublishedAt: DateTime latestRevisionCreatedAt: DateTime aliasOf: Page pageType: String url: String parent: PageInterface children(limit: PositiveInt, offset: PositiveInt, order: String, searchQuery: String, id: ID): [PageInterface!]! siblings(limit: PositiveInt, offset: PositiveInt, order: String, searchQuery: String, id: ID): [PageInterface!]! nextSiblings(limit: PositiveInt, offset: PositiveInt, order: String, searchQuery: String, id: ID): [PageInterface!]! previousSiblings(limit: PositiveInt, offset: PositiveInt, order: String, searchQuery: String, id: ID): [PageInterface!]! descendants(limit: PositiveInt, offset: PositiveInt, order: String, searchQuery: String, id: ID): [PageInterface!]! ancestors(limit: PositiveInt, offset: PositiveInt, order: String, searchQuery: String, id: ID): [PageInterface!]! } type LearningSequence implements PageInterface { id: ID path: String! depth: Int numchild: Int! translationKey: UUID! title: String! draftTitle: String! slug: String! contentType: String! live: Boolean! hasUnpublishedChanges: Boolean! urlPath: String! owner: User seoTitle: String! showInMenus: Boolean! searchDescription: String goLiveAt: DateTime expireAt: DateTime expired: Boolean! locked: Boolean lockedAt: DateTime lockedBy: User firstPublishedAt: DateTime lastPublishedAt: DateTime latestRevisionCreatedAt: DateTime aliasOf: Page pageType: String url: String parent: PageInterface children(limit: PositiveInt, offset: PositiveInt, order: String, searchQuery: String, id: ID): [PageInterface!]! siblings(limit: PositiveInt, offset: PositiveInt, order: String, searchQuery: String, id: ID): [PageInterface!]! nextSiblings(limit: PositiveInt, offset: PositiveInt, order: String, searchQuery: String, id: ID): [PageInterface!]! previousSiblings(limit: PositiveInt, offset: PositiveInt, order: String, searchQuery: String, id: ID): [PageInterface!]! descendants(limit: PositiveInt, offset: PositiveInt, order: String, searchQuery: String, id: ID): [PageInterface!]! ancestors(limit: PositiveInt, offset: PositiveInt, order: String, searchQuery: String, id: ID): [PageInterface!]! } type LearningUnit implements PageInterface { id: ID path: String! depth: Int numchild: Int! translationKey: UUID! title: String! draftTitle: String! slug: String! contentType: String! live: Boolean! hasUnpublishedChanges: Boolean! urlPath: String! owner: User seoTitle: String! showInMenus: Boolean! searchDescription: String goLiveAt: DateTime expireAt: DateTime expired: Boolean! locked: Boolean lockedAt: DateTime lockedBy: User firstPublishedAt: DateTime lastPublishedAt: DateTime latestRevisionCreatedAt: DateTime aliasOf: Page pageType: String url: String parent: PageInterface children(limit: PositiveInt, offset: PositiveInt, order: String, searchQuery: String, id: ID): [PageInterface!]! siblings(limit: PositiveInt, offset: PositiveInt, order: String, searchQuery: String, id: ID): [PageInterface!]! nextSiblings(limit: PositiveInt, offset: PositiveInt, order: String, searchQuery: String, id: ID): [PageInterface!]! previousSiblings(limit: PositiveInt, offset: PositiveInt, order: String, searchQuery: String, id: ID): [PageInterface!]! descendants(limit: PositiveInt, offset: PositiveInt, order: String, searchQuery: String, id: ID): [PageInterface!]! ancestors(limit: PositiveInt, offset: PositiveInt, order: String, searchQuery: String, id: ID): [PageInterface!]! } type LibraryDocument { id: ID collection: CollectionObjectType! title: String! file: String! createdAt: DateTime! fileSize: Int fileHash: String! url: String! tags: [TagObjectType!]! } type ListBlock implements StreamFieldInterface { id: String blockType: String! field: String! rawValue: String! items: [StreamFieldInterface!]! } type MediaCategoryPage implements PageInterface { id: ID path: String! depth: Int numchild: Int! translationKey: UUID! title: String! draftTitle: String! slug: String! contentType: String! live: Boolean! hasUnpublishedChanges: Boolean! urlPath: String! owner: User seoTitle: String! showInMenus: Boolean! searchDescription: String goLiveAt: DateTime expireAt: DateTime expired: Boolean! locked: Boolean lockedAt: DateTime lockedBy: User firstPublishedAt: DateTime lastPublishedAt: DateTime latestRevisionCreatedAt: DateTime aliasOf: Page pageType: String url: String parent: PageInterface children(limit: PositiveInt, offset: PositiveInt, order: String, searchQuery: String, id: ID): [PageInterface!]! siblings(limit: PositiveInt, offset: PositiveInt, order: String, searchQuery: String, id: ID): [PageInterface!]! nextSiblings(limit: PositiveInt, offset: PositiveInt, order: String, searchQuery: String, id: ID): [PageInterface!]! previousSiblings(limit: PositiveInt, offset: PositiveInt, order: String, searchQuery: String, id: ID): [PageInterface!]! descendants(limit: PositiveInt, offset: PositiveInt, order: String, searchQuery: String, id: ID): [PageInterface!]! ancestors(limit: PositiveInt, offset: PositiveInt, order: String, searchQuery: String, id: ID): [PageInterface!]! } type MediaLibraryPage implements PageInterface { id: ID path: String! depth: Int numchild: Int! translationKey: UUID! title: String! draftTitle: String! slug: String! contentType: String! live: Boolean! hasUnpublishedChanges: Boolean! urlPath: String! owner: User seoTitle: String! showInMenus: Boolean! searchDescription: String goLiveAt: DateTime expireAt: DateTime expired: Boolean! locked: Boolean lockedAt: DateTime lockedBy: User firstPublishedAt: DateTime lastPublishedAt: DateTime latestRevisionCreatedAt: DateTime aliasOf: Page pageType: String url: String parent: PageInterface children(limit: PositiveInt, offset: PositiveInt, order: String, searchQuery: String, id: ID): [PageInterface!]! siblings(limit: PositiveInt, offset: PositiveInt, order: String, searchQuery: String, id: ID): [PageInterface!]! nextSiblings(limit: PositiveInt, offset: PositiveInt, order: String, searchQuery: String, id: ID): [PageInterface!]! previousSiblings(limit: PositiveInt, offset: PositiveInt, order: String, searchQuery: String, id: ID): [PageInterface!]! descendants(limit: PositiveInt, offset: PositiveInt, order: String, searchQuery: String, id: ID): [PageInterface!]! ancestors(limit: PositiveInt, offset: PositiveInt, order: String, searchQuery: String, id: ID): [PageInterface!]! } type Mutation { sendFeedback(input: SendFeedbackInput!): SendFeedbackPayload } type Page implements PageInterface { id: ID path: String! depth: Int numchild: Int! translationKey: UUID! title: String! draftTitle: String! slug: String! contentType: String! live: Boolean! hasUnpublishedChanges: Boolean! urlPath: String! owner: User seoTitle: String! showInMenus: Boolean! searchDescription: String goLiveAt: DateTime expireAt: DateTime expired: Boolean! locked: Boolean lockedAt: DateTime lockedBy: User firstPublishedAt: DateTime lastPublishedAt: DateTime latestRevisionCreatedAt: DateTime aliasOf: Page sitesRootedHere: [SiteObjectType!]! aliases: [Page!]! coursepage: CoursePage learningpath: LearningPath topic: Topic circle: Circle learningsequence: LearningSequence learningunit: LearningUnit learningcontent: LearningContent competenceprofilepage: CompetenceProfilePage competencepage: CompetencePage performancecriteria: PerformanceCriteria medialibrarypage: MediaLibraryPage mediacategorypage: MediaCategoryPage pageType: String url: String parent: PageInterface children(limit: PositiveInt, offset: PositiveInt, order: String, searchQuery: String, id: ID): [PageInterface!]! siblings(limit: PositiveInt, offset: PositiveInt, order: String, searchQuery: String, id: ID): [PageInterface!]! nextSiblings(limit: PositiveInt, offset: PositiveInt, order: String, searchQuery: String, id: ID): [PageInterface!]! previousSiblings(limit: PositiveInt, offset: PositiveInt, order: String, searchQuery: String, id: ID): [PageInterface!]! descendants(limit: PositiveInt, offset: PositiveInt, order: String, searchQuery: String, id: ID): [PageInterface!]! ancestors(limit: PositiveInt, offset: PositiveInt, order: String, searchQuery: String, id: ID): [PageInterface!]! } type PageChooserBlock implements StreamFieldInterface { id: String blockType: String! field: String! rawValue: String! page: PageInterface! } interface PageInterface { id: ID title: String! slug: String! contentType: String! pageType: String live: Boolean! url: String urlPath: String! depth: Int seoTitle: String! searchDescription: String showInMenus: Boolean! locked: Boolean firstPublishedAt: DateTime lastPublishedAt: DateTime parent: PageInterface children(limit: PositiveInt, offset: PositiveInt, order: String, searchQuery: String, id: ID): [PageInterface!]! siblings(limit: PositiveInt, offset: PositiveInt, order: String, searchQuery: String, id: ID): [PageInterface!]! nextSiblings(limit: PositiveInt, offset: PositiveInt, order: String, searchQuery: String, id: ID): [PageInterface!]! previousSiblings(limit: PositiveInt, offset: PositiveInt, order: String, searchQuery: String, id: ID): [PageInterface!]! descendants(limit: PositiveInt, offset: PositiveInt, order: String, searchQuery: String, id: ID): [PageInterface!]! ancestors(limit: PositiveInt, offset: PositiveInt, order: String, searchQuery: String, id: ID): [PageInterface!]! } type PerformanceCriteria implements PageInterface { id: ID path: String! depth: Int numchild: Int! translationKey: UUID! title: String! draftTitle: String! slug: String! contentType: String! live: Boolean! hasUnpublishedChanges: Boolean! urlPath: String! owner: User seoTitle: String! showInMenus: Boolean! searchDescription: String goLiveAt: DateTime expireAt: DateTime expired: Boolean! locked: Boolean lockedAt: DateTime lockedBy: User firstPublishedAt: DateTime lastPublishedAt: DateTime latestRevisionCreatedAt: DateTime aliasOf: Page pageType: String url: String parent: PageInterface children(limit: PositiveInt, offset: PositiveInt, order: String, searchQuery: String, id: ID): [PageInterface!]! siblings(limit: PositiveInt, offset: PositiveInt, order: String, searchQuery: String, id: ID): [PageInterface!]! nextSiblings(limit: PositiveInt, offset: PositiveInt, order: String, searchQuery: String, id: ID): [PageInterface!]! previousSiblings(limit: PositiveInt, offset: PositiveInt, order: String, searchQuery: String, id: ID): [PageInterface!]! descendants(limit: PositiveInt, offset: PositiveInt, order: String, searchQuery: String, id: ID): [PageInterface!]! ancestors(limit: PositiveInt, offset: PositiveInt, order: String, searchQuery: String, id: ID): [PageInterface!]! } scalar PositiveInt type Query { redirects: [RedirectType!]! collections(limit: PositiveInt, offset: PositiveInt, order: String, id: ID): [CollectionObjectType]! tag(id: ID): TagObjectType tags(limit: PositiveInt, offset: PositiveInt, order: String, id: ID): [TagObjectType!]! search(query: String): [Search!]! document(id: ID): LibraryDocument documents(collection: ID, limit: PositiveInt, offset: PositiveInt, order: String, searchQuery: String, id: ID): [LibraryDocument!]! documentType: String! image(id: ID): ImageObjectType images(collection: ID, limit: PositiveInt, offset: PositiveInt, order: String, searchQuery: String, id: ID): [ImageObjectType!]! imageType: String! site(hostname: String, id: ID): SiteObjectType sites(limit: PositiveInt, offset: PositiveInt, order: String, searchQuery: String, id: ID): [SiteObjectType!]! pages(contentType: String, inSite: Boolean = false, site: String, ancestor: ID, parent: ID, limit: PositiveInt, offset: PositiveInt, order: String, searchQuery: String, id: ID): [PageInterface!]! page(id: Int, slug: String, urlPath: String, token: String, contentType: String, inSite: Boolean = false, site: String): PageInterface } type RawHTMLBlock implements StreamFieldInterface { id: String blockType: String! field: String! rawValue: String! value: String! } type RedirectType { oldPath: String! oldUrl: String! newUrl: String! page: PageInterface isPermanent: Boolean! } type RegexBlock implements StreamFieldInterface { id: String blockType: String! field: String! rawValue: String! value: String! } type RichTextBlock implements StreamFieldInterface { id: String blockType: String! field: String! rawValue: String! value: String! } union Search = CoursePage | LearningPath | Topic | Circle | LearningSequence | LearningUnit | LearningContent | CompetenceProfilePage | CompetencePage | PerformanceCriteria | MediaLibraryPage | MediaCategoryPage | Page | LibraryDocument | User | SecurityRequestResponseLog | Course | CourseCategory | CourseCompletion | CourseSession | CourseSessionUser type SecurityRequestResponseLog { id: ID } input SendFeedbackInput { id: Int page: String! satisfaction: Int goalAttainment: Int proficiency: Int receivedMaterials: Boolean materialsRating: Int instructorCompetence: Int instructorRespect: Int instructorOpenFeedback: String wouldRecommend: Boolean coursePositiveFeedback: String courseNegativeFeedback: String clientMutationId: String } type SendFeedbackPayload { id: Int satisfaction: Int goalAttainment: Int proficiency: Int receivedMaterials: Boolean materialsRating: Int instructorCompetence: Int instructorRespect: Int instructorOpenFeedback: String wouldRecommend: Boolean coursePositiveFeedback: String courseNegativeFeedback: String errors: [ErrorType] clientMutationId: String } type SiteObjectType { id: ID! hostname: String! port: Int! siteName: String! rootPage: Page! isDefaultSite: Boolean! pages(contentType: String, limit: PositiveInt, offset: PositiveInt, order: String, searchQuery: String, id: ID): [PageInterface!]! page(id: Int, slug: String, urlPath: String, token: String, contentType: String): PageInterface } type StaticBlock implements StreamFieldInterface { id: String blockType: String! field: String! rawValue: String! value: String! } type StreamBlock implements StreamFieldInterface { id: String blockType: String! field: String! rawValue: String! blocks: [StreamFieldInterface!]! } type StreamFieldBlock implements StreamFieldInterface { id: String blockType: String! field: String! rawValue: String! value: String! } interface StreamFieldInterface { id: String blockType: String! field: String! rawValue: String! } type StructBlock implements StreamFieldInterface { id: String blockType: String! field: String! rawValue: String! blocks: [StreamFieldInterface!]! } type TagObjectType { id: ID! name: String! } type TextBlock implements StreamFieldInterface { id: String blockType: String! field: String! rawValue: String! value: String! } type TimeBlock implements StreamFieldInterface { id: String blockType: String! field: String! rawValue: String! value(format: String): String! } type Topic implements PageInterface { id: ID path: String! depth: Int numchild: Int! translationKey: UUID! title: String! draftTitle: String! slug: String! contentType: String! live: Boolean! hasUnpublishedChanges: Boolean! urlPath: String! owner: User seoTitle: String! showInMenus: Boolean! searchDescription: String goLiveAt: DateTime expireAt: DateTime expired: Boolean! locked: Boolean lockedAt: DateTime lockedBy: User firstPublishedAt: DateTime lastPublishedAt: DateTime latestRevisionCreatedAt: DateTime aliasOf: Page pageType: String url: String parent: PageInterface children(limit: PositiveInt, offset: PositiveInt, order: String, searchQuery: String, id: ID): [PageInterface!]! siblings(limit: PositiveInt, offset: PositiveInt, order: String, searchQuery: String, id: ID): [PageInterface!]! nextSiblings(limit: PositiveInt, offset: PositiveInt, order: String, searchQuery: String, id: ID): [PageInterface!]! previousSiblings(limit: PositiveInt, offset: PositiveInt, order: String, searchQuery: String, id: ID): [PageInterface!]! descendants(limit: PositiveInt, offset: PositiveInt, order: String, searchQuery: String, id: ID): [PageInterface!]! ancestors(limit: PositiveInt, offset: PositiveInt, order: String, searchQuery: String, id: ID): [PageInterface!]! } type URLBlock implements StreamFieldInterface { id: String blockType: String! field: String! rawValue: String! value: String! } scalar UUID type User { id: ID }