Skip to content

Latest commit

 

History

History
8128 lines (6239 loc) · 163 KB

api.md

File metadata and controls

8128 lines (6239 loc) · 163 KB

GITS API

Table of Contents

Query

Field Argument Type Description
findPublicUserInfos [PublicUserInfo]!

Gets the publicly available information for a list of users with the specified IDs. If a user does not exist, null is returned for that user.

ids [UUID!]!
currentUserInfo UserInfo!

Gets the user information of the currently authorized user.

findUserInfos [UserInfo]!

Gets all of the users' information for a list of users with the specified IDs. Only available to privileged users. If a user does not exist, null is returned for that user.

ids [UUID!]!
userCourseRewardScores RewardScores!

Get the reward score of the current user for the specified course. 🔒 The user must have access to the course with the given id to access their scores, otherwise an error is thrown.

courseId UUID!
courseRewardScoresForUser RewardScores!

Get the reward score of the specified user for the specified course. 🔒 The user be an admin in the course with the given courseId to perform this action.

courseId UUID!
userId UUID!
scoreboard [ScoreboardItem!]!

Gets the power scores for each user in the course, ordered by power score descending. 🔒 The user must have access to the course with the given id to access the scoreboard, otherwise an error is thrown.

courseId UUID!
courses CoursePayload!

Get a list of courses. Can be filtered, sorted and paginated. Courses and their basic data can be queried by any user, even if they are not enrolled in the course.

filter CourseFilter
sortBy [String!]

The fields to sort by. Throws an error if no field with the given name exists.

sortDirection [SortDirection!]!

The sort direction for each field. If not specified, defaults to ASC.

pagination Pagination
coursesByIds [Course!]!

Returns the courses with the given ids. Courses and their basic data can be queried by any user, even if they are not enrolled in the course.

ids [UUID!]!
flashcardsByIds [Flashcard!]!

Get flashcards by their ids. 🔒 The user must be enrolled in the course the flashcards belong to. Otherwise an error is thrown.

ids [UUID!]!
findFlashcardSetsByAssessmentIds [FlashcardSet]!

Get flashcard sets by their assessment ids. Returns a list of flashcard sets in the same order as the provided ids. Each element is null if the corresponding id is not found. 🔒 The user must be enrolled in the course the flashcard sets belong to. Otherwise for that element null is returned.

assessmentIds [UUID!]!
dueFlashcardsByCourseId [Flashcard!]!

Get flashcards of a course that are due to be reviewed. 🔒 The user must be enrolled in the course the flashcards belong to. Otherwise an error is thrown.

courseId UUID!
mediaRecordsByIds [MediaRecord!]!

Returns the media records with the given IDs. Throws an error if a MediaRecord corresponding to a given ID cannot be found. 🔒 If the mediaRecord is associated with coursed the user must be a member of at least one of the courses.

ids [UUID!]!
findMediaRecordsByIds [MediaRecord]!

Like mediaRecordsByIds() returns the media records with the given IDs, but instead of throwing an error if an ID cannot be found, it instead returns NULL for that media record. 🔒 If the mediaRecord is associated with coursed the user must be a member of at least one of the courses.

ids [UUID!]!
mediaRecords ⚠️ [MediaRecord!]!

Returns all media records of the system. 🔒 The user must be a super-user, otherwise an exception is thrown.

⚠️ DEPRECATED

In production there should probably be no way to get all media records of the system.

userMediaRecords [MediaRecord!]!

Returns all media records which the current user created. 🔒 If the mediaRecord is associated with coursed the user must be a member of at least one of the courses.

mediaRecordsByContentIds [[MediaRecord!]!]!

Returns the media records associated the given content IDs as a list of lists where each sublist contains the media records associated with the content ID at the same index in the input list 🔒 If the mediaRecord is associated with coursed the user must be a member of at least one of the courses.

contentIds [UUID!]!
mediaRecordsForCourses [[MediaRecord!]!]!

Returns all media records for the given CourseIds 🔒 If the mediaRecord is associated with coursed the user must be a member of at least one of the courses.

courseIds [UUID!]!
mediaRecordsForUsers [[MediaRecord!]!]!

Returns all media records which were created by the users.

userIds [UUID!]!
contentsByCourseIds [[Content!]!]

Retrieves all existing contents for a given course. 🔒 The user must have access to the courses with the given ids to access their contents, otherwise an error is thrown.

courseIds [UUID!]!
contentsByIds [Content!]!

Get contents by ids. Throws an error if any of the ids are not found. 🔒 The user must have access to the courses containing the contents with the given ids to access their contents, otherwise an error is thrown.

ids [UUID!]!
findContentsByIds [Content]!

Get contents by ids. If any of the given ids are not found, the corresponding element in the result list will be null. 🔒 The user must have access to the courses containing the contents with the given ids, otherwise null is returned for the respective contents.

ids [UUID!]!
contentsByChapterIds [[Content!]!]!

Get contents by chapter ids. Returns a list containing sublists, where each sublist contains all contents associated with that chapter 🔒 The user must have access to the courses containing the chapters with the given ids, otherwise an error is thrown.

chapterIds [UUID!]!
suggestionsByChapterIds [Suggestion!]!
Generates user specific suggestions for multiple chapters.

Only content that the user can access will be considered.
The contents will be ranked by suggested date, with the most overdue or most urgent content first.

🔒 The user must have access to the courses containing the chapters with the given ids, otherwise an error is thrown.
chapterIds [UUID!]!

The ids of the chapters for which suggestions should be generated.

amount Int!

The amount of suggestions to generate in total.

skillTypes [SkillType!]!

Only suggestions for these skill types will be generated. If no skill types are given, suggestions for all skill types will be generated, also containing suggestions for media content (which do not have a skill type).

findQuizzesByAssessmentIds [Quiz]!

Get quiz by assessment ID. If any of the assessment IDs are not found, the corresponding quiz will be null. 🔒 The user must be enrolled in the course the quizzes belong to to access them. Otherwise null is returned for an quiz if the user has no access to it.

assessmentIds [UUID!]!

Mutation

Field Argument Type Description
recalculateScores ⚠️ RewardScores!
ONLY FOR TESTING PURPOSES. DO NOT USE IN FRONTEND. WILL BE REMOVED.

Triggers the recalculation of the reward score of the user.
This is done automatically at some time in the night.

The purpose of this mutation is to allow testing of the reward score and demonstrate the functionality.
🔒 The user be an admin in the course with the given courseId to perform this action.

⚠️ DEPRECATED

Only for testing purposes. Will be removed.

courseId UUID!
userId UUID!
recalculateLevels ⚠️ SkillLevels!

ONLY FOR TESTING PURPOSES. DO NOT USE IN FRONTEND. WILL BE REMOVED.

Triggers the recalculation of the skill level of the user. This is done automatically at some time in the night.

The purpose of this mutation is to allow testing of the skill level score and demonstrate the functionality. 🔒 The user must be a super-user, otherwise an exception is thrown.

⚠️ DEPRECATED

Only for testing purposes. Will be removed.

chapterId UUID!
userId UUID!
createCourse Course!

Creates a new course with the given input and returns the created course.

