@bonsae/node-red-salesforce 0.4.0 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -34,6 +34,9 @@
34
34
  <tbody>
35
35
  <tr><td>Conexão</td><td>connection</td><td>NodeRef → salesforce-connection [format: node-id]</td><td>Sim</td><td></td><td>Reference to salesforce-connection</td></tr>
36
36
  <tr><td>Consulta</td><td>query</td><td>TypedInput</td><td>Sim</td><td><code>{"type":"str","value":""}</code></td><td>Represents a Node-RED TypedInput value and its type.</td></tr>
37
+ <tr><td></td><td>errorPort</td><td>boolean</td><td>Sim</td><td><code>false</code></td><td></td></tr>
38
+ <tr><td></td><td>completePort</td><td>boolean</td><td>Sim</td><td><code>false</code></td><td></td></tr>
39
+ <tr><td></td><td>statusPort</td><td>boolean</td><td>Sim</td><td><code>false</code></td><td></td></tr>
37
40
  </tbody>
38
41
  </table>
39
42
  </div>
@@ -70,11 +73,11 @@
70
73
  <tr><td>Conexão</td><td>connection</td><td>NodeRef → salesforce-connection [format: node-id]</td><td>Sim</td><td></td><td>Reference to salesforce-connection</td></tr>
71
74
  <tr><td>Operação</td><td>operation</td><td></td><td>Sim</td><td><code>"create"</code></td><td></td></tr>
72
75
  <tr><td>Tipo de SObject</td><td>sObjectType</td><td>TypedInput</td><td>Sim</td><td><code>{"type":"str","value":""}</code></td><td>Represents a Node-RED TypedInput value and its type.</td></tr>
73
- <tr><td></td><td>record</td><td>TypedInput</td><td>Sim</td><td><code>{"type":"str","value":""}</code></td><td>Represents a Node-RED TypedInput value and its type.</td></tr>
76
+ <tr><td>Registro</td><td>record</td><td>TypedInput</td><td>Sim</td><td><code>{"type":"str","value":""}</code></td><td>Represents a Node-RED TypedInput value and its type.</td></tr>
74
77
  <tr><td>Campo de ID Externo</td><td>externalIdField</td><td>string</td><td>Não</td><td><code>""</code></td><td></td></tr>
75
- <tr><td></td><td>emitError</td><td>boolean</td><td>Sim</td><td><code>false</code></td><td></td></tr>
76
- <tr><td></td><td>emitComplete</td><td>boolean</td><td>Sim</td><td><code>false</code></td><td></td></tr>
77
- <tr><td></td><td>emitStatus</td><td>boolean</td><td>Sim</td><td><code>false</code></td><td></td></tr>
78
+ <tr><td></td><td>errorPort</td><td>boolean</td><td>Sim</td><td><code>false</code></td><td></td></tr>
79
+ <tr><td></td><td>completePort</td><td>boolean</td><td>Sim</td><td><code>false</code></td><td></td></tr>
80
+ <tr><td></td><td>statusPort</td><td>boolean</td><td>Sim</td><td><code>false</code></td><td></td></tr>
78
81
  </tbody>
79
82
  </table>
80
83
  </div>
@@ -109,15 +112,16 @@
109
112
  <tr><td>Conexão</td><td>connection</td><td>NodeRef → salesforce-connection [format: node-id]</td><td>Sim</td><td></td><td>Reference to salesforce-connection</td></tr>
110
113
  <tr><td>Operação</td><td>operation</td><td></td><td>Sim</td><td><code>"insert"</code></td><td></td></tr>
111
114
  <tr><td>Tipo de SObject</td><td>sObjectType</td><td>TypedInput</td><td>Sim</td><td><code>{"type":"str","value":""}</code></td><td>Represents a Node-RED TypedInput value and its type.</td></tr>
115
+ <tr><td>Consulta SOQL</td><td>query</td><td>TypedInput</td><td>Sim</td><td><code>{"type":"str","value":""}</code></td><td>Represents a Node-RED TypedInput value and its type.</td></tr>
112
116
  <tr><td>Campo de ID Externo</td><td>externalIdField</td><td>string</td><td>Não</td><td><code>""</code></td><td></td></tr>
113
- <tr><td></td><td>assignmentRuleId</td><td>string</td><td>Não</td><td><code>""</code></td><td></td></tr>
114
- <tr><td></td><td>columnDelimiter</td><td></td><td>Sim</td><td><code>"COMMA"</code></td><td></td></tr>
115
- <tr><td></td><td>lineEnding</td><td></td><td>Sim</td><td><code>"LF"</code></td><td></td></tr>
116
- <tr><td></td><td>pollInterval</td><td>number [min: 1000]</td><td>Sim</td><td><code>5000</code></td><td></td></tr>
117
- <tr><td></td><td>pollTimeout</td><td>number [min: 5000]</td><td>Sim</td><td><code>60000</code></td><td></td></tr>
118
- <tr><td></td><td>emitError</td><td>boolean</td><td>Sim</td><td><code>false</code></td><td></td></tr>
119
- <tr><td></td><td>emitComplete</td><td>boolean</td><td>Sim</td><td><code>true</code></td><td></td></tr>
120
- <tr><td></td><td>emitStatus</td><td>boolean</td><td>Sim</td><td><code>false</code></td><td></td></tr>
117
+ <tr><td>ID da Regra de Atribuição</td><td>assignmentRuleId</td><td>string</td><td>Não</td><td><code>""</code></td><td></td></tr>
118
+ <tr><td>Delimitador de Coluna</td><td>columnDelimiter</td><td></td><td>Sim</td><td><code>"COMMA"</code></td><td></td></tr>
119
+ <tr><td>Fim de Linha</td><td>lineEnding</td><td></td><td>Sim</td><td><code>"LF"</code></td><td></td></tr>
120
+ <tr><td>Intervalo de Polling (ms)</td><td>pollInterval</td><td>number [min: 1000]</td><td>Sim</td><td><code>5000</code></td><td></td></tr>
121
+ <tr><td>Timeout de Polling (ms)</td><td>pollTimeout</td><td>number [min: 5000]</td><td>Sim</td><td><code>60000</code></td><td></td></tr>
122
+ <tr><td></td><td>errorPort</td><td>boolean</td><td>Sim</td><td><code>false</code></td><td></td></tr>
123
+ <tr><td></td><td>completePort</td><td>boolean</td><td>Sim</td><td><code>false</code></td><td></td></tr>
124
+ <tr><td></td><td>statusPort</td><td>boolean</td><td>Sim</td><td><code>false</code></td><td></td></tr>
121
125
  </tbody>
