@instructure/athena-api-client 3.43.0 → 3.44.0

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.
Files changed (34) hide show
  1. package/README.md +1 -0
  2. package/dist/esm/models/ChatRequestMessageMetadata.d.ts +14 -1
  3. package/dist/esm/models/ChatRequestMessageMetadata.js +8 -0
  4. package/dist/esm/models/ChatRequestQuizSettings.d.ts +19 -0
  5. package/dist/esm/models/ChatRequestQuizSettings.js +10 -0
  6. package/dist/esm/models/Quiz.d.ts +7 -0
  7. package/dist/esm/models/Quiz.js +3 -0
  8. package/dist/esm/models/QuizBasisSnapshot.d.ts +76 -0
  9. package/dist/esm/models/QuizBasisSnapshot.js +77 -0
  10. package/dist/esm/models/QuizListItem.d.ts +7 -0
  11. package/dist/esm/models/QuizListItem.js +3 -0
  12. package/dist/esm/models/QuizWithQuestions.d.ts +7 -0
  13. package/dist/esm/models/QuizWithQuestions.js +3 -0
  14. package/dist/esm/models/StudyObjectiveAccess.d.ts +19 -1
  15. package/dist/esm/models/StudyObjectiveAccess.js +12 -0
  16. package/dist/esm/models/index.d.ts +1 -0
  17. package/dist/esm/models/index.js +1 -0
  18. package/dist/models/ChatRequestMessageMetadata.d.ts +14 -1
  19. package/dist/models/ChatRequestMessageMetadata.js +9 -0
  20. package/dist/models/ChatRequestQuizSettings.d.ts +19 -0
  21. package/dist/models/ChatRequestQuizSettings.js +11 -1
  22. package/dist/models/Quiz.d.ts +7 -0
  23. package/dist/models/Quiz.js +3 -0
  24. package/dist/models/QuizBasisSnapshot.d.ts +76 -0
  25. package/dist/models/QuizBasisSnapshot.js +85 -0
  26. package/dist/models/QuizListItem.d.ts +7 -0
  27. package/dist/models/QuizListItem.js +3 -0
  28. package/dist/models/QuizWithQuestions.d.ts +7 -0
  29. package/dist/models/QuizWithQuestions.js +3 -0
  30. package/dist/models/StudyObjectiveAccess.d.ts +19 -1
  31. package/dist/models/StudyObjectiveAccess.js +12 -0
  32. package/dist/models/index.d.ts +1 -0
  33. package/dist/models/index.js +1 -0
  34. package/package.json +1 -1
package/README.md CHANGED
@@ -329,6 +329,7 @@ All URIs are relative to *http://localhost:3000*
329
329
  - [PracticeQuizStatus](docs/PracticeQuizStatus.md)
330
330
  - [PracticeQuizStatusList](docs/PracticeQuizStatusList.md)
331
331
  - [Quiz](docs/Quiz.md)
332
+ - [QuizBasisSnapshot](docs/QuizBasisSnapshot.md)
332
333
  - [QuizConceptSummary](docs/QuizConceptSummary.md)
333
334
  - [QuizListItem](docs/QuizListItem.md)
334
335
  - [QuizQuestion](docs/QuizQuestion.md)
@@ -10,7 +10,7 @@
10
10
  * Do not edit the class manually.
11
11
  */
12
12
  /**
13
- * Optional metadata attached to the user message. Used by learning session chats to bind an answer to its inline question (`inlineQuestionId` + `questionType` + `structuredAnswer`) and to mark client-auto-fired kickoff turns (`synthetic`). All fields are optional; callers supply whichever subset applies to the message being sent.
13
+ * Optional metadata attached to the user message. Used by learning session chats to bind an answer to its inline question (`inlineQuestionId` + `questionType` + `structuredAnswer`), to mark client-auto-fired kickoff turns (`synthetic`), and to mark a first turn the client wrote for the learner (`seeded`). All fields are optional; callers supply whichever subset applies to the message being sent.
14
14
  * @export
15
15
  * @interface ChatRequestMessageMetadata
16
16
  */
@@ -39,7 +39,20 @@ export interface ChatRequestMessageMetadata {
39
39
  * @memberof ChatRequestMessageMetadata
40
40
  */
41
41
  synthetic?: boolean;
42
+ /**
43
+ * Set when the client wrote this message for the learner and sent it as their first turn: 'objective-nudge' is the study-objective email nudge's opening query. The learner never typed it, so its words are never read as their account of what an assessment covers. Unlike `synthetic`, the message is shown in the transcript.
44
+ * @type {string}
45
+ * @memberof ChatRequestMessageMetadata
46
+ */
47
+ seeded?: ChatRequestMessageMetadataSeededEnum;
42
48
  }
49
+ /**
50
+ * @export
51
+ */
52
+ export declare const ChatRequestMessageMetadataSeededEnum: {
53
+ readonly ObjectiveNudge: "objective-nudge";
54
+ };
55
+ export type ChatRequestMessageMetadataSeededEnum = typeof ChatRequestMessageMetadataSeededEnum[keyof typeof ChatRequestMessageMetadataSeededEnum];
43
56
  /**
44
57
  * Check if a given object implements the ChatRequestMessageMetadata interface.
45
58
  */
@@ -11,6 +11,12 @@
11
11
  * https://openapi-generator.tech
12
12
  * Do not edit the class manually.
13
13
  */
14
+ /**
15
+ * @export
16
+ */
17
+ export const ChatRequestMessageMetadataSeededEnum = {
18
+ ObjectiveNudge: 'objective-nudge'
19
+ };
14
20
  /**
15
21
  * Check if a given object implements the ChatRequestMessageMetadata interface.
16
22
  */
@@ -29,6 +35,7 @@ export function ChatRequestMessageMetadataFromJSONTyped(json, ignoreDiscriminato
29
35
  'questionType': json['questionType'] == null ? undefined : json['questionType'],
30
36
  'structuredAnswer': json['structuredAnswer'] == null ? undefined : json['structuredAnswer'],
31
37
  'synthetic': json['synthetic'] == null ? undefined : json['synthetic'],
38
+ 'seeded': json['seeded'] == null ? undefined : json['seeded'],
32
39
  };
33
40
  }
34
41
  export function ChatRequestMessageMetadataToJSON(json) {
@@ -43,5 +50,6 @@ export function ChatRequestMessageMetadataToJSONTyped(value, ignoreDiscriminator
43
50
  'questionType': value['questionType'],
44
51
  'structuredAnswer': value['structuredAnswer'],
45
52
  'synthetic': value['synthetic'],
53
+ 'seeded': value['seeded'],
46
54
  };
47
55
  }
@@ -33,6 +33,18 @@ export interface ChatRequestQuizSettings {
33
33
  * @memberof ChatRequestQuizSettings
34
34
  */
35
35
  instructions?: string;
36
+ /**
37
+ * What the learner says the assessment covers, typed into the study panel's scope box (sent instead of `instructions` when the box asks what the assessment covers). The quiz is built on it, and on an objective chat it is kept as the learner's scope for that objective. An empty string means the learner cleared the box: their kept scope is cleared too.
38
+ * @type {string}
39
+ * @memberof ChatRequestQuizSettings
40
+ */
41
+ scope?: string;
42
+ /**
43
+ * `suggested` when `scope` is Athena's suggested topics (`StudyObjective.access.suggestedScope`) used unedited ("Use these topics"). Omit for anything the learner typed or edited: that scope is their own.
44
+ * @type {string}
45
+ * @memberof ChatRequestQuizSettings
46
+ */
47
+ scopeSource?: ChatRequestQuizSettingsScopeSourceEnum;
36
48
  }