input CreateCourseInput!
createChapter Chapter!

Creates a new chapter with the given input and returns the created chapter. The course id must be a course id of an existing course. 🔒 The user must be an admin in this course to perform this action.

input CreateChapterInput!
updateCourse Course!

Updates an existing course with the given input and returns the updated course. The course id must be a course id of an existing course. 🔒 The user must be an admin in this course to perform this action.

input UpdateCourseInput!
updateChapter Chapter!

Updates an existing chapter with the given input and returns the updated chapter. The chapter id must be a chapter id of an existing chapter. 🔒 The user must be an admin in this course to perform this action.

input UpdateChapterInput!
deleteCourse UUID!

Deletes an existing course, throws an error if no course with the given id exists. 🔒 The user must be an admin in this course to perform this action.

id UUID!
deleteChapter UUID!

Deletes an existing chapter, throws an error if no chapter with the given id exists. 🔒 The user must be an admin in this course to perform this action.

id UUID!
joinCourse CourseMembership!

Lets the current user join a course as a student.

courseId UUID!
leaveCourse CourseMembership!

Lets the current user leave a course. Returns the membership that was deleted.

courseId UUID!
createMembership CourseMembership!

Adds the specified user to the specified course with the specified role. 🔒 The calling user must be an admin in this course to perform this action.

input CourseMembershipInput!
updateMembership CourseMembership!

Updates a user's membership in a course with the given input. 🔒 The calling user must be an admin in this course to perform this action.

input CourseMembershipInput!
deleteMembership CourseMembership!

Removes the specified user's access to the specified course. 🔒 The calling user must be an admin in this course to perform this action.

input CourseMembershipInput!
deleteFlashcardSet ⚠️ UUID!

Deletes a flashcard set. Throws an error if the flashcard set does not exist. The contained flashcards are deleted as well.

⚠️ DEPRECATED

Only for development, will be removed in production. Use deleteAssessment in contents service instead.

input UUID!
mutateFlashcardSet FlashcardSetMutation!

Modify a flashcard set. 🔒 The user must be an admin the course the flashcard set is in to perform this action.

assessmentId UUID!
logFlashcardLearned FlashcardLearnedFeedback!

Logs that a user has learned a flashcard. 🔒 The user must be enrolled in the course the flashcard set is in to perform this action.

input LogFlashcardLearnedInput!
createMediaRecord MediaRecord!

Creates a new media record 🔒 The user must have the "course-creator" role to perform this action. 🔒 If the mediaRecord is associated with courses the user must be an administrator of all courses or a super-user.

input CreateMediaRecordInput!
updateMediaRecord MediaRecord!

Updates an existing media record with the given UUID 🔒 If the mediaRecord is associated with courses the user must be an administrator of at least one of the courses.

input UpdateMediaRecordInput!
deleteMediaRecord UUID!

Deletes the media record with the given UUID 🔒 If the mediaRecord is associated with courses the user must be an administrator of at least one of the courses.

id UUID!
setLinkedMediaRecordsForContent [MediaRecord!]!

For a given MediaContent, sets the linked media records of it to the ones with the given UUIDs. This means that for the content, all already linked media records are removed and replaced by the given ones. 🔒 If the mediaRecord is associated with courses the user must be an administrator of at least one of the courses.

contentId UUID!
mediaRecordIds [UUID!]!
logMediaRecordWorkedOn MediaRecord!
Logs that a media has been worked on by the current user.
See https://gits-enpro.readthedocs.io/en/latest/dev-manuals/gamification/userProgress.html

Possible side effects:
When all media records of a content have been worked on by a user,
a user-progress event is emitted for the content.
🔒 If the mediaRecord is associated with courses the user must be a member of at least one of the courses.
mediaRecordId UUID!
setMediaRecordsForCourse [MediaRecord!]!

Add the MediaRecords with the given UUIDS to the Course with the given UUID. 🔒 If the mediaRecord is associated with courses the user must be an administrator of at least one of the courses.

courseId UUID!
mediaRecordIds [UUID!]!
mutateContent ContentMutation!

Modify Content 🔒 The user must have admin access to the course containing the section to perform this action.

contentId UUID!
mutateSection SectionMutation!

Modify the section with the given id. 🔒 The user must have admin access to the course containing the section to perform this action.

sectionId UUID!
mutateQuiz QuizMutation!

Modify a quiz. 🔒 The user must be an admin the course the quiz is in to perform this action.

assessmentId UUID!
deleteQuiz ⚠️ UUID!

Delete a quiz.

⚠️ DEPRECATED

Only use if you specifically only want to delete the quiz and not the whole assessment. Otherwise, use deleteAssessment in contents service instead.

assessmentId UUID!
logQuizCompleted QuizCompletionFeedback!

Log that a multiple choice quiz is completed. 🔒 The user must be enrolled in the course the quiz is in to perform this action.

input QuizCompletedInput!
createMediaContentAndLinkRecords MediaContent!

Creates a new media content and links the given media records to it.

contentInput CreateMediaContentInput!
mediaRecordIds [UUID!]!
createQuizAssessment QuizAssessment!

Creates a new quiz assessment and a new, linked quiz with the given properties.

assessmentInput CreateAssessmentInput!
quizInput CreateQuizInput!
createFlashcardSetAssessment FlashcardSetAssessment

Creates a new flashcard set assessment and a new, linked flashcard set with the given properties.

assessmentInput CreateAssessmentInput!
flashcardSetInput CreateFlashcardSetInput!
createSection Section!

Creates a new section in a chapter.

input CreateSectionInput!

Objects

AssessmentMetadata

Field Argument Type Description
skillPoints Int!

Number of skill points a student receives for completing this content

skillTypes [SkillType!]!

Type of the assessment

initialLearningInterval Int

The initial learning interval for the assessment in days. This is the interval that is applied after the assessment is completed the first time. Following intervals are calculated based on the previous interval and the user's performance. If this is null, the assessment will never be scheduled for review, which is useful for assessments that are not meant to be repeated.

AssociationQuestion

Association question, i.e., a question where the user has to assign the correct right side to each left side.

Field Argument Type Description
text JSON!

Text to display above the association question, in SlateJS JSON format.

correctAssociations [SingleAssociation!]!

List of correct associations.

leftSide [String!]!

Computed list of all the left sides of the associations, shuffled.

rightSide [String!]!

Computed list of all the right sides of the associations, shuffled.

id UUID!

Unique identifier of the question.

number Int!

Number of the question, i.e., the position of the question in the list of questions. Only relevant if questionPoolingMode is ORDERED.

type QuestionType!

Type of the question.

hint JSON

Optional hint for the question, in SlateJS JSON format.

Chapter

A chapter is a part of a course.

Field Argument Type Description
id UUID!

UUID of the chapter, generated automatically

title String!

Title of the chapter, maximum length is 255 characters.

description String!

Description of the chapter, maximum length is 3000 characters.

number Int!

Number of the chapter, determines the order of the chapters.

startDate DateTime!

Start date of the chapter, ISO 8601 format.

endDate DateTime!

End date of the chapter, ISO 8601 format.

suggestedStartDate DateTime