122
126
  </table>
123
127
  </div>
@@ -127,7 +131,17 @@
127
131
  <table width="100%" style="min-width:500px">
128
132
  <thead><tr><th>Rótulo</th><th>Propriedade</th><th>Tipo</th><th>Obrigatório</th><th style="width:35%">Descrição</th></tr></thead>
129
133
  <tbody>
130
- <tr><td>Array de registros ou consulta SOQL</td><td>payload</td><td></td><td>Sim</td><td></td></tr>
134
+ <tr><td>Array de registros, string CSV, stream legível (ingestão) ou gatilho (consulta)</td><td>payload</td><td></td><td>Sim</td><td>Records array, CSV string, readable stream (ingest) or SOQL string (query)</td></tr>
135
+ </tbody>
136
+ </table>
137
+ </div>
138
+
139
+ <h3>Saída</h3>
140
+ <div style="overflow-x:auto">
141
+ <table width="100%" style="min-width:500px">
142
+ <thead><tr><th>Rótulo</th><th>Propriedade</th><th>Tipo</th><th>Obrigatório</th><th style="width:35%">Descrição</th></tr></thead>
143
+ <tbody>
144
+ <tr><td>Consulta: registro individual. Ingestão: { successfulResults, failedResults, unprocessedRecords }</td><td>payload</td><td></td><td>Sim</td><td>Query: individual record. Ingest: { successfulResults, failedResults, unprocessedRecords }</td></tr>
131
145
  </tbody>
132
146
  </table>
133
147
  </div>
@@ -141,9 +155,9 @@
141
155
  <tbody>
142
156
  <tr><td>Conexão</td><td>connection</td><td>NodeRef → salesforce-connection [format: node-id]</td><td>Sim</td><td></td><td>Reference to salesforce-connection</td></tr>
143
157
  <tr><td>Tipo de SObject</td><td>sObjectType</td><td>TypedInput</td><td>Sim</td><td><code>{"type":"str","value":""}</code></td><td>Represents a Node-RED TypedInput value and its type.</td></tr>
144
- <tr><td></td><td>emitError</td><td>boolean</td><td>Sim</td><td><code>false</code></td><td></td></tr>
145
- <tr><td></td><td>emitComplete</td><td>boolean</td><td>Sim</td><td><code>false</code></td><td></td></tr>
146
- <tr><td></td><td>emitStatus</td><td>boolean</td><td>Sim</td><td><code>false</code></td><td></td></tr>
158
+ <tr><td></td><td>errorPort</td><td>boolean</td><td>Sim</td><td><code>false</code></td><td></td></tr>
159
+ <tr><td></td><td>completePort</td><td>boolean</td><td>Sim</td><td><code>false</code></td><td></td></tr>
160
+ <tr><td></td><td>statusPort</td><td>boolean</td><td>Sim</td><td><code>false</code></td><td></td></tr>
147
161
  </tbody>
148
162
  </table>
149
163
  </div>
@@ -153,7 +167,7 @@
153
167
  <table width="100%" style="min-width:500px">
154
168
  <thead><tr><th>Rótulo</th><th>Propriedade</th><th>Tipo</th><th>Obrigatório</th><th style="width:35%">Descrição</th></tr></thead>
155
169
  <tbody>
156
- <tr><td>Payload de entrada</td><td>payload</td><td></td><td>Sim</td><td></td></tr>
170
+ <tr><td>Nome da API do SObject (substitui a configuracao se fornecido)</td><td>payload</td><td></td><td>Sim</td><td></td></tr>
157
171
  </tbody>
158
172
  </table>
159
173
  </div>
@@ -163,7 +177,7 @@
163
177
  <table width="100%" style="min-width:500px">
164
178
  <thead><tr><th>Rótulo</th><th>Propriedade</th><th>Tipo</th><th>Obrigatório</th><th style="width:35%">Descrição</th></tr></thead>
165
179
  <tbody>
166
- <tr><td>Metadados do SObject</td><td>payload</td><td>object</td><td>Sim</td><td></td></tr>
180
+ <tr><td>Resultado da descricao do SObject com campos, relacionamentos filhos e informacoes de tipo de registro</td><td>payload</td><td>object</td><td>Sim</td><td></td></tr>
167
181
  </tbody>
168
182
  </table>
169
183
  </div>
@@ -180,8 +194,9 @@
180
194
  <tr><td>Assinar a Partir de</td><td>subscribeType</td><td></td><td>Sim</td><td><code>"LATEST"</code></td><td></td></tr>
181
195
  <tr><td>ID de Replay</td><td>replayId</td><td>string</td><td>Não</td><td><code>""</code></td><td></td></tr>
182
196
  <tr><td>Tamanho do Lote</td><td>numRequested</td><td>number [min: 1, max: 100]</td><td>Sim</td><td><code>100</code></td><td></td></tr>