37
49
  /**
38
50
  * @export
@@ -44,6 +56,13 @@ export declare const ChatRequestQuizSettingsQuestionTypesEnum: {
44
56
  readonly TeachBack: "teach-back";
45
57
  };
46
58
  export type ChatRequestQuizSettingsQuestionTypesEnum = typeof ChatRequestQuizSettingsQuestionTypesEnum[keyof typeof ChatRequestQuizSettingsQuestionTypesEnum];
59
+ /**
60
+ * @export
61
+ */
62
+ export declare const ChatRequestQuizSettingsScopeSourceEnum: {
63
+ readonly Suggested: "suggested";
64
+ };
65
+ export type ChatRequestQuizSettingsScopeSourceEnum = typeof ChatRequestQuizSettingsScopeSourceEnum[keyof typeof ChatRequestQuizSettingsScopeSourceEnum];
47
66
  /**
48
67
  * Check if a given object implements the ChatRequestQuizSettings interface.
49
68
  */
@@ -20,6 +20,12 @@ export const ChatRequestQuizSettingsQuestionTypesEnum = {
20
20
  SpotError: 'spot-error',
21
21
  TeachBack: 'teach-back'
22
22
  };
23
+ /**
24
+ * @export
25
+ */
26
+ export const ChatRequestQuizSettingsScopeSourceEnum = {
27
+ Suggested: 'suggested'
28
+ };
23
29
  /**
24
30
  * Check if a given object implements the ChatRequestQuizSettings interface.
25
31
  */
@@ -37,6 +43,8 @@ export function ChatRequestQuizSettingsFromJSONTyped(json, ignoreDiscriminator)
37
43
  'questionTypes': json['questionTypes'] == null ? undefined : json['questionTypes'],
38
44
  'questionCount': json['questionCount'] == null ? undefined : json['questionCount'],
39
45
  'instructions': json['instructions'] == null ? undefined : json['instructions'],
46
+ 'scope': json['scope'] == null ? undefined : json['scope'],
47
+ 'scopeSource': json['scopeSource'] == null ? undefined : json['scopeSource'],
40
48
  };
41
49
  }
42
50
  export function ChatRequestQuizSettingsToJSON(json) {
@@ -50,5 +58,7 @@ export function ChatRequestQuizSettingsToJSONTyped(value, ignoreDiscriminator =
50
58
  'questionTypes': value['questionTypes'],
51
59
  'questionCount': value['questionCount'],
52
60
  'instructions': value['instructions'],
61
+ 'scope': value['scope'],
62
+ 'scopeSource': value['scopeSource'],
53
63
  };
54
64
  }
@@ -9,6 +9,7 @@
9
9
  * https://openapi-generator.tech
10
10
  * Do not edit the class manually.
11
11
  */
12
+ import type { QuizBasisSnapshot } from './QuizBasisSnapshot';
12
13
  /**
13
14
  *
14
15
  * @export
@@ -63,6 +64,12 @@ export interface Quiz {
63
64
  * @memberof Quiz
64
65
  */
65
66
  expectedQuestionCount: number | null;
67
+ /**
68
+ * What this quiz was built from, recorded once with the quiz so a reload or a retake reads the same. Null for quizzes generated before it was recorded.
69
+ * @type {QuizBasisSnapshot}
70
+ * @memberof Quiz
71
+ */
72
+ basisSnapshot?: QuizBasisSnapshot | null;
66
73
  /**
67
74
  *
68
75
  * @type {Date}
@@ -11,6 +11,7 @@
11
11
  * https://openapi-generator.tech
12
12
  * Do not edit the class manually.
13
13
  */
14
+ import { QuizBasisSnapshotFromJSON, QuizBasisSnapshotToJSON, } from './QuizBasisSnapshot';
14
15
  /**
15
16
  * @export
16
17
  */
@@ -66,6 +67,7 @@ export function QuizFromJSONTyped(json, ignoreDiscriminator) {
66
67
  'mode': json['mode'],
67
68
  'generationStatus': json['generationStatus'],
68
69
  'expectedQuestionCount': json['expectedQuestionCount'],
70
+ 'basisSnapshot': json['basisSnapshot'] == null ? undefined : QuizBasisSnapshotFromJSON(json['basisSnapshot']),
69
71
  'createdAt': (new Date(json['createdAt'])),
70
72
  };
71
73
  }
@@ -85,6 +87,7 @@ export function QuizToJSONTyped(value, ignoreDiscriminator = false) {
85
87
  'mode': value['mode'],
86
88
  'generationStatus': value['generationStatus'],
87
89
  'expectedQuestionCount': value['expectedQuestionCount'],
90
+ 'basisSnapshot': QuizBasisSnapshotToJSON(value['basisSnapshot']),
88
91
  'createdAt': value['createdAt'].toISOString(),
89
92
  };
90
93
  }