Suggested Start date to start the chapter, ISO 8601 format. Must be after Start Date and before the End dates.

suggestedEndDate DateTime

Suggested End date of the chapter, ISO 8601 format. Must be after the Start Dates and before the End dates.

course Course!

The course the chapter belongs to.

contents [Content!]!

Contents of this chapter.

contentsWithNoSection [Content!]!

Contents of this chapter which are not in any section.

sections [Section!]!

Sections of this chapter.

skillLevels SkillLevels!

The skill levels of the current user in this chapter.

achievableSkillTypes [SkillType]!

The skill types which are achievable in this chapter. A skill type is achievable if there is at least one assessment in this chapter with this skill type.

userProgress CompositeProgressInformation!

The progress of the current user in this chapter.

ChapterPayload

Return type of the chapters query, contains a list of chapters and pagination info.

Field Argument Type Description
elements [Chapter!]!
pagination PaginationInfo!

ClozeBlankElement

Field Argument Type Description
correctAnswer String!

The correct answer for the blank.

feedback JSON

Feedback for the blank when the user selects a wrong answer, in SlateJS JSON format.

ClozeQuestion

Field Argument Type Description
clozeElements [ClozeElement!]!

The elements of the cloze question.

additionalWrongAnswers [String!]!

Addtional wrong answers for the blanks.

allBlanks [String!]!

All selectable answers for the blanks (computed). This contains the correct answers as well as wrong answers.

showBlanksList Boolean!

Whether the blanks must be answered in free text or by selecting the correct answer from a list.

id UUID!

Unique identifier of the question.

number Int!

Number of the question, i.e., the position of the question in the list of questions. Only relevant if questionPoolingMode is ORDERED.

type QuestionType!

Type of the question.

hint JSON

Optional hint for the question, in SlateJS JSON format.

ClozeTextElement

Field Argument Type Description
text JSON!

Text of the element, in SlateJS JSON format.

CompositeProgressInformation

Field Argument Type Description
progress Float!

percentage of completedContents/totalContents

completedContents Int!

absolut number of completed content

totalContents Int!

absolut number of total content

ContentMetadata

Field Argument Type Description
name String!

Name of the content

type ContentType!

Content type

suggestedDate DateTime!

Suggested date when the content should be done

rewardPoints Int!

Number of reward points a student receives for completing this content

chapterId UUID!

ID of the chapter this content is associated with

courseId UUID!

ID of the course this content is associated with

tagNames [String!]!

TagNames this content is tagged with

ContentMutation

Field Argument Type Description
contentId UUID!

Identifier of Content

updateMediaContent MediaContent!

Update an existing Content

input UpdateMediaContentInput!
updateAssessment Assessment!

Update an existing Assessment

input UpdateAssessmentInput!
deleteContent UUID!

Delete an existing Content, throws an error if no Content with the given id exists

addTagToContent Content!

Add a tag to an existing content

tagName String
removeTagFromContent Content!

Remove a tag from an existing content

tagName String

ContentPayload

Field Argument Type Description
elements [Content!]!

the contents

pageInfo PaginationInfo!

pagination info

Course

Courses are the main entity of the application. They are the top level of the hierarchy and contain chapters.

Field Argument Type Description
id UUID!

UUID of the course. Generated automatically when creating a new course.

title String!

Title of the course. Maximal length is 255 characters, must not be blank.

description String!

Detailed description of the course. Maximal length is 3000 characters.

startDate DateTime!

Start date of the course, ISO 8601 format. Users can only access the course and work on course content after the start date. Must be before the end date.

endDate DateTime!

End date of the course, ISO 8601 format. Users can no longer access the course and work on course content after the end date. Must be after the start date.

published Boolean!

Published state of the course. If the course is published, it is visible to users.

startYear Int

The year in which the term starts.

yearDivision YearDivision

The division of the academic calendar in which the term takes place.

chapters ChapterPayload!

Chapters of the course. Can be filtered and sorted. 🔒 User needs to be enrolled in the course to access this field.

filter ChapterFilter
sortBy [String!]!

The fields to sort by. The default sort order is by chapter number. Throws an error if no field with the given name exists.

sortDirection [SortDirection!]!

The sort direction for each field. If not specified, defaults to ASC.

pagination Pagination
memberships [CourseMembership!]!

Course Memberships of this course. Contains information about which users are members of the course and what role they have in it. 🔒 User needs to be at least an admin of the course to access this field.

rewardScores RewardScores!

The reward scores of this course for the currently logged in user.

scoreboard [ScoreboardItem!]!

The scoreboard containing the power scores of the members of this course.

mediaRecords [MediaRecord!]!

The media records which are linked to this course.

suggestions [Suggestion!]!

Suggests content of the course which the current user should learn next (both new content and content to repeat).

amount Int!

The amount of suggestions to generate in total.

skillTypes [SkillType!]!

Only suggestions for these skill types will be generated. If no skill types are given, suggestions for all skill types will be generated, also containing suggestions for media content (which do not have a skill type).

userProgress CompositeProgressInformation!

The progress of the current user in this course.

CourseMembership

Represents a course membership object of a user. Each user can be a member of set of courses and some users can also own courses

Field Argument Type Description
userId UUID!

Id of the user.

courseId UUID!

Id of the course the user is a member of.

role UserRoleInCourse!

The role of the user in the course.

course Course!

Course of the Course Membership

user PublicUserInfo

The user of this course membership.

CoursePayload

Return type for the course query. Contains the course and the pagination info.

Field Argument Type Description
elements [Course!]!
pagination PaginationInfo!

ExactAnswerQuestion

A question with a clear, correct answer that can be automatically checked. Differs from self-assessment questions in that the user has to enter one of the correct answers and the answer is checked automatically.

Field Argument Type Description
text JSON!

Text of the question, in SlateJS JSON format.

correctAnswers [String!]!

A list of possible correct answers. The user has to enter one of these answers.

caseSensitive Boolean!

If the answer is case sensitive. If true, the answer is checked case sensitive.

feedback JSON

Feedback for the question when the user enters a wrong answer, in SlateJS JSON format.

id UUID!

Unique identifier of the question.

number Int!

Number of the question, i.e., the position of the question in the list of questions. Only relevant if questionPoolingMode is ORDERED.

type QuestionType!

Type of the question.

hint JSON

Optional hint for the question, in SlateJS JSON format.

Flashcard

A flashcard is a set of two or more sides. Each side has a label and a text. The label is used to specify which side of the flashcard is being shown to the user first for learning and which sides he has to guess.

Field Argument Type Description
id UUID!

Unique identifier of this flashcard.

sides [FlashcardSide!]!

List of sides of this flashcard.

userProgressData FlashcardProgressData!

Progress data of the flashcard, specific to given users. If userId is not provided, the progress data of the current user is returned.

FlashcardLearnedFeedback

Feedback for the logFlashcardLearned mutation.

Field Argument Type Description
success Boolean!

Whether the flashcard was learned correctly.

nextLearnDate DateTime!

Next date when the flashcard should be learned again.

flashcardSetProgress FlashcardSetProgress!

Progress of the whole flashcard set.

FlashcardProgressData

Field Argument Type Description
lastLearned DateTime

