@iblai/data-layer 1.8.5 → 1.8.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +253 -2
- package/dist/index.esm.js +12 -2
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +12 -1
- package/dist/index.js.map +1 -1
- package/dist/package.json +1 -1
- package/dist/src/features/analytics/__tests__/learner-details.test.d.ts +1 -0
- package/dist/src/features/analytics/api-slice.d.ts +134 -1
- package/dist/src/features/analytics/constants.d.ts +4 -0
- package/dist/src/features/analytics/types.d.ts +117 -0
- package/package.json +1 -1
package/dist/package.json
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { AnalyticsDateParams, AnalyticsPaginationParams, OverviewSummaryResponse, ConversationSummaryResponse, TopicStatisticsResponse, TopicOverviewResponse, UserMetricsResponse, UserMetricsPieChartResponse, UserCohortsOverTimeResponse, TopStudentsResponse, TopicsSummaryResponse, AverageMessagesPerSessionResponse, TopicsStatsArgs, TopicsStatsResponse, UsersStatsResponse, UsersStatsArgs, SessionStatsArgs, SessionStatsResponse, TopicsDetailsStatsResponse, TopicsDetailsStatsArgs, AccessTimeHeatmapResponse, AccessTimeHeatmapArgs, UserDetailsStatsResponse, UserDetailsStatsArgs, FinancialStatsResponse, FinancialStatsArgs, DetailedFinancialStatsResponse, DetailedFinancialStatsArgs, TranscriptsMessagesArgs, TranscriptsMessagesResponse, TranscriptsMessagesDetailsArgs, TranscriptsMessagesDetailsResponse, TranscriptsConversationHeadlineArgs, TranscriptsConversationHeadlineResponse, TimeTrackingResponse, TimeTrackingRequest, ContentAnalyticsResponse, ContentAnalyticsArgs, ContentAnalyticsDetailsResponse, ContentAnalyticsDetailsArgs } from './types';
|
|
1
|
+
import type { AnalyticsDateParams, AnalyticsPaginationParams, OverviewSummaryResponse, ConversationSummaryResponse, TopicStatisticsResponse, TopicOverviewResponse, UserMetricsResponse, UserMetricsPieChartResponse, UserCohortsOverTimeResponse, TopStudentsResponse, TopicsSummaryResponse, AverageMessagesPerSessionResponse, TopicsStatsArgs, TopicsStatsResponse, UsersStatsResponse, UsersStatsArgs, SessionStatsArgs, SessionStatsResponse, TopicsDetailsStatsResponse, TopicsDetailsStatsArgs, AccessTimeHeatmapResponse, AccessTimeHeatmapArgs, UserDetailsStatsResponse, UserDetailsStatsArgs, FinancialStatsResponse, FinancialStatsArgs, DetailedFinancialStatsResponse, DetailedFinancialStatsArgs, TranscriptsMessagesArgs, TranscriptsMessagesResponse, TranscriptsMessagesDetailsArgs, TranscriptsMessagesDetailsResponse, TranscriptsConversationHeadlineArgs, TranscriptsConversationHeadlineResponse, TimeTrackingResponse, TimeTrackingRequest, ContentAnalyticsResponse, ContentAnalyticsArgs, ContentAnalyticsDetailsResponse, ContentAnalyticsDetailsArgs, LearnerDetailsResponse, LearnerDetailsArgs } from './types';
|
|
2
2
|
export declare const analyticsApiSlice: import("@reduxjs/toolkit/query").Api<import("@reduxjs/toolkit/query").BaseQueryFn<import("../utils").CustomQueryArgs, unknown, import("../utils").ExtendedFetchBaseQueryError, Record<string, unknown>, import("@reduxjs/toolkit/query").FetchBaseQueryMeta>, {
|
|
3
3
|
getOverviewSummary: import("@reduxjs/toolkit/query").QueryDefinition<AnalyticsDateParams, import("@reduxjs/toolkit/query").BaseQueryFn<import("../utils").CustomQueryArgs, unknown, import("../utils").ExtendedFetchBaseQueryError, Record<string, unknown>, import("@reduxjs/toolkit/query").FetchBaseQueryMeta>, "Analytics", OverviewSummaryResponse, "analyticsApiSlice", unknown>;
|
|
4
4
|
getConversation: import("@reduxjs/toolkit/query").QueryDefinition<AnalyticsDateParams, import("@reduxjs/toolkit/query").BaseQueryFn<import("../utils").CustomQueryArgs, unknown, import("../utils").ExtendedFetchBaseQueryError, Record<string, unknown>, import("@reduxjs/toolkit/query").FetchBaseQueryMeta>, "Analytics", ConversationSummaryResponse[], "analyticsApiSlice", unknown>;
|
|
@@ -27,6 +27,7 @@ export declare const analyticsApiSlice: import("@reduxjs/toolkit/query").Api<imp
|
|
|
27
27
|
getTranscriptsConversationHeadline: import("@reduxjs/toolkit/query").QueryDefinition<TranscriptsConversationHeadlineArgs, import("@reduxjs/toolkit/query").BaseQueryFn<import("../utils").CustomQueryArgs, unknown, import("../utils").ExtendedFetchBaseQueryError, Record<string, unknown>, import("@reduxjs/toolkit/query").FetchBaseQueryMeta>, "Analytics", TranscriptsConversationHeadlineResponse, "analyticsApiSlice", unknown>;
|
|
28
28
|
getContentAnalytics: import("@reduxjs/toolkit/query").QueryDefinition<ContentAnalyticsArgs, import("@reduxjs/toolkit/query").BaseQueryFn<import("../utils").CustomQueryArgs, unknown, import("../utils").ExtendedFetchBaseQueryError, Record<string, unknown>, import("@reduxjs/toolkit/query").FetchBaseQueryMeta>, "Analytics", ContentAnalyticsResponse, "analyticsApiSlice", unknown>;
|
|
29
29
|
getContentAnalyticsDetails: import("@reduxjs/toolkit/query").QueryDefinition<ContentAnalyticsDetailsArgs, import("@reduxjs/toolkit/query").BaseQueryFn<import("../utils").CustomQueryArgs, unknown, import("../utils").ExtendedFetchBaseQueryError, Record<string, unknown>, import("@reduxjs/toolkit/query").FetchBaseQueryMeta>, "Analytics", ContentAnalyticsDetailsResponse, "analyticsApiSlice", unknown>;
|
|
30
|
+
getLearnerDetails: import("@reduxjs/toolkit/query").QueryDefinition<LearnerDetailsArgs, import("@reduxjs/toolkit/query").BaseQueryFn<import("../utils").CustomQueryArgs, unknown, import("../utils").ExtendedFetchBaseQueryError, Record<string, unknown>, import("@reduxjs/toolkit/query").FetchBaseQueryMeta>, "Analytics", LearnerDetailsResponse, "analyticsApiSlice", unknown>;
|
|
30
31
|
}, "analyticsApiSlice", "Analytics", typeof import("@reduxjs/toolkit/query").coreModuleName | typeof import("@reduxjs/toolkit/dist/query/react").reactHooksModuleName>;
|
|
31
32
|
export declare const useGetOverviewSummaryQuery: <R extends Record<string, any> = import("@reduxjs/toolkit/query").TSHelpersId<(Omit<{
|
|
32
33
|
status: import("@reduxjs/toolkit/query").QueryStatus.uninitialized;
|
|
@@ -3620,4 +3621,136 @@ export declare const useGetOverviewSummaryQuery: <R extends Record<string, any>
|
|
|
3620
3621
|
}) => R) | undefined;
|
|
3621
3622
|
}) | undefined) => [R][R extends any ? 0 : never] & {
|
|
3622
3623
|
refetch: () => import("@reduxjs/toolkit/query").QueryActionCreatorResult<import("@reduxjs/toolkit/query").QueryDefinition<ContentAnalyticsDetailsArgs, import("@reduxjs/toolkit/query").BaseQueryFn<import("../utils").CustomQueryArgs, unknown, import("../utils").ExtendedFetchBaseQueryError, Record<string, unknown>, import("@reduxjs/toolkit/query").FetchBaseQueryMeta>, "Analytics", ContentAnalyticsDetailsResponse, "analyticsApiSlice", unknown>>;
|
|
3624
|
+
}, useGetLearnerDetailsQuery: <R extends Record<string, any> = import("@reduxjs/toolkit/query").TSHelpersId<(Omit<{
|
|
3625
|
+
status: import("@reduxjs/toolkit/query").QueryStatus.uninitialized;
|
|
3626
|
+
originalArgs?: undefined | undefined;
|
|
3627
|
+
data?: undefined | undefined;
|
|
3628
|
+
error?: undefined | undefined;
|
|
3629
|
+
requestId?: undefined | undefined;
|
|
3630
|
+
endpointName?: string | undefined;
|
|
3631
|
+
startedTimeStamp?: undefined | undefined;
|
|
3632
|
+
fulfilledTimeStamp?: undefined | undefined;
|
|
3633
|
+
} & {
|
|
3634
|
+
currentData?: LearnerDetailsResponse | undefined;
|
|
3635
|
+
isUninitialized: false;
|
|
3636
|
+
isLoading: false;
|
|
3637
|
+
isFetching: false;
|
|
3638
|
+
isSuccess: false;
|
|
3639
|
+
isError: false;
|
|
3640
|
+
}, "isUninitialized"> & {
|
|
3641
|
+
isUninitialized: true;
|
|
3642
|
+
}) | import("@reduxjs/toolkit/query").TSHelpersOverride<import("@reduxjs/toolkit/query").QuerySubState<import("@reduxjs/toolkit/query").QueryDefinition<LearnerDetailsArgs, import("@reduxjs/toolkit/query").BaseQueryFn<import("../utils").CustomQueryArgs, unknown, import("../utils").ExtendedFetchBaseQueryError, Record<string, unknown>, import("@reduxjs/toolkit/query").FetchBaseQueryMeta>, "Analytics", LearnerDetailsResponse, "analyticsApiSlice", unknown>> & {
|
|
3643
|
+
currentData?: LearnerDetailsResponse | undefined;
|
|
3644
|
+
isUninitialized: false;
|
|
3645
|
+
isLoading: false;
|
|
3646
|
+
isFetching: false;
|
|
3647
|
+
isSuccess: false;
|
|
3648
|
+
isError: false;
|
|
3649
|
+
}, {
|
|
3650
|
+
isLoading: true;
|
|
3651
|
+
isFetching: boolean;
|
|
3652
|
+
data: undefined;
|
|
3653
|
+
} | ({
|
|
3654
|
+
isSuccess: true;
|
|
3655
|
+
isFetching: true;
|
|
3656
|
+
error: undefined;
|
|
3657
|
+
} & Required<Pick<import("@reduxjs/toolkit/query").QuerySubState<import("@reduxjs/toolkit/query").QueryDefinition<LearnerDetailsArgs, import("@reduxjs/toolkit/query").BaseQueryFn<import("../utils").CustomQueryArgs, unknown, import("../utils").ExtendedFetchBaseQueryError, Record<string, unknown>, import("@reduxjs/toolkit/query").FetchBaseQueryMeta>, "Analytics", LearnerDetailsResponse, "analyticsApiSlice", unknown>> & {
|
|
3658
|
+
currentData?: LearnerDetailsResponse | undefined;
|
|
3659
|
+
isUninitialized: false;
|
|
3660
|
+
isLoading: false;
|
|
3661
|
+
isFetching: false;
|
|
3662
|
+
isSuccess: false;
|
|
3663
|
+
isError: false;
|
|
3664
|
+
}, "data" | "fulfilledTimeStamp">>) | ({
|
|
3665
|
+
isSuccess: true;
|
|
3666
|
+
isFetching: false;
|
|
3667
|
+
error: undefined;
|
|
3668
|
+
} & Required<Pick<import("@reduxjs/toolkit/query").QuerySubState<import("@reduxjs/toolkit/query").QueryDefinition<LearnerDetailsArgs, import("@reduxjs/toolkit/query").BaseQueryFn<import("../utils").CustomQueryArgs, unknown, import("../utils").ExtendedFetchBaseQueryError, Record<string, unknown>, import("@reduxjs/toolkit/query").FetchBaseQueryMeta>, "Analytics", LearnerDetailsResponse, "analyticsApiSlice", unknown>> & {
|
|
3669
|
+
currentData?: LearnerDetailsResponse | undefined;
|
|
3670
|
+
isUninitialized: false;
|
|
3671
|
+
isLoading: false;
|
|
3672
|
+
isFetching: false;
|
|
3673
|
+
isSuccess: false;
|
|
3674
|
+
isError: false;
|
|
3675
|
+
}, "data" | "fulfilledTimeStamp" | "currentData">>) | ({
|
|
3676
|
+
isError: true;
|
|
3677
|
+
} & Required<Pick<import("@reduxjs/toolkit/query").QuerySubState<import("@reduxjs/toolkit/query").QueryDefinition<LearnerDetailsArgs, import("@reduxjs/toolkit/query").BaseQueryFn<import("../utils").CustomQueryArgs, unknown, import("../utils").ExtendedFetchBaseQueryError, Record<string, unknown>, import("@reduxjs/toolkit/query").FetchBaseQueryMeta>, "Analytics", LearnerDetailsResponse, "analyticsApiSlice", unknown>> & {
|
|
3678
|
+
currentData?: LearnerDetailsResponse | undefined;
|
|
3679
|
+
isUninitialized: false;
|
|
3680
|
+
isLoading: false;
|
|
3681
|
+
isFetching: false;
|
|
3682
|
+
isSuccess: false;
|
|
3683
|
+
isError: false;
|
|
3684
|
+
}, "error">>)>> & {
|
|
3685
|
+
status: import("@reduxjs/toolkit/query").QueryStatus;
|
|
3686
|
+
}>(arg: LearnerDetailsArgs | typeof import("@reduxjs/toolkit/query").skipToken, options?: (import("@reduxjs/toolkit/query").SubscriptionOptions & {
|
|
3687
|
+
skip?: boolean;
|
|
3688
|
+
refetchOnMountOrArgChange?: boolean | number;
|
|
3689
|
+
} & {
|
|
3690
|
+
skip?: boolean;
|
|
3691
|
+
selectFromResult?: ((state: import("@reduxjs/toolkit/query").TSHelpersId<(Omit<{
|
|
3692
|
+
status: import("@reduxjs/toolkit/query").QueryStatus.uninitialized;
|
|
3693
|
+
originalArgs?: undefined | undefined;
|
|
3694
|
+
data?: undefined | undefined;
|
|
3695
|
+
error?: undefined | undefined;
|
|
3696
|
+
requestId?: undefined | undefined;
|
|
3697
|
+
endpointName?: string | undefined;
|
|
3698
|
+
startedTimeStamp?: undefined | undefined;
|
|
3699
|
+
fulfilledTimeStamp?: undefined | undefined;
|
|
3700
|
+
} & {
|
|
3701
|
+
currentData?: LearnerDetailsResponse | undefined;
|
|
3702
|
+
isUninitialized: false;
|
|
3703
|
+
isLoading: false;
|
|
3704
|
+
isFetching: false;
|
|
3705
|
+
isSuccess: false;
|
|
3706
|
+
isError: false;
|
|
3707
|
+
}, "isUninitialized"> & {
|
|
3708
|
+
isUninitialized: true;
|
|
3709
|
+
}) | import("@reduxjs/toolkit/query").TSHelpersOverride<import("@reduxjs/toolkit/query").QuerySubState<import("@reduxjs/toolkit/query").QueryDefinition<LearnerDetailsArgs, import("@reduxjs/toolkit/query").BaseQueryFn<import("../utils").CustomQueryArgs, unknown, import("../utils").ExtendedFetchBaseQueryError, Record<string, unknown>, import("@reduxjs/toolkit/query").FetchBaseQueryMeta>, "Analytics", LearnerDetailsResponse, "analyticsApiSlice", unknown>> & {
|
|
3710
|
+
currentData?: LearnerDetailsResponse | undefined;
|
|
3711
|
+
isUninitialized: false;
|
|
3712
|
+
isLoading: false;
|
|
3713
|
+
isFetching: false;
|
|
3714
|
+
isSuccess: false;
|
|
3715
|
+
isError: false;
|
|
3716
|
+
}, {
|
|
3717
|
+
isLoading: true;
|
|
3718
|
+
isFetching: boolean;
|
|
3719
|
+
data: undefined;
|
|
3720
|
+
} | ({
|
|
3721
|
+
isSuccess: true;
|
|
3722
|
+
isFetching: true;
|
|
3723
|
+
error: undefined;
|
|
3724
|
+
} & Required<Pick<import("@reduxjs/toolkit/query").QuerySubState<import("@reduxjs/toolkit/query").QueryDefinition<LearnerDetailsArgs, import("@reduxjs/toolkit/query").BaseQueryFn<import("../utils").CustomQueryArgs, unknown, import("../utils").ExtendedFetchBaseQueryError, Record<string, unknown>, import("@reduxjs/toolkit/query").FetchBaseQueryMeta>, "Analytics", LearnerDetailsResponse, "analyticsApiSlice", unknown>> & {
|
|
3725
|
+
currentData?: LearnerDetailsResponse | undefined;
|
|
3726
|
+
isUninitialized: false;
|
|
3727
|
+
isLoading: false;
|
|
3728
|
+
isFetching: false;
|
|
3729
|
+
isSuccess: false;
|
|
3730
|
+
isError: false;
|
|
3731
|
+
}, "data" | "fulfilledTimeStamp">>) | ({
|
|
3732
|
+
isSuccess: true;
|
|
3733
|
+
isFetching: false;
|
|
3734
|
+
error: undefined;
|
|
3735
|
+
} & Required<Pick<import("@reduxjs/toolkit/query").QuerySubState<import("@reduxjs/toolkit/query").QueryDefinition<LearnerDetailsArgs, import("@reduxjs/toolkit/query").BaseQueryFn<import("../utils").CustomQueryArgs, unknown, import("../utils").ExtendedFetchBaseQueryError, Record<string, unknown>, import("@reduxjs/toolkit/query").FetchBaseQueryMeta>, "Analytics", LearnerDetailsResponse, "analyticsApiSlice", unknown>> & {
|
|
3736
|
+
currentData?: LearnerDetailsResponse | undefined;
|
|
3737
|
+
isUninitialized: false;
|
|
3738
|
+
isLoading: false;
|
|
3739
|
+
isFetching: false;
|
|
3740
|
+
isSuccess: false;
|
|
3741
|
+
isError: false;
|
|
3742
|
+
}, "data" | "fulfilledTimeStamp" | "currentData">>) | ({
|
|
3743
|
+
isError: true;
|
|
3744
|
+
} & Required<Pick<import("@reduxjs/toolkit/query").QuerySubState<import("@reduxjs/toolkit/query").QueryDefinition<LearnerDetailsArgs, import("@reduxjs/toolkit/query").BaseQueryFn<import("../utils").CustomQueryArgs, unknown, import("../utils").ExtendedFetchBaseQueryError, Record<string, unknown>, import("@reduxjs/toolkit/query").FetchBaseQueryMeta>, "Analytics", LearnerDetailsResponse, "analyticsApiSlice", unknown>> & {
|
|
3745
|
+
currentData?: LearnerDetailsResponse | undefined;
|
|
3746
|
+
isUninitialized: false;
|
|
3747
|
+
isLoading: false;
|
|
3748
|
+
isFetching: false;
|
|
3749
|
+
isSuccess: false;
|
|
3750
|
+
isError: false;
|
|
3751
|
+
}, "error">>)>> & {
|
|
3752
|
+
status: import("@reduxjs/toolkit/query").QueryStatus;
|
|
3753
|
+
}) => R) | undefined;
|
|
3754
|
+
}) | undefined) => [R][R extends any ? 0 : never] & {
|
|
3755
|
+
refetch: () => import("@reduxjs/toolkit/query").QueryActionCreatorResult<import("@reduxjs/toolkit/query").QueryDefinition<LearnerDetailsArgs, import("@reduxjs/toolkit/query").BaseQueryFn<import("../utils").CustomQueryArgs, unknown, import("../utils").ExtendedFetchBaseQueryError, Record<string, unknown>, import("@reduxjs/toolkit/query").FetchBaseQueryMeta>, "Analytics", LearnerDetailsResponse, "analyticsApiSlice", unknown>>;
|
|
3623
3756
|
};
|
|
@@ -111,6 +111,10 @@ export declare const NON_AI_ANALYTICS_ENDPOINTS: {
|
|
|
111
111
|
service: SERVICES;
|
|
112
112
|
path: (content_id: string) => string;
|
|
113
113
|
};
|
|
114
|
+
GET_LEARNER_DETAILS: {
|
|
115
|
+
service: SERVICES;
|
|
116
|
+
path: (username: string, platform_key: string, metrics: string, course_id?: string, include_edx_progress?: boolean, program_id?: string) => string;
|
|
117
|
+
};
|
|
114
118
|
};
|
|
115
119
|
export declare const ANALYTICS_QUERY_KEYS: {
|
|
116
120
|
GET_OVERVIEW_SUMMARY: () => string[];
|
|
@@ -577,3 +577,120 @@ export interface ContentAnalyticsDetailsResponse {
|
|
|
577
577
|
pagination: ContentAnalyticsPagination;
|
|
578
578
|
learners: ContentAnalyticsLearner[];
|
|
579
579
|
}
|
|
580
|
+
export interface LearnerDetailsArgs {
|
|
581
|
+
username: string;
|
|
582
|
+
platform_key: string;
|
|
583
|
+
metrics: string;
|
|
584
|
+
course_id?: string;
|
|
585
|
+
program_id?: string;
|
|
586
|
+
include_edx_progress?: boolean;
|
|
587
|
+
}
|
|
588
|
+
export interface LearnerDetailsUser {
|
|
589
|
+
user_id: number;
|
|
590
|
+
username: string;
|
|
591
|
+
email: string;
|
|
592
|
+
name: string;
|
|
593
|
+
is_active: boolean;
|
|
594
|
+
last_active: string;
|
|
595
|
+
date_joined: string;
|
|
596
|
+
}
|
|
597
|
+
export interface LearnerContentEnrollment {
|
|
598
|
+
created: string;
|
|
599
|
+
started: string | null;
|
|
600
|
+
ended: string | null;
|
|
601
|
+
active: boolean;
|
|
602
|
+
}
|
|
603
|
+
export interface LearnerContentCompletion {
|
|
604
|
+
completed: boolean;
|
|
605
|
+
completion_percentage: number;
|
|
606
|
+
passed: boolean;
|
|
607
|
+
passed_date: string | null;
|
|
608
|
+
}
|
|
609
|
+
export interface LearnerEdxCompletionSummary {
|
|
610
|
+
complete_count: number;
|
|
611
|
+
incomplete_count: number;
|
|
612
|
+
locked_count: number;
|
|
613
|
+
}
|
|
614
|
+
export interface LearnerEdxCourseGrade {
|
|
615
|
+
letter_grade: string | null;
|
|
616
|
+
percent: number;
|
|
617
|
+
is_passing: boolean;
|
|
618
|
+
}
|
|
619
|
+
export interface LearnerEdxAssignmentPolicy {
|
|
620
|
+
type: string;
|
|
621
|
+
short_label: string;
|
|
622
|
+
weight: number;
|
|
623
|
+
num_total: number;
|
|
624
|
+
num_droppable: number;
|
|
625
|
+
}
|
|
626
|
+
export interface LearnerEdxGradingPolicy {
|
|
627
|
+
assignment_policies: LearnerEdxAssignmentPolicy[];
|
|
628
|
+
grade_range: Record<string, number>;
|
|
629
|
+
}
|
|
630
|
+
export interface LearnerEdxSubsectionScore {
|
|
631
|
+
display_name: string;
|
|
632
|
+
block_key: string;
|
|
633
|
+
format?: string;
|
|
634
|
+
has_graded_assignment: boolean;
|
|
635
|
+
num_points_earned: number;
|
|
636
|
+
num_points_possible: number;
|
|
637
|
+
percent_graded: number;
|
|
638
|
+
problem_scores: Array<Record<string, unknown>>;
|
|
639
|
+
learner_has_access: boolean;
|
|
640
|
+
url: string;
|
|
641
|
+
}
|
|
642
|
+
export interface LearnerEdxSectionScore {
|
|
643
|
+
display_name: string;
|
|
644
|
+
subsections: LearnerEdxSubsectionScore[];
|
|
645
|
+
}
|
|
646
|
+
export interface LearnerEdxCertificateData {
|
|
647
|
+
cert_status: string | null;
|
|
648
|
+
cert_web_view_url: string | null;
|
|
649
|
+
download_url: string | null;
|
|
650
|
+
certificate_available_date: string | null;
|
|
651
|
+
}
|
|
652
|
+
export interface LearnerEdxProgress {
|
|
653
|
+
completion_summary?: LearnerEdxCompletionSummary;
|
|
654
|
+
course_grade?: LearnerEdxCourseGrade;
|
|
655
|
+
enrollment_mode?: string;
|
|
656
|
+
user_has_passing_grade?: boolean;
|
|
657
|
+
certificate_data?: LearnerEdxCertificateData;
|
|
658
|
+
grading_policy?: LearnerEdxGradingPolicy;
|
|
659
|
+
section_scores?: LearnerEdxSectionScore[];
|
|
660
|
+
}
|
|
661
|
+
export interface LearnerCourseDetail {
|
|
662
|
+
course_id: string;
|
|
663
|
+
name: string;
|
|
664
|
+
platform: string;
|
|
665
|
+
enrollment: LearnerContentEnrollment;
|
|
666
|
+
completion: LearnerContentCompletion | null;
|
|
667
|
+
time_spent: string;
|
|
668
|
+
time_spent_secs: number;
|
|
669
|
+
edx_progress?: LearnerEdxProgress | null;
|
|
670
|
+
}
|
|
671
|
+
export interface LearnerProgramDetail {
|
|
672
|
+
program_id: string;
|
|
673
|
+
name: string;
|
|
674
|
+
platform: string;
|
|
675
|
+
enrollment: LearnerContentEnrollment;
|
|
676
|
+
completion: LearnerContentCompletion | null;
|
|
677
|
+
time_spent: string;
|
|
678
|
+
time_spent_secs: number;
|
|
679
|
+
edx_progress?: LearnerEdxProgress | null;
|
|
680
|
+
}
|
|
681
|
+
export interface LearnerTimeSpentSummary {
|
|
682
|
+
courses: unknown[];
|
|
683
|
+
total_time_spent: string;
|
|
684
|
+
total_time_spent_secs: number;
|
|
685
|
+
}
|
|
686
|
+
export interface LearnerDetailsData {
|
|
687
|
+
courses?: LearnerCourseDetail[];
|
|
688
|
+
programs?: LearnerProgramDetail[];
|
|
689
|
+
pathways?: Array<Record<string, unknown>>;
|
|
690
|
+
skills?: Array<Record<string, unknown>>;
|
|
691
|
+
time_spent?: LearnerTimeSpentSummary;
|
|
692
|
+
}
|
|
693
|
+
export interface LearnerDetailsResponse {
|
|
694
|
+
user: LearnerDetailsUser;
|
|
695
|
+
data: LearnerDetailsData;
|
|
696
|
+
}
|