enum AppType
{
None = 0,
Scorm = 1,
CourseCatalog = 2,
Assignments = 3,
LearningPath = 4,
Quiz = 5
}
enum EnrollmentFlowType
{
AutomaticApproval = 0,
LineManagerApproval = 1,
LMSAdministratorsApproval = 2,
CustomApproval = 3,
ExternalWebhookApproval = 4
}
enum CertificateStatus
{
Valid = 0,
Expiring = 1,
Expired = 2
}
enum CourseType
{
None = 0,
ELearning = 1,
ClassRoom = 3,
TrainingPlan = 4,
Webinar = 5
}
enum CourseSessionEnrollmentType
{
EnrollToSingle = 1,
EnrollToAll = 2,
EnrollToMultiple = 3
}
enum ProvisioningStatus
{
Creating = 0,
CreationFailed = 1,
CreatedWithWarnings = 2,
Created = 3,
Editing = 4,
EditingFailed = 5,
EditedWithWarnings = 6,
Edited = 7
}
enum UserRole
{
None = 0,
Learner = 1,
Teacher = 2,
Trainer = 3
}
enum PrincipalType
{
User = 0,
Group = 1
}
enum Role
{
None = 0,
Learner = 1,
CourseAdmin = 2,
CourseSessionInstructor = 4,
LMSAdmin = 8,
CourseCatalogAdmin = 16,
CourseCatalogVisitor = 32,
CourseVisitor = 64
}
enum RegistrationStatus
{
Active = 0,
Awaiting = 1,
Cancelled = 2,
Expired = 3,
//Deprecated. WaitingListRequest is used instead of Enrollment with InWaitingList status.
InWaitingList = 4
}
enum CoursePassingStatus
{
Completed = 0,
NotStarted = 1,
InProgress = 2
}
enum EnrollmentStatus
{
Awaiting = 0,
Enrolled = 1,
Rejected = 2,
Cancelled = 3
}
enum LearnerStatus
{
NotStarted = 0,
InProgress = 1,
Failed = 2,
Completed = 3
}
enum AttemptStatus
{
NotStarted = 0,
InProgress = 1,
Passed = 2,
Failed = 3
}
enum ContentType
{
Scorm = 1,
Aicc = 2
}
enum AttemptStatus
{
NotStarted = 1,
Failed = 2,
InProgress = 3,
Passed = 4
}
enum TaskStatus
{
NotStarted = 1,
Submitted = 2,
Returned = 3,
Completed = 4
}
enum TaskDueStatus
{
NotStarted = 1,
Submitted = 2,
Returned = 3,
Completed = 4,
Overdue = 5,
Closed = 6
}
Completion options is JSON serialized string of CourseCompletionItem[].
class CourseCompletionItem
{
Type: CourseCompletionCriteria;
LearningObjectId: Guid?;
Percent: decimal?;
Options: CalculationOptions;
}
enum CourseCompletionCriteria
{
Scorm = 1,
Quiz = 2,
LearningModule = 3,
Assignment = 4,
ExternalApp = 5,
GradeBookColumn = 6,
TrainingPlanCourse = 7,
Attendance = 8,
Assessment = 9
}
class CalculationOptions
{
CalculationType: CalculationType;
NumberOfItems: int?;
}
enum CalculationType
{
All = 0,
DefinedNumber = 1
}
{
"completionCriteria": CourseCompletionCriteria,
"completionOptions": string with completion options in JSON format
}
Completion options is JSON serialized string, the format depends on specified completion criteria.
Completion criteria | Completion options object type |
---|---|
Attendance | PercentCompletionOptions |
TrainingPlanCourses | TrainingPlanCompletionOptions |
All other | AppCompletionOptions |
enum CourseCompletionCriteria
{
Scorm = 1,
Course = 2,
Assignments = 3,
LearningPath = 4,
Quiz = 5,
GradebookColumn = 6,
Attendance = 7,
TrainingPlanCourses = 9,
ExternalApp = 10
}
class PercentCompletionOptions
{
Percent: int;
}
class TrainingPlanCompletionOptions
{
Courses: Guid[];
}
class AppCompletionOptions
{
Items: AppItemCompletionOptions[];
}
class AppItemCompletionOptions
{
ItemId: Guid;
MinProgress: decimal?;
}
Configuration.Items property is JSON serialized array of LearningPathItem objects.
class LearningPathItem
{
Id: Guid;
Title: string;
ItemType: LearningPathItemType;
}
enum LearningPathItemType
{
None = 0,
Document = 1,
Scorm = 2,
Embed = 3,
Confirmation = 4,
Quiz = 5,
ExternalApp = 6
}
class Document : LearningPathItem
{
DocumentId: int;
FileId: Guid;
Url: string;
}
class Scorm : LearningPathItem
{
ScormId: Guid;
}
class Embed : LearningPathItem
{
Content: string;
EmbedType: EmbedType;
}
enum EmbedType
{
OfficeVideo = 0,
OfficeMix = 1,
YouTube = 2,
Other = 3,
Link = 4,
WebsiteUrl = 5,
RichContent = 6,
MSStream = 7,
MSForms = 8,
MSSway = 9,
LinkInIFrame = 10,
Synthesia = 11,
}
class ConfirmationItem : LearningPathItem
{
ConfirmationMessage: string;
CheckMarkMessage: string;
Type: ConfirmationItemType;
}
enum ConfirmationItemType
{
SimpleCheckBox = 0,
Authorization = 1
}
class Quiz : LearningPathItem
{
QuizId: Guid;
}
"State" property is JSON serialized Dictionary<Guid, LearningPathItemStatus> object.
enum LearningPathItemStatus
{
NotStarted = 0,
Passed = 1,
Failed = 2
}
"SerializedQuestions" property is JSON serialized array of Question objects.
class Question
{
Id: Guid;
Title: string;
Description: string;
QuestionType: QuestionType;
Points: int;
PositiveFeedback: string;
NegativeFeedback: string;
SemiPositiveFeedback: string;
Tags: string[];
}
enum QuestionType
{
None = 0,
MultipleChoice = 1,
TrueOrFalse = 2,
MultipleAnswers = 3,
OrderingAnswers = 4,
MatchingAnswers = 5,
FreeAnswer = 6,
ShortAnswer = 7,
FillGap = 8,
HotSpot = 9,
QuestionPoolQuestions = 10
}
class RandomizeAnswersQuestion: Question
{
RandomizeAnswers: bool;
}
class TrueOrFalseQuestion: Question
{
RightAnswer: bool;
}
class MultipleChoiceQuestion: RandomizeAnswersQuestion
{
Answers: Answer[];
RightAnswerId: Guid;
}
class Answer
{
Id: Guid;
Text: string;
}
class MultipleAnswerQuestion: RandomizeAnswersQuestion
{
Answers: Answer[];
RightAnswerIds: Guid[];
}
class OrderingAnswerQuestion: RandomizeAnswersQuestion
{
Answers: Answer[];
}
class MatchingAnswerQuestion: RandomizeAnswersQuestion
{
Answers: Answer[][];
}
class FreeAnswerQuestion: Question
{
}
class ShortAnswerQuestion: Question
{
Answers: ShortAnswer[];
}
class ShortAnswer
{
Id: Guid;
Text: string;
IsRegExp: bool;
PointsPercentage: int;
}
class FillGapQuestion: Question
{
Text: string;
Gaps: Dictionary<string, string[]>;
CorrectResponse: Dictionary<string, string>;
}
class HotSpotQuestion: Question
{
ImageUrl: string;
//all values are relative = percantages
PositionX: double;
PositionY: double;
Width: double;
Height: double;
}
class QuestionPoolQuestions: Question
{
QuestionPoolId: Guid;
ResolveType: QuestionResolveType;
TagAggregationType: TagAggregationType;
MinPoints: int?;
MaxPoints: int?;
MaxNumberToResolve: int?;
}
enum QuestionResolveType
{
Fixed = 0,
Random = 1
}
enum TagAggregationType
{
Any = 0,
All = 1
}
"State" property is JSON serialized Dictionary<Guid, QuestionResult> object.
class QuestionResult
{
Percent: decimal;
AnswerResult: IQuestionAnswerResult;
}
class QuestionAnswerResult
{
QuestionType: QuestionType;
}
enum QuestionType
{
MultipleChoice = 1,
TrueOrFalse = 2,
MultipleAnswers = 3,
OrderingAnswers = 4,
MatchingAnswers = 5,
FreeAnswer = 6,
ShortAnswer = 7,
FillGap = 8,
HotSpot = 9
}
class MultipleChoiceQuestionResult: QuestionAnswerResult
{
Answer: Guid;
}
class TrueOrFalseQuestionResult: QuestionAnswerResult
{
Answer: bool;
}
class MultipleAnswerQuestionResult: QuestionAnswerResult
{
Answers: Guid[];
}
class OrderingAnswerQuestionResult: QuestionAnswerResult
{
Answers: Guid[];
}
class MatchingAnswerQuestionResult: QuestionAnswerResult
{
Answers: Guid[][];
}
class FreeAnswerQuestionResult: QuestionAnswerResult
{
Answer: string;
}
class ShortAnswerQuestionResult: QuestionAnswerResult
{
Answer: string;
}
class FillGapQuestionResult: QuestionAnswerResult
{
Answer: Dictionary<string, string>;
}
class HotSpotQuestionResult: QuestionAnswerResult
{
PositionX: double;
PositionY: double;
}