The date the user learned the flashcard. This is null it the user has not learned the content item once.

learningInterval Int

The learning interval in days for the content item.

nextLearn DateTime

The next time the content should be learned. Calculated using the date the user completed the content item and the learning interval. This is null if the user has not completed the content item once.

FlashcardProgressDataLog

Field Argument Type Description
id UUID

The id of the Log

learnedAt DateTime!

The date the user learned the flashcard.

success Boolean!

Whether the user knew the flashcard or not.

FlashcardSet

A set of flashcards. A flashcard set belongs to exactly one assessment. Therefore, the uuid of the assessment also serves as the identifier of a flashcard set.

Field Argument Type Description
assessmentId UUID!

The uuid of the assessment this flashcard set belongs to. This also serves as the identifier of this flashcard set.

courseId UUID!

Id of the course this flashcard set belongs to.

flashcards [Flashcard!]!

List of flashcards in this set.

content Content

The content this FlashcardSet belongs to.

FlashcardSetAssessment

A set of flashcards, flashcard related fields are stored in the flashcard service.

Field Argument Type Description
assessmentMetadata AssessmentMetadata!

Assessment metadata

id UUID!

ID of the content

metadata ContentMetadata!

Metadata of the content

userProgressData UserProgressData!

Progress data of the content for the current user.

progressDataForUser UserProgressData!

Progress data of the specified user.

userId UUID!
flashcardSet FlashcardSet

The FlashcardSet of the assessment.

FlashcardSetMutation

Field Argument Type Description
assessmentId UUID!

ID of the flashcard set that is being modified.

createFlashcard Flashcard!

Creates a new flashcard. Throws an error if the flashcard set does not exist.

input CreateFlashcardInput!
updateFlashcard Flashcard!

Updates a flashcard. Throws an error if the flashcard does not exist.

input UpdateFlashcardInput!
deleteFlashcard UUID!

Deletes the flashcard with the specified ID. Throws an error if the flashcard does not exist.

id UUID!

FlashcardSetProgress

Field Argument Type Description
percentageLearned Float!

Percentage of how many flashcards in the set have been learned.

correctness Float!

Percentage of how many flashcards have been learned correctly of the ones that have been learned.

FlashcardSide

Field Argument Type Description
text JSON!

Text of this flashcard side as rich text in SlateJS json.

label String!

Label of this flashcard side. E.g. "Front" or "Back", or "Question" or "Answer".

isQuestion Boolean!

Whether this side is a question, i.e. should be shown to the user to guess the other sides or not.

isAnswer Boolean!

Whether this side is also an answer. Some Flashcards can have their sides be used as both questions or answers for the other sides

MediaContent

Field Argument Type Description
id UUID!

ID of the content

metadata ContentMetadata!

Metadata of the content

userProgressData UserProgressData!

Progress data of the content for the current user.

progressDataForUser UserProgressData!

Progress data of the specified user.

userId UUID!
mediaRecords [MediaRecord!]!

The media records linked to this media content.

MediaRecord

schema file of the microservice defines data types, queries and mutations this can be done in a separate files as long as they are in this folder and end with .graphqls

Field Argument Type Description
id UUID!

ID of the media record

courseIds [UUID!]!

Ids of the courses this MediaRecord is associated with

name String!

Name of the media record

creatorId UUID!

User ID of the creator of the media record.

type MediaType!

Type of the media record

contentIds [UUID!]!

IDs of the MediaContents this media record is associated with

uploadUrl String!

Temporary upload url for the media record

downloadUrl String!

Temporary download url for the media record

userProgressData MediaRecordProgressData!

The progress data of the given user for this medium.

MediaRecordProgressData

Field Argument Type Description
workedOn Boolean!

Whether the medium has been worked on by the user.

dateWorkedOn DateTime

Date on which the medium was worked on by the user. This is null if the medium has not been worked on by the user.

MultipleChoiceAnswer

Field Argument Type Description
answerText JSON!

Text of the answer, in SlateJS JSON format.

correct Boolean!

Whether the answer is correct or not.

feedback JSON

Feedback for when the user selects this answer, in SlateJS JSON format.

MultipleChoiceQuestion

Multiple choice question, i.e., a question with multiple answers of which the user has to select the correct ones.

Field Argument Type Description
text JSON!

Text of the question, in SlateJS JSON format.

answers [MultipleChoiceAnswer!]!

List of answers.

numberOfCorrectAnswers Int!

How many answers the user has to select. This is computed from the list of answers.

id UUID!

Unique identifier of the question.

number Int!

Number of the question, i.e., the position of the question in the list of questions. Only relevant if questionPoolingMode is ORDERED.

type QuestionType!

Type of the question.

hint JSON

Optional hint for the question, in SlateJS JSON format.

NumericQuestion

Field Argument Type Description
text JSON!

Text of the question, in SlateJS JSON format.

correctAnswer Float!

The correct answer to the question.

tolerance Float!

The tolerance for the correct answer. The user's answer is correct if it is within the tolerance of the correct answer.

feedback JSON

Feedback for the question when the user enters a wrong answer, in SlateJS JSON format.

id UUID!

Unique identifier of the question.

number Int!

Number of the question, i.e., the position of the question in the list of questions. Only relevant if questionPoolingMode is ORDERED.

type QuestionType!

Type of the question.

hint JSON

Optional hint for the question, in SlateJS JSON format.

PaginationInfo

Return type for information about paginated results.

Field Argument Type Description
page Int!

The current page number.

size Int!

The number of elements per page.

totalElements Int!

The total number of elements across all pages.

totalPages Int!

The total number of pages.

hasNext Boolean!

Whether there is a next page.

ProgressLogItem

Field Argument Type Description
timestamp DateTime!

The date the user completed the content item.

success Boolean!

Whether the user completed the content item successfully.

correctness Float!

Value between 0 and 1 representing the user's correctness on the content item. Can be null as some contents cannot provide a meaningful correctness value.

hintsUsed Int!

How many hints the user used to complete the content item.

timeToComplete Int

Time in milliseconds it took the user to complete the content item. Can be null for contents that do not measure completion time.

PublicUserInfo

Field Argument Type Description
id UUID!
userName String!

Quiz

A quiz is a set of questions that the user has to answer correctly to pass the quiz. Questions can be of different types, e.g., multiple choice, clozes, or open questions.

Field Argument Type Description
assessmentId UUID!

Identifier of the quiz, same as the identifier of the assessment.

questionPool [Question!]!

List of questions.

requiredCorrectAnswers Int!

Threshold of the quiz, i.e., how many questions the user has to answer correctly to pass the quiz. If this number is greater than the number of questions, the behavior is the same as if it was equal to the number of questions.

questionPoolingMode QuestionPoolingMode!

Question pooling mode of the quiz.

numberOfRandomlySelectedQuestions Int
Number of questions that are randomly selected from the list of questions.
Will only be considered if questionPoolingMode is RANDOM.

If this is greater than the number of questions, the behavior is the same
as if it was equal to the number of questions.

If this is null or not set, the behavior is the same as if it was equal to the number of questions.
selectedQuestions [Question!]!

