schema { query: CustomQuery mutation: CustomMutation } 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: UserNode! data: JSONString! survey: SurveyNode! pk: Int } type AnswerNodeConnection { pageInfo: PageInfo! edges: [AnswerNodeEdge]! } type AnswerNodeEdge { node: AnswerNode cursor: 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: UserNode 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 BookNode implements Node { title: String! slug: String! id: ID! pk: Int topics(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]): TopicNodeConnection } type BookNodeConnection { pageInfo: PageInfo! edges: [BookNodeEdge]! } type BookNodeEdge { node: BookNode cursor: String! } type ChapterBookmarkNode implements Node { user: UserNode! note: NoteNode id: ID! chapter: ChapterNode! } type ChapterBookmarkNodeConnection { pageInfo: PageInfo! edges: [ChapterBookmarkNodeEdge]! } type ChapterBookmarkNodeEdge { node: ChapterBookmarkNode cursor: String! } type ChapterNode implements Node { title: String! slug: String! description: String! titleHiddenFor(offset: Int, before: String, after: String, first: Int, last: Int, name: String): SchoolClassNodeConnection! descriptionHiddenFor(offset: Int, before: String, after: String, first: Int, last: Int, name: String): SchoolClassNodeConnection! id: ID! contentBlocks(offset: Int, before: String, after: String, first: Int, last: Int, slug: String, title: String): ContentBlockNodeConnection bookmark: ChapterBookmarkNode } type ChapterNodeConnection { pageInfo: PageInfo! edges: [ChapterNodeEdge]! } type ChapterNodeEdge { node: ChapterNode cursor: String! } type ClassMemberNode { user: UserNode active: Boolean firstName: String lastName: String isTeacher: Boolean id: ID } type ContentBlockBookmarkNode implements Node { id: ID! user: UserNode! 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] } type ContentBlockNode implements Node { title: String! slug: String! hiddenFor(offset: Int, before: String, after: String, first: Int, last: Int, name: String): SchoolClassNodeConnection! visibleFor(offset: Int, before: String, after: String, first: Int, last: Int, name: String): SchoolClassNodeConnection! userCreated: Boolean! contents: GenericStreamFieldType type: ContentBlockType! id: ID! mine: Boolean bookmarks: [ContentBlockBookmarkNode] } type ContentBlockNodeConnection { pageInfo: PageInfo! edges: [ContentBlockNodeEdge]! } type ContentBlockNodeEdge { node: ContentBlockNode cursor: String! } enum ContentBlockType { NORMAL BASE_COMMUNICATION TASK BASE_SOCIETY BASE_INTERDISCIPLINARY } 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 CreateTeamInput { name: String! clientMutationId: String } type CreateTeamPayload { success: Boolean team: TeamNode clientMutationId: String } type CustomMutation { redeemCoupon(input: CouponInput!): CouponPayload 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 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 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 _debug: DjangoDebug } type CustomQuery { 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 book(id: ID!): BookNode topic(slug: String): TopicNode module(slug: String, id: ID): ModuleNode chapter(id: ID!): ChapterNode contentBlock(id: ID!): ContentBlockNode books(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]): BookNodeConnection topics(before: String, after: String, first: Int, last: Int): TopicConnection 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 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: UserNode allUsers(offset: Int, before: String, after: String, first: Int, last: Int, username: String, email: String): UserNodeConnection 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 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: UserNode! 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 Logout { success: Boolean } type ModuleBookmarkNode { user: UserNode! note: NoteNode id: ID! module: ModuleNode! } type ModuleNode implements Node { 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(offset: Int, before: String, after: String, first: Int, last: Int, title: String, module_Slug: String): ObjectiveGroupNodeConnection! id: ID! pk: Int chapters(offset: Int, before: String, after: String, first: Int, last: Int, slug: String, title: String): ChapterNodeConnection topic: TopicNode 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 } 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 } 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(offset: Int, before: String, after: String, first: Int, last: Int, name: String): SchoolClassNodeConnection! objectives(offset: Int, before: String, after: String, first: Int, last: Int, text: String): ObjectiveNodeConnection! 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: UserNode hiddenFor(offset: Int, before: String, after: String, first: Int, last: Int, name: String): SchoolClassNodeConnection! visibleFor(offset: Int, before: String, after: String, first: Int, last: Int, name: String): SchoolClassNodeConnection! order: Int 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 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: UserNode! final: Boolean! 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 RoomEntryNode implements Node { title: String! description: String slug: String! id: ID! room: RoomNode! author: UserNode contents: GenericStreamFieldType 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 { id: ID! name: String! isDeleted: Boolean! code: String users(offset: Int, before: String, after: String, first: Int, last: Int, username: String, email: String): UserNodeConnection! moduleSet(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! hiddenChapterTitles(offset: Int, before: String, after: String, first: Int, last: Int, slug: String, title: String): ChapterNodeConnection! hiddenChapterDescriptions(offset: Int, before: String, after: String, first: Int, last: Int, slug: String, title: String): ChapterNodeConnection! hiddenContentBlocks(offset: Int, before: String, after: String, first: Int, last: Int, slug: String, title: String): ContentBlockNodeConnection! visibleContentBlocks(offset: Int, before: String, after: String, first: Int, last: Int, slug: String, title: String): ContentBlockNodeConnection! hiddenObjectiveGroups(offset: Int, before: String, after: String, first: Int, last: Int, title: String, module_Slug: String): ObjectiveGroupNodeConnection! hiddenObjectives(offset: Int, before: String, after: String, first: Int, last: Int, text: String): ObjectiveNodeConnection! visibleObjectives(offset: Int, before: String, after: String, first: Int, last: Int, text: String): ObjectiveNodeConnection! rooms(offset: Int, before: String, after: String, first: Int, last: Int, slug: String, appearance: String): RoomNodeConnection! pk: Int members: [ClassMemberNode] } type SchoolClassNodeConnection { pageInfo: PageInfo! edges: [SchoolClassNodeEdge]! } type SchoolClassNodeEdge { node: SchoolClassNode cursor: 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: UserNode! 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: UserNode! 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! isDeleted: Boolean! code: String id: ID! creator: UserNode members: [UserNode] pk: Int } type TopicConnection { pageInfo: PageInfo! edges: [TopicEdge]! } 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 } type TopicNodeConnection { pageInfo: PageInfo! edges: [TopicNodeEdge]! } type TopicNodeEdge { node: TopicNode cursor: String! } 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! } type UserNode implements Node { username: String! firstName: String! lastName: String! lastModule: ModuleNode lastTopic: TopicNode avatarUrl: String! 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 } type UserNodeConnection { pageInfo: PageInfo! edges: [UserNodeEdge]! } type UserNodeEdge { node: UserNode cursor: String! }