@faiber/faiber-lms 0.24.1 → 1.0.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/types.d.ts CHANGED
@@ -36,78 +36,6 @@ export interface TransferUserDataErrorResponse {
36
36
  };
37
37
  };
38
38
  }
39
- export type AiSummaryRole = "student" | "teacher" | "support";
40
- export type AiSummaryState = "disabled" | "pending" | "generating" | "ready" | "no_data" | "blocked" | "failed";
41
- export type AiMetricStatus = "available" | "insufficient_evidence" | "not_applicable";
42
- export interface AiPerformanceMetric extends JsonObject {
43
- id: string;
44
- label: string;
45
- description: string;
46
- value: number | null;
47
- min: 0;
48
- max: 100;
49
- unit: "percent" | "score";
50
- method: "calculated" | "ai_assessed" | "derived";
51
- status: AiMetricStatus;
52
- explanation: string;
53
- supporting_data: JsonValue;
54
- evidence_count: number;
55
- evidence_refs: string[];
56
- rubric_version: string;
57
- confidence: string | null;
58
- improvement_advice: string | null;
59
- }
60
- export interface AiImprovementAction extends JsonObject {
61
- metric_id: string;
62
- action: string;
63
- reason: string;
64
- success_criterion: string;
65
- }
66
- export interface AiPerformanceSummaryContent extends JsonObject {
67
- metrics: AiPerformanceMetric[];
68
- short_summary: string;
69
- detailed_summary: string;
70
- improvement_actions: AiImprovementAction[];
71
- }
72
- export interface AiLatestSummary extends JsonObject {
73
- subject_user_id: string;
74
- role: AiSummaryRole;
75
- enabled: boolean;
76
- state: AiSummaryState;
77
- freshness: "fresh" | "stale" | "unavailable";
78
- language: "fa" | "en" | null;
79
- model_ref: string | null;
80
- classroom_ids: string[];
81
- evidence_cutoff: string | null;
82
- generated_at: string | null;
83
- next_refresh_at: string | null;
84
- summary: AiPerformanceSummaryContent | null;
85
- }
86
- export interface AiRoleSummarySettings extends JsonObject {
87
- role: AiSummaryRole;
88
- enabled: boolean;
89
- model_ref: string | null;
90
- language: "fa" | "en";
91
- guidance: string;
92
- quiet_minutes: number;
93
- max_wait_minutes: number;
94
- config_revision: number;
95
- }
96
- export interface AiSummarySettings extends JsonObject {
97
- globally_enabled: boolean;
98
- financial_owner_user_id: string | null;
99
- roles: AiRoleSummarySettings[];
100
- }
101
- export interface AiSummarySettingsInput extends JsonObject {
102
- globally_enabled: boolean;
103
- roles: Omit<AiRoleSummarySettings, "config_revision">[];
104
- }
105
- export interface AiSummaryModel extends JsonObject {
106
- model_ref: string;
107
- model: string;
108
- provider_label: string;
109
- source: string;
110
- }
111
39
  export interface EvaluationQuestion extends JsonObject {
112
40
  stable_id: string;
113
41
  version: number;
@@ -128,39 +56,21 @@ export interface EvaluationQuestionInput extends JsonObject {
128
56
  metric_id: string;
129
57
  label_en: string;
130
58
  label_fa: string;
131
- description_en: string;
132
- description_fa: string;
59
+ description_en?: string;
60
+ description_fa?: string;
133
61
  allow_not_applicable: boolean;
134
62
  enabled: boolean;
135
63
  archived?: boolean;
136
64
  sort_order: number;
137
65
  }
138
- export type AiSummarySettingsResponse = ApiEnvelope<AiSummarySettings>;
139
- export type AiSummaryModelsResponse = ApiEnvelope<AiSummaryModel[]>;
140
- export type AiLatestSummaryResponse = ApiEnvelope<AiLatestSummary>;
141
- export type AiRefreshSummaryResponse = ApiEnvelope<{
142
- subject_user_id: string;
143
- role: AiSummaryRole;
144
- state: "pending";
145
- due_at: string;
146
- }>;
147
66
  export interface LmsEntity extends JsonObject {
148
67
  id: string;
149
68
  name?: string | null;
150
69
  title?: string | null;
151
70
  status?: string | null;
152
71
  }
153
- export interface Course extends LmsEntity {
154
- /** Decimal strings preserve currency precision. */
155
- price: string | null;
156
- in_person_price: string | null;
157
- online_price: string | null;
158
- title: string;
159
- category_id?: string;
160
- }
161
- export interface CourseCategory extends LmsEntity {
162
- name: string;
163
- }
72
+ export type Course = import("./operations.types.js").CourseShowCourseGetResponseData;
73
+ export type CourseCategory = import("./operations.types.js").CourseShowCategoryGetResponseData;
164
74
  /** Course session, including its external or DRM-backed video source. */
165
75
  export interface CourseSession extends LmsEntity {
166
76
  id: string;
@@ -185,18 +95,7 @@ export interface VideoSection extends LmsEntity {
185
95
  course_id?: string;
186
96
  video_url?: string;
187
97
  }
188
- export interface Classroom extends LmsEntity {
189
- course_id?: string;
190
- course_name?: string | null;
191
- teacher_user_id?: string | null;
192
- teacher_profile?: ClassroomSessionTeacherProfile | null;
193
- consultant_user_id?: string | null;
194
- consultant_profile?: ClassroomSessionTeacherProfile | null;
195
- support_user_id?: string | null;
196
- support_profile?: ClassroomSessionTeacherProfile | null;
197
- starts_at?: string;
198
- weekly_schedule?: ClassroomWeeklyScheduleRule[];
199
- }
98
+ export type Classroom = import("./operations.types.js").ClassroomShowClassroomGetResponseData;
200
99
  /** Canonical LMS schedule: Sunday is 0, Saturday is 6; times are local to the rule offset. The rule's mode selects the generated primary session type. */
201
100
  export interface ClassroomWeeklyScheduleRule extends JsonObject {
202
101
  day_of_week: number;
@@ -206,7 +105,7 @@ export interface ClassroomWeeklyScheduleRule extends JsonObject {
206
105
  id?: string;
207
106
  day?: string;
208
107
  start_time?: string;
209
- mode?: "online" | "interactive" | "in_person" | "makeup";
108
+ mode?: "online" | "interactive" | "composition" | "in_person" | "makeup" | (string & {});
210
109
  delivery_type?: string;
211
110
  delivery_type_name?: string;
212
111
  session_type?: string;
@@ -217,7 +116,7 @@ export interface ClassroomLegacyWeeklyScheduleRule extends JsonObject {
217
116
  day: string;
218
117
  start_time: string;
219
118
  id?: string;
220
- mode?: "online" | "interactive" | "in_person" | "makeup";
119
+ mode?: "online" | "interactive" | "composition" | "in_person" | "makeup" | (string & {});
221
120
  delivery_type?: string;
222
121
  delivery_type_name?: string;
223
122
  session_type?: string;
@@ -239,16 +138,7 @@ export interface ClassroomSessionType extends JsonObject {
239
138
  updated_at: string;
240
139
  }
241
140
  /** Minimal server-resolved teacher identity shown with a classroom session. */
242
- export interface ClassroomSessionTeacherProfile extends JsonObject {
243
- id?: string;
244
- user_id?: string;
245
- first_name?: JsonValue;
246
- last_name?: JsonValue;
247
- email?: string;
248
- phone?: string;
249
- national_code?: string;
250
- avatar?: string;
251
- }
141
+ export type ClassroomSessionTeacherProfile = import("./wire.types.js").LmsProfileSummary;
252
142
  /** Course-session metadata embedded in a classroom-session read. */
253
143
  export interface ClassroomCourseSession extends JsonObject {
254
144
  id: string;
@@ -262,65 +152,13 @@ export interface ClassroomCourseSession extends JsonObject {
262
152
  status: string;
263
153
  }
264
154
  /** Classroom session returned by list, today, create, show, and update operations. */
265
- export interface ClassroomSession extends LmsEntity {
266
- /** Selected students, or null for the whole classroom. */
267
- student_user_ids: string[] | null;
268
- id: string;
269
- classroom_id: string;
270
- classroom_name: string | null;
271
- course_session_id: string | null;
272
- course_session: ClassroomCourseSession | null;
273
- course_session_type_id: string | null;
274
- session_type: ClassroomSessionType | null;
275
- name: string | null;
276
- session_number: number | null;
277
- duration_minutes: number | null;
278
- description: string | null;
279
- teacher_user_id: string | null;
280
- teacher_profile: ClassroomSessionTeacherProfile | null;
281
- locked: boolean;
282
- auto_unlock: boolean;
283
- auto_present: boolean;
284
- invited: boolean;
285
- session_room_id: string | null;
286
- starts_at: string | null;
287
- ends_at: string | null;
288
- status: string;
289
- created_at: string;
290
- updated_at: string;
291
- }
292
- export interface Exam extends LmsEntity {
293
- course_id?: string | null;
294
- grade_id?: string | null;
295
- name: string;
296
- description?: string | null;
297
- info?: string | null;
298
- cover_url?: string | null;
299
- duration_minutes?: number | null;
300
- passing_mark?: number | null;
301
- questions_count?: number | null;
302
- easy_count?: number | null;
303
- medium_count?: number | null;
304
- hard_count?: number | null;
305
- selection_mode?: string;
306
- status: string;
307
- }
308
- export interface ExamQuestion extends LmsEntity {
309
- exam_id: string;
310
- question_text?: string;
311
- question_type?: string;
312
- difficulty?: string;
313
- points?: number;
314
- sort_order?: number;
315
- }
316
- export interface ExamSession extends LmsEntity {
317
- exam_id?: string;
318
- user_id?: string;
319
- score?: number;
320
- }
155
+ export type ClassroomSession = import("./operations.types.js").ClassroomShowSessionGetResponseData;
156
+ export type Exam = import("./operations.types.js").ExamShowExamGetResponseData;
157
+ export type ExamQuestion = import("./operations.types.js").ExamShowQuestionGetResponseData;
158
+ export type ExamSession = import("./operations.types.js").ExamShowSessionGetResponseData;
321
159
  export type HomeworkItemKind = "todo" | "project";
322
160
  export type HomeworkDifficulty = "easy" | "medium" | "hard";
323
- export declare const HOMEWORK_ASSIGNMENT_STATUSES: readonly ["pending", "assigned", "submitted", "unsolved", "ungraded", "incorrect", "incomplete", "completed_with_remediation", "completed", "rejected", "inactive"];
161
+ export declare const HOMEWORK_ASSIGNMENT_STATUSES: readonly ["pending", "assigned", "submitted", "unsolved", "ungraded", "incorrect", "incomplete", "completed_with_remediation", "completed", "rejected", "inactive", "reviewed"];
324
162
  export type HomeworkAssignmentStatus = typeof HOMEWORK_ASSIGNMENT_STATUSES[number];
325
163
  /** Filters reusable homework banks by explicitly assigned delivery staff. */
326
164
  export interface HomeworkBankListQuery extends QueryParams {
@@ -368,6 +206,7 @@ export interface HomeworkAssignmentListQuery extends QueryParams {
368
206
  statuses?: readonly HomeworkAssignmentStatus[];
369
207
  /** The assigned homework-bank item/question ID, not its parent bank ID. */
370
208
  homework_id?: string;
209
+ course_id?: string;
371
210
  classroom_id?: string;
372
211
  /** Match any related participant or staff member. */
373
212
  user_id?: string;
@@ -400,45 +239,13 @@ export interface ExamSessionListQuery extends QueryParams {
400
239
  from?: string;
401
240
  to?: string;
402
241
  }
403
- export interface Homework extends LmsEntity {
404
- /** Deprecated compatibility field; homework definitions are themselves banks. */
405
- homework_bank_id: string | null;
406
- course_id?: string | null;
407
- course_name?: string | null;
408
- grade_id?: string | null;
409
- teacher_grade_id?: string | null;
410
- name: string;
411
- title?: string | null;
412
- description?: string | null;
413
- status: "active" | "inactive";
414
- sort_order: number;
415
- difficulty?: HomeworkDifficulty | null;
416
- points: number;
417
- created_at: string;
418
- updated_at: string;
419
- }
420
- export type HomeworkBank = Homework;
421
- export type CreateHomeworkBankInput = CreateHomeworkInput;
422
- export type UpdateHomeworkBankInput = UpdateHomeworkInput;
242
+ export type Homework = import("./operations.types.js").HomeworkShowHomeworkGetResponseData;
243
+ export type HomeworkBank = import("./operations.types.js").HomeworkShowBankGetResponseData;
244
+ export type CreateHomeworkBankInput = import("./operations.types.js").HomeworkStoreBankPostInput;
245
+ export type UpdateHomeworkBankInput = import("./operations.types.js").HomeworkUpdateBankPatchInput;
423
246
  export type ExamBank = Exam;
424
247
  export type ExamBankItem = ExamQuestion;
425
- export interface HomeworkQuestion extends LmsEntity {
426
- homework_id: string;
427
- /** Explicit name, or the server-generated 80-character question-text fallback. */
428
- name: string;
429
- question_text: string;
430
- description?: string | null;
431
- answer?: string | null;
432
- question_type: "notification" | "answer" | "link" | (string & {});
433
- kind: HomeworkItemKind;
434
- points: number;
435
- is_final: boolean;
436
- media: JsonValue;
437
- status: "active" | "inactive";
438
- sort_order: number;
439
- created_at: string;
440
- updated_at: string;
441
- }
248
+ export type HomeworkQuestion = import("./operations.types.js").HomeworkShowQuestionGetResponseData;
442
249
  export type HomeworkBankItem = HomeworkQuestion;
443
250
  export type CertificateStatus = "draft" | "issued" | "revoked" | (string & {});
444
251
  export type CertificateTemplateStatus = "active" | "inactive" | (string & {});
@@ -477,7 +284,8 @@ export interface CertificateTemplate extends LmsEntity {
477
284
  background_url: string;
478
285
  canvas_width: number;
479
286
  canvas_height: number;
480
- layout: CertificateLayout;
287
+ /** Arbitrary persisted JSON; the backend also emits an empty object for an unset layout. */
288
+ layout: JsonValue;
481
289
  status: CertificateTemplateStatus;
482
290
  created_at: string;
483
291
  updated_at: string;
@@ -489,7 +297,7 @@ export interface CertificateRenderSnapshot extends JsonObject {
489
297
  background_url?: string;
490
298
  canvas_width?: number;
491
299
  canvas_height?: number;
492
- layout?: CertificateLayout;
300
+ layout?: JsonValue;
493
301
  };
494
302
  certificate?: {
495
303
  title?: string;
@@ -537,7 +345,8 @@ export interface Certificate extends LmsEntity {
537
345
  media_url: string | null;
538
346
  revoked_at: string | null;
539
347
  revoke_reason: string | null;
540
- render_snapshot: CertificateRenderSnapshot;
348
+ /** Arbitrary persisted snapshot JSON, including legacy snapshots and the empty-object default. */
349
+ render_snapshot: JsonValue;
541
350
  created_at: string;
542
351
  updated_at: string;
543
352
  }
@@ -563,12 +372,8 @@ export interface InteractiveContent extends LmsEntity {
563
372
  content_type?: string;
564
373
  content?: JsonObject;
565
374
  }
566
- export interface Grade extends LmsEntity {
567
- name: string;
568
- }
569
- export interface ClassroomType extends LmsEntity {
570
- name: string;
571
- }
375
+ export type Grade = import("./operations.types.js").ConfigShowGradeGetResponseData;
376
+ export type ClassroomType = import("./operations.types.js").ConfigShowClassroomTypeGetResponseData;
572
377
  export interface TextTemplate extends LmsEntity {
573
378
  name: string;
574
379
  content?: string;
@@ -580,23 +385,14 @@ export interface CreateLmsEntityInput extends JsonObject {
580
385
  }
581
386
  export interface UpdateLmsEntityInput extends Partial<CreateLmsEntityInput> {
582
387
  }
583
- export interface CreateCourseInput extends CreateLmsEntityInput {
584
- price?: string | null;
585
- /** Independent delivery prices; null leaves a price unset. */
586
- in_person_price?: string | null;
587
- online_price?: string | null;
588
- title: string;
589
- category_id?: string;
590
- description?: string;
591
- }
592
- export interface UpdateCourseInput extends Partial<CreateCourseInput> {
593
- }
388
+ export type CreateCourseInput = import("./operations.types.js").CourseStoreCoursePostInput;
389
+ export type UpdateCourseInput = import("./operations.types.js").CourseUpdateCoursePatchInput;
594
390
  export interface CreateCourseSessionInput extends CreateLmsEntityInput {
595
391
  course_id: string;
596
392
  name: string;
597
393
  description?: string | null;
598
394
  sort_order: number;
599
- session_type: string;
395
+ session_type?: string;
600
396
  session_type_id?: string | null;
601
397
  exam_id?: string | null;
602
398
  duration_minutes?: number | null;
@@ -609,113 +405,47 @@ export interface CreateCourseSessionInput extends CreateLmsEntityInput {
609
405
  }
610
406
  export interface UpdateCourseSessionInput extends Partial<Omit<CreateCourseSessionInput, "course_id">> {
611
407
  }
612
- export interface CreateCourseCategoryInput extends CreateLmsEntityInput {
613
- name: string;
614
- }
615
- export interface UpdateCourseCategoryInput extends Partial<CreateCourseCategoryInput> {
616
- }
408
+ export type CreateCourseCategoryInput = import("./operations.types.js").CourseStoreCategoryPostInput;
409
+ export type UpdateCourseCategoryInput = import("./operations.types.js").CourseUpdateCategoryPatchInput;
617
410
  export interface CreateVideoSectionInput extends CreateLmsEntityInput {
618
411
  course_id: string;
619
412
  video_url?: string;
620
413
  }
621
414
  export interface UpdateVideoSectionInput extends Partial<CreateVideoSectionInput> {
622
415
  }
623
- export interface CreateClassroomInput extends CreateLmsEntityInput {
624
- course_id: string;
625
- name: string;
626
- starts_at: string;
627
- status: string;
628
- code?: string | null;
416
+ export type CreateClassroomInput = import("./operations.types.js").ClassroomStoreClassroomPostInput;
417
+ export type UpdateClassroomInput = import("./operations.types.js").ClassroomUpdateClassroomPatchInput;
418
+ export type CreateClassroomSessionInput = import("./operations.types.js").ClassroomStoreSessionPostInput;
419
+ export type UpdateClassroomSessionInput = import("./operations.types.js").ClassroomUpdateSessionPatchInput;
420
+ export type CreateExamInput = import("./operations.types.js").ExamStoreExamPostInput;
421
+ export type UpdateExamInput = import("./operations.types.js").ExamUpdateExamPatchInput;
422
+ export type CreateExamQuestionInput = import("./operations.types.js").ExamStoreQuestionPostInput;
423
+ export type UpdateExamQuestionInput = import("./operations.types.js").ExamUpdateQuestionPatchInput;
424
+ export type CreateExamSessionInput = import("./operations.types.js").ExamStoreSessionPostInput;
425
+ export interface UpdateExamSessionInput extends JsonObject {
426
+ exam_id?: string | null;
427
+ classroom_id?: string | null;
428
+ classroom_session_id?: string | null;
429
+ name?: string | null;
629
430
  description?: string | null;
630
431
  info?: string | null;
631
- classroom_type_id?: string | null;
632
- school_grade_id?: string | null;
633
- grade_id?: string | null;
432
+ duration_minutes?: number | null;
433
+ questions_count?: number | null;
434
+ easy_count?: number | null;
435
+ medium_count?: number | null;
436
+ hard_count?: number | null;
437
+ selection_mode?: string | null;
634
438
  teacher_user_id?: string | null;
635
439
  consultant_user_id?: string | null;
636
440
  support_user_id?: string | null;
637
- capacity?: number | null;
638
- notifications?: JsonValue;
639
- weekly_schedule?: ClassroomWeeklyScheduleRuleInput[];
640
- check_sessions?: JsonValue;
441
+ starts_at?: string | null;
641
442
  ends_at?: string | null;
443
+ status?: string | null;
642
444
  }
643
- export interface UpdateClassroomInput extends Partial<CreateClassroomInput> {
644
- }
645
- export interface CreateClassroomSessionInput extends CreateLmsEntityInput {
646
- /** Nonempty subset of enrolled classroom students (UUIDs). Omit/null for the whole class. Duplicates are removed; nonmembers return 422. Requires lms:classroom:create. */
647
- student_user_ids?: string[] | null;
648
- course_session_type_id?: string;
649
- classroom_id: string;
650
- course_session_id?: string;
651
- name?: string;
652
- session_number?: number;
653
- duration_minutes?: number;
654
- description?: string;
655
- teacher_user_id?: string;
656
- locked?: boolean;
657
- auto_unlock?: boolean;
658
- auto_present?: boolean;
659
- invited?: boolean;
660
- starts_at?: string;
661
- ends_at?: string;
662
- status: string;
663
- }
664
- export interface UpdateClassroomSessionInput extends Partial<Omit<CreateClassroomSessionInput, "student_user_ids">> {
665
- /** Confirms deletion of recordings when this reschedule resets an existing room generation. */
666
- confirm_recording_reset?: boolean;
667
- /** Reassigns every later classroom session to weekly schedule slots after the selected start. */
668
- shift_following_sessions?: boolean;
669
- }
670
- export interface CreateExamInput extends CreateLmsEntityInput {
671
- course_id?: string;
672
- duration_minutes?: number;
673
- }
674
- export interface UpdateExamInput extends Partial<CreateExamInput> {
675
- }
676
- export interface CreateExamQuestionInput extends CreateLmsEntityInput {
677
- exam_id: string;
678
- question: string;
679
- }
680
- export interface UpdateExamQuestionInput extends Partial<CreateExamQuestionInput> {
681
- }
682
- export interface CreateExamSessionInput extends CreateLmsEntityInput {
683
- exam_id: string;
684
- user_id: string;
685
- }
686
- export interface UpdateExamSessionInput extends Partial<CreateExamSessionInput> {
687
- score?: number;
688
- }
689
- export interface CreateHomeworkInput extends JsonObject {
690
- name: string;
691
- status: "active" | "inactive";
692
- homework_bank_id?: string;
693
- course_id?: string;
694
- title?: string | null;
695
- description?: string | null;
696
- sort_order?: number;
697
- difficulty?: HomeworkDifficulty | null;
698
- points?: number;
699
- }
700
- export interface UpdateHomeworkInput extends Partial<CreateHomeworkInput> {
701
- }
702
- export interface CreateHomeworkQuestionInput extends JsonObject {
703
- homework_id: string;
704
- /** Optional display name; blank or omitted names fall back to truncated question text. */
705
- name?: string | null;
706
- question_text: string;
707
- description?: string | null;
708
- answer?: string | null;
709
- question_type?: "notification" | "answer" | "link" | (string & {});
710
- kind?: HomeworkItemKind;
711
- points?: number;
712
- is_final?: boolean;
713
- media?: JsonValue;
714
- status?: "active" | "inactive";
715
- sort_order?: number;
716
- }
717
- export interface UpdateHomeworkQuestionInput extends Partial<CreateHomeworkQuestionInput> {
718
- }
445
+ export type CreateHomeworkInput = import("./operations.types.js").HomeworkStoreHomeworkPostInput;
446
+ export type UpdateHomeworkInput = import("./operations.types.js").HomeworkUpdateHomeworkPatchInput;
447
+ export type CreateHomeworkQuestionInput = import("./operations.types.js").HomeworkStoreQuestionPostInput;
448
+ export type UpdateHomeworkQuestionInput = import("./operations.types.js").HomeworkUpdateQuestionPatchInput;
719
449
  export interface CreateCertificateInput extends CreateLmsEntityInput {
720
450
  user_id: string;
721
451
  course_id?: string | null;
@@ -728,7 +458,7 @@ export interface CreateCertificateInput extends CreateLmsEntityInput {
728
458
  issued_by?: string | null;
729
459
  issued_at: string;
730
460
  media_url?: string | null;
731
- render_snapshot?: CertificateRenderSnapshot | null;
461
+ render_snapshot?: JsonValue;
732
462
  }
733
463
  export interface UpdateCertificateInput extends JsonObject {
734
464
  user_id?: string;
@@ -740,7 +470,7 @@ export interface UpdateCertificateInput extends JsonObject {
740
470
  verification_code?: string | null;
741
471
  issued_at?: string;
742
472
  media_url?: string | null;
743
- render_snapshot?: CertificateRenderSnapshot;
473
+ render_snapshot?: JsonValue;
744
474
  revoke_reason?: string;
745
475
  }
746
476
  export interface CreateCertificateTemplateInput extends JsonObject {
@@ -749,7 +479,7 @@ export interface CreateCertificateTemplateInput extends JsonObject {
749
479
  background_url: string;
750
480
  canvas_width: number;
751
481
  canvas_height: number;
752
- layout?: CertificateLayout | null;
482
+ layout?: JsonValue;
753
483
  status?: CertificateTemplateStatus;
754
484
  }
755
485
  export interface UpdateCertificateTemplateInput extends JsonObject {
@@ -758,7 +488,7 @@ export interface UpdateCertificateTemplateInput extends JsonObject {
758
488
  background_url?: string;
759
489
  canvas_width?: number;
760
490
  canvas_height?: number;
761
- layout?: CertificateLayout;
491
+ layout?: JsonValue;
762
492
  status?: CertificateTemplateStatus;
763
493
  }
764
494
  export interface CreateEventInput extends CreateLmsEntityInput {
@@ -773,32 +503,18 @@ export interface CreateInteractiveContentInput extends CreateLmsEntityInput {
773
503
  }
774
504
  export interface UpdateInteractiveContentInput extends Partial<CreateInteractiveContentInput> {
775
505
  }
776
- export interface CreateGradeInput extends CreateLmsEntityInput {
777
- name: string;
778
- }
779
- export interface UpdateGradeInput extends Partial<CreateGradeInput> {
780
- }
781
- export interface CreateClassroomTypeInput extends CreateLmsEntityInput {
782
- name: string;
783
- }
784
- export interface UpdateClassroomTypeInput extends Partial<CreateClassroomTypeInput> {
785
- }
506
+ export type CreateGradeInput = import("./operations.types.js").ConfigStoreGradePostInput;
507
+ export type UpdateGradeInput = import("./operations.types.js").ConfigUpdateGradePatchInput;
508
+ export type CreateClassroomTypeInput = import("./operations.types.js").ConfigStoreClassroomTypePostInput;
509
+ export type UpdateClassroomTypeInput = import("./operations.types.js").ConfigUpdateClassroomTypePatchInput;
786
510
  export interface CreateTextTemplateInput extends CreateLmsEntityInput {
787
511
  name: string;
788
512
  content?: string;
789
513
  }
790
514
  export interface UpdateTextTemplateInput extends Partial<CreateTextTemplateInput> {
791
515
  }
792
- export interface ClassroomUserInput extends JsonObject {
793
- user_id: string;
794
- role?: string;
795
- }
796
- export interface LmsDashboard extends JsonObject {
797
- courses: number;
798
- classrooms: number;
799
- students: number;
800
- teachers: number;
801
- }
516
+ export type ClassroomUserInput = import("./operations.types.js").ClassroomEnrollClassroomUserPostInput;
517
+ export type LmsDashboard = import("./operations.types.js").DashboardIndexGetResponseData;
802
518
  export interface ReportRow extends JsonObject {
803
519
  id: string;
804
520
  name?: string;
@@ -836,6 +552,7 @@ export interface ClassroomSessionListQuery extends QueryParams {
836
552
  page_size?: number;
837
553
  status?: string;
838
554
  classroom_id?: string;
555
+ user_id?: string;
839
556
  from?: string;
840
557
  to?: string;
841
558
  }
@@ -861,24 +578,24 @@ export interface ClassroomSessionLinks extends JsonObject {
861
578
  room: string | null;
862
579
  recording: string | null;
863
580
  }
864
- export interface ClassroomUserResponse extends ApiEnvelope<Classroom> {
865
- }
581
+ export type ClassroomUserResponse = import("./operations.types.js").ClassroomEnrollClassroomUserPostResponse;
866
582
  export interface LmsReportResponse extends ApiEnvelope<ReportRow[]> {
867
583
  }
868
584
  /** Learner-facing academy category returned from the active catalog. */
869
585
  export interface AcademyCategory {
870
- id: number;
586
+ id: string;
871
587
  name_fa: string;
872
588
  name_en: string;
873
589
  description_fa: string | null;
874
590
  description_en: string | null;
591
+ image_url: string | null;
875
592
  }
876
593
  export interface AcademyCatalogQuery extends QueryParams {
877
- category_id?: number;
594
+ category_id?: string;
878
595
  }
879
596
  export interface AcademyCourse {
880
- id: number;
881
- category_id: number | null;
597
+ id: string;
598
+ category_id: string | null;
882
599
  title_fa: string;
883
600
  title_en: string;
884
601
  description_fa: string | null;
@@ -891,18 +608,20 @@ export interface AcademyCourse {
891
608
  audience_tags: JsonValue;
892
609
  enrollment_id: string | null;
893
610
  enrollment_status: string | null;
611
+ sort_order: number;
612
+ curriculum_session_count: number;
894
613
  session_count: number;
895
614
  completed_count: number;
896
615
  }
897
616
  export interface AcademySession {
898
- id: number;
617
+ id: string;
899
618
  name: string;
900
619
  content_fa: string | null;
901
620
  content_en: string | null;
902
621
  sort_order: number;
903
622
  session_type: string;
904
623
  duration_minutes: number | null;
905
- exam_id: number | null;
624
+ exam_id: string | null;
906
625
  video_type: "external" | "drm" | string | null;
907
626
  external_url: string | null;
908
627
  drm_mixed_media_id: string | null;
@@ -910,7 +629,7 @@ export interface AcademySession {
910
629
  unlocked: boolean;
911
630
  }
912
631
  export interface AcademyCourseDetail {
913
- id: number;
632
+ id: string;
914
633
  sessions: AcademySession[];
915
634
  }
916
635
  export interface AcademyEnrollmentStart {
@@ -920,7 +639,7 @@ export interface AcademyEnrollmentStart {
920
639
  }
921
640
  export interface AcademyEnrollment {
922
641
  id: string;
923
- course_id: number;
642
+ course_id: string;
924
643
  status: string;
925
644
  best_score: number | null;
926
645
  }
@@ -928,20 +647,25 @@ export interface AcademyCompleteSessionInput {
928
647
  idempotency_key: string;
929
648
  }
930
649
  export interface AcademySessionCompletion {
931
- session_id: number;
650
+ session_id: string;
932
651
  completed: true;
933
652
  }
934
653
  export interface AcademyExamQuestion {
935
- id: number;
654
+ id: string;
936
655
  text: string;
937
656
  type: string;
938
657
  options: JsonValue;
658
+ points: number;
659
+ media: JsonValue;
939
660
  }
940
661
  export interface AcademyExamAttempt {
941
662
  attempt_id: string;
942
663
  questions: AcademyExamQuestion[];
664
+ selection_mode: string;
665
+ duration_minutes: number;
666
+ expires_at: string | null;
943
667
  }
944
- /** Keys are decimal question identifiers; values retain the question's JSON answer representation. */
668
+ /** Keys are UUID question identifiers; values retain the question's JSON answer representation. */
945
669
  export interface AcademySubmitExamInput {
946
670
  answers: Record<string, JsonValue>;
947
671
  }