@@ -0,0 +1,76 @@
1
+ /**
2
+ * Athena API
3
+ * REST API for the Athena system
4
+ *
5
+ * The version of the OpenAPI document: 1.0.0
6
+ *
7
+ *
8
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
9
+ * https://openapi-generator.tech
10
+ * Do not edit the class manually.
11
+ */
12
+ /**
13
+ *
14
+ * @export
15
+ * @interface QuizBasisSnapshot
16
+ */
17
+ export interface QuizBasisSnapshot {
18
+ /**
19
+ * What the questions were actually built from: 'learner-materials' (the learner's own files, which the generator reports using), 'course-material' (course files read from Canvas, same test), 'learner-scope' (what the learner said the assessment covers), or 'general' (practice on the subject).
20
+ * @type {string}
21
+ * @memberof QuizBasisSnapshot
22
+ */
23
+ basis: QuizBasisSnapshotBasisEnum;
24
+ /**
25
+ * A learner file was in play but never reached the generator (it could not be read, or generation retried without it).
26
+ * @type {boolean}
27
+ * @memberof QuizBasisSnapshot
28
+ */
29
+ droppedFile: boolean;
30
+ /**
31
+ * Whether anything said what the assessment covers when the quiz was generated.
32
+ * @type {boolean}
33
+ * @memberof QuizBasisSnapshot
34
+ */
35
+ scopeKnown: boolean;
36
+ /**
37
+ * The course's access state at generation time; null when none was read.
38
+ * @type {string}
39
+ * @memberof QuizBasisSnapshot
40
+ */
41
+ accessState: QuizBasisSnapshotAccessStateEnum | null;
42
+ /**
43
+ * The access rule version behind accessState; null with it.
44
+ * @type {number}
45
+ * @memberof QuizBasisSnapshot
46
+ */
47
+ ruleVersion: number | null;
48
+ }
49
+ /**
50
+ * @export
51
+ */
52
+ export declare const QuizBasisSnapshotBasisEnum: {
53
+ readonly CourseMaterial: "course-material";
54
+ readonly LearnerMaterials: "learner-materials";
55
+ readonly LearnerScope: "learner-scope";
56
+ readonly General: "general";
57
+ };
58
+ export type QuizBasisSnapshotBasisEnum = typeof QuizBasisSnapshotBasisEnum[keyof typeof QuizBasisSnapshotBasisEnum];
59
+ /**
60
+ * @export
61
+ */
62
+ export declare const QuizBasisSnapshotAccessStateEnum: {
63
+ readonly Grounded: "grounded";
64
+ readonly Thin: "thin";
65
+ readonly Unreadable: "unreadable";
66
+ readonly Unknown: "unknown";
67
+ };
68
+ export type QuizBasisSnapshotAccessStateEnum = typeof QuizBasisSnapshotAccessStateEnum[keyof typeof QuizBasisSnapshotAccessStateEnum];
69
+ /**
70
+ * Check if a given object implements the QuizBasisSnapshot interface.
71
+ */
72
+ export declare function instanceOfQuizBasisSnapshot(value: object): value is QuizBasisSnapshot;
73
+ export declare function QuizBasisSnapshotFromJSON(json: any): QuizBasisSnapshot;
74
+ export declare function QuizBasisSnapshotFromJSONTyped(json: any, ignoreDiscriminator: boolean): QuizBasisSnapshot;
75
+ export declare function QuizBasisSnapshotToJSON(json: any): QuizBasisSnapshot;
76
+ export declare function QuizBasisSnapshotToJSONTyped(value?: QuizBasisSnapshot | null, ignoreDiscriminator?: boolean): any;
@@ -0,0 +1,77 @@
1
+ /* tslint:disable */
2
+ /* eslint-disable */
3
+ /**
4
+ * Athena API
5
+ * REST API for the Athena system
6
+ *
7
+ * The version of the OpenAPI document: 1.0.0
8
+ *
9
+ *
10
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
11
+ * https://openapi-generator.tech
12
+ * Do not edit the class manually.
13
+ */
14
+ /**
15
+ * @export
16
+ */
17
+ export const QuizBasisSnapshotBasisEnum = {
18
+ CourseMaterial: 'course-material',
19
+ LearnerMaterials: 'learner-materials',
20
+ LearnerScope: 'learner-scope',
21
+ General: 'general'
22
+ };
23
+ /**
24
+ * @export
25
+ */
26
+ export const QuizBasisSnapshotAccessStateEnum = {
27
+ Grounded: 'grounded',
28
+ Thin: 'thin',
29
+ Unreadable: 'unreadable',
30
+ Unknown: 'unknown'
31
+ };
32
+ /**
33
+ * Check if a given object implements the QuizBasisSnapshot interface.
34
+ */
35
+ export function instanceOfQuizBasisSnapshot(value) {
36
+ if (!('basis' in value) || value['basis'] === undefined)
37
+ return false;
38
+ if (!('droppedFile' in value) || value['droppedFile'] === undefined)
39
+ return false;
40
+ if (!('scopeKnown' in value) || value['scopeKnown'] === undefined)
41
+ return false;
42
+ if (!('accessState' in value) || value['accessState'] === undefined)
43
+ return false;
44
+ if (!('ruleVersion' in value) || value['ruleVersion'] === undefined)
45
+ return false;
46
+ return true;
47
+ }
48
+ export function QuizBasisSnapshotFromJSON(json) {
49
+ return QuizBasisSnapshotFromJSONTyped(json, false);
50
+ }
51
+ export function QuizBasisSnapshotFromJSONTyped(json, ignoreDiscriminator) {
52
+ if (json == null) {
53
+ return json;
54
+ }
55
+ return {
56
+ 'basis': json['basis'],
57
+ 'droppedFile': json['droppedFile'],
58
+ 'scopeKnown': json['scopeKnown'],
59
+ 'accessState': json['accessState'],
60
+ 'ruleVersion': json['ruleVersion'],
61
+ };
62
+ }
63
+ export function QuizBasisSnapshotToJSON(json) {
64
+ return QuizBasisSnapshotToJSONTyped(json, false);
65
+ }
66
+ export function QuizBasisSnapshotToJSONTyped(value, ignoreDiscriminator = false) {
67
+ if (value == null) {
68
+ return value;
69
+ }
70
+ return {
71
+ 'basis': value['basis'],
72
+ 'droppedFile': value['droppedFile'],
73
+ 'scopeKnown': value['scopeKnown'],
74
+ 'accessState': value['accessState'],
75
+ 'ruleVersion': value['ruleVersion'],
76
+ };
77
+ }
@@ -9,6 +9,7 @@
9
9
  * https://openapi-generator.tech
10
10
  * Do not edit the class manually.
11
11
  */
12
+ import type { QuizBasisSnapshot } from './QuizBasisSnapshot';
12
13
  /**
13
14
  *
14
15
  * @export
@@ -63,6 +64,12 @@ export interface QuizListItem {
63
64
  * @memberof QuizListItem
64
65
  */
65
66
  expectedQuestionCount: number | null;
67
+ /**
68
+ * What this quiz was built from, recorded once with the quiz so a reload or a retake reads the same. Null for quizzes generated before it was recorded.
69
+ * @type {QuizBasisSnapshot}
70
+ * @memberof QuizListItem
71
+ */
72
+ basisSnapshot?: QuizBasisSnapshot | null;
66
73
  /**
67
74
  *
68
75
  * @type {Date}
@@ -11,6 +11,7 @@
11
11
  * https://openapi-generator.tech
12
12
  * Do not edit the class manually.
13
13
  */
14
+ import { QuizBasisSnapshotFromJSON, QuizBasisSnapshotToJSON, } from './QuizBasisSnapshot';
14
15
  /**
15
16
  * @export
16
17
  */
@@ -68,6 +69,7 @@ export function QuizListItemFromJSONTyped(json, ignoreDiscriminator) {
68
69
  'mode': json['mode'],
69
70
  'generationStatus': json['generationStatus'],
70
71
  'expectedQuestionCount': json['expectedQuestionCount'],
72
+ 'basisSnapshot': json['basisSnapshot'] == null ? undefined : QuizBasisSnapshotFromJSON(json['basisSnapshot']),
71
73
  'createdAt': (new Date(json['createdAt'])),
72
74
  'questionCount': json['questionCount'],
73
75
  };
@@ -88,6 +90,7 @@ export function QuizListItemToJSONTyped(value, ignoreDiscriminator = false) {
88
90
  'mode': value['mode'],
89
91
  'generationStatus': value['generationStatus'],
90
92
  'expectedQuestionCount': value['expectedQuestionCount'],
93
+ 'basisSnapshot': QuizBasisSnapshotToJSON(value['basisSnapshot']),
91
94
  'createdAt': value['createdAt'].toISOString(),
92
95
  'questionCount': value['questionCount'],
93
96
  };
@@ -10,6 +10,7 @@
10
10
  * Do not edit the class manually.
11
11
  */
12
12
  import type { QuizQuestion } from './QuizQuestion';
13
+ import type { QuizBasisSnapshot } from './QuizBasisSnapshot';
13
14
  /**
14
15
  *
15
16
  * @export
@@ -64,6 +65,12 @@ export interface QuizWithQuestions {
64
65
  * @memberof QuizWithQuestions
65
66
  */
66
67
  expectedQuestionCount: number | null;
68
+ /**
69
+ * What this quiz was built from, recorded once with the quiz so a reload or a retake reads the same. Null for quizzes generated before it was recorded.
70
+ * @type {QuizBasisSnapshot}
71
+ * @memberof QuizWithQuestions
72
+ */
73
+ basisSnapshot?: QuizBasisSnapshot | null;
67
74
  /**
68
75
  *
69
76
  * @type {Date}
@@ -12,6 +12,7 @@
12
12
  * Do not edit the class manually.
13
13
  */
14
14
  import { QuizQuestionFromJSON, QuizQuestionToJSON, } from './QuizQuestion';
