n8n-nodes-digisac 1.0.0 → 1.0.2
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/README.md +283 -84
- package/dist/credentials/DigisacApi.credentials.d.ts +2 -2
- package/dist/credentials/DigisacApi.credentials.js +1 -1
- package/dist/credentials/digisac.dark.png +0 -0
- package/dist/credentials/digisac.png +0 -0
- package/dist/nodes/Digisac/Digisac.node.js +2 -2
- package/dist/nodes/Digisac/Digisac.node.js.map +1 -1
- package/dist/nodes/Digisac/actions/index.js +480 -50
- package/dist/nodes/Digisac/actions/index.js.map +1 -1
- package/dist/nodes/Digisac/digisac.dark.png +0 -0
- package/dist/nodes/Digisac/digisac.png +0 -0
- package/dist/nodes/Digisac/helpers/format.d.ts +3 -0
- package/dist/nodes/Digisac/helpers/format.js +26 -3
- package/dist/nodes/Digisac/helpers/format.js.map +1 -1
- package/docs/api-calls.md +632 -0
- package/package.json +4 -2
package/README.md
CHANGED
|
@@ -2,145 +2,322 @@
|
|
|
2
2
|
|
|
3
3
|
[](https://github.com/PedroHSGuimaraes/n8n-nodes-digisac/actions/workflows/ci.yml)
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
Node community do [n8n](https://n8n.io/) para integrar workflows com a **API da Digisac**. O pacote expõe em um único node todas as chamadas publicadas na documentação Postman da Digisac: contatos, chamados, mensagens, campanhas, conexões, departamentos, usuários, tags, templates, webhooks, relatórios, estatísticas, agendamentos e demais recursos operacionais.
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
O projeto segue o mesmo padrão usado no `n8n-nodes-clinicorp`: um node de ação, uma credencial, TypeScript, catálogo gerado a partir da documentação da API, build validado por CI, publicação no npm via GitHub Actions e suporte a uso como Tool de Agente de IA.
|
|
8
8
|
|
|
9
|
-
##
|
|
9
|
+
## Funcionalidades
|
|
10
10
|
|
|
11
|
-
- **
|
|
12
|
-
- **
|
|
13
|
-
- **
|
|
14
|
-
- **AI Agent
|
|
15
|
-
- **
|
|
16
|
-
- **
|
|
11
|
+
- **Cobertura completa da documentação**: 298 chamadas da coleção pública Postman da Digisac, organizadas em 51 recursos no n8n.
|
|
12
|
+
- **Node único e intuitivo**: selecione **Resource -> Operation**, preencha campos simples de path, query e body, e execute.
|
|
13
|
+
- **Credencial centralizada**: Base URL e Bearer Token ficam salvos uma única vez na credencial `Digisac API`.
|
|
14
|
+
- **Pronto para AI Agent**: o node tem `usableAsTool: true` e descrições pensadas para LLMs entenderem método, caminho, parâmetros, IDs, filtros, campos de body e quando usar JSON avançado.
|
|
15
|
+
- **Sem dependências runtime**: usa `httpRequestWithAuthentication` do próprio n8n.
|
|
16
|
+
- **Catálogo rastreável**: `nodes/Digisac/generated/endpoints.ts` é gerado da documentação Postman; `docs/api-calls.md` lista todas as chamadas em português.
|
|
17
|
+
- **Publicação segura**: GitHub Actions publica no npm com provenance.
|
|
17
18
|
|
|
18
|
-
##
|
|
19
|
+
## Instalação
|
|
19
20
|
|
|
20
|
-
|
|
21
|
+
No n8n, acesse **Settings -> Community Nodes -> Install** e instale:
|
|
21
22
|
|
|
22
23
|
```text
|
|
23
24
|
n8n-nodes-digisac
|
|
24
25
|
```
|
|
25
26
|
|
|
26
|
-
|
|
27
|
+
Para usar community nodes como Tools de Agente de IA em n8n self-hosted, habilite:
|
|
27
28
|
|
|
28
29
|
```bash
|
|
29
30
|
N8N_COMMUNITY_PACKAGES_ALLOW_TOOL_USAGE=true
|
|
30
31
|
```
|
|
31
32
|
|
|
32
|
-
|
|
33
|
+
Sem essa variável, o node pode funcionar como node normal, mas não aparecer como tool no AI Agent em instalações self-hosted.
|
|
33
34
|
|
|
34
|
-
|
|
35
|
+
## Credenciais
|
|
35
36
|
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
|
39
|
-
|
|
|
40
|
-
|
|
|
37
|
+
Crie uma credencial chamada **Digisac API**.
|
|
38
|
+
|
|
39
|
+
| Campo | O que preencher | Onde encontrar |
|
|
40
|
+
| --- | --- | --- |
|
|
41
|
+
| **Base URL** | URL base da sua conta Digisac, sem barra final. Exemplo: `https://suaempresa.digisac.app`. | Digisac -> Conta -> Informações |
|
|
42
|
+
| **Access Token** | Token Bearer de acesso pessoal. | Digisac -> Conta -> API -> Tokens de acesso pessoal |
|
|
43
|
+
| **PDF/Base URL** | Base opcional para endpoints documentados como `URLbase`, principalmente export de PDF. Se vazio, o node reutiliza a Base URL. | Use só se sua instância separar URL de API e URL de PDF |
|
|
41
44
|
|
|
42
|
-
|
|
45
|
+
A credencial testa o acesso com:
|
|
43
46
|
|
|
44
47
|
```http
|
|
45
48
|
GET /api/v1/me
|
|
46
49
|
```
|
|
47
50
|
|
|
48
|
-
##
|
|
51
|
+
## Como usar o node
|
|
52
|
+
|
|
53
|
+
1. Adicione o node **Digisac** no workflow.
|
|
54
|
+
2. Escolha o **Resource**. O resource corresponde a uma pasta da documentação, como `Contatos`, `Mensagens`, `Chamados`, `Campanhas`, `Tags`, `Usuários`, `Webhooks`.
|
|
55
|
+
3. Escolha a **Operation**. Cada operation corresponde a uma chamada real da API.
|
|
56
|
+
4. Preencha os campos obrigatórios de path, como `contactId`, `ticketId`, `serviceId`, `messageId`, `userId`, `campaignId`.
|
|
57
|
+
5. Preencha os campos de query que aparecerem, como `Per Page`, `Number`, `Service Id`, `Start Period`, `End Period`, `Status`.
|
|
58
|
+
6. Em chamadas `POST`, `PUT` e `PATCH`, use **Campos do Body**. O node gera esses campos a partir do body documentado pela Digisac.
|
|
59
|
+
7. Use **Body JSON Avançado** somente quando a operação exigir array, objeto livre ou uma estrutura que não coube nos campos gerados.
|
|
60
|
+
8. Use **Options -> Query Avançada JSON** somente para filtros muito específicos não representados por campos.
|
|
61
|
+
9. Em exports CSV/TXT/PDF, se a resposta não vier como JSON, use **Options -> Response Format -> Text**.
|
|
62
|
+
|
|
63
|
+
## Campos principais do node
|
|
64
|
+
|
|
65
|
+
| Campo | Uso |
|
|
66
|
+
| --- | --- |
|
|
67
|
+
| **Resource** | Área funcional da API Digisac, gerada a partir das pastas Postman. |
|
|
68
|
+
| **Operation** | Chamada exata da API. A descrição mostra método, endpoint, origem na documentação e placeholders. |
|
|
69
|
+
| **Path Parameters** | Campos obrigatórios extraídos de placeholders como `{{contactId}}`. |
|
|
70
|
+
| **Campos de query** | Campos simples gerados a partir da URL documentada. Exemplos: `Per Page`, `Number`, `Service Id`, `From`, `To`, `Type`. |
|
|
71
|
+
| **Campos do Body** | Coleção de campos gerada a partir do body documentado para operações de escrita. Use antes de qualquer JSON manual. |
|
|
72
|
+
| **Use Body JSON Avançado** | Toggle para liberar um editor JSON quando a chamada precisa de array, objeto livre ou payload muito específico. |
|
|
73
|
+
| **Options -> Query Avançada JSON** | Objeto JSON livre mesclado na query string. Use apenas quando a chamada precisar de filtro não representado por campo. |
|
|
74
|
+
| **Options -> Response Format** | Use `Text` para exportações CSV/TXT/PDF ou respostas que não retornam JSON. |
|
|
75
|
+
|
|
76
|
+
## Exemplos práticos
|
|
77
|
+
|
|
78
|
+
### Listar contatos
|
|
79
|
+
|
|
80
|
+
Resource: **Contatos (General)**
|
|
81
|
+
Operation: **Listar todos os contatos**
|
|
82
|
+
|
|
83
|
+
Preencha:
|
|
84
|
+
|
|
85
|
+
- `Per Page`: `40`
|
|
86
|
+
|
|
87
|
+
### Buscar contato por número em uma conexão
|
|
88
|
+
|
|
89
|
+
Resource: **Contatos (General)**
|
|
90
|
+
Operation: **Buscar contato por numero de uma conexao especifica**
|
|
91
|
+
|
|
92
|
+
Preencha:
|
|
93
|
+
|
|
94
|
+
- `Number`: número ou parte do número
|
|
95
|
+
- `Service Id`: ID da conexão
|
|
96
|
+
|
|
97
|
+
### Enviar mensagem
|
|
98
|
+
|
|
99
|
+
Resource: **Mensagens (General)**
|
|
100
|
+
Operation: **Enviar mensagem**
|
|
101
|
+
|
|
102
|
+
Em **Campos do Body**, preencha:
|
|
103
|
+
|
|
104
|
+
- `Text`: `Olá, tudo bem?`
|
|
105
|
+
- `Type`: `chat`
|
|
106
|
+
- `Contact Id`: `CONTACT_ID`
|
|
107
|
+
- `User Id`: `USER_ID`
|
|
108
|
+
- `Origin`: `bot`
|
|
49
109
|
|
|
50
|
-
|
|
51
|
-
2. Select a **Resource**. Resources are generated from the Postman folders, for example Contacts, Tickets, Messages, Campaigns, Services, Departments, Users, Tags, Webhooks and Reports.
|
|
52
|
-
3. Select an **Operation**. Each operation maps to one documented API request.
|
|
53
|
-
4. Fill required path parameters such as `contactId`, `ticketId`, `serviceId`, `userId`, or `messageId`.
|
|
54
|
-
5. Add optional **Additional Query Parameters JSON** for filters, pagination, and complex Digisac `query` objects.
|
|
55
|
-
6. Add **Request Body JSON** for POST, PUT, and PATCH operations.
|
|
110
|
+
### Enviar arquivo por mensagem
|
|
56
111
|
|
|
57
|
-
|
|
112
|
+
Resource: **Mensagens (General)**
|
|
113
|
+
Operation: **Enviar imagem**, **Enviar PDF** ou **Enviar áudio**
|
|
114
|
+
|
|
115
|
+
Use **Campos do Body** para `Text`, `Number` e `Service Id`. No campo `File`, informe um JSON com base64, mimetype e nome:
|
|
58
116
|
|
|
59
117
|
```json
|
|
60
118
|
{
|
|
61
|
-
"
|
|
62
|
-
"type": "chat",
|
|
119
|
+
"type": "file",
|
|
63
120
|
"contactId": "CONTACT_ID",
|
|
64
|
-
"
|
|
65
|
-
"
|
|
121
|
+
"serviceId": "SERVICE_ID",
|
|
122
|
+
"file": {
|
|
123
|
+
"base64": "BASE64_DO_ARQUIVO",
|
|
124
|
+
"mimetype": "application/pdf",
|
|
125
|
+
"name": "documento.pdf"
|
|
126
|
+
}
|
|
66
127
|
}
|
|
67
128
|
```
|
|
68
129
|
|
|
69
|
-
|
|
130
|
+
### Buscar chamados de um contato
|
|
131
|
+
|
|
132
|
+
Resource: **Chamados (General)**
|
|
133
|
+
Operation: **Buscar chamados do contato**
|
|
134
|
+
|
|
135
|
+
Preencha:
|
|
136
|
+
|
|
137
|
+
- `Contact Id`: `CONTACT_ID`
|
|
138
|
+
|
|
139
|
+
### Transferir chamado
|
|
140
|
+
|
|
141
|
+
Resource: **Chamados (General)**
|
|
142
|
+
Operation: **Transferência de chamado**
|
|
143
|
+
|
|
144
|
+
Path:
|
|
145
|
+
|
|
146
|
+
- `Contact Id`: ID do contato
|
|
147
|
+
|
|
148
|
+
Body:
|
|
149
|
+
|
|
150
|
+
- `Department Id`: `DEPARTMENT_ID`
|
|
151
|
+
- `User Id`: `USER_ID`
|
|
152
|
+
- `Comments`: `Transferido pelo fluxo do n8n`
|
|
153
|
+
|
|
154
|
+
### Fechar chamado com assunto
|
|
155
|
+
|
|
156
|
+
Resource: **Chamados (General)**
|
|
157
|
+
Operation: **Fechar um chamado com assunto**
|
|
158
|
+
|
|
159
|
+
Em **Campos do Body**, preencha `Ticket Topic Ids` com:
|
|
70
160
|
|
|
71
161
|
```json
|
|
72
|
-
|
|
73
|
-
"where[contactId]": "CONTACT_ID",
|
|
74
|
-
"perPage": 40
|
|
75
|
-
}
|
|
162
|
+
["TICKET_TOPIC_ID"]
|
|
76
163
|
```
|
|
77
164
|
|
|
78
|
-
|
|
165
|
+
### Buscar estatísticas de atendimento
|
|
166
|
+
|
|
167
|
+
Resource: **Estatísticas de atendimento (General)**
|
|
168
|
+
Operation: **Buscar estatísticas com todos os filtros ativos**
|
|
169
|
+
|
|
170
|
+
Preencha os campos de query:
|
|
171
|
+
|
|
172
|
+
- `Start Period`: `2026-07-01T00:00:00.000Z`
|
|
173
|
+
- `End Period`: `2026-07-31T23:59:59.999Z`
|
|
174
|
+
- `Department Id`: `all`
|
|
175
|
+
- `User Id`: `all`
|
|
176
|
+
- `Period Type`: `open` ou `close`
|
|
177
|
+
- `Status`: `all`, `open` ou `close`
|
|
178
|
+
|
|
179
|
+
### Criar webhook
|
|
180
|
+
|
|
181
|
+
Resource: **Webhooks (General)**
|
|
182
|
+
Operation: **Criar webhook**
|
|
183
|
+
|
|
184
|
+
Em **Campos do Body**, preencha `Active`, `Name`, `Url`, `Events` e `Type`. Para `Events`, use array JSON:
|
|
79
185
|
|
|
80
186
|
```json
|
|
81
|
-
|
|
82
|
-
"query": {
|
|
83
|
-
"where": {
|
|
84
|
-
"contactId": "CONTACT_ID"
|
|
85
|
-
},
|
|
86
|
-
"perPage": 50
|
|
87
|
-
}
|
|
88
|
-
}
|
|
187
|
+
["message.created", "ticket.closed"]
|
|
89
188
|
```
|
|
90
189
|
|
|
91
|
-
##
|
|
190
|
+
## Todas as chamadas da API
|
|
92
191
|
|
|
93
|
-
|
|
192
|
+
O catálogo completo fica em [docs/api-calls.md](docs/api-calls.md).
|
|
94
193
|
|
|
95
|
-
|
|
194
|
+
Resumo por método:
|
|
96
195
|
|
|
97
196
|
```text
|
|
98
|
-
|
|
99
|
-
Never invent IDs. If a contactId, ticketId, departmentId, serviceId, userId, messageId, tagId, campaignId, or templateId is missing, first call a list/search operation to find it.
|
|
100
|
-
For POST/PUT/PATCH operations, build a minimal JSON body using only fields needed for the requested action.
|
|
101
|
-
For date filters, use ISO-8601 strings when the endpoint expects timestamps.
|
|
102
|
-
For exports, set Response Format to Text if the response is not JSON.
|
|
197
|
+
GET: 144 | POST: 93 | PUT: 34 | PATCH: 1 | DELETE: 26
|
|
103
198
|
```
|
|
104
199
|
|
|
105
|
-
|
|
200
|
+
Resumo por recurso:
|
|
201
|
+
|
|
202
|
+
| Recurso | Chamadas |
|
|
203
|
+
| --- | ---: |
|
|
204
|
+
| Acionamento flag no robo (General) | 1 |
|
|
205
|
+
| Agendamentos (General) | 5 |
|
|
206
|
+
| Agora (General) | 3 |
|
|
207
|
+
| Agora (Popular) | 3 |
|
|
208
|
+
| Assuntos de chamado (General) | 5 |
|
|
209
|
+
| Auditoria de autenticacao (General) | 2 |
|
|
210
|
+
| Autorizacao (General) | 1 |
|
|
211
|
+
| Autorizacao (Popular) | 1 |
|
|
212
|
+
| Avaliacoes (General) | 5 |
|
|
213
|
+
| Campanhas (General) | 7 |
|
|
214
|
+
| Campos personalizados (General) | 5 |
|
|
215
|
+
| Cargos (General) | 7 |
|
|
216
|
+
| Central de notificacoes (General) | 2 |
|
|
217
|
+
| Chamados (General) | 7 |
|
|
218
|
+
| Chamados (Popular) | 6 |
|
|
219
|
+
| Conexoes (General) | 11 |
|
|
220
|
+
| Contatos (General) | 22 |
|
|
221
|
+
| Contatos (Popular) | 22 |
|
|
222
|
+
| Controle de ausencia (General) | 1 |
|
|
223
|
+
| Creditos SMS (General) | 3 |
|
|
224
|
+
| Departamentos (General) | 6 |
|
|
225
|
+
| Distribuicao de chamados (General) | 6 |
|
|
226
|
+
| Estatisticas de atendimento (General) | 10 |
|
|
227
|
+
| Estatisticas de atendimento (Popular) | 7 |
|
|
228
|
+
| Estatisticas de avaliacoes (General) | 7 |
|
|
229
|
+
| Feriados (General) | 5 |
|
|
230
|
+
| Funil de vendas (General) | 10 |
|
|
231
|
+
| Grupos WhatsApp (General) | 4 |
|
|
232
|
+
| Historico de chamados (General) | 12 |
|
|
233
|
+
| Historico de chamados (Popular) | 9 |
|
|
234
|
+
| Idioma da plataforma (General) | 1 |
|
|
235
|
+
| Integracoes (General) | 2 |
|
|
236
|
+
| Mensagens (General) | 13 |
|
|
237
|
+
| Mensagens (Popular) | 8 |
|
|
238
|
+
| Mensagens interativas (General) | 7 |
|
|
239
|
+
| Meus dados (General) | 1 |
|
|
240
|
+
| Notificacao (General) | 3 |
|
|
241
|
+
| Organizacoes (General) | 5 |
|
|
242
|
+
| Pessoas (General) | 5 |
|
|
243
|
+
| Planos (General) | 2 |
|
|
244
|
+
| Redefinir senha (General) | 1 |
|
|
245
|
+
| Respostas rapidas (General) | 7 |
|
|
246
|
+
| Robos (General) | 6 |
|
|
247
|
+
| Tags (General) | 8 |
|
|
248
|
+
| Templates (General) | 11 |
|
|
249
|
+
| Termos de aceite (General) | 5 |
|
|
250
|
+
| Tokens (General) | 5 |
|
|
251
|
+
| Usuarios (General) | 6 |
|
|
252
|
+
| Versoes (General) | 1 |
|
|
253
|
+
| Webhooks (General) | 5 |
|
|
254
|
+
| WhatsApp (General) | 1 |
|
|
255
|
+
|
|
256
|
+
## Uso como Tool de Agente de IA
|
|
257
|
+
|
|
258
|
+
O node pode ser conectado ao **AI Agent** do n8n como uma tool. A prática recomendada é criar uma tool por operação liberada para o agente. Isso limita o escopo do modelo e reduz risco de ações erradas.
|
|
259
|
+
|
|
260
|
+
### Prompt recomendado para o System Message
|
|
106
261
|
|
|
107
|
-
```
|
|
108
|
-
|
|
262
|
+
```text
|
|
263
|
+
Você pode usar as tools Digisac somente quando o usuário pedir para consultar, criar ou alterar dados na Digisac.
|
|
264
|
+
Nunca invente IDs. Se faltar contactId, ticketId, departmentId, serviceId, userId, messageId, tagId, campaignId ou templateId, primeiro use uma operação de listagem ou busca.
|
|
265
|
+
Para operações POST, PUT e PATCH, envie um body JSON mínimo, somente com os campos necessários.
|
|
266
|
+
Quando a tool expuser Campos do Body, preencha os campos dedicados em vez de gerar um JSON manual.
|
|
267
|
+
Use Body JSON Avançado ou Query Avançada JSON apenas quando não existir campo dedicado suficiente para a chamada.
|
|
268
|
+
Para filtros de data/hora, use ISO-8601 quando o endpoint esperar timestamp.
|
|
269
|
+
Para exportações CSV, TXT ou PDF, use Response Format = Text se a resposta não for JSON.
|
|
270
|
+
Antes de criar, editar, excluir, arquivar, bloquear, fechar chamado ou enviar mensagem, confirme que a intenção do usuário está clara.
|
|
109
271
|
```
|
|
110
272
|
|
|
111
|
-
|
|
273
|
+
### Exemplos de `$fromAI()`
|
|
112
274
|
|
|
113
|
-
|
|
275
|
+
Contato existente:
|
|
114
276
|
|
|
115
|
-
```
|
|
116
|
-
|
|
277
|
+
```javascript
|
|
278
|
+
{{ $fromAI('contactId', 'ID existente de contato Digisac. Deve vir de uma busca/listagem anterior, nunca inventado.', 'string') }}
|
|
117
279
|
```
|
|
118
280
|
|
|
119
|
-
|
|
281
|
+
Texto de mensagem:
|
|
120
282
|
|
|
121
|
-
```
|
|
122
|
-
|
|
283
|
+
```javascript
|
|
284
|
+
{{ $fromAI('messageText', 'Texto exato que será enviado ao contato no WhatsApp/Digisac.', 'string') }}
|
|
123
285
|
```
|
|
124
286
|
|
|
125
|
-
|
|
287
|
+
Filtro de período:
|
|
126
288
|
|
|
127
|
-
```
|
|
128
|
-
|
|
289
|
+
```javascript
|
|
290
|
+
{{ $fromAI('startPeriod', 'Início do período em ISO-8601, por exemplo 2026-07-01T00:00:00.000Z.', 'string') }}
|
|
129
291
|
```
|
|
130
292
|
|
|
131
|
-
|
|
293
|
+
Campo de body estruturado:
|
|
132
294
|
|
|
133
|
-
|
|
295
|
+
```javascript
|
|
296
|
+
{{ $fromAI('file', 'Objeto JSON do arquivo com base64, mimetype e name quando a operação Digisac enviar mídia.', 'json') }}
|
|
297
|
+
```
|
|
298
|
+
|
|
299
|
+
### Boas práticas para LLMs
|
|
300
|
+
|
|
301
|
+
- Exponha apenas as operações necessárias para o caso de uso.
|
|
302
|
+
- Prefira operações de leitura antes de escrita.
|
|
303
|
+
- Nunca deixe o modelo inventar IDs.
|
|
304
|
+
- Use credenciais dedicadas por ambiente/cliente.
|
|
305
|
+
- Para operações destrutivas (`DELETE`, arquivar, bloquear, fechar chamado), coloque etapa humana de confirmação quando o fluxo for sensível.
|
|
306
|
+
- Em mensagens enviadas ao cliente, gere o texto em etapa anterior e passe o texto final para a tool.
|
|
307
|
+
- Use campos dedicados sempre que existirem. Para bodies grandes ou arrays de múltiplos itens, use JSON explícito e valide campos obrigatórios no workflow antes da chamada.
|
|
308
|
+
|
|
309
|
+
## Desenvolvimento
|
|
134
310
|
|
|
135
311
|
```bash
|
|
136
312
|
npm install
|
|
137
313
|
npm run generate:endpoints
|
|
314
|
+
npm run generate:docs
|
|
138
315
|
npm run lint
|
|
139
316
|
npm run build
|
|
140
317
|
npm run dev
|
|
141
318
|
```
|
|
142
319
|
|
|
143
|
-
|
|
320
|
+
Estrutura:
|
|
144
321
|
|
|
145
322
|
```text
|
|
146
323
|
n8n-nodes-digisac/
|
|
@@ -154,28 +331,45 @@ n8n-nodes-digisac/
|
|
|
154
331
|
│ ├── helpers/
|
|
155
332
|
│ └── transport/
|
|
156
333
|
├── scripts/
|
|
334
|
+
│ ├── generate-docs.mjs
|
|
157
335
|
│ └── generate-endpoints.mjs
|
|
158
|
-
└──
|
|
336
|
+
└── docs/
|
|
337
|
+
└── api-calls.md
|
|
338
|
+
```
|
|
339
|
+
|
|
340
|
+
## Como o catálogo é gerado
|
|
341
|
+
|
|
342
|
+
O script `scripts/generate-endpoints.mjs` baixa a coleção pública:
|
|
343
|
+
|
|
344
|
+
```text
|
|
345
|
+
https://documenter.getpostman.com/view/53282970/2sBXihpXmF
|
|
159
346
|
```
|
|
160
347
|
|
|
161
|
-
|
|
348
|
+
E gera:
|
|
162
349
|
|
|
163
|
-
|
|
350
|
+
```text
|
|
351
|
+
nodes/Digisac/generated/endpoints.ts
|
|
352
|
+
```
|
|
164
353
|
|
|
165
|
-
|
|
354
|
+
O script `scripts/generate-docs.mjs` lê esse catálogo e gera:
|
|
166
355
|
|
|
167
356
|
```text
|
|
168
|
-
|
|
357
|
+
README.md
|
|
358
|
+
docs/api-calls.md
|
|
169
359
|
```
|
|
170
360
|
|
|
171
|
-
|
|
361
|
+
## Publicação no npm
|
|
362
|
+
|
|
363
|
+
O projeto publica pelo mesmo padrão do node Clinicorp: GitHub Actions + npm provenance.
|
|
364
|
+
|
|
365
|
+
Para publicar nova versão:
|
|
172
366
|
|
|
173
367
|
```bash
|
|
174
368
|
npm version patch
|
|
175
369
|
git push origin main --tags
|
|
176
370
|
```
|
|
177
371
|
|
|
178
|
-
|
|
372
|
+
O workflow executa:
|
|
179
373
|
|
|
180
374
|
```bash
|
|
181
375
|
npm ci --ignore-scripts
|
|
@@ -183,14 +377,19 @@ npm run build
|
|
|
183
377
|
npm publish --provenance --access public
|
|
184
378
|
```
|
|
185
379
|
|
|
186
|
-
##
|
|
380
|
+
## Versões
|
|
381
|
+
|
|
382
|
+
- **1.0.2** — Interface simplificada: query e body agora usam campos dedicados gerados da documentação. JSON fica escondido em opções avançadas ou aparece apenas nas chamadas em que não há forma segura de gerar campos. Ícone atualizado a partir de `icon.webp`.
|
|
383
|
+
- **1.0.1** — Documentação reescrita em PT-BR, com exemplos práticos, instruções de AI Tool e catálogo completo de chamadas em `docs/api-calls.md`.
|
|
384
|
+
- **1.0.0** — Primeira versão publicada. Node único `Digisac`, credencial Bearer, catálogo com 298 chamadas da documentação Postman, suporte a AI Agent e publicação npm via GitHub Actions.
|
|
385
|
+
|
|
386
|
+
## Referências
|
|
187
387
|
|
|
188
|
-
- [
|
|
189
|
-
- [n8n building community nodes](https://docs.n8n.io/integrations/community-nodes/building-community-nodes/)
|
|
190
|
-
- [n8n programmatic node tutorial](https://docs.n8n.io/connect/create-nodes/build-your-node/tutorial-build-a-programmatic-style-node/)
|
|
191
|
-
- [n8n
|
|
192
|
-
- [n8n verification guidelines](https://docs.n8n.io/connect/create-nodes/build-your-node/reference/verification-guidelines/)
|
|
388
|
+
- [Documentação Postman da Digisac](https://documenter.getpostman.com/view/53282970/2sBXihpXmF)
|
|
389
|
+
- [n8n: building community nodes](https://docs.n8n.io/integrations/community-nodes/building-community-nodes/)
|
|
390
|
+
- [n8n: programmatic node tutorial](https://docs.n8n.io/connect/create-nodes/build-your-node/tutorial-build-a-programmatic-style-node/)
|
|
391
|
+
- [n8n: `$fromAI()`](https://docs.n8n.io/build/integrate-ai/ai-examples/use-ai-for-parameters/)
|
|
193
392
|
|
|
194
|
-
##
|
|
393
|
+
## Licença
|
|
195
394
|
|
|
196
395
|
[MIT](LICENSE.md)
|
|
@@ -3,8 +3,8 @@ export declare class DigisacApi implements ICredentialType {
|
|
|
3
3
|
name: string;
|
|
4
4
|
displayName: string;
|
|
5
5
|
icon: {
|
|
6
|
-
readonly light: "file:digisac.
|
|
7
|
-
readonly dark: "file:digisac.dark.
|
|
6
|
+
readonly light: "file:digisac.png";
|
|
7
|
+
readonly dark: "file:digisac.dark.png";
|
|
8
8
|
};
|
|
9
9
|
documentationUrl: string;
|
|
10
10
|
properties: INodeProperties[];
|
|
@@ -5,7 +5,7 @@ class DigisacApi {
|
|
|
5
5
|
constructor() {
|
|
6
6
|
this.name = 'digisacApi';
|
|
7
7
|
this.displayName = 'Digisac API';
|
|
8
|
-
this.icon = { light: 'file:digisac.
|
|
8
|
+
this.icon = { light: 'file:digisac.png', dark: 'file:digisac.dark.png' };
|
|
9
9
|
this.documentationUrl = 'https://documenter.getpostman.com/view/53282970/2sBXihpXmF';
|
|
10
10
|
this.properties = [
|
|
11
11
|
{
|
|
Binary file
|
|
Binary file
|
|
@@ -8,11 +8,11 @@ class Digisac {
|
|
|
8
8
|
this.description = {
|
|
9
9
|
displayName: 'Digisac',
|
|
10
10
|
name: 'digisac',
|
|
11
|
-
icon: { light: 'file:digisac.
|
|
11
|
+
icon: { light: 'file:digisac.png', dark: 'file:digisac.dark.png' },
|
|
12
12
|
group: ['transform'],
|
|
13
13
|
version: 1,
|
|
14
14
|
subtitle: '={{$parameter["operation"] + ": " + $parameter["resource"]}}',
|
|
15
|
-
description: 'Use every documented Digisac API request from the public Postman documentation. Choose a resource folder and operation, fill required path parameters
|
|
15
|
+
description: 'Use every documented Digisac API request from the public Postman documentation. Choose a resource folder and operation, fill required path parameters and use the generated query/body fields first. Advanced JSON fields are available only when an operation needs a custom payload or unsupported filter. Built for AI Agents: operation descriptions include method, path, source folder, required path variables, query guidance, body fields and explicit reminders to use IDs returned by Digisac instead of inventing values.',
|
|
16
16
|
defaults: {
|
|
17
17
|
name: 'Digisac',
|
|
18
18
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Digisac.node.js","sourceRoot":"","sources":["../../../nodes/Digisac/Digisac.node.ts"],"names":[],"mappings":";;;AAOA,+CAAuE;AAEvE,uCAAiF;AAEjF,MAAa,OAAO;IAApB;QACC,gBAAW,GAAyB;YACnC,WAAW,EAAE,SAAS;YACtB,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,EAAE,KAAK,EAAE,kBAAkB,EAAE,IAAI,EAAE,uBAAuB,EAAE;YAClE,KAAK,EAAE,CAAC,WAAW,CAAC;YACpB,OAAO,EAAE,CAAC;YACV,QAAQ,EAAE,8DAA8D;YACxE,WAAW,EACV
|
|
1
|
+
{"version":3,"file":"Digisac.node.js","sourceRoot":"","sources":["../../../nodes/Digisac/Digisac.node.ts"],"names":[],"mappings":";;;AAOA,+CAAuE;AAEvE,uCAAiF;AAEjF,MAAa,OAAO;IAApB;QACC,gBAAW,GAAyB;YACnC,WAAW,EAAE,SAAS;YACtB,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,EAAE,KAAK,EAAE,kBAAkB,EAAE,IAAI,EAAE,uBAAuB,EAAE;YAClE,KAAK,EAAE,CAAC,WAAW,CAAC;YACpB,OAAO,EAAE,CAAC;YACV,QAAQ,EAAE,8DAA8D;YACxE,WAAW,EACV,ugBAAugB;YACxgB,QAAQ,EAAE;gBACT,IAAI,EAAE,SAAS;aACf;YACD,MAAM,EAAE,CAAC,kCAAmB,CAAC,IAAI,CAAC;YAClC,OAAO,EAAE,CAAC,kCAAmB,CAAC,IAAI,CAAC;YACnC,YAAY,EAAE,IAAI;YAClB,WAAW,EAAE;gBACZ;oBACC,IAAI,EAAE,YAAY;oBAClB,QAAQ,EAAE,IAAI;iBACd;aACD;YACD,UAAU,EAAE;gBACX;oBACC,WAAW,EAAE,UAAU;oBACvB,IAAI,EAAE,UAAU;oBAChB,IAAI,EAAE,SAAS;oBACf,gBAAgB,EAAE,IAAI;oBACtB,OAAO,EAAE,yBAAe;oBACxB,OAAO,EAAE,yBAAe,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,EAAE;oBACxC,WAAW,EACV,oLAAoL;iBACrL;gBACD,GAAG,4BAAkB;aACrB;SACD,CAAC;IA+BH,CAAC;IA7BA,KAAK,CAAC,OAAO;QACZ,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QAClC,MAAM,UAAU,GAAyB,EAAE,CAAC;QAE5C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACvC,IAAI,CAAC;gBACJ,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,CAAC,CAAW,CAAC;gBAClE,MAAM,YAAY,GAAG,MAAM,yBAAe,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC;gBACpE,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;gBAE5E,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,0BAA0B,CAC5D,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,OAAwB,CAAC,EACtD,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,CACzB,CAAC;gBACF,UAAU,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,CAAC;YACnC,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBAChB,IAAI,IAAI,CAAC,cAAc,EAAE,EAAE,CAAC;oBAC3B,UAAU,CAAC,IAAI,CAAC;wBACf,IAAI,EAAE,EAAE,KAAK,EAAG,KAAe,CAAC,OAAO,EAAE;wBACzC,UAAU,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE;qBACvB,CAAC,CAAC;oBACH,SAAS;gBACV,CAAC;gBACD,MAAM,IAAI,iCAAkB,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,KAAc,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC,CAAC;YAChF,CAAC;QACF,CAAC;QAED,OAAO,CAAC,UAAU,CAAC,CAAC;IACrB,CAAC;CACD;AAlED,0BAkEC"}
|