The selected questions of the question pool. This is identical to the list of questions if questionPoolingMode is ORDERED. This will be different each time it is queried if questionPoolingMode is RANDOM.

courseId UUID!

Id of the course this quiz belongs to.

content Content

The content this quiz belongs to.

QuizAssessment

A quiz, quiz related fields are stored in the quiz service.

Field Argument Type Description
assessmentMetadata AssessmentMetadata!

Assessment metadata

id UUID!

ID of the content

metadata ContentMetadata!

Metadata of the content

userProgressData UserProgressData!

Progress data of the content for the current user.

progressDataForUser UserProgressData!

Progress data of the specified user.

userId UUID!
quiz Quiz

The quiz of the assessment. If this is null the system is in an inconsistent state and the assessment should be deleted.

QuizCompletionFeedback

Feedback data when logQuizCompletion is called.

Field Argument Type Description
success Boolean!

Whether the quiz was passed or not.

correctness Float!

The number of questions that were answered correctly.

hintsUsed Int!

The number of hints that were used.

QuizMutation

Field Argument Type Description
assessmentId UUID!

Id of the quiz to modify.

addMultipleChoiceQuestion Quiz!

Add a multiple choice question to the quiz questions, at the end of the list.

input CreateMultipleChoiceQuestionInput!
updateMultipleChoiceQuestion Quiz!

Update a multiple choice question in the quiz questions.

input UpdateMultipleChoiceQuestionInput!
addClozeQuestion Quiz!

Add a cloze question to the quiz questions, at the end of the list.

input CreateClozeQuestionInput!
updateClozeQuestion Quiz!

Update a cloze question in the quiz questions.

input UpdateClozeQuestionInput!
addAssociationQuestion Quiz!

Add an association question to the quiz questions, at the end of the list.

input CreateAssociationQuestionInput!
updateAssociationQuestion Quiz!

Update an association question in the quiz questions.

input UpdateAssociationQuestionInput!
addExactAnswerQuestion Quiz!

Add an free text question with exact answer to the quiz questions, at the end of the list.

input CreateExactAnswerQuestionInput!
updateExactAnswerQuestion Quiz!

Update an free text question with exact answer in the quiz questions.

input UpdateExactAnswerQuestionInput!
addNumericQuestion Quiz!

Add a numeric question to the quiz questions, at the end of the list.

input CreateNumericQuestionInput!
updateNumericQuestion Quiz!

Update a numeric question in the quiz questions.

input UpdateNumericQuestionInput!
addSelfAssessmentQuestion Quiz!

Add a self assessment question to the quiz questions, at the end of the list.

input CreateSelfAssessmentQuestionInput!
updateSelfAssessmentQuestion Quiz!

Update a self assessment question in the quiz questions.

input UpdateSelfAssessmentQuestionInput!
removeQuestion Quiz!

Removes the question with the given number from the quiz. This will also update the numbers of the following questions.

number Int!
switchQuestions Quiz!

Switch the position of two questions with the given numbers.

firstNumber Int!
secondNumber Int!
setRequiredCorrectAnswers Quiz!

Set the threshold of the quiz, i.e., how many questions the user has to answer correctly to pass the quiz.

requiredCorrectAnswers Int!
setQuestionPoolingMode Quiz!

Set the question pooling mode of the quiz.

questionPoolingMode QuestionPoolingMode!
setNumberOfRandomlySelectedQuestions Quiz!

Set the number of questions that are randomly selected from the list of questions. Will only be considered if questionPoolingMode is RANDOM.

numberOfRandomlySelectedQuestions Int!

RewardLogItem

An item in the reward score log.

Field Argument Type Description
date DateTime!

The date when the reward score changed.

difference Int!

The difference between the previous and the new reward score.

oldValue Int!

The old reward score.

newValue Int!

The new reward score.

reason RewardChangeReason!

The reason why the reward score has changed.

associatedContentIds [UUID!]!

The ids of the contents that are associated with the change.

associatedContents [Content]!

RewardScore

The reward score of a user.

Field Argument Type Description
value Int!

The absolute value of the reward score. Health and fitness are between 0 and 100. Growth, strength and power can be any non-negative integer.

percentage Float!

The relative value of the reward score. Shows how many points relative to the total points have been achieved. Only used for growth currently.

log [RewardLogItem!]!

A log of the changes to the reward score, ordered by date descending.

RewardScores

The five reward scores of a user.

Field Argument Type Description
health RewardScore!

Health represents how up-to-date the user is with the course.

fitness RewardScore!

Fitness represents how well the user repeats previously learned content.

growth RewardScore!

Growth represents the overall progress of the user.

strength RewardScore!

Strength is earned by competing with other users.

power RewardScore!

A composite score of all the other scores.

ScoreboardItem

An item in the scoreboard.

Field Argument Type Description
userId UUID!

The user id of the user.

powerScore Int!

The power score of the user.

user PublicUserInfo

Section

Representation of a Section

Field Argument Type Description
id UUID!

Unique identifier of the Section Object

courseId UUID!

Id of the Course the Section is located in.

name String!

Name of the Section

chapterId UUID!

Chapter the Section is located in

stages [Stage!]!

List of Stages contained in a Section

chapter Chapter!

SectionMutation

Field Argument Type Description
sectionId UUID!

Identifier of the section

updateSectionName Section!

update the name of a Section

name String!
deleteSection UUID!

delete a Section by ID

createStage Stage!

create new Stage in Section

input CreateStageInput
updateStage Stage!

Update Content of Stage

input UpdateStageInput
deleteStage UUID!

delete Stage by ID

id UUID!
updateStageOrder Section!

update Order of Stages within a Section

stages [UUID!]!

SelfAssessmentQuestion

A single question with a free text answer field, where the answer is not automatically checked. The user has to enter a solution and self-assess whether it is correct or not. This is useful for questions where the answer is not clear-cut, e.g. when the user should explain a concept.

Field Argument Type Description
text JSON!

Text of the question, in SlateJS JSON format.

solutionSuggestion JSON!

A possible correct answer to the question.

id UUID!

Unique identifier of the question.

number Int!

Number of the question, i.e., the position of the question in the list of questions. Only relevant if questionPoolingMode is ORDERED.

type QuestionType!

Type of the question.

hint JSON

Optional hint for the question, in SlateJS JSON format.

SingleAssociation

Field Argument Type Description
left JSON!

The left side of the association, in SlateJS JSON format.

right JSON!

The right side of the association, in SlateJS JSON format.

feedback JSON

Feedback for the association when the user assigns a wrong answer, in SlateJS JSON format.

SkillLevel

The skill level of a user.

Field Argument Type Description
value Float!

The value of the skill level. levels are between 0 and 100.

log [SkillLevelLogItem!]!

A log of the changes to the skill level

SkillLevelLogItem

An item in the skill level change log.

Field Argument Type Description
date DateTime!

The date when the skill level changed.

difference Float!

The difference between the previous and the new skill level.

oldValue Float!

The old skill level.

newValue Float!

The new skill level.

associatedContentIds [UUID!]!

The ids of the contents that are associated with the change.

associatedContents [Content]!

SkillLevels

The four skill level of a user.

