schema { query: CustomQuery mutation: CustomMutation } input AddCommentInput { comment: String! roomEntry: ID! clientMutationId: String } type AddCommentPayload { success: Boolean comment: CommentNode clientMutationId: String } input AddContentBlockInput { contentBlock: ContentBlockInput parent: ID after: ID clientMutationId: String } type AddContentBlockPayload { newContentBlock: ContentBlockNode errors: [String] clientMutationId: String } input AddNoteArgument { content: UUID block: String type: String parent: ID text: String! } input AddNoteInput { note: AddNoteArgument clientMutationId: String } type AddNotePayload { note: NoteNode clientMutationId: String } input AddObjectiveArgument { text: String! objectiveGroup: ID } input AddObjectiveInput { objective: AddObjectiveArgument clientMutationId: String } type AddObjectivePayload { objective: ObjectiveNode clientMutationId: String } input AddProjectArgument { title: String description: String objectives: String appearance: String } input AddProjectEntryArgument { activity: String reflection: String nextSteps: String documentUrl: String project: ID! } input AddProjectEntryInput { projectEntry: AddProjectEntryArgument clientMutationId: String } type AddProjectEntryPayload { errors: [String] projectEntry: ProjectEntryNode clientMutationId: String } input AddProjectInput { project: AddProjectArgument clientMutationId: String } type AddProjectPayload { errors: [String] project: ProjectNode clientMutationId: String } input AddRemoveMemberInput { member: ID! schoolClass: ID! active: Boolean! clientMutationId: String } type AddRemoveMemberPayload { success: Boolean clientMutationId: String } input AddRoomArgument { title: String description: String schoolClass: SchoolClassInput appearance: String } input AddRoomEntryArgument { title: String! contents: [ContentElementInput] room: ID! } input AddRoomEntryInput { roomEntry: AddRoomEntryArgument clientMutationId: String } type AddRoomEntryPayload { roomEntry: RoomEntryNode errors: [String] clientMutationId: String } input AddRoomInput { room: AddRoomArgument clientMutationId: String } type AddRoomPayload { errors: [String] room: RoomNode clientMutationId: String } type AnswerNode implements Node { id: ID! owner: PrivateUserNode! data: JSONString! survey: SurveyNode! pk: Int } type AnswerNodeConnection { pageInfo: PageInfo! edges: [AnswerNodeEdge]! } type AnswerNodeEdge { node: AnswerNode cursor: String! } input ApplySnapshotInput { snapshot: ID! selectedClass: ID! clientMutationId: String } type ApplySnapshotPayload { success: Boolean module: ModuleNode clientMutationId: String } input AssignmentInput { id: ID! answer: String! document: String final: Boolean } type AssignmentNode implements Node { created: DateTime! modified: DateTime! id: ID! title: String! assignment: String! solution: String deleted: Boolean! owner: PrivateUserNode module: ModuleNode! userCreated: Boolean! taskbaseId: String submissions: [StudentSubmissionNode] submission: StudentSubmissionNode } type AssignmentNodeConnection { pageInfo: PageInfo! edges: [AssignmentNodeEdge]! } type AssignmentNodeEdge { node: AssignmentNode cursor: String! } enum BasicKnowledgeType { LANGUAGE_COMMUNICATION SOCIETY INTERDISCIPLINARY } type ChapterBookmarkNode implements Node { user: PrivateUserNode! note: NoteNode id: ID! chapter: ChapterNode! } type ChapterBookmarkNodeConnection { pageInfo: PageInfo! edges: [ChapterBookmarkNodeEdge]! } type ChapterBookmarkNodeEdge { node: ChapterBookmarkNode cursor: String! } interface ChapterInterface { description: String title: String } type ChapterNode implements Node & ChapterInterface { title: String slug: String! description: String titleHiddenFor: [SchoolClassNode] descriptionHiddenFor: [SchoolClassNode] id: ID! bookmark: ChapterBookmarkNode contentBlocks: [ContentBlockNode] } type ChapterNodeConnection { pageInfo: PageInfo! edges: [ChapterNodeEdge]! } type ChapterNodeEdge { node: ChapterNode cursor: String! } type ClassMemberNode { user: PublicUserNode active: Boolean firstName: String lastName: String isTeacher: Boolean id: ID isMe: Boolean } type CommentNode implements Node { text: String! owner: PublicUserNode created: DateTime! id: ID! } type CommentNodeConnection { pageInfo: PageInfo! edges: [CommentNodeEdge]! } type CommentNodeEdge { node: CommentNode cursor: String! } type ContentBlockBookmarkNode implements Node { id: ID! user: PrivateUserNode! note: NoteNode uuid: UUID contentBlock: ContentBlockNode! } type ContentBlockBookmarkNodeConnection { pageInfo: PageInfo! edges: [ContentBlockBookmarkNodeEdge]! } type ContentBlockBookmarkNodeEdge { node: ContentBlockBookmarkNode cursor: String! } input ContentBlockInput { title: String type: String contents: [ContentElementInput] visibility: [UserGroupBlockVisibility] } interface ContentBlockInterface { title: String contents: GenericStreamFieldType type: String } type ContentBlockNode implements Node & ContentBlockInterface { title: String slug: String! hiddenFor: [SchoolClassNode] visibleFor: [SchoolClassNode] userCreated: Boolean! contents: GenericStreamFieldType type: String id: ID! mine: Boolean bookmarks: [ContentBlockBookmarkNode] originalCreator: PublicUserNode } type ContentBlockNodeConnection { pageInfo: PageInfo! edges: [ContentBlockNodeEdge]! } type ContentBlockNodeEdge { node: ContentBlockNode cursor: String! } input ContentElementInput { id: String type: InputTypes! value: ContentElementValueInput } input ContentElementValueInput { text: String url: String description: String title: String assignment: String id: String } input CouponInput { couponCode: String clientMutationId: String } type CouponPayload { success: Boolean clientMutationId: String } input CreateSchoolClassInput { name: String clientMutationId: String } type CreateSchoolClassPayload { success: Boolean schoolClass: SchoolClassNode clientMutationId: String } input CreateSnapshotInput { module: String! selectedClass: ID! clientMutationId: String } type CreateSnapshotPayload { snapshot: SnapshotNode success: Boolean clientMutationId: String } input CreateTeamInput { name: String! clientMutationId: String } type CreateTeamPayload { success: Boolean team: TeamNode clientMutationId: String } type CustomMutation { spellCheck(input: SpellCheckInput!): SpellCheckPayload addNote(input: AddNoteInput!): AddNotePayload updateNote(input: UpdateNoteInput!): UpdateNotePayload updateContentBookmark(input: UpdateContentBookmarkInput!): UpdateContentBookmarkPayload updateChapterBookmark(input: UpdateChapterBookmarkInput!): UpdateChapterBookmarkPayload updateModuleBookmark(input: UpdateModuleBookmarkInput!): UpdateModuleBookmarkPayload updateInstrumentBookmark(input: UpdateInstrumentBookmarkInput!): UpdateInstrumentBookmarkPayload updateAnswer(input: UpdateAnswerInput!): UpdateAnswerPayload updatePassword(input: UpdatePasswordInput!): UpdatePasswordPayload updateAvatar(input: UpdateAvatarInput!): UpdateAvatarPayload updateSetting(input: UpdateSettingInput!): UpdateSettingPayload joinClass(input: JoinClassInput!): JoinClassPayload addRemoveMember(input: AddRemoveMemberInput!): AddRemoveMemberPayload updateSchoolClass(input: UpdateSchoolClassInput!): UpdateSchoolClassPayload createSchoolClass(input: CreateSchoolClassInput!): CreateSchoolClassPayload updateOnboardingProgress: UpdateOnboardingProgress createTeam(input: CreateTeamInput!): CreateTeamPayload joinTeam(input: JoinTeamInput!): JoinTeamPayload updateTeam(input: UpdateTeamInput!): UpdateTeamPayload leaveTeam: LeaveTeam addProject(input: AddProjectInput!): AddProjectPayload updateProject(input: UpdateProjectInput!): UpdateProjectPayload deleteProject(input: DeleteProjectInput!): DeleteProjectPayload addProjectEntry(input: AddProjectEntryInput!): AddProjectEntryPayload updateProjectEntry(input: UpdateProjectEntryInput!): UpdateProjectEntryPayload deleteProjectEntry(input: DeleteProjectEntryInput!): DeleteProjectEntryPayload updateProjectSharedState(input: UpdateProjectSharedStateInput!): UpdateProjectSharedStatePayload logout: Logout coupon(input: CouponInput!): CouponPayload updateObjectiveVisibility(input: UpdateObjectiveVisibilityInput!): UpdateObjectiveVisibilityPayload updateObjectiveGroupVisibility(input: UpdateObjectiveGroupVisibilityInput!): UpdateObjectiveGroupVisibilityPayload addObjective(input: AddObjectiveInput!): AddObjectivePayload deleteObjective(input: DeleteObjectiveInput!): DeleteObjectivePayload updateAssignment(input: UpdateAssignmentInput!): UpdateAssignmentPayload updateSubmissionFeedback(input: UpdateSubmissionFeedbackInput!): UpdateSubmissionFeedbackPayload updateRoom(input: UpdateRoomInput!): UpdateRoomPayload addRoom(input: AddRoomInput!): AddRoomPayload deleteRoom(input: DeleteRoomInput!): DeleteRoomPayload addRoomEntry(input: AddRoomEntryInput!): AddRoomEntryPayload deleteRoomEntry(input: DeleteRoomEntryInput!): DeleteRoomEntryPayload updateRoomEntry(input: UpdateRoomEntryInput!): UpdateRoomEntryPayload addComment(input: AddCommentInput!): AddCommentPayload mutateContentBlock(input: MutateContentBlockInput!): MutateContentBlockPayload addContentBlock(input: AddContentBlockInput!): AddContentBlockPayload deleteContentBlock(input: DeleteContentBlockInput!): DeleteContentBlockPayload updateSolutionVisibility(input: UpdateSolutionVisibilityInput!): UpdateSolutionVisibilityPayload updateLastModule(input: UpdateLastModuleInput!): UpdateLastModulePayload updateLastTopic(input: UpdateLastTopicInput!): UpdateLastTopicPayload updateChapterVisibility(input: UpdateChapterVisibilityInput!): UpdateChapterVisibilityPayload syncModuleVisibility(input: SyncModuleVisibilityInput!): SyncModuleVisibilityPayload createSnapshot(input: CreateSnapshotInput!): CreateSnapshotPayload applySnapshot(input: ApplySnapshotInput!): ApplySnapshotPayload shareSnapshot(input: ShareSnapshotInput!): ShareSnapshotPayload _debug: DjangoDebug } type CustomQuery { newsTeasers(offset: Int, before: String, after: String, first: Int, last: Int, date: Date): NewsTeaserNodeConnection survey(id: ID): SurveyNode surveys(offset: Int, before: String, after: String, first: Int, last: Int): SurveyNodeConnection project(id: ID, slug: String): ProjectNode projects(offset: Int, before: String, after: String, first: Int, last: Int, slug: String, appearance: String): ProjectNodeConnection instrument(slug: String, id: ID): InstrumentNode instruments(offset: Int, before: String, after: String, first: Int, last: Int, slug: String, type: String): InstrumentNodeConnection studentSubmission(id: ID!): StudentSubmissionNode assignment(id: ID!): AssignmentNode assignments(offset: Int, before: String, after: String, first: Int, last: Int): AssignmentNodeConnection node(id: ID!): Node topic(slug: String): TopicNode module(slug: String, id: ID): ModuleNode chapter(id: ID!): ChapterNode contentBlock(id: ID!): ContentBlockNode snapshot(id: ID!): SnapshotNode topics(before: String, after: String, first: Int, last: Int): TopicConnection modules(before: String, after: String, first: Int, last: Int): ModuleConnection chapters(offset: Int, before: String, after: String, first: Int, last: Int, slug: String, title: String): ChapterNodeConnection objectiveGroup(id: ID!): ObjectiveGroupNode objectiveGroups(offset: Int, before: String, after: String, first: Int, last: Int, title: String, module_Slug: String): ObjectiveGroupNodeConnection roomEntry(id: ID, slug: String): RoomEntryNode room(slug: String, id: ID, appearance: String): RoomNode rooms(offset: Int, before: String, after: String, first: Int, last: Int, slug: String, appearance: String): RoomNodeConnection allRoomEntries(offset: Int, before: String, after: String, first: Int, last: Int, slug: String): RoomEntryNodeConnection moduleRoom(slug: String, classId: ID): RoomNode me: PrivateUserNode allUsers(offset: Int, before: String, after: String, first: Int, last: Int, username: String, email: String): PrivateUserNodeConnection myActivity(offset: Int, before: String, after: String, first: Int, last: Int, slug: String, slug_Icontains: String, slug_In: [String], title: String, title_Icontains: String, title_In: [String]): ModuleNodeConnection myInstrumentActivity(offset: Int, before: String, after: String, first: Int, last: Int, slug: String, type: String): InstrumentNodeConnection _debug: DjangoDebug } scalar Date scalar DateTime input DeleteContentBlockInput { id: ID! clientMutationId: String } type DeleteContentBlockPayload { success: Boolean errors: String clientMutationId: String } input DeleteObjectiveInput { id: ID! clientMutationId: String } type DeleteObjectivePayload { success: Boolean clientMutationId: String } input DeleteProjectEntryInput { id: ID! clientMutationId: String } type DeleteProjectEntryPayload { success: Boolean errors: [String] clientMutationId: String } input DeleteProjectInput { id: ID! clientMutationId: String } type DeleteProjectPayload { success: Boolean errors: [String] clientMutationId: String } input DeleteRoomEntryInput { id: ID! clientMutationId: String } type DeleteRoomEntryPayload { success: Boolean roomSlug: String roomId: ID errors: [String] clientMutationId: String } input DeleteRoomInput { id: ID! clientMutationId: String } type DeleteRoomPayload { success: Boolean errors: [String] clientMutationId: String } type DjangoDebug { sql: [DjangoDebugSQL] } type DjangoDebugSQL { vendor: String! alias: String! sql: String duration: Float! rawSql: String! params: String! startTime: Float! stopTime: Float! isSlow: Boolean! isSelect: Boolean! transId: String transStatus: String isoLevel: String encoding: String } type FieldError { code: String } scalar GenericStreamFieldType enum InputTypes { text_block assignment image_block image_url_block link_block video_block document_block } type InstrumentBookmarkNode implements Node { user: PrivateUserNode! note: NoteNode id: ID! uuid: UUID instrument: InstrumentNode! } type InstrumentNode implements Node { title: String! slug: String! intro: String! contents: GenericStreamFieldType type: BasicKnowledgeType! id: ID! bookmarks: [InstrumentBookmarkNode] } type InstrumentNodeConnection { pageInfo: PageInfo! edges: [InstrumentNodeEdge]! } type InstrumentNodeEdge { node: InstrumentNode cursor: String! } scalar JSONString input JoinClassInput { code: String! clientMutationId: String } type JoinClassPayload { success: Boolean schoolClass: SchoolClassNode clientMutationId: String } input JoinTeamInput { code: String! clientMutationId: String } type JoinTeamPayload { success: Boolean team: TeamNode clientMutationId: String } type LeaveTeam { success: Boolean } type Logout { success: Boolean } type ModuleBookmarkNode { user: PrivateUserNode! note: NoteNode id: ID! module: ModuleNode! } type ModuleConnection { pageInfo: PageInfo! edges: [ModuleEdge]! nodes: [ModuleNode] } type ModuleEdge { node: ModuleNode cursor: String! } interface ModuleInterface { id: ID! pk: Int heroImage: String! topic: TopicNode } type ModuleNode implements ModuleInterface { title: String! slug: String! metaTitle: String! heroImage: String! teaser: String! intro: String! assignments(offset: Int, before: String, after: String, first: Int, last: Int): AssignmentNodeConnection! objectiveGroups: [ObjectiveGroupNode] id: ID! pk: Int topic: TopicNode chapters: [ChapterNode] solutionsEnabled: Boolean bookmark: ModuleBookmarkNode mySubmissions(offset: Int, before: String, after: String, first: Int, last: Int): StudentSubmissionNodeConnection myAnswers(offset: Int, before: String, after: String, first: Int, last: Int): AnswerNodeConnection myContentBookmarks(offset: Int, before: String, after: String, first: Int, last: Int): ContentBlockBookmarkNodeConnection myChapterBookmarks(offset: Int, before: String, after: String, first: Int, last: Int): ChapterBookmarkNodeConnection snapshots: [SnapshotNode] } type ModuleNodeConnection { pageInfo: PageInfo! edges: [ModuleNodeEdge]! } type ModuleNodeEdge { node: ModuleNode cursor: String! } input MutateContentBlockInput { id: ID! contentBlock: ContentBlockInput clientMutationId: String } type MutateContentBlockPayload { contentBlock: ContentBlockNode clientMutationId: String } type NewsTeaserNode implements Node { id: ID! imageUrl: String title: String! description: String date: Date orderId: Int! newsArticleUrl: String imageSource: String! displayDate: String } type NewsTeaserNodeConnection { pageInfo: PageInfo! edges: [NewsTeaserNodeEdge]! } type NewsTeaserNodeEdge { node: NewsTeaserNode cursor: String! } interface Node { id: ID! } type NoteNode implements Node { id: ID! text: String! contentblockbookmark: ContentBlockBookmarkNode modulebookmark: ModuleBookmarkNode chapterbookmark: ChapterBookmarkNode instrumentbookmark: InstrumentBookmarkNode pk: Int } type ObjectiveGroupNode implements Node { id: ID! title: ObjectiveGroupTitle module: ModuleNode! hiddenFor: [SchoolClassNode] objectives: [ObjectiveNode] pk: Int displayTitle: String } type ObjectiveGroupNodeConnection { pageInfo: PageInfo! edges: [ObjectiveGroupNodeEdge]! } type ObjectiveGroupNodeEdge { node: ObjectiveGroupNode cursor: String! } enum ObjectiveGroupTitle { LANGUAGE_COMMUNICATION SOCIETY INTERDISCIPLINARY } type ObjectiveNode implements Node { id: ID! text: String! group: ObjectiveGroupNode! owner: PrivateUserNode hiddenFor: [SchoolClassNode] visibleFor: [SchoolClassNode] order: Int hiddenForSnapshots(offset: Int, before: String, after: String, first: Int, last: Int): SnapshotNodeConnection! pk: Int userCreated: Boolean mine: Boolean } type ObjectiveNodeConnection { pageInfo: PageInfo! edges: [ObjectiveNodeEdge]! } type ObjectiveNodeEdge { node: ObjectiveNode cursor: String! } type PageInfo { hasNextPage: Boolean! hasPreviousPage: Boolean! startCursor: String endCursor: String } input PasswordUpdateInput { oldPassword: String newPassword: String } type PrivateUserNode implements Node { firstName: String! lastName: String! avatarUrl: String! username: String! lastModule: ModuleNode lastTopic: TopicNode email: String! onboardingVisited: Boolean! team: TeamNode schoolClasses(offset: Int, before: String, after: String, first: Int, last: Int, name: String): SchoolClassNodeConnection! id: ID! pk: Int permissions: [String] selectedClass: SchoolClassNode expiryDate: String isTeacher: Boolean oldClasses(offset: Int, before: String, after: String, first: Int, last: Int, name: String): SchoolClassNodeConnection recentModules(offset: Int, before: String, after: String, first: Int, last: Int, recentModules: [ID], orderBy: String): ModuleNodeConnection readOnly: Boolean } type PrivateUserNodeConnection { pageInfo: PageInfo! edges: [PrivateUserNodeEdge]! } type PrivateUserNodeEdge { node: PrivateUserNode cursor: String! } type ProjectEntryNode implements Node { id: ID! activity: String! reflection: String! nextSteps: String! documentUrl: String! created: DateTime! project: ProjectNode! } type ProjectEntryNodeConnection { pageInfo: PageInfo! edges: [ProjectEntryNodeEdge]! } type ProjectEntryNodeEdge { node: ProjectEntryNode cursor: String! } type ProjectNode implements Node { id: ID! title: String! description: String slug: String! objectives: String! appearance: String! student: PrivateUserNode! final: Boolean! schoolClass: SchoolClassNode entries(offset: Int, before: String, after: String, first: Int, last: Int): ProjectEntryNodeConnection! pk: Int entriesCount: Int } type ProjectNodeConnection { pageInfo: PageInfo! edges: [ProjectNodeEdge]! } type ProjectNodeEdge { node: ProjectNode cursor: String! } type PublicUserNode implements Node { firstName: String! lastName: String! avatarUrl: String! id: ID! fullName: String! isMe: Boolean } type RoomEntryNode implements Node { title: String! description: String slug: String! id: ID! room: RoomNode! author: PublicUserNode contents: GenericStreamFieldType comments(offset: Int, before: String, after: String, first: Int, last: Int, owner: ID): CommentNodeConnection pk: Int } type RoomEntryNodeConnection { pageInfo: PageInfo! edges: [RoomEntryNodeEdge]! } type RoomEntryNodeEdge { node: RoomEntryNode cursor: String! } type RoomNode implements Node { title: String! description: String slug: String! id: ID! schoolClass: SchoolClassNode! appearance: String! userCreated: Boolean! roomEntries(offset: Int, before: String, after: String, first: Int, last: Int, slug: String): RoomEntryNodeConnection! pk: Int entryCount: Int } type RoomNodeConnection { pageInfo: PageInfo! edges: [RoomNodeEdge]! } type RoomNodeEdge { node: RoomNode cursor: String! } input SchoolClassInput { id: ID name: String } type SchoolClassNode implements Node { name: String! code: String id: ID! pk: Int members: [ClassMemberNode] readOnly: Boolean } type SchoolClassNodeConnection { pageInfo: PageInfo! edges: [SchoolClassNodeEdge]! } type SchoolClassNodeEdge { node: SchoolClassNode cursor: String! } input ShareSnapshotInput { snapshot: ID! shared: Boolean! clientMutationId: String } type ShareSnapshotPayload { success: Boolean! snapshot: SnapshotNode clientMutationId: String } type SnapshotChangesNode { hiddenObjectives: Int! newObjectives: Int! hiddenContentBlocks: Int! newContentBlocks: Int! } type SnapshotChapterNode implements Node & ChapterInterface { id: ID! description: String title: String contentBlocks: [SnapshotContentBlockNode] descriptionHidden: Boolean titleHidden: Boolean } type SnapshotContentBlockNode implements Node & ContentBlockInterface { id: ID! title: String contents: GenericStreamFieldType type: String hidden: Boolean } type SnapshotNode implements Node { id: ID! module: ModuleNode! chapters: [SnapshotChapterNode] hiddenContentBlocks(offset: Int, before: String, after: String, first: Int, last: Int, slug: String, title: String): ContentBlockNodeConnection! created: DateTime! creator: String! shared: Boolean! objectiveGroups: [SnapshotObjectiveGroupNode] hiddenObjectives(offset: Int, before: String, after: String, first: Int, last: Int, text: String): ObjectiveNodeConnection! title: String metaTitle: String heroImage: String changes: SnapshotChangesNode mine: Boolean } type SnapshotNodeConnection { pageInfo: PageInfo! edges: [SnapshotNodeEdge]! } type SnapshotNodeEdge { node: SnapshotNode cursor: String! } type SnapshotObjectiveGroupNode implements Node { id: ID! title: String! hidden: Boolean! displayTitle: String! objectives: [SnapshotObjectiveNode]! } type SnapshotObjectiveNode implements Node { id: ID! hidden: Boolean! text: String! } input SpellCheckInput { text: String! assignment: ID! clientMutationId: String } type SpellCheckPayload { results: [SpellCheckStepNode] correct: Boolean clientMutationId: String } type SpellCheckStepNode { sentence: String offset: Int sentenceOffset: Int length: Int affected: String corrected: String } type StudentSubmissionNode implements Node { created: DateTime! modified: DateTime! id: ID! text: String! document: String! assignment: AssignmentNode! student: PrivateUserNode! final: Boolean! submissionFeedback: SubmissionFeedbackNode } type StudentSubmissionNodeConnection { pageInfo: PageInfo! edges: [StudentSubmissionNodeEdge]! } type StudentSubmissionNodeEdge { node: StudentSubmissionNode cursor: String! } input SubmissionFeedbackInput { id: ID studentSubmission: ID! text: String! final: Boolean } type SubmissionFeedbackNode implements Node { created: DateTime! modified: DateTime! text: String! teacher: PrivateUserNode! studentSubmission: StudentSubmissionNode! final: Boolean! id: ID! } type SurveyNode implements Node { id: ID! title: String! module: ModuleNode data: JSONString! answers(offset: Int, before: String, after: String, first: Int, last: Int): AnswerNodeConnection! pk: Int answer: AnswerNode } type SurveyNodeConnection { pageInfo: PageInfo! edges: [SurveyNodeEdge]! } type SurveyNodeEdge { node: SurveyNode cursor: String! } input SyncModuleVisibilityInput { module: String! templateSchoolClass: ID! schoolClass: ID! clientMutationId: String } type SyncModuleVisibilityPayload { success: Boolean clientMutationId: String } type TeamNode implements Node { name: String! code: String id: ID! isDeleted: Boolean! creator: PrivateUserNode members: [PublicUserNode] pk: Int } type TopicConnection { pageInfo: PageInfo! edges: [TopicEdge]! nodes: [TopicNode] } type TopicEdge { node: TopicNode cursor: String! } type TopicNode implements Node { title: String! slug: String! order: Int! teaser: String! description: String! vimeoId: String instructions: String id: ID! pk: Int modules(offset: Int, before: String, after: String, first: Int, last: Int, slug: String, slug_Icontains: String, slug_In: [String], title: String, title_Icontains: String, title_In: [String]): ModuleNodeConnection } scalar UUID input UpdateAnswerArgument { surveyId: ID! data: String! } input UpdateAnswerInput { answer: UpdateAnswerArgument clientMutationId: String } type UpdateAnswerPayload { answer: AnswerNode clientMutationId: String } input UpdateAssignmentInput { assignment: AssignmentInput clientMutationId: String } type UpdateAssignmentPayload { updatedAssignment: AssignmentNode submission: StudentSubmissionNode successful: Boolean errors: [String] clientMutationId: String } input UpdateAvatarInput { avatarUrl: String clientMutationId: String } type UpdateAvatarPayload { success: Boolean errors: [UpdateError] clientMutationId: String } input UpdateChapterBookmarkInput { chapter: ID! bookmarked: Boolean! clientMutationId: String } type UpdateChapterBookmarkPayload { success: Boolean clientMutationId: String } input UpdateChapterVisibilityInput { id: ID! visibility: [UserGroupBlockVisibility] type: String! clientMutationId: String } type UpdateChapterVisibilityPayload { chapter: ChapterNode clientMutationId: String } input UpdateContentBookmarkInput { uuid: UUID! contentBlock: ID! bookmarked: Boolean! clientMutationId: String } type UpdateContentBookmarkPayload { success: Boolean errors: String clientMutationId: String } type UpdateError { field: String errors: [FieldError] } input UpdateInstrumentBookmarkInput { uuid: UUID! instrument: String! bookmarked: Boolean! clientMutationId: String } type UpdateInstrumentBookmarkPayload { success: Boolean clientMutationId: String } input UpdateLastModuleInput { id: ID clientMutationId: String } type UpdateLastModulePayload { lastModule: ModuleNode clientMutationId: String } input UpdateLastTopicInput { id: ID clientMutationId: String } type UpdateLastTopicPayload { topic: TopicNode clientMutationId: String } input UpdateModuleBookmarkInput { module: String! bookmarked: Boolean! clientMutationId: String } type UpdateModuleBookmarkPayload { success: Boolean clientMutationId: String } input UpdateNoteArgument { id: ID! text: String! } input UpdateNoteInput { note: UpdateNoteArgument clientMutationId: String } type UpdateNotePayload { note: NoteNode clientMutationId: String } input UpdateObjectiveGroupVisibilityInput { id: ID! visibility: [UserGroupBlockVisibility] clientMutationId: String } type UpdateObjectiveGroupVisibilityPayload { objectiveGroup: ObjectiveGroupNode clientMutationId: String } input UpdateObjectiveVisibilityInput { id: ID! visibility: [UserGroupBlockVisibility] clientMutationId: String } type UpdateObjectiveVisibilityPayload { objective: ObjectiveNode clientMutationId: String } type UpdateOnboardingProgress { success: Boolean } input UpdatePasswordInput { passwordInput: PasswordUpdateInput clientMutationId: String } type UpdatePasswordPayload { success: Boolean errors: [UpdateError] clientMutationId: String } input UpdateProjectArgument { title: String description: String objectives: String appearance: String id: ID! final: Boolean } input UpdateProjectEntryArgument { activity: String reflection: String nextSteps: String documentUrl: String id: ID! } input UpdateProjectEntryInput { projectEntry: UpdateProjectEntryArgument clientMutationId: String } type UpdateProjectEntryPayload { errors: [String] projectEntry: ProjectEntryNode clientMutationId: String } input UpdateProjectInput { project: UpdateProjectArgument clientMutationId: String } type UpdateProjectPayload { errors: [String] project: ProjectNode clientMutationId: String } input UpdateProjectSharedStateInput { id: ID shared: Boolean clientMutationId: String } type UpdateProjectSharedStatePayload { success: Boolean shared: Boolean errors: [String] clientMutationId: String } input UpdateRoomArgument { title: String description: String schoolClass: SchoolClassInput appearance: String id: ID! } input UpdateRoomEntryArgument { title: String! contents: [ContentElementInput] id: ID! } input UpdateRoomEntryInput { roomEntry: UpdateRoomEntryArgument clientMutationId: String } type UpdateRoomEntryPayload { roomEntry: RoomEntryNode errors: [String] clientMutationId: String } input UpdateRoomInput { room: UpdateRoomArgument clientMutationId: String } type UpdateRoomPayload { errors: [String] room: RoomNode clientMutationId: String } input UpdateSchoolClassInput { id: ID! name: String clientMutationId: String } type UpdateSchoolClassPayload { success: Boolean schoolClass: SchoolClassNode clientMutationId: String } input UpdateSettingInput { id: ID! clientMutationId: String } type UpdateSettingPayload { success: Boolean errors: [UpdateError] clientMutationId: String } input UpdateSolutionVisibilityInput { slug: String enabled: Boolean clientMutationId: String } type UpdateSolutionVisibilityPayload { success: Boolean solutionsEnabled: Boolean errors: [String] clientMutationId: String } input UpdateSubmissionFeedbackInput { submissionFeedback: SubmissionFeedbackInput clientMutationId: String } type UpdateSubmissionFeedbackPayload { updatedSubmissionFeedback: SubmissionFeedbackNode successful: Boolean errors: [String] clientMutationId: String } input UpdateTeamInput { id: ID! name: String clientMutationId: String } type UpdateTeamPayload { success: Boolean team: TeamNode clientMutationId: String } input UserGroupBlockVisibility { schoolClassId: ID! hidden: Boolean! }