183
- <tr><td></td><td>emitError</td><td>boolean</td><td>Sim</td><td><code>false</code></td><td></td></tr>
184
- <tr><td></td><td>emitStatus</td><td>boolean</td><td>Sim</td><td><code>false</code></td><td></td></tr>
197
+ <tr><td></td><td>errorPort</td><td>boolean</td><td>Sim</td><td><code>false</code></td><td></td></tr>
198
+ <tr><td></td><td>completePort</td><td>boolean</td><td>Sim</td><td><code>false</code></td><td></td></tr>
199
+ <tr><td></td><td>statusPort</td><td>boolean</td><td>Sim</td><td><code>false</code></td><td></td></tr>
185
200
  </tbody>
186
201
  </table>
187
202
  </div>
@@ -199,19 +214,61 @@
199
214
  </table>
200
215
  </div>
201
216
  </script>
202
- <script type="text/html" data-help-name="salesforce-apex">
203
- <p>Invoca um endpoint Apex REST do Salesforce.</p>
217
+ <script type="text/html" data-help-name="salesforce-apex-invocation">
218
+ <p>Chama endpoints REST Apex existentes ou Invocable Actions em uma org Salesforce.</p>
204
219
  <h3>Propriedades</h3>
205
220
  <div style="overflow-x:auto">
206
221
  <table width="100%" style="min-width:500px">
207
222
  <thead><tr><th>Rótulo</th><th>Propriedade</th><th>Tipo</th><th>Obrigatório</th><th>Padrão</th><th style="width:35%">Descrição</th></tr></thead>
208
223
  <tbody>
209
- <tr><td>Conexão</td><td>connection</td><td>NodeRef → salesforce-connection [format: node-id]</td><td>Sim</td><td></td><td>Reference to salesforce-connection</td></tr>
210
- <tr><td>Método</td><td>method</td><td></td><td>Sim</td><td><code>"POST"</code></td><td></td></tr>
211
- <tr><td>Caminho</td><td>path</td><td>TypedInput</td><td>Sim</td><td><code>{"type":"str","value":""}</code></td><td>Represents a Node-RED TypedInput value and its type.</td></tr>
212
- <tr><td></td><td>emitError</td><td>boolean</td><td>Sim</td><td><code>false</code></td><td></td></tr>
213
- <tr><td></td><td>emitComplete</td><td>boolean</td><td>Sim</td><td><code>false</code></td><td></td></tr>
214
- <tr><td></td><td>emitStatus</td><td>boolean</td><td>Sim</td><td><code>false</code></td><td></td></tr>
224
+ <tr><td>Conexao</td><td>connection</td><td>NodeRef → salesforce-connection [format: node-id]</td><td>Sim</td><td></td><td>Reference to salesforce-connection</td></tr>
225
+ <tr><td>Tipo</td><td>apexType</td><td></td><td>Sim</td><td><code>"rest"</code></td><td></td></tr>
226
+ <tr><td>Metodo</td><td>method</td><td></td><td>Sim</td><td><code>"POST"</code></td><td></td></tr>
227
+ <tr><td>Endpoint</td><td>path</td><td>TypedInput</td><td>Sim</td><td><code>{"type":"str","value":""}</code></td><td>Represents a Node-RED TypedInput value and its type.</td></tr>
228
+ <tr><td>Acao</td><td>actionName</td><td>string</td><td>Sim</td><td><code>""</code></td><td></td></tr>
229
+ <tr><td></td><td>errorPort</td><td>boolean</td><td>Sim</td><td><code>false</code></td><td></td></tr>
230
+ <tr><td></td><td>completePort</td><td>boolean</td><td>Sim</td><td><code>false</code></td><td></td></tr>
231
+ <tr><td></td><td>statusPort</td><td>boolean</td><td>Sim</td><td><code>false</code></td><td></td></tr>
232
+ </tbody>
233
+ </table>
234
+ </div>
235
+
236
+ <h3>Entrada</h3>
237
+ <div style="overflow-x:auto">
238
+ <table width="100%" style="min-width:500px">
239
+ <thead><tr><th>Rótulo</th><th>Propriedade</th><th>Tipo</th><th>Obrigatório</th><th style="width:35%">Descrição</th></tr></thead>
240
+ <tbody>
241
+ <tr><td>Corpo da requisicao para POST/PUT/PATCH, ou ignorado para GET/DELETE</td><td>payload</td><td></td><td>Sim</td><td></td></tr>
242
+ </tbody>
243
+ </table>
244
+ </div>
245
+
246
+ <h3>Saída</h3>
247
+ <div style="overflow-x:auto">
248
+ <table width="100%" style="min-width:500px">
249
+ <thead><tr><th>Rótulo</th><th>Propriedade</th><th>Tipo</th><th>Obrigatório</th><th style="width:35%">Descrição</th></tr></thead>
250
+ <tbody>
251
+ <tr><td>Resposta do endpoint Apex</td><td>payload</td><td></td><td>Sim</td><td></td></tr>
252
+ </tbody>
253
+ </table>
254
+ </div>
255
+ </script>
256
+ <script type="text/html" data-help-name="salesforce-apex-code">
257
+ <p>Implanta e executa codigo Apex personalizado em uma org Salesforce. Suporta tipos Invocable e REST.</p>
258
+ <h3>Propriedades</h3>
259
+ <div style="overflow-x:auto">
260
+ <table width="100%" style="min-width:500px">
261
+ <thead><tr><th>Rótulo</th><th>Propriedade</th><th>Tipo</th><th>Obrigatório</th><th>Padrão</th><th style="width:35%">Descrição</th></tr></thead>
262
+ <tbody>
263
+ <tr><td>Conexao</td><td>connection</td><td>NodeRef → salesforce-connection [format: node-id]</td><td>Sim</td><td></td><td>Reference to salesforce-connection</td></tr>
264
+ <tr><td>Tipo</td><td>apexType</td><td></td><td>Sim</td><td><code>"invocable"</code></td><td></td></tr>
265
+ <tr><td>Nome da Classe</td><td>className</td><td>string</td><td>Sim</td><td><code>""</code></td><td></td></tr>
266
+ <tr><td>Mapeamento de URL</td><td>urlMapping</td><td>string</td><td>Sim</td><td><code>""</code></td><td></td></tr>
267
+ <tr><td>Método HTTP</td><td>httpMethod</td><td></td><td>Sim</td><td><code>"HttpPost"</code></td><td></td></tr>
268
+ <tr><td>Codigo Apex</td><td>code</td><td>string</td><td>Sim</td><td><code>""</code></td><td></td></tr>
269
+ <tr><td></td><td>errorPort</td><td>boolean</td><td>Sim</td><td><code>false</code></td><td></td></tr>
270
+ <tr><td></td><td>completePort</td><td>boolean</td><td>Sim</td><td><code>false</code></td><td></td></tr>
271
+ <tr><td></td><td>statusPort</td><td>boolean</td><td>Sim</td><td><code>false</code></td><td></td></tr>
215
272
  </tbody>