15
+ import { QuizBasisSnapshotFromJSON, QuizBasisSnapshotToJSON, } from './QuizBasisSnapshot';
15
16
  /**
16
17
  * @export
17
18
  */
@@ -69,6 +70,7 @@ export function QuizWithQuestionsFromJSONTyped(json, ignoreDiscriminator) {
69
70
  'mode': json['mode'],
70
71
  'generationStatus': json['generationStatus'],
71
72
  'expectedQuestionCount': json['expectedQuestionCount'],
73
+ 'basisSnapshot': json['basisSnapshot'] == null ? undefined : QuizBasisSnapshotFromJSON(json['basisSnapshot']),
72
74
  'createdAt': (new Date(json['createdAt'])),
73
75
  'questions': (json['questions'].map(QuizQuestionFromJSON)),
74
76
  };
@@ -89,6 +91,7 @@ export function QuizWithQuestionsToJSONTyped(value, ignoreDiscriminator = false)
89
91
  'mode': value['mode'],
90
92
  'generationStatus': value['generationStatus'],
91
93
  'expectedQuestionCount': value['expectedQuestionCount'],
94
+ 'basisSnapshot': QuizBasisSnapshotToJSON(value['basisSnapshot']),
92
95
  'createdAt': value['createdAt'].toISOString(),
93
96
  'questions': (value['questions'].map(QuizQuestionToJSON)),
94
97
  };
@@ -70,7 +70,7 @@ export interface StudyObjectiveAccess {
70
70
  */
71
71
  externalToolItemCount: number | null;
72
72
  /**
73
- * Readable files in the module that holds this item (a quiz or assignment), checked against the course files list. Null when the item is in no module, is another kind of item, or either listing could not be read.
73
+ * Readable files in the module that holds this item (a quiz or assignment): checked against the course files list, or, when Canvas refused that list (rule 4 on), counted from the module's own File items. Null when the item is in no module, is another kind of item, or modules could not be listed.
74
74
  * @type {number}
75
75
  * @memberof StudyObjectiveAccess
76
76
  */
@@ -81,6 +81,18 @@ export interface StudyObjectiveAccess {
81
81
  * @memberof StudyObjectiveAccess
82
82
  */
83
83
  moduleSiblingPageCount: number | null;
84
+ /**
85
+ * Readable files the course publishes through Modules (File items of a supported type, not locked for the learner; one per file). The file count to name only when readableFileCount is null (Canvas refused the course files list, e.g. a hidden Files tab); never add it to readableFileCount, since module links point at listed files. Null when modules could not be listed, and on facts read before rule 4.
86
+ * @type {number}
87
+ * @memberof StudyObjectiveAccess
88
+ */
89
+ moduleReadableFileCount: number | null;
90
+ /**
91
+ * Files of a supported type published through Modules that are locked for the learner (one per file). Read only when readableFileCount is null, like moduleReadableFileCount. Null when modules could not be listed, and on facts read before rule 4.
92
+ * @type {number}
93
+ * @memberof StudyObjectiveAccess
94
+ */
95
+ moduleLockedFileCount: number | null;
84
96
  /**
85
97
  * Version of the rule that produced `state`, for joining client analytics to the rule that was live.
86
98
  * @type {number}
@@ -93,6 +105,12 @@ export interface StudyObjectiveAccess {
93
105
  * @memberof StudyObjectiveAccess
94
106
  */
95
107
  readAt: Date;
108
+ /**
109
+ * Topics the learner's syllabus schedule suggests this item covers, inferred by syllabus analysis, for the scope box to offer as Athena's best guess. Null while `scopeKnown` is true, when the learner has given a scope of their own, or when their syllabus suggests nothing. A suggestion is not evidence: it never sets `scopeKnown`.
110
+ * @type {Array<string>}
111
+ * @memberof StudyObjectiveAccess
112
+ */
113
+ suggestedScope: Array<string> | null;
96
114
  }
97
115
  /**
98
116
  * @export
@@ -70,10 +70,16 @@ export function instanceOfStudyObjectiveAccess(value) {
70
70
  return false;
71
71
  if (!('moduleSiblingPageCount' in value) || value['moduleSiblingPageCount'] === undefined)
72
72
  return false;
73
+ if (!('moduleReadableFileCount' in value) || value['moduleReadableFileCount'] === undefined)
74
+ return false;
75
+ if (!('moduleLockedFileCount' in value) || value['moduleLockedFileCount'] === undefined)
76
+ return false;
73
77
  if (!('ruleVersion' in value) || value['ruleVersion'] === undefined)
74
78
  return false;
75
79
  if (!('readAt' in value) || value['readAt'] === undefined)
76
80
  return false;
81
+ if (!('suggestedScope' in value) || value['suggestedScope'] === undefined)
82
+ return false;
77
83
  return true;
78
84
  }
79
85
  export function StudyObjectiveAccessFromJSON(json) {
@@ -95,8 +101,11 @@ export function StudyObjectiveAccessFromJSONTyped(json, ignoreDiscriminator) {
95
101
  'externalToolItemCount': json['externalToolItemCount'],
96
102
  'moduleSiblingFileCount': json['moduleSiblingFileCount'],
97
103
  'moduleSiblingPageCount': json['moduleSiblingPageCount'],
104
+ 'moduleReadableFileCount': json['moduleReadableFileCount'],
105
+ 'moduleLockedFileCount': json['moduleLockedFileCount'],
98
106
  'ruleVersion': json['ruleVersion'],
99
107
  'readAt': (new Date(json['readAt'])),
108
+ 'suggestedScope': json['suggestedScope'] == null ? null : json['suggestedScope'],
100
109
  };
101
110
  }
102
111
  export function StudyObjectiveAccessToJSON(json) {
@@ -118,7 +127,10 @@ export function StudyObjectiveAccessToJSONTyped(value, ignoreDiscriminator = fal
118
127
  'externalToolItemCount': value['externalToolItemCount'],
119
128
  'moduleSiblingFileCount': value['moduleSiblingFileCount'],
120
129
  'moduleSiblingPageCount': value['moduleSiblingPageCount'],
130
+ 'moduleReadableFileCount': value['moduleReadableFileCount'],
131
+ 'moduleLockedFileCount': value['moduleLockedFileCount'],
121
132
  'ruleVersion': value['ruleVersion'],
122
133
  'readAt': value['readAt'].toISOString(),
134
+ 'suggestedScope': value['suggestedScope'],
123
135
  };
124
136
  }
@@ -128,6 +128,7 @@ export * from './PracticeQuiz';
128
128
  export * from './PracticeQuizStatus';
129
129
  export * from './PracticeQuizStatusList';
130
130
  export * from './Quiz';
131
+ export * from './QuizBasisSnapshot';
131
132
  export * from './QuizConceptSummary';
132
133
  export * from './QuizListItem';
133
134
  export * from './QuizQuestion';
@@ -130,6 +130,7 @@ export * from './PracticeQuiz';
130
130
  export * from './PracticeQuizStatus';
131
131
  export * from './PracticeQuizStatusList';
132
132
  export * from './Quiz';
133
+ export * from './QuizBasisSnapshot';
133
134
  export * from './QuizConceptSummary';
134
135
  export * from './QuizListItem';
135
136
  export * from './QuizQuestion';
@@ -10,7 +10,7 @@
10
10
  * Do not edit the class manually.
11
11
  */
12
12
  /**
13
- * Optional metadata attached to the user message. Used by learning session chats to bind an answer to its inline question (`inlineQuestionId` + `questionType` + `structuredAnswer`) and to mark client-auto-fired kickoff turns (`synthetic`). All fields are optional; callers supply whichever subset applies to the message being sent.
13
+ * Optional metadata attached to the user message. Used by learning session chats to bind an answer to its inline question (`inlineQuestionId` + `questionType` + `structuredAnswer`), to mark client-auto-fired kickoff turns (`synthetic`), and to mark a first turn the client wrote for the learner (`seeded`). All fields are optional; callers supply whichever subset applies to the message being sent.
14
14
  * @export
15
15
  * @interface ChatRequestMessageMetadata
16
16
  */
@@ -39,7 +39,20 @@ export interface ChatRequestMessageMetadata {
39
39
  * @memberof ChatRequestMessageMetadata
40
40
  */
41
41
  synthetic?: boolean;
42
+ /**
43
+ * Set when the client wrote this message for the learner and sent it as their first turn: 'objective-nudge' is the study-objective email nudge's opening query. The learner never typed it, so its words are never read as their account of what an assessment covers. Unlike `synthetic`, the message is shown in the transcript.
44
+ * @type {string}
45
+ * @memberof ChatRequestMessageMetadata
46
+ */
47
+ seeded?: ChatRequestMessageMetadataSeededEnum;
42
48
  }
49
+ /**
50
+ * @export
51
+ */
52
+ export declare const ChatRequestMessageMetadataSeededEnum: {
53
+ readonly ObjectiveNudge: "objective-nudge";
54
+ };
55
+ export type ChatRequestMessageMetadataSeededEnum = typeof ChatRequestMessageMetadataSeededEnum[keyof typeof ChatRequestMessageMetadataSeededEnum];
43
56
  /**
44
57
  * Check if a given object implements the ChatRequestMessageMetadata interface.
45
58
  */
@@ -13,11 +13,18 @@
13
13
  * Do not edit the class manually.
14
14
  */
15
15
  Object.defineProperty(exports, "__esModule", { value: true });
16
+ exports.ChatRequestMessageMetadataSeededEnum = void 0;
16
17
  exports.instanceOfChatRequestMessageMetadata = instanceOfChatRequestMessageMetadata;
17
18
  exports.ChatRequestMessageMetadataFromJSON = ChatRequestMessageMetadataFromJSON;
18
19
  exports.ChatRequestMessageMetadataFromJSONTyped = ChatRequestMessageMetadataFromJSONTyped;
19
20
  exports.ChatRequestMessageMetadataToJSON = ChatRequestMessageMetadataToJSON;
20
21
  exports.ChatRequestMessageMetadataToJSONTyped = ChatRequestMessageMetadataToJSONTyped;
22
+ /**
23
+ * @export
24
+ */
25
+ exports.ChatRequestMessageMetadataSeededEnum = {
26
+ ObjectiveNudge: 'objective-nudge'
27
+ };
21
28
  /**
22
29
  * Check if a given object implements the ChatRequestMessageMetadata interface.
23
30
  */
@@ -36,6 +43,7 @@ function ChatRequestMessageMetadataFromJSONTyped(json, ignoreDiscriminator) {
36
43
  'questionType': json['questionType'] == null ? undefined : json['questionType'],
37
44
  'structuredAnswer': json['structuredAnswer'] == null ? undefined : json['structuredAnswer'],
38
45
  'synthetic': json['synthetic'] == null ? undefined : json['synthetic'],
46
+ 'seeded': json['seeded'] == null ? undefined : json['seeded'],
39
47
  };
40
48
  }
