funifier-mcp 0.2.0 → 0.2.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (64) hide show
  1. package/.cursor/rules/funifier.mdc +91 -0
  2. package/.github/copilot-instructions.md +83 -0
  3. package/AGENTS.md +97 -0
  4. package/README.md +247 -78
  5. package/datasource-funifier-docs/knowledge/guides/aggregates.md +152 -152
  6. package/datasource-funifier-docs/knowledge/guides/database-access.md +132 -132
  7. package/datasource-funifier-docs/knowledge/guides/java-entities.md +373 -373
  8. package/datasource-funifier-docs/knowledge/guides/java-libraries.md +330 -330
  9. package/datasource-funifier-docs/knowledge/guides/java-managers.md +509 -509
  10. package/datasource-funifier-docs/knowledge/guides/triggers-guide.md +271 -271
  11. package/datasource-funifier-docs/knowledge/index.md +121 -121
  12. package/datasource-funifier-docs/knowledge/modules/achievement.md +46 -46
  13. package/datasource-funifier-docs/knowledge/modules/action-log.md +88 -88
  14. package/datasource-funifier-docs/knowledge/modules/action.md +80 -80
  15. package/datasource-funifier-docs/knowledge/modules/auth.md +104 -104
  16. package/datasource-funifier-docs/knowledge/modules/avatar.md +28 -28
  17. package/datasource-funifier-docs/knowledge/modules/backup.md +40 -40
  18. package/datasource-funifier-docs/knowledge/modules/challenge.md +91 -91
  19. package/datasource-funifier-docs/knowledge/modules/compact.md +40 -40
  20. package/datasource-funifier-docs/knowledge/modules/competition.md +149 -149
  21. package/datasource-funifier-docs/knowledge/modules/crossword.md +41 -41
  22. package/datasource-funifier-docs/knowledge/modules/csv-data.md +30 -30
  23. package/datasource-funifier-docs/knowledge/modules/custom-object.md +53 -53
  24. package/datasource-funifier-docs/knowledge/modules/database.md +241 -241
  25. package/datasource-funifier-docs/knowledge/modules/folder.md +111 -111
  26. package/datasource-funifier-docs/knowledge/modules/kpi-formulas.md +23 -23
  27. package/datasource-funifier-docs/knowledge/modules/lastmile.md +45 -45
  28. package/datasource-funifier-docs/knowledge/modules/leaderboard.md +98 -98
  29. package/datasource-funifier-docs/knowledge/modules/level.md +83 -83
  30. package/datasource-funifier-docs/knowledge/modules/lottery.md +112 -112
  31. package/datasource-funifier-docs/knowledge/modules/marketplace.md +27 -27
  32. package/datasource-funifier-docs/knowledge/modules/mystery.md +82 -82
  33. package/datasource-funifier-docs/knowledge/modules/notification.md +40 -40
  34. package/datasource-funifier-docs/knowledge/modules/patterns.md +1096 -1096
  35. package/datasource-funifier-docs/knowledge/modules/player.md +101 -101
  36. package/datasource-funifier-docs/knowledge/modules/point.md +67 -67
  37. package/datasource-funifier-docs/knowledge/modules/public.md +253 -253
  38. package/datasource-funifier-docs/knowledge/modules/question.md +136 -136
  39. package/datasource-funifier-docs/knowledge/modules/quiz.md +163 -163
  40. package/datasource-funifier-docs/knowledge/modules/scheduler.md +58 -58
  41. package/datasource-funifier-docs/knowledge/modules/security.md +169 -169
  42. package/datasource-funifier-docs/knowledge/modules/staging.md +28 -28
  43. package/datasource-funifier-docs/knowledge/modules/static-repo.md +41 -41
  44. package/datasource-funifier-docs/knowledge/modules/story.md +42 -42
  45. package/datasource-funifier-docs/knowledge/modules/studio-page.md +180 -180
  46. package/datasource-funifier-docs/knowledge/modules/swap.md +132 -132
  47. package/datasource-funifier-docs/knowledge/modules/team.md +75 -75
  48. package/datasource-funifier-docs/knowledge/modules/trigger.md +189 -189
  49. package/datasource-funifier-docs/knowledge/modules/upload.md +155 -155
  50. package/datasource-funifier-docs/knowledge/modules/virtual-good.md +99 -99
  51. package/datasource-funifier-docs/knowledge/modules/webhook.md +41 -41
  52. package/datasource-funifier-docs/knowledge/modules/websocket.md +41 -41
  53. package/datasource-funifier-docs/knowledge/modules/widget.md +42 -42
  54. package/datasource-funifier-docs/process-gtm-saas.md +143 -143
  55. package/datasource-funifier-docs/process-instagram.md +88 -88
  56. package/datasource-funifier-docs/process.md +1826 -1826
  57. package/datasource-funifier-docs/readme.md +132 -132
  58. package/dist/cli/config-writers.js +11 -11
  59. package/dist/mcp/bundle.js +55 -52
  60. package/package.json +70 -67
  61. package/skills/funifier-create-aggregate/SKILL.md +126 -126
  62. package/skills/funifier-create-custom-page/SKILL.md +126 -126
  63. package/skills/funifier-create-scheduler/SKILL.md +126 -126
  64. package/skills/funifier-create-trigger/SKILL.md +127 -127