216
273
  </table>
217
274
  </div>
@@ -221,7 +278,7 @@
221
278
  <table width="100%" style="min-width:500px">
222
279
  <thead><tr><th>Rótulo</th><th>Propriedade</th><th>Tipo</th><th>Obrigatório</th><th style="width:35%">Descrição</th></tr></thead>
223
280
  <tbody>
224
- <tr><td>Corpo da requisição</td><td>payload</td><td></td><td>Sim</td><td></td></tr>
281
+ <tr><td>Dados de entrada passados ao metodo Apex como string JSON</td><td>payload</td><td></td><td>Sim</td><td></td></tr>
225
282
  </tbody>
226
283
  </table>
227
284
  </div>
@@ -231,7 +288,7 @@
231
288
  <table width="100%" style="min-width:500px">
232
289
  <thead><tr><th>Rótulo</th><th>Propriedade</th><th>Tipo</th><th>Obrigatório</th><th style="width:35%">Descrição</th></tr></thead>
233
290
  <tbody>
234
- <tr><td>Resposta do Apex</td><td>payload</td><td></td><td>Sim</td><td></td></tr>
291
+ <tr><td>Resposta da execucao Apex</td><td>payload</td><td></td><td>Sim</td><td></td></tr>
235
292
  </tbody>
236
293
  </table>
237
294
  </div>
@@ -1,10 +1,13 @@
1
1
  {
2
- "salesforce-apex": {
2
+ "salesforce-apex-code": {
3
3
  "configs": {
4
4
  "name": "Nome",
5
- "connection": "Conexão",
6
- "method": "Método",
7
- "path": "Caminho"
5
+ "connection": "Conexao",
6
+ "apexType": "Tipo",
7
+ "className": "Nome da Classe",
8
+ "urlMapping": "Mapeamento de URL",
9
+ "httpMethod": "Método HTTP",
10
+ "code": "Codigo Apex"
8
11
  },
9
12
  "toggles": {
10
13
  "validateInput": "Validar Entrada",
@@ -14,18 +17,50 @@
14
17
  "statusPort": "Porta de Status"
15
18
  },
16
19
  "$schema": "https://unpkg.com/@bonsae/nrg/schemas/labels.schema.json",
17
- "label": "Apex",
18
- "description": "Invoca um endpoint Apex REST do Salesforce.",
19
- "inputLabels": "Requisição",
20
+ "label": "Apex Code",
21
+ "description": "Implanta e executa codigo Apex personalizado em uma org Salesforce. Suporta tipos Invocable e REST.",
22
+ "inputLabels": "Entrada",
20
23
  "outputLabels": [
21
24
  "Resposta"
22
25
  ],
23
26
  "input": {
24
- "payload": "Corpo da requisição"
27
+ "payload": "Dados de entrada passados ao metodo Apex como string JSON"
25
28
  },
26
29
  "outputs": [
27
30
  {
28
- "payload": "Resposta do Apex"
31
+ "payload": "Resposta da execucao Apex"
32
+ }
33
+ ]
34
+ },
35
+ "salesforce-apex-invocation": {
36
+ "configs": {
37
+ "name": "Nome",
38
+ "connection": "Conexao",
39
+ "apexType": "Tipo",
40
+ "method": "Metodo",
41
+ "path": "Endpoint",
42
+ "actionName": "Acao"
43
+ },
44
+ "toggles": {
45
+ "validateInput": "Validar Entrada",
46
+ "validateOutput": "Validar Saída",
47
+ "errorPort": "Porta de Erro",
48
+ "completePort": "Porta de Conclusão",
49
+ "statusPort": "Porta de Status"
50
+ },
51
+ "$schema": "https://unpkg.com/@bonsae/nrg/schemas/labels.schema.json",
52
+ "label": "Apex Invocation",
53
+ "description": "Chama endpoints REST Apex existentes ou Invocable Actions em uma org Salesforce.",
54
+ "inputLabels": "Requisicao",
55
+ "outputLabels": [
56
+ "Resposta"
57
+ ],
58
+ "input": {
59
+ "payload": "Corpo da requisicao para POST/PUT/PATCH, ou ignorado para GET/DELETE"
60
+ },
61
+ "outputs": [
62
+ {
63
+ "payload": "Resposta do endpoint Apex"
29
64
  }
30
65
  ]
31
66
  },
@@ -35,7 +70,13 @@
35
70
  "connection": "Conexão",
36
71
  "operation": "Operação",
37
72
  "sObjectType": "Tipo de SObject",
38
- "externalIdField": "Campo de ID Externo"
73
+ "query": "Consulta SOQL",
74
+ "externalIdField": "Campo de ID Externo",
75
+ "assignmentRuleId": "ID da Regra de Atribuição",
76
+ "columnDelimiter": "Delimitador de Coluna",
77
+ "lineEnding": "Fim de Linha",
78
+ "pollInterval": "Intervalo de Polling (ms)",
79
+ "pollTimeout": "Timeout de Polling (ms)"
39
80
  },
40
81
  "toggles": {
41
82
  "validateInput": "Validar Entrada",
@@ -53,11 +94,11 @@
53
94
  "Job Concluído"
54
95
  ],
55
96
  "input": {
56
- "payload": "Array de registros ou consulta SOQL"
97
+ "payload": "Array de registros, string CSV, stream legível (ingestão) ou gatilho (consulta)"
57
98
  },
58
99
  "outputs": [
59
100
  {
60
- "payload": "Resultados da operação em massa"
101
+ "payload": "Consulta: registro individual. Ingestão: { successfulResults, failedResults, unprocessedRecords }"
61
102
  }
62
103
  ]
63
104
  },
