@pipefy/pipefy-process-coder 0.1.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.
- package/.agents/skills/ppc-pipefy-flow-authoring/SKILL.md +262 -0
- package/.agents/skills/ppc-pipefy-flow-authoring/examples/01-main-2-danfe-consulta.json +247 -0
- package/.agents/skills/ppc-pipefy-flow-authoring/examples/01-main-2-webhook-retorno-consulta.json +589 -0
- package/.agents/skills/ppc-pipefy-flow-authoring/examples/01-main-4-recebimento-barramento.json +1391 -0
- package/.agents/skills/ppc-pipefy-flow-authoring/examples/02-subflow-2-danfe-retorno.json +623 -0
- package/.agents/skills/ppc-pipefy-flow-authoring/examples/02-subflow-4-criacao-operacao.json +636 -0
- package/.agents/skills/ppc-pipefy-flow-authoring/examples/03-subflow-4-criacao-titulo.json +3642 -0
- package/.agents/skills/ppc-pipefy-flow-authoring/examples/04-subflow-4-criacao-cedente.json +863 -0
- package/.agents/skills/ppc-pipefy-flow-authoring/examples/04-subflow-4-criacao-sacado.json +799 -0
- package/.agents/skills/ppc-pipefy-flow-authoring/examples/README.md +42 -0
- package/.agents/skills/ppc-pipefy-flow-authoring/examples/hml-01-subflow-1-titulo-acompanhamento-cobranca.json +581 -0
- package/.agents/skills/ppc-pipefy-flow-authoring/examples/hml-01-subflow-1-titulo-nfe-monitoramento.json +503 -0
- package/.agents/skills/ppc-pipefy-flow-authoring/examples/hml-01-subflow-1-titulo-retorno-bancario.json +562 -0
- package/.agents/skills/ppc-pipefy-flow-authoring/examples/hml-02-subflow-2-retorno-consulta-cedente.json +557 -0
- package/.agents/skills/ppc-pipefy-flow-authoring/examples/hml-02-subflow-2-retorno-consulta-sacado.json +609 -0
- package/.agents/skills/ppc-pipefy-pipe-authoring/SKILL.md +146 -0
- package/.agents/skills/ppc-pipefy-process-design/SKILL.md +127 -0
- package/.agents/skills/ppc-pipefy-workspace/SKILL.md +91 -0
- package/AGENTS.md +456 -0
- package/README.md +808 -0
- package/bin/pipe.js +13 -0
- package/package.json +35 -0
- package/src/apply/adopt.ts +150 -0
- package/src/apply/agentops.ts +71 -0
- package/src/apply/compile.ts +875 -0
- package/src/apply/execute.ts +336 -0
- package/src/apply/flowops.ts +399 -0
- package/src/apply/idmap.ts +241 -0
- package/src/apply/mutations.ts +955 -0
- package/src/apply/registry.ts +430 -0
- package/src/apply/types.ts +134 -0
- package/src/cli/args.ts +88 -0
- package/src/cli.ts +211 -0
- package/src/codec/flow.ts +199 -0
- package/src/codec/pack.ts +103 -0
- package/src/codec/roundtrip.ts +94 -0
- package/src/codec/unpack.ts +198 -0
- package/src/commands/agents.ts +184 -0
- package/src/commands/apply.ts +1144 -0
- package/src/commands/context.ts +119 -0
- package/src/commands/create.ts +79 -0
- package/src/commands/diff.ts +314 -0
- package/src/commands/flows.ts +414 -0
- package/src/commands/misc.ts +644 -0
- package/src/commands/plan.ts +331 -0
- package/src/commands/pull.ts +567 -0
- package/src/commands/runs.ts +83 -0
- package/src/commands/skills.ts +137 -0
- package/src/commands/verify.ts +253 -0
- package/src/config.ts +168 -0
- package/src/diff/agents.ts +122 -0
- package/src/diff/diff.ts +1130 -0
- package/src/diff/flow.ts +318 -0
- package/src/diff/html.ts +322 -0
- package/src/diff/render.ts +101 -0
- package/src/model/payload.ts +154 -0
- package/src/model/tree.ts +99 -0
- package/src/model/volatile.ts +55 -0
- package/src/pipefy/agents.ts +165 -0
- package/src/pipefy/automations.ts +219 -0
- package/src/pipefy/capability.ts +119 -0
- package/src/pipefy/client.ts +267 -0
- package/src/pipefy/discovery.ts +209 -0
- package/src/pipefy/internal.ts +380 -0
- package/src/pipefy/ipaas.ts +365 -0
- package/src/pipefy/reconstruct.ts +775 -0
- package/src/pipefy/reference.ts +251 -0
- package/src/pipefy/snapshot.ts +245 -0
- package/src/pipefy/toolkit.ts +200 -0
- package/src/pipefy/toolkit_bearer.py +137 -0
- package/src/report/integrations.ts +231 -0
- package/src/report/run.ts +475 -0
- package/src/util/fsx.ts +45 -0
- package/src/util/git.ts +32 -0
- package/src/util/json.ts +55 -0
- package/src/util/log.ts +76 -0
- package/src/util/pool.ts +48 -0
- package/src/util/slug.ts +26 -0
- package/src/util/tui.ts +335 -0
- package/src/validate/index.ts +123 -0
- package/src/validate/integrity.ts +387 -0
- package/src/validate/reference.ts +136 -0
- package/src/validate/schema.ts +328 -0
- package/src/workspace/agents.ts +290 -0
- package/src/workspace/docs.ts +407 -0
- package/src/workspace/flows.ts +191 -0
- package/src/workspace/layout.ts +165 -0
- package/src/workspace/lock.ts +148 -0
- package/src/workspace/read.ts +165 -0
- package/src/workspace/reference.ts +24 -0
- package/src/workspace/stamp.ts +301 -0
- package/src/workspace/write.ts +225 -0
|
@@ -0,0 +1,262 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ppc-pipefy-flow-authoring
|
|
3
|
+
description: Use when reading, authoring or debugging a Pipefy iPaaS flow (Advanced Automations, Activepieces underneath) in a pipefy-process-coder workspace — the flow JSON, node types, linked-list chaining, datapill syntax, connections, the operation set pipe compiles to, and the traps that make a flow validate clean and resolve nothing at runtime.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Authoring iPaaS flows
|
|
7
|
+
|
|
8
|
+
Pipefy's iPaaS — "Advanced Automations", "PIP" — is **Activepieces** underneath. A
|
|
9
|
+
flow is where a process does what the automation engine cannot: call external
|
|
10
|
+
systems, and read pipes other than the one that triggered.
|
|
11
|
+
|
|
12
|
+
## Flows are in the loop
|
|
13
|
+
|
|
14
|
+
The same five commands cover flows and pipe structure together:
|
|
15
|
+
|
|
16
|
+
```bash
|
|
17
|
+
pipe pull <pipeId> --out ./my-pipe # reads the pipe AND its iPaaS flows
|
|
18
|
+
# edit pipes/<id>--<name>/flows/<flowId>--<slug>/nodes/NN--step_N.json
|
|
19
|
+
pipe diff # reports flow changes beside pipe changes
|
|
20
|
+
pipe plan --dry-run # compiles them to iPaaS operations
|
|
21
|
+
pipe apply # sends them, then verifies every datapill
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
No flag is needed — `pipe pull` reads flows because a flow is an entity of the
|
|
25
|
+
pipe. `--no-flows` opts out of the flow half on any of those commands.
|
|
26
|
+
|
|
27
|
+
```
|
|
28
|
+
pipes/<pipeId>--<slug>/
|
|
29
|
+
flows/
|
|
30
|
+
_meta.json coverage, projectId, counts, read time
|
|
31
|
+
connections.json externalId, pieceName, displayName, status
|
|
32
|
+
pieces.json pieceName -> version the instance offers
|
|
33
|
+
_readonly/flow-runs.json recent outcomes; never written back
|
|
34
|
+
<flowId>--<slug>/
|
|
35
|
+
flow.json the flow row
|
|
36
|
+
version.json the version row, without the trigger
|
|
37
|
+
nodes/NN--<name>.json one node per file, in execution order
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
Flows live **under the pipe**, not at the workspace root: a workspace can hold
|
|
41
|
+
several pipes and each has its own iPaaS workspace.
|
|
42
|
+
|
|
43
|
+
Two safety rules the compiler enforces:
|
|
44
|
+
|
|
45
|
+
- **Enabling a flow is refused** unless `--allow-flow-enable` is passed. It arms
|
|
46
|
+
the flow against live traffic, which is never incidental.
|
|
47
|
+
- **After a flow write, every datapill is compared against what was sent.** A
|
|
48
|
+
mismatch is reported and the apply says not to enable the flow.
|
|
49
|
+
|
|
50
|
+
Still under `research/ipaas/` and useful for inspection:
|
|
51
|
+
`ipaas-piece.ts` (one piece's metadata from the live catalogue),
|
|
52
|
+
`validate-flow.ts` + `check.ts` (the offline validator, ahead of `pipe validate`),
|
|
53
|
+
`check-negative.ts` (17 cases proving it catches things),
|
|
54
|
+
`probe-operations.ts` and `probe-op-shapes.ts` (how the operation model was learned).
|
|
55
|
+
|
|
56
|
+
`PLAN-IPAAS.md` is the plan; `workspaces/fde-request/flows/BUILD-LOG.md` is a
|
|
57
|
+
worked run with the findings.
|
|
58
|
+
|
|
59
|
+
## Reaching a pipe's iPaaS workspace
|
|
60
|
+
|
|
61
|
+
Two calls from the credential `pipe` already has — no separate token:
|
|
62
|
+
|
|
63
|
+
```
|
|
64
|
+
1. Pipefy INTERNAL API: query { advancedAutomationsToken(repoId: "<pipeId>") { token } }
|
|
65
|
+
2. POST https://ipaas.pipefy.com/api/v1/managed-authn/external-token
|
|
66
|
+
{ "externalAccessToken": <that token> }
|
|
67
|
+
→ a session token AND the projectId
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
The session token alone reads `pieces`, `flows`, `app-connections` and
|
|
71
|
+
`flow-runs`. The OAuth+PKCE steps in the toolkit's gateway are only for the iPaaS
|
|
72
|
+
MCP tool surface.
|
|
73
|
+
|
|
74
|
+
**Every pipe has its own iPaaS workspace.** The session's identity *is* the pipe —
|
|
75
|
+
`firstName` is the pipe's name, `lastName` its id. Flows and connections are scoped
|
|
76
|
+
to it. A flow may orchestrate across many pipes but lives in exactly one.
|
|
77
|
+
|
|
78
|
+
**Connections are workspace-scoped too**, and this decides where a flow can live:
|
|
79
|
+
a pipe with 0 connections cannot host a flow that needs auth. Check
|
|
80
|
+
`GET /app-connections?projectId=` before authoring.
|
|
81
|
+
|
|
82
|
+
**The webhook URL suffix on a pipe is the flow id.** A pipe webhook pointing at
|
|
83
|
+
`https://ipaas.pipefy.com/api/v1/webhooks/<id>` is pointing at the flow whose id
|
|
84
|
+
is `<id>`. That is how a pipe's webhooks and its flows correlate — and it means a
|
|
85
|
+
workspace has held a pointer to every flow since its first pull.
|
|
86
|
+
|
|
87
|
+
## The flow shape
|
|
88
|
+
|
|
89
|
+
```
|
|
90
|
+
flow row : id, projectId, externalId, status, publishedVersionId, triggerSource
|
|
91
|
+
version : id, displayName, valid, schemaVersion, state, connectionIds, trigger
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
`state: "LOCKED"` means published and immutable; editing produces a new version.
|
|
95
|
+
`status` is `ENABLED`/`DISABLED`. A newly created flow lands **DISABLED / DRAFT**
|
|
96
|
+
with `publishedVersionId: null` — creating one does not arm it.
|
|
97
|
+
|
|
98
|
+
`connectionIds` is **derived by the API** from the inline `{{connections[…]}}`
|
|
99
|
+
references. Do not send it.
|
|
100
|
+
|
|
101
|
+
### Nodes are a linked list, not an array
|
|
102
|
+
|
|
103
|
+
```
|
|
104
|
+
trigger ─nextAction→ step_1 ─nextAction→ step_5 (ROUTER)
|
|
105
|
+
├─ children[0] → step_6
|
|
106
|
+
├─ children[1] → step_7
|
|
107
|
+
└─ nextAction → step_8 ← reconverges
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
| field | meaning |
|
|
111
|
+
| --- | --- |
|
|
112
|
+
| `nextAction` | the next step in sequence. Absent = end of chain. |
|
|
113
|
+
| `firstLoopAction` | the first step *inside* a `LOOP_ON_ITEMS` |
|
|
114
|
+
| `children[]` | first step of each router branch, **index-aligned with `settings.branches[]`**; `null` for an empty branch |
|
|
115
|
+
|
|
116
|
+
Node types: `PIECE_TRIGGER` or `EMPTY` for the trigger; `PIECE`, `CODE`,
|
|
117
|
+
`LOOP_ON_ITEMS`, `ROUTER` for actions. The trigger is always named `trigger`;
|
|
118
|
+
steps are `step_N` and each name must be unique. Execution order comes only from
|
|
119
|
+
the chaining, never from the number.
|
|
120
|
+
|
|
121
|
+
### Datapills
|
|
122
|
+
|
|
123
|
+
```
|
|
124
|
+
{{trigger['output'].data.card.id}}
|
|
125
|
+
{{step_1['output'].data.card.fields.<slug>.value}}
|
|
126
|
+
{{step_4['output'].user.id}}
|
|
127
|
+
{{connections['<connectionId>']}}
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
**Single `['output']`.** Card fields by **slug**. Only reference steps that run
|
|
131
|
+
*earlier* — referencing a later step, or a sibling router branch, fails at runtime.
|
|
132
|
+
|
|
133
|
+
Older exports use `{{step_1['data']['card']['fields']['<Phase>']['<Label>']['report_value']}}`.
|
|
134
|
+
The engine migrates that on import, so both exist in the wild. **Author the live
|
|
135
|
+
form.** Which brings us to:
|
|
136
|
+
|
|
137
|
+
### A connector field's value is the connected cards' ids — nothing else
|
|
138
|
+
|
|
139
|
+
`fields.<slug>.value` for a **`connector`** field (a card-relationship field — "this
|
|
140
|
+
card's Pareceres", a pipe relation's connected items) is the connected records'
|
|
141
|
+
**id(s) only**. It does not carry those cards' own field values, however the
|
|
142
|
+
payload is shaped or how deep you index into it. Assuming otherwise is the trap
|
|
143
|
+
this skill exists to name: it does not error, it just produces empty or
|
|
144
|
+
`undefined` output for every field you tried to read off the connected card.
|
|
145
|
+
|
|
146
|
+
To use a connected card's *own* fields — e.g. reading a child card's Área,
|
|
147
|
+
Avaliador, Nível de Impacto and Justificativa through a parent's connector field
|
|
148
|
+
— add an explicit step per id that fetches that card, and reference **that
|
|
149
|
+
step's** output, never the parent's connector-field datapill:
|
|
150
|
+
|
|
151
|
+
```
|
|
152
|
+
{{trigger['output'].data.card.fields.pareceres.value}} -> ["1234", "5678"] ids only
|
|
153
|
+
|
|
154
|
+
step_2 getCardById(id: {{trigger['output'].data.card.fields.pareceres.value[0]}})
|
|
155
|
+
{{step_2['output'].fields.area.value}} the child's own field
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
`getCardById` (piece-pipefy) is the tool for this. A parent card with N connected
|
|
159
|
+
children needs N such calls — typically inside a `LOOP_ON_ITEMS` over the id
|
|
160
|
+
array — before anything about the children's own fields can be formatted.
|
|
161
|
+
|
|
162
|
+
## The trap: IMPORT_FLOW rewrites your datapills
|
|
163
|
+
|
|
164
|
+
`POST /flows/{id}` with `{type: "IMPORT_FLOW", request: {displayName, trigger}}`
|
|
165
|
+
replaces the whole tree **and runs the schema migration an old export needs**. Give
|
|
166
|
+
it a flow already in live form and it migrates twice:
|
|
167
|
+
|
|
168
|
+
```
|
|
169
|
+
sent {{trigger['output'].data.card.id}}
|
|
170
|
+
stored {{trigger['output']['output'].data.card.id}}
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
The flow then resolves nothing at runtime. Both the offline validator and Pipefy's
|
|
174
|
+
own `ap_validate_flow` call it valid — both forms are structurally fine — and
|
|
175
|
+
`ap_flow_structure` shows every step `configured`. Only comparing stored bytes
|
|
176
|
+
against sent bytes finds it.
|
|
177
|
+
|
|
178
|
+
**So `pipe` never sends IMPORT_FLOW** — `IpaasClient.operate` refuses it — and
|
|
179
|
+
compiles to the granular operations instead. The operation set, probed against
|
|
180
|
+
the endpoint:
|
|
181
|
+
|
|
182
|
+
| operation | request |
|
|
183
|
+
| --- | --- |
|
|
184
|
+
| `UPDATE_TRIGGER` | the whole trigger node: `{ name, type, displayName, valid, settings }` |
|
|
185
|
+
| `UPDATE_ACTION` | the whole node, same shape. **A router's branches are edited this way** — they live in `settings.branches`, and there is no `UPDATE_BRANCH` in the enum |
|
|
186
|
+
| `ADD_ACTION` | `{ parentStep, action: {...whole node...}, stepLocationRelativeToParent?, branchIndex? }` |
|
|
187
|
+
| `DELETE_ACTION` | `{ names: [ ... ] }` — an **array**; a single `name` is rejected |
|
|
188
|
+
| `CHANGE_NAME` | `{ displayName }` |
|
|
189
|
+
| `CHANGE_STATUS` | `{ status: "ENABLED" or "DISABLED" }` |
|
|
190
|
+
|
|
191
|
+
Also in the enum: `MOVE_ACTION`, `DUPLICATE_ACTION`, `LOCK_AND_PUBLISH`,
|
|
192
|
+
`LOCK_FLOW`, `USE_AS_DRAFT`, `CHANGE_FOLDER`, `UPDATE_METADATA`,
|
|
193
|
+
`SAVE_SAMPLE_DATA`, `SET_SKIP_ACTION`, `ADD_BRANCH`, `DELETE_BRANCH`,
|
|
194
|
+
`DUPLICATE_BRANCH`.
|
|
195
|
+
|
|
196
|
+
**Five operations act on an empty request instead of rejecting it:**
|
|
197
|
+
`CHANGE_STATUS`, `LOCK_AND_PUBLISH`, `LOCK_FLOW`, `CHANGE_FOLDER`,
|
|
198
|
+
`UPDATE_METADATA`. Enumerating the enum by sending each with `request: {}`
|
|
199
|
+
published and enabled a draft flow. `IpaasClient` refuses an empty request for
|
|
200
|
+
those types; never work around it.
|
|
201
|
+
|
|
202
|
+
`['output']['output']` in a stored pill is a known signature: a double migration.
|
|
203
|
+
|
|
204
|
+
Reserve `IMPORT_FLOW` for importing an actual export, in the file form.
|
|
205
|
+
|
|
206
|
+
## Real examples
|
|
207
|
+
|
|
208
|
+
`examples/` holds 13 sanitized flows from a real production trade-finance
|
|
209
|
+
integration — `examples/README.md` catalogues what each one demonstrates and
|
|
210
|
+
which node types/pieces it uses. Reach for one when you need to see a shape
|
|
211
|
+
rather than infer it: a `LOOP_ON_ITEMS` with a `ROUTER` in its body,
|
|
212
|
+
`piece-store` used as cross-step state, a `WEBHOOK` trigger paired with a
|
|
213
|
+
`CALLABLE_FLOW` chain, `piece-http-oauth2` for an authenticated external
|
|
214
|
+
call. Field names inside the (blanked) sample data are real; only the values
|
|
215
|
+
are placeholders.
|
|
216
|
+
|
|
217
|
+
## Check the catalogue, never guess
|
|
218
|
+
|
|
219
|
+
```bash
|
|
220
|
+
node research/ipaas-piece.ts '@activepieces/piece-pipefy' getCardsByFieldValue
|
|
221
|
+
```
|
|
222
|
+
|
|
223
|
+
Piece versions, action names and required props all move between versions. The
|
|
224
|
+
instance offers 765 pieces; read what it has. This caught a real error once: a
|
|
225
|
+
hand-typed fixture listed `slack-find-user-by-email` as a trigger when it is an
|
|
226
|
+
action.
|
|
227
|
+
|
|
228
|
+
Useful `piece-pipefy@0.2.1` actions: `getCardById`, `getCardsByFieldValue`,
|
|
229
|
+
`getCardsByPhase`, `createCard`, `updateCard`, `moveCard`, `updateListField`,
|
|
230
|
+
`uploadAttachment`, `custom_api_call`. Triggers: `cardCreated`, `cardDone`,
|
|
231
|
+
`cardMoved`, `cardFieldUpdated`, and the record equivalents.
|
|
232
|
+
|
|
233
|
+
## Before you write anything
|
|
234
|
+
|
|
235
|
+
Run the offline validator. It checks node types, unique names, backward-only
|
|
236
|
+
references, router `children.length == branches.length`, one trailing `FALLBACK`,
|
|
237
|
+
condition operators, `CODE` shape, semver, action names against the catalogue,
|
|
238
|
+
connections resolving and being `ACTIVE`, clear-text credentials, and the
|
|
239
|
+
cross-surface group — phases and field slugs against the pipe schemas on disk.
|
|
240
|
+
|
|
241
|
+
```bash
|
|
242
|
+
node research/ipaas/check.ts <path to flow json>
|
|
243
|
+
```
|
|
244
|
+
|
|
245
|
+
The condition-operator trap: it is **`TEXT_START_WITH`**, singular, not
|
|
246
|
+
`TEXT_STARTS_WITH`.
|
|
247
|
+
|
|
248
|
+
## After you write, always
|
|
249
|
+
|
|
250
|
+
Read the flow back and diff the datapills against what you sent. That is the only
|
|
251
|
+
check that catches the migration bug, and no structural rule ever will.
|
|
252
|
+
|
|
253
|
+
```bash
|
|
254
|
+
node research/ipaas/diff-readback.ts <flowId>
|
|
255
|
+
```
|
|
256
|
+
|
|
257
|
+
## Never
|
|
258
|
+
|
|
259
|
+
- Put a credential in `settings.input`. Reference a connection.
|
|
260
|
+
- Write a connection. They hold secrets; read them, reference them, refuse.
|
|
261
|
+
- Publish a flow as a side effect. `ap_lock_and_publish` arms it against live
|
|
262
|
+
traffic — that is the user's decision, made explicitly.
|
|
@@ -0,0 +1,247 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "✅[PRD][1/2 MAIN][DANFE] Consulta",
|
|
3
|
+
"type": "SHARED",
|
|
4
|
+
"summary": "",
|
|
5
|
+
"description": "",
|
|
6
|
+
"tags": [],
|
|
7
|
+
"blogUrl": "",
|
|
8
|
+
"metadata": {
|
|
9
|
+
"externalId": "exampleFlowId01aaaaaa"
|
|
10
|
+
},
|
|
11
|
+
"author": "Integrações Ipaas 000000000",
|
|
12
|
+
"categories": [],
|
|
13
|
+
"pieces": [
|
|
14
|
+
"@activepieces/piece-subflows",
|
|
15
|
+
"@activepieces/piece-date-helper",
|
|
16
|
+
"@activepieces/piece-http-oauth2",
|
|
17
|
+
"@activepieces/piece-tables"
|
|
18
|
+
],
|
|
19
|
+
"flows": [
|
|
20
|
+
{
|
|
21
|
+
"displayName": "✅[PRD][1/2 MAIN][DANFE] Consulta",
|
|
22
|
+
"trigger": {
|
|
23
|
+
"name": "trigger",
|
|
24
|
+
"valid": true,
|
|
25
|
+
"displayName": "Callable Flow",
|
|
26
|
+
"nextAction": {
|
|
27
|
+
"name": "step_3",
|
|
28
|
+
"skip": false,
|
|
29
|
+
"type": "PIECE",
|
|
30
|
+
"valid": true,
|
|
31
|
+
"settings": {
|
|
32
|
+
"input": {
|
|
33
|
+
"timeZone": "America/Sao_Paulo",
|
|
34
|
+
"timeFormat": "YYYY-MM-DDTHH:mm:ss"
|
|
35
|
+
},
|
|
36
|
+
"pieceName": "@activepieces/piece-date-helper",
|
|
37
|
+
"actionName": "get_current_date",
|
|
38
|
+
"sampleData": {},
|
|
39
|
+
"pieceVersion": "0.1.28",
|
|
40
|
+
"propertySettings": {
|
|
41
|
+
"timeZone": {
|
|
42
|
+
"type": "MANUAL"
|
|
43
|
+
},
|
|
44
|
+
"timeFormat": {
|
|
45
|
+
"type": "MANUAL"
|
|
46
|
+
}
|
|
47
|
+
},
|
|
48
|
+
"errorHandlingOptions": {
|
|
49
|
+
"retryOnFailure": {
|
|
50
|
+
"value": false
|
|
51
|
+
},
|
|
52
|
+
"continueOnFailure": {
|
|
53
|
+
"value": false
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
},
|
|
57
|
+
"nextAction": {
|
|
58
|
+
"name": "step_2",
|
|
59
|
+
"skip": false,
|
|
60
|
+
"type": "PIECE",
|
|
61
|
+
"valid": true,
|
|
62
|
+
"settings": {
|
|
63
|
+
"input": {
|
|
64
|
+
"url": "{{variables['PRD_BASE_URL']}}/v1/danfe/processar-nfe",
|
|
65
|
+
"auth": "{{connections['exampleConnectionId1']}}",
|
|
66
|
+
"body": {
|
|
67
|
+
"data": {
|
|
68
|
+
"xml_base64": "{{trigger['output']['data']['nfXmlBase64']}}",
|
|
69
|
+
"webhook_url": "https://ipaas.pipefy.com/api/v1/webhooks/EXAMPLE0WEBHOOK0ID0000"
|
|
70
|
+
}
|
|
71
|
+
},
|
|
72
|
+
"method": "POST",
|
|
73
|
+
"headers": {
|
|
74
|
+
"timestamp": "{{step_3['output']['result']}}",
|
|
75
|
+
"Content-Type": "application/json",
|
|
76
|
+
"correlation-id": "123e4567-e89b-12d3-a456-426614174000"
|
|
77
|
+
},
|
|
78
|
+
"failsafe": false,
|
|
79
|
+
"body_type": "json",
|
|
80
|
+
"use_proxy": false,
|
|
81
|
+
"queryParams": {},
|
|
82
|
+
"proxy_settings": {}
|
|
83
|
+
},
|
|
84
|
+
"pieceName": "@activepieces/piece-http-oauth2",
|
|
85
|
+
"actionName": "send-oauth2-request",
|
|
86
|
+
"sampleData": {},
|
|
87
|
+
"pieceVersion": "0.2.5",
|
|
88
|
+
"propertySettings": {
|
|
89
|
+
"url": {
|
|
90
|
+
"type": "MANUAL"
|
|
91
|
+
},
|
|
92
|
+
"body": {
|
|
93
|
+
"type": "MANUAL",
|
|
94
|
+
"schema": {
|
|
95
|
+
"data": {
|
|
96
|
+
"type": "JSON",
|
|
97
|
+
"required": true,
|
|
98
|
+
"displayName": "JSON Body"
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
},
|
|
102
|
+
"method": {
|
|
103
|
+
"type": "MANUAL"
|
|
104
|
+
},
|
|
105
|
+
"headers": {
|
|
106
|
+
"type": "MANUAL"
|
|
107
|
+
},
|
|
108
|
+
"timeout": {
|
|
109
|
+
"type": "MANUAL"
|
|
110
|
+
},
|
|
111
|
+
"failsafe": {
|
|
112
|
+
"type": "MANUAL"
|
|
113
|
+
},
|
|
114
|
+
"body_type": {
|
|
115
|
+
"type": "MANUAL"
|
|
116
|
+
},
|
|
117
|
+
"use_proxy": {
|
|
118
|
+
"type": "MANUAL"
|
|
119
|
+
},
|
|
120
|
+
"queryParams": {
|
|
121
|
+
"type": "MANUAL"
|
|
122
|
+
},
|
|
123
|
+
"proxy_settings": {
|
|
124
|
+
"type": "MANUAL",
|
|
125
|
+
"schema": {}
|
|
126
|
+
}
|
|
127
|
+
},
|
|
128
|
+
"errorHandlingOptions": {
|
|
129
|
+
"retryOnFailure": {
|
|
130
|
+
"value": false
|
|
131
|
+
},
|
|
132
|
+
"continueOnFailure": {
|
|
133
|
+
"value": false
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
},
|
|
137
|
+
"nextAction": {
|
|
138
|
+
"name": "step_1",
|
|
139
|
+
"skip": false,
|
|
140
|
+
"type": "PIECE",
|
|
141
|
+
"valid": true,
|
|
142
|
+
"settings": {
|
|
143
|
+
"input": {
|
|
144
|
+
"values": {
|
|
145
|
+
"values": [
|
|
146
|
+
{
|
|
147
|
+
"7bH9z7hla9ZpsWc2uKpvI": "{{trigger['output']['data']['cardId']}}",
|
|
148
|
+
"fmGH4R1KROvWCjlqLsoSe": "{{step_2['output']['body']['transactionId']}}"
|
|
149
|
+
}
|
|
150
|
+
]
|
|
151
|
+
},
|
|
152
|
+
"table_id": "exampleTableId000000"
|
|
153
|
+
},
|
|
154
|
+
"pieceName": "@activepieces/piece-tables",
|
|
155
|
+
"actionName": "tables-create-records",
|
|
156
|
+
"sampleData": {},
|
|
157
|
+
"pieceVersion": "0.3.2",
|
|
158
|
+
"propertySettings": {
|
|
159
|
+
"values": {
|
|
160
|
+
"type": "MANUAL",
|
|
161
|
+
"schema": {
|
|
162
|
+
"values": {
|
|
163
|
+
"type": "ARRAY",
|
|
164
|
+
"required": true,
|
|
165
|
+
"properties": {
|
|
166
|
+
"7bH9z7hla9ZpsWc2uKpvI": {
|
|
167
|
+
"type": "SHORT_TEXT",
|
|
168
|
+
"required": false,
|
|
169
|
+
"description": "Text",
|
|
170
|
+
"displayName": "cardId",
|
|
171
|
+
"defaultValue": ""
|
|
172
|
+
},
|
|
173
|
+
"fmGH4R1KROvWCjlqLsoSe": {
|
|
174
|
+
"type": "SHORT_TEXT",
|
|
175
|
+
"required": false,
|
|
176
|
+
"description": "Text",
|
|
177
|
+
"displayName": "transactionId",
|
|
178
|
+
"defaultValue": ""
|
|
179
|
+
}
|
|
180
|
+
},
|
|
181
|
+
"description": "Add one or more records to insert",
|
|
182
|
+
"displayName": "Records"
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
},
|
|
186
|
+
"table_id": {
|
|
187
|
+
"type": "MANUAL"
|
|
188
|
+
}
|
|
189
|
+
},
|
|
190
|
+
"errorHandlingOptions": {
|
|
191
|
+
"retryOnFailure": {
|
|
192
|
+
"value": false
|
|
193
|
+
},
|
|
194
|
+
"continueOnFailure": {
|
|
195
|
+
"value": false
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
},
|
|
199
|
+
"displayName": "Create Record(s)",
|
|
200
|
+
"lastUpdatedDate": "2026-08-21T12:47:05.847Z"
|
|
201
|
+
},
|
|
202
|
+
"displayName": "Consulta Cedente",
|
|
203
|
+
"lastUpdatedDate": "2026-08-21T12:47:00.766Z"
|
|
204
|
+
},
|
|
205
|
+
"displayName": "Get Current Date",
|
|
206
|
+
"lastUpdatedDate": "2026-08-21T12:47:00.766Z"
|
|
207
|
+
},
|
|
208
|
+
"lastUpdatedDate": "2026-08-21T12:47:00.766Z",
|
|
209
|
+
"type": "PIECE_TRIGGER",
|
|
210
|
+
"settings": {
|
|
211
|
+
"sampleData": {},
|
|
212
|
+
"propertySettings": {
|
|
213
|
+
"mode": {
|
|
214
|
+
"type": "MANUAL"
|
|
215
|
+
},
|
|
216
|
+
"exampleData": {
|
|
217
|
+
"type": "MANUAL",
|
|
218
|
+
"schema": {
|
|
219
|
+
"sampleData": {
|
|
220
|
+
"type": "example",
|
|
221
|
+
"required": false,
|
|
222
|
+
"displayName": "example"
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
},
|
|
227
|
+
"pieceName": "@activepieces/piece-subflows",
|
|
228
|
+
"pieceVersion": "0.4.12",
|
|
229
|
+
"triggerName": "callableFlow",
|
|
230
|
+
"input": {
|
|
231
|
+
"mode": "advanced",
|
|
232
|
+
"exampleData": {
|
|
233
|
+
"sampleData": {
|
|
234
|
+
"cardId": "example",
|
|
235
|
+
"nfXmlBase64": "example"
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
},
|
|
241
|
+
"valid": true,
|
|
242
|
+
"schemaVersion": "22",
|
|
243
|
+
"notes": []
|
|
244
|
+
}
|
|
245
|
+
],
|
|
246
|
+
"status": "PUBLISHED"
|
|
247
|
+
}
|