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.
- package/.cursor/rules/funifier.mdc +91 -0
- package/.github/copilot-instructions.md +83 -0
- package/AGENTS.md +97 -0
- package/README.md +247 -78
- package/datasource-funifier-docs/knowledge/guides/aggregates.md +152 -152
- package/datasource-funifier-docs/knowledge/guides/database-access.md +132 -132
- package/datasource-funifier-docs/knowledge/guides/java-entities.md +373 -373
- package/datasource-funifier-docs/knowledge/guides/java-libraries.md +330 -330
- package/datasource-funifier-docs/knowledge/guides/java-managers.md +509 -509
- package/datasource-funifier-docs/knowledge/guides/triggers-guide.md +271 -271
- package/datasource-funifier-docs/knowledge/index.md +121 -121
- package/datasource-funifier-docs/knowledge/modules/achievement.md +46 -46
- package/datasource-funifier-docs/knowledge/modules/action-log.md +88 -88
- package/datasource-funifier-docs/knowledge/modules/action.md +80 -80
- package/datasource-funifier-docs/knowledge/modules/auth.md +104 -104
- package/datasource-funifier-docs/knowledge/modules/avatar.md +28 -28
- package/datasource-funifier-docs/knowledge/modules/backup.md +40 -40
- package/datasource-funifier-docs/knowledge/modules/challenge.md +91 -91
- package/datasource-funifier-docs/knowledge/modules/compact.md +40 -40
- package/datasource-funifier-docs/knowledge/modules/competition.md +149 -149
- package/datasource-funifier-docs/knowledge/modules/crossword.md +41 -41
- package/datasource-funifier-docs/knowledge/modules/csv-data.md +30 -30
- package/datasource-funifier-docs/knowledge/modules/custom-object.md +53 -53
- package/datasource-funifier-docs/knowledge/modules/database.md +241 -241
- package/datasource-funifier-docs/knowledge/modules/folder.md +111 -111
- package/datasource-funifier-docs/knowledge/modules/kpi-formulas.md +23 -23
- package/datasource-funifier-docs/knowledge/modules/lastmile.md +45 -45
- package/datasource-funifier-docs/knowledge/modules/leaderboard.md +98 -98
- package/datasource-funifier-docs/knowledge/modules/level.md +83 -83
- package/datasource-funifier-docs/knowledge/modules/lottery.md +112 -112
- package/datasource-funifier-docs/knowledge/modules/marketplace.md +27 -27
- package/datasource-funifier-docs/knowledge/modules/mystery.md +82 -82
- package/datasource-funifier-docs/knowledge/modules/notification.md +40 -40
- package/datasource-funifier-docs/knowledge/modules/patterns.md +1096 -1096
- package/datasource-funifier-docs/knowledge/modules/player.md +101 -101
- package/datasource-funifier-docs/knowledge/modules/point.md +67 -67
- package/datasource-funifier-docs/knowledge/modules/public.md +253 -253
- package/datasource-funifier-docs/knowledge/modules/question.md +136 -136
- package/datasource-funifier-docs/knowledge/modules/quiz.md +163 -163
- package/datasource-funifier-docs/knowledge/modules/scheduler.md +58 -58
- package/datasource-funifier-docs/knowledge/modules/security.md +169 -169
- package/datasource-funifier-docs/knowledge/modules/staging.md +28 -28
- package/datasource-funifier-docs/knowledge/modules/static-repo.md +41 -41
- package/datasource-funifier-docs/knowledge/modules/story.md +42 -42
- package/datasource-funifier-docs/knowledge/modules/studio-page.md +180 -180
- package/datasource-funifier-docs/knowledge/modules/swap.md +132 -132
- package/datasource-funifier-docs/knowledge/modules/team.md +75 -75
- package/datasource-funifier-docs/knowledge/modules/trigger.md +189 -189
- package/datasource-funifier-docs/knowledge/modules/upload.md +155 -155
- package/datasource-funifier-docs/knowledge/modules/virtual-good.md +99 -99
- package/datasource-funifier-docs/knowledge/modules/webhook.md +41 -41
- package/datasource-funifier-docs/knowledge/modules/websocket.md +41 -41
- package/datasource-funifier-docs/knowledge/modules/widget.md +42 -42
- package/datasource-funifier-docs/process-gtm-saas.md +143 -143
- package/datasource-funifier-docs/process-instagram.md +88 -88
- package/datasource-funifier-docs/process.md +1826 -1826
- package/datasource-funifier-docs/readme.md +132 -132
- package/dist/cli/config-writers.js +11 -11
- package/dist/mcp/bundle.js +55 -52
- package/package.json +70 -67
- package/skills/funifier-create-aggregate/SKILL.md +126 -126
- package/skills/funifier-create-custom-page/SKILL.md +126 -126
- package/skills/funifier-create-scheduler/SKILL.md +126 -126
- package/skills/funifier-create-trigger/SKILL.md +127 -127
|
@@ -1,155 +1,155 @@
|
|
|
1
|
-
# Upload (Upload)
|
|
2
|
-
|
|
3
|
-
**API Endpoint:** `/v3/upload`
|
|
4
|
-
|
|
5
|
-
## O que é
|
|
6
|
-
|
|
7
|
-
Upload de arquivos para uso na gamificação. Permite enviar imagens, documentos e outros tipos de arquivos para utilização em avatares, desafios, recursos visuais ou qualquer outra funcionalidade.
|
|
8
|
-
|
|
9
|
-
## Quando usar
|
|
10
|
-
|
|
11
|
-
- Para upload de imagens de avatares
|
|
12
|
-
- Para enviar documentos para treinamentos
|
|
13
|
-
- Para adicionar recursos visuais a desafios e itens
|
|
14
|
-
|
|
15
|
-
## API Endpoints
|
|
16
|
-
|
|
17
|
-
### Upload de Imagem
|
|
18
|
-
**Método:** POST
|
|
19
|
-
**Endpoint:** `/v3/upload/image`
|
|
20
|
-
**Content-Type:** multipart/form-data
|
|
21
|
-
|
|
22
|
-
**Campos do FormData:**
|
|
23
|
-
- `file`: conteúdo da imagem (ex: profile-pic.jpg)
|
|
24
|
-
- `extra`: `{ "session": "images" }`
|
|
25
|
-
|
|
26
|
-
**Headers:**
|
|
27
|
-
- `Authorization: {token}`
|
|
28
|
-
- `Content-Type: undefined` (gerenciado pelo FormData)
|
|
29
|
-
|
|
30
|
-
**⚠️ O campo `extra` é obrigatório.** Sem ele, a API retorna erro `Field extra is required`.
|
|
31
|
-
|
|
32
|
-
**Exemplo de Resposta:**
|
|
33
|
-
```json
|
|
34
|
-
{
|
|
35
|
-
"uploads": [
|
|
36
|
-
{
|
|
37
|
-
"bucket": "funifier/games/{apiKey}/images",
|
|
38
|
-
"extension": ".jpg",
|
|
39
|
-
"filename": "profile-pic.jpg",
|
|
40
|
-
"filename_unique": "{id}_original_profile-pic.jpg",
|
|
41
|
-
"size": 5559,
|
|
42
|
-
"content_type": "image/jpeg",
|
|
43
|
-
"thumb": "original",
|
|
44
|
-
"extra": { "session": "images" },
|
|
45
|
-
"_id": "6998ecbc434ba010175f4dd1",
|
|
46
|
-
"time": 1771629756465,
|
|
47
|
-
"url": "https://s3.amazonaws.com/funifier/games/{apiKey}/images/{id}_original_profile-pic.jpg"
|
|
48
|
-
}
|
|
49
|
-
],
|
|
50
|
-
"status": "OK"
|
|
51
|
-
}
|
|
52
|
-
```
|
|
53
|
-
|
|
54
|
-
### Exclusão de Arquivo por ID
|
|
55
|
-
**Método:** DELETE
|
|
56
|
-
**Endpoint:** `/v3/upload/{id}`
|
|
57
|
-
|
|
58
|
-
Remove o registro do banco de dados e exclui o arquivo físico do storage (S3/Azure/Google Cloud).
|
|
59
|
-
|
|
60
|
-
**Headers:**
|
|
61
|
-
- `Authorization: {token}`
|
|
62
|
-
|
|
63
|
-
**Resposta:** `204 No Content`
|
|
64
|
-
|
|
65
|
-
**Exemplo:**
|
|
66
|
-
```
|
|
67
|
-
DELETE /v3/upload/6998ecbc434ba010175f4dd1
|
|
68
|
-
Authorization: Bearer eyJhbGciOiJIUzUxMiIs...
|
|
69
|
-
```
|
|
70
|
-
|
|
71
|
-
**Observação:** A exclusão só é feita se o arquivo pertencer ao mesmo `apiKey` da autorização (verificado pela URL do arquivo).
|
|
72
|
-
|
|
73
|
-
---
|
|
74
|
-
|
|
75
|
-
### Exclusão de Arquivo por URL
|
|
76
|
-
**Método:** DELETE
|
|
77
|
-
**Endpoint:** `/v3/upload`
|
|
78
|
-
**Content-Type:** application/json
|
|
79
|
-
|
|
80
|
-
Remove o arquivo pelo campo `url`.
|
|
81
|
-
|
|
82
|
-
**Body:**
|
|
83
|
-
```json
|
|
84
|
-
{ "url": "https://s3.amazonaws.com/funifier/games/{apiKey}/images/{filename}" }
|
|
85
|
-
```
|
|
86
|
-
|
|
87
|
-
**Resposta:** `204 No Content`
|
|
88
|
-
|
|
89
|
-
---
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
### Uso com Player (Avatar)
|
|
93
|
-
|
|
94
|
-
Para usar a imagem como avatar do jogador, após o upload:
|
|
95
|
-
|
|
96
|
-
```json
|
|
97
|
-
POST /v3/player
|
|
98
|
-
{
|
|
99
|
-
"_id": "player_id",
|
|
100
|
-
"image": {
|
|
101
|
-
"small": { "url": "URL_DO_UPLOAD" },
|
|
102
|
-
"medium": { "url": "URL_DO_UPLOAD" },
|
|
103
|
-
"original": { "url": "URL_DO_UPLOAD" }
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
```
|
|
107
|
-
|
|
108
|
-
**Nota:** O campo `image` do player deve ter o formato `{ small: { url }, medium: { url }, original: { url } }`. A URL é obtida de `response.uploads[0].url`.
|
|
109
|
-
|
|
110
|
-
### Upload de Arquivo Genérico
|
|
111
|
-
**Método:** POST
|
|
112
|
-
**Endpoint:** `/v3/upload/file`
|
|
113
|
-
**Content-Type:** multipart/form-data
|
|
114
|
-
|
|
115
|
-
Suporta **qualquer tipo de arquivo** (não apenas imagens). Aceita múltiplos arquivos.
|
|
116
|
-
|
|
117
|
-
**Campos:**
|
|
118
|
-
- `file`: arquivo binário (pode repetir para vários)
|
|
119
|
-
- `extra`: string JSON obrigatória (ex: `{"session": "docs"}`)
|
|
120
|
-
|
|
121
|
-
**cURL:**
|
|
122
|
-
```bash
|
|
123
|
-
curl -X POST "{server}/v3/upload/file" \
|
|
124
|
-
-H "Authorization: Bearer {token}" \
|
|
125
|
-
-F 'file=@./documento.pdf;type=application/pdf' \
|
|
126
|
-
-F 'extra={"session":"docs","name":"manual"}'
|
|
127
|
-
```
|
|
128
|
-
|
|
129
|
-
### Deletar Upload por URL
|
|
130
|
-
**Método:** DELETE
|
|
131
|
-
**Endpoint:** `/v3/upload/image`
|
|
132
|
-
|
|
133
|
-
**Body:**
|
|
134
|
-
```json
|
|
135
|
-
{ "url": "https://s3.amazonaws.com/funifier/games/{APIKEY}/images/59359e..._logo.png" }
|
|
136
|
-
```
|
|
137
|
-
|
|
138
|
-
### Listar Uploads
|
|
139
|
-
**Método:** GET
|
|
140
|
-
**Endpoint:** `/v3/upload`
|
|
141
|
-
|
|
142
|
-
## Triggers de Upload
|
|
143
|
-
|
|
144
|
-
O upload dispara triggers `BEFORE_CREATE` e `AFTER_CREATE` na entidade `UPLOAD`. Isso permite:
|
|
145
|
-
- Validar arquivos antes de salvar
|
|
146
|
-
- Processar metadados após upload
|
|
147
|
-
- Integrar com outros módulos
|
|
148
|
-
|
|
149
|
-
## Validações e Testes
|
|
150
|
-
|
|
151
|
-
- [ ] Upload de imagem retorna URL válida
|
|
152
|
-
- [ ] Upload de arquivo genérico funciona
|
|
153
|
-
- [ ] URL da imagem é acessível publicamente
|
|
154
|
-
- [ ] Diferentes formatos são aceitos (jpg, png, pdf, etc.)
|
|
155
|
-
- [ ] Delete por URL remove o arquivo
|
|
1
|
+
# Upload (Upload)
|
|
2
|
+
|
|
3
|
+
**API Endpoint:** `/v3/upload`
|
|
4
|
+
|
|
5
|
+
## O que é
|
|
6
|
+
|
|
7
|
+
Upload de arquivos para uso na gamificação. Permite enviar imagens, documentos e outros tipos de arquivos para utilização em avatares, desafios, recursos visuais ou qualquer outra funcionalidade.
|
|
8
|
+
|
|
9
|
+
## Quando usar
|
|
10
|
+
|
|
11
|
+
- Para upload de imagens de avatares
|
|
12
|
+
- Para enviar documentos para treinamentos
|
|
13
|
+
- Para adicionar recursos visuais a desafios e itens
|
|
14
|
+
|
|
15
|
+
## API Endpoints
|
|
16
|
+
|
|
17
|
+
### Upload de Imagem
|
|
18
|
+
**Método:** POST
|
|
19
|
+
**Endpoint:** `/v3/upload/image`
|
|
20
|
+
**Content-Type:** multipart/form-data
|
|
21
|
+
|
|
22
|
+
**Campos do FormData:**
|
|
23
|
+
- `file`: conteúdo da imagem (ex: profile-pic.jpg)
|
|
24
|
+
- `extra`: `{ "session": "images" }`
|
|
25
|
+
|
|
26
|
+
**Headers:**
|
|
27
|
+
- `Authorization: {token}`
|
|
28
|
+
- `Content-Type: undefined` (gerenciado pelo FormData)
|
|
29
|
+
|
|
30
|
+
**⚠️ O campo `extra` é obrigatório.** Sem ele, a API retorna erro `Field extra is required`.
|
|
31
|
+
|
|
32
|
+
**Exemplo de Resposta:**
|
|
33
|
+
```json
|
|
34
|
+
{
|
|
35
|
+
"uploads": [
|
|
36
|
+
{
|
|
37
|
+
"bucket": "funifier/games/{apiKey}/images",
|
|
38
|
+
"extension": ".jpg",
|
|
39
|
+
"filename": "profile-pic.jpg",
|
|
40
|
+
"filename_unique": "{id}_original_profile-pic.jpg",
|
|
41
|
+
"size": 5559,
|
|
42
|
+
"content_type": "image/jpeg",
|
|
43
|
+
"thumb": "original",
|
|
44
|
+
"extra": { "session": "images" },
|
|
45
|
+
"_id": "6998ecbc434ba010175f4dd1",
|
|
46
|
+
"time": 1771629756465,
|
|
47
|
+
"url": "https://s3.amazonaws.com/funifier/games/{apiKey}/images/{id}_original_profile-pic.jpg"
|
|
48
|
+
}
|
|
49
|
+
],
|
|
50
|
+
"status": "OK"
|
|
51
|
+
}
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
### Exclusão de Arquivo por ID
|
|
55
|
+
**Método:** DELETE
|
|
56
|
+
**Endpoint:** `/v3/upload/{id}`
|
|
57
|
+
|
|
58
|
+
Remove o registro do banco de dados e exclui o arquivo físico do storage (S3/Azure/Google Cloud).
|
|
59
|
+
|
|
60
|
+
**Headers:**
|
|
61
|
+
- `Authorization: {token}`
|
|
62
|
+
|
|
63
|
+
**Resposta:** `204 No Content`
|
|
64
|
+
|
|
65
|
+
**Exemplo:**
|
|
66
|
+
```
|
|
67
|
+
DELETE /v3/upload/6998ecbc434ba010175f4dd1
|
|
68
|
+
Authorization: Bearer eyJhbGciOiJIUzUxMiIs...
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
**Observação:** A exclusão só é feita se o arquivo pertencer ao mesmo `apiKey` da autorização (verificado pela URL do arquivo).
|
|
72
|
+
|
|
73
|
+
---
|
|
74
|
+
|
|
75
|
+
### Exclusão de Arquivo por URL
|
|
76
|
+
**Método:** DELETE
|
|
77
|
+
**Endpoint:** `/v3/upload`
|
|
78
|
+
**Content-Type:** application/json
|
|
79
|
+
|
|
80
|
+
Remove o arquivo pelo campo `url`.
|
|
81
|
+
|
|
82
|
+
**Body:**
|
|
83
|
+
```json
|
|
84
|
+
{ "url": "https://s3.amazonaws.com/funifier/games/{apiKey}/images/{filename}" }
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
**Resposta:** `204 No Content`
|
|
88
|
+
|
|
89
|
+
---
|
|
90
|
+
|
|
91
|
+
|
|
92
|
+
### Uso com Player (Avatar)
|
|
93
|
+
|
|
94
|
+
Para usar a imagem como avatar do jogador, após o upload:
|
|
95
|
+
|
|
96
|
+
```json
|
|
97
|
+
POST /v3/player
|
|
98
|
+
{
|
|
99
|
+
"_id": "player_id",
|
|
100
|
+
"image": {
|
|
101
|
+
"small": { "url": "URL_DO_UPLOAD" },
|
|
102
|
+
"medium": { "url": "URL_DO_UPLOAD" },
|
|
103
|
+
"original": { "url": "URL_DO_UPLOAD" }
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
**Nota:** O campo `image` do player deve ter o formato `{ small: { url }, medium: { url }, original: { url } }`. A URL é obtida de `response.uploads[0].url`.
|
|
109
|
+
|
|
110
|
+
### Upload de Arquivo Genérico
|
|
111
|
+
**Método:** POST
|
|
112
|
+
**Endpoint:** `/v3/upload/file`
|
|
113
|
+
**Content-Type:** multipart/form-data
|
|
114
|
+
|
|
115
|
+
Suporta **qualquer tipo de arquivo** (não apenas imagens). Aceita múltiplos arquivos.
|
|
116
|
+
|
|
117
|
+
**Campos:**
|
|
118
|
+
- `file`: arquivo binário (pode repetir para vários)
|
|
119
|
+
- `extra`: string JSON obrigatória (ex: `{"session": "docs"}`)
|
|
120
|
+
|
|
121
|
+
**cURL:**
|
|
122
|
+
```bash
|
|
123
|
+
curl -X POST "{server}/v3/upload/file" \
|
|
124
|
+
-H "Authorization: Bearer {token}" \
|
|
125
|
+
-F 'file=@./documento.pdf;type=application/pdf' \
|
|
126
|
+
-F 'extra={"session":"docs","name":"manual"}'
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
### Deletar Upload por URL
|
|
130
|
+
**Método:** DELETE
|
|
131
|
+
**Endpoint:** `/v3/upload/image`
|
|
132
|
+
|
|
133
|
+
**Body:**
|
|
134
|
+
```json
|
|
135
|
+
{ "url": "https://s3.amazonaws.com/funifier/games/{APIKEY}/images/59359e..._logo.png" }
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
### Listar Uploads
|
|
139
|
+
**Método:** GET
|
|
140
|
+
**Endpoint:** `/v3/upload`
|
|
141
|
+
|
|
142
|
+
## Triggers de Upload
|
|
143
|
+
|
|
144
|
+
O upload dispara triggers `BEFORE_CREATE` e `AFTER_CREATE` na entidade `UPLOAD`. Isso permite:
|
|
145
|
+
- Validar arquivos antes de salvar
|
|
146
|
+
- Processar metadados após upload
|
|
147
|
+
- Integrar com outros módulos
|
|
148
|
+
|
|
149
|
+
## Validações e Testes
|
|
150
|
+
|
|
151
|
+
- [ ] Upload de imagem retorna URL válida
|
|
152
|
+
- [ ] Upload de arquivo genérico funciona
|
|
153
|
+
- [ ] URL da imagem é acessível publicamente
|
|
154
|
+
- [ ] Diferentes formatos são aceitos (jpg, png, pdf, etc.)
|
|
155
|
+
- [ ] Delete por URL remove o arquivo
|
|
@@ -1,99 +1,99 @@
|
|
|
1
|
-
# Virtual Good (Loja Virtual)
|
|
2
|
-
|
|
3
|
-
**Acesso Studio:** `/studio/catalog`
|
|
4
|
-
**API Endpoint:** `/v3/virtualgoods`
|
|
5
|
-
|
|
6
|
-
## O que é
|
|
7
|
-
|
|
8
|
-
Cadastro e gestão de objetos e benefícios que podem ser adquiridos pelos jogadores. Permite cadastrar produtos físicos, virtuais ou benefícios, estipular preços, quantidades, limites de compra e atributos. Os jogadores trocam pontos ou itens por objetos na loja.
|
|
9
|
-
|
|
10
|
-
## Quando usar
|
|
11
|
-
|
|
12
|
-
- Para criar sistema de recompensas tangíveis
|
|
13
|
-
- Para monetizar pontos/moedas virtuais
|
|
14
|
-
- Para dar senso de propriedade e escolha ao jogador
|
|
15
|
-
- Exemplos: camisetas, gift cards, itens virtuais, acessórios de avatar
|
|
16
|
-
|
|
17
|
-
## Dependências
|
|
18
|
-
|
|
19
|
-
- **Point**: moeda para compra deve existir
|
|
20
|
-
|
|
21
|
-
## Checklist de Configuração no Studio
|
|
22
|
-
|
|
23
|
-
- [ ] Criar catálogo (ex: "gifts", "rewards")
|
|
24
|
-
- [ ] Criar itens dentro do catálogo
|
|
25
|
-
- [ ] Definir preço (requires: tipo de ponto + quantidade)
|
|
26
|
-
- [ ] Definir quantidade em estoque (amount, -1 = ilimitado)
|
|
27
|
-
- [ ] Definir limite de compras por jogador
|
|
28
|
-
- [ ] Ativar item (active: true)
|
|
29
|
-
|
|
30
|
-
## API Endpoints
|
|
31
|
-
|
|
32
|
-
### Listar Catálogos
|
|
33
|
-
**Método:** GET
|
|
34
|
-
**Endpoint:** `/v3/virtualgoods/catalog`
|
|
35
|
-
|
|
36
|
-
### Criar Catálogo
|
|
37
|
-
**Método:** POST
|
|
38
|
-
**Endpoint:** `/v3/virtualgoods/catalog`
|
|
39
|
-
|
|
40
|
-
**Exemplo de Body:**
|
|
41
|
-
```json
|
|
42
|
-
{
|
|
43
|
-
"catalog": "Gifts",
|
|
44
|
-
"extra": {},
|
|
45
|
-
"i18n": {},
|
|
46
|
-
"_id": "gifts"
|
|
47
|
-
}
|
|
48
|
-
```
|
|
49
|
-
|
|
50
|
-
### Listar Itens
|
|
51
|
-
**Método:** GET
|
|
52
|
-
**Endpoint:** `/v3/virtualgoods/item`
|
|
53
|
-
|
|
54
|
-
### Criar Item
|
|
55
|
-
**Método:** POST
|
|
56
|
-
**Endpoint:** `/v3/virtualgoods/item`
|
|
57
|
-
|
|
58
|
-
**Exemplo de Body:**
|
|
59
|
-
```json
|
|
60
|
-
{
|
|
61
|
-
"catalogId": "gifts",
|
|
62
|
-
"name": "Bike",
|
|
63
|
-
"description": "Electric bike",
|
|
64
|
-
"amount": -1,
|
|
65
|
-
"active": true,
|
|
66
|
-
"extra": {},
|
|
67
|
-
"requires": [],
|
|
68
|
-
"rewards": [],
|
|
69
|
-
"notifications": [],
|
|
70
|
-
"i18n": {},
|
|
71
|
-
"techniques": ["GT08"],
|
|
72
|
-
"_id": "DTj7lVn"
|
|
73
|
-
}
|
|
74
|
-
```
|
|
75
|
-
|
|
76
|
-
### Realizar Compra
|
|
77
|
-
**Método:** POST
|
|
78
|
-
**Endpoint:** `/v3/virtualgoods/purchase`
|
|
79
|
-
|
|
80
|
-
**Exemplo de Body:**
|
|
81
|
-
```json
|
|
82
|
-
{
|
|
83
|
-
"player": "tom",
|
|
84
|
-
"item": "DTj7lVn",
|
|
85
|
-
"total": 1
|
|
86
|
-
}
|
|
87
|
-
```
|
|
88
|
-
|
|
89
|
-
### Excluir Compra
|
|
90
|
-
**Método:** DELETE
|
|
91
|
-
**Endpoint:** `/v3/virtualgoods/purchase`
|
|
92
|
-
|
|
93
|
-
## Validações e Testes
|
|
94
|
-
|
|
95
|
-
- [ ] Catálogo e itens aparecem nas respectivas listas
|
|
96
|
-
- [ ] Jogador consegue comprar item com saldo suficiente
|
|
97
|
-
- [ ] Compra debita pontos corretamente
|
|
98
|
-
- [ ] Estoque é decrementado (se não ilimitado)
|
|
99
|
-
- [ ] Limite de compras por jogador é respeitado
|
|
1
|
+
# Virtual Good (Loja Virtual)
|
|
2
|
+
|
|
3
|
+
**Acesso Studio:** `/studio/catalog`
|
|
4
|
+
**API Endpoint:** `/v3/virtualgoods`
|
|
5
|
+
|
|
6
|
+
## O que é
|
|
7
|
+
|
|
8
|
+
Cadastro e gestão de objetos e benefícios que podem ser adquiridos pelos jogadores. Permite cadastrar produtos físicos, virtuais ou benefícios, estipular preços, quantidades, limites de compra e atributos. Os jogadores trocam pontos ou itens por objetos na loja.
|
|
9
|
+
|
|
10
|
+
## Quando usar
|
|
11
|
+
|
|
12
|
+
- Para criar sistema de recompensas tangíveis
|
|
13
|
+
- Para monetizar pontos/moedas virtuais
|
|
14
|
+
- Para dar senso de propriedade e escolha ao jogador
|
|
15
|
+
- Exemplos: camisetas, gift cards, itens virtuais, acessórios de avatar
|
|
16
|
+
|
|
17
|
+
## Dependências
|
|
18
|
+
|
|
19
|
+
- **Point**: moeda para compra deve existir
|
|
20
|
+
|
|
21
|
+
## Checklist de Configuração no Studio
|
|
22
|
+
|
|
23
|
+
- [ ] Criar catálogo (ex: "gifts", "rewards")
|
|
24
|
+
- [ ] Criar itens dentro do catálogo
|
|
25
|
+
- [ ] Definir preço (requires: tipo de ponto + quantidade)
|
|
26
|
+
- [ ] Definir quantidade em estoque (amount, -1 = ilimitado)
|
|
27
|
+
- [ ] Definir limite de compras por jogador
|
|
28
|
+
- [ ] Ativar item (active: true)
|
|
29
|
+
|
|
30
|
+
## API Endpoints
|
|
31
|
+
|
|
32
|
+
### Listar Catálogos
|
|
33
|
+
**Método:** GET
|
|
34
|
+
**Endpoint:** `/v3/virtualgoods/catalog`
|
|
35
|
+
|
|
36
|
+
### Criar Catálogo
|
|
37
|
+
**Método:** POST
|
|
38
|
+
**Endpoint:** `/v3/virtualgoods/catalog`
|
|
39
|
+
|
|
40
|
+
**Exemplo de Body:**
|
|
41
|
+
```json
|
|
42
|
+
{
|
|
43
|
+
"catalog": "Gifts",
|
|
44
|
+
"extra": {},
|
|
45
|
+
"i18n": {},
|
|
46
|
+
"_id": "gifts"
|
|
47
|
+
}
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
### Listar Itens
|
|
51
|
+
**Método:** GET
|
|
52
|
+
**Endpoint:** `/v3/virtualgoods/item`
|
|
53
|
+
|
|
54
|
+
### Criar Item
|
|
55
|
+
**Método:** POST
|
|
56
|
+
**Endpoint:** `/v3/virtualgoods/item`
|
|
57
|
+
|
|
58
|
+
**Exemplo de Body:**
|
|
59
|
+
```json
|
|
60
|
+
{
|
|
61
|
+
"catalogId": "gifts",
|
|
62
|
+
"name": "Bike",
|
|
63
|
+
"description": "Electric bike",
|
|
64
|
+
"amount": -1,
|
|
65
|
+
"active": true,
|
|
66
|
+
"extra": {},
|
|
67
|
+
"requires": [],
|
|
68
|
+
"rewards": [],
|
|
69
|
+
"notifications": [],
|
|
70
|
+
"i18n": {},
|
|
71
|
+
"techniques": ["GT08"],
|
|
72
|
+
"_id": "DTj7lVn"
|
|
73
|
+
}
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
### Realizar Compra
|
|
77
|
+
**Método:** POST
|
|
78
|
+
**Endpoint:** `/v3/virtualgoods/purchase`
|
|
79
|
+
|
|
80
|
+
**Exemplo de Body:**
|
|
81
|
+
```json
|
|
82
|
+
{
|
|
83
|
+
"player": "tom",
|
|
84
|
+
"item": "DTj7lVn",
|
|
85
|
+
"total": 1
|
|
86
|
+
}
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
### Excluir Compra
|
|
90
|
+
**Método:** DELETE
|
|
91
|
+
**Endpoint:** `/v3/virtualgoods/purchase`
|
|
92
|
+
|
|
93
|
+
## Validações e Testes
|
|
94
|
+
|
|
95
|
+
- [ ] Catálogo e itens aparecem nas respectivas listas
|
|
96
|
+
- [ ] Jogador consegue comprar item com saldo suficiente
|
|
97
|
+
- [ ] Compra debita pontos corretamente
|
|
98
|
+
- [ ] Estoque é decrementado (se não ilimitado)
|
|
99
|
+
- [ ] Limite de compras por jogador é respeitado
|
|
@@ -1,41 +1,41 @@
|
|
|
1
|
-
# WebHook (WebHook)
|
|
2
|
-
|
|
3
|
-
**API Endpoint:** `/v3/webhook`
|
|
4
|
-
|
|
5
|
-
## O que é
|
|
6
|
-
|
|
7
|
-
Notificações automáticas para endpoints externos em tempo real. Permite que a Funifier envie notificações automáticas (payloads) para sistemas externos sempre que eventos importantes ocorrem na gamificação, sem necessidade de polling.
|
|
8
|
-
|
|
9
|
-
## Quando usar
|
|
10
|
-
|
|
11
|
-
- Para enviar dados para sistemas de BI quando um desafio é completado
|
|
12
|
-
- Para notificar CRM quando jogador atinge uma meta
|
|
13
|
-
- Para integrar com ferramentas externas (Slack, Teams, etc.)
|
|
14
|
-
- Para sincronizar dados em tempo real com outros sistemas
|
|
15
|
-
|
|
16
|
-
## Checklist de Configuração
|
|
17
|
-
|
|
18
|
-
- [ ] Definir URL do endpoint externo
|
|
19
|
-
- [ ] Definir eventos que disparam o webhook
|
|
20
|
-
- [ ] Definir formato do payload
|
|
21
|
-
- [ ] Testar conectividade com endpoint
|
|
22
|
-
|
|
23
|
-
## API Endpoints
|
|
24
|
-
|
|
25
|
-
### Listar Webhooks
|
|
26
|
-
**Método:** GET
|
|
27
|
-
**Endpoint:** `/v3/webhook`
|
|
28
|
-
|
|
29
|
-
### Criar Webhook
|
|
30
|
-
**Método:** POST
|
|
31
|
-
**Endpoint:** `/v3/webhook`
|
|
32
|
-
|
|
33
|
-
### Deletar Webhook
|
|
34
|
-
**Método:** DELETE
|
|
35
|
-
**Endpoint:** `/v3/webhook/:id`
|
|
36
|
-
|
|
37
|
-
## Validações e Testes
|
|
38
|
-
|
|
39
|
-
- [ ] Webhook aparece na lista
|
|
40
|
-
- [ ] Payload é enviado quando evento ocorre
|
|
41
|
-
- [ ] Endpoint externo recebe dados corretamente
|
|
1
|
+
# WebHook (WebHook)
|
|
2
|
+
|
|
3
|
+
**API Endpoint:** `/v3/webhook`
|
|
4
|
+
|
|
5
|
+
## O que é
|
|
6
|
+
|
|
7
|
+
Notificações automáticas para endpoints externos em tempo real. Permite que a Funifier envie notificações automáticas (payloads) para sistemas externos sempre que eventos importantes ocorrem na gamificação, sem necessidade de polling.
|
|
8
|
+
|
|
9
|
+
## Quando usar
|
|
10
|
+
|
|
11
|
+
- Para enviar dados para sistemas de BI quando um desafio é completado
|
|
12
|
+
- Para notificar CRM quando jogador atinge uma meta
|
|
13
|
+
- Para integrar com ferramentas externas (Slack, Teams, etc.)
|
|
14
|
+
- Para sincronizar dados em tempo real com outros sistemas
|
|
15
|
+
|
|
16
|
+
## Checklist de Configuração
|
|
17
|
+
|
|
18
|
+
- [ ] Definir URL do endpoint externo
|
|
19
|
+
- [ ] Definir eventos que disparam o webhook
|
|
20
|
+
- [ ] Definir formato do payload
|
|
21
|
+
- [ ] Testar conectividade com endpoint
|
|
22
|
+
|
|
23
|
+
## API Endpoints
|
|
24
|
+
|
|
25
|
+
### Listar Webhooks
|
|
26
|
+
**Método:** GET
|
|
27
|
+
**Endpoint:** `/v3/webhook`
|
|
28
|
+
|
|
29
|
+
### Criar Webhook
|
|
30
|
+
**Método:** POST
|
|
31
|
+
**Endpoint:** `/v3/webhook`
|
|
32
|
+
|
|
33
|
+
### Deletar Webhook
|
|
34
|
+
**Método:** DELETE
|
|
35
|
+
**Endpoint:** `/v3/webhook/:id`
|
|
36
|
+
|
|
37
|
+
## Validações e Testes
|
|
38
|
+
|
|
39
|
+
- [ ] Webhook aparece na lista
|
|
40
|
+
- [ ] Payload é enviado quando evento ocorre
|
|
41
|
+
- [ ] Endpoint externo recebe dados corretamente
|
|
@@ -1,41 +1,41 @@
|
|
|
1
|
-
# WebSocket (WebSocket)
|
|
2
|
-
|
|
3
|
-
**Acesso Studio:** `/studio/websocket`
|
|
4
|
-
**API Endpoint:** `/v3/websocket`
|
|
5
|
-
|
|
6
|
-
## O que é
|
|
7
|
-
|
|
8
|
-
Entrega de feedbacks em tempo real e interação instantânea entre jogadores. Permite configurar rotinas para enviar e receber informações instantaneamente entre jogadores e o sistema, sem precisar recarregar a página.
|
|
9
|
-
|
|
10
|
-
## Quando usar
|
|
11
|
-
|
|
12
|
-
- Para comunicação em tempo real durante competições
|
|
13
|
-
- Para feedback instantâneo ao completar desafios
|
|
14
|
-
- Para chats ao vivo entre jogadores
|
|
15
|
-
- Para atualização de status em tempo real
|
|
16
|
-
|
|
17
|
-
## Checklist de Configuração no Studio
|
|
18
|
-
|
|
19
|
-
- [ ] Configurar rotinas de websocket
|
|
20
|
-
- [ ] Definir eventos que disparam mensagens
|
|
21
|
-
- [ ] Configurar canais de comunicação
|
|
22
|
-
|
|
23
|
-
## API Endpoints
|
|
24
|
-
|
|
25
|
-
### Listar WebSockets
|
|
26
|
-
**Método:** GET
|
|
27
|
-
**Endpoint:** `/v3/websocket`
|
|
28
|
-
|
|
29
|
-
### Criar WebSocket
|
|
30
|
-
**Método:** POST
|
|
31
|
-
**Endpoint:** `/v3/websocket`
|
|
32
|
-
|
|
33
|
-
### Deletar WebSocket
|
|
34
|
-
**Método:** DELETE
|
|
35
|
-
**Endpoint:** `/v3/websocket/:id`
|
|
36
|
-
|
|
37
|
-
## Validações e Testes
|
|
38
|
-
|
|
39
|
-
- [ ] WebSocket aparece na lista
|
|
40
|
-
- [ ] Mensagens são entregues em tempo real
|
|
41
|
-
- [ ] Conexão se mantém estável
|
|
1
|
+
# WebSocket (WebSocket)
|
|
2
|
+
|
|
3
|
+
**Acesso Studio:** `/studio/websocket`
|
|
4
|
+
**API Endpoint:** `/v3/websocket`
|
|
5
|
+
|
|
6
|
+
## O que é
|
|
7
|
+
|
|
8
|
+
Entrega de feedbacks em tempo real e interação instantânea entre jogadores. Permite configurar rotinas para enviar e receber informações instantaneamente entre jogadores e o sistema, sem precisar recarregar a página.
|
|
9
|
+
|
|
10
|
+
## Quando usar
|
|
11
|
+
|
|
12
|
+
- Para comunicação em tempo real durante competições
|
|
13
|
+
- Para feedback instantâneo ao completar desafios
|
|
14
|
+
- Para chats ao vivo entre jogadores
|
|
15
|
+
- Para atualização de status em tempo real
|
|
16
|
+
|
|
17
|
+
## Checklist de Configuração no Studio
|
|
18
|
+
|
|
19
|
+
- [ ] Configurar rotinas de websocket
|
|
20
|
+
- [ ] Definir eventos que disparam mensagens
|
|
21
|
+
- [ ] Configurar canais de comunicação
|
|
22
|
+
|
|
23
|
+
## API Endpoints
|
|
24
|
+
|
|
25
|
+
### Listar WebSockets
|
|
26
|
+
**Método:** GET
|
|
27
|
+
**Endpoint:** `/v3/websocket`
|
|
28
|
+
|
|
29
|
+
### Criar WebSocket
|
|
30
|
+
**Método:** POST
|
|
31
|
+
**Endpoint:** `/v3/websocket`
|
|
32
|
+
|
|
33
|
+
### Deletar WebSocket
|
|
34
|
+
**Método:** DELETE
|
|
35
|
+
**Endpoint:** `/v3/websocket/:id`
|
|
36
|
+
|
|
37
|
+
## Validações e Testes
|
|
38
|
+
|
|
39
|
+
- [ ] WebSocket aparece na lista
|
|
40
|
+
- [ ] Mensagens são entregues em tempo real
|
|
41
|
+
- [ ] Conexão se mantém estável
|