41
49
  function ChatRequestMessageMetadataToJSON(json) {
@@ -50,5 +58,6 @@ function ChatRequestMessageMetadataToJSONTyped(value, ignoreDiscriminator = fals
50
58
  'questionType': value['questionType'],
51
59
  'structuredAnswer': value['structuredAnswer'],
52
60
  'synthetic': value['synthetic'],
61
+ 'seeded': value['seeded'],
53
62
  };
54
63
  }
@@ -33,6 +33,18 @@ export interface ChatRequestQuizSettings {
33
33
  * @memberof ChatRequestQuizSettings
34
34
  */
35
35
  instructions?: string;
36
+ /**
37
+ * What the learner says the assessment covers, typed into the study panel's scope box (sent instead of `instructions` when the box asks what the assessment covers). The quiz is built on it, and on an objective chat it is kept as the learner's scope for that objective. An empty string means the learner cleared the box: their kept scope is cleared too.
38
+ * @type {string}
39
+ * @memberof ChatRequestQuizSettings
40
+ */
41
+ scope?: string;
42
+ /**
43
+ * `suggested` when `scope` is Athena's suggested topics (`StudyObjective.access.suggestedScope`) used unedited ("Use these topics"). Omit for anything the learner typed or edited: that scope is their own.
44
+ * @type {string}
45
+ * @memberof ChatRequestQuizSettings
46
+ */
47
+ scopeSource?: ChatRequestQuizSettingsScopeSourceEnum;
36
48
  }
37
49
  /**
38
50
  * @export
@@ -44,6 +56,13 @@ export declare const ChatRequestQuizSettingsQuestionTypesEnum: {
44
56
  readonly TeachBack: "teach-back";
45
57
  };
46
58
  export type ChatRequestQuizSettingsQuestionTypesEnum = typeof ChatRequestQuizSettingsQuestionTypesEnum[keyof typeof ChatRequestQuizSettingsQuestionTypesEnum];
59
+ /**
60
+ * @export
61
+ */
62
+ export declare const ChatRequestQuizSettingsScopeSourceEnum: {
63
+ readonly Suggested: "suggested";
64
+ };
65
+ export type ChatRequestQuizSettingsScopeSourceEnum = typeof ChatRequestQuizSettingsScopeSourceEnum[keyof typeof ChatRequestQuizSettingsScopeSourceEnum];
47
66
  /**
48
67
  * Check if a given object implements the ChatRequestQuizSettings interface.
49
68
  */
@@ -13,7 +13,7 @@
13
13
  * Do not edit the class manually.
14
14
  */
15
15
  Object.defineProperty(exports, "__esModule", { value: true });
16
- exports.ChatRequestQuizSettingsQuestionTypesEnum = void 0;
16
+ exports.ChatRequestQuizSettingsScopeSourceEnum = exports.ChatRequestQuizSettingsQuestionTypesEnum = void 0;
17
17
  exports.instanceOfChatRequestQuizSettings = instanceOfChatRequestQuizSettings;
18
18
  exports.ChatRequestQuizSettingsFromJSON = ChatRequestQuizSettingsFromJSON;
19
19
  exports.ChatRequestQuizSettingsFromJSONTyped = ChatRequestQuizSettingsFromJSONTyped;
@@ -28,6 +28,12 @@ exports.ChatRequestQuizSettingsQuestionTypesEnum = {
28
28
  SpotError: 'spot-error',
29
29
  TeachBack: 'teach-back'
30
30
  };
31
+ /**
32
+ * @export
33
+ */
34
+ exports.ChatRequestQuizSettingsScopeSourceEnum = {
35
+ Suggested: 'suggested'
36
+ };
31
37
  /**
32
38
  * Check if a given object implements the ChatRequestQuizSettings interface.
33
39
  */
