@examplary/sdk 2.8.0 → 2.10.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.
package/dist/index.d.mts CHANGED
@@ -425,6 +425,66 @@ interface paths {
425
425
  patch?: never;
426
426
  trace?: never;
427
427
  };
428
+ "/exams/{id}/sessions/release-grades": {
429
+ parameters: {
430
+ query?: never;
431
+ header?: never;
432
+ path?: never;
433
+ cookie?: never;
434
+ };
435
+ get?: never;
436
+ put?: never;
437
+ /**
438
+ * Release grades
439
+ * @description Release grades for all sessions in an exam, optionally sending notifications to students.
440
+ */
441
+ post: operations["exams.sessions.releaseGrades"];
442
+ delete?: never;
443
+ options?: never;
444
+ head?: never;
445
+ patch?: never;
446
+ trace?: never;
447
+ };
448
+ "/exams/{id}/sessions/scan-images": {
449
+ parameters: {
450
+ query?: never;
451
+ header?: never;
452
+ path?: never;
453
+ cookie?: never;
454
+ };
455
+ get?: never;
456
+ put?: never;
457
+ /**
458
+ * Scan images for student answers
459
+ * @description Start a background task to extract a student's answers from scanned page images and create a session.
460
+ */
461
+ post: operations["exams.sessions.scanImages"];
462
+ delete?: never;
463
+ options?: never;
464
+ head?: never;
465
+ patch?: never;
466
+ trace?: never;
467
+ };
468
+ "/exams/{id}/sessions/scan-student-name": {
469
+ parameters: {
470
+ query?: never;
471
+ header?: never;
472
+ path?: never;
473
+ cookie?: never;
474
+ };
475
+ get?: never;
476
+ put?: never;
477
+ /**
478
+ * Detect student name from scan
479
+ * @description Start a background task to detect the student name from a scanned page image.
480
+ */
481
+ post: operations["exams.sessions.scanStudentName"];
482
+ delete?: never;
483
+ options?: never;
484
+ head?: never;
485
+ patch?: never;
486
+ trace?: never;
487
+ };
428
488
  "/exams/{id}/sessions/scan-document": {
429
489
  parameters: {
430
490
  query?: never;
@@ -468,11 +528,31 @@ interface paths {
468
528
  head?: never;
469
529
  /**
470
530
  * Update session
471
- * @description Update an exam session. Currently supports renaming the student, which is not allowed for sessions taken by a signed-in student.
531
+ * @description Update an exam session. Currently supports renaming the student, which is not allowed for sessions connected to a user account.
472
532
  */
473
533
  patch: operations["exams.sessions.update"];
474
534
  trace?: never;
475
535
  };
536
+ "/exams/{id}/sessions/{sessionId}/user": {
537
+ parameters: {
538
+ query?: never;
539
+ header?: never;
540
+ path?: never;
541
+ cookie?: never;
542
+ };
543
+ get?: never;
544
+ /**
545
+ * Assign session to user
546
+ * @description Connect an anonymous exam session to an existing user account. Only allowed when the session is not connected to a user yet.
547
+ */
548
+ put: operations["exams.sessions.assignUser"];
549
+ post?: never;
550
+ delete?: never;
551
+ options?: never;
552
+ head?: never;
553
+ patch?: never;
554
+ trace?: never;
555
+ };
476
556
  "/exams/{id}/sessions/{sessionId}/feedback": {
477
557
  parameters: {
478
558
  query?: never;
@@ -698,7 +778,11 @@ interface paths {
698
778
  delete?: never;
699
779
  options?: never;
700
780
  head?: never;
701
- patch?: never;
781
+ /**
782
+ * Update a question
783
+ * @description Update fields on a single question, such as its scoring configuration. Use `scoring.excludeFromGrading` to exclude a question from grading so it no longer counts towards the total points or grade of a session.
784
+ */
785
+ patch: operations["exams.questions.update"];
702
786
  trace?: never;
703
787
  };
704
788
  "/exams/{id}/questions/{questionId}/generate": {
@@ -1556,6 +1640,26 @@ interface paths {
1556
1640
  patch?: never;
1557
1641
  trace?: never;
1558
1642
  };
1643
+ "/practice-spaces/{id}/questions/{questionId}": {
1644
+ parameters: {
1645
+ query?: never;
1646
+ header?: never;
1647
+ path?: never;
1648
+ cookie?: never;
1649
+ };
1650
+ get?: never;
1651
+ put?: never;
1652
+ post?: never;
1653
+ delete?: never;
1654
+ options?: never;
1655
+ head?: never;
1656
+ /**
1657
+ * Update a practice space question
1658
+ * @description Update a specific question in a practice space.
1659
+ */
1660
+ patch: operations["practiceSpaces.updateQuestion"];
1661
+ trace?: never;
1662
+ };
1559
1663
  "/practice-spaces/{id}/students": {
1560
1664
  parameters: {
1561
1665
  query?: never;
@@ -2286,7 +2390,7 @@ interface operations {
2286
2390
  id: string;
2287
2391
  /** @description The title of the scoring criterion or level. Only applies to analytical levels and holistic criteria. */
2288
2392
  title?: string | null;
2289
- /** @description The description of the scoring criterion or level. For analytical levels, this describes the specific requirements to earn the points for that level. For holistic criteria, this describes the overall requirement to earn the points for that criterion. */
2393
+ /** @description The description of the scoring criterion or level. For analytical levels, this describes the specific requirements to earn the points for that level. For holistic criteria, this describes the overall requirement to earn the points for that criterion. For exact values rubrics, this contains the specific value that must be matched exactly (no AI used in this matching, just string comparison). */
2290
2394
  description?: string | null;
2291
2395
  /** @description The default amount of points to assign if this criterion or level is selected. */
2292
2396
  points?: number | null;
@@ -2299,7 +2403,7 @@ interface operations {
2299
2403
  id: string;
2300
2404
  /** @description The title of the scoring criterion or level. Only applies to analytical levels and holistic criteria. */
2301
2405
  title?: string | null;
2302
- /** @description The description of the scoring criterion or level. For analytical levels, this describes the specific requirements to earn the points for that level. For holistic criteria, this describes the overall requirement to earn the points for that criterion. */
2406
+ /** @description The description of the scoring criterion or level. For analytical levels, this describes the specific requirements to earn the points for that level. For holistic criteria, this describes the overall requirement to earn the points for that criterion. For exact values rubrics, this contains the specific value that must be matched exactly (no AI used in this matching, just string comparison). */
2303
2407
  description?: string | null;
2304
2408
  /** @description The default amount of points to assign if this criterion or level is selected. */
2305
2409
  points?: number | null;
@@ -2317,6 +2421,8 @@ interface operations {
2317
2421
  modelAnswer?: string | null;
2318
2422
  /** @description The ID of the scoring template applied, if any. */
2319
2423
  templateId?: string | null;
2424
+ /** @description Whether this question is excluded from grading. Excluded questions do not count towards the total points or grade of a session, but can still be answered and reviewed. */
2425
+ excludeFromGrading?: boolean | null;
2320
2426
  } | null;
2321
2427
  /** @description Tags associated with the question for categorization and search */
2322
2428
  tags?: string[] | null;
@@ -2828,7 +2934,7 @@ interface operations {
2828
2934
  id: string;
2829
2935
  /** @description The title of the scoring criterion or level. Only applies to analytical levels and holistic criteria. */
2830
2936
  title?: string | null;
2831
- /** @description The description of the scoring criterion or level. For analytical levels, this describes the specific requirements to earn the points for that level. For holistic criteria, this describes the overall requirement to earn the points for that criterion. */
2937
+ /** @description The description of the scoring criterion or level. For analytical levels, this describes the specific requirements to earn the points for that level. For holistic criteria, this describes the overall requirement to earn the points for that criterion. For exact values rubrics, this contains the specific value that must be matched exactly (no AI used in this matching, just string comparison). */
2832
2938
  description?: string | null;
2833
2939
  /** @description The default amount of points to assign if this criterion or level is selected. */
2834
2940
  points?: number | null;
@@ -2841,7 +2947,7 @@ interface operations {
2841
2947
  id: string;
2842
2948
  /** @description The title of the scoring criterion or level. Only applies to analytical levels and holistic criteria. */
2843
2949
  title?: string | null;
2844
- /** @description The description of the scoring criterion or level. For analytical levels, this describes the specific requirements to earn the points for that level. For holistic criteria, this describes the overall requirement to earn the points for that criterion. */
2950
+ /** @description The description of the scoring criterion or level. For analytical levels, this describes the specific requirements to earn the points for that level. For holistic criteria, this describes the overall requirement to earn the points for that criterion. For exact values rubrics, this contains the specific value that must be matched exactly (no AI used in this matching, just string comparison). */
2845
2951
  description?: string | null;
2846
2952
  /** @description The default amount of points to assign if this criterion or level is selected. */
2847
2953
  points?: number | null;
@@ -2859,6 +2965,8 @@ interface operations {
2859
2965
  modelAnswer?: string | null;
2860
2966
  /** @description The ID of the scoring template applied, if any. */
2861
2967
  templateId?: string | null;
2968
+ /** @description Whether this question is excluded from grading. Excluded questions do not count towards the total points or grade of a session, but can still be answered and reviewed. */
2969
+ excludeFromGrading?: boolean | null;
2862
2970
  } | null;
2863
2971
  showDoneButton?: boolean | null;
2864
2972
  hideTemplateOptions?: boolean | null;
@@ -3210,6 +3318,62 @@ interface operations {
3210
3318
  requestBody?: never;
3211
3319
  responses: never;
3212
3320
  };
3321
+ "exams.sessions.releaseGrades": {
3322
+ parameters: {
3323
+ query?: never;
3324
+ header?: never;
3325
+ path: {
3326
+ id: string;
3327
+ };
3328
+ cookie?: never;
3329
+ };
3330
+ requestBody?: {
3331
+ content: {
3332
+ "application/json": {
3333
+ sendNotifications?: boolean;
3334
+ };
3335
+ };
3336
+ };
3337
+ responses: never;
3338
+ };
3339
+ "exams.sessions.scanImages": {
3340
+ parameters: {
3341
+ query?: never;
3342
+ header?: never;
3343
+ path: {
3344
+ id: string;
3345
+ };
3346
+ cookie?: never;
3347
+ };
3348
+ requestBody?: {
3349
+ content: {
3350
+ "application/json": {
3351
+ images: string[];
3352
+ studentName?: string;
3353
+ };
3354
+ };
3355
+ };
3356
+ responses: never;
3357
+ };
3358
+ "exams.sessions.scanStudentName": {
3359
+ parameters: {
3360
+ query?: never;
3361
+ header?: never;
3362
+ path: {
3363
+ id: string;
3364
+ };
3365
+ cookie?: never;
3366
+ };
3367
+ requestBody?: {
3368
+ content: {
3369
+ "application/json": {
3370
+ /** Format: uri */
3371
+ image: string;
3372
+ };
3373
+ };
3374
+ };
3375
+ responses: never;
3376
+ };
3213
3377
  "exams.sessions.scanDocument": {
3214
3378
  parameters: {
3215
3379
  query?: never;
@@ -3224,6 +3388,7 @@ interface operations {
3224
3388
  "application/json": {
3225
3389
  /** Format: uri */
3226
3390
  documentUrl: string;
3391
+ contentType?: string | null;
3227
3392
  };
3228
3393
  };
3229
3394
  };
@@ -3274,6 +3439,25 @@ interface operations {
3274
3439
  };
3275
3440
  responses: never;
3276
3441
  };
3442
+ "exams.sessions.assignUser": {
3443
+ parameters: {
3444
+ query?: never;
3445
+ header?: never;
3446
+ path: {
3447
+ id: string;
3448
+ sessionId: string;
3449
+ };
3450
+ cookie?: never;
3451
+ };
3452
+ requestBody?: {
3453
+ content: {
3454
+ "application/json": {
3455
+ user: string;
3456
+ };
3457
+ };
3458
+ };
3459
+ responses: never;
3460
+ };
3277
3461
  "exams.sessions.saveFeedback": {
3278
3462
  parameters: {
3279
3463
  query?: never;
@@ -3420,6 +3604,8 @@ interface operations {
3420
3604
  inReplyTo?: string;
3421
3605
  /** @enum {string} */
3422
3606
  status?: "open" | "resolved";
3607
+ /** @enum {string} */
3608
+ visibility?: "public" | "private";
3423
3609
  /** @description Question ID the comment is attached to */
3424
3610
  question: string;
3425
3611
  };
@@ -3464,6 +3650,8 @@ interface operations {
3464
3650
  inReplyTo?: string;
3465
3651
  /** @enum {string} */
3466
3652
  status?: "open" | "resolved";
3653
+ /** @enum {string} */
3654
+ visibility?: "public" | "private";
3467
3655
  };
3468
3656
  };
3469
3657
  };
@@ -3535,6 +3723,67 @@ interface operations {
3535
3723
  requestBody?: never;
3536
3724
  responses: never;
3537
3725
  };
3726
+ "exams.questions.update": {
3727
+ parameters: {
3728
+ query?: never;
3729
+ header?: never;
3730
+ path: {
3731
+ id: string;
3732
+ questionId: string;
3733
+ };
3734
+ cookie?: never;
3735
+ };
3736
+ requestBody?: {
3737
+ content: {
3738
+ "application/json": {
3739
+ /** @description Scoring configuration to merge into the question's existing scoring. */
3740
+ scoring?: {
3741
+ /** @description The type of rubric. Different rubric types have different shapes. */
3742
+ rubricType?: ("simple" | "analytical" | "holistic" | "exact-values") | null;
3743
+ /** @description The criteria for scoring the question. For 'simple' rubric type, criteria have no levels, and their points stack (total = sum of points for all criteria that apply). For 'analytical' rubric type, there should be at least one criteria, with levels. For each criteria, a matching level is picked. For 'holistic' rubric type, there should be multiple criteria, without levels (score = single selected criteria). For 'exact-values' rubric type, each criteria represents a specific value that must be matched exactly. */
3744
+ criteria?: {
3745
+ id: string;
3746
+ /** @description The title of the scoring criterion or level. Only applies to analytical levels and holistic criteria. */
3747
+ title?: string | null;
3748
+ /** @description The description of the scoring criterion or level. For analytical levels, this describes the specific requirements to earn the points for that level. For holistic criteria, this describes the overall requirement to earn the points for that criterion. For exact values rubrics, this contains the specific value that must be matched exactly (no AI used in this matching, just string comparison). */
3749
+ description?: string | null;
3750
+ /** @description The default amount of points to assign if this criterion or level is selected. */
3751
+ points?: number | null;
3752
+ /** @description The minimum amount of points that can be assigned if this criterion or level is selected. */
3753
+ minPoints?: number | null;
3754
+ /** @description The maximum amount of points that can be assigned if this criterion or level is selected. */
3755
+ maxPoints?: number | null;
3756
+ /** @description The levels of a analytical rubric criterion. Each level represents a different point value and description for the same criterion. */
3757
+ levels?: {
3758
+ id: string;
3759
+ /** @description The title of the scoring criterion or level. Only applies to analytical levels and holistic criteria. */
3760
+ title?: string | null;
3761
+ /** @description The description of the scoring criterion or level. For analytical levels, this describes the specific requirements to earn the points for that level. For holistic criteria, this describes the overall requirement to earn the points for that criterion. For exact values rubrics, this contains the specific value that must be matched exactly (no AI used in this matching, just string comparison). */
3762
+ description?: string | null;
3763
+ /** @description The default amount of points to assign if this criterion or level is selected. */
3764
+ points?: number | null;
3765
+ /** @description The minimum amount of points that can be assigned if this criterion or level is selected. */
3766
+ minPoints?: number | null;
3767
+ /** @description The maximum amount of points that can be assigned if this criterion or level is selected. */
3768
+ maxPoints?: number | null;
3769
+ }[] | null;
3770
+ }[] | null;
3771
+ /** @description Whether exact values matching should be case insensitive. Only applicable for 'exact-values' rubric type. */
3772
+ exactValuesCaseInsensitive?: boolean | null;
3773
+ /** @description Optional additional grading guidance text. */
3774
+ guidance?: string | null;
3775
+ /** @description Optional example model answer text to show to graders. */
3776
+ modelAnswer?: string | null;
3777
+ /** @description The ID of the scoring template applied, if any. */
3778
+ templateId?: string | null;
3779
+ /** @description Whether this question is excluded from grading. Excluded questions do not count towards the total points or grade of a session, but can still be answered and reviewed. */
3780
+ excludeFromGrading?: boolean | null;
3781
+ };
3782
+ };
3783
+ };
3784
+ };
3785
+ responses: never;
3786
+ };
3538
3787
  "exams.questions.regenerate": {
3539
3788
  parameters: {
3540
3789
  query?: never;
@@ -3669,7 +3918,7 @@ interface operations {
3669
3918
  id: string;
3670
3919
  /** @description The title of the scoring criterion or level. Only applies to analytical levels and holistic criteria. */
3671
3920
  title?: string | null;
3672
- /** @description The description of the scoring criterion or level. For analytical levels, this describes the specific requirements to earn the points for that level. For holistic criteria, this describes the overall requirement to earn the points for that criterion. */
3921
+ /** @description The description of the scoring criterion or level. For analytical levels, this describes the specific requirements to earn the points for that level. For holistic criteria, this describes the overall requirement to earn the points for that criterion. For exact values rubrics, this contains the specific value that must be matched exactly (no AI used in this matching, just string comparison). */
3673
3922
  description?: string | null;
3674
3923
  /** @description The default amount of points to assign if this criterion or level is selected. */
3675
3924
  points?: number | null;
@@ -3682,7 +3931,7 @@ interface operations {
3682
3931
  id: string;
3683
3932
  /** @description The title of the scoring criterion or level. Only applies to analytical levels and holistic criteria. */
3684
3933
  title?: string | null;
3685
- /** @description The description of the scoring criterion or level. For analytical levels, this describes the specific requirements to earn the points for that level. For holistic criteria, this describes the overall requirement to earn the points for that criterion. */
3934
+ /** @description The description of the scoring criterion or level. For analytical levels, this describes the specific requirements to earn the points for that level. For holistic criteria, this describes the overall requirement to earn the points for that criterion. For exact values rubrics, this contains the specific value that must be matched exactly (no AI used in this matching, just string comparison). */
3686
3935
  description?: string | null;
3687
3936
  /** @description The default amount of points to assign if this criterion or level is selected. */
3688
3937
  points?: number | null;
@@ -3700,6 +3949,8 @@ interface operations {
3700
3949
  modelAnswer?: string | null;
3701
3950
  /** @description The ID of the scoring template applied, if any. */
3702
3951
  templateId?: string | null;
3952
+ /** @description Whether this question is excluded from grading. Excluded questions do not count towards the total points or grade of a session, but can still be answered and reviewed. */
3953
+ excludeFromGrading?: boolean | null;
3703
3954
  } | null;
3704
3955
  /** @description Tags associated with the question for categorization and search */
3705
3956
  tags?: string[] | null;
@@ -4253,6 +4504,8 @@ interface operations {
4253
4504
  q: string;
4254
4505
  /** @description Type of entity to search */
4255
4506
  type?: "user" | "group";
4507
+ /** @description Filter by user role */
4508
+ role?: "owner" | "admin" | "teacher" | "student" | "member";
4256
4509
  };
4257
4510
  header?: never;
4258
4511
  path?: never;
@@ -4619,6 +4872,12 @@ interface operations {
4619
4872
  passcode?: string | null;
4620
4873
  startDateTime?: string | null;
4621
4874
  endDateTime?: string | null;
4875
+ reviewPublished?: boolean | null;
4876
+ reviewNotificationsSent?: boolean | null;
4877
+ reviewShowGrade?: boolean | null;
4878
+ reviewShowPoints?: boolean | null;
4879
+ reviewShowFeedback?: boolean | null;
4880
+ reviewShowComments?: boolean | null;
4622
4881
  showPoints?: boolean | null;
4623
4882
  showFeedback?: boolean | null;
4624
4883
  showTableOfContents?: boolean | null;
@@ -4721,6 +4980,12 @@ interface operations {
4721
4980
  passcode?: string | null;
4722
4981
  startDateTime?: string | null;
4723
4982
  endDateTime?: string | null;
4983
+ reviewPublished?: boolean | null;
4984
+ reviewNotificationsSent?: boolean | null;
4985
+ reviewShowGrade?: boolean | null;
4986
+ reviewShowPoints?: boolean | null;
4987
+ reviewShowFeedback?: boolean | null;
4988
+ reviewShowComments?: boolean | null;
4724
4989
  showPoints?: boolean | null;
4725
4990
  showFeedback?: boolean | null;
4726
4991
  showTableOfContents?: boolean | null;
@@ -4862,6 +5127,25 @@ interface operations {
4862
5127
  };
4863
5128
  responses: never;
4864
5129
  };
5130
+ "practiceSpaces.updateQuestion": {
5131
+ parameters: {
5132
+ query?: never;
5133
+ header?: never;
5134
+ path: {
5135
+ id: string;
5136
+ questionId: string;
5137
+ };
5138
+ cookie?: never;
5139
+ };
5140
+ requestBody?: {
5141
+ content: {
5142
+ "application/json": {
5143
+ manualScore?: number;
5144
+ };
5145
+ };
5146
+ };
5147
+ responses: never;
5148
+ };
4865
5149
  "practiceSpaces.students.list": {
4866
5150
  parameters: {
4867
5151
  query?: never;
@@ -5792,7 +6076,7 @@ interface operations {
5792
6076
  id: string;
5793
6077
  /** @description The title of the scoring criterion or level. Only applies to analytical levels and holistic criteria. */
5794
6078
  title?: string | null;
5795
- /** @description The description of the scoring criterion or level. For analytical levels, this describes the specific requirements to earn the points for that level. For holistic criteria, this describes the overall requirement to earn the points for that criterion. */
6079
+ /** @description The description of the scoring criterion or level. For analytical levels, this describes the specific requirements to earn the points for that level. For holistic criteria, this describes the overall requirement to earn the points for that criterion. For exact values rubrics, this contains the specific value that must be matched exactly (no AI used in this matching, just string comparison). */
5796
6080
  description?: string | null;
5797
6081
  /** @description The default amount of points to assign if this criterion or level is selected. */
5798
6082
  points?: number | null;
@@ -5805,7 +6089,7 @@ interface operations {
5805
6089
  id: string;
5806
6090
  /** @description The title of the scoring criterion or level. Only applies to analytical levels and holistic criteria. */
5807
6091
  title?: string | null;
5808
- /** @description The description of the scoring criterion or level. For analytical levels, this describes the specific requirements to earn the points for that level. For holistic criteria, this describes the overall requirement to earn the points for that criterion. */
6092
+ /** @description The description of the scoring criterion or level. For analytical levels, this describes the specific requirements to earn the points for that level. For holistic criteria, this describes the overall requirement to earn the points for that criterion. For exact values rubrics, this contains the specific value that must be matched exactly (no AI used in this matching, just string comparison). */
5809
6093
  description?: string | null;
5810
6094
  /** @description The default amount of points to assign if this criterion or level is selected. */
5811
6095
  points?: number | null;
@@ -5823,6 +6107,8 @@ interface operations {
5823
6107
  modelAnswer?: string | null;
5824
6108
  /** @description The ID of the scoring template applied, if any. */
5825
6109
  templateId?: string | null;
6110
+ /** @description Whether this question is excluded from grading. Excluded questions do not count towards the total points or grade of a session, but can still be answered and reviewed. */
6111
+ excludeFromGrading?: boolean | null;
5826
6112
  } | null;
5827
6113
  /** @description Tags associated with the question for categorization and search */
5828
6114
  tags?: string[] | null;
@@ -5888,7 +6174,7 @@ interface operations {
5888
6174
  id: string;
5889
6175
  /** @description The title of the scoring criterion or level. Only applies to analytical levels and holistic criteria. */
5890
6176
  title?: string | null;
5891
- /** @description The description of the scoring criterion or level. For analytical levels, this describes the specific requirements to earn the points for that level. For holistic criteria, this describes the overall requirement to earn the points for that criterion. */
6177
+ /** @description The description of the scoring criterion or level. For analytical levels, this describes the specific requirements to earn the points for that level. For holistic criteria, this describes the overall requirement to earn the points for that criterion. For exact values rubrics, this contains the specific value that must be matched exactly (no AI used in this matching, just string comparison). */
5892
6178
  description?: string | null;
5893
6179
  /** @description The default amount of points to assign if this criterion or level is selected. */
5894
6180
  points?: number | null;
@@ -5901,7 +6187,7 @@ interface operations {
5901
6187
  id: string;
5902
6188
  /** @description The title of the scoring criterion or level. Only applies to analytical levels and holistic criteria. */
5903
6189
  title?: string | null;
5904
- /** @description The description of the scoring criterion or level. For analytical levels, this describes the specific requirements to earn the points for that level. For holistic criteria, this describes the overall requirement to earn the points for that criterion. */
6190
+ /** @description The description of the scoring criterion or level. For analytical levels, this describes the specific requirements to earn the points for that level. For holistic criteria, this describes the overall requirement to earn the points for that criterion. For exact values rubrics, this contains the specific value that must be matched exactly (no AI used in this matching, just string comparison). */
5905
6191
  description?: string | null;
5906
6192
  /** @description The default amount of points to assign if this criterion or level is selected. */
5907
6193
  points?: number | null;
@@ -5919,6 +6205,8 @@ interface operations {
5919
6205
  modelAnswer?: string | null;
5920
6206
  /** @description The ID of the scoring template applied, if any. */
5921
6207
  templateId?: string | null;
6208
+ /** @description Whether this question is excluded from grading. Excluded questions do not count towards the total points or grade of a session, but can still be answered and reviewed. */
6209
+ excludeFromGrading?: boolean | null;
5922
6210
  } | null;
5923
6211
  /** @description Tags associated with the question for categorization and search */
5924
6212
  tags?: string[] | null;
@@ -5969,7 +6257,7 @@ interface operations {
5969
6257
  id: string;
5970
6258
  /** @description The title of the scoring criterion or level. Only applies to analytical levels and holistic criteria. */
5971
6259
  title?: string | null;
5972
- /** @description The description of the scoring criterion or level. For analytical levels, this describes the specific requirements to earn the points for that level. For holistic criteria, this describes the overall requirement to earn the points for that criterion. */
6260
+ /** @description The description of the scoring criterion or level. For analytical levels, this describes the specific requirements to earn the points for that level. For holistic criteria, this describes the overall requirement to earn the points for that criterion. For exact values rubrics, this contains the specific value that must be matched exactly (no AI used in this matching, just string comparison). */
5973
6261
  description?: string | null;
5974
6262
  /** @description The default amount of points to assign if this criterion or level is selected. */
5975
6263
  points?: number | null;
@@ -5982,7 +6270,7 @@ interface operations {
5982
6270
  id: string;
5983
6271
  /** @description The title of the scoring criterion or level. Only applies to analytical levels and holistic criteria. */
5984
6272
  title?: string | null;
5985
- /** @description The description of the scoring criterion or level. For analytical levels, this describes the specific requirements to earn the points for that level. For holistic criteria, this describes the overall requirement to earn the points for that criterion. */
6273
+ /** @description The description of the scoring criterion or level. For analytical levels, this describes the specific requirements to earn the points for that level. For holistic criteria, this describes the overall requirement to earn the points for that criterion. For exact values rubrics, this contains the specific value that must be matched exactly (no AI used in this matching, just string comparison). */
5986
6274
  description?: string | null;
5987
6275
  /** @description The default amount of points to assign if this criterion or level is selected. */
5988
6276
  points?: number | null;
@@ -6000,6 +6288,8 @@ interface operations {
6000
6288
  modelAnswer?: string | null;
6001
6289
  /** @description The ID of the scoring template applied, if any. */
6002
6290
  templateId?: string | null;
6291
+ /** @description Whether this question is excluded from grading. Excluded questions do not count towards the total points or grade of a session, but can still be answered and reviewed. */
6292
+ excludeFromGrading?: boolean | null;
6003
6293
  };
6004
6294
  };
6005
6295
  };
@@ -6058,7 +6348,7 @@ interface operations {
6058
6348
  id: string;
6059
6349
  /** @description The title of the scoring criterion or level. Only applies to analytical levels and holistic criteria. */
6060
6350
  title?: string | null;
6061
- /** @description The description of the scoring criterion or level. For analytical levels, this describes the specific requirements to earn the points for that level. For holistic criteria, this describes the overall requirement to earn the points for that criterion. */
6351
+ /** @description The description of the scoring criterion or level. For analytical levels, this describes the specific requirements to earn the points for that level. For holistic criteria, this describes the overall requirement to earn the points for that criterion. For exact values rubrics, this contains the specific value that must be matched exactly (no AI used in this matching, just string comparison). */
6062
6352
  description?: string | null;
6063
6353
  /** @description The default amount of points to assign if this criterion or level is selected. */
6064
6354
  points?: number | null;
@@ -6071,7 +6361,7 @@ interface operations {
6071
6361
  id: string;
6072
6362
  /** @description The title of the scoring criterion or level. Only applies to analytical levels and holistic criteria. */
6073
6363
  title?: string | null;
6074
- /** @description The description of the scoring criterion or level. For analytical levels, this describes the specific requirements to earn the points for that level. For holistic criteria, this describes the overall requirement to earn the points for that criterion. */
6364
+ /** @description The description of the scoring criterion or level. For analytical levels, this describes the specific requirements to earn the points for that level. For holistic criteria, this describes the overall requirement to earn the points for that criterion. For exact values rubrics, this contains the specific value that must be matched exactly (no AI used in this matching, just string comparison). */
6075
6365
  description?: string | null;
6076
6366
  /** @description The default amount of points to assign if this criterion or level is selected. */
6077
6367
  points?: number | null;
@@ -6089,6 +6379,8 @@ interface operations {
6089
6379
  modelAnswer?: string | null;
6090
6380
  /** @description The ID of the scoring template applied, if any. */
6091
6381
  templateId?: string | null;
6382
+ /** @description Whether this question is excluded from grading. Excluded questions do not count towards the total points or grade of a session, but can still be answered and reviewed. */
6383
+ excludeFromGrading?: boolean | null;
6092
6384
  };
6093
6385
  };
6094
6386
  };
@@ -6246,6 +6538,15 @@ interface _PathOverrides {
6246
6538
  "exams.sessions.scan": {
6247
6539
  examId: string;
6248
6540
  };
6541
+ "exams.sessions.releaseGrades": {
6542
+ examId: string;
6543
+ };
6544
+ "exams.sessions.scanImages": {
6545
+ examId: string;
6546
+ };
6547
+ "exams.sessions.scanStudentName": {
6548
+ examId: string;
6549
+ };
6249
6550
  "exams.sessions.scanDocument": {
6250
6551
  examId: string;
6251
6552
  };
@@ -6261,6 +6562,10 @@ interface _PathOverrides {
6261
6562
  examId: string;
6262
6563
  sessionId: string;
6263
6564
  };
6565
+ "exams.sessions.assignUser": {
6566
+ examId: string;
6567
+ sessionId: string;
6568
+ };
6264
6569
  "exams.sessions.saveFeedback": {
6265
6570
  examId: string;
6266
6571
  sessionId: string;
@@ -6315,6 +6620,10 @@ interface _PathOverrides {
6315
6620
  examId: string;
6316
6621
  questionId: string;
6317
6622
  };
6623
+ "exams.questions.update": {
6624
+ examId: string;
6625
+ questionId: string;
6626
+ };
6318
6627
  "exams.questions.regenerate": {
6319
6628
  examId: string;
6320
6629
  questionId: string;
@@ -6411,6 +6720,10 @@ interface _PathOverrides {
6411
6720
  "practiceSpaces.generateTopicFeedback": {
6412
6721
  practiceSpaceId: string;
6413
6722
  };
6723
+ "practiceSpaces.updateQuestion": {
6724
+ practiceSpaceId: string;
6725
+ questionId: string;
6726
+ };
6414
6727
  "practiceSpaces.students.list": {
6415
6728
  practiceSpaceId: string;
6416
6729
  };
@@ -6835,6 +7148,30 @@ declare class ExamsSessions {
6835
7148
  */
6836
7149
  scan(examId: string, options?: ExamplaryRequestOptions): Promise<Response<"exams.sessions.scan">>;
6837
7150
  scan(args: Args<"exams.sessions.scan">, options?: ExamplaryRequestOptions): Promise<Response<"exams.sessions.scan">>;
7151
+ /**
7152
+ * Release grades
7153
+ *
7154
+ * Release grades for all sessions in an exam, optionally sending notifications to students.
7155
+ *
7156
+ * API endpoint: `POST /exams/{examId}/sessions/release-grades`
7157
+ */
7158
+ releaseGrades(args: Args<"exams.sessions.releaseGrades">, options?: ExamplaryRequestOptions): Promise<Response<"exams.sessions.releaseGrades">>;
7159
+ /**
7160
+ * Scan images for student answers
7161
+ *
7162
+ * Start a background task to extract a student's answers from scanned page images and create a session.
7163
+ *
7164
+ * API endpoint: `POST /exams/{examId}/sessions/scan-images`
7165
+ */
7166
+ scanImages(args: Args<"exams.sessions.scanImages">, options?: ExamplaryRequestOptions): Promise<Response<"exams.sessions.scanImages">>;
7167
+ /**
7168
+ * Detect student name from scan
7169
+ *
7170
+ * Start a background task to detect the student name from a scanned page image.
7171
+ *
7172
+ * API endpoint: `POST /exams/{examId}/sessions/scan-student-name`
7173
+ */
7174
+ scanStudentName(args: Args<"exams.sessions.scanStudentName">, options?: ExamplaryRequestOptions): Promise<Response<"exams.sessions.scanStudentName">>;
6838
7175
  /**
6839
7176
  * Scan document for student answers
6840
7177
  *
@@ -6862,11 +7199,19 @@ declare class ExamsSessions {
6862
7199
  /**
6863
7200
  * Update session
6864
7201
  *
6865
- * Update an exam session. Currently supports renaming the student, which is not allowed for sessions taken by a signed-in student.
7202
+ * Update an exam session. Currently supports renaming the student, which is not allowed for sessions connected to a user account.
6866
7203
  *
6867
7204
  * API endpoint: `PATCH /exams/{examId}/sessions/{sessionId}`
6868
7205
  */
6869
7206
  update(args: Args<"exams.sessions.update">, options?: ExamplaryRequestOptions): Promise<Response<"exams.sessions.update">>;
7207
+ /**
7208
+ * Assign session to user
7209
+ *
7210
+ * Connect an anonymous exam session to an existing user account. Only allowed when the session is not connected to a user yet.
7211
+ *
7212
+ * API endpoint: `PUT /exams/{examId}/sessions/{sessionId}/user`
7213
+ */
7214
+ assignUser(args: Args<"exams.sessions.assignUser">, options?: ExamplaryRequestOptions): Promise<Response<"exams.sessions.assignUser">>;
6870
7215
  /**
6871
7216
  * Provide feedback
6872
7217
  *
@@ -6943,6 +7288,14 @@ declare class ExamsQuestions {
6943
7288
  * API endpoint: `GET /exams/{examId}/questions/{questionId}`
6944
7289
  */
6945
7290
  get(args: Args<"exams.questions.get">, options?: ExamplaryRequestOptions): Promise<Response<"exams.questions.get">>;
7291
+ /**
7292
+ * Update a question
7293
+ *
7294
+ * Update fields on a single question, such as its scoring configuration. Use `scoring.excludeFromGrading` to exclude a question from grading so it no longer counts towards the total points or grade of a session.
7295
+ *
7296
+ * API endpoint: `PATCH /exams/{examId}/questions/{questionId}`
7297
+ */
7298
+ update(args: Args<"exams.questions.update">, options?: ExamplaryRequestOptions): Promise<Response<"exams.questions.update">>;
6946
7299
  /**
6947
7300
  * Regenerate question
6948
7301
  *
@@ -7545,6 +7898,14 @@ declare class PracticeSpaces {
7545
7898
  * API endpoint: `POST /practice-spaces/{practiceSpaceId}/progress/topic-feedback`
7546
7899
  */
7547
7900
  generateTopicFeedback(args: Args<"practiceSpaces.generateTopicFeedback">, options?: ExamplaryRequestOptions): Promise<Response<"practiceSpaces.generateTopicFeedback">>;
7901
+ /**
7902
+ * Update a practice space question
7903
+ *
7904
+ * Update a specific question in a practice space.
7905
+ *
7906
+ * API endpoint: `PATCH /practice-spaces/{practiceSpaceId}/questions/{questionId}`
7907
+ */
7908
+ updateQuestion(args: Args<"practiceSpaces.updateQuestion">, options?: ExamplaryRequestOptions): Promise<Response<"practiceSpaces.updateQuestion">>;
7548
7909
  }
7549
7910
  declare class SourceMaterials {
7550
7911
  private readonly ctx;