Field Argument Type Description
remember SkillLevel!

remember represents how much user remember the concept

understand SkillLevel!

understand represents how well the user understands learned content.

apply SkillLevel!

apply represents the how well user applies the learned concept during assessment.

analyze SkillLevel!

apply is how much user can evaluate information and draw conclusions

Stage

Representation of a Stage

Field Argument Type Description
id UUID!

Unique identifier of the Stage Object

position Int!

Position of the Stage within the Section

requiredContents [Content!]!

List of Content that is labeled as required content

requiredContentsProgress Float!

Percentage of User Progress made to required Content

optionalContents [Content!]!

List of Content that is labeled as optional content

optionalContentsProgress Float!

Percentage of Progress made to optional Content

Suggestion

Represents a suggestion for a user to learn new content or review old content.

Field Argument Type Description
content Content!

The content that is suggested to the user.

type SuggestionType!

The type of suggestion.

UserInfo

Field Argument Type Description
id UUID!
userName String!
firstName String!
lastName String!
realmRoles [GlobalUserRole!]!
courseMemberships [CourseMembership!]!

The course memberships of the user.

availableCourseMemberships [CourseMembership!]!
unavailableCourseMemberships [CourseMembership!]!
mediaRecords [MediaRecord!]!

Media records of this user.

UserProgressData

Represents a user's progress on a content item. See https://gits-enpro.readthedocs.io/en/latest/dev-manuals/gamification/userProgress.html

Field Argument Type Description
userId UUID!

The user's id.

contentId UUID!

The id of the content item.

log [ProgressLogItem]!

A list of entries each representing the user completing the content item. Sorted by date in descending order.

learningInterval Int

The learning interval in days for the content item. If null, the content item is not scheduled for learning.

nextLearnDate DateTime

The next time the content should be learned. Calculated using the date the user completed the content item and the learning interval. This is null if the user has not completed the content item once.

lastLearnDate DateTime

The last time the content was learned successfully. This is null if the user has not completed the content item once.

isLearned Boolean!

True if the user has completed the content item at least once successfully.

isDueForReview Boolean!

True if the assessment is due for review.

Inputs

AssessmentMetadataInput

Field Type Description
skillPoints Int!

Number of skill points a student receives for completing this content

skillTypes [SkillType!]!

Type of the assessment

initialLearningInterval Int

The initial learning interval for the assessment in days. This is the interval that is applied after the assessment is completed the first time. Following intervals are calculated based on the previous interval and the user's performance. If this is null, the assessment will never be scheduled for review, which is useful for assessments that are not meant to be repeated.

AssociationInput

Field Type Description
left String!

Text of the left side of the association, in SlateJS JSON format.

right String!

Text of the right side of the association, in SlateJS JSON format.

feedback JSON

Feedback for the association when the user selects a wrong answer, in SlateJS JSON format.

ChapterFilter

Field Type Description
title StringFilter
description StringFilter
number IntFilter
startDate DateTimeFilter
endDate DateTimeFilter
suggestedStartDate DateTimeFilter
suggestedEndDate DateTimeFilter
and [ChapterFilter!]
or [ChapterFilter!]
not ChapterFilter

ClozeElementInput

Field Type Description
type ClozeElementType!

Type of the element.

text JSON

Text of the element. Only used for TEXT type.

correctAnswer String

The correct answer for the blank. Only used for BLANK type.

feedback JSON

Feedback for the blank when the user selects a wrong answer, in SlateJS JSON format. Only used for BLANK type.

CourseFilter

Input type for filtering courses. All fields are optional. If multiple filters are specified, they are combined with AND (except for the or field).

Field Type Description
title StringFilter
description StringFilter
startDate DateTimeFilter
endDate DateTimeFilter
published Boolean
and [CourseFilter!]
or [CourseFilter!]
not CourseFilter

CourseMembershipInput

Represents a course membership input object of a user.

Field Type Description
userId UUID!

Id of the user.

courseId UUID!

Id of the course the user is a member of.

role UserRoleInCourse!

The role of the user in the course.

CreateAssessmentInput

Field Type Description
metadata CreateContentMetadataInput!

Metadata for the new Content

assessmentMetadata AssessmentMetadataInput!

Assessment metadata

CreateAssociationQuestionInput

Field Type Description
number Int

Number of the question, used for ordering. This can be omitted, in which case a number, one higher than the highest number of the existing questions, will be used.

text JSON!

Text of the question, in SlateJS JSON format.

correctAssociations [AssociationInput!]!

List of associations.

hint JSON

Optional hint for the question, in SlateJS JSON format.

CreateChapterInput

Input type for creating chapters.

Field Type Description
title String!

Title of the chapter, maximum length is 255 characters, must not be blank.

description String!

Description of the chapter, maximum length is 3000 characters.

number Int!

Number of the chapter, determines the order of the chapters, must be positive.

startDate DateTime!

Start date of the chapter, ISO 8601 format. Must be before the end date.

endDate DateTime!

End date of the chapter, ISO 8601 format. Must be after the start date.

suggestedStartDate DateTime

Suggested Start date to start the chapter, ISO 8601 format. Must be after Start Date and before the End dates.

suggestedEndDate DateTime

Suggested End date of the chapter, ISO 8601 format. Must be after the Start Dates and before the End dates.

courseId UUID!

ID of the course the chapter belongs to. Must be a UUID of an existing course.

CreateClozeQuestionInput

Field Type Description
number Int

Number of the question, used for ordering. This can be omitted, in which case a number, one higher than the highest number of the existing questions, will be used.

clozeElements [ClozeElementInput!]!

List of cloze elements.

additionalWrongAnswers [String!]!

List of additional wrong answers.

showBlanksList Boolean!

If true, the list of possible answers will be shown to the user.

hint JSON

Optional hint for the question, in SlateJS JSON format.

CreateContentMetadataInput

Field Type Description
name String!

Name of the content

type ContentType!

Type of the content

suggestedDate DateTime!

Suggested date when the content should be done

rewardPoints Int!

Number of reward points a student receives for completing this content

chapterId UUID!

ID of the chapter this content is associated with

tagNames [String!]!

TagNames this content is tagged with

CreateCourseInput

Input type for creating a new course. See also on the course type for detailed field descriptions.

Field Type Description
title String!

Title of the course, max 255 characters, must not be blank.

description String!

Description of the course, max 3000 characters.

startDate DateTime!

Start date of the course, ISO 8601 format. Must be before the end date.

endDate DateTime!

End date of the course, ISO 8601 format. Must be after the start date.

published Boolean!

Published status of the course.

startYear Int

The year in which the term starts.

yearDivision YearDivision

The division of the academic calendar in which the term takes place.

CreateExactAnswerQuestionInput

Field Type Description
number Int

Number of the question, used for ordering. This can be omitted, in which case a number, one higher than the highest number of the existing questions, will be used.

text JSON!

Text of the question, in SlateJS JSON format.

caseSensitive Boolean!

If the answer is case sensitive. If true, the answer is checked case sensitive.

correctAnswers [String!]!

A list of possible correct answers.

feedback JSON

Feedback for the question when the user enters a wrong answer, in SlateJS JSON format.

hint JSON