@@ -45,6 +51,8 @@ function ChatRequestQuizSettingsFromJSONTyped(json, ignoreDiscriminator) {
45
51
  'questionTypes': json['questionTypes'] == null ? undefined : json['questionTypes'],
46
52
  'questionCount': json['questionCount'] == null ? undefined : json['questionCount'],
47
53
  'instructions': json['instructions'] == null ? undefined : json['instructions'],
54
+ 'scope': json['scope'] == null ? undefined : json['scope'],
55
+ 'scopeSource': json['scopeSource'] == null ? undefined : json['scopeSource'],
48
56
  };
49
57
  }
50
58
  function ChatRequestQuizSettingsToJSON(json) {
@@ -58,5 +66,7 @@ function ChatRequestQuizSettingsToJSONTyped(value, ignoreDiscriminator = false)
58
66
  'questionTypes': value['questionTypes'],
59
67
  'questionCount': value['questionCount'],
60
68
  'instructions': value['instructions'],
69
+ 'scope': value['scope'],
70
+ 'scopeSource': value['scopeSource'],
61
71
  };
62
72
  }
@@ -9,6 +9,7 @@
9
9
  * https://openapi-generator.tech
10
10
  * Do not edit the class manually.
11
11
  */
12
+ import type { QuizBasisSnapshot } from './QuizBasisSnapshot';
12
13
  /**
13
14
  *
14
15
  * @export
@@ -63,6 +64,12 @@ export interface Quiz {
63
64
  * @memberof Quiz
64
65
  */
65
66
  expectedQuestionCount: number | null;
67
+ /**
68
+ * What this quiz was built from, recorded once with the quiz so a reload or a retake reads the same. Null for quizzes generated before it was recorded.
69
+ * @type {QuizBasisSnapshot}
70
+ * @memberof Quiz
71
+ */
72
+ basisSnapshot?: QuizBasisSnapshot | null;
66
73
  /**
67
74
  *
68
75
  * @type {Date}
@@ -19,6 +19,7 @@ exports.QuizFromJSON = QuizFromJSON;
19
19
  exports.QuizFromJSONTyped = QuizFromJSONTyped;
20
20
  exports.QuizToJSON = QuizToJSON;
21
21
  exports.QuizToJSONTyped = QuizToJSONTyped;
22
+ const QuizBasisSnapshot_1 = require("./QuizBasisSnapshot");
22
23
  /**
23
24
  * @export
24
25
  */
@@ -74,6 +75,7 @@ function QuizFromJSONTyped(json, ignoreDiscriminator) {
74
75
  'mode': json['mode'],
75
76
  'generationStatus': json['generationStatus'],
76
77
  'expectedQuestionCount': json['expectedQuestionCount'],
78
+ 'basisSnapshot': json['basisSnapshot'] == null ? undefined : (0, QuizBasisSnapshot_1.QuizBasisSnapshotFromJSON)(json['basisSnapshot']),
77
79
  'createdAt': (new Date(json['createdAt'])),
78
80
  };
79
81
  }
@@ -93,6 +95,7 @@ function QuizToJSONTyped(value, ignoreDiscriminator = false) {
93
95
  'mode': value['mode'],
94
96
  'generationStatus': value['generationStatus'],
95
97
  'expectedQuestionCount': value['expectedQuestionCount'],
98
+ 'basisSnapshot': (0, QuizBasisSnapshot_1.QuizBasisSnapshotToJSON)(value['basisSnapshot']),
96
99
  'createdAt': value['createdAt'].toISOString(),
97
100
  };
98
101
  }
@@ -0,0 +1,76 @@
1
+ /**
2
+ * Athena API
3
+ * REST API for the Athena system
4
+ *
5
+ * The version of the OpenAPI document: 1.0.0
6
+ *
7
+ *
8
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
9
+ * https://openapi-generator.tech
10
+ * Do not edit the class manually.
11
+ */
12
+ /**
13
+ *
14
+ * @export
15
+ * @interface QuizBasisSnapshot
16
+ */
17
+ export interface QuizBasisSnapshot {
18
+ /**
19
+ * What the questions were actually built from: 'learner-materials' (the learner's own files, which the generator reports using), 'course-material' (course files read from Canvas, same test), 'learner-scope' (what the learner said the assessment covers), or 'general' (practice on the subject).
20
+ * @type {string}
21
+ * @memberof QuizBasisSnapshot
22
+ */
23
+ basis: QuizBasisSnapshotBasisEnum;
24
+ /**
25
+ * A learner file was in play but never reached the generator (it could not be read, or generation retried without it).
26
+ * @type {boolean}
27
+ * @memberof QuizBasisSnapshot
28
+ */
29
+ droppedFile: boolean;
30
+ /**
31
+ * Whether anything said what the assessment covers when the quiz was generated.
32
+ * @type {boolean}
33
+ * @memberof QuizBasisSnapshot
34
+ */
35
+ scopeKnown: boolean;
36
+ /**
37
+ * The course's access state at generation time; null when none was read.
38
+ * @type {string}
39
+ * @memberof QuizBasisSnapshot
40
+ */
41
+ accessState: QuizBasisSnapshotAccessStateEnum | null;
42
+ /**
43
+ * The access rule version behind accessState; null with it.
44
+ * @type {number}
45
+ * @memberof QuizBasisSnapshot
46
+ */
47
+ ruleVersion: number | null;
48
+ }
49
+ /**
50
+ * @export
51
+ */
52
+ export declare const QuizBasisSnapshotBasisEnum: {
53
+ readonly CourseMaterial: "course-material";
54
+ readonly LearnerMaterials: "learner-materials";
55
+ readonly LearnerScope: "learner-scope";
56
+ readonly General: "general";
57
+ };
58
+ export type QuizBasisSnapshotBasisEnum = typeof QuizBasisSnapshotBasisEnum[keyof typeof QuizBasisSnapshotBasisEnum];
59
+ /**
60
+ * @export
61
+ */
62
+ export declare const QuizBasisSnapshotAccessStateEnum: {
63
+ readonly Grounded: "grounded";
64
+ readonly Thin: "thin";
65
+ readonly Unreadable: "unreadable";
66
+ readonly Unknown: "unknown";
67
+ };
68
+ export type QuizBasisSnapshotAccessStateEnum = typeof QuizBasisSnapshotAccessStateEnum[keyof typeof QuizBasisSnapshotAccessStateEnum];
69
+ /**
70
+ * Check if a given object implements the QuizBasisSnapshot interface.
71
+ */
72
+ export declare function instanceOfQuizBasisSnapshot(value: object): value is QuizBasisSnapshot;
73
+ export declare function QuizBasisSnapshotFromJSON(json: any): QuizBasisSnapshot;
74
+ export declare function QuizBasisSnapshotFromJSONTyped(json: any, ignoreDiscriminator: boolean): QuizBasisSnapshot;
75
+ export declare function QuizBasisSnapshotToJSON(json: any): QuizBasisSnapshot;
76
+ export declare function QuizBasisSnapshotToJSONTyped(value?: QuizBasisSnapshot | null, ignoreDiscriminator?: boolean): any;
@@ -0,0 +1,85 @@
1
+ "use strict";
2
+ /* tslint:disable */
3
+ /* eslint-disable */
4
+ /**
5
+ * Athena API
6
+ * REST API for the Athena system
7
+ *
8
+ * The version of the OpenAPI document: 1.0.0
9
+ *
10
+ *
11
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
12
+ * https://openapi-generator.tech
13
+ * Do not edit the class manually.
14
+ */
15
+ Object.defineProperty(exports, "__esModule", { value: true });
16
+ exports.QuizBasisSnapshotAccessStateEnum = exports.QuizBasisSnapshotBasisEnum = void 0;
17
+ exports.instanceOfQuizBasisSnapshot = instanceOfQuizBasisSnapshot;
18
+ exports.QuizBasisSnapshotFromJSON = QuizBasisSnapshotFromJSON;
19
+ exports.QuizBasisSnapshotFromJSONTyped = QuizBasisSnapshotFromJSONTyped;
20
+ exports.QuizBasisSnapshotToJSON = QuizBasisSnapshotToJSON;
21
+ exports.QuizBasisSnapshotToJSONTyped = QuizBasisSnapshotToJSONTyped;
22
+ /**
23
+ * @export
24
+ */
25
+ exports.QuizBasisSnapshotBasisEnum = {
26
+ CourseMaterial: 'course-material',
27
+ LearnerMaterials: 'learner-materials',
28
+ LearnerScope: 'learner-scope',
29
+ General: 'general'
30
+ };
31
+ /**
32
+ * @export
33
+ */
34
+ exports.QuizBasisSnapshotAccessStateEnum = {
35
+ Grounded: 'grounded',
36
+ Thin: 'thin',
37
+ Unreadable: 'unreadable',
38
+ Unknown: 'unknown'
39
+ };
40
+ /**
41
+ * Check if a given object implements the QuizBasisSnapshot interface.
42
+ */
43
+ function instanceOfQuizBasisSnapshot(value) {
44
+ if (!('basis' in value) || value['basis'] === undefined)
45
+ return false;
46
+ if (!('droppedFile' in value) || value['droppedFile'] === undefined)
47
+ return false;
48
+ if (!('scopeKnown' in value) || value['scopeKnown'] === undefined)
49
+ return false;
50
+ if (!('accessState' in value) || value['accessState'] === undefined)
51
+ return false;
52
+ if (!('ruleVersion' in value) || value['ruleVersion'] === undefined)
53
+ return false;
54
+ return true;
55
+ }
56
+ function QuizBasisSnapshotFromJSON(json) {
57
+ return QuizBasisSnapshotFromJSONTyped(json, false);
58
+ }
59
+ function QuizBasisSnapshotFromJSONTyped(json, ignoreDiscriminator) {
60
+ if (json == null) {
61
+ return json;
62
+ }
63
+ return {
64
+ 'basis': json['basis'],
65
+ 'droppedFile': json['droppedFile'],
66
+ 'scopeKnown': json['scopeKnown'],
67
+ 'accessState': json['accessState'],
68
+ 'ruleVersion': json['ruleVersion'],
69
+ };
70
+ }
71
+ function QuizBasisSnapshotToJSON(json) {
72
+ return QuizBasisSnapshotToJSONTyped(json, false);
73
+ }
74
+ function QuizBasisSnapshotToJSONTyped(value, ignoreDiscriminator = false) {
75
+ if (value == null) {
76
+ return value;
77
+ }
78
+ return {
79
+ 'basis': value['basis'],
80
+ 'droppedFile': value['droppedFile'],
81
+ 'scopeKnown': value['scopeKnown'],
82
+ 'accessState': value['accessState'],
83
+ 'ruleVersion': value['ruleVersion'],
84
+ };
85
+ }
@@ -9,6 +9,7 @@
9
9
  * https://openapi-generator.tech
