App Type

    enum AppType
    {
        None = 0,
        Scorm = 1,
        CourseCatalog = 2,
        Assignments = 3,
        LearningPath = 4,
        Quiz = 5
    }

Enrollment Flow Type

    enum EnrollmentFlowType
    {
        AutomaticApproval = 0,
        LineManagerApproval = 1,
        LMSAdministratorsApproval = 2,
        CustomApproval = 3,
        ExternalWebhookApproval = 4
    }

Certificate Status

    enum CertificateStatus
    {
        Valid = 0,
        Expiring = 1,
        Expired = 2
    }

Course Type

    enum CourseType
    {
        None = 0,
        ELearning = 1,
        ClassRoom = 3,
        TrainingPlan = 4,
        Webinar = 5
    }

Course Session Enrollment Type

    enum CourseSessionEnrollmentType
    {
        EnrollToSingle = 1,
        EnrollToAll = 2,
        EnrollToMultiple = 3
    }

Course Provisioning Status

    enum ProvisioningStatus
    {
        Creating = 0,
        CreationFailed = 1,
        CreatedWithWarnings = 2,
        Created = 3,
        Editing = 4,
        EditingFailed = 5,
        EditedWithWarnings = 6,
        Edited = 7
    }

User Role

    enum UserRole
    {
        None = 0,
        Learner = 1,
        Teacher = 2,
        Trainer = 3
    }

User Principal Type

    enum PrincipalType
    {
        User = 0,
        Group = 1
    }

Role

    enum Role
    {
        None = 0,
        Learner = 1,
        CourseAdmin = 2,
        CourseSessionInstructor = 4,
        LMSAdmin = 8,
        CourseCatalogAdmin = 16,
        CourseCatalogVisitor = 32,
        CourseVisitor = 64
    }

Registration Status

    enum RegistrationStatus
    {
        Active = 0,
        Awaiting = 1,
        Cancelled = 2,
        Expired = 3,
        //Deprecated. WaitingListRequest is used instead of Enrollment with InWaitingList status.
        InWaitingList = 4
    }

Course Passing Status

    enum CoursePassingStatus
    {
        Completed = 0,
        NotStarted = 1,
        InProgress = 2
    }

Enrollment Request Status

    enum EnrollmentStatus
    {
        Awaiting = 0,
        Enrolled = 1,
        Rejected = 2,
        Cancelled = 3
    }

Learning Module User Status

    enum LearnerStatus
    {
        NotStarted = 0,
        InProgress = 1,
        Failed = 2,
        Completed = 3
    }

Quiz User Status

    enum AttemptStatus
    {
        NotStarted = 0,
        InProgress = 1,
        Passed = 2,
        Failed = 3
    }

Scorm Content Type

    enum ContentType
    {
        Scorm = 1,
        Aicc = 2
    }

Scorm User Status

    enum AttemptStatus
    {
        NotStarted = 1,
        Failed = 2,
        InProgress = 3,
        Passed = 4
    }

Assignment Task Status

    enum TaskStatus
    {
        NotStarted = 1,
        Submitted = 2,
        Returned = 3,
        Completed = 4
    }

Assignment Task Due Status

    enum TaskDueStatus
    {
        NotStarted = 1,
        Submitted = 2,
        Returned = 3,
        Completed = 4,
        Overdue = 5,
        Closed = 6
    }

Course Completion Set Options

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
    }

Course Completion Options

    {
        "completionCriteria": CourseCompletionCriteria,
        "completionOptions": string with completion options in JSON format
    }

Completion options is JSON serialized string, the format depends on specified completion criteria.

Completion criteriaCompletion options object type
AttendancePercentCompletionOptions
TrainingPlanCoursesTrainingPlanCompletionOptions
All otherAppCompletionOptions
    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?;
    }

Learning Module Configuration

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;
    }

Learning Module Attempt State

"State" property is JSON serialized Dictionary<Guid, LearningPathItemStatus> object.

    enum LearningPathItemStatus
    {
        NotStarted = 0,
        Passed = 1,
        Failed = 2
    }

Quiz Questions

"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
    }

Quiz Attempt State

"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;
    }