@examplary/sdk 1.0.0 → 1.0.2

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.
@@ -1,5 +1,5 @@
1
1
  export type ClientOptions = {
2
- baseURL: 'https://api.examplary.ai' | (string & {});
2
+ baseURL: 'https://api.examplary.ai' | 'https://api-staging.examplary.ai' | (string & {});
3
3
  };
4
4
  export type GetQuestionTypesPublicData = {
5
5
  body?: never;
@@ -78,7 +78,7 @@ export type PostQuestionTypesData = {
78
78
  /**
79
79
  * Optional instructions to guide AI in generating this question type
80
80
  */
81
- instructions?: string;
81
+ instructions?: string | Array<string>;
82
82
  };
83
83
  /**
84
84
  * Options for AI question grading
@@ -91,7 +91,16 @@ export type PostQuestionTypesData = {
91
91
  /**
92
92
  * Optional instructions to guide AI in grading this question type
93
93
  */
94
- instructions?: string;
94
+ instructions?: string | Array<string>;
95
+ };
96
+ /**
97
+ * Options for AI question scanning
98
+ */
99
+ scanning?: {
100
+ /**
101
+ * Optional instructions to guide AI in converting answers for this question type when scanning documents
102
+ */
103
+ instructions?: string | Array<string>;
95
104
  };
96
105
  /**
97
106
  * Estimated time in minutes to complete this question type
@@ -202,7 +211,7 @@ export type PostQuestionTypesData = {
202
211
  /**
203
212
  * Default value for the setting
204
213
  */
205
- default?: unknown;
214
+ default?: unknown | null;
206
215
  /**
207
216
  * Whether this setting is required
208
217
  */
@@ -227,7 +236,7 @@ export type PostQuestionTypesData = {
227
236
  */
228
237
  placeholder?: string | {
229
238
  [key: string]: string;
230
- };
239
+ } | null;
231
240
  /**
232
241
  * Step value for number type settings
233
242
  */
@@ -253,6 +262,16 @@ export type PostQuestionTypesData = {
253
262
  [key: string]: string;
254
263
  };
255
264
  };
265
+ /**
266
+ * Capabilities of the question type for various operations
267
+ */
268
+ capabilities?: {
269
+ /**
270
+ * Whether this question type allows the student to scan an answer using their phone. Only supported for practice spaces.
271
+ */
272
+ 'answer-scanning'?: boolean;
273
+ [key: string]: unknown;
274
+ };
256
275
  /**
257
276
  * Export configuration for various formats
258
277
  */
@@ -274,14 +293,15 @@ export type PostQuestionTypesData = {
274
293
  };
275
294
  };
276
295
  };
277
- stylesheet?: string;
278
- index?: number;
279
296
  /**
280
297
  * Optional metadata for the question type, only used by external applications
281
298
  */
282
299
  metadata?: {
283
300
  [key: string]: string | number | boolean | null;
284
301
  };
302
+ stylesheet?: string;
303
+ index?: number;
304
+ isDefault?: boolean;
285
305
  };
286
306
  path?: never;
287
307
  query?: never;
@@ -515,6 +535,157 @@ export type PostEmbedSessionsData = {
515
535
  intendedDuration?: unknown | null;
516
536
  allowedGenerationQuestionTypes?: Array<string> | null;
517
537
  };
538
+ } | {
539
+ /**
540
+ * The user ID for whom the embed session is created
541
+ */
542
+ actor: string;
543
+ /**
544
+ * UI options for the embed session
545
+ */
546
+ theme: {
547
+ /**
548
+ * CSS hex color code for primary UI elements, either #RRGGBB or #RGB
549
+ */
550
+ primaryColor?: string;
551
+ /**
552
+ * Locale code for UI language. Currently supported: 'en', 'nl' - other values accepted, but will default to English
553
+ */
554
+ locale?: string;
555
+ };
556
+ /**
557
+ * Additional key-value metadata
558
+ */
559
+ metadata?: {
560
+ [key: string]: string | number | boolean | null;
561
+ };
562
+ /**
563
+ * Optional redirect URL after completion
564
+ */
565
+ returnUrl?: string;
566
+ /**
567
+ * Optional allowed origin for postMessage events
568
+ */
569
+ allowedOrigin?: string;
570
+ flow: 'edit-rubric';
571
+ /**
572
+ * Preset values for the edit-rubric flow
573
+ */
574
+ presets: {
575
+ rubric?: {
576
+ rubricType?: 'simple' | 'analytical' | 'holistic' | 'exact-values' | null;
577
+ criteria?: Array<{
578
+ id: string;
579
+ title?: string | null;
580
+ description?: string | null;
581
+ points?: number | null;
582
+ minPoints?: number | null;
583
+ maxPoints?: number | null;
584
+ levels?: Array<{
585
+ id: string;
586
+ title?: string | null;
587
+ description?: string | null;
588
+ points?: number | null;
589
+ minPoints?: number | null;
590
+ maxPoints?: number | null;
591
+ }> | null;
592
+ }> | null;
593
+ exactValuesCaseInsensitive?: boolean | null;
594
+ guidance?: string | null;
595
+ modelAnswer?: string | null;
596
+ templateId?: string | null;
597
+ } | null;
598
+ showDoneButton?: boolean | null;
599
+ };
600
+ } | {
601
+ /**
602
+ * The user ID for whom the embed session is created
603
+ */
604
+ actor: string;
605
+ /**
606
+ * UI options for the embed session
607
+ */
608
+ theme: {
609
+ /**
610
+ * CSS hex color code for primary UI elements, either #RRGGBB or #RGB
611
+ */
612
+ primaryColor?: string;
613
+ /**
614
+ * Locale code for UI language. Currently supported: 'en', 'nl' - other values accepted, but will default to English
615
+ */
616
+ locale?: string;
617
+ };
618
+ /**
619
+ * Additional key-value metadata
620
+ */
621
+ metadata?: {
622
+ [key: string]: string | number | boolean | null;
623
+ };
624
+ /**
625
+ * Optional redirect URL after completion
626
+ */
627
+ returnUrl?: string;
628
+ /**
629
+ * Optional allowed origin for postMessage events
630
+ */
631
+ allowedOrigin?: string;
632
+ flow: 'generate-question';
633
+ /**
634
+ * Preset values for the generate-question flow
635
+ */
636
+ presets: {
637
+ studentLevel?: string | null;
638
+ sourceMaterialIds?: Array<string> | null;
639
+ subject?: string | null;
640
+ context?: string | null;
641
+ language?: string | null;
642
+ hideSubject?: boolean | null;
643
+ hideStudentLevel?: boolean | null;
644
+ questionType?: string | null;
645
+ outputFormat?: 'examplary_json' | 'qti_v3p0' | 'qti_v2p1' | null;
646
+ };
647
+ } | {
648
+ /**
649
+ * The user ID for whom the embed session is created
650
+ */
651
+ actor: string;
652
+ /**
653
+ * UI options for the embed session
654
+ */
655
+ theme: {
656
+ /**
657
+ * CSS hex color code for primary UI elements, either #RRGGBB or #RGB
658
+ */
659
+ primaryColor?: string;
660
+ /**
661
+ * Locale code for UI language. Currently supported: 'en', 'nl' - other values accepted, but will default to English
662
+ */
663
+ locale?: string;
664
+ };
665
+ /**
666
+ * Additional key-value metadata
667
+ */
668
+ metadata?: {
669
+ [key: string]: string | number | boolean | null;
670
+ };
671
+ /**
672
+ * Optional redirect URL after completion
673
+ */
674
+ returnUrl?: string;
675
+ /**
676
+ * Optional allowed origin for postMessage events
677
+ */
678
+ allowedOrigin?: string;
679
+ flow: 'mark-answer';
680
+ /**
681
+ * Preset values for the mark-answer flow
682
+ */
683
+ presets: {
684
+ examId: string;
685
+ sessionId: string;
686
+ questionId: string;
687
+ hideScoringCriteria?: boolean | null;
688
+ };
518
689
  };