10
10
  * Do not edit the class manually.
11
11
  */
12
+ import type { QuizBasisSnapshot } from './QuizBasisSnapshot';
12
13
  /**
13
14
  *
14
15
  * @export
@@ -63,6 +64,12 @@ export interface QuizListItem {
63
64
  * @memberof QuizListItem
64
65
  */
65
66
  expectedQuestionCount: number | null;
67
+ /**
68
+ * What this quiz was built from, recorded once with the quiz so a reload or a retake reads the same. Null for quizzes generated before it was recorded.
69
+ * @type {QuizBasisSnapshot}
70
+ * @memberof QuizListItem
71
+ */
72
+ basisSnapshot?: QuizBasisSnapshot | null;
66
73
  /**
67
74
  *
68
75
  * @type {Date}
@@ -19,6 +19,7 @@ exports.QuizListItemFromJSON = QuizListItemFromJSON;
19
19
  exports.QuizListItemFromJSONTyped = QuizListItemFromJSONTyped;
20
20
  exports.QuizListItemToJSON = QuizListItemToJSON;
21
21
  exports.QuizListItemToJSONTyped = QuizListItemToJSONTyped;
22
+ const QuizBasisSnapshot_1 = require("./QuizBasisSnapshot");
22
23
  /**
23
24
  * @export
24
25
  */
@@ -76,6 +77,7 @@ function QuizListItemFromJSONTyped(json, ignoreDiscriminator) {
76
77
  'mode': json['mode'],
77
78
  'generationStatus': json['generationStatus'],
78
79
  'expectedQuestionCount': json['expectedQuestionCount'],
80
+ 'basisSnapshot': json['basisSnapshot'] == null ? undefined : (0, QuizBasisSnapshot_1.QuizBasisSnapshotFromJSON)(json['basisSnapshot']),
79
81
  'createdAt': (new Date(json['createdAt'])),
80
82
  'questionCount': json['questionCount'],
81
83
  };
@@ -96,6 +98,7 @@ function QuizListItemToJSONTyped(value, ignoreDiscriminator = false) {
96
98
  'mode': value['mode'],
97
99
  'generationStatus': value['generationStatus'],
98
100
  'expectedQuestionCount': value['expectedQuestionCount'],
101
+ 'basisSnapshot': (0, QuizBasisSnapshot_1.QuizBasisSnapshotToJSON)(value['basisSnapshot']),
99
102
  'createdAt': value['createdAt'].toISOString(),
100
103
  'questionCount': value['questionCount'],
101
104
  };
@@ -10,6 +10,7 @@
10
10
  * Do not edit the class manually.
11
11
  */
12
12
  import type { QuizQuestion } from './QuizQuestion';
13
+ import type { QuizBasisSnapshot } from './QuizBasisSnapshot';
13
14
  /**
14
15
  *
15
16
  * @export
@@ -64,6 +65,12 @@ export interface QuizWithQuestions {
64
65
  * @memberof QuizWithQuestions
65
66
  */
66
67
  expectedQuestionCount: number | null;
68
+ /**
69
+ * What this quiz was built from, recorded once with the quiz so a reload or a retake reads the same. Null for quizzes generated before it was recorded.
70
+ * @type {QuizBasisSnapshot}
71
+ * @memberof QuizWithQuestions
72
+ */
73
+ basisSnapshot?: QuizBasisSnapshot | null;
67
74
  /**
68
75
  *
69
76
  * @type {Date}
@@ -20,6 +20,7 @@ exports.QuizWithQuestionsFromJSONTyped = QuizWithQuestionsFromJSONTyped;
20
20
  exports.QuizWithQuestionsToJSON = QuizWithQuestionsToJSON;
21
21
  exports.QuizWithQuestionsToJSONTyped = QuizWithQuestionsToJSONTyped;
22
22
  const QuizQuestion_1 = require("./QuizQuestion");
23
+ const QuizBasisSnapshot_1 = require("./QuizBasisSnapshot");
23
24
  /**
24
25
  * @export
25
26
  */