Optional hint for the question, in SlateJS JSON format.

CreateFlashcardInput

Field Type Description
sides [FlashcardSideInput!]!

List of sides of this flashcard. Must be at least two sides.

CreateFlashcardSetInput

Field Type Description
flashcards [CreateFlashcardInput!]!

List of flashcards in this set.

CreateMediaContentInput

Input for creating new media content. Media specific fields are stored in the Media Service.

Field Type Description
metadata CreateContentMetadataInput!

Metadata for the new Content

CreateMediaRecordInput

Field Type Description
name String!

Name of the media record. Cannot be blank, maximum length 255 characters.

type MediaType!

Type of the media record.

contentIds [UUID!]!

IDs of the MediaContents this media record is associated with

CreateMultipleChoiceQuestionInput

Field Type Description
number Int

Number of the question, used for ordering. This can be omitted, in which case a number, one higher than the highest number of the existing questions, will be used.

text JSON!

Text of the question, in SlateJS JSON format.

answers [MultipleChoiceAnswerInput!]!

List of answers.

hint JSON

Optional hint for the question, in SlateJS JSON format.

CreateNumericQuestionInput

Field Type Description
number Int

Number of the question, used for ordering. This can be omitted, in which case a number, one higher than the highest number of the existing questions, will be used.

text JSON!

Text of the question, in SlateJS JSON format.

correctAnswer Float!

The correct answer for the question.

tolerance Float!

The allowed deviation from the correct answer.

feedback JSON

Feedback for the question when the user enters a wrong answer, in SlateJS JSON format.

hint JSON

Optional hint for the question, in SlateJS JSON format.

CreateQuizInput

Field Type Description
requiredCorrectAnswers Int!
Threshold of the quiz, i.e., how many questions the user has to answer correctly to pass the quiz.

If this is greater than the number of questions, the behavior is the same
as if it was equal to the number of questions.
questionPoolingMode QuestionPoolingMode!

Question pooling mode of the quiz.

numberOfRandomlySelectedQuestions Int
Number of questions that are randomly selected from the list of questions.
Should only be set if questionPoolingMode is RANDOM.

If this is greater than the number of questions, the behavior is the same
as if it was equal to the number of questions.

If this is null or not set, the behavior is the same as if it was equal to the number of questions.

CreateSectionInput

Field Type Description
chapterId UUID!

Chapter Section will belong to

name String!

name given to Section

CreateSelfAssessmentQuestionInput

Field Type Description
number Int

Number of the question, used for ordering. This can be omitted, in which case a number, one higher than the highest number of the existing questions, will be used.

text JSON!

Text of the question, in SlateJS JSON format.

solutionSuggestion JSON!

A possible correct answer to the question.

hint JSON

Optional hint for the question, in SlateJS JSON format.

CreateStageInput

Field Type Description
requiredContents [UUID!]!

updated List of UUIDs for content labeled as required in this Stage

optionalContents [UUID!]!

updated List of UUIDs for content labeled as optional in this Stage

DateTimeFilter

Filter for date values. If multiple filters are specified, they are combined with AND.

Field Type Description
after DateTime

If specified, filters for dates after the specified value.

before DateTime

If specified, filters for dates before the specified value.

FlashcardSideInput

Field Type Description
text JSON!

Text of this flashcard side.

label String!

Label of this flashcard side. E.g. "Front" or "Back", or "Question" or "Answer".

isQuestion Boolean!

Whether this side is a question, i.e. should be shown to the user to guess the other sides or not.

isAnswer Boolean!

Whether this side is also an answer. Some Flashcards can have their sides be used as both questions or answers for the other sides

IntFilter

Filter for integer values. If multiple filters are specified, they are combined with AND.

Field Type Description
equals Int

An integer value to match exactly.

greaterThan Int

If specified, filters for values greater than to the specified value.

lessThan Int

If specified, filters for values less than to the specified value.

LogFlashcardLearnedInput

Field Type Description
flashcardId UUID!

The id of the flashcard that was learned.

successful Boolean!

If the user knew the flashcard or not.

LogFlashcardSetLearnedInput

Field Type Description
flashcardSetId UUID!

The id of the flashcard that was learned.

userId UUID!

The id of the user that learned the flashcard.

percentageSuccess Float!

The percentage of flashcards in the set that the user knew.

MultipleChoiceAnswerInput

Field Type Description
answerText JSON!

Text of the answer, in SlateJS JSON format.

correct Boolean!

Whether the answer is correct or not.

feedback JSON

Feedback for when the user selects this answer, in SlateJS JSON format.

Pagination

Specifies the page size and page number for paginated results.

Field Type Description
page Int!

The page number, starting at 0. If not specified, the default value is 0. For values greater than 0, the page size must be specified. If this value is larger than the number of pages, an empty page is returned.

size Int!

The number of elements per page.

QuestionCompletedInput

Field Type Description
questionId UUID!

ID of the question.

correct Boolean!

true when question was answered correctly

usedHint Boolean!

true when a hint was used for the question

QuizCompletedInput

Field Type Description
quizId UUID!

ID of the quiz.

completedQuestions [QuestionCompletedInput!]!

List of questions that were answered in the quiz.

StringFilter

Filter for string values. If multiple filters are specified, they are combined with AND.

Field Type Description
equals String

A string value to match exactly.

contains String

A string value that must be contained in the field that is being filtered.

ignoreCase Boolean!

If true, the filter is case-insensitive.

UpdateAssessmentInput

Field Type Description
metadata UpdateContentMetadataInput!

Metadata for the new Content

assessmentMetadata AssessmentMetadataInput!

Assessment metadata

UpdateAssociationQuestionInput

Field Type Description
id UUID!

UUID of the question to update.

text JSON!

Text of the question, in SlateJS JSON format.

correctAssociations [AssociationInput!]!

List of associations.

hint JSON

Optional hint for the question, in SlateJS JSON format.

UpdateChapterInput

Input type for updating chapters. The ID field specifies which chapter should be updated, all other fields specify the new values.

Field Type Description
id UUID!

UUID of the chapter that should be updated.

title String!

Title of the chapter, maximum length is 255 characters, must not be blank.

description String!

Description of the chapter, maximum length is 3000 characters.

number Int!

Number of the chapter, determines the order of the chapters, must be positive.

startDate DateTime!

Start date of the chapter, ISO 8601 format. Must be before the end date.

endDate DateTime!

End date of the chapter, ISO 8601 format. Must be after the start date.

suggestedStartDate DateTime

Suggested Start date to start the chapter, ISO 8601 format. Must be after Start Date and before the End dates.

suggestedEndDate DateTime

Suggested End date of the chapter, ISO 8601 format. Must be after the Start Dates and before the End dates.

UpdateClozeQuestionInput

Field Type Description
id UUID!

UUID of the question to update.

clozeElements [ClozeElementInput!]!

List of cloze elements.

additionalWrongAnswers [String!]!

List of additional wrong answers.

showBlanksList Boolean!

If true, the list of possible answers will be shown to the user.

hint JSON

Optional hint for the question, in SlateJS JSON format.

UpdateContentMetadataInput

Field Type Description
name String!

Name of the content