@@ -1,136 +1,136 @@
1
- # Question (Pergunta)
2
-
3
- **Acesso Studio:** `/studio/question`
4
- **API Endpoint:** `/v3/question`
5
-
6
- ## O que é
7
-
8
- Configuração de perguntas e respostas para os jogadores. Permite criar perguntas em diferentes formatos (múltipla escolha, verdadeiro/falso, com mídia), definir respostas corretas ou colher opiniões, e aplicar pesos diferentes para as perguntas. A apresentação pode ser no formato tradicional ou em mini games como caça-palavras e cruzadinhas.
9
-
10
- ## Quando usar
11
-
12
- - Para criar quizzes e avaliações
13
- - Para pesquisas de opinião
14
- - Para treinamentos e capacitação
15
- - Para mini games educativos
16
-
17
- ## Checklist de Configuração no Studio
18
-
19
- - [ ] Definir tipo da pergunta (MULTIPLE_CHOICE, TRUE_FALSE, etc.)
20
- - [ ] Definir título e texto da pergunta
21
- - [ ] Criar opções de resposta com grades (pontuação)
22
- - [ ] Definir se permite uma ou múltiplas respostas (select)
23
- - [ ] Configurar embaralhamento (shuffle)
24
- - [ ] Definir peso/grade da pergunta
25
-
26
- ## API Endpoints
27
-
28
- ### Listar Perguntas
29
- **Método:** GET
30
- **Endpoint:** `/v3/question`
31
-
32
- ### Criar Pergunta
33
- **Método:** POST
34
- **Endpoint:** `/v3/question`
35
-
36
- **Exemplo de Body:**
37
- ```json
38
- {
39
- "_id": "64a5b2c2d8dcca49bcf7eb6e",
40
- "type": "MULTIPLE_CHOICE",
41
- "title": "Visual Components",
42
- "question": "In Funifier, what is the small visual components that can be added to a web page to display feedbacks?",
43
- "grade": 1,
44
- "choices": [
45
- { "answer": "1", "label": "Points", "grade": 0, "extra": {} },
46
- { "answer": "2", "label": "Badges", "grade": 0, "extra": {} },
47
- { "answer": "3", "label": "Challenges", "grade": 0, "extra": {} },
48
- { "answer": "4", "label": "Leaderboards", "grade": 0, "extra": {} },
49
- { "answer": "5", "label": "Widgets", "grade": 1, "extra": {} }
50
- ],
51
- "techniques": ["GT05"],
52
- "select": "one_answer",
53
- "answerNumbering": "uppercase_letters",
54
- "shuffle": false,
55
- "feedbacks": [],
56
- "extra": {}
57
- }
58
- ```
59
-
60
- ### Deletar Pergunta
61
- **Método:** DELETE
62
- **Endpoint:** `/v3/question/:id`
63
-
64
- ### Listar Respostas de Jogadores
65
- **Método:** GET
66
- **Endpoint:** `/v3/question/log?question=:id`
67
-
68
- ### Criar Resposta de Jogador
69
- **Método:** POST
70
- **Endpoint:** `/v3/question/log`
71
-
72
- **Exemplo de Body:**
73
- ```json
74
- {
75
- "question": "64a5b2c2d8dcca49bcf7eb6e",
76
- "answer": ["5"],
77
- "player": "tom"
78
- }
79
- ```
80
-
81
- ### Deletar Resposta
82
- **Método:** DELETE
83
- **Endpoint:** `/v3/question/log/:id`
84
-
85
- ## Tipos de Pergunta
86
-
87
- | Tipo | Descrição |
88
- |------|-----------|
89
- | `MULTIPLE_CHOICE` | Múltipla escolha (uma ou várias respostas) |
90
- | `TRUE_FALSE` | Verdadeiro ou Falso |
91
- | `ESSAY` | Dissertativa (resposta livre) |
92
- | `CROSSWORD` | Caça-palavras (mini game) |
93
- | `WORD_SEARCH` | Cruzadinha (mini game) |
94
-
95
- ## Campos Importantes
96
-
97
- | Campo | Tipo | Descrição |
98
- |-------|------|-----------|
99
- | `quiz` | String | ID do quiz pai (vincula pergunta ao quiz) |
100
- | `type` | String | Tipo da pergunta (ver tabela acima) |
101
- | `question` | String | Texto da pergunta |
102
- | `grade` | Number | Peso/pontuação da pergunta |
103
- | `choices` | Array | Opções de resposta (ver estrutura abaixo) |
104
- | `select` | String | `one_answer` ou `multiple_answers` |
105
- | `shuffle` | Boolean | Embaralhar opções |
106
- | `techniques` | Array | IDs de técnicas de jogos vinculadas |
107
-
108
- ### Estrutura de Choice (Opção de Resposta)
109
-
110
- ```json
111
- {
112
- "answer": "1", // identificador único da opção
113
- "label": "Funifier", // texto exibido
114
- "grade": 1, // pontuação se escolhida (0 = errada)
115
- "gradePercent": 100, // percentual de acerto
116
- "gradeCheck": true, // indica se é resposta correta
117
- "extra": {} // metadados adicionais
118
- }
119
- ```
120
-
121
- ## Formatos de Apresentação
122
-
123
- Perguntas podem incluir conteúdo rico:
124
- - Texto com HTML
125
- - Imagens (campo `image`)
126
- - Vídeos e áudio (via `extra`)
127
- - Mini games (caça-palavras, cruzadinha)
128
-
129
- ## Validações e Testes
130
-
131
- - [ ] Pergunta aparece na lista GET /v3/question
132
- - [ ] Resposta do jogador é registrada corretamente (POST /v3/question/log)
133
- - [ ] Grade é calculada com base na resposta
134
- - [ ] Opções de resposta estão corretas
135
- - [ ] Vinculação com quiz funciona (campo `quiz`)
136
- - [ ] Registro em lote funciona (POST /v3/question/log/bulk)
1
+ # Question (Pergunta)
2
+
3
+ **Acesso Studio:** `/studio/question`
4
+ **API Endpoint:** `/v3/question`
5
+
6
+ ## O que é
7
+
8
+ Configuração de perguntas e respostas para os jogadores. Permite criar perguntas em diferentes formatos (múltipla escolha, verdadeiro/falso, com mídia), definir respostas corretas ou colher opiniões, e aplicar pesos diferentes para as perguntas. A apresentação pode ser no formato tradicional ou em mini games como caça-palavras e cruzadinhas.
9
+
10
+ ## Quando usar
11
+
12
+ - Para criar quizzes e avaliações
13
+ - Para pesquisas de opinião
14
+ - Para treinamentos e capacitação
15
+ - Para mini games educativos
16
+
17
+ ## Checklist de Configuração no Studio
18
+
19
+ - [ ] Definir tipo da pergunta (MULTIPLE_CHOICE, TRUE_FALSE, etc.)
20
+ - [ ] Definir título e texto da pergunta
21
+ - [ ] Criar opções de resposta com grades (pontuação)
22
+ - [ ] Definir se permite uma ou múltiplas respostas (select)
23
+ - [ ] Configurar embaralhamento (shuffle)
24
+ - [ ] Definir peso/grade da pergunta
25
+
26
+ ## API Endpoints
27
+
28
+ ### Listar Perguntas
29
+ **Método:** GET
30
+ **Endpoint:** `/v3/question`
31
+
32
+ ### Criar Pergunta
33
+ **Método:** POST
34
+ **Endpoint:** `/v3/question`
35
+
36
+ **Exemplo de Body:**
37
+ ```json
38
+ {
39
+ "_id": "64a5b2c2d8dcca49bcf7eb6e",
40
+ "type": "MULTIPLE_CHOICE",
41
+ "title": "Visual Components",
42
+ "question": "In Funifier, what is the small visual components that can be added to a web page to display feedbacks?",
43
+ "grade": 1,
44
+ "choices": [
45
+ { "answer": "1", "label": "Points", "grade": 0, "extra": {} },
46
+ { "answer": "2", "label": "Badges", "grade": 0, "extra": {} },
47
+ { "answer": "3", "label": "Challenges", "grade": 0, "extra": {} },
48
+ { "answer": "4", "label": "Leaderboards", "grade": 0, "extra": {} },
49
+ { "answer": "5", "label": "Widgets", "grade": 1, "extra": {} }
50
+ ],
51
+ "techniques": ["GT05"],
52
+ "select": "one_answer",
53
+ "answerNumbering": "uppercase_letters",
54
+ "shuffle": false,
55
+ "feedbacks": [],
56
+ "extra": {}
57
+ }
58
+ ```
59
+
60
+ ### Deletar Pergunta
61
+ **Método:** DELETE
62
+ **Endpoint:** `/v3/question/:id`
63
+
64
+ ### Listar Respostas de Jogadores
65
+ **Método:** GET
66
+ **Endpoint:** `/v3/question/log?question=:id`
67
+
68
+ ### Criar Resposta de Jogador
69
+ **Método:** POST
70
+ **Endpoint:** `/v3/question/log`
71
+
72
+ **Exemplo de Body:**
73
+ ```json
74
+ {
75
+ "question": "64a5b2c2d8dcca49bcf7eb6e",
76
+ "answer": ["5"],
77
+ "player": "tom"
78
+ }
79
+ ```
80
+
81
+ ### Deletar Resposta
82
+ **Método:** DELETE
83
+ **Endpoint:** `/v3/question/log/:id`
84
+
85
+ ## Tipos de Pergunta
86
+
87
+ | Tipo | Descrição |
88
+ |------|-----------|
89
+ | `MULTIPLE_CHOICE` | Múltipla escolha (uma ou várias respostas) |
90
+ | `TRUE_FALSE` | Verdadeiro ou Falso |
91
+ | `ESSAY` | Dissertativa (resposta livre) |
92
+ | `CROSSWORD` | Caça-palavras (mini game) |
93
+ | `WORD_SEARCH` | Cruzadinha (mini game) |
94
+
95
+ ## Campos Importantes
96
+
97
+ | Campo | Tipo | Descrição |
98
+ |-------|------|-----------|
99
+ | `quiz` | String | ID do quiz pai (vincula pergunta ao quiz) |
100
+ | `type` | String | Tipo da pergunta (ver tabela acima) |
101
+ | `question` | String | Texto da pergunta |
102
+ | `grade` | Number | Peso/pontuação da pergunta |
103
+ | `choices` | Array | Opções de resposta (ver estrutura abaixo) |
104
+ | `select` | String | `one_answer` ou `multiple_answers` |
105
+ | `shuffle` | Boolean | Embaralhar opções |
106
+ | `techniques` | Array | IDs de técnicas de jogos vinculadas |
107
+
108
+ ### Estrutura de Choice (Opção de Resposta)
109
+
110
+ ```json
111
+ {
112
+ "answer": "1", // identificador único da opção
113
+ "label": "Funifier", // texto exibido
114
+ "grade": 1, // pontuação se escolhida (0 = errada)
115
+ "gradePercent": 100, // percentual de acerto
116
+ "gradeCheck": true, // indica se é resposta correta
117
+ "extra": {} // metadados adicionais
118
+ }
119
+ ```
120
+
121
+ ## Formatos de Apresentação
122
+
123
+ Perguntas podem incluir conteúdo rico:
124
+ - Texto com HTML
125
+ - Imagens (campo `image`)
126
+ - Vídeos e áudio (via `extra`)
127
+ - Mini games (caça-palavras, cruzadinha)
128
+
129
+ ## Validações e Testes
130
+
131
+ - [ ] Pergunta aparece na lista GET /v3/question
132
+ - [ ] Resposta do jogador é registrada corretamente (POST /v3/question/log)
133
+ - [ ] Grade é calculada com base na resposta
134
+ - [ ] Opções de resposta estão corretas
135
+ - [ ] Vinculação com quiz funciona (campo `quiz`)
136
+ - [ ] Registro em lote funciona (POST /v3/question/log/bulk)
@@ -1,163 +1,163 @@
1
- # Quiz (Quiz)
2
-
3
- **Acesso Studio:** `/studio/quiz`
4
- **API Endpoint:** `/v3/quiz`
5
-
6
- ## O que é
7
-
8
- Agrupamento de perguntas em formato de prova ou simulado. Permite criar provas compostas por perguntas, definir nota total, controlar tentativas e embaralhar questões para cada jogador. Os quizzes podem ser apresentados como mini games.
9
-
10
- ## Quando usar
11
-
12
- - Para criar provas e avaliações
13
- - Para simulados com nota
14
- - Para treinamentos com pontuação
15
- - Para concursos de conhecimento
16
-
17
- ## Dependências
18
-
19
- - **Question**: perguntas devem ser criadas para compor o quiz
20
-
21
- ## Checklist de Configuração no Studio
22
-
23
- - [ ] Definir título e descrição do quiz
24
- - [ ] Definir nota total (grade)
25
- - [ ] Criar perguntas associadas ao quiz
26
- - [ ] Configurar embaralhamento (shuffle)
27
- - [ ] Definir se mostra nota antes de finalizar (showGradeBeforeFinish)
28
- - [ ] Configurar numeração das questões (questionNumbering)
29
-
30
- ## API Endpoints
31
-
32
- ### Listar Quizzes
33
- **Método:** GET
34
- **Endpoint:** `/v3/database/quiz`
35
-
36
- ### Criar Quiz
37
- **Método:** POST
38
- **Endpoint:** `/v3/quiz`
39
-
40
- **Exemplo de Body:**
41
- ```json
42
- {
43
- "_id": "650c82fe832",
44
- "title": "Funifier Exam",
45
- "description": "Test your knowledge about the best gamification platform in the world.",
46
- "grade": 10,
47
- "i18n": {},
48
- "extra": {},
49
- "feedbacks": [],
50
- "questionNumbering": "uppercase_letters",
51
- "showGradeBeforeFinish": false,
52
- "shuffle": false
53
- }
54
- ```
55
-
56
- ### Deletar Quiz
57
- **Método:** DELETE
58
- **Endpoint:** `/v3/quiz/:id`
59
-
60
- ### Listar Perguntas de um Quiz
61
- **Método:** GET
62
- **Endpoint:** `/v3/quiz/:id/question`
63
-
64
- ### Criar Pergunta para um Quiz
65
- **Método:** POST
66
- **Endpoint:** `/v3/question`
67
-
68
- **Exemplo de Body:**
69
- ```json
70
- {
71
- "quiz": "650c82fe832",
72
- "type": "MULTIPLE_CHOICE",
73
- "title": "Best Platform",
74
- "question": "What is the best gamification platform?",
75
- "grade": 1,
76
- "choices": [
77
- { "answer": "1", "label": "Funifier", "grade": 1, "extra": {}, "gradePercent": 100, "gradeCheck": true },
78
- { "answer": "2", "label": "Points", "grade": 0, "extra": {}, "gradePercent": 0 },
79
- { "answer": "3", "label": "Badges", "grade": 0, "extra": {}, "gradePercent": 0 },
80
- { "answer": "4", "label": "Leaderboards", "grade": 0, "extra": {}, "gradePercent": 0 }
81
- ],
82
- "i18n": {},
83
- "select": "one_answer",
84
- "shuffle": false
85
- }
86
- ```
87
-
88
- ### Iniciar Quiz
89
- **Método:** POST
90
- **Endpoint:** `/v3/quiz/start`
91
-
92
- **Exemplo de Body:**
93
- ```json
94
- {
95
- "quiz": "650c82fe832",
96
- "player": "tom"
97
- }
98
- ```
99
-
100
- ### Registrar Respostas em Lote
101
- **Método:** POST
102
- **Endpoint:** `/v3/question/log/bulk`
103
-
104
- **Exemplo de Body:**
105
- ```json
106
- [
107
- {
108
- "quiz": "650c82fe832",
109
- "quiz_log": "650dc6168325771ffaa94098",
110
- "question": "650dc4d98325771ffaa93e5e",
111
- "answer": ["1"],
112
- "player": "tom"
113
- }
114
- ]
115
- ```
116
-
117
- ### Finalizar Quiz
118
- **Método:** POST
119
- **Endpoint:** `/v3/quiz/finish`
120
-
121
- **Exemplo de Body:**
122
- ```json
123
- {
124
- "quiz_log": "650dc6168325771ffaa94098"
125
- }
126
- ```
127
-
128
- ## Fluxo Completo do Quiz
129
-
130
- ```
131
- 1. Admin cria Quiz (POST /v3/quiz)
132
- 2. Admin cria Questions vinculadas ao Quiz (POST /v3/question com "quiz": "quiz_id")
133
- 3. Jogador inicia Quiz (POST /v3/quiz/start → retorna quiz_log_id)
134
- 4. Jogador responde questões (POST /v3/question/log/bulk com quiz_log_id)
135
- 5. Jogador finaliza Quiz (POST /v3/quiz/finish → calcula nota)
136
- ```
137
-
138
- ## Campos Importantes
139
-
140
- | Campo | Tipo | Descrição |
141
- |-------|------|-----------|
142
- | `grade` | Number | Nota total do quiz (ex: 10) |
143
- | `shuffle` | Boolean | Embaralhar ordem das perguntas |
144
- | `showGradeBeforeFinish` | Boolean | Mostrar nota parcial antes de finalizar |
145
- | `questionNumbering` | String | Formato numeração (`uppercase_letters`, `numbers`, etc.) |
146
- | `feedbacks` | Array | Mensagens de feedback por faixa de nota |
147
-
148
- ## Apresentação como Mini Game
149
-
150
- Quizzes podem ser apresentados em formatos de mini games:
151
- - Corrida espacial
152
- - Quiz tradicional com timer
153
- - Formato personalizado via widget/frontend
154
-
155
- ## Validações e Testes
156
-
157
- - [ ] Quiz aparece na lista GET /v3/database/quiz
158
- - [ ] Perguntas estão associadas ao quiz
159
- - [ ] Jogador consegue iniciar quiz (POST /v3/quiz/start)
160
- - [ ] Respostas são registradas corretamente (POST /v3/question/log/bulk)
161
- - [ ] Ao finalizar, nota é calculada (POST /v3/quiz/finish)
162
- - [ ] Embaralhamento funciona (se ativado)
163
- - [ ] Feedbacks aparecem conforme faixa de nota
1
+ # Quiz (Quiz)
2
+
3
+ **Acesso Studio:** `/studio/quiz`
4
+ **API Endpoint:** `/v3/quiz`
5
+
6
+ ## O que é
7
+
8
+ Agrupamento de perguntas em formato de prova ou simulado. Permite criar provas compostas por perguntas, definir nota total, controlar tentativas e embaralhar questões para cada jogador. Os quizzes podem ser apresentados como mini games.
9
+
10
+ ## Quando usar
11
+
12
+ - Para criar provas e avaliações
13
+ - Para simulados com nota
14
+ - Para treinamentos com pontuação
15
+ - Para concursos de conhecimento
16
+
17
+ ## Dependências
18
+
19
+ - **Question**: perguntas devem ser criadas para compor o quiz
20
+
21
+ ## Checklist de Configuração no Studio
22
+
23
+ - [ ] Definir título e descrição do quiz
24
+ - [ ] Definir nota total (grade)
25
+ - [ ] Criar perguntas associadas ao quiz
26
+ - [ ] Configurar embaralhamento (shuffle)
27
+ - [ ] Definir se mostra nota antes de finalizar (showGradeBeforeFinish)
28
+ - [ ] Configurar numeração das questões (questionNumbering)
29
+
30
+ ## API Endpoints
31
+
32
+ ### Listar Quizzes
33
+ **Método:** GET
34
+ **Endpoint:** `/v3/database/quiz`
35
+
36
+ ### Criar Quiz
37
+ **Método:** POST
38
+ **Endpoint:** `/v3/quiz`
39
+
40
+ **Exemplo de Body:**
41
+ ```json
42
+ {
43
+ "_id": "650c82fe832",
44
+ "title": "Funifier Exam",
45
+ "description": "Test your knowledge about the best gamification platform in the world.",
46
+ "grade": 10,
47
+ "i18n": {},
48
+ "extra": {},
49
+ "feedbacks": [],
50
+ "questionNumbering": "uppercase_letters",
51
+ "showGradeBeforeFinish": false,
52
+ "shuffle": false
53
+ }
54
+ ```
55
+
56
+ ### Deletar Quiz
57
+ **Método:** DELETE
58
+ **Endpoint:** `/v3/quiz/:id`
59
+
60
+ ### Listar Perguntas de um Quiz
61
+ **Método:** GET
62
+ **Endpoint:** `/v3/quiz/:id/question`
63
+
64
+ ### Criar Pergunta para um Quiz
65
+ **Método:** POST
66
+ **Endpoint:** `/v3/question`
67
+
68
+ **Exemplo de Body:**
69
+ ```json
70
+ {
71
+ "quiz": "650c82fe832",
72
+ "type": "MULTIPLE_CHOICE",
73
+ "title": "Best Platform",
74
+ "question": "What is the best gamification platform?",
75
+ "grade": 1,
76
+ "choices": [
77
+ { "answer": "1", "label": "Funifier", "grade": 1, "extra": {}, "gradePercent": 100, "gradeCheck": true },
78
+ { "answer": "2", "label": "Points", "grade": 0, "extra": {}, "gradePercent": 0 },
79
+ { "answer": "3", "label": "Badges", "grade": 0, "extra": {}, "gradePercent": 0 },
80
+ { "answer": "4", "label": "Leaderboards", "grade": 0, "extra": {}, "gradePercent": 0 }
81
+ ],
82
+ "i18n": {},
83
+ "select": "one_answer",
84
+ "shuffle": false
85
+ }
86
+ ```
87
+
88
+ ### Iniciar Quiz
89
+ **Método:** POST
90
+ **Endpoint:** `/v3/quiz/start`
91
+
92
+ **Exemplo de Body:**
93
+ ```json
94
+ {
95
+ "quiz": "650c82fe832",
96
+ "player": "tom"
97
+ }
98
+ ```
99
+
100
+ ### Registrar Respostas em Lote
101
+ **Método:** POST
102
+ **Endpoint:** `/v3/question/log/bulk`
103
+
104
+ **Exemplo de Body:**
105
+ ```json
106
+ [
107
+ {
108
+ "quiz": "650c82fe832",
109
+ "quiz_log": "650dc6168325771ffaa94098",
110
+ "question": "650dc4d98325771ffaa93e5e",
111
+ "answer": ["1"],
112
+ "player": "tom"
113
+ }
114
+ ]
115
+ ```
116
+
117
+ ### Finalizar Quiz
118
+ **Método:** POST
119
+ **Endpoint:** `/v3/quiz/finish`
120
+
121
+ **Exemplo de Body:**
122
+ ```json
123
+ {
124
+ "quiz_log": "650dc6168325771ffaa94098"
125
+ }
126
+ ```
127
+
128
+ ## Fluxo Completo do Quiz
129
+
130
+ ```
131
+ 1. Admin cria Quiz (POST /v3/quiz)
132
+ 2. Admin cria Questions vinculadas ao Quiz (POST /v3/question com "quiz": "quiz_id")
133
+ 3. Jogador inicia Quiz (POST /v3/quiz/start → retorna quiz_log_id)
134
+ 4. Jogador responde questões (POST /v3/question/log/bulk com quiz_log_id)
135
+ 5. Jogador finaliza Quiz (POST /v3/quiz/finish → calcula nota)
136
+ ```
137
+
138
+ ## Campos Importantes
139
+
140
+ | Campo | Tipo | Descrição |
141
+ |-------|------|-----------|
142
+ | `grade` | Number | Nota total do quiz (ex: 10) |
143
+ | `shuffle` | Boolean | Embaralhar ordem das perguntas |
144
+ | `showGradeBeforeFinish` | Boolean | Mostrar nota parcial antes de finalizar |
145
+ | `questionNumbering` | String | Formato numeração (`uppercase_letters`, `numbers`, etc.) |
146
+ | `feedbacks` | Array | Mensagens de feedback por faixa de nota |
147
+
148
+ ## Apresentação como Mini Game
149
+
150
+ Quizzes podem ser apresentados em formatos de mini games:
151
+ - Corrida espacial
152
+ - Quiz tradicional com timer
153
+ - Formato personalizado via widget/frontend
154
+
155
+ ## Validações e Testes
156
+
157
+ - [ ] Quiz aparece na lista GET /v3/database/quiz
158
+ - [ ] Perguntas estão associadas ao quiz
159
+ - [ ] Jogador consegue iniciar quiz (POST /v3/quiz/start)
160
+ - [ ] Respostas são registradas corretamente (POST /v3/question/log/bulk)
161
+ - [ ] Ao finalizar, nota é calculada (POST /v3/quiz/finish)
162
+ - [ ] Embaralhamento funciona (se ativado)
163
+ - [ ] Feedbacks aparecem conforme faixa de nota