@@ -106,11 +147,11 @@
106
147
  "Metadados do SObject"
107
148
  ],
108
149
  "input": {
109
- "payload": "Payload de entrada"
150
+ "payload": "Nome da API do SObject (substitui a configuracao se fornecido)"
110
151
  },
111
152
  "outputs": [
112
153
  {
113
- "payload": "Metadados do SObject"
154
+ "payload": "Resultado da descricao do SObject com campos, relacionamentos filhos e informacoes de tipo de registro"
114
155
  }
115
156
  ]
116
157
  },
@@ -120,7 +161,8 @@
120
161
  "connection": "Conexão",
121
162
  "operation": "Operação",
122
163
  "sObjectType": "Tipo de SObject",
123
- "externalIdField": "Campo de ID Externo"
164
+ "externalIdField": "Campo de ID Externo",
165
+ "record": "Registro"
124
166
  },
125
167
  "toggles": {
126
168
  "validateInput": "Validar Entrada",
@@ -32,8 +32,11 @@
32
32
  <table width="100%" style="min-width:500px">
33
33
  <thead><tr><th>Метка</th><th>Свойство</th><th>Тип</th><th>Обязательно</th><th>По умолчанию</th><th style="width:35%">Описание</th></tr></thead>
34
34
  <tbody>
35
- <tr><td>Connection</td><td>connection</td><td>NodeRef → salesforce-connection [format: node-id]</td><td>Да</td><td></td><td>Reference to salesforce-connection</td></tr>
35
+ <tr><td>Подключение</td><td>connection</td><td>NodeRef → salesforce-connection [format: node-id]</td><td>Да</td><td></td><td>Reference to salesforce-connection</td></tr>
36
36
  <tr><td>Запрос</td><td>query</td><td>TypedInput</td><td>Да</td><td><code>{"type":"str","value":""}</code></td><td>Represents a Node-RED TypedInput value and its type.</td></tr>
37
+ <tr><td></td><td>errorPort</td><td>boolean</td><td>Да</td><td><code>false</code></td><td></td></tr>
38
+ <tr><td></td><td>completePort</td><td>boolean</td><td>Да</td><td><code>false</code></td><td></td></tr>
39
+ <tr><td></td><td>statusPort</td><td>boolean</td><td>Да</td><td><code>false</code></td><td></td></tr>
37
40
  </tbody>
38
41
  </table>
39
42
  </div>
@@ -67,14 +70,14 @@
67
70
  <table width="100%" style="min-width:500px">
68
71
  <thead><tr><th>Метка</th><th>Свойство</th><th>Тип</th><th>Обязательно</th><th>По умолчанию</th><th style="width:35%">Описание</th></tr></thead>
69
72
  <tbody>
70
- <tr><td>Connection</td><td>connection</td><td>NodeRef → salesforce-connection [format: node-id]</td><td>Да</td><td></td><td>Reference to salesforce-connection</td></tr>
73
+ <tr><td>Подключение</td><td>connection</td><td>NodeRef → salesforce-connection [format: node-id]</td><td>Да</td><td></td><td>Reference to salesforce-connection</td></tr>
71
74
  <tr><td>Операция</td><td>operation</td><td></td><td>Да</td><td><code>"create"</code></td><td></td></tr>
72
75
  <tr><td>Тип SObject</td><td>sObjectType</td><td>TypedInput</td><td>Да</td><td><code>{"type":"str","value":""}</code></td><td>Represents a Node-RED TypedInput value and its type.</td></tr>
73
- <tr><td></td><td>record</td><td>TypedInput</td><td>Да</td><td><code>{"type":"str","value":""}</code></td><td>Represents a Node-RED TypedInput value and its type.</td></tr>
76
+ <tr><td>Запись</td><td>record</td><td>TypedInput</td><td>Да</td><td><code>{"type":"str","value":""}</code></td><td>Represents a Node-RED TypedInput value and its type.</td></tr>
74
77
  <tr><td>Поле внешнего ID</td><td>externalIdField</td><td>string</td><td>Нет</td><td><code>""</code></td><td></td></tr>
75
- <tr><td></td><td>emitError</td><td>boolean</td><td>Да</td><td><code>false</code></td><td></td></tr>
76
- <tr><td></td><td>emitComplete</td><td>boolean</td><td>Да</td><td><code>false</code></td><td></td></tr>
77
- <tr><td></td><td>emitStatus</td><td>boolean</td><td>Да</td><td><code>false</code></td><td></td></tr>
78
+ <tr><td></td><td>errorPort</td><td>boolean</td><td>Да</td><td><code>false</code></td><td></td></tr>
79
+ <tr><td></td><td>completePort</td><td>boolean</td><td>Да</td><td><code>false</code></td><td></td></tr>
80
+ <tr><td></td><td>statusPort</td><td>boolean</td><td>Да</td><td><code>false</code></td><td></td></tr>
78
81
  </tbody>
79
82
  </table>
80
83
  </div>
@@ -106,18 +109,19 @@
106
109
  <table width="100%" style="min-width:500px">
107
110
  <thead><tr><th>Метка</th><th>Свойство</th><th>Тип</th><th>Обязательно</th><th>По умолчанию</th><th style="width:35%">Описание</th></tr></thead>
108
111
  <tbody>
109
- <tr><td>Connection</td><td>connection</td><td>NodeRef → salesforce-connection [format: node-id]</td><td>Да</td><td></td><td>Reference to salesforce-connection</td></tr>
112
+ <tr><td>Подключение</td><td>connection</td><td>NodeRef → salesforce-connection [format: node-id]</td><td>Да</td><td></td><td>Reference to salesforce-connection</td></tr>
110
113
  <tr><td>Операция</td><td>operation</td><td></td><td>Да</td><td><code>"insert"</code></td><td></td></tr>
111
114
  <tr><td>Тип SObject</td><td>sObjectType</td><td>TypedInput</td><td>Да</td><td><code>{"type":"str","value":""}</code></td><td>Represents a Node-RED TypedInput value and its type.</td></tr>
115
+ <tr><td>SOQL-запрос</td><td>query</td><td>TypedInput</td><td>Да</td><td><code>{"type":"str","value":""}</code></td><td>Represents a Node-RED TypedInput value and its type.</td></tr>
112
116
  <tr><td>Поле внешнего ID</td><td>externalIdField</td><td>string</td><td>Нет</td><td><code>""</code></td><td></td></tr>
113
- <tr><td></td><td>assignmentRuleId</td><td>string</td><td>Нет</td><td><code>""</code></td><td></td></tr>
114
- <tr><td></td><td>columnDelimiter</td><td></td><td>Да</td><td><code>"COMMA"</code></td><td></td></tr>
115
- <tr><td></td><td>lineEnding</td><td></td><td>Да</td><td><code>"LF"</code></td><td></td></tr>
116
- <tr><td></td><td>pollInterval</td><td>number [min: 1000]</td><td>Да</td><td><code>5000</code></td><td></td></tr>
117
- <tr><td></td><td>pollTimeout</td><td>number [min: 5000]</td><td>Да</td><td><code>60000</code></td><td></td></tr>
118
- <tr><td></td><td>emitError</td><td>boolean</td><td>Да</td><td><code>false</code></td><td></td></tr>
119
- <tr><td></td><td>emitComplete</td><td>boolean</td><td>Да</td><td><code>true</code></td><td></td></tr>
120
- <tr><td></td><td>emitStatus</td><td>boolean</td><td>Да</td><td><code>false</code></td><td></td></tr>
117
+ <tr><td>ID правила назначения</td><td>assignmentRuleId</td><td>string</td><td>Нет</td><td><code>""</code></td><td></td></tr>
118
+ <tr><td>Разделитель столбцов</td><td>columnDelimiter</td><td></td><td>Да</td><td><code>"COMMA"</code></td><td></td></tr>
119
+ <tr><td>Конец строки</td><td>lineEnding</td><td></td><td>Да</td><td><code>"LF"</code></td><td></td></tr>
120
+ <tr><td>Интервал опроса (мс)</td><td>pollInterval</td><td>number [min: 1000]</td><td>Да</td><td><code>5000</code></td><td></td></tr>
121
+ <tr><td>Тайм-аут опроса (мс)</td><td>pollTimeout</td><td>number [min: 5000]</td><td>Да</td><td><code>60000</code></td><td></td></tr>
122
+ <tr><td></td><td>errorPort</td><td>boolean</td><td>Да</td><td><code>false</code></td><td></td></tr>
123
+ <tr><td></td><td>completePort</td><td>boolean</td><td>Да</td><td><code>false</code></td><td></td></tr>
124
+ <tr><td></td><td>statusPort</td><td>boolean</td><td>Да</td><td><code>false</code></td><td></td></tr>
121
125
  </tbody>
122
126
  </table>
123
127
  </div>
@@ -127,7 +131,17 @@
127
131
  <table width="100%" style="min-width:500px">
128
132
  <thead><tr><th>Метка</th><th>Свойство</th><th>Тип</th><th>Обязательно</th><th style="width:35%">Описание</th></tr></thead>
129
133
  <tbody>
130
- <tr><td>Массив записей или SOQL-запрос</td><td>payload</td><td></td><td>Да</td><td></td></tr>
134
+ <tr><td>Массив записей, строка CSV, читаемый поток (загрузка) или триггер (запрос)</td><td>payload</td><td></td><td>Да</td><td>Records array, CSV string, readable stream (ingest) or SOQL string (query)</td></tr>
135
+ </tbody>
136
+ </table>
137
+ </div>
138
+
139
+ <h3>Выход</h3>
140
+ <div style="overflow-x:auto">
141
+ <table width="100%" style="min-width:500px">
142
+ <thead><tr><th>Метка</th><th>Свойство</th><th>Тип</th><th>Обязательно</th><th style="width:35%">Описание</th></tr></thead>
143
+ <tbody>
144
+ <tr><td>Запрос: отдельная запись. Загрузка: { successfulResults, failedResults, unprocessedRecords }</td><td>payload</td><td></td><td>Да</td><td>Query: individual record. Ingest: { successfulResults, failedResults, unprocessedRecords }</td></tr>
131
145
  </tbody>
132
146
  </table>
133
147
  </div>
@@ -139,11 +153,11 @@
139
153
  <table width="100%" style="min-width:500px">
140
154
  <thead><tr><th>Метка</th><th>Свойство</th><th>Тип</th><th>Обязательно</th><th>По умолчанию</th><th style="width:35%">Описание</th></tr></thead>
141
155
  <tbody>
142
- <tr><td>Connection</td><td>connection</td><td>NodeRef → salesforce-connection [format: node-id]</td><td>Да</td><td></td><td>Reference to salesforce-connection</td></tr>
156
+ <tr><td>Подключение</td><td>connection</td><td>NodeRef → salesforce-connection [format: node-id]</td><td>Да</td><td></td><td>Reference to salesforce-connection</td></tr>
143
157
  <tr><td>Тип SObject</td><td>sObjectType</td><td>TypedInput</td><td>Да</td><td><code>{"type":"str","value":""}</code></td><td>Represents a Node-RED TypedInput value and its type.</td></tr>
144
- <tr><td></td><td>emitError</td><td>boolean</td><td>Да</td><td><code>false</code></td><td></td></tr>
145
- <tr><td></td><td>emitComplete</td><td>boolean</td><td>Да</td><td><code>false</code></td><td></td></tr>
146
- <tr><td></td><td>emitStatus</td><td>boolean</td><td>Да</td><td><code>false</code></td><td></td></tr>
158
+ <tr><td></td><td>errorPort</td><td>boolean</td><td>Да</td><td><code>false</code></td><td></td></tr>
159
+ <tr><td></td><td>completePort</td><td>boolean</td><td>Да</td><td><code>false</code></td><td></td></tr>
160
+ <tr><td></td><td>statusPort</td><td>boolean</td><td>Да</td><td><code>false</code></td><td></td></tr>
147
161
  </tbody>
148
162
  </table>
149
163
  </div>
@@ -153,7 +167,7 @@
153
167
  <table width="100%" style="min-width:500px">
154
168
  <thead><tr><th>Метка</th><th>Свойство</th><th>Тип</th><th>Обязательно</th><th style="width:35%">Описание</th></tr></thead>
155
169
  <tbody>
156
- <tr><td>Входные данные</td><td>payload</td><td></td><td>Да</td><td></td></tr>
170
+ <tr><td>API-имя SObject (переопределяет конфигурацию, если указано)</td><td>payload</td><td></td><td>Да</td><td></td></tr>
157
171
  </tbody>
158
172
  </table>
159
173
  </div>
@@ -163,7 +177,7 @@
163
177
  <table width="100%" style="min-width:500px">
164
178
  <thead><tr><th>Метка</th><th>Свойство</th><th>Тип</th><th>Обязательно</th><th style="width:35%">Описание</th></tr></thead>
165
179
  <tbody>
166
- <tr><td>Метаданные описания SObject</td><td>payload</td><td>object</td><td>Да</td><td></td></tr>
180
+ <tr><td>Результат описания SObject с полями, дочерними связями и информацией о типах записей</td><td>payload</td><td>object</td><td>Да</td><td></td></tr>
167
181
  </tbody>
168
182
  </table>
169
183
  </div>
@@ -175,13 +189,14 @@
175
189
  <table width="100%" style="min-width:500px">
176
190
  <thead><tr><th>Метка</th><th>Свойство</th><th>Тип</th><th>Обязательно</th><th>По умолчанию</th><th style="width:35%">Описание</th></tr></thead>
177
191
  <tbody>
178
- <tr><td>Connection</td><td>connection</td><td>NodeRef → salesforce-connection [format: node-id]</td><td>Да</td><td></td><td>Reference to salesforce-connection</td></tr>
192
+ <tr><td>Подключение</td><td>connection</td><td>NodeRef → salesforce-connection [format: node-id]</td><td>Да</td><td></td><td>Reference to salesforce-connection</td></tr>
179
193
  <tr><td>Канал</td><td>channelName</td><td>string</td><td>Да</td><td><code>""</code></td><td></td></tr>
180
194
  <tr><td>Подписаться с</td><td>subscribeType</td><td></td><td>Да</td><td><code>"LATEST"</code></td><td></td></tr>
181
195
  <tr><td>ID воспроизведения</td><td>replayId</td><td>string</td><td>Нет</td><td><code>""</code></td><td></td></tr>
182
196
  <tr><td>Размер пакета</td><td>numRequested</td><td>number [min: 1, max: 100]</td><td>Да</td><td><code>100</code></td><td></td></tr>
183
- <tr><td></td><td>emitError</td><td>boolean</td><td>Да</td><td><code>false</code></td><td></td></tr>
184
- <tr><td></td><td>emitStatus</td><td>boolean</td><td>Да</td><td><code>false</code></td><td></td></tr>
197
+ <tr><td></td><td>errorPort</td><td>boolean</td><td>Да</td><td><code>false</code></td><td></td></tr>
198
+ <tr><td></td><td>completePort</td><td>boolean</td><td>Да</td><td><code>false</code></td><td></td></tr>
199
+ <tr><td></td><td>statusPort</td><td>boolean</td><td>Да</td><td><code>false</code></td><td></td></tr>
185
200
  </tbody>
186
201
  </table>
187
202
  </div>
@@ -199,19 +214,61 @@
199
214
  </table>
200
215
  </div>
201
216
  </script>
202
- <script type="text/html" data-help-name="salesforce-apex">
203
- <p>Вызывает конечную точку Salesforce Apex REST.</p>
217
+ <script type="text/html" data-help-name="salesforce-apex-invocation">
218
+ <p>Вызывает существующие конечные точки Apex REST или Invocable Actions в организации Salesforce.</p>
204
219
  <h3>Свойства</h3>
205
220
  <div style="overflow-x:auto">
206
221
  <table width="100%" style="min-width:500px">
207
222
  <thead><tr><th>Метка</th><th>Свойство</th><th>Тип</th><th>Обязательно</th><th>По умолчанию</th><th style="width:35%">Описание</th></tr></thead>
208
223
  <tbody>
209
- <tr><td>Connection</td><td>connection</td><td>NodeRef → salesforce-connection [format: node-id]</td><td>Да</td><td></td><td>Reference to salesforce-connection</td></tr>
224
+ <tr><td>Подключение</td><td>connection</td><td>NodeRef → salesforce-connection [format: node-id]</td><td>Да</td><td></td><td>Reference to salesforce-connection</td></tr>
225
+ <tr><td>Тип</td><td>apexType</td><td></td><td>Да</td><td><code>"rest"</code></td><td></td></tr>
210
226
  <tr><td>Метод</td><td>method</td><td></td><td>Да</td><td><code>"POST"</code></td><td></td></tr>
211
- <tr><td>Путь</td><td>path</td><td>TypedInput</td><td>Да</td><td><code>{"type":"str","value":""}</code></td><td>Represents a Node-RED TypedInput value and its type.</td></tr>
212
- <tr><td></td><td>emitError</td><td>boolean</td><td>Да</td><td><code>false</code></td><td></td></tr>
213
- <tr><td></td><td>emitComplete</td><td>boolean</td><td>Да</td><td><code>false</code></td><td></td></tr>
214
- <tr><td></td><td>emitStatus</td><td>boolean</td><td>Да</td><td><code>false</code></td><td></td></tr>
227
+ <tr><td>Конечная точка</td><td>path</td><td>TypedInput</td><td>Да</td><td><code>{"type":"str","value":""}</code></td><td>Represents a Node-RED TypedInput value and its type.</td></tr>
228
+ <tr><td>Действие</td><td>actionName</td><td>string</td><td>Да</td><td><code>""</code></td><td></td></tr>
229
+ <tr><td></td><td>errorPort</td><td>boolean</td><td>Да</td><td><code>false</code></td><td></td></tr>
230
+ <tr><td></td><td>completePort</td><td>boolean</td><td>Да</td><td><code>false</code></td><td></td></tr>
231
+ <tr><td></td><td>statusPort</td><td>boolean</td><td>Да</td><td><code>false</code></td><td></td></tr>
232
+ </tbody>
233
+ </table>
234
+ </div>
235
+
236
+ <h3>Вход</h3>
237
+ <div style="overflow-x:auto">
238
+ <table width="100%" style="min-width:500px">
239
+ <thead><tr><th>Метка</th><th>Свойство</th><th>Тип</th><th>Обязательно</th><th style="width:35%">Описание</th></tr></thead>
240
+ <tbody>
241
+ <tr><td>Тело запроса для POST/PUT/PATCH, или игнорируется для GET/DELETE</td><td>payload</td><td></td><td>Да</td><td></td></tr>
242
+ </tbody>
243
+ </table>
244
+ </div>
245
+
246
+ <h3>Выход</h3>
247
+ <div style="overflow-x:auto">
248
+ <table width="100%" style="min-width:500px">
249
+ <thead><tr><th>Метка</th><th>Свойство</th><th>Тип</th><th>Обязательно</th><th style="width:35%">Описание</th></tr></thead>
250
+ <tbody>
251
+ <tr><td>Ответ конечной точки Apex</td><td>payload</td><td></td><td>Да</td><td></td></tr>
252
+ </tbody>
253
+ </table>
254
+ </div>
255
+ </script>
256
+ <script type="text/html" data-help-name="salesforce-apex-code">
257
+ <p>Развертывает и выполняет пользовательский код Apex в организации Salesforce. Поддерживает типы Invocable и REST.</p>
258
+ <h3>Свойства</h3>
259
+ <div style="overflow-x:auto">
260
+ <table width="100%" style="min-width:500px">
261
+ <thead><tr><th>Метка</th><th>Свойство</th><th>Тип</th><th>Обязательно</th><th>По умолчанию</th><th style="width:35%">Описание</th></tr></thead>
262
+ <tbody>
263
+ <tr><td>Подключение</td><td>connection</td><td>NodeRef → salesforce-connection [format: node-id]</td><td>Да</td><td></td><td>Reference to salesforce-connection</td></tr>
264
+ <tr><td>Тип</td><td>apexType</td><td></td><td>Да</td><td><code>"invocable"</code></td><td></td></tr>
265
+ <tr><td>Имя класса</td><td>className</td><td>string</td><td>Да</td><td><code>""</code></td><td></td></tr>
266
+ <tr><td>Сопоставление URL</td><td>urlMapping</td><td>string</td><td>Да</td><td><code>""</code></td><td></td></tr>
267
+ <tr><td>HTTP-метод</td><td>httpMethod</td><td></td><td>Да</td><td><code>"HttpPost"</code></td><td></td></tr>
268
+ <tr><td>Код Apex</td><td>code</td><td>string</td><td>Да</td><td><code>""</code></td><td></td></tr>
269
+ <tr><td></td><td>errorPort</td><td>boolean</td><td>Да</td><td><code>false</code></td><td></td></tr>
270
+ <tr><td></td><td>completePort</td><td>boolean</td><td>Да</td><td><code>false</code></td><td></td></tr>
271
+ <tr><td></td><td>statusPort</td><td>boolean</td><td>Да</td><td><code>false</code></td><td></td></tr>
215
272
  </tbody>
216
273
  </table>
217
274
  </div>
@@ -221,7 +278,7 @@
221
278
  <table width="100%" style="min-width:500px">
222
279
  <thead><tr><th>Метка</th><th>Свойство</th><th>Тип</th><th>Обязательно</th><th style="width:35%">Описание</th></tr></thead>
223
280
  <tbody>
224
- <tr><td>Тело запроса</td><td>payload</td><td></td><td>Да</td><td></td></tr>
281
+ <tr><td>Входные данные, передаваемые методу Apex в виде строки JSON</td><td>payload</td><td></td><td>Да</td><td></td></tr>
225
282
  </tbody>
226
283
  </table>
227
284
  </div>
@@ -231,7 +288,7 @@
231
288
  <table width="100%" style="min-width:500px">
232
289
  <thead><tr><th>Метка</th><th>Свойство</th><th>Тип</th><th>Обязательно</th><th style="width:35%">Описание</th></tr></thead>
233
290
  <tbody>
234
- <tr><td>Ответ Apex</td><td>payload</td><td></td><td>Да</td><td></td></tr>
291
+ <tr><td>Ответ выполнения Apex</td><td>payload</td><td></td><td>Да</td><td></td></tr>
235
292
  </tbody>
236
293
  </table>
237
294
  </div>