suggestedDate DateTime!

Date when the content should be done

rewardPoints Int!

Number of reward points a student receives for completing this content

chapterId UUID!

ID of the chapter this content is associated with

tagNames [String!]!

TagNames this content is tagged with

UpdateCourseInput

Input type for updating an existing course. See also on the course type for detailed field descriptions. The id specifies the course that should be updated, the other fields specify the new values.

Field Type Description
id UUID!

UUID of the course that should be updated. Must be an id of an existing course, otherwise an error is returned.

title String!

The new title of the course, max 255 characters, must not be blank.

description String!

The new description of the course, max 3000 characters.

startDate DateTime!

The new start date of the course, ISO 8601 format.

endDate DateTime!

The new end date of the course, ISO 8601 format.

published Boolean!

The new published status of the course.

startYear Int

The year in which the term starts.

yearDivision YearDivision

The division of the academic calendar in which the term takes place.

UpdateExactAnswerQuestionInput

Field Type Description
id UUID!

UUID of the question to update.

text JSON!

Text of the question, in SlateJS JSON format.

correctAnswers [String!]!

A list of possible correct answers.

caseSensitive Boolean!

If the answer is case sensitive. If true, the answer is checked case sensitive.

feedback JSON

Feedback for the question when the user enters a wrong answer, in SlateJS JSON format.

hint JSON

Optional hint for the question, in SlateJS JSON format.

UpdateFlashcardInput

Field Type Description
id UUID!

Id of the flashcard to update.

sides [FlashcardSideInput!]!

List of sides of this flashcard. Must be at least two sides.

UpdateMediaContentInput

Field Type Description
metadata UpdateContentMetadataInput!

Metadata for the new Content

UpdateMediaRecordInput

Field Type Description
id UUID!

ID of the media record which should be updated

name String!

New name of the media record. Cannot be blank, maximum length 255 characters.

type MediaType!

New type of the media record.

contentIds [UUID!]!

IDs of the MediaContents this media record is associated with

UpdateMultipleChoiceQuestionInput

Field Type Description
id UUID!

UUID of the question to update.

text JSON!

Text of the question, in SlateJS JSON format.

answers [MultipleChoiceAnswerInput!]!

List of answers.

hint JSON

Optional hint for the question, in SlateJS JSON format.

UpdateNumericQuestionInput

Field Type Description
id UUID!

UUID of the question to update.

text JSON!

Text of the question, in SlateJS JSON format.

correctAnswer Float!

The correct answer for the question.

tolerance Float!

The allowed deviation from the correct answer.

feedback JSON

Feedback for the question when the user enters a wrong answer, in SlateJS JSON format.

hint JSON

Optional hint for the question, in SlateJS JSON format.

UpdateSelfAssessmentQuestionInput

Field Type Description
id UUID!

UUID of the question to update.

text JSON!

Text of the question, in SlateJS JSON format.

solutionSuggestion JSON!

A possible correct answer to the question.

hint JSON

Optional hint for the question, in SlateJS JSON format.

UpdateStageInput

Field Type Description
id UUID!

Identifier of the Stage

requiredContents [UUID!]!

updated List of UUIDs for content labeled as required in this Stage

optionalContents [UUID!]!

updated List of UUIDs for content labeled as optional in this Stage

Enums

ClozeElementType

Value Description
TEXT
BLANK

ContentType

Type of the content

Value Description
MEDIA
FLASHCARDS
QUIZ

GlobalUserRole

Value Description
SUPER_USER
COURSE_CREATOR

MediaType

The type of the media record

Value Description
VIDEO
AUDIO
IMAGE
PRESENTATION
DOCUMENT
URL

QuestionPoolingMode

Value Description
RANDOM

Questions are randomly selected from the list of questions.

ORDERED

Questions are selected in order from the list of questions.

QuestionType

The type of a question.

Value Description
MULTIPLE_CHOICE
CLOZE
ASSOCIATION
EXACT_ANSWER
NUMERIC
SELF_ASSESSMENT

RewardChangeReason

The reason why the reward score has changed.

Value Description
CONTENT_DONE

The user has completed a content for the first time. The associated contents are the content that were completed.

CONTENT_REVIEWED

The user has reviewed a content. The associated contents are the content that were reviewed.

CONTENT_DUE_FOR_LEARNING

There exists a content that is due for learning. The associated contents are the content that are due for learning.

CONTENT_DUE_FOR_REPETITION

There exists a content that is due for repetition. The associated contents are the content that are due for repetition.

COMPOSITE_VALUE

The score changed because the underlying scores changed. Relevant for the power score.

SkillType

Type of the assessment

Value Description
REMEMBER
UNDERSTAND
APPLY
ANALYSE

SortDirection

Specifies the sort direction, either ascending or descending.

Value Description
ASC
DESC

SuggestionType

Value Description
NEW_CONTENT
REPETITION

UserRoleInCourse

Enum containing all valid roles a user can have in a course.

Value Description
STUDENT
TUTOR
ADMINISTRATOR

YearDivision

The division of the academic year.

Value Description
FIRST_SEMESTER
SECOND_SEMESTER
FIRST_TRIMESTER
SECOND_TRIMESTER
THIRD_TRIMESTER
FIRST_QUARTER
SECOND_QUARTER
THIRD_QUARTER
FOURTH_QUARTER

Scalars

Boolean

The Boolean scalar type represents true or false.

Date

An RFC-3339 compliant Full Date Scalar

DateTime

A slightly refined version of RFC-3339 compliant DateTime Scalar

Float

The Float scalar type represents signed double-precision fractional values as specified by IEEE 754.

Int

The Int scalar type represents non-fractional signed whole numeric values. Int can represent values between -(2^31) and 2^31 - 1.

JSON

A JSON scalar

LocalTime

24-hour clock time value string in the format hh:mm:ss or hh:mm:ss.sss.

ResolveToSourceArgs

String

The String scalar type represents textual data, represented as UTF-8 character sequences. The String type is most often used by GraphQL to represent free-form human-readable text.

Time

An RFC-3339 compliant Full Time Scalar

UUID

A universally unique identifier compliant UUID Scalar

Url

A Url scalar

Interfaces

Assessment

Field Argument Type Description
assessmentMetadata AssessmentMetadata!

Assessment metadata

id UUID!

ID of the content

metadata ContentMetadata!

Metadata of the content

userProgressData UserProgressData!

Progress data of the content for the current user.

progressDataForUser UserProgressData!

Progress data of the specified user.

userId UUID!

Content

Field Argument Type Description
id UUID!

ID of the content

metadata ContentMetadata!

Metadata of the content

userProgressData UserProgressData!

Progress data of the content for the current user.

progressDataForUser UserProgressData!

Progress data of the specified user.

userId UUID!

Question

Generic question interface.

Field Argument Type Description
id UUID!

Unique identifier of the question.

number Int!

Number of the question, i.e., the position of the question in the list of questions. Only relevant if questionPoolingMode is ORDERED.

type QuestionType!

Type of the question.

hint JSON

Optional hint for the question, in SlateJS JSON format.

Unions

ClozeElement

Type Description
ClozeTextElement
ClozeBlankElement