academe-kit 0.9.7 → 0.9.9
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.cjs +37 -25
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +731 -17
- package/dist/index.esm.js +37 -25
- package/dist/index.esm.js.map +1 -1
- package/dist/types/index.d.ts +1 -0
- package/dist/types/services/ChallengeService.d.ts +41 -3
- package/dist/types/services/QuizService.d.ts +2 -0
- package/dist/types/services/ReportService.d.ts +56 -0
- package/dist/types/services/SubmissionService.d.ts +8 -1
- package/dist/types/types/academe-api.d.ts +623 -12
- package/package.json +2 -2
package/dist/index.d.ts
CHANGED
|
@@ -2109,6 +2109,12 @@ interface paths {
|
|
|
2109
2109
|
templatesOnly?: boolean;
|
|
2110
2110
|
/** @description Search by title */
|
|
2111
2111
|
search?: string;
|
|
2112
|
+
/**
|
|
2113
|
+
* @description Comma-separated list of extra relations to load. Currently supported:
|
|
2114
|
+
* `steps` — embeds each challenge's `steps` (with their catalog `step`).
|
|
2115
|
+
* Opt-in to avoid penalizing list views that don't need them.
|
|
2116
|
+
*/
|
|
2117
|
+
include?: "steps";
|
|
2112
2118
|
/** @description Page number */
|
|
2113
2119
|
page?: components["parameters"]["page"];
|
|
2114
2120
|
/** @description Items per page */
|
|
@@ -2163,6 +2169,11 @@ interface paths {
|
|
|
2163
2169
|
maxGroupMembers?: number;
|
|
2164
2170
|
/** @default false */
|
|
2165
2171
|
isInviteOnly?: boolean;
|
|
2172
|
+
/**
|
|
2173
|
+
* Format: uuid
|
|
2174
|
+
* @description Curso ao qual o desafio está associado (agrupa a jornada no dashboard)
|
|
2175
|
+
*/
|
|
2176
|
+
courseId: string;
|
|
2166
2177
|
/** Format: uuid */
|
|
2167
2178
|
institutionId?: string | null;
|
|
2168
2179
|
/** Format: uuid */
|
|
@@ -2305,6 +2316,8 @@ interface paths {
|
|
|
2305
2316
|
maxGroupMembers?: number;
|
|
2306
2317
|
isInviteOnly?: boolean;
|
|
2307
2318
|
/** Format: uuid */
|
|
2319
|
+
courseId?: string;
|
|
2320
|
+
/** Format: uuid */
|
|
2308
2321
|
serieId?: string;
|
|
2309
2322
|
index?: number;
|
|
2310
2323
|
/** @enum {string} */
|
|
@@ -2411,9 +2424,10 @@ interface paths {
|
|
|
2411
2424
|
/**
|
|
2412
2425
|
* Add a step to the challenge
|
|
2413
2426
|
* @description Polymorphic validation:
|
|
2414
|
-
* - When step.type=course, courseId is required
|
|
2415
2427
|
* - When step.type=tutorial, tutorialVideoUrl is required
|
|
2416
|
-
* -
|
|
2428
|
+
* - The course of a step is determined by the parent challenge's courseId.
|
|
2429
|
+
* Optionally, courseModuleId pinpoints a specific module within that course.
|
|
2430
|
+
* - tutorial fields are optional on any step type.
|
|
2417
2431
|
*/
|
|
2418
2432
|
post: {
|
|
2419
2433
|
parameters: {
|
|
@@ -2437,8 +2451,6 @@ interface paths {
|
|
|
2437
2451
|
description?: string;
|
|
2438
2452
|
index: number;
|
|
2439
2453
|
/** Format: uuid */
|
|
2440
|
-
courseId?: string;
|
|
2441
|
-
/** Format: uuid */
|
|
2442
2454
|
courseModuleId?: string;
|
|
2443
2455
|
tutorialTitle?: string;
|
|
2444
2456
|
tutorialDescription?: string;
|
|
@@ -2868,6 +2880,91 @@ interface paths {
|
|
|
2868
2880
|
};
|
|
2869
2881
|
trace?: never;
|
|
2870
2882
|
};
|
|
2883
|
+
"/challenges/{id}/quiz-attempts": {
|
|
2884
|
+
parameters: {
|
|
2885
|
+
query?: never;
|
|
2886
|
+
header?: never;
|
|
2887
|
+
path?: never;
|
|
2888
|
+
cookie?: never;
|
|
2889
|
+
};
|
|
2890
|
+
/**
|
|
2891
|
+
* Get a user's quiz attempts for this challenge's course modules
|
|
2892
|
+
* @description Returns the quiz attempts of `userId` on every quiz attached to a course
|
|
2893
|
+
* module that is referenced by one of this challenge's steps. Optionally
|
|
2894
|
+
* includes the issued certificate per attempt.
|
|
2895
|
+
*
|
|
2896
|
+
* Each entry corresponds to a `challenges_steps` row that has a non-null
|
|
2897
|
+
* `course_module_id` whose `course_module.quiz_id` is also non-null.
|
|
2898
|
+
* `attempt` is `null` when the user has not yet attempted that quiz.
|
|
2899
|
+
*/
|
|
2900
|
+
get: {
|
|
2901
|
+
parameters: {
|
|
2902
|
+
query?: {
|
|
2903
|
+
/** @description Defaults to the authenticated user when omitted. */
|
|
2904
|
+
userId?: string;
|
|
2905
|
+
};
|
|
2906
|
+
header?: never;
|
|
2907
|
+
path: {
|
|
2908
|
+
/** @description Resource ID */
|
|
2909
|
+
id: components["parameters"]["id"];
|
|
2910
|
+
};
|
|
2911
|
+
cookie?: never;
|
|
2912
|
+
};
|
|
2913
|
+
requestBody?: never;
|
|
2914
|
+
responses: {
|
|
2915
|
+
/** @description List of quiz attempts (one per quiz-bearing challenge step) */
|
|
2916
|
+
200: {
|
|
2917
|
+
headers: {
|
|
2918
|
+
[name: string]: unknown;
|
|
2919
|
+
};
|
|
2920
|
+
content: {
|
|
2921
|
+
"application/json": {
|
|
2922
|
+
/** @example success */
|
|
2923
|
+
status?: string;
|
|
2924
|
+
data?: {
|
|
2925
|
+
/** Format: uuid */
|
|
2926
|
+
challengeStepId?: string;
|
|
2927
|
+
challengeStepName?: string;
|
|
2928
|
+
challengeStepIndex?: number;
|
|
2929
|
+
/** Format: uuid */
|
|
2930
|
+
courseModuleId?: string;
|
|
2931
|
+
courseModuleTitle?: string;
|
|
2932
|
+
/** Format: uuid */
|
|
2933
|
+
quizId?: string;
|
|
2934
|
+
quizTitle?: string;
|
|
2935
|
+
attempt?: {
|
|
2936
|
+
/** Format: uuid */
|
|
2937
|
+
id?: string;
|
|
2938
|
+
score?: number;
|
|
2939
|
+
passed?: boolean;
|
|
2940
|
+
/** Format: date-time */
|
|
2941
|
+
startedAt?: string;
|
|
2942
|
+
/** Format: date-time */
|
|
2943
|
+
completedAt?: string | null;
|
|
2944
|
+
} | null;
|
|
2945
|
+
certificate?: {
|
|
2946
|
+
/** Format: uuid */
|
|
2947
|
+
id?: string;
|
|
2948
|
+
certificateNumber?: string;
|
|
2949
|
+
url?: string | null;
|
|
2950
|
+
} | null;
|
|
2951
|
+
}[];
|
|
2952
|
+
};
|
|
2953
|
+
};
|
|
2954
|
+
};
|
|
2955
|
+
400: components["responses"]["BadRequest"];
|
|
2956
|
+
401: components["responses"]["Unauthorized"];
|
|
2957
|
+
404: components["responses"]["NotFound"];
|
|
2958
|
+
};
|
|
2959
|
+
};
|
|
2960
|
+
put?: never;
|
|
2961
|
+
post?: never;
|
|
2962
|
+
delete?: never;
|
|
2963
|
+
options?: never;
|
|
2964
|
+
head?: never;
|
|
2965
|
+
patch?: never;
|
|
2966
|
+
trace?: never;
|
|
2967
|
+
};
|
|
2871
2968
|
"/classrooms": {
|
|
2872
2969
|
parameters: {
|
|
2873
2970
|
query?: never;
|
|
@@ -9566,6 +9663,8 @@ interface paths {
|
|
|
9566
9663
|
page?: number;
|
|
9567
9664
|
/** @description Items per page */
|
|
9568
9665
|
limit?: number;
|
|
9666
|
+
/** @description When true, returns questions in random order with shuffled answer alternatives. Each request reshuffles independently. */
|
|
9667
|
+
randomize?: boolean;
|
|
9569
9668
|
};
|
|
9570
9669
|
header?: never;
|
|
9571
9670
|
path?: never;
|
|
@@ -10619,6 +10718,76 @@ interface paths {
|
|
|
10619
10718
|
patch?: never;
|
|
10620
10719
|
trace?: never;
|
|
10621
10720
|
};
|
|
10721
|
+
"/reports/encourage-dashboard/{id}": {
|
|
10722
|
+
parameters: {
|
|
10723
|
+
query?: never;
|
|
10724
|
+
header?: never;
|
|
10725
|
+
path?: never;
|
|
10726
|
+
cookie?: never;
|
|
10727
|
+
};
|
|
10728
|
+
/**
|
|
10729
|
+
* Payload completo da nova tela /new-dashboard
|
|
10730
|
+
* @description Retorna o dashboard agregado por instituição: overview, KPIs,
|
|
10731
|
+
* licenças (apenas tipo aluno), jornada (cursos deduplicados),
|
|
10732
|
+
* submissões, desempenho por turma, top 10 alunos (por certificados,
|
|
10733
|
+
* desempate por nota) e top 10 professores (por avaliações).
|
|
10734
|
+
*/
|
|
10735
|
+
get: {
|
|
10736
|
+
parameters: {
|
|
10737
|
+
query?: never;
|
|
10738
|
+
header?: never;
|
|
10739
|
+
path: {
|
|
10740
|
+
/** @description ID da instituição */
|
|
10741
|
+
id: string;
|
|
10742
|
+
};
|
|
10743
|
+
cookie?: never;
|
|
10744
|
+
};
|
|
10745
|
+
requestBody?: never;
|
|
10746
|
+
responses: {
|
|
10747
|
+
/** @description Payload completo do encourage dashboard */
|
|
10748
|
+
200: {
|
|
10749
|
+
headers: {
|
|
10750
|
+
[name: string]: unknown;
|
|
10751
|
+
};
|
|
10752
|
+
content: {
|
|
10753
|
+
"application/json": {
|
|
10754
|
+
/** @example success */
|
|
10755
|
+
status?: string;
|
|
10756
|
+
data?: components["schemas"]["EncourageDashboardResponse"];
|
|
10757
|
+
};
|
|
10758
|
+
};
|
|
10759
|
+
};
|
|
10760
|
+
/** @description institutionId inválido */
|
|
10761
|
+
400: {
|
|
10762
|
+
headers: {
|
|
10763
|
+
[name: string]: unknown;
|
|
10764
|
+
};
|
|
10765
|
+
content?: never;
|
|
10766
|
+
};
|
|
10767
|
+
/** @description Não autenticado */
|
|
10768
|
+
401: {
|
|
10769
|
+
headers: {
|
|
10770
|
+
[name: string]: unknown;
|
|
10771
|
+
};
|
|
10772
|
+
content?: never;
|
|
10773
|
+
};
|
|
10774
|
+
/** @description Erro interno */
|
|
10775
|
+
500: {
|
|
10776
|
+
headers: {
|
|
10777
|
+
[name: string]: unknown;
|
|
10778
|
+
};
|
|
10779
|
+
content?: never;
|
|
10780
|
+
};
|
|
10781
|
+
};
|
|
10782
|
+
};
|
|
10783
|
+
put?: never;
|
|
10784
|
+
post?: never;
|
|
10785
|
+
delete?: never;
|
|
10786
|
+
options?: never;
|
|
10787
|
+
head?: never;
|
|
10788
|
+
patch?: never;
|
|
10789
|
+
trace?: never;
|
|
10790
|
+
};
|
|
10622
10791
|
"/roles": {
|
|
10623
10792
|
parameters: {
|
|
10624
10793
|
query?: never;
|
|
@@ -11625,7 +11794,22 @@ interface paths {
|
|
|
11625
11794
|
/** @example success */
|
|
11626
11795
|
status?: string;
|
|
11627
11796
|
data?: components["schemas"]["Submission"][];
|
|
11628
|
-
meta?: components["schemas"]["PaginationMeta"]
|
|
11797
|
+
meta?: components["schemas"]["PaginationMeta"] & {
|
|
11798
|
+
/**
|
|
11799
|
+
* @description Contagem por status, ignorando o filtro `status`. Útil para
|
|
11800
|
+
* alimentar abas/pills sem requisições adicionais.
|
|
11801
|
+
*/
|
|
11802
|
+
statusCounts?: {
|
|
11803
|
+
/** @example 12 */
|
|
11804
|
+
submitted?: number;
|
|
11805
|
+
/** @example 4 */
|
|
11806
|
+
ai_evaluated?: number;
|
|
11807
|
+
/** @example 30 */
|
|
11808
|
+
approved?: number;
|
|
11809
|
+
/** @example 2 */
|
|
11810
|
+
rejected?: number;
|
|
11811
|
+
};
|
|
11812
|
+
};
|
|
11629
11813
|
};
|
|
11630
11814
|
};
|
|
11631
11815
|
};
|
|
@@ -12287,6 +12471,208 @@ interface paths {
|
|
|
12287
12471
|
patch?: never;
|
|
12288
12472
|
trace?: never;
|
|
12289
12473
|
};
|
|
12474
|
+
"/user-challenge-progress/journey": {
|
|
12475
|
+
parameters: {
|
|
12476
|
+
query?: never;
|
|
12477
|
+
header?: never;
|
|
12478
|
+
path?: never;
|
|
12479
|
+
cookie?: never;
|
|
12480
|
+
};
|
|
12481
|
+
/**
|
|
12482
|
+
* Jornada completa pré-computada do aluno autenticado
|
|
12483
|
+
* @description Retorna todos os desafios da série com suas etapas e o status de progresso do aluno
|
|
12484
|
+
* já computados pelo backend. Substitui as ~25 chamadas HTTP paralelas que o frontend
|
|
12485
|
+
* fazia anteriormente para montar a tela de jornada.
|
|
12486
|
+
*
|
|
12487
|
+
* **Regra de prioridade:** para cada `index` de desafio dentro da série, o backend
|
|
12488
|
+
* prefere o challenge específico da instituição do aluno sobre o template global
|
|
12489
|
+
* (`institution_id IS NULL`). Isso permite que escolas customizem desafios pontuais
|
|
12490
|
+
* sem recriar toda a jornada.
|
|
12491
|
+
*
|
|
12492
|
+
* **Resolução da série:** se `serieId` não for informado, o backend resolve
|
|
12493
|
+
* automaticamente a partir da turma (`institutionClassroom`) do aluno. Se o aluno
|
|
12494
|
+
* não estiver em nenhuma turma e `serieId` também não for passado, retorna
|
|
12495
|
+
* `challenges: []` com `serieId: null`.
|
|
12496
|
+
*
|
|
12497
|
+
* **Status por etapa:** `done` = completedAt preenchido; `current` = primeira etapa
|
|
12498
|
+
* não concluída (apenas uma por vez); `locked` = todas as demais.
|
|
12499
|
+
*
|
|
12500
|
+
* **Progresso:** para etapas `type=course` no status `current`, o campo `progress`
|
|
12501
|
+
* reflete o percentual de lições concluídas no módulo. Para `done` é sempre 100,
|
|
12502
|
+
* para `locked` é sempre 0.
|
|
12503
|
+
*/
|
|
12504
|
+
get: {
|
|
12505
|
+
parameters: {
|
|
12506
|
+
query?: {
|
|
12507
|
+
/**
|
|
12508
|
+
* @description ID da série a filtrar. Opcional — se omitido, o backend resolve pela turma do aluno.
|
|
12509
|
+
* Útil para pré-visualização administrativa ou quando o aluno pertence a múltiplas séries.
|
|
12510
|
+
*/
|
|
12511
|
+
serieId?: string;
|
|
12512
|
+
};
|
|
12513
|
+
header?: never;
|
|
12514
|
+
path?: never;
|
|
12515
|
+
cookie?: never;
|
|
12516
|
+
};
|
|
12517
|
+
requestBody?: never;
|
|
12518
|
+
responses: {
|
|
12519
|
+
/** @description Jornada pré-computada com desafios e etapas */
|
|
12520
|
+
200: {
|
|
12521
|
+
headers: {
|
|
12522
|
+
[name: string]: unknown;
|
|
12523
|
+
};
|
|
12524
|
+
content: {
|
|
12525
|
+
/**
|
|
12526
|
+
* @example {
|
|
12527
|
+
* "status": "success",
|
|
12528
|
+
* "data": {
|
|
12529
|
+
* "serieId": "a1b2c3d4-0000-0000-0000-000000000001",
|
|
12530
|
+
* "serieLabel": "6º ANO",
|
|
12531
|
+
* "challenges": [
|
|
12532
|
+
* {
|
|
12533
|
+
* "id": "a1b2c3d4-0000-0000-0000-000000000002",
|
|
12534
|
+
* "title": "Desafio 1 — Energia Limpa",
|
|
12535
|
+
* "index": 0,
|
|
12536
|
+
* "courseId": "a1b2c3d4-0000-0000-0000-000000000003",
|
|
12537
|
+
* "isUpcoming": false,
|
|
12538
|
+
* "steps": [
|
|
12539
|
+
* {
|
|
12540
|
+
* "id": "a1b2c3d4-0000-0000-0000-000000000010",
|
|
12541
|
+
* "name": "Inicie o desafio",
|
|
12542
|
+
* "index": 0,
|
|
12543
|
+
* "type": "challenge",
|
|
12544
|
+
* "color": "#1AC84A",
|
|
12545
|
+
* "icon": "LuStar",
|
|
12546
|
+
* "status": "done",
|
|
12547
|
+
* "progress": 100,
|
|
12548
|
+
* "courseModuleId": null,
|
|
12549
|
+
* "courseModuleName": null
|
|
12550
|
+
* },
|
|
12551
|
+
* {
|
|
12552
|
+
* "id": "a1b2c3d4-0000-0000-0000-000000000011",
|
|
12553
|
+
* "name": "Módulo de IA",
|
|
12554
|
+
* "index": 1,
|
|
12555
|
+
* "type": "course",
|
|
12556
|
+
* "color": "#8030D8",
|
|
12557
|
+
* "icon": "LuCirclePlay",
|
|
12558
|
+
* "status": "current",
|
|
12559
|
+
* "progress": 67,
|
|
12560
|
+
* "courseModuleId": "a1b2c3d4-0000-0000-0000-000000000020",
|
|
12561
|
+
* "courseModuleName": "Introdução a IA"
|
|
12562
|
+
* }
|
|
12563
|
+
* ]
|
|
12564
|
+
* }
|
|
12565
|
+
* ]
|
|
12566
|
+
* }
|
|
12567
|
+
* }
|
|
12568
|
+
*/
|
|
12569
|
+
"application/json": {
|
|
12570
|
+
/** @example success */
|
|
12571
|
+
status?: string;
|
|
12572
|
+
data?: components["schemas"]["JourneyView"];
|
|
12573
|
+
};
|
|
12574
|
+
};
|
|
12575
|
+
};
|
|
12576
|
+
/** @description serieId inválido (não é um UUID) */
|
|
12577
|
+
400: {
|
|
12578
|
+
headers: {
|
|
12579
|
+
[name: string]: unknown;
|
|
12580
|
+
};
|
|
12581
|
+
content: {
|
|
12582
|
+
"application/json": components["schemas"]["Error"];
|
|
12583
|
+
};
|
|
12584
|
+
};
|
|
12585
|
+
401: components["responses"]["Unauthorized"];
|
|
12586
|
+
};
|
|
12587
|
+
};
|
|
12588
|
+
put?: never;
|
|
12589
|
+
post?: never;
|
|
12590
|
+
delete?: never;
|
|
12591
|
+
options?: never;
|
|
12592
|
+
head?: never;
|
|
12593
|
+
patch?: never;
|
|
12594
|
+
trace?: never;
|
|
12595
|
+
};
|
|
12596
|
+
"/user-challenge-progress/challenges/{id}/advance": {
|
|
12597
|
+
parameters: {
|
|
12598
|
+
query?: never;
|
|
12599
|
+
header?: never;
|
|
12600
|
+
path?: never;
|
|
12601
|
+
cookie?: never;
|
|
12602
|
+
};
|
|
12603
|
+
get?: never;
|
|
12604
|
+
put?: never;
|
|
12605
|
+
/**
|
|
12606
|
+
* Advance one tick in the user's journey on a challenge
|
|
12607
|
+
* @description Unified journey advancement, agnostic of step type. Each call performs ONE action:
|
|
12608
|
+
*
|
|
12609
|
+
* 1. Resolves the current step = first active step (by index) not yet completed by the user.
|
|
12610
|
+
* 2. If no progress row exists for that step → creates one (action='started').
|
|
12611
|
+
* 3. If progress row exists with completed_at IS NULL → sets completed_at (action='completed').
|
|
12612
|
+
* 4. If all steps are completed → no-op (action='finished').
|
|
12613
|
+
*
|
|
12614
|
+
* Web and mobile clients must use this endpoint regardless of the step type
|
|
12615
|
+
* (challenge, course, tutorial, publication, evaluation, certificate).
|
|
12616
|
+
*/
|
|
12617
|
+
post: {
|
|
12618
|
+
parameters: {
|
|
12619
|
+
query?: never;
|
|
12620
|
+
header?: never;
|
|
12621
|
+
path: {
|
|
12622
|
+
/** @description Resource ID */
|
|
12623
|
+
id: components["parameters"]["id"];
|
|
12624
|
+
};
|
|
12625
|
+
cookie?: never;
|
|
12626
|
+
};
|
|
12627
|
+
requestBody?: never;
|
|
12628
|
+
responses: {
|
|
12629
|
+
/** @description Tick result */
|
|
12630
|
+
200: {
|
|
12631
|
+
headers: {
|
|
12632
|
+
[name: string]: unknown;
|
|
12633
|
+
};
|
|
12634
|
+
content: {
|
|
12635
|
+
"application/json": {
|
|
12636
|
+
/** @example success */
|
|
12637
|
+
status?: string;
|
|
12638
|
+
data?: {
|
|
12639
|
+
/** @enum {string} */
|
|
12640
|
+
action?: "started" | "completed" | "finished";
|
|
12641
|
+
/** Format: uuid */
|
|
12642
|
+
challengeId?: string;
|
|
12643
|
+
currentStep?: {
|
|
12644
|
+
/** Format: uuid */
|
|
12645
|
+
id?: string;
|
|
12646
|
+
index?: number;
|
|
12647
|
+
name?: string;
|
|
12648
|
+
/** Format: date-time */
|
|
12649
|
+
startedAt?: string | null;
|
|
12650
|
+
/** Format: date-time */
|
|
12651
|
+
completedAt?: string | null;
|
|
12652
|
+
} | null;
|
|
12653
|
+
/** @description Next step in the journey. When action='completed', this step is also auto-started on the same call (startedAt populated). */
|
|
12654
|
+
nextStep?: {
|
|
12655
|
+
/** Format: uuid */
|
|
12656
|
+
id?: string;
|
|
12657
|
+
index?: number;
|
|
12658
|
+
name?: string;
|
|
12659
|
+
/** Format: date-time */
|
|
12660
|
+
startedAt?: string | null;
|
|
12661
|
+
} | null;
|
|
12662
|
+
};
|
|
12663
|
+
};
|
|
12664
|
+
};
|
|
12665
|
+
};
|
|
12666
|
+
401: components["responses"]["Unauthorized"];
|
|
12667
|
+
404: components["responses"]["NotFound"];
|
|
12668
|
+
};
|
|
12669
|
+
};
|
|
12670
|
+
delete?: never;
|
|
12671
|
+
options?: never;
|
|
12672
|
+
head?: never;
|
|
12673
|
+
patch?: never;
|
|
12674
|
+
trace?: never;
|
|
12675
|
+
};
|
|
12290
12676
|
"/user-challenge-progress/steps/{stepId}/start": {
|
|
12291
12677
|
parameters: {
|
|
12292
12678
|
query?: never;
|
|
@@ -12297,9 +12683,12 @@ interface paths {
|
|
|
12297
12683
|
get?: never;
|
|
12298
12684
|
put?: never;
|
|
12299
12685
|
/**
|
|
12300
|
-
*
|
|
12301
|
-
* @description Creates a user_challenge_progress row. If one already exists
|
|
12686
|
+
* [Internal/Admin] Force-start a specific challenge step (idempotent)
|
|
12687
|
+
* @description Creates a user_challenge_progress row for the given step. If one already exists,
|
|
12302
12688
|
* returns the existing row (idempotent).
|
|
12689
|
+
*
|
|
12690
|
+
* Client apps (web/mobile) should use POST /user-challenge-progress/challenges/{id}/advance
|
|
12691
|
+
* instead. This endpoint is retained for internal/admin tooling that needs to force a state.
|
|
12303
12692
|
*/
|
|
12304
12693
|
post: {
|
|
12305
12694
|
parameters: {
|
|
@@ -12346,8 +12735,12 @@ interface paths {
|
|
|
12346
12735
|
get?: never;
|
|
12347
12736
|
put?: never;
|
|
12348
12737
|
/**
|
|
12349
|
-
*
|
|
12350
|
-
* @description Sets completed_at on the user's progress row
|
|
12738
|
+
* [Internal/Admin] Force-complete a specific challenge step
|
|
12739
|
+
* @description Sets completed_at on the user's progress row for the given step. Idempotent
|
|
12740
|
+
* (no-op if already completed).
|
|
12741
|
+
*
|
|
12742
|
+
* Client apps (web/mobile) should use POST /user-challenge-progress/challenges/{id}/advance
|
|
12743
|
+
* instead. This endpoint is retained for internal/admin tooling that needs to force a state.
|
|
12351
12744
|
*/
|
|
12352
12745
|
post: {
|
|
12353
12746
|
parameters: {
|
|
@@ -14364,6 +14757,9 @@ interface components {
|
|
|
14364
14757
|
createdAt: string;
|
|
14365
14758
|
/** Format: date-time */
|
|
14366
14759
|
updatedAt: string;
|
|
14760
|
+
organization?: components["schemas"]["Organization"] | null;
|
|
14761
|
+
address?: components["schemas"]["Address"] | null;
|
|
14762
|
+
institutionReward?: Record<string, never> | null;
|
|
14367
14763
|
};
|
|
14368
14764
|
Organization: {
|
|
14369
14765
|
/** Format: uuid */
|
|
@@ -14909,6 +15305,11 @@ interface components {
|
|
|
14909
15305
|
maxGroupMembers?: number;
|
|
14910
15306
|
/** @example false */
|
|
14911
15307
|
isInviteOnly?: boolean;
|
|
15308
|
+
/**
|
|
15309
|
+
* Format: uuid
|
|
15310
|
+
* @description Curso ao qual o desafio está associado (agrupa a jornada no dashboard)
|
|
15311
|
+
*/
|
|
15312
|
+
courseId?: string;
|
|
14912
15313
|
/**
|
|
14913
15314
|
* Format: uuid
|
|
14914
15315
|
* @description Null para template global
|
|
@@ -14944,6 +15345,8 @@ interface components {
|
|
|
14944
15345
|
createdAt?: string;
|
|
14945
15346
|
/** Format: date-time */
|
|
14946
15347
|
updatedAt?: string;
|
|
15348
|
+
/** @description Populado quando `include=steps` é informado no GET /challenges, ou via GET /challenges/{id} */
|
|
15349
|
+
steps?: components["schemas"]["ChallengeStep"][];
|
|
14947
15350
|
};
|
|
14948
15351
|
ChallengeMedia: {
|
|
14949
15352
|
/** Format: uuid */
|
|
@@ -14972,10 +15375,8 @@ interface components {
|
|
|
14972
15375
|
index?: number;
|
|
14973
15376
|
/**
|
|
14974
15377
|
* Format: uuid
|
|
14975
|
-
* @description
|
|
15378
|
+
* @description Opcional. Quando step type=course, aponta para o módulo específico do curso do challenge.
|
|
14976
15379
|
*/
|
|
14977
|
-
courseId?: string | null;
|
|
14978
|
-
/** Format: uuid */
|
|
14979
15380
|
courseModuleId?: string | null;
|
|
14980
15381
|
tutorialTitle?: string | null;
|
|
14981
15382
|
tutorialDescription?: string | null;
|
|
@@ -14986,6 +15387,8 @@ interface components {
|
|
|
14986
15387
|
createdAt?: string;
|
|
14987
15388
|
/** Format: date-time */
|
|
14988
15389
|
updatedAt?: string;
|
|
15390
|
+
/** @description Catálogo do step (cor, ícone, tipo). Populado junto com o relation `steps.step`. */
|
|
15391
|
+
step?: components["schemas"]["Step"];
|
|
14989
15392
|
};
|
|
14990
15393
|
/** @description Item do checklist descritivo de entrega */
|
|
14991
15394
|
ChallengeDeliveryStep: {
|
|
@@ -15057,6 +15460,99 @@ interface components {
|
|
|
15057
15460
|
/** Format: date-time */
|
|
15058
15461
|
updatedAt?: string;
|
|
15059
15462
|
};
|
|
15463
|
+
/** @description Etapa de um desafio com status computado pelo backend */
|
|
15464
|
+
JourneyStepView: {
|
|
15465
|
+
/**
|
|
15466
|
+
* Format: uuid
|
|
15467
|
+
* @description ID do challenge_step
|
|
15468
|
+
*/
|
|
15469
|
+
id: string;
|
|
15470
|
+
/** @example Módulo de IA */
|
|
15471
|
+
name: string;
|
|
15472
|
+
/**
|
|
15473
|
+
* @description Ordem da etapa dentro do desafio
|
|
15474
|
+
* @example 1
|
|
15475
|
+
*/
|
|
15476
|
+
index: number;
|
|
15477
|
+
/**
|
|
15478
|
+
* @description Tipo da etapa (do catálogo de steps)
|
|
15479
|
+
* @example course
|
|
15480
|
+
* @enum {string}
|
|
15481
|
+
*/
|
|
15482
|
+
type: "challenge" | "course" | "tutorial" | "publication" | "evaluation" | "certificate";
|
|
15483
|
+
/**
|
|
15484
|
+
* @description Cor hex do step catalog
|
|
15485
|
+
* @example #8030D8
|
|
15486
|
+
*/
|
|
15487
|
+
color: string;
|
|
15488
|
+
/**
|
|
15489
|
+
* @description Nome do ícone Lucide do step catalog
|
|
15490
|
+
* @example LuCirclePlay
|
|
15491
|
+
*/
|
|
15492
|
+
icon: string;
|
|
15493
|
+
/**
|
|
15494
|
+
* @description Status computado pelo backend: done=concluído, current=etapa ativa, locked=ainda bloqueado
|
|
15495
|
+
* @example current
|
|
15496
|
+
* @enum {string}
|
|
15497
|
+
*/
|
|
15498
|
+
status: "done" | "current" | "locked";
|
|
15499
|
+
/**
|
|
15500
|
+
* @description Percentual de progresso (0-100). Para done=100, para locked=0, para current=% do curso ou 0
|
|
15501
|
+
* @example 67
|
|
15502
|
+
*/
|
|
15503
|
+
progress: number;
|
|
15504
|
+
/**
|
|
15505
|
+
* Format: uuid
|
|
15506
|
+
* @description ID do módulo do curso referenciado por esta etapa (apenas quando type=course)
|
|
15507
|
+
*/
|
|
15508
|
+
courseModuleId?: string | null;
|
|
15509
|
+
/**
|
|
15510
|
+
* @description Título do módulo do curso (apenas quando courseModuleId não é null)
|
|
15511
|
+
* @example Introdução a IA
|
|
15512
|
+
*/
|
|
15513
|
+
courseModuleName?: string | null;
|
|
15514
|
+
};
|
|
15515
|
+
/** @description Desafio da jornada com suas etapas e status computados */
|
|
15516
|
+
JourneyChallengeView: {
|
|
15517
|
+
/**
|
|
15518
|
+
* Format: uuid
|
|
15519
|
+
* @description ID do challenge
|
|
15520
|
+
*/
|
|
15521
|
+
id: string;
|
|
15522
|
+
/** @example Desafio 1 — Energia Limpa */
|
|
15523
|
+
title: string;
|
|
15524
|
+
/**
|
|
15525
|
+
* @description Ordem do desafio na série
|
|
15526
|
+
* @example 0
|
|
15527
|
+
*/
|
|
15528
|
+
index: number;
|
|
15529
|
+
/**
|
|
15530
|
+
* Format: uuid
|
|
15531
|
+
* @description Curso ao qual o desafio está associado
|
|
15532
|
+
*/
|
|
15533
|
+
courseId: string;
|
|
15534
|
+
/**
|
|
15535
|
+
* @description True quando o desafio ainda não está disponível para o aluno (challenge seguinte ao ativo com steps pendentes)
|
|
15536
|
+
* @example false
|
|
15537
|
+
*/
|
|
15538
|
+
isUpcoming: boolean;
|
|
15539
|
+
steps: components["schemas"]["JourneyStepView"][];
|
|
15540
|
+
};
|
|
15541
|
+
/** @description Resposta completa do endpoint GET /user-challenge-progress/journey — dados pré-computados para renderização direta da tela de jornada */
|
|
15542
|
+
JourneyView: {
|
|
15543
|
+
/** @description Desafios da jornada ordenados por index, com prioridade escola > template aplicada */
|
|
15544
|
+
challenges: components["schemas"]["JourneyChallengeView"][];
|
|
15545
|
+
/**
|
|
15546
|
+
* Format: uuid
|
|
15547
|
+
* @description ID da série resolvida (da turma do aluno, ou do query param serieId)
|
|
15548
|
+
*/
|
|
15549
|
+
serieId: string | null;
|
|
15550
|
+
/**
|
|
15551
|
+
* @description Rótulo legível da série para exibição na UI
|
|
15552
|
+
* @example 6º ANO
|
|
15553
|
+
*/
|
|
15554
|
+
serieLabel: string | null;
|
|
15555
|
+
};
|
|
15060
15556
|
/** @description Aggregated progress of a user on a course or module, derived from users_course_log completion events */
|
|
15061
15557
|
UsersCourseLogProgress: {
|
|
15062
15558
|
/**
|
|
@@ -15995,6 +16491,121 @@ interface components {
|
|
|
15995
16491
|
totalStudents?: number;
|
|
15996
16492
|
year?: number;
|
|
15997
16493
|
};
|
|
16494
|
+
EncourageActivePeriod: {
|
|
16495
|
+
/** Format: uuid */
|
|
16496
|
+
id?: string;
|
|
16497
|
+
/** Format: date-time */
|
|
16498
|
+
start?: string;
|
|
16499
|
+
/** Format: date-time */
|
|
16500
|
+
end?: string;
|
|
16501
|
+
/** @example Bimestre */
|
|
16502
|
+
label?: string;
|
|
16503
|
+
/** @example 4 */
|
|
16504
|
+
periodsPerYear?: number;
|
|
16505
|
+
};
|
|
16506
|
+
EncourageOverview: {
|
|
16507
|
+
userFirstName?: string;
|
|
16508
|
+
institutionName?: string;
|
|
16509
|
+
activePeriod?: components["schemas"]["EncourageActivePeriod"];
|
|
16510
|
+
/** Format: float */
|
|
16511
|
+
globalProgressPct?: number;
|
|
16512
|
+
};
|
|
16513
|
+
EncourageKpis: {
|
|
16514
|
+
totalStudents?: number;
|
|
16515
|
+
/** Format: float */
|
|
16516
|
+
totalStudentsDeltaPct?: number;
|
|
16517
|
+
completedProjects?: number;
|
|
16518
|
+
/** Format: float */
|
|
16519
|
+
completedProjectsDeltaPct?: number;
|
|
16520
|
+
/** Format: float */
|
|
16521
|
+
engagementRatePct?: number;
|
|
16522
|
+
/** Format: float */
|
|
16523
|
+
engagementRateDeltaPct?: number;
|
|
16524
|
+
neverLoggedIn?: number;
|
|
16525
|
+
neverLoggedInDelta?: number;
|
|
16526
|
+
};
|
|
16527
|
+
/** @description Licenças do tipo aluno (seats.group_id → group.type = 'student') */
|
|
16528
|
+
EncourageLicenses: {
|
|
16529
|
+
used?: number;
|
|
16530
|
+
total?: number;
|
|
16531
|
+
/** Format: float */
|
|
16532
|
+
pct?: number;
|
|
16533
|
+
available?: number;
|
|
16534
|
+
};
|
|
16535
|
+
EncourageJourneyCourse: {
|
|
16536
|
+
/** Format: uuid */
|
|
16537
|
+
courseId?: string;
|
|
16538
|
+
title?: string;
|
|
16539
|
+
/** Format: date-time */
|
|
16540
|
+
dueDate?: string;
|
|
16541
|
+
/** Format: float */
|
|
16542
|
+
progressPct?: number;
|
|
16543
|
+
challengesCount?: number;
|
|
16544
|
+
color?: string;
|
|
16545
|
+
};
|
|
16546
|
+
EncourageJourney: {
|
|
16547
|
+
totalCourses?: number;
|
|
16548
|
+
/** Format: float */
|
|
16549
|
+
averageProgressPct?: number;
|
|
16550
|
+
/** @enum {string} */
|
|
16551
|
+
periodKind?: "semester" | "trimester" | "bimester";
|
|
16552
|
+
courses?: components["schemas"]["EncourageJourneyCourse"][];
|
|
16553
|
+
};
|
|
16554
|
+
EncourageSubmissions: {
|
|
16555
|
+
total?: number;
|
|
16556
|
+
evaluated?: number;
|
|
16557
|
+
awaitingTeacher?: number;
|
|
16558
|
+
awaitingAi?: number;
|
|
16559
|
+
};
|
|
16560
|
+
EncourageClassPerformance: {
|
|
16561
|
+
/** Format: uuid */
|
|
16562
|
+
classroomId?: string;
|
|
16563
|
+
/** @example 2º A — Médio */
|
|
16564
|
+
name?: string;
|
|
16565
|
+
/** @example Manhã */
|
|
16566
|
+
meta?: string;
|
|
16567
|
+
/** @description Total de alunos cadastrados na turma */
|
|
16568
|
+
studentsCount?: number;
|
|
16569
|
+
/** @description Alunos que submeteram pelo menos 1 challenge do período ativo */
|
|
16570
|
+
submittedCount?: number;
|
|
16571
|
+
/** Format: float */
|
|
16572
|
+
progressPct?: number;
|
|
16573
|
+
/** @enum {string} */
|
|
16574
|
+
level?: "high" | "medium" | "low";
|
|
16575
|
+
};
|
|
16576
|
+
EncourageTopStudent: {
|
|
16577
|
+
/** Format: uuid */
|
|
16578
|
+
userId?: string;
|
|
16579
|
+
rank?: number;
|
|
16580
|
+
name?: string;
|
|
16581
|
+
initials?: string;
|
|
16582
|
+
avatarColor?: string;
|
|
16583
|
+
certificates?: number;
|
|
16584
|
+
/** Format: float */
|
|
16585
|
+
averageScore?: number;
|
|
16586
|
+
};
|
|
16587
|
+
EncourageTopTeacher: {
|
|
16588
|
+
/** Format: uuid */
|
|
16589
|
+
userId?: string;
|
|
16590
|
+
rank?: number;
|
|
16591
|
+
name?: string;
|
|
16592
|
+
initials?: string;
|
|
16593
|
+
avatarColor?: string;
|
|
16594
|
+
evaluationsCount?: number;
|
|
16595
|
+
averageEvaluationSeconds?: number;
|
|
16596
|
+
/** Format: float */
|
|
16597
|
+
averageScore?: number;
|
|
16598
|
+
};
|
|
16599
|
+
EncourageDashboardResponse: {
|
|
16600
|
+
overview?: components["schemas"]["EncourageOverview"];
|
|
16601
|
+
kpis?: components["schemas"]["EncourageKpis"];
|
|
16602
|
+
licenses?: components["schemas"]["EncourageLicenses"];
|
|
16603
|
+
journey?: components["schemas"]["EncourageJourney"];
|
|
16604
|
+
submissions?: components["schemas"]["EncourageSubmissions"];
|
|
16605
|
+
classes?: components["schemas"]["EncourageClassPerformance"][];
|
|
16606
|
+
topStudents?: components["schemas"]["EncourageTopStudent"][];
|
|
16607
|
+
topTeachers?: components["schemas"]["EncourageTopTeacher"][];
|
|
16608
|
+
};
|
|
15998
16609
|
UserCreationRequest: {
|
|
15999
16610
|
/**
|
|
16000
16611
|
* Format: uuid
|
|
@@ -19585,6 +20196,62 @@ declare function createReportService(apiClient: AcademeApiClient): {
|
|
|
19585
20196
|
query: GetTopStudentsParams;
|
|
19586
20197
|
};
|
|
19587
20198
|
}, `${string}/${string}`>>;
|
|
20199
|
+
/**
|
|
20200
|
+
* Get encourage dashboard for an institution
|
|
20201
|
+
* Retorna o payload agregado da tela /new-dashboard:
|
|
20202
|
+
* overview, KPIs, licenças (alunos), jornada (cursos), submissões,
|
|
20203
|
+
* desempenho por turma, top alunos e top professores.
|
|
20204
|
+
*
|
|
20205
|
+
* @param id UUID da instituição.
|
|
20206
|
+
*/
|
|
20207
|
+
getEncourageDashboardByInstitution(id: string): Promise<openapi_fetch.FetchResponse<{
|
|
20208
|
+
parameters: {
|
|
20209
|
+
query?: never;
|
|
20210
|
+
header?: never;
|
|
20211
|
+
path: {
|
|
20212
|
+
id: string;
|
|
20213
|
+
};
|
|
20214
|
+
cookie?: never;
|
|
20215
|
+
};
|
|
20216
|
+
requestBody?: never;
|
|
20217
|
+
responses: {
|
|
20218
|
+
200: {
|
|
20219
|
+
headers: {
|
|
20220
|
+
[name: string]: unknown;
|
|
20221
|
+
};
|
|
20222
|
+
content: {
|
|
20223
|
+
"application/json": {
|
|
20224
|
+
status?: string;
|
|
20225
|
+
data?: components["schemas"]["EncourageDashboardResponse"];
|
|
20226
|
+
};
|
|
20227
|
+
};
|
|
20228
|
+
};
|
|
20229
|
+
400: {
|
|
20230
|
+
headers: {
|
|
20231
|
+
[name: string]: unknown;
|
|
20232
|
+
};
|
|
20233
|
+
content?: never;
|
|
20234
|
+
};
|
|
20235
|
+
401: {
|
|
20236
|
+
headers: {
|
|
20237
|
+
[name: string]: unknown;
|
|
20238
|
+
};
|
|
20239
|
+
content?: never;
|
|
20240
|
+
};
|
|
20241
|
+
500: {
|
|
20242
|
+
headers: {
|
|
20243
|
+
[name: string]: unknown;
|
|
20244
|
+
};
|
|
20245
|
+
content?: never;
|
|
20246
|
+
};
|
|
20247
|
+
};
|
|
20248
|
+
}, {
|
|
20249
|
+
params: {
|
|
20250
|
+
path: {
|
|
20251
|
+
id: string;
|
|
20252
|
+
};
|
|
20253
|
+
};
|
|
20254
|
+
}, `${string}/${string}`>>;
|
|
19588
20255
|
};
|
|
19589
20256
|
type ReportService = ReturnType<typeof createReportService>;
|
|
19590
20257
|
|
|
@@ -21720,6 +22387,7 @@ declare function createQuizService(apiClient: AcademeApiClient): {
|
|
|
21720
22387
|
search?: string;
|
|
21721
22388
|
page?: number;
|
|
21722
22389
|
limit?: number;
|
|
22390
|
+
randomize?: boolean;
|
|
21723
22391
|
};
|
|
21724
22392
|
header?: never;
|
|
21725
22393
|
path?: never;
|
|
@@ -21750,6 +22418,7 @@ declare function createQuizService(apiClient: AcademeApiClient): {
|
|
|
21750
22418
|
search?: string;
|
|
21751
22419
|
page?: number;
|
|
21752
22420
|
limit?: number;
|
|
22421
|
+
randomize?: boolean;
|
|
21753
22422
|
} | undefined;
|
|
21754
22423
|
};
|
|
21755
22424
|
}, `${string}/${string}`>>;
|
|
@@ -24500,7 +25169,6 @@ interface UpdateChallengeStepBody {
|
|
|
24500
25169
|
name?: string;
|
|
24501
25170
|
description?: string;
|
|
24502
25171
|
index?: number;
|
|
24503
|
-
courseId?: string;
|
|
24504
25172
|
courseModuleId?: string;
|
|
24505
25173
|
tutorialTitle?: string;
|
|
24506
25174
|
tutorialDescription?: string;
|
|
@@ -24520,6 +25188,35 @@ interface UpdateEvaluationCriterionBody {
|
|
|
24520
25188
|
description?: string;
|
|
24521
25189
|
index?: number;
|
|
24522
25190
|
}
|
|
25191
|
+
interface ChallengeUserQuizAttempt {
|
|
25192
|
+
challengeStepId: string;
|
|
25193
|
+
challengeStepName: string;
|
|
25194
|
+
challengeStepIndex: number;
|
|
25195
|
+
courseModuleId: string;
|
|
25196
|
+
courseModuleTitle: string;
|
|
25197
|
+
quizId: string;
|
|
25198
|
+
quizTitle: string;
|
|
25199
|
+
attempt: {
|
|
25200
|
+
id: string;
|
|
25201
|
+
score: number;
|
|
25202
|
+
passed: boolean;
|
|
25203
|
+
startedAt: string;
|
|
25204
|
+
completedAt: string | null;
|
|
25205
|
+
} | null;
|
|
25206
|
+
certificate: {
|
|
25207
|
+
id: string;
|
|
25208
|
+
certificateNumber: string;
|
|
25209
|
+
url: string | null;
|
|
25210
|
+
} | null;
|
|
25211
|
+
}
|
|
25212
|
+
interface ChallengeUserQuizAttemptsResponse {
|
|
25213
|
+
data?: {
|
|
25214
|
+
status?: string;
|
|
25215
|
+
data?: ChallengeUserQuizAttempt[];
|
|
25216
|
+
};
|
|
25217
|
+
error?: unknown;
|
|
25218
|
+
response: Response;
|
|
25219
|
+
}
|
|
24523
25220
|
declare function createChallengeService(apiClient: AcademeApiClient): {
|
|
24524
25221
|
/**
|
|
24525
25222
|
* List challenges with filters and pagination
|
|
@@ -24532,6 +25229,7 @@ declare function createChallengeService(apiClient: AcademeApiClient): {
|
|
|
24532
25229
|
isActive?: boolean;
|
|
24533
25230
|
templatesOnly?: boolean;
|
|
24534
25231
|
search?: string;
|
|
25232
|
+
include?: "steps";
|
|
24535
25233
|
page?: components["parameters"]["page"];
|
|
24536
25234
|
limit?: components["parameters"]["limit"];
|
|
24537
25235
|
};
|
|
@@ -24564,6 +25262,7 @@ declare function createChallengeService(apiClient: AcademeApiClient): {
|
|
|
24564
25262
|
isActive?: boolean;
|
|
24565
25263
|
templatesOnly?: boolean;
|
|
24566
25264
|
search?: string;
|
|
25265
|
+
include?: "steps";
|
|
24567
25266
|
page?: components["parameters"]["page"];
|
|
24568
25267
|
limit?: components["parameters"]["limit"];
|
|
24569
25268
|
} | undefined;
|
|
@@ -24628,6 +25327,7 @@ declare function createChallengeService(apiClient: AcademeApiClient): {
|
|
|
24628
25327
|
isGroup?: boolean;
|
|
24629
25328
|
maxGroupMembers?: number;
|
|
24630
25329
|
isInviteOnly?: boolean;
|
|
25330
|
+
courseId: string;
|
|
24631
25331
|
institutionId?: string | null;
|
|
24632
25332
|
serieId?: string;
|
|
24633
25333
|
index?: number;
|
|
@@ -24666,6 +25366,7 @@ declare function createChallengeService(apiClient: AcademeApiClient): {
|
|
|
24666
25366
|
isGroup?: boolean;
|
|
24667
25367
|
maxGroupMembers?: number;
|
|
24668
25368
|
isInviteOnly?: boolean;
|
|
25369
|
+
courseId: string;
|
|
24669
25370
|
institutionId?: string | null;
|
|
24670
25371
|
serieId?: string;
|
|
24671
25372
|
index?: number;
|
|
@@ -24699,6 +25400,7 @@ declare function createChallengeService(apiClient: AcademeApiClient): {
|
|
|
24699
25400
|
isGroup?: boolean;
|
|
24700
25401
|
maxGroupMembers?: number;
|
|
24701
25402
|
isInviteOnly?: boolean;
|
|
25403
|
+
courseId?: string;
|
|
24702
25404
|
serieId?: string;
|
|
24703
25405
|
index?: number;
|
|
24704
25406
|
submissionType?: "images" | "videos" | "audio" | "files" | "links";
|
|
@@ -24739,6 +25441,7 @@ declare function createChallengeService(apiClient: AcademeApiClient): {
|
|
|
24739
25441
|
isGroup?: boolean;
|
|
24740
25442
|
maxGroupMembers?: number;
|
|
24741
25443
|
isInviteOnly?: boolean;
|
|
25444
|
+
courseId?: string;
|
|
24742
25445
|
serieId?: string;
|
|
24743
25446
|
index?: number;
|
|
24744
25447
|
submissionType?: "images" | "videos" | "audio" | "files" | "links";
|
|
@@ -24825,6 +25528,12 @@ declare function createChallengeService(apiClient: AcademeApiClient): {
|
|
|
24825
25528
|
title?: string;
|
|
24826
25529
|
};
|
|
24827
25530
|
}, `${string}/${string}`>>;
|
|
25531
|
+
/**
|
|
25532
|
+
* Get a user's quiz attempts for the quizzes attached to this challenge's
|
|
25533
|
+
* course modules (one entry per step with course_module.quiz_id).
|
|
25534
|
+
* Defaults to the authenticated user when userId is omitted.
|
|
25535
|
+
*/
|
|
25536
|
+
getUserQuizAttempts(challengeId: string, userId?: string): Promise<ChallengeUserQuizAttemptsResponse>;
|
|
24828
25537
|
/**
|
|
24829
25538
|
* Add a step to the challenge
|
|
24830
25539
|
*/
|
|
@@ -24844,7 +25553,6 @@ declare function createChallengeService(apiClient: AcademeApiClient): {
|
|
|
24844
25553
|
name: string;
|
|
24845
25554
|
description?: string;
|
|
24846
25555
|
index: number;
|
|
24847
|
-
courseId?: string;
|
|
24848
25556
|
courseModuleId?: string;
|
|
24849
25557
|
tutorialTitle?: string;
|
|
24850
25558
|
tutorialDescription?: string;
|
|
@@ -24879,7 +25587,6 @@ declare function createChallengeService(apiClient: AcademeApiClient): {
|
|
|
24879
25587
|
name: string;
|
|
24880
25588
|
description?: string;
|
|
24881
25589
|
index: number;
|
|
24882
|
-
courseId?: string;
|
|
24883
25590
|
courseModuleId?: string;
|
|
24884
25591
|
tutorialTitle?: string;
|
|
24885
25592
|
tutorialDescription?: string;
|
|
@@ -25487,7 +26194,14 @@ declare function createSubmissionService(apiClient: AcademeApiClient): {
|
|
|
25487
26194
|
"application/json": {
|
|
25488
26195
|
status?: string;
|
|
25489
26196
|
data?: components["schemas"]["Submission"][];
|
|
25490
|
-
meta?: components["schemas"]["PaginationMeta"]
|
|
26197
|
+
meta?: components["schemas"]["PaginationMeta"] & {
|
|
26198
|
+
statusCounts?: {
|
|
26199
|
+
submitted?: number;
|
|
26200
|
+
ai_evaluated?: number;
|
|
26201
|
+
approved?: number;
|
|
26202
|
+
rejected?: number;
|
|
26203
|
+
};
|
|
26204
|
+
};
|
|
25491
26205
|
};
|
|
25492
26206
|
};
|
|
25493
26207
|
};
|
|
@@ -25917,4 +26631,4 @@ declare enum NINA_ROLES {
|
|
|
25917
26631
|
}
|
|
25918
26632
|
|
|
25919
26633
|
export { AcademeAuthProvider, BACKOFFICE_ROLES, Button, CosmicDecor, CosmicStarsCanvas, DASHBOARD_ROLES, GLOBAL_ROLES, JourneyCrystalPin, JourneyStep, MIKE_ROLES, NINA_ROLES, ProtectedApp, ProtectedComponent, ProtectedRouter, STREAMING_ROLES, Spinner, WIDGET_ROLES, academeApi_d as apiTypes, cn, createAcademeApiClient, index_d as types, useAcademeAuth, useProtectedAppColors };
|
|
25920
|
-
export type { AcademeApiClient, AcademeKeycloakContextProps, AcademeServices, AcademeUser, ButtonProps, CosmicDecorProps, CosmicDecorVariant, CosmicPlanet, CosmicStarsCanvasProps, FrameKind, JourneyCrystalPinProps, JourneyStepProps, JourneyStepSize, JourneyStepType, KeycloakUser, RequiredClientRoles, SecurityContextType, SecurityProviderProps };
|
|
26634
|
+
export type { AcademeApiClient, AcademeKeycloakContextProps, AcademeServices, AcademeUser, ButtonProps, ChallengeUserQuizAttempt, ChallengeUserQuizAttemptsResponse, CosmicDecorProps, CosmicDecorVariant, CosmicPlanet, CosmicStarsCanvasProps, FrameKind, JourneyCrystalPinProps, JourneyStepProps, JourneyStepSize, JourneyStepType, KeycloakUser, RequiredClientRoles, SecurityContextType, SecurityProviderProps };
|