519
690
  path?: never;
520
691
  query?: never;
@@ -525,7 +696,7 @@ export type PostEmbedSessionsResponses = {
525
696
  id: string;
526
697
  status: 'pending' | 'started' | 'completed' | 'failed' | 'cancelled';
527
698
  embedUrl: string;
528
- flow: 'generate-exam';
699
+ flow: 'generate-exam' | 'generate-question' | 'edit-rubric' | 'mark-answer';
529
700
  actor: string;
530
701
  enabledResponseModes: Array<'return_url' | 'post_message'>;
531
702
  createdAt: Date;
@@ -572,7 +743,7 @@ export type GetEmbedSessionsByIdResponses = {
572
743
  id: string;
573
744
  status: 'pending' | 'started' | 'completed' | 'failed' | 'cancelled';
574
745
  embedUrl: string;
575
- flow: 'generate-exam';
746
+ flow: 'generate-exam' | 'generate-question' | 'edit-rubric' | 'mark-answer';
576
747
  actor: string;
577
748
  enabledResponseModes: Array<'return_url' | 'post_message'>;
578
749
  createdAt: Date;
@@ -663,11 +834,28 @@ export type PatchOrgData = {
663
834
  body?: {
664
835
  name?: string;
665
836
  logoImageUrl?: string;
837
+ menuColor?: string | string;
838
+ accentColor?: string | string;
839
+ sharingBlockPublic?: boolean;
666
840
  };
667
841
  path?: never;
668
842
  query?: never;
669
843
  url: '/org';
670
844
  };
845
+ export type GetOrgCustomDomainData = {
846
+ body?: never;
847
+ path?: never;
848
+ query?: never;
849
+ url: '/org/custom-domain';
850
+ };
851
+ export type PostOrgCustomDomainData = {
852
+ body?: {
853
+ customDomain?: string | null;
854
+ };
855
+ path?: never;
856
+ query?: never;
857
+ url: '/org/custom-domain';
858
+ };
671
859
  export type GetOrgsData = {
672
860
  body?: never;
673
861
  path?: never;
@@ -694,6 +882,61 @@ export type PostApiKeysResetData = {
694
882
  query?: never;
695
883
  url: '/api-keys/reset';
696
884
  };
885
+ export type GetAttributesData = {
886
+ body?: never;
887
+ path?: never;
888
+ query?: never;
889
+ url: '/attributes';
890
+ };
891
+ export type PostAttributesData = {
892
+ body?: {
893
+ name: string;
894
+ attributeType: 'string' | 'category' | 'studentLevel' | 'subject';
895
+ options?: Array<string>;
896
+ showInStudentDashboard?: boolean;
897
+ showAsStudentPreference?: boolean;
898
+ position?: number;
899
+ appearanceColor?: string | string | null;
900
+ };
901
+ path?: never;
902
+ query?: never;
903
+ url: '/attributes';
904
+ };
905
+ export type PostAttributesReorderData = {
906
+ body?: {
907
+ order: Array<{
908
+ id: string;
909
+ position: number;
910
+ }>;
911
+ };
912
+ path?: never;
913
+ query?: never;
914
+ url: '/attributes/reorder';
915
+ };
916
+ export type DeleteAttributesByIdData = {
917
+ body?: never;
918
+ path: {
919
+ id: string;
920
+ };
921
+ query?: never;
922
+ url: '/attributes/{id}';
923
+ };
924
+ export type PostAttributesByIdData = {
925
+ body?: {
926
+ name?: string;
927
+ attributeType?: 'string' | 'category' | 'studentLevel' | 'subject';
928
+ options?: Array<string>;
929
+ showInStudentDashboard?: boolean;
930
+ showAsStudentPreference?: boolean;
931
+ position?: number;
932
+ appearanceColor?: string | string | null;
933
+ };
934
+ path: {
935
+ id: string;
936
+ };
937
+ query?: never;
938
+ url: '/attributes/{id}';
939
+ };
697
940
  export type GetTaxonomiesData = {
698
941
  body?: never;
699
942
  path?: never;
@@ -731,10 +974,7 @@ export type PostTaxonomiesByIdData = {
731
974
  name?: string;
732
975
  instructions?: string;
733
976
  }>;
734
- [key: string]: unknown | string | string | Array<{
735
- name?: string;
736
- instructions?: string;
737
- }> | undefined;
977
+ [key: string]: unknown;
738
978
  };
739
979
  path: {
740
980
  id: string;
@@ -764,7 +1004,13 @@ export type GetPermissionsByResourceResponses = {
764
1004
  * List of permissions for the specified resource.
765
1005
  */
766
1006
  200: Array<{
767
- actor: string | string | string;
1007
+ actor: {
1008
+ id: string;
1009
+ name?: string;
1010
+ avatar?: string;
1011
+ type: 'user' | 'group' | 'org';
1012
+ orgRole?: 'owner' | 'admin' | 'teacher' | 'student' | 'member';
1013
+ };
768
1014
  role: 'owner' | 'manager' | 'editor' | 'viewer' | 'participant';
769
1015
  createdAt: Date;
770
1016
  updatedAt: Date;
@@ -775,10 +1021,20 @@ export type GetPermissionsByResourceResponse = GetPermissionsByResourceResponses
775
1021
  export type PostPermissionsByResourceData = {
776
1022
  body?: {
777
1023
  /**
778
- * The ID of the actor to assign the permission to.
1024
+ * The ID of the actor to assign the permission to, e.g. `user_1234`, `group_1234` or `org_1234`.
779
1025
  */
780
- actor: string | string | string;
1026
+ actor: string;
781
1027
  role: 'owner' | 'manager' | 'editor' | 'viewer' | 'participant';
1028
+ } | {
1029
+ /**
1030
+ * The email of the user to add or invite.
1031
+ */
1032
+ email: string;
1033
+ role: 'owner' | 'manager' | 'editor' | 'viewer' | 'participant';
1034
+ /**
1035
+ * Whether to send an invitation email if the user does not exist. Defaults to false.
1036
+ */
1037
+ sendInvite?: boolean;
782
1038
  };
783
1039
  path: {
784
1040
  /**
@@ -800,7 +1056,13 @@ export type PostPermissionsByResourceResponses = {
800
1056
  * The created or updated permission.
801
1057
  */
802
1058
  201: {
803
- actor: string | string | string;
1059
+ actor: {
1060
+ id: string;
1061
+ name?: string;
1062
+ avatar?: string;
1063
+ type: 'user' | 'group' | 'org';
1064
+ orgRole?: 'owner' | 'admin' | 'teacher' | 'student' | 'member';
1065
+ };
804
1066
  role: 'owner' | 'manager' | 'editor' | 'viewer' | 'participant';
805
1067
  createdAt: Date;
806
1068
  updatedAt: Date;
@@ -859,7 +1121,13 @@ export type GetPermissionsByResourceByActorResponses = {
859
1121
  * Role of the specified actor for the specified resource.
860
1122
  */
861
1123
  200: {
862
- actor: string | string | string;
1124
+ actor: {
1125
+ id: string;
1126
+ name?: string;
1127
+ avatar?: string;
1128
+ type: 'user' | 'group' | 'org';
1129
+ orgRole?: 'owner' | 'admin' | 'teacher' | 'student' | 'member';
1130
+ };
863
1131
  role: 'owner' | 'manager' | 'editor' | 'viewer' | 'participant';
864
1132
  createdAt: Date;
865
1133
  updatedAt: Date;
@@ -884,6 +1152,9 @@ export type PostUsersData = {
884
1152
  email: string;
885
1153
  name?: string;
886
1154
  role?: 'owner' | 'admin' | 'teacher' | 'student' | 'member';
1155
+ /**
1156
+ * Whether to send an invitation email. Defaults to false.
1157
+ */
887
1158
  sendInvite?: boolean;
888
1159
  };
889
1160
  path?: never;
@@ -915,7 +1186,29 @@ export type GetExamsByIdSessionsData = {
915
1186
  url: '/exams/{id}/sessions';
916
1187
  };
917
1188
  export type PostExamsByIdSessionsData = {
918
- body?: never;
1189
+ body?: {
1190
+ studentName: string;
1191
+ source?: 'online-assessment' | 'document-scanner' | 'answer-bot' | 'manual';
1192
+ answers?: Array<{
1193
+ question: string | string;
1194
+ value?: string | Array<string | null> | null;
1195
+ completed?: boolean | null;
1196
+ context?: unknown | null;
1197
+ pointsAwarded?: number | null;
1198
+ pointsToEarn?: number | null;
1199
+ feedback?: string | null;
1200
+ scoringCriteria?: unknown | null;
1201
+ savedAt?: Date;
1202
+ gradedAt?: Date | null;
1203
+ gradedBy?: string | null;
1204
+ gradingStatus?: 'graded' | 'auto-graded' | null;
1205
+ originalValue?: string | Array<string | null> | null;
1206
+ editedBy?: string | null;
1207
+ editedAt?: Date | null;
1208
+ masteryTopicId?: string | null;
1209
+ traceIds?: Array<string> | null;
1210
+ }>;
1211
+ };
919
1212
  path: {
920
1213
  id: string;
921
1214
  };
@@ -1012,6 +1305,27 @@ export type PostExamsByIdSessionsBySessionIdSuggestionsByQuestionIdAcceptData =
1012
1305
  query?: never;
1013
1306
  url: '/exams/{id}/sessions/{sessionId}/suggestions/{questionId}/accept';
1014
1307
  };
1308
+ export type PatchExamsByIdSessionsBySessionIdAnswersByQuestionIdData = {
1309
+ body?: {
1310
+ answer: {
1311
+ question: string | string;
1312
+ value?: string | Array<string | null> | null;
1313
+ completed?: boolean | null;
1314
+ context?: unknown | null;
1315
+ };
1316
+ /**
1317
+ * Whether to automatically grade the answer after editing
1318
+ */
1319
+ autoGrade?: boolean;
1320
+ };
1321
+ path: {
1322
+ id: string;
1323
+ sessionId: string;
1324
+ questionId: string;
1325
+ };
1326
+ query?: never;
1327
+ url: '/exams/{id}/sessions/{sessionId}/answers/{questionId}';
1328
+ };
1015
1329
  export type PostExamsByIdQuestionsImportData = {
1016
1330
  body?: {
1017
1331
  /**
@@ -1044,6 +1358,7 @@ export type PostExamsByIdQuestionsImportData = {
1044
1358
  export type PostExamsByIdQuestionsGenerateData = {
1045
1359
  body?: {
1046
1360
  message: string;
1361
+ questionType?: string;
1047
1362
  };
1048
1363
  path: {
1049
1364
  id: string;
@@ -1051,6 +1366,26 @@ export type PostExamsByIdQuestionsGenerateData = {
1051
1366
  query?: never;
1052
1367
  url: '/exams/{id}/questions/generate';
1053
1368
  };
1369
+ export type GetExamsByIdQuestionsByQuestionIdData = {
1370
+ body?: never;
1371
+ path: {
1372
+ /**
1373
+ * Exam ID, e.g. `exam_1234`.
1374
+ */
1375
+ id: string;
1376
+ /**
1377
+ * Question ID, e.g. `question_1234`, or `first` to get the first question.
1378
+ */
1379
+ questionId: string;
1380
+ };
1381
+ query?: {
1382
+ /**
1383
+ * The format to return the question in. `examplary_json` returns the question in the Examplary JSON format, while `qti_v3p0` and `qti_v2p1` return the question in QTI format version 3 and 2.1 respectively.
1384
+ */
1385
+ format?: 'examplary_json' | 'qti_v3p0' | 'qti_v2p1';
1386
+ };
1387
+ url: '/exams/{id}/questions/{questionId}';
1388
+ };
1054
1389
  export type PostExamsByIdQuestionsByQuestionIdGenerateData = {
1055
1390
  body?: {
1056
1391
  message: string;
@@ -1110,6 +1445,10 @@ export type GetExamsData = {
1110
1445
  * Optional filter by folder ID, e.g. `folder_1234`.
1111
1446
  */
1112
1447
  folder?: string;
1448
+ /**
1449
+ * Optional filter by permission role.
1450
+ */
1451
+ role?: 'owner' | 'manager' | 'editor' | 'viewer' | 'participant';
1113
1452
  };
1114
1453
  url: '/exams';
1115
1454
  };
@@ -1124,6 +1463,54 @@ export type PostExamsData = {
1124
1463
  taxonomyId?: string | null;
1125
1464
  intendedDuration?: unknown | null;
1126
1465
  allowedGenerationQuestionTypes?: Array<string> | null;
1466
+ metadata?: {
1467
+ [key: string]: string | number | boolean | null;
1468
+ } | null;
1469
+ questions?: Array<{
1470
+ id?: string;
1471
+ type?: string;
1472
+ title?: string | null;
1473
+ description?: string | null;
1474
+ settings?: {
1475
+ [key: string]: unknown;
1476
+ };
1477
+ scoring?: {
1478
+ rubricType?: 'simple' | 'analytical' | 'holistic' | 'exact-values' | null;
1479
+ criteria?: Array<{
1480
+ id: string;
1481
+ title?: string | null;
1482
+ description?: string | null;
1483
+ points?: number | null;
1484
+ minPoints?: number | null;
1485
+ maxPoints?: number | null;
1486
+ levels?: Array<{
1487
+ id: string;
1488
+ title?: string | null;
1489
+ description?: string | null;
1490
+ points?: number | null;
1491
+ minPoints?: number | null;
1492
+ maxPoints?: number | null;
1493
+ }> | null;
1494
+ }> | null;
1495
+ exactValuesCaseInsensitive?: boolean | null;
1496
+ guidance?: string | null;
1497
+ modelAnswer?: string | null;
1498
+ templateId?: string | null;
1499
+ } | null;
1500
+ tags?: Array<string> | null;
1501
+ metadata?: {
1502
+ [key: string]: string | number | boolean | null;
1503
+ } | null;
1504
+ v?: number | null;
1505
+ questionBankItemId?: string | null;
1506
+ traceIds?: Array<string> | null;
1507
+ scoringCriteria?: Array<{
1508
+ id?: string;
1509
+ description?: string | null;
1510
+ points?: number | null;
1511
+ }> | null;
1512
+ [key: string]: unknown;
1513
+ }> | null;
1127
1514
  permissions?: Array<{
1128
1515
  actor: string;
1129
1516
  role: 'owner' | 'manager' | 'editor' | 'viewer' | 'participant';
@@ -1217,6 +1604,10 @@ export type GetPracticeSpacesData = {
1217
1604
  * Optional filter by folder ID, e.g. `folder_1234`.
1218
1605
  */
1219
1606
  folder?: string;
1607
+ /**
1608
+ * Optional filter by permission role.
1609
+ */
1610
+ role?: 'owner' | 'manager' | 'editor' | 'viewer' | 'participant';
1220
1611
  };
1221
1612
  url: '/practice-spaces';
1222
1613
  };
@@ -1256,20 +1647,21 @@ export type PostPracticeSpacesData = {
1256
1647
  color?: string | null;
1257
1648
  }> | null;
1258
1649
  } | null;
1650
+ appearanceColor?: string | string | null;
1651
+ appearanceIconName?: string | null;
1259
1652
  'safeExamBrowser.showInstallLink'?: boolean | null;
1260
1653
  'safeExamBrowser.allowQuit'?: boolean | null;
1261
1654
  'safeExamBrowser.showTime'?: boolean | null;
1262
1655
  'safeExamBrowser.allowWlan'?: boolean | null;
1263
1656
  'safeExamBrowser.allowSpellCheck'?: boolean | null;
1264
1657
  showHints?: boolean;
1265
- [key: string]: unknown | string | null | number | null | unknown | null | boolean | null | boolean | null | boolean | null | string | null | boolean | null | boolean | null | boolean | null | string | null | string | null | string | null | string | null | boolean | null | boolean | null | string | null | Array<string> | null | boolean | null | {
1266
- type: 'points' | 'percentage' | 'out-of-10' | 'custom' | 'custom:letters' | 'custom:pass-fail' | 'custom:proficiency';
1267
- ranges?: Array<{
1268
- label?: string | null;
1269
- startPercentage?: number | null;
1270
- color?: string | null;
1271
- }> | null;
1272
- } | null | boolean | null | boolean | null | boolean | null | boolean | null | boolean | null | boolean | undefined;
1658
+ allowCustomPrompt?: boolean;
1659
+ showTopicProgress?: boolean;
1660
+ showProficiencyBadge?: boolean;
1661
+ proficiencyPercentage?: number;
1662
+ proficiencyQuestionsCount?: number;
1663
+ proficiencyDaysCount?: number;
1664
+ [key: string]: unknown;
1273
1665
  };
1274
1666
  folder?: string | null;
1275
1667
  permissions?: Array<{
@@ -1277,6 +1669,10 @@ export type PostPracticeSpacesData = {
1277
1669
  role: 'owner' | 'manager' | 'editor' | 'viewer' | 'participant';
1278
1670
  }> | null;
1279
1671
  studentNotes?: string | null;
1672
+ published?: 'published' | 'unpublished';
1673
+ metadata?: {
1674
+ [key: string]: string | number | boolean | null;
1675
+ };
1280
1676
  };
1281
1677
  path?: never;
1282
1678
  query?: never;
@@ -1298,7 +1694,7 @@ export type GetPracticeSpacesByIdData = {
1298
1694
  query?: never;
1299
1695
  url: '/practice-spaces/{id}';
1300
1696
  };
1301
- export type PostPracticeSpacesByIdData = {
1697
+ export type PatchPracticeSpacesByIdData = {
1302
1698
  body?: {
1303
1699
  name?: string;
1304
1700
  settings?: {
@@ -1329,20 +1725,21 @@ export type PostPracticeSpacesByIdData = {
1329
1725
  color?: string | null;
1330
1726
  }> | null;
1331
1727
  } | null;
1728
+ appearanceColor?: string | string | null;
1729
+ appearanceIconName?: string | null;
1332
1730
  'safeExamBrowser.showInstallLink'?: boolean | null;
1333
1731
  'safeExamBrowser.allowQuit'?: boolean | null;
1334
1732
  'safeExamBrowser.showTime'?: boolean | null;
1335
1733
  'safeExamBrowser.allowWlan'?: boolean | null;
1336
1734
  'safeExamBrowser.allowSpellCheck'?: boolean | null;
1337
1735
  showHints?: boolean;
1338
- [key: string]: unknown | string | null | number | null | unknown | null | boolean | null | boolean | null | boolean | null | string | null | boolean | null | boolean | null | boolean | null | string | null | string | null | string | null | string | null | boolean | null | boolean | null | string | null | Array<string> | null | boolean | null | {
1339
- type: 'points' | 'percentage' | 'out-of-10' | 'custom' | 'custom:letters' | 'custom:pass-fail' | 'custom:proficiency';
1340
- ranges?: Array<{
1341
- label?: string | null;
1342
- startPercentage?: number | null;
1343
- color?: string | null;
1344
- }> | null;
1345
- } | null | boolean | null | boolean | null | boolean | null | boolean | null | boolean | null | boolean | undefined;
1736
+ allowCustomPrompt?: boolean;
1737
+ showTopicProgress?: boolean;
1738
+ showProficiencyBadge?: boolean;
1739
+ proficiencyPercentage?: number;
1740
+ proficiencyQuestionsCount?: number;
1741
+ proficiencyDaysCount?: number;
1742
+ [key: string]: unknown;
1346
1743
  };
1347
1744
  folder?: string | null;
1348
1745
  sourceMaterialIds?: Array<string>;
@@ -1351,6 +1748,10 @@ export type PostPracticeSpacesByIdData = {
1351
1748
  name: string;
1352
1749
  }>;
1353
1750
  studentNotes?: string | null;
1751
+ published?: 'published' | 'unpublished';
1752
+ metadata?: {
1753
+ [key: string]: string | number | boolean | null;
1754
+ };
1354
1755
  };
1355
1756
  path: {
1356
1757
  id: string;
@@ -1358,6 +1759,32 @@ export type PostPracticeSpacesByIdData = {
1358
1759
  query?: never;
1359
1760
  url: '/practice-spaces/{id}';
1360
1761
  };
1762
+ export type PostPracticeSpacesByIdDuplicateData = {
1763
+ body?: {
1764
+ name: string;
1765
+ };
1766
+ path: {
1767
+ id: string;
1768
+ };
1769
+ query?: never;
1770
+ url: '/practice-spaces/{id}/duplicate';
1771
+ };
1772
+ export type PostPracticeSpacesByIdGenerateTopicsData = {
1773
+ body?: never;
1774
+ path: {
1775
+ id: string;
1776
+ };
1777
+ query?: never;
1778
+ url: '/practice-spaces/{id}/generate-topics';
1779
+ };
1780
+ export type PostPracticeSpacesByIdCancelGenerateTopicsData = {
1781
+ body?: never;
1782
+ path: {
1783
+ id: string;
1784
+ };
1785
+ query?: never;
1786
+ url: '/practice-spaces/{id}/cancel-generate-topics';
1787
+ };
1361
1788
  export type GetPracticeSpacesByIdQuestionsPreviewData = {
1362
1789
  body?: never;
1363
1790
  path: {
@@ -1366,6 +1793,84 @@ export type GetPracticeSpacesByIdQuestionsPreviewData = {
1366
1793
  query?: never;
1367
1794
  url: '/practice-spaces/{id}/questions-preview';
1368
1795
  };
1796
+ export type GetPracticeSpacesByIdProgressData = {
1797
+ body?: never;
1798
+ path: {
1799
+ id: string;
1800
+ };
1801
+ query?: never;
1802
+ url: '/practice-spaces/{id}/progress';
1803
+ };
1804
+ export type PostPracticeSpacesByIdProgressTopicFeedbackData = {
1805
+ body?: {
1806
+ topicId: string;
1807
+ feedbackType: 'progress' | 'challenges';
1808
+ };
1809
+ path: {
1810
+ id: string;
1811
+ };
1812
+ query?: never;
1813
+ url: '/practice-spaces/{id}/progress/topic-feedback';
1814
+ };
1815
+ export type GetPracticeSpacesByIdStudentsData = {
1816
+ body?: never;
1817
+ path: {
1818
+ id: string;
1819
+ };
1820
+ query?: never;
1821
+ url: '/practice-spaces/{id}/students';
1822
+ };
1823
+ export type GetPracticeSpacesByIdStudentsByStudentIdData = {
1824
+ body?: never;
1825
+ path: {
1826
+ id: string;
1827
+ studentId: string;
1828
+ };
1829
+ query?: never;
1830
+ url: '/practice-spaces/{id}/students/{studentId}';
1831
+ };
1832
+ export type PostPracticeSpacesByIdSessionsData = {
1833
+ body?: {
1834
+ prompt?: string;
1835
+ };
1836
+ path: {
1837
+ id: string;
1838
+ };
1839
+ query?: never;
1840
+ url: '/practice-spaces/{id}/sessions';
1841
+ };
1842
+ export type GetPracticeSpacesByIdSessionsMineData = {
1843
+ body?: never;
1844
+ path: {
1845
+ id: string;
1846
+ };
1847
+ query?: never;
1848
+ url: '/practice-spaces/{id}/sessions/mine';
1849
+ };
1850
+ export type GetPracticeSpacesByIdSessionsBySessionIdData = {
1851
+ body?: never;
1852
+ path: {
1853
+ id: string;
1854
+ sessionId: string;
1855
+ };
1856
+ query?: never;
1857
+ url: '/practice-spaces/{id}/sessions/{sessionId}';
1858
+ };
1859
+ export type PostPracticeSpacesByIdSessionsBySessionIdAnswersByQuestionIdData = {
1860
+ body?: {
1861
+ question: string | string;
1862
+ value?: string | Array<string | null> | null;
1863
+ completed?: boolean | null;
1864
+ context?: unknown | null;
1865
+ };
1866
+ path: {
1867
+ id: string;
1868
+ sessionId: string;
1869
+ questionId: string;
1870
+ };
1871
+ query?: never;
1872
+ url: '/practice-spaces/{id}/sessions/{sessionId}/answers/{questionId}';
1873
+ };
1369
1874
  export type GetSourceMaterialsData = {
1370
1875
  body?: never;
1371
1876
  path?: never;
@@ -1394,7 +1899,7 @@ export type GetSourceMaterialsResponses = {
1394
1899
  size?: number;
1395
1900
  contentType?: string;
1396
1901
  expires?: string;
1397
- [key: string]: unknown | string | number | undefined;
1902
+ [key: string]: unknown;
1398
1903
  };
1399
1904
  convertedSourceV2?: {
1400
1905
  url: string;
@@ -1403,7 +1908,7 @@ export type GetSourceMaterialsResponses = {
1403
1908
  size?: number;
1404
1909
  contentType?: string;
1405
1910
  expires?: string;
1406
- [key: string]: unknown | string | number | undefined;
1911
+ [key: string]: unknown;
1407
1912
  };
1408
1913
  geminiSource?: {
1409
1914
  url: string;
@@ -1412,7 +1917,7 @@ export type GetSourceMaterialsResponses = {
1412
1917
  size?: number;
1413
1918
  contentType?: string;
1414
1919
  expires?: string;
1415
- [key: string]: unknown | string | number | undefined;
1920
+ [key: string]: unknown;
1416
1921
  };
1417
1922
  externalId?: string;
1418
1923
  parentSourceMaterialId?: string;
@@ -1442,7 +1947,7 @@ export type PostSourceMaterialsData = {
1442
1947
  * An optional external identifier for the source material.
1443
1948
  */
1444
1949
  externalId?: string;
1445
- [key: string]: unknown | string | number | undefined;
1950
+ [key: string]: unknown;
1446
1951
  };
1447
1952
  path?: never;
1448
1953
  query?: never;
@@ -1465,7 +1970,7 @@ export type PostSourceMaterialsResponses = {
1465
1970
  size?: number;
1466
1971
  contentType?: string;
1467
1972
  expires?: string;
1468
- [key: string]: unknown | string | number | undefined;
1973
+ [key: string]: unknown;
1469
1974
  };
1470
1975
  convertedSourceV2?: {
1471
1976
  url: string;
@@ -1474,7 +1979,7 @@ export type PostSourceMaterialsResponses = {
1474
1979
  size?: number;
1475
1980
  contentType?: string;
1476
1981
  expires?: string;
1477
- [key: string]: unknown | string | number | undefined;
1982
+ [key: string]: unknown;
1478
1983
  };
1479
1984
  geminiSource?: {
1480
1985
  url: string;
@@ -1483,7 +1988,7 @@ export type PostSourceMaterialsResponses = {
1483
1988
  size?: number;
1484
1989
  contentType?: string;
1485
1990
  expires?: string;
1486
- [key: string]: unknown | string | number | undefined;
1991
+ [key: string]: unknown;
1487
1992
  };
1488
1993
  externalId?: string;
1489
1994
  parentSourceMaterialId?: string;
@@ -1534,7 +2039,7 @@ export type GetSourceMaterialsByIdResponses = {
1534
2039
  size?: number;
1535
2040
  contentType?: string;
1536
2041
  expires?: string;
1537
- [key: string]: unknown | string | number | undefined;
2042
+ [key: string]: unknown;
1538
2043
  };
1539
2044
  convertedSourceV2?: {
1540
2045
  url: string;
@@ -1543,7 +2048,7 @@ export type GetSourceMaterialsByIdResponses = {
1543
2048
  size?: number;
1544
2049
  contentType?: string;
1545
2050
  expires?: string;
1546
- [key: string]: unknown | string | number | undefined;
2051
+ [key: string]: unknown;
1547
2052
  };
1548
2053
  geminiSource?: {
1549
2054
  url: string;
@@ -1552,7 +2057,7 @@ export type GetSourceMaterialsByIdResponses = {
1552
2057
  size?: number;
1553
2058
  contentType?: string;
1554
2059
  expires?: string;
1555
- [key: string]: unknown | string | number | undefined;
2060
+ [key: string]: unknown;
1556
2061
  };
1557
2062
  externalId?: string;
1558
2063
  parentSourceMaterialId?: string;
@@ -1621,7 +2126,7 @@ export type PostSourceMaterialsByIdSliceResponses = {
1621
2126
  size?: number;
1622
2127
  contentType?: string;
1623
2128
  expires?: string;
1624
- [key: string]: unknown | string | number | undefined;
2129
+ [key: string]: unknown;
1625
2130
  };
1626
2131
  convertedSourceV2?: {
1627
2132
  url: string;
@@ -1630,7 +2135,7 @@ export type PostSourceMaterialsByIdSliceResponses = {
1630
2135
  size?: number;
1631
2136
  contentType?: string;
1632
2137
  expires?: string;
1633
- [key: string]: unknown | string | number | undefined;
2138
+ [key: string]: unknown;
1634
2139
  };
1635
2140
  geminiSource?: {
1636
2141
  url: string;
@@ -1639,7 +2144,7 @@ export type PostSourceMaterialsByIdSliceResponses = {
1639
2144
  size?: number;
1640
2145
  contentType?: string;
1641
2146
  expires?: string;
1642
- [key: string]: unknown | string | number | undefined;
2147
+ [key: string]: unknown;
1643
2148
  };
1644
2149
  externalId?: string;
1645
2150
  parentSourceMaterialId?: string;
@@ -1704,26 +2209,41 @@ export type PostQuestionBankData = {
1704
2209
  settings: {
1705
2210
  [key: string]: unknown;
1706
2211
  };
1707
- scoringCriteria?: Array<{
1708
- id?: string;
1709
- description?: string | null;
1710
- points?: number | null;
1711
- }> | null;
2212
+ scoring?: {
2213
+ rubricType?: 'simple' | 'analytical' | 'holistic' | 'exact-values' | null;
2214
+ criteria?: Array<{
2215
+ id: string;
2216
+ title?: string | null;
2217
+ description?: string | null;
2218
+ points?: number | null;
2219
+ minPoints?: number | null;
2220
+ maxPoints?: number | null;
2221
+ levels?: Array<{
2222
+ id: string;
2223
+ title?: string | null;
2224
+ description?: string | null;
2225
+ points?: number | null;
2226
+ minPoints?: number | null;
2227
+ maxPoints?: number | null;
2228
+ }> | null;
2229
+ }> | null;
2230
+ exactValuesCaseInsensitive?: boolean | null;
2231
+ guidance?: string | null;
2232
+ modelAnswer?: string | null;
2233
+ templateId?: string | null;
2234
+ } | null;
1712
2235
  tags?: Array<string> | null;
1713
2236
  metadata?: {
1714
2237
  [key: string]: string | number | boolean | null;
1715
2238
  } | null;
1716
2239
  questionBankItemId?: string | null;
1717
2240
  traceIds?: Array<string> | null;
1718
- [key: string]: unknown | string | string | null | string | null | {
1719
- [key: string]: unknown;
1720
- } | Array<{
2241
+ scoringCriteria?: Array<{
1721
2242
  id?: string;
1722
2243
  description?: string | null;
1723
2244
  points?: number | null;
1724
- }> | null | Array<string> | null | {
1725
- [key: string]: string | number | boolean | null;
1726
- } | null | string | null | Array<string> | null | undefined;
2245
+ }> | null;
2246
+ [key: string]: unknown;
1727
2247
  };
1728
2248
  };
1729
2249
  path?: never;
@@ -1747,26 +2267,41 @@ export type PatchQuestionBankByIdData = {
1747
2267
  settings: {
1748
2268
  [key: string]: unknown;
1749
2269
  };
1750
- scoringCriteria?: Array<{
1751
- id?: string;
1752
- description?: string | null;
1753
- points?: number | null;
1754
- }> | null;
2270
+ scoring?: {
2271
+ rubricType?: 'simple' | 'analytical' | 'holistic' | 'exact-values' | null;
2272
+ criteria?: Array<{
2273
+ id: string;
2274
+ title?: string | null;
2275
+ description?: string | null;
2276
+ points?: number | null;
2277
+ minPoints?: number | null;
2278
+ maxPoints?: number | null;
2279
+ levels?: Array<{
2280
+ id: string;
2281
+ title?: string | null;
2282
+ description?: string | null;
2283
+ points?: number | null;
2284
+ minPoints?: number | null;
2285
+ maxPoints?: number | null;
2286
+ }> | null;
2287
+ }> | null;
2288
+ exactValuesCaseInsensitive?: boolean | null;
2289
+ guidance?: string | null;
2290
+ modelAnswer?: string | null;
2291
+ templateId?: string | null;
2292
+ } | null;
1755
2293
  tags?: Array<string> | null;
1756
2294
  metadata?: {
1757
2295
  [key: string]: string | number | boolean | null;
1758
2296
  } | null;
1759
2297
  questionBankItemId?: string | null;
1760
2298
  traceIds?: Array<string> | null;
1761
- [key: string]: unknown | string | string | null | string | null | {
1762
- [key: string]: unknown;
1763
- } | Array<{
2299
+ scoringCriteria?: Array<{
1764
2300
  id?: string;
1765
2301
  description?: string | null;
1766
2302
  points?: number | null;
1767
- }> | null | Array<string> | null | {
1768
- [key: string]: string | number | boolean | null;
1769
- } | null | string | null | Array<string> | null | undefined;
2303
+ }> | null;
2304
+ [key: string]: unknown;
1770
2305
  };
1771
2306
  };
1772
2307
  path: {
@@ -1775,3 +2310,108 @@ export type PatchQuestionBankByIdData = {
1775
2310
  query?: never;
1776
2311
  url: '/question-bank/{id}';
1777
2312
  };
2313
+ export type GetRubricsData = {
2314
+ body?: never;
2315
+ path?: never;
2316
+ query?: never;
2317
+ url: '/rubrics';
2318
+ };
2319
+ export type PostRubricsData = {
2320
+ body?: {
2321
+ name: string;
2322
+ scoring: {
2323
+ rubricType?: 'simple' | 'analytical' | 'holistic' | 'exact-values' | null;
2324
+ criteria?: Array<{
2325
+ id: string;
2326
+ title?: string | null;
2327
+ description?: string | null;
2328
+ points?: number | null;
2329
+ minPoints?: number | null;
2330
+ maxPoints?: number | null;
2331
+ levels?: Array<{
2332
+ id: string;
2333
+ title?: string | null;
2334
+ description?: string | null;
2335
+ points?: number | null;
2336
+ minPoints?: number | null;
2337
+ maxPoints?: number | null;
2338
+ }> | null;
2339
+ }> | null;
2340
+ exactValuesCaseInsensitive?: boolean | null;
2341
+ guidance?: string | null;
2342
+ modelAnswer?: string | null;
2343
+ templateId?: string | null;
2344
+ };
2345
+ };
2346
+ path?: never;
2347
+ query?: never;
2348
+ url: '/rubrics';
2349
+ };
2350
+ export type PostRubricsGenerateData = {
2351
+ body?: {
2352
+ message?: string;
2353
+ sourceMaterialIds?: Array<string>;
2354
+ language?: string;
2355
+ context?: unknown;
2356
+ };
2357
+ path?: never;
2358
+ query?: never;
2359
+ url: '/rubrics/generate';
2360
+ };
2361
+ export type DeleteRubricsByIdData = {
2362
+ body?: never;
2363
+ path: {
2364
+ id: string;
2365
+ };
2366
+ query?: never;
2367
+ url: '/rubrics/{id}';
2368
+ };
2369
+ export type PatchRubricsByIdData = {
2370
+ body?: {
2371
+ name?: string;
2372
+ scoring?: {
2373
+ rubricType?: 'simple' | 'analytical' | 'holistic' | 'exact-values' | null;
2374
+ criteria?: Array<{
2375
+ id: string;
2376
+ title?: string | null;
2377
+ description?: string | null;
2378
+ points?: number | null;
2379
+ minPoints?: number | null;
2380
+ maxPoints?: number | null;
2381
+ levels?: Array<{
2382
+ id: string;
2383
+ title?: string | null;
2384
+ description?: string | null;
2385
+ points?: number | null;
2386
+ minPoints?: number | null;
2387
+ maxPoints?: number | null;
2388
+ }> | null;
2389
+ }> | null;
2390
+ exactValuesCaseInsensitive?: boolean | null;
2391
+ guidance?: string | null;
2392
+ modelAnswer?: string | null;
2393
+ templateId?: string | null;
2394
+ };
2395
+ };
2396
+ path: {
2397
+ id: string;
2398
+ };
2399
+ query?: never;
2400
+ url: '/rubrics/{id}';
2401
+ };
2402
+ export type DeleteJobsByIdData = {
2403
+ body?: never;
2404
+ path: {
2405
+ id: string;
2406
+ };
2407
+ query?: never;
2408
+ url: '/jobs/{id}';
2409
+ };
2410
+ export type GetJobsByIdData = {
2411
+ body?: never;
2412
+ path: {
2413
+ id: string;
2414
+ };
2415
+ query?: never;
2416
+ url: '/jobs/{id}';
2417
+ };