@@ -77,6 +78,7 @@ function QuizWithQuestionsFromJSONTyped(json, ignoreDiscriminator) {
77
78
  'mode': json['mode'],
78
79
  'generationStatus': json['generationStatus'],
79
80
  'expectedQuestionCount': json['expectedQuestionCount'],
81
+ 'basisSnapshot': json['basisSnapshot'] == null ? undefined : (0, QuizBasisSnapshot_1.QuizBasisSnapshotFromJSON)(json['basisSnapshot']),
80
82
  'createdAt': (new Date(json['createdAt'])),
81
83
  'questions': (json['questions'].map(QuizQuestion_1.QuizQuestionFromJSON)),
82
84
  };
@@ -97,6 +99,7 @@ function QuizWithQuestionsToJSONTyped(value, ignoreDiscriminator = false) {
97
99
  'mode': value['mode'],
98
100
  'generationStatus': value['generationStatus'],
99
101
  'expectedQuestionCount': value['expectedQuestionCount'],
102
+ 'basisSnapshot': (0, QuizBasisSnapshot_1.QuizBasisSnapshotToJSON)(value['basisSnapshot']),
100
103
  'createdAt': value['createdAt'].toISOString(),
101
104
  'questions': (value['questions'].map(QuizQuestion_1.QuizQuestionToJSON)),
102
105
  };
@@ -70,7 +70,7 @@ export interface StudyObjectiveAccess {
70
70
  */
71
71
  externalToolItemCount: number | null;
72
72
  /**
73
- * Readable files in the module that holds this item (a quiz or assignment), checked against the course files list. Null when the item is in no module, is another kind of item, or either listing could not be read.
73
+ * Readable files in the module that holds this item (a quiz or assignment): checked against the course files list, or, when Canvas refused that list (rule 4 on), counted from the module's own File items. Null when the item is in no module, is another kind of item, or modules could not be listed.
74
74
  * @type {number}
75
75
  * @memberof StudyObjectiveAccess
76
76
  */
@@ -81,6 +81,18 @@ export interface StudyObjectiveAccess {
81
81
  * @memberof StudyObjectiveAccess
82
82
  */
83
83
  moduleSiblingPageCount: number | null;
84
+ /**
85
+ * Readable files the course publishes through Modules (File items of a supported type, not locked for the learner; one per file). The file count to name only when readableFileCount is null (Canvas refused the course files list, e.g. a hidden Files tab); never add it to readableFileCount, since module links point at listed files. Null when modules could not be listed, and on facts read before rule 4.
86
+ * @type {number}
87
+ * @memberof StudyObjectiveAccess
88
+ */
89
+ moduleReadableFileCount: number | null;
90
+ /**
91
+ * Files of a supported type published through Modules that are locked for the learner (one per file). Read only when readableFileCount is null, like moduleReadableFileCount. Null when modules could not be listed, and on facts read before rule 4.
92
+ * @type {number}
93
+ * @memberof StudyObjectiveAccess
94
+ */
95
+ moduleLockedFileCount: number | null;
84
96
  /**
85
97
  * Version of the rule that produced `state`, for joining client analytics to the rule that was live.
86
98
  * @type {number}
@@ -93,6 +105,12 @@ export interface StudyObjectiveAccess {
93
105
  * @memberof StudyObjectiveAccess
94
106
  */
95
107
  readAt: Date;
108
+ /**
109
+ * Topics the learner's syllabus schedule suggests this item covers, inferred by syllabus analysis, for the scope box to offer as Athena's best guess. Null while `scopeKnown` is true, when the learner has given a scope of their own, or when their syllabus suggests nothing. A suggestion is not evidence: it never sets `scopeKnown`.
110
+ * @type {Array<string>}
111
+ * @memberof StudyObjectiveAccess
112
+ */
113
+ suggestedScope: Array<string> | null;
96
114
  }
97
115
  /**
98
116
  * @export
@@ -78,10 +78,16 @@ function instanceOfStudyObjectiveAccess(value) {
78
78
  return false;
79
79
  if (!('moduleSiblingPageCount' in value) || value['moduleSiblingPageCount'] === undefined)
80
80
  return false;
81
+ if (!('moduleReadableFileCount' in value) || value['moduleReadableFileCount'] === undefined)
82
+ return false;
83
+ if (!('moduleLockedFileCount' in value) || value['moduleLockedFileCount'] === undefined)
84
+ return false;
81
85
  if (!('ruleVersion' in value) || value['ruleVersion'] === undefined)
82
86
  return false;
83
87
  if (!('readAt' in value) || value['readAt'] === undefined)
84
88
  return false;
89
+ if (!('suggestedScope' in value) || value['suggestedScope'] === undefined)
90
+ return false;
85
91
  return true;
86
92
  }
87
93
  function StudyObjectiveAccessFromJSON(json) {
@@ -103,8 +109,11 @@ function StudyObjectiveAccessFromJSONTyped(json, ignoreDiscriminator) {
103
109
  'externalToolItemCount': json['externalToolItemCount'],
104
110
  'moduleSiblingFileCount': json['moduleSiblingFileCount'],
105
111
  'moduleSiblingPageCount': json['moduleSiblingPageCount'],
112
+ 'moduleReadableFileCount': json['moduleReadableFileCount'],
113
+ 'moduleLockedFileCount': json['moduleLockedFileCount'],
106
114
  'ruleVersion': json['ruleVersion'],
107
115
  'readAt': (new Date(json['readAt'])),
116
+ 'suggestedScope': json['suggestedScope'] == null ? null : json['suggestedScope'],
108
117
  };
109
118
  }
110
119
  function StudyObjectiveAccessToJSON(json) {
@@ -126,7 +135,10 @@ function StudyObjectiveAccessToJSONTyped(value, ignoreDiscriminator = false) {
126
135
  'externalToolItemCount': value['externalToolItemCount'],
127
136
  'moduleSiblingFileCount': value['moduleSiblingFileCount'],
128
137
  'moduleSiblingPageCount': value['moduleSiblingPageCount'],
138
+ 'moduleReadableFileCount': value['moduleReadableFileCount'],
139
+ 'moduleLockedFileCount': value['moduleLockedFileCount'],
129
140
  'ruleVersion': value['ruleVersion'],
130
141
  'readAt': value['readAt'].toISOString(),
142
+ 'suggestedScope': value['suggestedScope'],
131
143
  };
132
144
  }
@@ -128,6 +128,7 @@ export * from './PracticeQuiz';
128
128
  export * from './PracticeQuizStatus';
129
129
  export * from './PracticeQuizStatusList';
130
130
  export * from './Quiz';
131
+ export * from './QuizBasisSnapshot';
131
132
  export * from './QuizConceptSummary';
132
133
  export * from './QuizListItem';
133
134
  export * from './QuizQuestion';
@@ -146,6 +146,7 @@ __exportStar(require("./PracticeQuiz"), exports);
146
146
  __exportStar(require("./PracticeQuizStatus"), exports);
147
147
  __exportStar(require("./PracticeQuizStatusList"), exports);
148
148
  __exportStar(require("./Quiz"), exports);
149
+ __exportStar(require("./QuizBasisSnapshot"), exports);
149
150
  __exportStar(require("./QuizConceptSummary"), exports);
150
151
  __exportStar(require("./QuizListItem"), exports);
151
152
  __exportStar(require("./QuizQuestion"), exports);
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@instructure/athena-api-client",
3
3
  "private": false,
4
- "version": "3.43.0",
4
+ "version": "3.44.0",
5
5
  "description": "OpenAPI client for the Athena API",
6
6
  "author": "Instructure",
7
7
  "repository": {