Confluye
Building Workflows

Importing n8n

Preview, import, and migrate n8n JSON into Confluye, including lossy mappings and sub-workflows.

Confluye can ingest a single n8n workflow JSON, a multi-workflow bundle, or portable Confluye JSON. Import is lossy: n8n expressions, credentials, and unsupported nodes do not become a 1:1 runtime clone. Preview first, then connect credentials and replace blockers before deploy.

In the workflow editor, open the JSON sidebar tab to paste and preview JSON, review warnings, import a workflow or bundle, import a JSON file, or download the current workflow.

Preview before you write

POST /api/v1/workflows/import-preview requires a bearer API key. Body: importJson (one workflow) or importBundleJson (bundle). Optional name is used only as the preview base name. Missing both JSON fields returns 400. Invalid JSON returns 400 with the parser message.

Single-workflow response: { preview, workflow }. Bundle response: { bundle, workflows[] } with per-entry sourceName, sourceId, bundleSubWorkflowStatus, preview, and workflow.

preview.format is n8n or fluxus. Counts include nodeCount, edgeCount, triggerCount, outputCount, and nodeTypes[]. Typical n8n warnings:

  • Expressions become Confluye templates where the importer can rewrite them ({{input.field}} style). Remaining n8n $json / $node syntax may not evaluate.
  • If the graph has no output node, import adds a synthetic imported_output node so the graph can execute.
  • Missing trigger or output is called out explicitly.

preview.readiness is the setup checklist: missing credentials, imported n8n parameter snapshots, referenced sub-workflows, unsupported nodes, AI provider hints, and schedule/webhook review items.

Apply an import

ActionRouteAuth
Create from JSONPOST /api/v1/workflows with importJsonBearer API key
Create from bundlePOST /api/v1/workflows with importBundleJsonBearer API key
Replace an existing graphPATCH /api/v1/workflows/{id} with importJsonBearer API key; workspace must match
Server bundle pathPOST /api/v1/workers/n8n/import-bundleBearer API key
Session bundle pathPOST /api/workers/n8n/import-bundleSession cookie; workspaceId in body or session
Original subflow JSONPOST /api/v1/workers/n8n/subflows/import-originalsBearer API key

Create returns 201. Bundle create returns { bundle, workflows[] } with importAction (create vs upsert by original n8n id), importReadiness, bundleSubWorkflowStatus, trigger sync fields, and links. PATCH import forces status: "draft" and returns importReadiness. Identity (id, workspaceId) of the target workflow is preserved; imported n8n ids stay on node config (n8nWorkflowId, n8nType).

Portable Confluye JSON (GET /api/v1/workflows/{id}?format=portable) round-trips name, description, nodes, and edges only. It does not include workspace id.

How n8n nodes map

The importer uses the exact ordinary n8n node type and its parameters. A node's display name does not select its behavior. Positions are rounded. n8n connections become edges; loop back-edges into splitInBatches / Loop Over Items are dropped so Confluye loops stay acyclic.

Nodes without an executable import profile now retain an explicit migration blocker. Readiness explains the rejected source option and keeps the original parameters for repair; deploy is blocked, and simulation or execution reports needs connector migration. Older saved shells are checked again when validated and run. Registered provider and operation counts alone do not establish import compatibility. In particular, nested Gmail, Calendar, Docs, Drive, Sheets or Outlook parameters that a generic mapping would drop require repair.

Source type identities must not contain surrounding whitespace, including in older saved workflows. Correct the original identity and import again. Explicit null and empty-array source values can mean clearing a field or collection: a generic mapping must retain those values or report the affected parameter as dropped. Empty, unselected resource locators remain placeholders.

En español: el nombre visible no cambia el tipo de nodo. Los nodos sin perfil ejecutable y las opciones que se perderían quedan bloqueados con una explicación. Revisa Readiness, corrige una copia del origen y vuelve a importar. Los borradores antiguos también se revisan al validar y ejecutar; el número de operaciones registradas no demuestra equivalencia de importación.

El tipo de origen no puede tener espacios al principio o al final. Corrígelo en una copia y vuelve a importar. Los valores explícitos null y los arrays vacíos pueden borrar campos o colecciones; si el mapeo no los conserva, Readiness indica qué parámetro necesita reparación.

For ai_tool, ai_languageModel and ai_outputParser connections, each target must explicitly declare a matching type and input index: 0; only source output index 0 is supported. Missing, mismatched or other ports are refused before import. Correct the connection entries in a separate original export and preview again.

Saved or portable workflows accept only the bare role label or its :0 form. Other port labels require repair before execution and cannot offer an Agent operation. Imported tools, model declarations and output parsers stay outside ordinary execution and child workflow entry-point choices, including an unsupported imported source attached through ai_tool. Select an ordinary executable start node for the child workflow.

n8n (examples)Confluye kindNotes
Manual Trigger, Execute Workflow TriggermanualTriggerChild graphs start as a normal manual trigger
WebhookwebhookTriggerTriggers are re-synced on save
Schedule / CronscheduleTriggerTimezone defaults from n8n settings (America/New_York if absent)
Waitwaitresume=webhook\|form → mode: event; otherwise duration from amount+unit. onTimeout imports as fail. Date/until waits are not reconstructed from n8n
Respond to WebhookresponseStatus 200–599; body templated; content type forced to JSON or plain text
HTTP RequesthttpRequestLive HTTP still needs WORKFLOW_LIVE_HTTP (or workspace live transports); move supported inline login passwords to a workflow credential from Readiness
Execute Workflow / Call WorkflowworkflowCallKeeps original n8n workflow id/name; input defaults to {{lastOutput}}
IF / Conditioncondition
SwitchrouterRoute labels come from n8n output names
Split In Batches / Loop Over Itemsloop
Set / Edit FieldsfunctionNative Edit Fields (Set) with typed fields, JSON mode and input/conversion/dot-notation options
No Operation (n8n-nodes-base.noOp, version 1)functionPure pass-through of the native item collection; no code or credentials
Code / FunctionfunctionLive JS is gated (see below)
Filter, Stop and Error, Extract from File, Read/Write FilefunctionDedicated operation values
OpenAI / Anthropic / LangChain / AgentaiAgentExact supported model subnodes below; other types retain provider/model hints
Claude Code / Codex CLIclaudeCode / codexCliNeeds local CLI readiness
Sticky NotestickyNoteCanvas annotation; not executed
MySQL/SQLite/Sheets/Airtable (generic)tableRead / tableWriteWrite vs read from operation name; often still needs a native table
Known Gmail/Sheets/Drive/Calendar/Docs/Jira/GitHub query opsfunction + operationPlus optional integration manifest projection

Ordinary n8n-nodes-base.postgres has a separate migration check before generic table mapping. Only explicit numeric source versions 1, 2, 2.1, 2.2, 2.3, 2.4, 2.5 and 2.6, explicit executeQuery, and a nonempty literal query are accepted. Version 1 has no resource selector. For the later supported versions, an omitted resource uses n8n’s hidden database default; an explicit resource must be "database". Import preserves the original parameters, including an omitted selector. Other resource values, including null and an empty string, are rejected. Replacement parameters, nonempty options, query expressions, quoted-placeholder rewriting and other operations require manual migration. Preview and import reject the file with the migration error instead of creating an internal table substitute. Correct a separate exported copy and preview again. Existing Confluye SQL and table blocks are unchanged; importing never approves a database action. Source credential type, ID and name are retained as inert references; they do not select or authorize a Confluye account. Parameterized n8n queries remain refused: their pg-promise SQL literal formatting and PostgreSQL type inference are not established as equivalent to the existing node-postgres bound-parameter runner.

The central execution check uses these same source restrictions before allowing an imported Postgres node to reach the native postgres-query runner. It requires that function profile and does not let the source borrow another integration's executor. If an older import already shows needs connector migration, import the original source again and select the intended saved account. Import never clears an existing migration refusal or grants database access automatically.

Missing or malformed retained source and unrepresented options remain migration blockers.

For deliberately authored Confluye postgres-query blocks, Config JSON may use a typed queryReplacement array such as ["001", null, true, ["text", ""]]. Public JSON import, export and reopen retain these types through the SQL request. Plain dense arrays may contain valid UTF-8 strings, finite numbers, booleans, null and nested arrays, within 2,048 values including array containers, 16 nested levels, 16,384 UTF-8 bytes per string and 65,536 serialized JSON bytes total. Objects, sparse or cyclic arrays, accessor or extra array properties, altered array prototypes and malformed UTF-8 strings are refused. Existing authored comma-separated strings keep their earlier coercion (001, null, true becomes [1, null, true]). This representation does not certify n8n query/result equivalence or native database networking; review SQL casts and database behavior separately.

Known integration operations also set manifestProviderId / manifestOperationId when the catalog can resolve them. Unknown n8n types retain n8nType and a parameter snapshot for repair. A saved native block type or an unrelated selected provider does not grant an unclaimed source node an executable profile. Nodes flagged unsupportedN8nNode: true (side-effect connectors without a live mapping) block deploy until you replace them. Runtime refuses those nodes with the stored n8nRecommendedMigration text.

n8n node flags map onto settings:

n8nStored settings
alwaysOutputDataalwaysOutputData
executeOnceexecuteOnce
onError continueRegularOutput / continueErrorOutput / stopWorkflowsame string
retryOnFail: true with maxTries / waitBetweenTriesretryOnFail: true, maxTries, waitBetweenTries

Retry On Fail migrates onto the block's native retry settings, so the imported block shows retries enabled with the original number of tries and wait in milliseconds. A missing or 0 value takes n8n's default (3 tries, 1000 ms). Values outside n8n's own limits take the nearest limit: 2 to 5 tries and 0 to 5000 ms. When retryOnFail is absent or false, inactive maxTries and waitBetweenTries values are not imported. Each retry repeats the whole block call; a write that reached the service before a failure, such as an appended spreadsheet row, can be repeated, as in n8n. Adapters that state their own retry rule below, such as Stop and Error, follow that rule instead.

No Operation version 1

An exact n8n-nodes-base.noOp version 1 node passes the native item collection to the next node without adding fields, evaluating text values, or calling a service. The source node name does not select HTTP, Agent, or condition behavior. JSON objects retain nested numbers (including 0), booleans (including false), null and arrays; item order and binary metadata objects are preserved. An empty collection stays empty. The original disabled: true flag survives export and reopen; a disabled NoOp leaves the preceding items available to the next node.

Only numeric source version 1 is supported; an omitted version defaults to 1. NoOp has no parameters or credentials. Remove unsupported parameters or credential references from a separate exported copy, correct the version, and preview again. Operational configuration added to the portable NoOp node is refused; create a separate supported node for that action.

This covers Confluye's native { json: object, binary?: object } item channel. It does not certify n8n item-linking metadata such as pairedItem, filesystem-backed binary handles, or streamed binary transport. Binary JSON metadata and embedded data strings pass through; their bytes are not decoded or uploaded by NoOp.

DebugHelper version 1: Do Nothing

An exact n8n-nodes-base.debugHelper numeric version 1 imports only with the explicit literal parameter category: "doNothing". An omitted version defaults to 1; the node's name does not select HTTP, Agent or condition behavior. This branch emits an empty item collection and does not activate its downstream nodes, including after portable export and reopen. It differs from NoOp, which passes items through. Only a single linear execution path is supported. The original disabled: true flag is preserved, and a disabled DebugHelper passes the preceding items to its consumer without imposing the enabled profile's linear-path restriction.

An omitted category retains the original meaning of throwError and is refused. Error generation, out-of-memory, garbage collection and random-data categories are not supported by this profile. Additional parameters, credential references, other source versions, alwaysOutputData: true, and an enabled DebugHelper inside Loop or Parallel, and branched, joined or disconnected execution paths require explicit migration before any node runs. Repair a separate exported copy: select doNothing, remove inactive category parameters and credential references, disable Always Output Data, and use a separate linear workflow outside composites before previewing again. Use a supported Stop and Error block when an intentional error is needed; changing the category is not an equivalent repair for an error-generating workflow. Portable operational fields are refused before execution.

This profile covers empty output in Confluye's native JSON item channel. It does not run the original n8n package or certify paired-item linking, streamed binary handles, other DebugHelper categories, or propagation inside composites or branched flows.

Stop and Error version 1

An exact n8n-nodes-base.stopAndError numeric version 1 node imports as the native error function, regardless of its name. An omitted source version defaults to 1; other versions need manual migration. Its current errorType selects errorMessage (the default) or errorObject. Both parameters are text templates. Parameters read the first incoming item's JSON, including after export and reopen. The original disabled flag is retained.

Message mode preserves whitespace and empty messages. Object mode requires a JSON object, either JSON text with supported templates or a whole-record data reference. It selects the first nonempty string from message, description, then error; otherwise it uses Error: followed by the serialized object. Arrays, null, scalar JSON values, unsupported parameters and credential references require manual repair. Values extracted from the bound object are not evaluated again as templates. Edit the active native configuration to repair the message or object; a raw n8n parameter snapshot does not override it. Reimport original version 1 if an earlier generic import still has a parameter snapshot or operational fields; those old shells are refused until repaired.

The failed step's output.errorDetails retains the redacted message, NodeOperationError name, level, optional type and description, the original message when a common code changes its wording, and object metadata under context.metadata. When description equals the original message it is omitted. The supported common-code wording follows the verified n8n version, including ECONNREFUSED, ENOTFOUND and ETIMEDOUT. Known secret values, secret-bearing keys, and fields such as password, token and authorization are redacted before the error is published or forwarded. Diagnostic configuration copies expose only the node identity and error mode, keeping raw error templates out of produced run output. The authored workflow definition and execution snapshot still retain source text; reference saved secrets for credentials. This preserves selected JSON error details, not the original framework stack, timestamp, full node context or execution history.

An original top-level retryOnFail: true flag is refused during import; the same raw flag in portable configuration is refused before execution. Disable it in a separate source copy and import again, then configure native retry settings explicitly if wanted. When the original flag is absent or false, inactive maxTries and waitBetweenTries values do not enable retries or change the error. Native retry settings remain a separate, explicitly authored configuration; this adapter does not migrate n8n's global retry behavior.

The native onError settings can stop the workflow, continue through the regular output, or route to the error output. The consumer receives the safe errorDetails projection. Legacy continueOnFail: true requires migration to an explicit native onError setting. Imported Stop and Error nodes inside Loop or Parallel composites are refused before execution because those runners cannot preserve this error-detail contract; move the node outside the composite or migrate the error handling explicitly. Existing deliberately authored native error functions keep their behavior.

Imported item transformations

Limit, Sort, Aggregate, Split Out and Rename Keys numeric version 1, Remove Duplicates versions 1, 1.1 and 2, and Summarize versions 1 and 1.1 execute over the native ordered {json, binary?} item channel. Parameters keep their original names and defaults, survive portable save/reopen and are checked again before execution. Rename Keys and Aggregate produce new JSON; sorting and limiting preserve each item's binary metadata. Aggregate combines input into one item; Split Out can produce many items. An empty result stops that branch. Disabled nodes pass the incoming items through; an empty collection still stops successors, including inside a Loop. Execute Once transforms only the first item.

Sort supports simple multi-field sorting and random order; JavaScript comparison requires migration to Code. Remove Duplicates handles the current input only; persistent history and history clearing are unavailable. Rename Keys supports explicit paths and a bounded regex subset: at most 20 replacements, 256-character patterns, one variable-length quantifier, no lookaround, backreferences or alternation, and no repeated complex groups. Patterns with a variable-length quantifier must start with ^. The regex key budget is 50,000 visits per item with keys up to 4,096 characters. A conservative work budget of 50 million units is shared across every item and replacement in one node execution; shorten keys or patterns, or use smaller batches if it is exceeded. Unsupported expressions, parameters, versions and credential references are refused explicitly. Native item metadata does not certify n8n paired-item linking or external binary handles. Merge and legacy Item Lists do not inherit these profiles.

These profiles retain the pinned original's comparison and filtering quirks. Aggregate applies both nonempty field lists, even when the inactive list remains saved: clear stale Fields To Include or Fields To Exclude values before importing. Sort does not define a consistent order for missing, null or otherwise incomparable values; Remove Duplicates can retain nonadjacent duplicate object values. Normalize sort fields and use a primitive comparison key, then inspect the result before publishing. With Remove Other Fields enabled, an existing own dotted or bracketed key remains literal in either notation mode and takes precedence over a same-named nested path. A real nested path without a matching literal key stays nested.

In Remove Duplicates' dot-notation All Fields comparison, empty objects and arrays contribute no comparison paths. Rows distinguished only by those empty containers can collapse to the first row, as in the original source. Add an explicit primitive comparison key when the container field names distinguish records.

Dot-notation output writes in Aggregate, explicit Rename Keys and nested Remove Duplicates projection have safety limits: 4,096 characters and 64 path segments, numeric components from 0 to 9,999, and at most 50,000 newly expanded array slots across one node execution. Prototype segments (__proto__, constructor, prototype) and nonnumeric writes into arrays are refused explicitly. Known unsafe output paths require migration on import; an unsafe path discovered from input fails execution without forwarding partial output. Use smaller batches, compact output paths or the applicable literal-field mode. Literal Aggregate output fields and its all-item destination remain literal keys. Large merged lists are appended without JavaScript argument expansion; this removes an engine argument limit also present in the pinned original. A retained unsupported marker blocks direct execution even if its parameters otherwise look valid.

Summarize arithmetic ignores numeric strings, as the original does. Version 1 converts group keys to strings; version 1.1 keeps their types. Aggregate and Summarize have different output contracts; the importer no longer approximates either as a generic array-group function. See the Data block reference.

Summarize's Single Item output uses string property names. In version 1.1, distinct typed groups such as 1 and "1" collide in that format, and the later group replaces the earlier summary, matching the original. Use Separate Items to retain typed groups, or normalize the split field before grouping.

En español: estos perfiles conservan los parámetros originales y los vuelven a validar al reabrir y ejecutar. Un resultado vacío detiene esa rama. Ordenar y limitar conservan los metadatos binarios; agrupar o resumir puede cambiar la cantidad de elementos. Remove Duplicates no conserva historial entre ejecuciones y Rename Keys limita las expresiones regulares y no admite alternancia ni repeticiones sin anclaje inicial. Un presupuesto total de trabajo también limita el conjunto de elementos. Las expresiones de parámetros y opciones no admitidas exigen reparación explícita; Merge e Item Lists antiguos no se convierten por aproximación.

Las rutas de escritura con notación de puntos admiten hasta 4.096 caracteres, 64 segmentos, índices de 0 a 9.999 y 50.000 posiciones nuevas de arrays por ejecución. Los segmentos de prototipo y las escrituras no numéricas en arrays se rechazan explícitamente. Corrige la ruta, reduce el lote o usa el modo de campos literales correspondiente; un fallo no envía resultados parciales al siguiente bloque.

Se conservan peculiaridades del origen: Sort no define un orden consistente para valores ausentes o no comparables, y Remove Duplicates puede conservar objetos iguales no contiguos. En su comparación All Fields con notación de puntos, los objetos y arrays vacíos no aportan campos y pueden hacer que filas distintas se reduzcan a la primera. Usa una clave primitiva explícita. En Summarize 1.1, Single Item convierte las claves a texto: los grupos 1 y "1" colisionan y permanece el último. Usa Separate Items para conservar ambos grupos o normaliza la clave antes de agrupar.

DeepSeek, OpenRouter and xAI chat subnodes

Numeric version 1 of lmChatDeepSeek, lmChatOpenRouter and lmChatXAiGrok can connect to one Agent through ai_languageModel. Use a literal model ID and omitted or empty options. An omitted model uses the pinned original node default: deepseek-chat, openai/gpt-4.1-mini or grok-2-vision-1212, respectively. Availability of these model IDs at the provider remains unverified; select an available literal model in the original source when needed.

Select a separate saved API-key account on the Agent: deepSeekApi, openRouterApi or xAiApi. The Secret accepts an API key or JSON with exactly apiKey and optional baseUrl. Only https://api.deepseek.com (also accepting /v1), https://openrouter.ai/api/v1 and https://api.x.ai/v1 are allowed. Original account references and environment keys grant no access. These adapters send nonstream Chat Completions under native Agent budgets; sampling, JSON response modes, custom endpoints, headers, timeout and retry overrides require repair. Source/model/account changes require a saved and reviewed successor for a governed destination. Local tests use synthetic responses; they do not establish real account access, billing, model availability or Review behavior.

Ordinary imported Agents admit the reviewed numeric versions 2, 2.1, 2.2, 2.3, 3 and 3.1 (an omitted source version uses the original default 3.1). Define and auto prompts are supported; auto reads the current chatInput. Unknown versions, fallback models, explicit streaming, batching, iteration and other ignored source controls require migration. A standalone Model Selector remains unsupported until its separate reviewed graph contract is satisfied; its inventory identity alone is insufficient.

En español: conecta un modelo de versión numérica 1 y elige explícitamente su cuenta guardada en el Agent. Las referencias importadas y las variables de entorno no autorizan llamadas. Se admiten modelos literales y opciones vacías; los controles no compatibles se rechazan. Las pruebas locales usan respuestas simuladas y no verifican cuentas, cobros, disponibilidad del modelo ni Review.

OpenAI and Anthropic model subnodes

lmChatOpenAi and lmChatAnthropic versions 1, 1.1, 1.2 and 1.3 can supply the model for a V2 Agent through exactly one ai_languageModel connection. They are declarations, without an ordinary input or output path, and do not make a separate model call. Disabled, multiple or unsupported sources block execution rather than selecting a fallback model. The existing retrieval-QA adapter remains separate from this Agent contract.

Keep an explicit literal model ID of up to 200 characters. OpenAI versions before 1.2 use a string; later versions use the original model locator. Anthropic changes to a locator at version 1.3. OpenAI versions before 1.3 use Chat Completions. Version 1.3 requires an explicit responsesApiEnabled boolean to select Responses or Chat Completions; missing serialized settings need repair. Anthropic uses Messages. Other options, including sampling, token overrides, thinking, built-in tools, custom headers and custom endpoints, need manual migration. They are refused rather than silently discarded. Native Agent token, cost and duration limits still apply. The shared native executor permits at most two inference attempts for eligible transient failures on the same route. Empty options leave sampling settings absent in both original delegates and the native request. The original Anthropic constructor's model-specific output maximum (2,048, 4,096 or 8,192 tokens) is preserved and can only be lowered by the native Agent budget. OpenAI's original empty options specify no output maximum; the native Agent budget still bounds its output. This is a bounded adaptation, without full LangChain generation parity.

Import projects the provider, model and API selection into the Agent's saved configuration. Select an authorized saved account of that provider on the Agent after import. Original n8n account names and IDs do not select a local account, and environment keys are not used for this contract. Saving the account preserves an absent temperature; explicit Agent sampling overrides require repair. For a governed destination, explicitly select its account binding as well. Account endpoints must use the provider's official API; custom account headers and API versions are unavailable here.

A later edit to the model source, API choice, connection or conflicting Agent provider/model requires re-importing the corrected original workflow. Reselect the Agent account, save the resulting version, and review and approve a successor for a governed destination. Existing approvals do not authorize changed source material. The declaration adds no external effect; the Agent's approved inference provider and model must match the model actually dispatched.

Google Gemini model subnode

Exact lmChatGoogleGemini numeric version 1 can supply the model for Agent V2 through one ai_languageModel connection. It follows the declaration, native account selection and successor review rules above. Select a saved Google API-key account on the Agent; imported googlePalmApi names and environment keys grant no authority. The request uses the official Google v1beta Generate Content API. Custom account hosts, headers and API versions require repair.

Keep a literal modelName; a leading models/ is removed exactly as in the original delegate. This bounded adapter requires explicit options: {}, which leaves sampling and safety overrides absent. Omitting options is different: the original wrapper supplies maximum output 1,024, temperature 0.7, top K 40 and top P 0.9. Omitted or nonempty options remain visible repair intent and cannot dispatch. Choose and re-import a supported explicit-empty-options workflow deliberately; changing the collection changes its original generation behavior. Native Agent output, aggregate token, cost and duration limits still apply. The shared native executor permits at most two inference attempts for eligible transient failures on the same route, without full LangChain generation guarantees. Editing the source modelName, model projection, API or options metadata requires re-import, account reselection, saving and reviewing a successor version.

Azure OpenAI model subnode

Exact lmChatAzureOpenAi numeric version 1 can supply a literal deployment name to Agent V2 through one enabled ai_languageModel source. Keep explicit authentication: "azureOpenAiApi". Empty or omitted options leave sampling and output settings absent in the original delegate; nonempty options, OAuth/Entra authentication, expressions and deployment paths require manual repair. An original disabled: true stays disabled through import, export and reopening, and blocks inference.

Reselect a native Azure API-key account on the Agent. Its saved JSON must contain exactly apiKey, baseUrl and apiVersion: the resource origin, such as https://your-resource.openai.azure.com, has no deployment path or query; the explicit API version has form YYYY-MM-DD or YYYY-MM-DD-preview. Imported account IDs, endpoints and environment keys grant no authority. Custom domains, sovereign-cloud hosts, arbitrary paths, headers and OAuth tokens are unsupported. Provider availability, account permissions and API-version support still need a live test.

The request uses /openai/deployments/<deployment>/chat/completions, the saved api-version query and api-key header. It does not use the generic Responses or Bearer route. Redirects are refused. Native Agent output, aggregate token, cost and duration limits still apply. The original wrapper's retry policy is replaced by the shared native executor: at most two inference attempts for eligible transient failures on the same route. This is bounded model selection and execution, without full LangChain generation or streaming parity. Model/authentication/API drift or conflicting Agent API selection requires re-import, account reselection, saving and successor review.

Known saved-secret values are hidden from tool-display rows sent to Agent models and local CLI requests, and from the final SDK tool descriptions in generated and streamed calls. The original labels, request URLs, schemas and approval identities remain unchanged. A canonical function name or argument schema containing a known secret is refused rather than rewritten; repair the original definition, re-import it and review the successor version before running.

Groq model subnode

For imported Groq, Mistral and Ollama model sources, the Agent editor keeps the source provider and model read-only. Choose its compatible saved native account in Credential, or use Add account. The original export never preselects an account. Change the provider or model in a separate original export and re-import it, then select the native account and review the successor version. The existing generic account dialog accepts Ollama JSON with exactly baseUrl and optional apiKey in its Secret field; there is no dedicated Ollama field form. Its public HTTPS origin must also be explicitly configured as n8nOllamaOrigin in the Agent's Config JSON and reviewed. Saving an account does not prove provider authentication or model availability. Groq and Ollama retain the existing Save and test action; a failed or unsupported test leaves authentication unverified.

Exact lmChatGroq numeric version 1 supplies a literal model to Agent V2 through one enabled ai_languageModel source. Omitted or empty options are supported. The original delegate sets temperature 0.7, empty stop sequences and nonstream Chat Completions even with empty options; this adapter preserves those defaults. Nonempty options, expressions, missing models, unsupported versions and explicit Agent sampling overrides remain visible repair requirements.

Select an authorized native Groq account on the Agent. Use a saved API key or JSON containing apiKey and, optionally, baseUrl: "https://api.groq.com/openai/v1". Other account fields, custom hosts, headers or API versions are unsupported. Imported account references, GROQ_API_KEY and GROQ_BASE_URL do not select an account or endpoint. In a governed destination, review its explicit account binding and the Groq model before approving the version.

The actual request uses /openai/v1/chat/completions, Bearer authentication and max_completion_tokens for the native output budget. It never falls back to Responses. Connected supported tools execute only when selected by the model and retain their separate permissions, approvals and ledger. The original disabled flag survives import, portable save and reopening; disabled sources cannot infer. The declaration itself is excluded from ordinary execution.

Streaming is unsupported and is refused before sending a streaming request. The shared native executor can make at most two inference attempts for eligible transient failures on the same route. Native aggregate token, cost and duration limits replace the original retry policy and may stop a run earlier; the original empty-options contract has no output cap. This is bounded execution, without full LangChain parity or a claim that a particular Groq model is available. Source, model, API or connection changes require correcting the original export, re-importing, selecting the native account again, saving and reviewing a successor version. Live Groq and the organization-scoped Review flow still require verification with an authorized account.

Google Tasks and Microsoft To Do v1

Ordinary numeric typeVersion 1 imports have twenty bounded profiles: Google Tasks task create/get/getAll/update/delete, and Microsoft To Do list, task and linkedResource, each with create/get/getAll/update/delete. Resource and operation must be explicit. Tool, HitlTool, Trigger, missing/string/other versions, expressions, resource-locator objects, unknown or inactive fields, embedded credentials, continue-on-fail and automatic source retries require manual repair. Duplicate JSON keys, including escaped aliases, and prototype keys are rejected before the original can be retained.

Import keeps the complete original node and its credential references in an inactive source ledger. It does not select an account. Choose a saved googleTasksOAuth2Api or microsoftToDoOAuth2Api account in the block, review its fields and effects, then save. Google write acknowledgments start unchecked; task deletion also requires the assigned-original deletion acknowledgment. Every write, including Microsoft checklist writes configured directly, requires explicit request confirmation. An approved workflow or saved account alone does not confirm a request.

The native form preserves literal whitespace in admitted titles, notes, display names, application names and external reference text. Saving and reopening preserves admitted explicit empty strings as well, including Microsoft task-title clears and linked-resource text. Omitted optional fields stay omitted; required-field validation still applies.

Older imported Tasks blocks may have only a parameter snapshot, without the complete original node. They remain editable and blocked. Reimport the original n8n export to create a supported profile; editing or exporting an old block does not reconstruct missing source intent.

getAll requires explicit returnAll:false and an integer limit from 1 to 100. Only that page is read; continuation metadata does not trigger another request. Each incoming item is processed sequentially, up to 100 per node invocation; the whole input is refused before dispatch if it exceeds the bound. Empty input sends no request. Collection rows retain their item boundaries and pair with the incoming item; an empty page produces no rows. Deletes return the original {success:true} item. Provider business extensions remain available in results; malformed or unsafe numeric data can still fail native validation. A failure stops the remaining items, preserves completed items and does not retry the node. Already dispatched writes may have taken effect.

Google create supports title plus nonempty notes/status/completed, literal parent/previous IDs, and a due date represented exactly as UTC midnight (2026-11-03T00:00:00.000Z). Update supports nonempty title/notes/status/completed and that same due-date form. Original deleted, update previous, empty optional write values and other due times are refused. The native form can support deliberately authored empty clears; importing does not reinterpret an ignored original value as a clear. List filters support the original completion/deletion/hidden flags and timestamp bounds; absent flags retain the original defaults.

Microsoft list writes preserve displayName. Task create/update supports title, importance and status; an imported update with no reminderDateTime explicitly sends isReminderOn:false, matching the original. Original task content, dueDateTime and reminderDateTime require manual repair because their original transformations do not match the native body contract. Linked resources preserve applicationName, displayName, externalId and webUrl in their applicable create/update fields. Checklist actions exist as native blocks but are not source import profiles.

These profiles use the existing manual accounts and finite native operations. OAuth acquisition/refresh, provider grants, real writes, automatic paging and complete n8n runtime parity are not certified. Source comparisons use the inert n8n-nodes-base 2.7.1 archive; transport tests use simulated responses. Review UI evidence and real-provider evidence are separate.

Tareas importadas: resumen en español

Los nodos ordinarios v1 de Google Tasks y Microsoft To Do admiten las veinte combinaciones anteriores. La importación conserva el original y sus referencias inactivas: vuelve a seleccionar una cuenta guardada, revisa los campos y confirma cada escritura. No se aceptan otras versiones, variantes Tool/Trigger/HitlTool, expresiones, opciones desconocidas, credenciales incrustadas ni reintentos automáticos del original.

Las listas exigen returnAll:false y límite entero de 1 a 100; se lee una sola página. Se procesa cada entrada en orden, con un máximo de 100; una entrada o página vacía no crea resultados ficticios. Un error detiene las entradas pendientes sin repetir las ya ejecutadas. Las escrituras enviadas pueden haber producido efectos. Google no convierte valores opcionales vacíos en borrados y solo importa fechas de vencimiento a medianoche UTC. El contenido y las fechas de tareas Microsoft necesitan adaptación manual; una actualización importada sin recordatorio envía isReminderOn:false, igual que el original. No se certifican permisos, OAuth ni efectos reales de los proveedores.

Mistral Cloud model subnode

Exact lmChatMistralCloud numeric version 1 supplies a literal model to Agent V2 through one enabled ai_languageModel connection. Keep explicit options: {}. The original delegate then uses temperature 0.7, top_p: 1 and safe_prompt: false; these provider defaults are preserved while native guardrails, permissions and budgets still apply. Missing options are different: the wrapper sends maxTokens: -1 and changes retries. That form remains visible repair intent rather than being silently treated as empty options. Nonempty options, expressions, missing models and explicit Agent sampling overrides also require repair.

In the Agent's Add account dialog, enter {"apiKey":"…"} in Secret. This current dialog requires that JSON format and does not test the saved account.

Select an authorized native Mistral account on the Agent. Use a saved API key or JSON containing apiKey and optional baseUrl: "https://api.mistral.ai/v1". Custom account hosts, headers and API versions are unsupported. Imported credential references and environment keys grant no access. The request uses the official /v1/chat/completions, Bearer authentication and the native output budget as max_tokens; it never uses Responses. The shared native executor can make at most two inference attempts for eligible transient failures on the same route. Native aggregate token, cost and duration limits replace the delegated retry policy and may stop a run earlier.

Supported connected tools run only after model selection through their native permissions, approval and ledger. The Mistral request preserves the original converter's nine-character tool IDs and history filtering; local ledger IDs remain those returned by the provider. Builtin skills.load uses the same model transport and its authorized actor. Distinct IDs that collide in the original conversion, unsupported history/content and strict or unknown function-schema controls are refused before the affected request. Structured provider content is unsupported and cannot execute tools.

Streaming and image/structured request content are unavailable in this bounded profile. The original delegate can switch to SSE when a LangChain invocation supplies a signal or timeout. This adapter uses complete JSON responses with native cancellation and does not reproduce that internal switch. The original metadata.output_format hint for Magistral models is tracing metadata; it does not authorize or select a JSON response_format here. Disabled sources remain disabled after portable save and reopening and never infer. Source, model, API or connection changes require correcting the original export, re-importing, reselecting the native account, saving and reviewing a successor version. Live Mistral model availability, account entitlement and the organization-scoped Review flow still need separate verification with an authorized account; local SDK wire simulations do not prove them.

Ollama Chat model subnode

Exact lmChatOllama numeric version 1 supplies one literal model through one enabled ai_languageModel connection to Agent V2. Omitted options and options: {} are supported: neither injects sampling defaults. Nonempty options, expressions, missing models and Agent sampling controls require repair. The native output budget is sent as options.num_predict; original unlimited token or retry behavior does not override native cost, token or duration limits.

Select an authorized saved Ollama account on the Agent. Its JSON must contain an explicit HTTPS origin as baseUrl, for example {"baseUrl":"https://ollama.example.com","apiKey":"…"}. The API key is optional. In the Agent's Config JSON, explicitly set n8nOllamaOrigin to that same HTTPS origin, then save and review the workflow version. This author-owned routing value is never filled from an imported source or a saved account. Rotating an account to another origin stops execution; changing n8nOllamaOrigin requires saving and reviewing a successor version. Omit the API key for an account that requires no authentication; no placeholder token or OLLAMA_API_KEY environment value is supplied. Paths such as /v1, query strings, custom headers and HTTP origins require manual migration. The selected origin must pass normal outbound network and DNS checks. Private hosts require an existing operator allowlist; saving an account never adds a host to that allowlist. Imported credentials and server addresses grant no access.

The adapter uses native Ollama /api/chat with stream: true, consumes bounded NDJSON and returns a complete result to the Agent. It does not use OpenAI /v1 or support SDK event streaming. It never lists or pulls models; model availability and the server's resolution of a literal name must be checked separately. The requested model stays literal; any returned model name is separate metadata, without guessed tags or aliases.

Supported tools, including skills.load and connected Think, run only after model selection through native authorization and the ledger. One complete function call per model response is supported. Multiple calls or fragmented tool-call records require migration. The original delegate's string assistant and content-only tool history are preserved; tool correlation uses local UUIDs, not invented provider IDs. JSON native tool outputs are serialized as text. Typed/image content, nonempty thinking, strict schemas, forced-tool choices and custom SDK controls are unsupported. An empty thinking field retains its original precedence over the content field.

The native actor, selected account and source binding are checked again at request initiation after DNS validation and after the asynchronous authorization hook completes, immediately before sending. Malformed, oversized or truncated NDJSON, error records, invalid counters and cancellation stop the call before a proposed tool can execute. Native no-retry and deadlines remain in force; this is a bounded adapter rather than full LangChain streaming parity. Disabled sources stay disabled through portable save and reopening. Source, model, API or connection changes require correcting the export, re-importing, reselecting the saved account and reviewing a successor version. Local SDK/transport simulations do not establish live Ollama model support, real server acceptance of the original tool history, or the organization-scoped Review flow.

Model Selector version 1 with two reviewed routes

Exact numeric Model Selector version 1 supports two indexed OpenAI Chat 1.3 sources: gpt-4o-mini and gpt-4o, with different model IDs, explicit responsesApiEnabled: false and options: {}. Input indexes remain separate from source output indexes through import and reopening; other Agent and Chain connections still require input 0.

Use a single-mode V2 Agent, one JSON input item, and one explicitly selected saved OpenAI account shared by both routes in the destination's Connections. Review both source/model rows and that immutable target account through the existing version review. Import, inventory membership and original credential references grant no authority to run either route. Execution requires an approved target activation; candidate, standalone, legacy and shadow runs cannot substitute for it.

Both declared models must be allowed by the current organization and OpenAI workspace policies. A model disabled in any OpenAI provider configuration for this workspace blocks the selector, even when the input would select the other route. The policy check reads model restrictions only; the approved target still supplies both routes and the shared account. Re-enable the models in the applicable policy, or correct the original routes and review a successor before trying again.

The Agent consumer accepts promptType: "auto" or "define". Automatic mode reads only the current item’s own chatInput string, verbatim, and ignores saved text; missing, empty, whitespace-only or non-string input stops before inference. The editor identifies that input source. Defined mode accepts a literal prompt or one whole own-property $json dot path, whose value must be a nonempty string; current native prompt edits remain authoritative. When promptType is omitted, the original runtime’s define fallback applies. A literal options.systemMessage remains editable as the native System prompt. Other explicit consumer options, including maxIterations and returnIntermediateSteps, unsupported prompt modes and parser/fallback settings require migration. This nonempty-string restriction is a bounded native profile, not full original input coercion parity.

Rules support strict, case-sensitive string equality and inequality, AND/OR groups, literal strings and own-property $json dot paths. An explicit empty AND group can serve as the final catch-all. No match fails without calling a model. The chosen route is frozen for the Agent activation, including its tool rounds and existing same-route retries. A provider failure never selects the other model. Current account authority, source revisions and cancellation are checked before dispatch; actual completed provider usage remains recorded if a later authorization check fails.

Fresh original imports retain the selector and supplier source fields required for admission. Older drafts without those fields need reimporting; missing source fields are not inferred. Multi-item inputs, Loop/Parallel ancestors, memory, child-run modes, approval continuation, MCP tools, child-workflow tools and tools that require waiting confirmation need migration. The profile never bypasses a tool’s native approval. Unsupported source settings also require migration. disabled must be absent or literal false on admitted source nodes. Generic rewiring of selector inputs is refused; edit the original indexed export and import it again. Changing either route, rules, sources or the target account requires a saved and reviewed successor version. The selector itself performs no inference or model discovery.

Local SDK tests use simulated provider responses. Live provider entitlement and the durable organization-scoped activation/review flow need separate verification in Review.

Basic LLM Chain versions 1–1.9 with Item List output

Exact numeric versions 1, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 1.8 and 1.9 of Basic LLM Chain have a bounded text profile: one JSON input item and one model call. Connect one supported OpenAI chat model subnode and explicitly select an authorized saved account for the Chain. Deployment also requires the Chain's model and provider in its approved inventory and a selected target account. Imported credential references do not select an account. Unlisted versions require migration.

Versions 1–1.3 retain the original prompt field. Their supported whole-field expressions read input for version 1, chat_input for 1.1 and 1.2, and chatInput for 1.3; a literal prompt is also supported. Versions 1.4–1.9 use promptType: "define" with explicit literal text or the whole-field ={{ $json.chatInput }} expression. promptType: "auto" reads only the current item's chatInput; it does not fall back to saved text. An omitted promptType retains the original runtime's define fallback. The selected input must be a string; missing values fail before inference.

Literal System, AI and Human text messages retain their order before the final user query. Human messages require messageType: "text"; braces remain literal data. This is authored message history, not persistent Agent memory. The Chain adds no Agent instructions, planning or tools. Fallback models, image messages, explicit batching controls, retries, guardrails prompt mode and other prompt expressions require migration. One input item means one inference even for versions whose upstream runtime supports batching. A Chain cannot follow a Loop or Parallel path in this one-shot profile, including through intermediate nodes.

An optional exact Item List Output Parser version 1 receives the model's raw text. It splits on the literal separator, trims each part, removes empty parts and returns separate workflow items with a text field. This does not accept a JSON array as a substitute for list text. Without a parser, the Chain returns one item containing its trimmed text response.

Preserve the saved parser options when migrating: omitted numberOfItems effectively requires and returns three items, while explicit -1 or 0 allows any count. A positive count rejects too few items and truncates excess items. The default separator is a newline; a saved literal \n also means newline. The native profile supports at most 1,000 returned items and a bounded text response. An empty list produces no items and does not activate downstream nodes. Usage from a completed model response remains recorded if parsing later fails. Missing or invalid token totals stop the run with an accounting error; the runner does not invent counts.

The Chain receives raw model text. Its Item List behavior differs from the ordinary Agent wrapper described below. Approval-waiting/resumed inference is outside the Chain profile.

Item List version 1 connected to Agent version 2

An exact Item List version 1 can also connect through ai_outputParser to an original numeric Agent version 2 running the V2 runtime in single mode. It remains outside the ordinary workflow path. Select one active output parser; mixing Item List with Structured Output Parser, duplicate parser edges, memory/child-run modes and waiting tool approval require migration.

The model must call format_final_json_response once, alone, with exactly { "text": "..." }. Additional argument fields are outside this native profile and are rejected rather than discarded. The original wrapper serializes that whole object before splitting and does not extract its text field. It returns one workflow item with numeric JSON keys. With numberOfItems: -1 and text containing newlines, the result is { "0": "{\"text\":\"first\\nsecond\"}" }, not two items. Omitted options still require three split parts; escaped newlines inside the serialized text do not provide those parts. Choose the saved separator/count deliberately or use the raw-text Chain profile. A positive count retains the same minimum and truncation rules. The formatter ends the model loop and retains native policy, ledger and output guards. Each run uses its admitted parser snapshot; saved draft edits apply to a new run and do not replace a running snapshot. Disabled parsers or hasOutputParser: false leave the Agent's ordinary output active.

Basic LLM Chain and Text Classifier claim their native execution segment before calling a model. If a worker disappears with an unknown provider outcome, automatic recovery refuses to send again; reconcile that outcome before deciding whether to start an explicit new run. A durable timer resume keeps completed-node outputs and does not repeat their model calls. This protects the dispatch boundary; it is not a promise of a transactional or exactly-once external provider. Local recovery tests use the actual public queue and completion code with memory-backed persistence and a simulated SDK. PostgreSQL recovery, process termination and real provider charges need separate verification.

Text Classifier versions 1 and 1.1: one category

Exact numeric versions 1 and 1.1 support one literal category and description, with Auto-Fix Format explicitly off, multiple classes off and unmatched items discarded. Use a literal text or the original ={{ $json.text }} expression. Missing versions, other expressions, multiple categories, fallback outputs, concurrent batching, retries and error-continuation settings require explicit migration before running. Version 1.1 requires explicit options.batching: { "batchSize": 1 }, with delayBetweenBatches omitted or zero, to select the original sequential path. Its default concurrent batch size is not silently converted to sequential execution. Version 1 also accepts those explicit sequential settings.

A literal options.systemPromptTemplate can contain {categories} and {format_instructions}; double braces escape a literal brace. Values are substituted once, so category names and formatting instructions do not become new template expressions. The original formatting instructions and single-class/discard directions are always appended, including when the custom template already contains formatting instructions. Unknown template variables and dynamic prompt expressions require migration.

Connect one admitted OpenAI chat model using ai_languageModel or ai_languageModel:0 and select an authorized native saved account for the Classifier. Imported account references confer no authority. Deployment requires that provider, model and target account in the approved inventory. Saving the account preserves the Classifier settings without adding Agent prompts, planning, tools or memory.

This profile supports a single linear path; branches, joins, disconnected paths, Loop and Parallel require migration. Each input item makes one model call, with the original category prompt and boolean JSON parser. A true category keeps the original JSON and binary metadata; false discards the item. If no items remain, downstream nodes do not execute. A disabled original Classifier passes its input through without inference. Empty, missing, null, numeric zero and boolean false text fail before that item's call; whitespace and the strings "0" and "false" retain their original behavior.

Accepted items retain their order and serialize pairedItem: { item: originalIndex }. This does not certify the original runtime's general item-link resolution or binary streams. Responses may be JSON or a JSON markdown code block; the selected category must be a boolean. Extra response fields never replace workflow data. Invalid responses fail with a bounded error rather than exposing raw model text.

The native node budget applies across its items. Every completed response's actual token usage is recorded separately, including when parsing, cancellation, later-item validation or authority checks subsequently fail. Missing or invalid usage receipts fail accounting instead of inventing token counts. Current actor, organization, account authorization, account secret and model/source revisions are rechecked at dispatch. Revocation prevents a new call; an already completed charge remains recorded. Approval-waiting model continuation and automatic format repair are outside this profile.

HTTP Request tools connected to an Agent

An imported n8n-nodes-base.httpRequestTool connects to an Agent through its ai_tool connection. Keep this connection separate from the ordinary workflow path. The tool is available to the Agent; it does not run merely because it appears on the canvas. Disabled tools are not available. The original disabled flag is preserved when importing, saving and reopening these Agent tools.

Confirmed tool execution carries both workflow cancellation and its own deadline into HTTP, saved child workflows, utilities and MCP. Cancellation stops further requests, aborts active transports, terminates Calculator's worker and stops Wikipedia's remaining extracts. An external action already accepted by its server can still have an indeterminate outcome; check that action before repeating it.

In the HTTP block, review the URL, method, headers, request body and selected account before running. Complete parameter expressions such as {{ $fromAI('query', 'Record to find', 'string') }} let the model supply a value. String, number, boolean and nonempty JSON values are supported, with optional typed defaults. JSON headers and bodies preserve their value types and escaping. General JavaScript inside $fromAI expressions and dynamic query parameter names need manual repair. Model-supplied values containing workflow template delimiters ({{ or }}) are refused before HTTP dispatch. A string that combines model substitutions with another workflow expression, or assembles template delimiters after substitution, is also refused. Keep trusted account expressions in separate fields; repair nested or mixed expressions before running. Raw literal defaults retain their text, while static URL query text uses standard query decoding (+ means a space; %2B means an actual plus sign).

GET tools run only when selected by the model. If the URL does not fix the destination host, GET calls also wait for Agent approval. POST, PUT, PATCH and DELETE tools require a separate Agent approval before sending. Approval of an ordinary workflow run does not approve these tool calls. If the active URL, body, headers or selected account changes while approval is waiting, the call stops without sending or consuming that approval. Review the current configuration and request a fresh Agent approval. A scalar body preserves 0 or false; a tool with no configured body does not send the output of the preceding step as an implicit request body. The Agent runtime must support model-selected tools; the legacy runtime refuses this connection instead of eagerly executing it. Other provider Tool and human-in-the-loop aliases retain their own migration requirements; this HTTP adapter does not add their behavior.

Legacy HTTP Request Tool versions 1 and 1.1

The older @n8n/n8n-nodes-langchain.toolHttpRequest uses plain placeholders such as https://example.test/records/{record}. It shares the Agent connection, disabled-state and separate approval rules above. Imported configuration projects the active URL, method, query, headers, body, placeholder definitions and modes into the HTTP block; the retained original parameter snapshot does not execute or override subsequent edits.

Query, header and body sections can use required or optional model keypairs, fixed values containing placeholders, JSON templates, or a whole model-supplied object (qs, headers or body). Version 1.1 checks string, number, boolean and JSON object arguments; empty objects are accepted. Version 1 accepts its historical stringified JSON input, with a plain string fallback when exactly one argument is used. The Agent's security rules still apply: whole model-supplied header maps and sensitive argument names can be refused. Configure fixed headers or ordinary named keypairs instead; saved credentials remain selected by the workflow editor. Model arguments cannot select a saved account or become workflow expressions. With authentication enabled, a placeholder in the destination hostname is refused. Supported versions 1 and 1.1 both appear in the Agent's connected operation picker. Inspecting that catalog grants no execution authority: version 1 still requires server-side argument validation.

Review Config JSON when repairing an import. legacyHttpToolDefinitions is the JSON array of placeholder names, types and descriptions. legacyHttpToolQueryMode, legacyHttpToolHeadersMode and legacyHttpToolBodyMode select none, keypair, json or model; the corresponding active fields are queryParameters, headers and body. A keypair field contains a JSON array of entries with name, valueProvider (modelRequired, modelOptional or fieldValue) and an optional fixed text value. Original fixed values such as "0" and "false" remain text. A numeric 0 or boolean false in a fixed keypair is refused before approval; use JSON mode to preserve typed constants. Empty fixed text is omitted, as in the original node. JSON mode contains an object template. Clearing an active field removes its old contents. Editing an empty disabled section to a JSON object activates that current section; changing the original snapshot does not repair the active configuration.

The legacy adapter retains the original whole-URL encodeURI step after placeholder substitution. Existing percent escapes are encoded again: a literal %2F becomes %252F, and %20 becomes %2520, including in query values. Verify the resulting URL during migration. Use the modern HTTP Request Tool and migrate its parameters if you need different encoding behavior.

Credentials are not copied from n8n. Select a supported saved HTTP header, HTTP Basic or OpenAI account; Basic authentication needs the native saved account representation, not an imported username/password pair. Saved authentication headers take precedence over model-supplied headers. Other legacy authentication modes require manual migration before execution.

Response optimization for HTML, text and JSON is still pending: imports with optimization enabled are refused rather than silently ignoring that setting. Turn optimization off and handle the response in a separate supported step, or replace the tool. Without optimization, the Agent receives the response body as text (objects become formatted JSON). JSON templates must remain valid JSON after substitution; malformed JSON that depended on n8n's repair behavior, nested query/header transport values, binary responses and general configuration expressions require manual repair. Failed requests use Confluye's Agent tool error handling; this is not a complete copy of the legacy node's error strings or response optimizer. Verify the selected account and external service after migration.

Think, Calculator and Wikipedia tools

The original Think versions 1 and 1.1, Calculator version 1 and Wikipedia version 1 import as Agent utilities. Connect their ai_tool output to the Agent, without an ordinary incoming or outgoing workflow connection. They run only when selected by the V2 Agent runtime; disabled tools are unavailable. Remove ordinary connections or reconnect the tool if validation reports ai_tool. Other versions need manual migration. Each tool receives one string argument named input and records its result in the Agent tool history under workflow.utility.<node-id>.

Think returns the supplied thought unchanged, including text that resembles a workflow expression. It makes no network request. Think and Calculator declare no external effect in governed versions; Wikipedia declares a GET external read. Existing versions reviewed under a different effect contract need a newly reviewed successor before live use. Review Think's configurable description before running. Its original reference name is thinking_tool in version 1; version 1.1 uses the node name with unsupported characters replaced by underscores. Descriptions may render workflow input templates. Resolved saved-secret values are redacted before available-tool metadata reaches the model, including when a tool is never selected. Authored source definitions are retained; runtime metadata and outputs use the redacted values.

Calculator uses math-expression-evaluator 2.0.7, within the original community tool's declared 2.x dependency range. For example, 99+99, 2^3+3! and root(16) return 198, 14 and 4. This parser does not evaluate JavaScript; sqrt(16) and invalid mathematics return I don't know how to do that. The same response applies to inputs over 8 KiB or calculations exceeding the isolated worker's two-second budget. Shorten the expression when that happens.

Wikipedia needs live HTTP transport and reads only https://en.wikipedia.org/w/api.php, without an account or authorization header. It searches the supplied string, reads extracts for up to the first three results in order, joins their page titles and summaries, and limits the result to 4,000 characters. Each request rechecks current run authority. An empty result returns No good Wikipedia Search Result was found. HTTP errors stop that tool call; unavailable live transport is reported as an error. This does not add arbitrary web search or other language editions.

SearXNG search Tool version 1

Exact @n8n/n8n-nodes-langchain.toolSearXng version 1 imports as an HTTP Tool. Connect its ai_tool output to the V2 Agent; ordinary connections and the legacy eager Agent runtime are refused. It runs only when the model selects workflow.tool.<node-id>, with one string argument named input. Disabled or unused tools make no request.

Set the current URL to the literal instance base URL, without a query, fragment, embedded login or workflow expression. A final slash is optional; an instance path such as /searx/ is preserved and joined to /search with one separator. The original exported credential reference does not select or authorize a local endpoint. Leave authentication as none, or explicitly select one existing saved HTTP Header or Basic account with verified metadata. Provider login, credential acquisition and the upstream SEARXNG_API_BASE environment override are not imported. Current edits take precedence over the original parameter snapshot. In Config JSON, searxngOptions supports numResults, pageNumber, language and safesearch (0, 1 or 2); defaults are 10 results, page 1 and safe search 0.

The original transport sends a POST to <base-url>/search, with the query and options in its URL, JSON headers, a five-second timeout and no request body. The workflow input is never used as a body. Each selected request requires explicit approval and current run/account authority. A changed endpoint, configuration or selected account invalidates the old approval. Native HTTP egress and DNS guards apply. Redirects are refused so saved account headers stay at the explicitly selected destination; configure the direct instance URL. Internal instances require an operator-approved egress allowlist. There is no live request when HTTP transport is unavailable. Responses retain the native HTTP 32 MiB limit.

Results preserve the original adapter's order: comma-joined JSON objects containing title, link and snippet, limited by numResults; otherwise the first answer, first infobox with HTML tags removed, Suggestions: ..., or No good results found. The comma-joined result is not a JSON array. A zero result count yields empty text when the service returned results. Custom body, headers, query fields, integration bindings, retries, alternate timeouts, pagination and unlisted options require migration to a general HTTP Tool. The search response must be an object. JSON strings already decoded by native HTTP are refused; raw text from another content type is parsed once as JSON. Malformed or unsuccessful responses fail the tool call. Real instance authentication, DNS/TLS, provider responses and the matching-version Review walkthrough still require separate verification.

Synchronous JavaScript Code Tools

Code Tool versions 1, 1.1, 1.2 and 1.3 have a bounded JavaScript profile when Specify Input Schema is off. Connect the imported source to a V2 Agent through ai_tool. Its owner-saved JavaScript runs only when that Agent selects the source operation. A normal main-flow connection requires migration to an ordinary Code block. The platform's existing isolated JavaScript opt-in and a ready Linux sandbox are required before the Agent runs; import does not enable either setting.

The tool accepts only { input?: string }. The code sees that string as query, or undefined when input is omitted. JSON-looking strings and workflow-expression syntax remain literal data. The model cannot supply source code, accounts, schema or execution settings. Prior workflow outputs, credentials and application environment are not supplied to this worker. Native current-actor/source permissions, Agent policy, budgets and output guards still apply. A source revision or permission change while queued is refused before execution.

The result must be a string or number. Numbers become strings, including NaN and Infinity. Other return types produce There was an error: "Wrong output type returned" and a failed tool record. Ordinary code exceptions return a fixed error message rather than exposing exception text that could quote private data. Promises, async behavior, timeout, cancellation and isolation failures remain failed calls. The sandbox grants no filesystem, network, module or subprocess access.

Python, schema-enabled input, workflow/static state and authenticated helpers require migration; this profile does not provide full Code Tool parity. Keep imported credential references inert and remove them from the active profile before use. Disabled tools are unavailable. Versions 1 and 1.1 retain the configured tool name; versions 1.2 and 1.3 derive it from the node label. Policy selection always uses the saved source ID. Real-provider model behavior and a synthetic organization walkthrough in Review still require separate verification.

Known saved secret values are redacted from Code Tool descriptions before they enter model prompts and tool schemas, even when the tool is not selected. Authored code and descriptions remain literal in the workflow definition; template-looking text in this description is not evaluated.

Restrict the Agent's tool operations

In the Agent's policy settings, Restrict to selected tool operations lists the supported imported tools connected to that Agent: HTTP tools, SearXNG searches, Think, Calculator, Wikipedia, saved Workflow Tools, synchronous Code Tools, pinned MCP descriptors and its active Structured or Item List Output Parser formatter. The choices come from the actual workflow connections and active configuration. A disconnected, disabled or unsupported imported source is unavailable; turning on an output-parser option alone adds no tool.

An imported source connected through ai_tool requires a supported tool profile. Validation names an unsupported source and stops the workflow before any step, model request or provider dispatch. These dependencies are excluded from ordinary execution order. Replace an unsupported tool with a supported configuration or remove its ai_tool connection before running. Ordinary native nodes connected through main keep their usual execution path.

Select the operations the Agent may call. A fixed-origin GET, the three utilities and the local formatter are eligible for a read-only policy. SearXNG uses POST and remains sensitive even for a search. Workflow calls, MCP tools and GET tools with a variable destination remain sensitive or mutating. When using the formatter with a restricted policy, select it along with any earlier tools. Saving and deployment validate the same graph-derived identities; an operation from another Agent or an obsolete selection is rejected.

Saved child workflows must be deployed in this workspace. Wait for the child-workflow list to load; use Try again if it cannot be loaded. MCP choices require the selected ready server and matching reviewed descriptor pins. A checkbox does not grant account access, MCP trust, workflow authority or tool approval. Current authority, schema and approval checks still run before execution. If a choice disappears after a configuration change, repair the connection and select its current operation.

Structured Output Parser connected to an Agent

The imported Structured Output Parser has a bounded profile for original version 1.3: Schema type: Manual, an explicit JSON Schema with an object root, and Auto-Fix: off. Connect its ai_outputParser output to one V2 Agent in single mode without ordinary incoming or outgoing flow connections. A disabled parser is unavailable. Set the Agent's hasOutputParser to false to leave its connected parser inactive.

The active configuration stores outputParserSchemaType, outputParserSchema, outputParserAutoFix and n8nTypeVersion. Correct these fields when an import needs repair; the retained original parameters do not override them. Supported schemas contain inline objects, arrays and scalar types, required, scalar enum, and boolean additionalProperties. An enum also enforces its declared scalar type: listing 1.5 in an integer enum does not make it a valid integer. Every required object field needs a corresponding inline property schema, including nested objects. Object and array enum constraints require manual migration. Descriptions are retained. Integer values must be safe integers. Schemas are limited to 128 KiB, 16 levels and 512 schema nodes. References, combinators, validation keywords outside that subset, example inference, other parser versions and Auto-Fix require manual migration. Item List Output Parser is not implemented by this profile.

The model must call format_final_json_response once, alone, after any earlier tools finish. A batch containing the formatter together with another tool, or several formatter calls, is rejected in full before any tool in that batch runs. It receives the required { "output": ... } wrapper and ends the Agent loop locally after schema validation, within the same tool policy, step budget, ledger and output guards as other Agent calls. For a schema with state and cities, the resulting json and each output item's json contain { "output": { "state": "California", "cities": ["Los Angeles"] } }. Only a double sole-output wrapper is collapsed by one level. With declared properties, omitting additionalProperties strips unknown fields; false rejects them and true retains them. A free-form final answer cannot substitute for the formatter in this profile.

An authorized GET tool can run in an earlier iteration. Tools requiring a waiting approval cannot be combined with this parser yet: the run stops before creating or consuming confirmation and before sending that tool's request. Remove the parser or use tools that do not require approval, then request a fresh run. Adding the parser to an already waiting Agent also stops its resume without consuming approval or sending the pending request. Live model behavior and the Review tutorial walkthrough remain unverified until exercised in that environment.

MCP Client tools connected to an Agent

Exact @n8n/n8n-nodes-langchain.mcpClientTool versions 1, 1.1 and 1.2 import as an MCP Tool block connected through ai_tool. This connection offers tools to the V2 Agent; it does not run them in the ordinary workflow path. Disabled sources and disabled server tools are unavailable. Ordinary main connections and the legacy eager Agent runtime are refused.

The original endpoint, authentication parameters and credential references remain available for comparison. Import does not connect to that endpoint, copy credentials into a live connection or approve a server. In the MCP block, explicitly select an existing enabled HTTP or SSE server in this workspace, discover its tools and review their schemas. Reauthentication must be completed first. Select the exact tool and its current descriptor/schema hash. A changed or missing hash stops the call until you reconcile and select the reviewed tool again.

The active configuration preserves the original all, selected and except filter modes as mcpIncludeMode, mcpIncludeTools and mcpExcludeTools. As in n8n, an empty selected list means all available tools. For a toolkit containing more than one tool, use the block's JSON configuration to pin every tool you are making available in mcpToolSchemaHashes, keyed by serverId:exactToolName. A newly discovered unpinned tool stops an all or empty-selected selection; it is never silently approved. The single-tool picker stores toolName, descriptorId and schemaHash for one tool. Overlapping tool selections must be separated to avoid ambiguous operation names.

Set mcpTimeoutMs explicitly from 1 to 55000 milliseconds in the active configuration. The n8n 60000-millisecond default is retained on import and requires repair because it exceeds the native Agent budget. Expressions in tool filters, unknown options, unsupported versions and schemas that cannot be represented by the Agent require manual repair. Editing the retained n8nParameters snapshot does not repair the active configuration.

Only a tool selected by the model can run. Its arguments must match the current discovered schema; workflow input, prompt fields and saved templates are not added to those arguments. MCP output remains untrusted. An approval binds the current saved server endpoint/headers, tool schema and active source. Changing these while a call waits requires a new approval; the old approval is not consumed and no MCP request is sent. Calls keep the native Agent permission, confirmation, product-trust and replay protections; an ordinary workflow-run approval does not approve an MCP tool call. Direct main-flow MCP Client execution, n8n credential authentication and stdio transport are not provided by this import adapter.

Workflow Tools connected to an Agent

@n8n/n8n-nodes-langchain.toolWorkflow can call a saved, deployed workflow in the same workspace through ai_tool. It stays outside the ordinary execution path and is unavailable when disabled. Historical imports that classified this source as another Agent must be safely reimported; they are refused instead of starting an extra model call. Select the saved child explicitly; an imported n8n ID only helps resolve a reference and never grants execution permission. A missing ID is not replaced with a guess from the tool's label.

Every selected call requires a separate Agent approval before the child starts, including calls whose child appears to be read-only. The approval binds the saved child, its deployed version and the active input configuration. A changed child version invalidates the old approval; start a new call and review it again. The child runs with the persisted principal and organization through the normal workflow execution path. Existing resource restrictions, child activation requirements, depth limits and ledger protection continue to apply.

Versions 1, 1.1, 1.2 and 1.3 support the unstructured query contract and flat literal extra inputs with string, number, boolean, array or object values. Custom legacy JSON/example input schemas, nested extra field paths and extra-field expressions require manual migration. Versions 2, 2.1 and 2.2 can map literal $fromAI parameters from their active Workflow Inputs, with typed string, number, boolean and nonempty JSON arguments. Unsupported mapping modes and enabled type-conversion options are refused, including when the mapping schema is empty. Inputs marked as removed are excluded by their canonical field ID before model arguments are derived and before the child receives its payload; a display label does not identify a mapping key. The original whole-child retry-on-failure setting also requires manual migration. The original response distinction is retained: version 2 and earlier return the first JSON item; versions 2.1 and 2.2 return all JSON items from the child's first output as formatted JSON text.

In Config JSON, review workflowToolMappingSchema, workflowToolInputMappings, workflowToolMappingMode, workflowToolInputOptions and workflowToolExtraInputs. A nonempty current input object replaces the complete child-input payload; an empty object ({}) leaves the query, configured mappings and extra inputs in use. The archived n8nParameters snapshot cannot override these edits. Model values cannot supply trusted workflow expressions, choose another saved child or alter the approved revision. Delimiters assembled by concatenating individually literal model values are also refused before the child is created.

Inline source: "parameter" workflow JSON is refused. Import that JSON through the normal safe import flow, repair its blockers, deploy it and then select it as the saved child. The child must finish in the call: native durable waits inside a child are not supported by this adapter. Missing results and child failures use native Agent error handling; the original LangChain callback metadata, error strings, custom schema conversion and mapping-option discovery are not a complete runtime clone. Test the actual child and provider in Review after migration.

File triggers

Form Trigger 2.6 imports formFields.values, effective field names, required state, multiple-file selection and accepted extensions. Webhook 2.2 preserves options.binaryData and options.binaryPropertyName. One submission remains one item with multiple binary properties. File descriptors refer to scanned Workspace Files rather than embedding new bytes in workflow JSON.

Unsupported form field types, custom responses, authentication, multi-page forms and combined binary mode appear in import readiness. Resolve those incompatibilities before execution. Imported forms default to workspace members; publishing a public form requires an explicit access change. See receiving files for the three entry paths.

Sub-workflows

Execute Workflow nodes become workflowCall. Importing a bundle resolves calls after all imported workflows have their local IDs; an individual import resolves children already available in the workspace. Known targets are linked to their local ID and name. If no entry is explicitly configured, the call uses the child's current entry nodes; a sole entry is suggested in the editor. Original n8n IDs remain in the import metadata. References without an available child remain pending and block deployment; import the child JSON or select it through Called workflow in the node editor. Matching is restricted to the current workspace. Ambiguous names and unavailable explicit IDs are not replaced with a name match. Mapping expressions in workflow and entry references are preserved.

Edited ID and name references take precedence over the archived original references, including when an ID is cleared and a new name is configured. Historical imports without configured references still use their original metadata. Clearing both references requires selecting a target before deployment.

A bundle with duplicate source IDs, or source IDs matching multiple existing workflows, is rejected before import. Remove duplicate entries or correct their source IDs before retrying; ambiguous matches do not create another copy. Distinct source IDs can be aliases of the same existing workflow. A bundle with two exports targeting that same workflow is also rejected before any changes; keep one export per destination. Linking imported workflows and repairing existing callers use their current saved graphs, preserving other edits and node positions. An imported workflow or caller with active live collaboration must end that session before its references can be repaired; the child may already have been imported, so retry after the session ends. Replacing an imported child returns its existing callers to draft for revalidation. An explicit entry ID that no longer exists stays visible and blocks deployment until you choose a valid entry or All entry nodes. Older imports that already stored an entry ID retain it; the system cannot distinguish an earlier automatic selection from a user selection. For mapped workflow references, readiness checks possible child dependencies within the workspace before deployment.

POST /api/v1/workflows with subWorkflowPlaceholder creates an empty child draft for an unresolved id. Bundle import reports bundleSubWorkflowStatus per parent. Reconstructed fallback children (when original JSON was missing) still need a later original-export import via /api/v1/workers/n8n/subflows/import-originals.

Credentials and code

Import does not copy n8n credential secrets. It records names/types and optional credentialBindings. Create workspace credentials, or:

  • POST /api/v1/workflows/{id}/credentials/bootstrap-from-env — per workflow, from server env
  • POST /api/v1/workers/n8n/credentials/bootstrap-from-env — workspace-wide for imported aliases (no secret values in the response)

For credential types that support testing, use POST /api/v1/workflows/{id}/credentials/test. Saving an account alone does not verify its connection.

Taiga and Twake ordinary imports retain their original type, version, parameter snapshot and credential references for repair. Select a supported existing account and explicitly migrate the action to schema 2 before execution. Taiga username/password login is not acquired automatically; use the existing manual bearer profile. Twake uses the historical n8n plugin workspace key and fixed plugin destination; Twake Server accounts are separate. Neither profile supports credential Test, login, refresh or option discovery. Tool and Trigger identities do not inherit ordinary-action support. Review Taiga migration and Twake migration, including null clears, update versions and one-request behavior.

For PocketBase, prefer the native PocketBase integration for new record operations. If an imported HTTP Request already signs in at PocketBase's auth-with-password endpoint, use its Readiness item to add a workflow credential for the password field. Confluye replaces that literal in the request body and imported parameter snapshot with a secret reference; the identity stays in the node, and the password is exchanged for a fresh response token at runtime. Later HTTP requests can use the response token through n8n $json.token, $('login').item.json.token, or $node["login"].json.token expressions. Do not paste the returned token into a saved credential.

Imported Code nodes stay disabled until the operator enables FLUXUS_ENABLE_WORKFLOW_CODE=true and the deployment reports the isolated Linux executor and its policy as available. Code and general JavaScript expressions then run in a fresh one-use child with serialized inputs, a 5-second Code wall/CPU budget, and bounded code, input, and output sizes. Intl time zones, Buffer, n8n input/output helpers, per-item execution, loops, and JSON normalization remain supported; asynchronous Promise results are not supported. The old FLUXUS_ALLOW_UNSAFE_WORKFLOW_CODE variable is ignored and never enables an unsafe backend. If the flag or policy is unavailable, fix or redeploy the operator environment; the application never falls back to its process. Inline secret-looking strings in code still block deploy. Convert trivial Code nodes to native array/join operations when the importer already did so.

Files from webhooks

An imported n8n Read/Write Files from Disk node expects a local disk writer. This cloud runtime currently prepares its file output without writing the bytes. A path such as /tmp/report.pdf is not a durable Workspace File, and importing the node does not upload or attach its bytes automatically. Replace that step using the recovery below to make the file available to a CLI step.

  1. Upload the original bytes to Workspace Files using the create, content upload, and complete steps in the Files API. Wait until the returned file has status: "ready"; quarantined or pending files cannot be read as attachments.
  2. Pass the ready fileId to the Claude Code or Codex CLI node as workflow input. Attach an authorized Confluye MCP server that provides files.read, and instruct the CLI to read that file ID. files.read returns bounded chunks; binary file content is base64 encoded. The CLI integration does not turn a webhook binary or a local path into an attachment by itself.
  3. For PDF or DOCX content that should be searchable as text, use the Knowledge Document lifecycle to create a text document after extracting the content. Workspace Files storage alone does not index a file as Knowledge Base text.

See Workspace Files for availability, scanning, size limits, and upload status details.

Live side-effect transports (WORKFLOW_LIVE_* / workspace liveTransports) still apply after import. Dry-run and the n8n smoke test do not execute those external writes.

Operator checks

  1. Preview JSON; read setupChecklist and unsupportedNodeRequirements.
  2. Import bundle or originals; confirm placeholders are gone (GET .../validate).
  3. Connect or reselect the required saved accounts. Bootstrap only supported credential types, and use Test only when available. X and PayPal require an existing manually supplied token; saving them leaves the connection unverified.
  4. POST /api/v1/workers/n8n/smoke-test with optional bundlePath, useQueue, waitForWorkerMs. HTTP 200 = passed, 202 = attention (readiness leftovers or queued run still waiting), 500 = failed. The audit does not run the imported graph’s live side effects.

/api/v1/workers/luminai/* mirrors the n8n worker routes for the same bundle tooling.

Limitations

  • Not every n8n node type has a native executor. Unknown types are function shells or unsupported flags.
  • Expression conversion is best-effort. Nested n8n expressions can remain invalid.
  • Wait until dates and rich webhook Wait options are not fully reconstructed.
  • Response headers from n8n are not imported (headers: {}).
  • Bundle upsert keys off original n8n workflow ids. Portable JSON without those markers will not merge into the same rows.
  • In-memory platform store (DATABASE_URL unset) loses imported workflows on process restart.

Next steps

Telegram and KoBo explicit repair

Ordinary imports retain their original type, numeric version, parameters and credential references. Repair the node to schema 2 and explicitly select a supported saved account before execution. Telegram requires wireMigrationAcknowledged and the retained sourceVersion; KoBo requires migrationAcknowledged and rawRetentionAcknowledged. Unsupported, hidden or nested source values remain in the ledger and refuse execution until repaired.

Telegram custom/local server profiles require separate migration; the ordinary public-token profile does not acquire tokens or register triggers. KoBo source getAll becomes an explicitly acknowledged, bounded List page, without automatic continuation or completeness. Its legacy origin normalization also requires account reselection. Binary transfer, Tool/HitlTool/Trigger aliases and Telegram sendAndWait do not inherit ordinary support. See Telegram migration and KoBo migration.

AWS Comprehend, SNS and SES imports

Ordinary numeric-version-1 awsComprehend, awsSns and awsSes imports retain original parameters and credential references for explicit schema-2 repair and account reselection. Acknowledge migration and raw response retention. SES list actions require one bounded page, returnAll:false and boundedPageAcknowledged:true; each continuation token requires a new approved request. Custom verification updates use failureRedirectionURL and fromEmailAddress; template HtmlPart follows its own presence, including HTML-only updates. SNS FIFO create/delete remain available; FIFO publish is refused because the ordinary source has no MessageGroupId. Original Tool/Trigger variants, binary attachments, raw MIME, hidden pickers and implicit pagination are unsupported. See the exact operations and limits.

HaloPSA repair and protected exports

Ordinary n8n-nodes-base.haloPSA numeric version 1 requires explicit schema-2 repair and saved-account reselection. Source selectors, visibility and non-secret original values remain available for repair; unknown or inactive fields cannot pass through as arbitrary API fields. Enter IDs and one-page controls manually. Ticket active-status input has no current contract mapping and must be removed explicitly. Plaintext passwords in ordinary or serialized workflow input are refused before persistence; use an encrypted account password reference instead. Portable exports omit protected names, notes, ticket bodies and personal data, so re-enter required content after reimport. See HaloPSA setup.

GoToWebinar repair and exact IDs

Import ordinary n8n-nodes-base.goToWebinar numeric version 1, then reselect an existing manual account and explicitly repair schema 2. Original non-secret source selectors, parameters, credential references and unsupported/inactive values remain available for repair; they do not authorize execution. Tool/Trigger variants and implicit version conversion are unsupported. Expressions stay inert until the workflow resolves them. Enter manual IDs and explicit page/date controls; there is no hidden lookup.

Raw int64 tokens retain all digits through import and Advanced JSON save/reopen, including mixed workflows with KoBo, Taiga, Twake, Twist, HaloPSA, Okta and SyncroMSP. Companion nodes still refuse numeric precision loss and duplicate keys. Import/export refuses inline token, password and join-link fields, including embedded source ledgers, before persistence. Review the source aliases and complete PUT definition; sequence recurrence requires an unresolved contract and is refused. See GoToWebinar setup.

FileMaker repair and source ledgers

Import requires exact ordinary n8n-nodes-base.filemaker with numeric typeVersion:1. Preserve the original fileMaker credential reference and full node/parameter/version ledger, then explicitly select the manual-session account, schema 2, layout schema and acknowledgments. Missing IDs, unsupported response layouts, unknown or disabled-but-present controls require repair. Expressions remain unresolved source text and are never evaluated during import. Version 2, vLatest and username/password session acquisition are unsupported.

Save/export/reimport retains authored fields and original ledgers, so exports may include personal field values, query/script arguments or other business data. Raw or portable JSON import/export refuses inline credentials and non-reference credential fields in the FileMaker source ledgers. Existing credential ID/name references, normalized binding metadata and legacy labels remain supported. Credential secrets are not exported. A successful import or Save verifies neither the service, schema, session nor permissions. See migration details.

Bitwarden explicit organization-session migration

Import accepts exact ordinary n8n-nodes-base.bitwarden with numeric typeVersion:1. Tool/Trigger variants and implicit other-version conversion are unsupported. The complete original node/resource/operation/parameter tree, aliases, defaults, unknown/inactive fields, expressions and non-secret credential references remain in the repair ledger. Import does not grant execution authority.

Reselect a supported saved organization session, explicitly repair schema 2 and choose each acknowledgment. Expressions remain unresolved source text until materialized as admitted literals; disabled/unknown fields cannot become arbitrary API arguments. Unsafe embedded tokens, passwords or client secrets refuse before persistence. Saved credentials belong in the encrypted account store, not workflow JSON.

collection.update, group.create, group.update, member.create and member.update remain blocked because legacy fields/current models or hidden-read behavior conflict. The fourteen implemented actions are a bounded subset, rather than complete node parity. See inputs, data and effects.

Cortex and n8n software Public API migration

Only ordinary numeric typeVersion 1 is supported: Cortex job.get/job.report and n8n software Public API credential.getSchema, execution.get, execution.getAll, workflow.get, workflow.getAll, audit.generate, credential.delete, execution.delete and workflow.delete. Tool/Trigger/unknown versions, Cortex analyzer/responder, credential creation and workflow create/update/activate/deactivate/getVersion remain unsupported; this is not full-node parity.

Preserve and review the original source/resource/operation/defaults/locators and unknown controls in the source-intent ledgers. Explicitly migrate to schema 2, manually repair IDs, reselect the typed saved account and deliberately set every unchecked acknowledgment. Cortex job IDs remain manual; do not silently reinterpret analyzer ID::name selectors. n8n ID/URL locators extract a manual ID locally, while list locators require repair without enumeration. Workflow resource and workflow/execution operation omissions retain their original workflow/getAll meaning in the ledger; an audit default get is refused, never inferred generate. Original includeData and output omissions require explicit narrower migration.

Raw inline credential material, credential-create data and extra values beyond original credential id/name references are refused before ledger persistence, including unsupported source actions. Safe original id/name references, local credentialId/credentialType/legacyName bindings and bounded literal business JSON remain supported. Replace raw secrets locally with the existing encrypted account before import; they are never silently stripped or retained. Import/save/serialize/reopen/reimport preserves repair information and grants no provider approval. See exact action controls.

n8n destructive Public API actions

The selected n8n Public API subset now has nine ordinary actions. Delete a credential (credential.delete, n8n_public_api_credential_delete), Delete an execution (execution.delete, n8n_public_api_execution_delete) and Delete a workflow (workflow.delete, n8n_public_api_workflow_delete) each send one destructive WRITE: DELETE /credentials/<credentialId>, /executions/<executionId> or /workflows/<workflowId>, prefixed by the saved API root. There is no query or body. Credential/workflow IDs are explicit 1–256 ASCII letters, digits, underscore or hyphen; execution IDs are positive safe decimal strings. No collection, wildcard or returned URL becomes a deletion target.

The existing encrypted manual API-key profile and unverified instance edition/version/scopes/entitlement/free-trial prerequisites still apply. All three require the initially unset schema-2 migration, raw-retention and one-attempt controls plus destructiveAcknowledged:true, then a separate original-actor Human Task showing the saved account, origin/root, exact DELETE path and named resource ID. Imported string "true", 1, null and invalid objects remain visible and unchecked until explicitly repaired; opening or saving another field never grants consent. Current workspace and organization authority, policy/account revision, original taskId and waitTokenId, immutable request and lease/claim/CAS checks still apply, including later authenticated OUTPUT.

A genuinely empty HTTP204 or HTTP200 response maps to data:{resource,id,response:"empty"}, with zero examined/returned records and outcomeVerified:false; it observes a response and does not prove deletion. HTTP200 expected metadata maps to response:"metadata" and bounded metadata, with an exactly matching target ID. Credential metadata is only id/name/type; execution data omits runData/workflowData/customData; workflow data omits parameters/settings/pinnedData/connections/credential references. JSON null, whitespace, malformed/unexpected bodies, wrong IDs and other statuses are withheld. There is no deleted:true, automatic readback, paging, polling, retry or uncertain-effect replay. Map node.<id>.json.data.id, .response or available .metadata.name/.status; names and IDs may contain PII retained in ordinary history and downstream mappings, without a new raw-database encryption, TTL/deletion or scanner guarantee.

Real deletion effects, provider authentication, durable DB/Redis, native DNS/TLS and matching-revision Review remain untested. Use only separately authorized disposable resources for live verification; existing credentials, workflows and executions are not test targets. Credential create, workflow create/update/activate/deactivate/getVersion and Tool/Trigger remain unavailable; nine actions do not establish full-node parity.

AWS Transcribe job requests and metadata

The partial AWS Transcribe subset supports four ordinary numeric-version-1 actions: transcribe.transcriptionJob.create, transcribe.transcriptionJob.delete, transcribe.transcriptionJob.get and transcribe.transcriptionJob.getAll. Transcript downloading, simplification, automatic language detection, unbounded pagination and Tool/Trigger forms are unsupported. This is partial service coverage, not full-node or provider parity.

Save an existing awsTranscribeManualSigV4V1 account with profile aws-transcribe-manual-sigv4-v1, partition aws, one of twenty pinned standard regions, declared twelve-digit account ID and manual access keys. Named fields and Advanced JSON use the same encrypted, write-only account. manual-static omits token and expiry; manual-temporary requires an explicitly supplied session token and actual UTC expiry, with more than ninety seconds remaining at execution. Save/update/reopen is local and unverified with zero provider HTTP/DNS. Test and bulk Test are unavailable. No ambient/system/role credentials, STS acquisition, refresh, discovery or custom endpoints are used. The declared account does not prove AWS identity.

Import exact n8n-nodes-base.awsTranscribe with numeric typeVersion:1, preserve original parameters and credential references, and repair the schema-2 input deliberately. Select the exact saved account and set the initially unset migrationAcknowledged:true and rawRetentionAcknowledged:true controls. Imported strings such as "true", numbers and null remain invalid, unchecked and preserved until an explicit click or repair. Unknown and inactive fields remain repair items; embedded credentials are refused before source-ledger persistence. Original get defaults to returnTranscript:true; that intent is unsupported and is never silently converted to metadata.

Create requires an explicit unique transcriptionJobName, authorized same-region s3://bucket/key media URI, mediaFormat, detectLanguage:false, supported languageCode and an explicit options object. The original v1 node has no media-format field, so imports require manual format selection. Supported original settings include channel identification, maximum alternatives/speaker labels (2–10), vocabulary name and a complete vocabulary-filter name/method pair. Channel identification cannot combine with speaker labels. Deliberately set the initially unset processingAcknowledged:true: AWS obtains the authorized media, processes speech, may charge costs and retains job/transcript data under its policies; the app never fetches the media URI. A QUEUED or IN_PROGRESS result remains pending. No polling or completed-transcription claim follows submission.

Delete requires the explicit job name and initially unset destructiveAcknowledged:true, then a separate original-actor Human Task showing the exact AWS request. An actual empty HTTP200 body yields empty operationData:{} with responseReceived:true and outcomeVerified:false. It is response evidence only; job deletion completion and transcript object removal are not verified. There is no fabricated success:true, hidden readback or automatic resend.

Get requires returnTranscript:false explicitly. It returns bounded typed job/status/time/media/transcript-location metadata in operationData. Transcript locations remain inert JSON strings, including on COMPLETED jobs: the app never fetches a provider-returned URI or simplifies a transcript. Get All requires explicit returnAll:false, limit 1–100, filters:{} or supported original status/name filters, and boundedPageAcknowledged:true. It returns one partial page envelope with TranscriptionJobSummaries and any actual top-level NextToken. Copy that token into nextToken only for a separate manually approved next request. A short or empty page does not prove exhaustive inventory; the original broken unbounded paginator is not reproduced.

Only the original run actor can approve the exact request within fifteen minutes. Current workspace and organization authority, selected account, published node/version, run input, resolved request, original task ID, wait token, stable durable decision and execution lease are checked through claim, dispatch, settlement and fresh OUTPUT. Replacement never renews consent. One claim permits at most one physical attempt despite workflow retries; timeout, revocation, disconnect, expired lease or uncertain settlement cannot authorize resend. Same-lineage failure cleanup grants no new authority and remains fenced by the real lease.

Local limits are 16 KiB request, 1 MiB whole response, thirty seconds, depth32/nodes20000 and strict unknown-field refusal. Malformed, oversized, unexpected, numerically mistyped or credential-reflecting responses fail closed. Useful job metadata, names and media/transcript locations enter ordinary workflow/checkpoint/Human history and may reach downstream AI. Accepted raw response bytes use the existing encrypted protected Workspace Files mechanism; this adds no raw-database encryption, automatic TTL, plaintext-scanner or deletion guarantee.

En español: selecciona una cuenta manual existente y la acción exacta. Corrige los campos importados y marca cada confirmación deliberadamente. AWS obtiene el archivo autorizado; la aplicación no descarga archivos ni transcripciones. Los trabajos pendientes siguen pendientes, eliminar solo acredita la respuesta y listar devuelve una página parcial con un token manual. Los metadatos y sus ubicaciones pueden conservarse en el historial y llegar a la IA posterior.

Local tests simulate provider/Prisma facts and use actual public resume, Human Task, checkpoint and output owners. Real AWS authentication/permissions/effects, native DNS/TLS, DB/Redis restart, real AI request interpretation and Review workspace/organization Help walkthroughs remain untested because those external environments and credentials are outside this worker's authority. See the official StartTranscriptionJob, DeleteTranscriptionJob, GetTranscriptionJob and ListTranscriptionJobs contracts.

AWS Certificate Manager migration

Import exact ordinary awsCertificateManager numeric version 1, reselect awsAcmManualSigV4V1 and explicitly repair schema2 plus all unset acknowledgments. Nested original filters remain available; Return All, hidden/unsupported values and unused S3 delete fields require manual repair. Embedded credentials refuse before source-ledger persistence. String true is not consent. See the five actions, examples and migration boundaries.

DynamoDB typed items

Import ordinary awsDynamoDb numeric version1. Preserve original raw parameters/types/references, reselect awsDynamoDbManualSigV4V1 and deliberately repair typed schema2 input. Automatic mapping, simplified decoding, Return All and unsupported legacy options stay visible repair items. Migration, raw retention and one attempt require unset-to-literal-true consent; PutItem full replacement and Delete require their own effect consent plus separate original-actor Human approval. String true,1,null never coerce. See typed requests, examples and limits.

AWS ELB ordinary actions

Import exact ordinary n8n-nodes-base.awsElb, numeric typeVersion1. Its seven action branches retain original parameters and credential references in awsSourceLedger, including unsupported or inactive filters and IAM certificate ARNs. Reselect awsElbManualSigV4V1 and explicitly repair schema2 consents; imported string true, 1, null and objects remain unchecked through serialize/reopen/reimport. Embedded credential controls are refused before persistence. Original load-balancer filters.names is active only for unsupported Return All: do not silently drop it or query broader inventory. See actions, controls, limits and repair policy. Real AWS effects, native transport, durable DB/Redis and matching Review tutorials remain untested.

AWS Cognito User Pools import repair

Import only exact n8n-nodes-base.awsCognito with numeric typeVersion:1 and an explicit supported resource/operation. Original node identity, parameters and credential references remain in awsSourceLedger through edit, serialization, reopen and reimport; no generic AWS account or legacy user/sub locator is silently adopted. Reselect awsCognitoManualSigV4V1 and repair literal userPoolId/username/groupName, schema2 and initially unset consent controls. Original dynamic locators, simple/includeUsers, additionalFields.arn and nested/custom attribute forms are visible unsupported repair intent. Use roleArn → RoleArn and preserve precedence0; custom: is supplied exactly once. Embedded credentials and temporary passwords are refused before persistence. See all consequences and page controls.

AWS IAM identity and membership actions

The ordinary numeric-v1 IAM user/group subset covers twelve actions only. It uses the dedicated awsIamManualSigV4V1 account: profile aws-iam-manual-sigv4-v1, partition aws, signing region us-east-1, and fixed global https://iam.amazonaws.com/ over HTTPS443. Use named fields or Advanced JSON for manual static keys, or a supplied temporary token with its actual UTC expiry. Save and reopen are encrypted, write-only, local and unverified; Test is disabled. No ambient, system, role, metadata, STS, credential acquisition or refresh is used.

Exactly one requested Action is sent by form POST with Version 2010-05-08. Identity, access and membership changes require explicit acknowledgments and a separate original-actor Human confirmation. DeleteUser/DeleteGroup fail on provider dependencies; they never remove memberships, login profiles, MFA, policies or access keys implicitly. Membership add/remove are separate exact user/group operations. CreateUser supports path, tags and permissions boundary; updates support path and rename only. No policy, role, access-key or login-password CRUD is added. HTTP200 is provider response evidence, never verified effect completion.

Lists require explicit returnAll: false, limit 1–1000 and bounded-page consent. GetGroup also pages Users; IsTruncated and opaque exact Marker remain visible even when Users are omitted. Continue only with another separately approved request. No automatic paging, membership scans, discovery, loaders, post-read, retries, returned-URL fetching or redirects. Original helper, returnAll and includeUsers semantics that cannot be preserved remain visible for manual repair; unknown fields and invalid consent types survive export/reopen. Embedded credentials are refused before source-ledger persistence.

Typed user/group identity, ARN, path, creation time, tags, boundary and explicitly selected membership data plus an exact raw reference enter ordinary run/checkpoint/Human history and may reach downstream AI. Account encryption adds no raw database encryption, automatic TTL or scanner guarantee. A bounded XML decoder rejects DTD, external/custom entities, duplicate or wrong envelopes, malformed members, unknown fields/status and credential reflection before retaining raw data. Current workspace and organization permissions, account, input, policy, immutable original task/wait/decision and lease are rechecked through claim, send, response, settlement and fresh OUTPUT. Uncertain or expired claims cannot resend. Local bounds: 32 KiB request, 1 MiB response, 30 seconds. Real AWS, hosted Review and full node/provider parity remain untested.

AWS S3 ordinary bucket subset

The partial ordinary S3 subset covers only s3.bucket.create, s3.bucket.delete, s3.bucket.getAll and s3.bucket.search: four of twelve actions, with exact numeric source V1/V2 imports analyzed separately. Search is ListObjectsV2 object metadata, not a bucket-name search. Object upload/download/copy/delete, folder deletion, multipart, Tool and Trigger remain unsupported.

Save awsS3BucketManualSigV4V1 / aws-s3-manual-sigv4-v1 with partition aws, an explicitly known us-east-1 or eu-west-1 region, declared twelve-digit account ID and manual static keys or supplied temporary token plus actual UTC expiry. Temporary execution needs over ninety seconds remaining. Named fields and Advanced JSON use encrypted, write-only, unverified local Save/update/reopen with zero provider HTTP/DNS. Test, bulk Test, STS, system/role chains, refresh, custom endpoints and discovery are unavailable.

Every request requires schema2 and initially unset migrationAcknowledged, rawRetentionAcknowledged, regionAcknowledged and billingAcknowledged, all literal true, plus action-specific consent. Raw string "true", 1, null and objects remain visible and unchecked until a deliberate click. Then a separate original-actor Human Task approves the exact request. Current workspace and organization access, account, node, input, policy, original task ID/wait token/stable decision and real execution lease are checked through the one durable claim, send, response, settlement and fresh OUTPUT. Expired or uncertain claims never replay.

Create requires name, additionalFields:{} (or a matching known region) and name/global-namespace/security/write acknowledgments. It sends one PUT: empty body for us-east-1, matching XML LocationConstraint elsewhere. Only provider secure defaults are supported; all original ACL/grant/ownership/tag/object-lock intent stays for explicit repair. HTTP200 empty body yields response evidence with effectConfirmed:false; Location remains inert manual metadata. Creating an existing owned us-east-1 bucket can reset ACLs under AWS behavior; inspect the exact name and permissions manually before approval.

Delete requires name, empty-bucket/global-namespace/destructive acknowledgments and sends one DELETE. The bucket must already be empty of objects, versions and delete markers; nothing enumerates or deletes them or changes protection/ownership. Only HTTP204 empty body is accepted as response evidence, never confirmed deletion. A deleted global name may be reused by another account.

ListBuckets (getAll) needs explicit returnAll:false, limit:1..1000, filters:{} and boundedPageAcknowledged:true. This is a local cap, not the AWS maximum10000. Optional filters.bucketRegion must equal the endpoint region; filters.prefix filters bucket names. Output preserves actual ContinuationToken; copy it byte-for-byte into nextToken for a separately approved request. Unpaginated accounts with approved quota above10000 may be rejected; no auto-page or local slice is used.

ListObjectsV2 (search) needs bucketName, explicit returnAll:false, limit:1..1000, additionalFields:{}, bounded-page and Requester Pays acknowledgment. Supported typed options are prefix, delimiter, encodingType:url, fetchOwner, startAfter and requesterPays; the payer is a header. Dotted names use regional HTTPS443 path style. Output keeps bounded Contents, CommonPrefixes, KeyCount, IsTruncated, keys, ETags, sizes, storage classes, dates and actual NextContinuationToken; tokens and keys remain inert values. No content or returned URL is fetched. Empty XML containers and singleton/many entries normalize without fabricated rows.

Original versions keep exact parameters and credential references. V1 ignores the location region during signing; V2 forwards it and handles dotted search names differently. Both original location reads, null/us-east-1/EU assumptions, returnAll/default/limit and unsupported options require visible manual repair. No hidden GetBucketLocation/HeadBucket/readback, redirect, follow-up, polling or retry occurs. Local32KiB request/1MiB response/thirty-second bounds apply; malformed, duplicate, DTD/entity/XXE, wrong-envelope, oversized or credential-reflecting replies fail before accepted artifact retention. Useful metadata and tokens enter ordinary run/Human history and downstream AI; account encryption adds no raw DB encryption, TTL or scanner guarantee.

En español: selecciona una cuenta manual existente y una región conocida, corrige el origen V1/V2 y marca cada confirmación de forma deliberada. Crear y eliminar solo acreditan respuestas; listar devuelve una página parcial y buscar lista metadatos de objetos. Copia el token exacto para otra solicitud aprobada. No se descargan objetos ni se eliminan sus versiones.

Local tests simulate provider/Prisma facts. Real AWS credentials, permissions/effects, native DNS/TLS, DB/Redis restart, AI request interpretation and Review workspace/organization Help walkthroughs remain untested because they are outside this worker's authority. See CreateBucket, DeleteBucket, ListBuckets and ListObjectsV2.

Venafi ordinary certificate imports

Only exact ordinary numeric version-1 n8n-nodes-base.venafiTlsProtectCloud certificate/getMany and n8n-nodes-base.venafiTlsProtectDatacenter certificate/get are adapted to typed preview reads. The original node, parameters, credential references and unsupported values remain in source ledgers across save/reopen/reimport. Tool/Trigger nodes, alternate versions, writes, download/private-key options, returnAll: true, extra filters and unknown controls require visible manual repair; nothing is replaced with a read or silently dropped.

Reselect the dedicated Cloud user-key or Datacenter manual-bearer account, repair the exact read controls, and explicitly set the initially unset schema-2 acknowledgments. Original Datacenter username/password preAuthentication and TLS-disable settings are unsupported repair intent, not a supported credential migration. Embedded secrets are refused before persistence. Local tests simulate provider and Prisma facts; they do not establish n8n runtime parity, server permissions or Review behavior.

TheHive v1 manual case reads

TheHive and TheHiveProject are two imported wrappers of one Query API service. Only exact ordinary version-1 n8n-nodes-base.theHive and n8n-nodes-base.theHiveProject with explicit case/get are supported. Choose case.getLegacy with theHiveApi and explicit apiVersion: "v1", or case.getProject with theHiveProjectApi. Legacy input is { "id": "~case-id" }; Project input is { "caseId": "~case-id" }. Project also accepts the original manual ID locator. Tool/Trigger variants, missing versions, v0, writes, options, arbitrary queries, list/URL locators, loaders, binary and asynchronous actions require manual repair. Original source controls remain retained and checked.

Save an existing API key with an explicit public HTTPS origin (no subpath, credentials, query, fragment or custom port), exact wrapper profile and an explicit organization policy:

{
  "profile": "theHiveApi",
  "apiVersion": "v1",
  "url": "https://incident.example.org",
  "ApiKey": "SYNTHETIC_EXISTING_API_KEY",
  "organization": { "mode": "named", "name": "responders" },
  "allowUnauthorizedCerts": false
}

For Project, use profile: "theHiveProjectApi" and omit apiVersion. Named fields and Advanced JSON use the same validator; save, update and reopen are local and unverified, with zero provider HTTP. Test and bulk testing are unavailable. Choose { "mode": "default" } explicitly to use the API key owner's default organization, or named scope to send X-Organisation. The application does not discover or verify that organization. A private-only installation is outside this public-origin policy; deployment outbound policy and reachability remain unverified.

Both reads need a separate signed 15-minute Human Task decided by the original run actor. Current workspace and organization membership, account, workflow, input, policy, task, wait, durable decision and execution lease must still match. One physical claim permits one bounded POST to /api/v1/query?name=get-case-…; retries, polling, paging, refresh and returned-link fetching are unavailable even if node retries are enabled. Legacy sends only getCase; Project adds exactly page 0 to 10 with extraData: ["attachmentCount"].

Outputs retain the wrapper's sourceIdentity, case ID, case number, title, unknown business fields and Project attachment count. Zero results return kind: "no-record"; incomplete/malformed/error/mismatched responses are refused. Numeric tokens that cannot pass the explicit precision policy are refused instead of rounded. Only a fully validated bounded response may be retained as an application-encrypted Workspace File; the configured scanner sees ciphertext. Useful business data can persist in workflow history and downstream steps. Fresh OUTPUT admission verifies current authority and the exact signed receipt and raw artifact, with no resend after uncertainty. Installed API version, provider acceptance, key permissions, actual organization visibility, native network behavior and matching-revision Review remain unverified; this is partial support.

Odoo contact reads

Import only exact ordinary n8n-nodes-base.odoo with numeric typeVersion1 and contact get/getAll. Original node/version/parameter and credential-reference ledgers preserve unresolved/unsupported intent. Embedded credential controls refuse before ledger persistence; select a saved odooApi explicitly. The original contact getAll branch has no filters, so filters/custom options remain visible and fail validation. Explicitly supply selected fields and repair returnAll:false plus bounded offset/limit; no Tool/Trigger, custom-model, loader or write migration is claimed.

Deployment/version, Custom plan, model, ACL and public reachability are unverified. Local provider/Prisma facts are simulated; real provider/native/DB/Review organization and workspace behavior is untested. See the complete bounded protocol and limitations.

Flow task/get partial compatibility

Only ordinary n8n-nodes-base.flow numeric typeVersion1 task/get is supported. This is partial compatibility derived from the shipped node and helper, with live protocol and account entitlement unverified. A bounded unauthenticated GET of the official developer documentation failed DNS ([Errno 8] nodename nor servname provided, or not known); that failure does not show provider retirement.

Save flowManualBearerV1 with named fields or Advanced JSON: {"profile":"flowManualBearerV1","organizationId":"701","accessToken":"YOUR_EXISTING_TOKEN"}. Enter secrets only in the encrypted account editor. Save/update/reopen is local, write-only and unverified with zero provider HTTP; Test is unsupported and bulk Test skips it. No OAuth, token discovery, acquisition or refresh occurs. Provider organizationId is independent of application organization/workspace IDs and never inferred from them.

Use task.get with parameterSchemaVersion:2, migrationAcknowledged:true, rawRetentionAcknowledged:true, onePhysicalAttemptAcknowledged:true and one exact positive decimal taskId. A safe integer input is accepted; unsafe numbers refuse rather than round. Decimal strings preserve large IDs. Optional filters.include accepts only schedule, files, file_associations, parent, at most once each. Example: {"parameterSchemaVersion":2,"migrationAcknowledged":true,"rawRetentionAcknowledged":true,"onePhysicalAttemptAcknowledged":true,"taskId":"9007199254740993123","filters":{"include":["files"]}}. Acknowledgments start unset and require explicit review. Unknown optional controls remain visible manual repair intent; imported source parameters, versions and credential references remain in a source ledger. Reselect the typed saved account deliberately.

The original actor with current workspace AND application organization authority separately approves exactly one GET https://api.getflow.com/v2/tasks/{taskId}?organization_id={credentialOrganizationId} with Bearer accessToken. Original task ID, wait token, stable decision revision, actor/account/input/node/policy and execution lease remain bound through one physical claim CAS, response, settlement and fresh OUTPUT. Ambiguous responses, changed ownership or expired leases never grant a resend, including with node Retry enabled. Local limits are thirty seconds, 1MiB response, depth32 and 20k nodes; these are not provider limits. Self-hosted outbound reachability remains unverified.

Use data.task and optional included entities from the intact response envelope. Unknown useful business fields remain available; every provider JSON number is represented as its exact original text, including precision and exponent spelling. Original source IDs are not replaced by labels or application IDs. Accepted raw UTF-8 is application-encrypted in scoped WorkspaceFiles and represented by rawReference; plaintext raw/sourceItems are absent from ordinary output. Business data can remain in workflow history and downstream mappings/AI. The scanner sees ciphertext, not plaintext; no raw-database encryption, deletion deadline or backup deletion claim is made. Invalid envelopes, business errors, missing/mismatched tasks, auth/status/transport/rate failures, duplicate JSON, oversize bodies, invalid UTF-8 and secret reflection refuse success and accepted raw retention.

Create/update/getAll, triggers, webhooks, dynamic loaders, paging, Link helpers, retries, polling, readback and returned-URL fetch are unsupported. Mocked provider and Prisma facts do not verify live Flow, native DNS/TLS, durable DB/Redis, real AI or Review workspace/organization walkthroughs.

Splunk v2 existing-job migration

Only exact ordinary numeric typeVersion:2, resource:"search", operation:"get" is supported. Original node, credential-reference and parameter ledgers retain omitted/null/false/zero/empty values, resource locators, expressions and unknown options. Manually extract and review an existing SID from an original locator, supply a literal safe searchJobId, migrate explicitly to schema2 and reselect the dedicated saved management-bearer account. No list lookup or URL fetch occurs. Unknown options remain visible for manual repair and fail strict runtime input validation. Source credential references grant no access; raw inline secrets are refused before persistence.

The original credential fields are baseUrl, authToken and allowUnauthorizedCerts (default false). Preserve old references and unsupported controls in the source ledger; allowUnauthorizedCerts:true cannot enable TLS bypass. HTTPS443 or explicit8089 and original Bearer authToken are required. A HEC token cannot substitute for management authorization. Other versions, Tool/Trigger, search creation/SPL execution/results/report/alert/user/HEC actions remain unsupported. This is one useful metadata read, not full node parity. See account setup.

Azure Cosmos DB: get one existing container

The three acknowledgment switches start unchecked on a new or original n8n import. Choose each explicitly. Only literal boolean true counts as consent; imported strings such as "true", other invalid JSON values and expressions remain invalid through unrelated edits and export/reopen until explicitly repaired.

Select Azure Cosmos DB → Get container for the ordinary numeric n8n version 1 container/get subset. Save an existing account in Named fields or Advanced: edit JSON using exactly:

{
  "profile": "azureCosmosDbMasterKeyV1",
  "account": "your-public-account",
  "database": "ExactDatabaseId",
  "key": "YOUR_EXISTING_CANONICAL_BASE64_MASTER_KEY"
}

Account is the public Azure account name, without a URL. Database and container IDs preserve case and leading zeros; the initial supported ID alphabet is ASCII letters, digits, underscore, plus, equals, comma, dot, at sign and hyphen, 1–255 characters, excluding . and ... Each path segment is encoded once. The database belongs to the credential; the action supplies container. Prefer an existing read-only master key. Save/update/reopen encrypt locally, send zero HTTP and remain unverified; Test is unavailable and bulk Test skips the account. SQL/NoSQL API, local key auth, read-only-key rights, RU charges and network ACLs remain unverified. No Azure resource or identity is created.

Reselect the exact saved account and explicitly check schema-2 migration, normal-history retention and one-attempt acknowledgments. Enable WORKFLOW_LIVE_AZURE_COSMOS_DB=true independently of the current workspace Azure Cosmos DB live preference. The original actor needs current direct organization and workspace membership. One separate Human Task binds actor, organization, workflow/version/node, account ID/revision, origin, database, container and retention. Name matching or another account never substitutes for a deleted, rotated or unauthorized selected account. Approval expiry, cancellation, lease loss or any changed binding refuses the request.

The runtime makes one HMAC-SHA256 authenticated HTTPS GET to https://{account}.documents.azure.com/dbs/{database}/colls/{container}, with x-ms-date freshly generated at dispatch and x-ms-version: 2018-12-31. It signs the lower-case verb, resource type and date plus the case-sensitive encoded resource path, including the final blank line. Keys are decoded from canonical base64; no unsigned fallback exists. Public DNS and TLS are pinned and revalidated; private/custom/sovereign origins, alternate ports and redirects are refused. No item or partition-key probe, query, pagination, retries, management API or returned-link fetch occurs.

A successful 200 returns data.container, preserving exact string IDs, resource metadata and bounded unknown JSON business fields, including nested fields called token, password, __proto__ or constructor. Those values can contain private data and remain in ordinary history and downstream mappings. Raw transport text is discarded. Actual credential value echoes, duplicate JSON keys, unsafe integers, overflow, malformed UTF-8/JSON, mismatched ID, empty body and status errors refuse success. Limits are one total 30-second dispatch/read/decode budget, 1 MiB response, depth 32, 20,000 nodes and 4,096 reader steps. A durable claim and consumed-decision annotation are written together before HTTP; uncertainty or removed/tampered effects never authorize replay.

Original imports require exact ordinary numeric version 1, explicit container/get, By ID locator and simple:false. Original omitted container operation defaults to getAll and omitted simplify defaults true; unsupported controls outside the admitted listing profile require repair; source controls outside this original read contract, Tool/Trigger, extra auth/parameters and dynamic locators require visible manual repair. Source intent remains in the import ledger. OAuth, managed identity and connection strings are unsupported. Local simulations do not verify real Azure, native deployment, durable database/Redis restart or Review organization/tutorial behavior.

YouTube numeric version 1 video migration

Import only exact ordinary n8n-nodes-base.youTube with numeric typeVersion:1, explicit resource:"video", operation:"get", a single literal videoId, part:["snippet"], and omitted or empty options. Original resource/operation/part defaults, other versions, Tool/Trigger, extra parameters/options and other operations/resources remain visibly refused; no unsupported intent is silently mapped to Get. Original node/parameter/account-reference ledgers preserve the submitted intent; embedded authentication, duplicate JSON and unsafe controls require repair before persistence. OAuth credential references grant no access: reselect a dedicated supplied-token workspace account, then deliberately acknowledge schema1 migration, retained public items and one physical attempt. Import and save never grant execution consent. Export/reopen preserve repair ledgers and unsupported values. Numeric strings remain strings, and unrelated ordinary workflow numerics retain ordinary parsing.

X (Twitter v2): one username lookup

The useful native unit is exact ordinary numeric typeVersion: 2 user.searchUser, using one explicit username of 1–15 ASCII letters, digits or underscores. It sends one GET https://api.x.com/2/users/by/username/{username} with no query or body. The current documented hostname differs from original api.twitter.com; support for that old alias remains unverified, and redirects are refused. Original default tweet/resource conversion, v1/OAuth1, me/ID lookup, writes, extra fields, expansions, multiuser, paging and retries are visibly unsupported. Import retains original source ledgers and requires explicit repair and account reselection.

In Connections, choose X (Twitter v2) and enter your existing bearer in the named accessToken field, or Advanced JSON {"profile":"xUserV2ManualBearerV1","accessToken":"YOUR_EXISTING_TOKEN"}. Save/update/close/reopen use existing encrypted storage, remain unverified and send zero HTTP/DNS. Test is unsupported and bulk Test skips this account. OAuth2 PKCE acquisition/refresh and original OAuth or broad-scope aliases are not provided. Current X endpoint authorization and credits/pay-per-use require a suitable account; actual grants, entitlement, credits and visibility remain unverified without a real provider test.

In Builder, select user.searchUser, the exact saved workspace account and the username, and explicitly check migrationAcknowledged, outputRetentionAcknowledged and onePhysicalAttemptAcknowledged with schema version2. Current workspace live preference AND the operator WORKFLOW_LIVE_TWITTER gate are required. The original actor needs current organization AND direct workspace execution membership and confirms the exact material in a separate Human Task. Current account bytes, identity, original wait/decision, workflow/version/input, consumed resume segment and nonempty owned lease are checked before the physical claim, HTTP and output persistence. Rotation, deletion, retyping, deauthorization, membership/live changes, later resume/retry/recovery, removed/tampered claims and expired leases refuse further dispatch; uncertain outcomes never automatically replay.

The bounded original data user object is returned as data and one original-style item in sourceItemsJson. String snowflake data.id keeps precision. data.name, data.username and bounded unknown nested business fields are available to ordinary output, run history and downstream mappings, and may contain personal information. The raw response envelope and unknown outer fields are discarded; no plaintext raw artifact or new encryption purpose is introduced. Returned URLs remain inert. Explicit credential VALUES (including encoded forms) are refused on reflection; unrelated business field names are retained. Not-found, rate-limit, credits, auth, duplicate keys, malformed/unsafe values and partial errors fail instead of returning an empty user.

Local bounds are one physical attempt, total30s, response1MiB, depth32 and20k nodes. These are local bounds, not vendor quotas or a deletion/scanning guarantee. Current provider service, Review organization walkthrough, native DNS/TLS and durable DB/Redis restart are untested; local HTTP/Prisma/DOM simulations do not establish them.

PayPal: one payout item read

The native partial operation is ordinary n8n-nodes-base.payPal, numeric typeVersion: 1, payoutItem.get. It sends exactly one GET /v1/payments/payouts-item/{payoutItemId} on the saved explicit live (https://api-m.paypal.com:443) or sandbox (https://api-m.sandbox.paypal.com:443) environment. Enter one explicit string ID; numeric coercion, paths, query controls and returned links are refused.

Save a dedicated PayPal account through Named fields or Advanced JSON:

{
  "profile": "paypalPayoutItemManualBearerV1",
  "environment": "sandbox",
  "accessToken": "YOUR_CURRENT_MANUALLY_SUPPLIED_TOKEN"
}

Both editors use the same central validator. Save, update, close and reopen are local encrypted, write-only and unverified, with zero provider HTTP or DNS. Test is unavailable and bulk Test skips this profile. The original payPalApi client ID/secret credential and its hidden authorization POST are separate and unsupported. No OAuth acquisition or refresh occurs; replace an expired manual token yourself. sanbox, omitted environments and arbitrary fallbacks are refused. PayPal Payouts enablement, token expiry, merchant transaction visibility, current permissions and quota remain unknown without real account verification. The application's organization is distinct from the PayPal merchant identity.

Use parameterSchemaVersion: 2, an explicit payoutItemId, and independently check migrationAcknowledged, outputRetentionAcknowledged and onePhysicalAttemptAcknowledged. These acknowledgments start unset. Imported unsupported resources, versions, extra parameters and original credential references remain visible in the source ledger for manual repair and explicit account reselection. Only the original actor with current direct workspace and organization membership can approve the exact account, environment, route and retention in a separate Human Task. Current saved account material, live environment gate WORKFLOW_LIVE_PAYPAL, workspace preference, original task/wait/decision, resume segment and lease are rechecked at claim, dispatch, settlement and output admission. A removed or changed effect record, expired lease, deletion, rotation, retyping, deauthorization or lost membership cannot authorize a resend or account fallback.

The useful single payout-item object appears in result.data and the one-element result.items array. It retains string identifiers, nullable values and nested unknown business fields, including recipient and financial data, in ordinary execution history and downstream mappings. Review those fields before sending them to another action or AI step. The bounded raw HTTP text and transport envelope are discarded after parsing; no encrypted raw-response archive, new TTL, deletion or scanner guarantee is added. Exact credential values echoed in any key or value are refused; business fields are not removed because of their names. Provider errors and not-found responses are failures, while a payout item's documented business status such as FAILED is preserved as business data.

One consumed decision permits one physical request with a total real 30-second deadline, 1 MiB response, depth 32, 20,000-node and finite-read limits. Duplicate JSON keys, invalid UTF-8/media/status, numeric precision loss, overflow, redirects and ambiguous outcomes fail closed with no automatic retry. Payout create/get/list, payout-item cancel, other resources, triggers, dynamic loaders, pagination, returned-link fetching and token acquisition/refresh remain unsupported. This one selected read is not complete PayPal parity. Tests use simulated HTTP/Prisma/DOM facts; real PayPal, native DNS/TLS, a durable database restart, real AI interpretation and the matching authenticated Review workspace/organization tutorial walkthrough remain untested.

Primary endpoint contract: PayPal payout item details.

Imported SMTP email

Only exact ordinary n8n-nodes-base.emailSend with an explicit numeric version 1, 2 or 2.1 can use the existing SMTP mail action. Version 1 sends implicitly and reads CC/BCC from top-level ccEmail/bccEmail. Versions 2 and 2.1 accept only resource email and operation send (their omitted defaults), and read CC/BCC from options. Version 2 defaults to text; 2.1 defaults to HTML. Text, HTML and both formats map only the selected bodies.

Import retains a bounded original version, parameters and credential-reference ledger. Original credential IDs are evidence only: select a configured saved SMTP account. Embedded authentication is refused before import/export persistence. Import supplies no approval and leaves existing execution and approval requirements in place.

Unsupported intent produces an SMTP import requires repair validation error before preparation or execution. This includes attachments, Reply To, changed certificate verification, unsupported SMTP disableStartTls/hostName, unknown controls, versions, resources or operations, and Tool/Trigger/fuzzy types. Send-and-wait is never converted into ordinary send. Version 2.1 enables n8n attribution by default; this importer cannot reproduce it, so deliberately review and set options.appendAttribution: false before using ordinary send. Version 2 defaults that option to false.

Repair a separate exported copy and preview it again; existing n8n workflows are not modified. In an imported block's Config JSON, correct n8nTypeVersion and n8nParameters to the supported source intent, then configure from, to, subject, the selected text/html, optional cc/bcc and credential (smtp:Saved account name). Keep emailSendOriginal as repair evidence. Clearing the displayed issue list does not unblock execution: current source and configured fields are checked again. Download and reopen preserve the repair intent. A simulated result or accepted SMTP response does not establish email delivery.

Firestore ordinary document list

Only exact ordinary n8n-nodes-base.googleFirebaseCloudFirestore, numeric version 1 or 1.1, explicit document/getAll, returnAll:false, simple:false, limit:1, default database and one bounded ASCII collection can select the native one-page operation. One input is covered. The source ledger retains original parameters, raw version and credential IDs; unsupported operations, Tool/Trigger variants, defaults, extra controls and original OAuth/service-account credentials require manual repair. Source data never selects acknowledgments or grants account authority. Reselect firestoreDocumentManualBearerV1, review all three initially unchecked controls and the typed-output differences before a separate exact Human Task can authorize one request.

This selected Firestore import uses a complete-workflow limit of 16 KiB with duplicate-safe JSON parsing, safe numeric tokens, depth24 and 4,096 nodes. Larger original workflows require a separate bounded export before migration; this limit is local application policy.

The three saved acknowledgment properties themselves must be literal true, independently of resolved request or trigger input. Expressions cannot grant consent, including restoration of an older signed WAIT; business fields retain their existing expression support. Invalid original or draft values remain unchanged through export/reopen until deliberate repair. Invalid whole-input drafts remain in the source record during partial repair. Repair repeated JSON fields in the original file; importing does not choose a consent value.

Additional native Firestore actions

The same selected manual datastore token also supports the following explicitly configured native actions in the (default) database. Each uses the existing three literal migration/retention/one-attempt acknowledgments plus a separate original-actor exact-request Human Task. Current organization AND workspace membership, account revision, input, policy, owned lease, one physical CAS and fresh OUTPUT checks still apply.

ActionRequest and result
document.getOne documents:batchGet POST for an explicit collection/document ID; retains the typed found or missing entry and raw result array, without a derived id.
collection.getAllOne root documents:listCollectionIds POST, limit1–500; retains the raw envelope and inert next-page token instead of separate name items.
document.queryOne documents:runQuery POST with explicit bounded structuredQuery, one collection selector and required limit1–500. Supports filters, ordering, selection, cursors and offset0–1000; no transactions, explain, vector or aggregate query. Offset-skipped documents can incur reads.
document.createOne createDocument POST with explicit typed ProtoJSON fields and document ID, or empty text for a service-assigned ID; an existing ID fails. Requires literal documentWriteAcknowledged.
document.upsertOne PATCH without precondition, using a sorted update mask of explicit simple top-level field names. Creates a missing document, replaces masked fields and retains other fields. Requires literal documentWriteAcknowledged.
document.deleteOne DELETE without precondition. Success does not establish previous existence and does not remove subcollections. Requires literal documentDeleteAcknowledged.

No item/column inference, derived document IDs or simplification is added. Typed values preserve int64 strings, bytes, references and timestamps; unknown business metadata remains inert. Writes/deletes are billed and may take effect even if their response is lost; they never retry automatically. Repeating a service-assigned create manually can create another document. Request bodies are limited to8KiB; existing64KiB response, depth24,4,096-node/read,30-second total and18-second transport bounds remain. Returned tokens and URLs are never followed. IAM, Rules, quota and real effects remain unverified.

The six additional actions require manual migration: pinned n8n output item shapes and item-derived write fields/IDs differ. Import keeps original intent and a specific repair reason instead of silently changing semantics; the existing narrow document.getAll import remains available. Select the account and acknowledgments deliberately after repair.

Primary contracts: Firestore REST documents, structured queries.

Microsoft Dynamics: one Dataverse account read

The native Dynamics profile supports account.get, account.getAll, account.create, account.update and account.delete on the saved public commercial HTTPS {environment}.crm.dynamics.com origin at port443, using /api/data/v9.2/accounts. Other regions, sovereign/on-premises endpoints, other tables, lookups, loaders and Tool/Trigger variants remain unsupported.

Save the dedicated dynamicsAccountManualAccessTokenV1 profile in Named fields or Advanced JSON with accessToken, exact environmentOrigin, matching declared audience and Unix-millisecond expiresAtMs. Save/update/reopen are encrypted, write-only, local and unverified with zero provider HTTP/DNS. Test and OAuth acquisition/refresh are unavailable; historical microsoftDynamicsOAuth2Api credentials are never converted. Declarations do not verify real token grants, tenant consent, licensing or security roles. At least30 seconds of declared lifetime must remain at execution.

ActionRequest and bounded behavior
account.getOne explicit GUID; optional Return Fields ($select) and Expand Fields ($expand, names only).
account.getAllOne ordered page, explicit limit1–10, optional select/expand and Filters query. @odata.nextLink remains inert; no automatic follow.
account.createOne POST with Name and supported Additional Fields, Prefer: return=representation; accepts a 201 representation or 204 with an exact same-environment OData-EntityId.
account.updateOne PATCH of an existing GUID with If-Match: *; a missing row fails instead of the original node's implicit upsert. Empty text clears a column; empty address values are omitted. Accepts 200 or 204.
account.deleteOne DELETE by GUID; 204 yields {success:true}. Relationship cascade rules and server automation can affect related rows.

Create/update accept the supported text, Int32, four-decimal Money, stage GUID and up to two address rows. Other columns, deep inserts and lookup bindings require another integration. Dataverse plug-ins, flows, business rules and auditing may run for writes. HTTP acceptance does not verify their completion; an uncertain write may already have occurred and never retries automatically.

Set parameterSchemaVersion:1, then independently select literal migrationAcknowledged, rawRetentionAcknowledged and onePhysicalAttemptAcknowledged. Create/update additionally require consequentialEffectAcknowledged; delete requires destructiveAcknowledged. All start unset. Expressions cannot grant consent. The original actor with current direct workspace AND organization membership must approve the exact account, method, body, retention and effects in a separate Human Task. Current account/secret, node/input, live policy, original decision, owned lease/checkpoint/native resume and one physical CAS claim bind dispatch and fresh OUTPUT. Used, expired or uncertain claims never resend.

Raw JSON, numeric lexemes, bounded records and unknown business fields enter normal history and downstream mappings. Links remain inert. Local caps remain30 seconds, 1MiB response, depth32,20,000 nodes,4,096 reads and6MiB output; malformed UTF-8/JSON, duplicate keys, invalid status/media or identity mismatch fail closed. Documented application/json; odata.metadata=minimal is accepted. Real Dataverse rights, provider effects and durable restart behavior remain unverified; local provider/socket/database tests are simulated.

Automatic import accepts only exact ordinary numeric version1 get/getAll/create/delete with explicit supported controls; Return All is refused. Original update requires manual migration because of its upsert semantics. Source ledgers retain parameters, versions and credential references without selecting an account or granting consent; export/reopen preserves invalid drafts until deliberate repair.

Primary contracts: retrieve a row, create a row, update and delete.

Google Analytics version2 GA4 report migration

The narrow report.get profile imports only exact ordinary n8n-nodes-base.googleAnalytics with numeric typeVersion: 2, explicit resource: "report", operation: "get", propertyType: "ga4", property ID locator mode id, custom explicit dates, exactly totalUsers, zero or one date dimension, returnAll: false, simple: false, and numeric limit: 1. No source default is inherited. Only explicit boolean keep-empty-rows and property-quota flags are accepted; extra options require the broader profile below or manual repair.

Original node/version/parameters and credential IDs, including googleAnalyticsOAuth2, remain in source ledgers through export/reopen. Unknown or invalid source intent remains visible for manual repair; original OAuth references grant no access and are never converted into a manual bearer profile. Reselect a separately saved GA4 account, then deliberately choose the three initially unchecked acknowledgments and complete the original actor's separate exact-request Human Task. Import/save grants no execution approval. Universal Analytics, other versions, Tool/Trigger, implicit selectors, auto-pagination and full OAuth lifecycle parity are unsupported. See the bounded raw-report operation. Provider and Review remain untested.

The three saved acknowledgment properties themselves must be literal true, independently of resolved request or trigger input. Expressions cannot grant consent, including restoration of an older signed WAIT; business fields retain their existing expression support. Invalid original or draft values remain unchanged through export/reopen until deliberate repair.

Invalid whole-input drafts remain in the source record during partial repair. Repair repeated JSON fields in the original file; importing does not choose a consent value.

GA4 bounded report.run

report.run extends the same manual-token account with up to10 metrics and9 dimensions, listed or explicit API names, custom expression/invisible metrics, one AND/OR group of supported dimension and metric filters, ordering, currency, aggregates, empty-row and quota flags. Use returnAll:false and explicit limit1–1000; the requested rows×columns must also fit the10,000-node structural budget. One8KiB POST body is bound to the Human approval; no offset or subsequent page is requested. Data API token/quota consumption and metric/filter compatibility remain unverified.

Custom dates accept YYYY-MM-DD or offset-free local date-time and send the date part. Native today/yesterday/last7days/last30days use Google's property time zone, which can differ from n8n's host-clock dates. simple:true adds string-valued simpleItems inside one retained output envelope, rather than emitting n8n's separate row items. Raw report and original JSON always remain in normal history/downstream values, including unknown inert business fields. Column identities, row counts and string metric values are validated; rowCount never proves completeness. The existing256KiB/depth16/10,000-node/4,096-read/30-second limits, no-retry policy and current organization/workspace authority checks remain.

Automatic import of the broader numeric version2 ordinary GA4 source requires explicit custom dates and simple:false. Relative presets and simple row items retain a manual-migration blocker because those semantics differ. Source credentials, cached locator URLs and metadata never grant account authority or fetch another URL. Reselect the exact saved token, deliberately check all three initially unset literal acknowledgments, and complete the separate original-actor Human Task. The narrow report.get contract remains available. Universal Analytics, Tool/Trigger, OAuth acquisition/refresh and full-node parity remain unsupported. Real Google access and durable restart behavior remain unverified; local execution tests use simulated provider/database facts.

Primary contract: Data API runReport.

Generic S3-compatible file page

The separate generic-s3 action file.getAll.firstPage reads one bounded ListObjectsV2 page from an explicitly supplied custom endpoint. It does not use the AWS S3 bucket account or its regional endpoint rules.

Save genericS3ManualSigV4V1 with profile generic-s3-manual-sigv4-v1, a public DNS HTTPS root origin on port 443, a supplied signing region and an explicit pathStyle boolean. Named fields require an addressing-mode selection; Advanced JSON requires a literal boolean. Save, update and reopen are local, encrypted, write-only and unverified, with zero provider HTTP or DNS. Test and bulk Test are unavailable. Manual-static supplies access and secret keys without token/expiry; manual-temporary also requires a token and exact UTC expiry. Execution needs more than ninety seconds remaining. No ambient credentials, discovery, login, token acquisition or refresh occurs.

Choose an explicit bucket, prefix and limit 1–1000. The migration, first-page and data-retention acknowledgments start unchecked and require literal true, followed by the separate original-actor Human approval. The current actor, workspace and organization access, saved account revision, node, input, live policy, original task/wait/decision and owned execution lease stay bound through one claim, native TLS/SNI/IP admission, the response and fresh output. A used or uncertain claim cannot resend.

One signed GET uses list-type=2, max-keys, delimiter=/ and the exact prefix. It performs no bucket-location request, redirect, retry, continuation or write. Local limits are 1 MiB, 64 response reads and a 30-second total request budget. The bounded XML decoder preserves zero-size and folder-marker objects, keys and unknown business elements; sizes remain decimal strings. The inert XML subset permits at most 32 levels and 10,000 elements, and refuses DTD, external/custom entities, CDATA, custom processing instructions and non-namespace attributes. Optional KeyCount remains provider-declared metadata; actual object and common-prefix counts are bounded independently. partialPage:true, pageCount:1, isTruncated and an optional opaque continuation token describe this first response only. Returned keys and tokens stay inert and are never fetched. Data may persist in run/Human history and reach downstream AI.

This is a corrected ordinary first-page subset. Original generic S3 discovers bucket location, paginates and filters zero-size objects; those behaviors are deliberately excluded. Custom vendor compatibility, entitlement, real DNS/TLS/provider responses, durable database behavior and Review workspace/organization Help walkthroughs remain unverified by local simulated tests. See ListObjectsV2.

Only exact ordinary n8n-nodes-base.s3 numeric typeVersion:1 with resource:"file", operation:"getAll", returnAll:false, an explicit integer limit and options:{} or options:{folderKey:"prefix/"} can map to this action. Original parameters, version and credential IDs stay in the inert source ledger. Unknown options, Return All, unsupported versions/actions and invalid raw consent require explicit manual repair; source credentials do not select a Confluye account, and import never accepts any acknowledgment. Tool, Trigger, discovery, subsequent pages and other file/folder/bucket actions remain unsupported.

Original n8n expression syntax in bucket or folder-prefix fields requires manual repair and stays in the source ledger. Deliberately authored native business expressions use Confluye semantics; they cannot supply the three literal acknowledgments.

Redis ordinary string GET

Only exact ordinary n8n-nodes-base.redis numeric typeVersion:1, explicit operation:"get", keyType:"string", one string key, literal propertyName and explicit options.dotNotation:false map to the Redis string GET subset. Original raw version, parameters and credential reference IDs/names remain in the source ledger through export and reopen. No original credential secret is copied; choose a separately saved redisManualTlsV1 external account explicitly. Original IDs remain inert when a portable export is reopened, including older projected references. An explicitly selected native account stays selected; a mixed original/native reference list retains only that explicit native selection.

Imported operation inputs deliberately omit schema/source version and all consent values until you repair them. Set schema2/sourceVersion1 and review the initially unchecked migration, normal-history retention and one-attempt switches; a string "true" is not consent. Automatic TYPE, omitted defaults, hashes/lists/sets, dot notation, unknown options, other operations/versions and Tool/Trigger identities remain visible refusal/manual-repair intent. They are never converted silently into a read. The native GET differs from the original retrying client: no PING, retries, reconnect, enumeration or automatic replay is used. See Redis account and execution limits. Real provider and Review walkthroughs remain untested.

Original expression-prefixed key/output values and source {{ interpolation markers require manual repair; their exact raw values remain in the ledger. This importer does not translate full n8n expression semantics. Manually authored native business expressions remain available in the key/output fields, with separate literal-true acknowledgment controls. Original credential IDs and aliases remain source-only, including ID collisions with existing native accounts; select the external account explicitly.

Xero: one existing-tenant contact read

The native ordinary numeric version1 subset is contact.get: one GET https://api.xero.com/api.xro/2.0/Contacts/{contactId} with an explicit UUID and Xero-tenant-id. Save the exact xeroContactManualTokenV1 JSON profile with tokenKind: "oauth2-access-token", manually supplied accessToken, existing tenantId and granted contactsScope (accounting.contacts.read or accounting.contacts). The external Xero tenant is distinct from the current application organization. Named fields and Advanced JSON Save/update/reopen are encrypted, write-only, local, unverified and send zero HTTP/DNS; Test and bulk Test skip. No OAuth refresh or tenant discovery.

All seven explicit boolean migration, output-retention, one-attempt, selected-account, tenant-authorization, approved-usecase and associated-user data-passthrough acknowledgments start unchecked and must be literal true. These user attestations never prove Xero approval or activate Live. The original actor separately decides the exact Human task; current organization AND workspace membership, account/material, node/input/policy, consumed decision, owned lease and one CAS physical claim are revalidated through persistence and fresh OUTPUT. Current provider approval, token/tenant entitlement and associated-user consent remain unverified; resolve those before actual provider activation/testing. Current Xero terms restrict approved use cases, third-party passthrough and model training/adaptation; they do not establish a blanket inference ban.

One exact contact in data and sourceItemsJson preserves bounded original business JSON, including normal prototype-shaped keys and possible personal, bank or tax information, in ordinary output/history/downstream. The raw envelope is discarded; returned URLs stay inert. Local30s/1MiB/fatalUTF8/structural bounds, zero redirects/retries and consumed receipts prevent automatic replay of uncertain attempts. Import/export/reopen retain unsupported raw intent, raw versions and credential IDs; no automatic consent or OAuth-credential alias. Invoice, list, writes, Tool/Trigger and fullnode parity remain unsupported. Real provider, DNS/TLS, Review, durable DB/restart and real human authentication remain untested.

Consent must be saved as seven literal true booleans; acknowledgment expressions are unavailable and cannot acquire consent by resolving to true. A timely settled contact can pass through a later Wait under a new trusted resume revision and current owned lease, with its original signed task/wait/decision/claim/result conserved and current authority checked again; OUTPUT never sends again. The original send approval expires after15minutes; a timely signed settled result may outlive that send window, while retries, recovery or changed checkpoint attempts refuse.

Azure Storage: first container page

Use Azure Storage → List containers (first page), operation container.getAll / tool azureStorage_container_getAll. This is an ordinary numeric n8n typeVersion 1 compatibility subset. Save an existing account in Named fields or Advanced JSON:

{
  "profile": "azureStorageManualBearerV1",
  "account": "youraccount",
  "accessToken": "YOUR_EXISTING_STORAGE_BEARER",
  "audience": "https://storage.azure.com/",
  "expiresAt": "2099-01-01T00:00:00.000Z"
}

Use the token's actual expiry; the example date is a placeholder. Account is 3–24 lowercase letters/digits, without a URL. Save/update/reopen encrypt locally, are write-only and remain unverified with zero provider HTTP. There is no Test, OAuth acquisition/refresh, SharedKey signer, SAS, discovery or Azure resource creation. Token signature/issuer/audience/expiry claims and effective rights remain unverified. List Containers permissions require Microsoft.Storage/storageAccounts/blobServices/containers/read scoped to the account or above; a blob-level entitlement alone does not prove account-list access. Tokens expiring within 30 seconds are refused at execution.

Original imports must declare exactly ordinary numeric version 1, resource:container, operation:getAll, returnAll:false, limit:1, and matching original authentication:oAuth2/azureStorageOAuth2Api or authentication:sharedKey/azureStorageSharedKeyApi. Original declarations and unsupported intent remain in the source ledger. Reselect the separate manual bearer account; no original OAuth/SharedKey authentication parity is claimed. Other defaults/options, metadata/system/deleted filters and Tool/Trigger require visible manual repair; additional admitted operations are described below.

Input requires parameterSchemaVersion:2 and four independent literal acknowledgments: migrationAcknowledged:true, rawRetentionAcknowledged:true, onePhysicalAttemptAcknowledged:true and firstPageOnlyAcknowledged:true; none is automatically checked. The original actor needs current direct organization AND workspace membership, current selected account and input revisions, WORKFLOW_LIVE_AZURE_STORAGE=true and the independent current workspace live preference. A separate signed Human Task binds the exact safe request preview without embedding the bearer. Nonempty owned lease, original task/wait/decision, checkpoint attempt and consumed resume revision remain required. One CAS claim permits one physical attempt; uncertain or used claims never resend, including fresh resumes or node retry settings.

The request is exactly GET https://{account}.blob.core.windows.net/?comp=list&maxresults=1, with Bearer authorization, a fresh UTC x-ms-date, and source x-ms-version:2021-12-02. Public DNS, admitted IP, certificate/SNI and remote peer are revalidated. For this first-container-page action, custom/private/sovereign endpoints, alternate ports, redirects, retries and continuation requests are unsupported; IPv6-only hosts remain unsupported.

A successful 200 XML response yields data.containers, data.maxResults:1 and opaque data.nextMarker. paging.completeness is partial-first-page when a marker exists, otherwise complete-first-page; this never implies full pagination. Empty pages retain their marker, fixing the original helper shortcut's loss. Unknown container fields/attributes and textual metadata (including 0007) persist in normal history and downstream mappings. Returned URLs remain inert. Root-level unknown fields are omitted as in the original helper. XML names follow source helper normalization; strict named boolean/safe integer conversion applies outside metadata. Prototype-sensitive names and normalization collisions refuse success. This differs deliberately from the original metadata coercion.

Limits: one total 30-second dispatch/read/decode deadline, 256 KiB body, depth 24, 4,096 elements/reads, one container, and an 8,192-character marker. Strict UTF-8/XML, exact response status/media/length, secret-reflection checks and bounded streaming precede success. DTD, custom/external entities, namespaces, comments, CDATA and processing instructions are rejected. The five predefined XML entities and valid numeric character references are decoded without external resolution. Raw transport text is discarded; no full XML/parser parity is claimed. Existing business data may be private and remains in ordinary history; this adds no retention/encryption guarantee for that history.

Local tests simulate provider responses, Prisma facts and native sockets. Real Azure token claims/entitlement/RBAC propagation, service responses, network ACL/private-network constraints, native deployment, actual durable database/Redis restart and organization-scoped Review/tutorial behavior remain untested.

Azure Storage and Cosmos DB: additional bounded operations

Azure Storage also exposes container.get/create/delete and blob.getAll/get/create/delete, using the same exact azureStorageManualBearerV1 account and fixed public origin. Select the operation, review its disclosure and supply schema 2 plus literal migration, retention and one-attempt consent. Container creation needs createContainerAcknowledged; container deletion needs deleteContainerAcknowledged and removes every blob. Blob upload needs replaceBlobAcknowledged, explicit UTF-8 content (at most 4 KiB) and contentType; it can replace content and metadata. Blob deletion needs deleteBlobAcknowledged; snapshots, leases and conditional requests are unsupported. Every write requires a separate exact-request Human Task and one physical claim; a lost response never authorizes retry.

blob.getAll requires firstPageOnlyAcknowledged and an explicit limit of 1–100. Optional include accepts only the fields exposed by the form. It returns data.blobs, data.maxResults and an opaque data.nextMarker; empty partial pages retain their marker and it is never followed. blob.get requires textOnlyAcknowledged and returns bounded UTF-8 data.content with name, properties and metadata. Original n8n blob downloads produce binary items and remain refused; configure this different text-only operation manually. Original blob uploads using binary or URL sources also remain refused. Container read/create/delete, bounded blob listing and deletion can migrate only their admitted literal source options. Unsupported fields remain visible for repair. XML keeps the 256 KiB/depth-24/4,096-element bounds; text download is at most 256 KiB. All calls retain the total 30-second budget.

Azure Cosmos DB also exposes container.getAll/create/delete and item.get/getAll/query/create/update/delete with the exact azureCosmosDbMasterKeyV1 account, saved database and fixed public origin. Every operation requires schema 2 and literal migration, retention and one-attempt consent; all five writes additionally require writeEffectAcknowledged. The original actor needs current organization AND workspace membership and both live gates, then confirms the exact selected account, request and body. Every action uses one HMAC-authenticated request and one physical claim; uncertainty remains unverified and never resends.

Container/item listing accepts one page with maxItemCount 1–100; continuation is opaque and never followed. A response exceeding the selected count is refused without forwarding its business data, even when it is below the overall 100-item ceiling. Query sends one POST with explicit SQL and named parameters, not a write. Choose crossPartition (potentially higher RU charges) or singlePartition with an explicit string partition key. It accepts at most 1,000 returned values; a page may be empty or partial. Point item reads and writes need an explicit string partition key; no discovery probe or inferred key is used. Return values are data.containers, data.items, data.item, data.container or {deleted:true}, with bounded envelopes and numeric-lexeme metadata. New item/query responses preserve numeric spellings as text when converting to a JavaScript number changes the decimal value, including fractional precision loss and underflow. Equivalent spellings such as 1.00 and 1e2 may project as numbers while retaining their original numeric-lexeme metadata. The original container.get contract retains its stricter numeric refusal. Normal history and downstream mappings retain business data.

A missing or empty x-ms-continuation response header means the page is complete and projects as continuation: null. A nonempty token, at most 8,192 characters, marks a partial page and is retained without following it. An empty result with a nonempty token is still partial. En español: una cabecera de continuación ausente o vacía indica una página completa; un token no vacío sigue indicando una página parcial, aunque no haya resultados. No se solicita otra página automáticamente.

Native item creation never upserts; an existing id conflicts. Native item update replaces the whole item using the exact authored JSON and matching id; omitted properties disappear. Both differ from original n8n upsert/injected-body behavior, so those imports remain refused and require manual configuration. Container creation accepts one Hash partition path and optional indexing policy/manual throughput: 400–1,000,000 RU/s in steps of 100 can incur ongoing billing. Deleting a container removes all contents. No patch/upsert/autoscale, retries, redirects or automatic continuation is implemented. Limits remain total 30 seconds, 1 MiB response, depth 32 and 20,000 nodes; authored item/policy JSON is at most 8 KiB.

These are bounded native operations and explicit migrations, not full n8n item/authentication parity. Local HOST tests use simulated provider responses and database facts. Real provider credentials, grants, charges, native DNS/TLS, durable restart and authenticated organization Review/tutorial behavior remain untested.

Firebase Realtime Database numeric version 1 migration

Import only exact ordinary n8n-nodes-base.googleFirebaseRealtimeDatabase, numeric typeVersion:1, explicit operation:"get", literal projectId (the original field actually selects a database instance) and one nonroot path; a single leading slash is accepted. Require the original googleFirebaseRealtimeDatabaseOAuth2Api credential reference only. Original omitted default create, resource selectors, extra parameters, expressions, Tool/Trigger, fuzzy aliases and other versions remain visibly refused. Original node and input ledgers preserve source controls and credential references without embedding secrets. Reopen/export retain these ledgers; unsupported intent requires explicit local repair.

Manually reselect the separate firebaseRealtimeManualBearerV1 supplied-token account, verify its exact database origin, review the imported literal path segments and deliberately select all three initially unchecked schema1 acknowledgments. No generic Google OAuth credential is substituted, no token is acquired/refreshed and no provider discovery occurs. See account setup and output/retention limits. This is a narrow adaptation rather than whole Firebase or n8n item-output parity.

Firebase acknowledgment controls accept real booleans only. Imported strings, numbers, null and objects remain visibly invalid and are retained unchanged on unrelated edits; choosing each unchecked switch is a separate user action. No expression or default turns an invalid value into consent.

For every native operation, restoring a signed saved wait still requires the current source acknowledgment fields to be literal true; neither a restored signature nor a resolved expression supplies consent. This check does not change business-field expression rendering.

Explicit ordinary numeric version 1 Firebase update, push, create and delete now migrate to separate bounded native writes: PATCH, POST, PUT and DELETE respectively, using the same firebaseRealtimeManualBearerV1 account and one nonroot literal path. The omitted original default is still refused. Body operations retain the original comma-separated attributes; bind inputData explicitly to the upstream record because n8n implicitly read the current item. Only listed own top-level properties present in that record are sent, as canonical JSON (at most 4 KiB). Requests with no matching attributes, server values or multi-path keys are refused.

All writes require the three common literal acknowledgments plus externalWriteAcknowledged; PUT also needs fullReplacementAcknowledged because omitted subtree values are removed, and DELETE needs subtreeDeletionAcknowledged because it removes the entire subtree. Import leaves every consent false and does not select or acquire credentials. Review the exact account, verb, path and body in the original-actor Human Task under current organization AND workspace authority and both live gates. One durable physical claim permits one attempt; a timeout, disconnect or malformed response leaves the outcome unverified with no automatic retry or replay. Successful writes retain bounded data, rawJson and request-body byte count in ordinary history. POST returns the generated child name; DELETE returns null. These are explicit adaptations; original scalar/null/item wrapping and implicit per-item execution parity are not claimed. Real provider writes, charges and Review walkthroughs remain untested.

QuickBooks ordinary bill import

Only exact n8n-nodes-base.quickbooks, numeric typeVersion:1, explicit resource:"bill", operation:"get" and billId can map to quickbooks / bill.get. Unsupported options, other actions, omitted defaults, wrong/string versions and Tool/Trigger/fuzzy aliases remain visible refusal/manual-repair intent. Raw malformed/duplicate and whole-input intent, original versions and credential references remain retained through export/reopen/repair; partial repair must not silently erase them. Invalid IDs remain exact values until deliberately repaired.

Reselect an independent quickbooksBillManualBearerV1 account; original OAuth credentials are not converted. The external account realm/environment is not an application organization/workspace. Imported financial-data persistence consent starts unchecked and must be literal true before a separate original-actor Human approval. Bill and exact raw JSON enter normal history/downstream data; decimal strings retain ID precision and raw JSON retains financial number text. See setup, local decimal subset, fixed minorversion75 floor and one-attempt limits. Real provider/native network, durable restart and Review remain untested.

CrateDB and TimescaleDB original v1 read

Only exact ordinary n8n-nodes-base.crateDb and n8n-nodes-base.timescaleDb with numeric typeVersion:1 and explicitly selected operation:"executeQuery" can map to the separate native-pg-read action query.execute. The original omitted operation defaults to insert and is never inferred to be a read. Tool/Trigger forms, other versions and arbitrary Postgres-like node names do not gain this native action. Existing authored Postgres actions keep their own contract.

Import preserves the full original node as inert n8nSource JSON, including exact query string bytes, full parameters, credential references, options and version. Export and reopen retain that repair record. Unsupported intent stays visible with a refusal and no executable native mapping; SQL is never rewritten, a limit is never appended, and source credential references do not select an account. Reselect the exact manual TLS account explicitly.

Admitted parameters are only operation, query and optional additionalFields. Its mode may be absent (original multiple), multiple or independently, and queryParams must be absent or the empty string. Original queryParams names input fields; it is not a literal parameter array and is never converted to queryReplacement. Transaction mode, continuation/error-continuation flags, expressions, parameters, extra fields and unsupported options require repair. Exactly one actual original input item is required at execution.

The new grammar is SELECT column [, column]* FROM schema.table [ORDER BY one projected column [ASC|DESC]] LIMIT 1. It requires an explicit schema and relation, at most sixteen distinct projected columns and a literal numeric limit of one. Simple ASCII identifiers or simply quoted ASCII identifiers are supported. No star, alias, WHERE, function, expression, placeholder, comment, join, subquery, stacked statement or transaction is admitted. For example, SELECT id, name FROM doc.contacts LIMIT 1 and SELECT time, value FROM public.telemetry ORDER BY time DESC LIMIT 1 are candidate literals; SELECT id FROM public.read_fixture WHERE id = $1 LIMIT 1 remains refused.

The imported schema-1 input retains profile, exact query, source version 1 and source mode. Migration, raw-retention and one-physical-attempt acknowledgments start false and need literal true on each raw property before expression resolution, plus the separate exact Human decision. This finite read foundation is an authored migration, not full original CrateDB/TimescaleDB or driver-output parity. Real provider, native TLS, durable persistence, actual dialog and Review behavior remain unverified.

Reparación de la importación en español

Solo los tipos ordinarios exactos CrateDB y TimescaleDB con versión numérica 1 y executeQuery explícito se migran. La operación omitida significa insert y se rechaza. El nodo completo, SQL exacto, parámetros, versión, referencias y opciones quedan en n8nSource para corregirlos y sobreviven a exportar y reabrir. Una entrada no compatible no recibe una operación ejecutable. Selecciona otra vez la cuenta TLS manual; importar no acepta consentimiento. La gramática admite una consulta literal SELECT con columnas y schema.table, ORDER BY opcional y LIMIT 1, con un único elemento de entrada real. No admite WHERE, parámetros, expresiones, comentarios, funciones, transacciones ni escrituras. Las tres confirmaciones empiezan desmarcadas y necesitan true literal, además de la aprobación Human independiente. La equivalencia completa y el comportamiento real del proveedor, del diálogo y de Review siguen sin verificar.

Only inert id/name credential references may enter the original-source record. Embedded credential fields or inline account material are refused before original import, portable reopen or export; unsupported safe parameters and business field names are retained without a field-name blacklist. En español: el registro original solo admite referencias inertes id/name; los campos de credenciales incrustados o material de cuenta se rechazan antes de importar, reabrir o exportar. Los parámetros seguros no compatibles y los nombres de campos de negocio se conservan sin una lista de nombres prohibidos.

Only exact ordinary n8n-nodes-base.ldap numeric typeVersion:1 can map to native-ldap-read/search.base, with explicit operation:"search", searchFor:"custom", a narrow literal (attribute=value) filter, returnAll:false, limit:1 and options {scope:"base",pageSize:0,attributes:"cn,mail"}. The complete original node JSON is preserved before flattening; its node type/version/options and credential references remain inert provenance. No omitted defaults infer a read or authorize broader scope.

Import selects no saved account and resets the three acknowledgments to false. Reselect the exact manual LDAPS account and review the complete selection. Embedded credential passwords/tokens/other material hard-refuse before unsupported-operation repair, so secret-bearing source is not retained as repair data. Reference-only unsupported operations remain inert and exportable for manual repair. Tool/Trigger, other versions, unknown execution options, paging/subtree/writes, custom filters outside the finite equality grammar and binary attributes do not gain native execution. Real directory behavior and full original SDK conversion parity are unverified.

En español: solo el nodo ordinario LDAP de versión numérica1 con búsqueda base explícita, filtro de igualdad literal, límite1, sin paginación y atributos explícitos puede convertirse. El JSON original y las referencias inertes se conservan; importar no elige cuenta ni consentimiento. Los secretos incrustados bloquean la importación incluso si la operación no es compatible. La intención no admitida permanece inerte para reparación.

MySQL finite select migration

Only exact ordinary n8n-nodes-base.mySql numeric typeVersion:2.5 with explicit operation:"select", literal table name locator, explicit ordered outputColumns, limit:1 and largeNumbersOutput:"text" maps to native-mysql-read/select. The original omitted operation defaults to insert and is not inferred to be a read. Other versions, Tool/Trigger forms, wildcard projections, filters, sorting, raw SQL, expressions, discovery, SSH and unsupported options remain inert for manual repair.

Original node/version/parameters and inert account references remain source intent. Embedded account material is a hard import error. Import selects no saved account, live permission or consent. Choose the separate nativeMySqlReadManualTlsV1 account and three literal acknowledgments, then obtain the original actor's exact Human approval with current organization and workspace access. See account setup and the row contract. This finite migration does not establish full n8n MySQL behavior.

MongoDB literal source migration

Only exact ordinary n8n-nodes-base.mongoDb with numeric version 1.2 and explicit resource:"document" / operation:"find" maps to the finite provider. This admitted original node uses literal JSON text for both query and projection:

{
  "type": "n8n-nodes-base.mongoDb",
  "typeVersion": 1.2,
  "parameters": {
    "resource": "document",
    "operation": "find",
    "collection": "records",
    "query": "{ \"_id\": \"0123456789abcdef01234567\" }",
    "options": { "limit": 1, "projection": "{ \"_id\": 1, \"amount\": 1 }" }
  }
}

The query contains exactly one lowercase 24-hex-character _id string, explicitly migrated to BSON ObjectId. The inclusion projection requires numeric 1 for _id plus 1–8 distinct reviewed scalar fields; amount must be included in the selected manual account's reviewed fields. Limit must be numeric 1. No operators, expressions, additional query keys, excluded fields or implicit defaults are accepted.

Preserve the original node text, literal query/projection, credential references and unsupported options. Import selects no account or consent. Omitted defaults, other versions, Tool/Trigger, URLs/SRV and unsupported selections remain inert for repair; embedded credential material refuses import. Select a separate manual account and the three literal acknowledgments, then obtain exact original-actor Human approval. See the block and EJSON output. This is a finite migration; real provider credentials, deployment packaging and authenticated Review remain unverified.

En español: se conserva el texto original y no se elige cuenta ni consentimiento. El ejemplo exige versión numérica 1.2, document/find explícito, una igualdad literal de _id, proyección inclusiva de campos revisados y límite numérico 1. No admite operadores ni expresiones. Otros casos quedan inertes para reparar; las credenciales incrustadas se rechazan. Las pruebas del proveedor, despliegue y Review siguen pendientes.

Jina Reader version 1

Only exact ordinary n8n-nodes-base.jinaAi, numeric typeVersion:1, explicit resource:"reader", operation:"read", canonical literal public HTTPS url, simplify:false and options:{} maps to jina-reader/reader.read. The complete original node and ID/name-only jinaAiApi references remain inert provenance. Embedded credential secrets hard-refuse before unsupported-operation repair. Import selects neither a saved account nor acknowledgments. Unsupported version/Tool/Trigger/search/research/options, omitted defaults, expressions, retry and continue-on-fail remain repair data and cannot dispatch. The old X-Return-Format header is omitted in the current API migration; complete original routing/helper/item/error parity is unverified.

Jina performs the remote target fetch; its target DNS, redirect and access-policy behavior are not local transport facts. One request can disclose the target URL and consume credits. Raw untrusted page data persists in authorized workflow history and may reach downstream AI. Provider/key compatibility, credits, deployment and authenticated Review remain untested. Fresh authority checks and guarded writes do not make database and network actions atomic.

En español: Jina obtiene el destino remoto; su DNS, redirecciones y políticas no son hechos del transporte local. Una solicitud puede revelar la URL y consumir créditos. Los datos sin confianza persisten en historial y pueden llegar a IA posterior. Compatibilidad real, créditos, despliegue y Review autenticado siguen sin probarse. Organización Y espacio, actor original y cuenta guardada vigente siguen siendo obligatorios; un intento usado o incierto no se repite.

AWS Rekognition DetectLabels (preview)

Only the ordinary original n8n-nodes-base.awsRekognition node with numeric version 1, authentication: "iam", resource: "image", operation: "analyze", type: "detectLabels" and binaryData: false can map to this operation. The original source must supply a literal S3 bucket/key, an explicit existing non-null version, maxLabels from 1 to 20 and minConfidence greater than 0 up to 100. Other versions/detectors stay inert. Embedded secrets are refused before source retention; imported AWS ID/name references remain inert. Select a native account manually. All six acknowledgments are reset to false; the original Filters: {} is omitted and Features: ["GENERAL_LABELS"] is explicit.

Execution requires both the deployment setting WORKFLOW_LIVE_NATIVE_REKOGNITION=true and the workspace live preference for aws-rekognition. Human approval belongs to the original actor and binds the saved account, exact source, input and workflow version. Changes require a new approval. An uncertain paid outcome must not be replayed.

Real AWS requests and authenticated organization/workspace Review walkthroughs remain untested. Local simulated responses do not verify AWS permissions, image access or provider retention settings. See DetectLabels fields, acknowledgments and limits.

Español: DetectLabels en vista previa

Solo se puede convertir el nodo ordinario original n8n-nodes-base.awsRekognition con versión numérica 1, authentication: "iam", resource: "image", operation: "analyze", type: "detectLabels" y binaryData: false. El origen debe indicar bucket y clave S3 literales, versión existente explícita distinta de null, maxLabels entre 1 y 20 y minConfidence mayor que 0 y hasta 100. Otras versiones o detectores permanecen inertes. Los secretos incrustados se rechazan antes de retener el origen; las referencias AWS por ID o nombre quedan inertes. Selecciona una cuenta nativa manualmente. Las seis confirmaciones se restablecen a false; se omite el Filters: {} original y se especifica Features: ["GENERAL_LABELS"].

La ejecución exige tanto WORKFLOW_LIVE_NATIVE_REKOGNITION=true en el despliegue como la preferencia de ejecución real de aws-rekognition en el workspace. La aprobación humana corresponde al actor original y vincula la cuenta guardada, el origen exacto, la entrada y la versión del flujo. Los cambios exigen una nueva aprobación. Un resultado facturable incierto no debe repetirse.

Siguen sin probarse las solicitudes reales a AWS y los recorridos autenticados de organización y workspace en Review. Las respuestas locales simuladas no verifican permisos de AWS, acceso a la imagen ni la política de retención del proveedor. Consulta los campos, confirmaciones y límites de DetectLabels.

AWS Textract AnalyzeExpense (preview)

Only exact ordinary n8n-nodes-base.awsTextract, numeric typeVersion:1, with the four explicit parameters authentication:"iam", operation:"analyzeExpense", a literal binaryPropertyName and simple:false maps to the finite operation. The original default simple:true flattens summary fields and can overwrite repeated names; that conversion is unsupported. Review the retained complete raw-response migration explicitly.

The full original node is preserved as inert source intent before rendering. AWS credential references may contain ID/name only; embedded account material hard-refuses before retention. Import selects no saved account, live setting or consent and resets all five acknowledgments to false. Select the manual native account explicitly. Tool/Trigger forms, other versions, omitted parameters, S3, expressions, retry and continue-on-fail stay inert for repair. This is a limited migration, not full n8n item, error or output parity.

Execution requires both the deployment setting WORKFLOW_LIVE_NATIVE_TEXTRACT=true and the workspace live preference aws-textract. Real AWS requests and authenticated organization/workspace Review walkthroughs remain untested.

Español: AnalyzeExpense en vista previa

Solo se convierte el tipo ordinario exacto n8n-nodes-base.awsTextract, con typeVersion:1 numérico y cuatro parámetros explícitos: authentication:"iam", operation:"analyzeExpense", binaryPropertyName literal y simple:false. El valor original predeterminado simple:true aplana campos de resumen y puede sobrescribir nombres repetidos; esa conversión no se admite. Revisa expresamente la migración a la respuesta completa sin procesar.

El nodo completo se conserva como intención inerte antes de renderizarlo. Las referencias AWS solo pueden contener ID/nombre; material de cuenta incrustado bloquea la retención. Importar no elige cuenta, acceso real ni consentimiento y restablece las cinco confirmaciones a false. Selecciona la cuenta nativa manualmente. Tool/Trigger, otras versiones, parámetros omitidos, S3, expresiones, reintentos y continuar ante fallo permanecen inertes para reparar. La equivalencia completa de elementos, errores y salida n8n no está establecida.

Se exige tanto WORKFLOW_LIVE_NATIVE_TEXTRACT=true en el despliegue como la preferencia real aws-textract del workspace. Siguen sin probarse las solicitudes reales AWS y los recorridos autenticados de organización y workspace en Review.

Microsoft SQL manual account (storage only)

Saving a Microsoft SQL manual account in Settings does not add a workflow operation or an n8n import mapping. Imported Microsoft SQL parameters and credential references do not select or authorize the separate saved account. Unsupported nodes retain their existing execution refusal and require explicit replacement; account storage does not repair SQL, schema selections or imported options. The original n8n workflow is unchanged.

No SQL operation or SELECT execution is available. Test and bulk Test are unavailable; Save makes no DNS, connection, SQL or schema-discovery request. The account remains unverified: server identity, database permissions, grants and row-level security have not been checked. See account setup.

Español: cuenta manual de Microsoft SQL (solo almacenamiento)

Guardar una cuenta manual de Microsoft SQL en Configuración no añade operaciones de workflow ni asignaciones de importación de n8n. Los parámetros y las referencias de credenciales importados de Microsoft SQL no seleccionan ni autorizan la cuenta independiente guardada. Los nodos no admitidos conservan el rechazo de ejecución existente y requieren reemplazo explícito; almacenar la cuenta no repara SQL, selecciones de esquema ni opciones importadas. El workflow original de n8n permanece intacto.

No hay operaciones SQL ni ejecución de SELECT disponibles. Test y Test masivo no están disponibles; guardar no hace solicitudes de DNS, conexión, SQL ni descubrimiento de esquemas. La cuenta permanece sin verificar: no se han comprobado la identidad del servidor, los permisos de base de datos, las concesiones ni la seguridad por filas. Consulta la configuración de la cuenta.

Edit Fields, HTTP and OpenAI account repair

Imported Set / Edit Fields nodes open in the native field editor, using the mode selected in n8n even when the export retains values from the other mode. Dynamic field names are normalized and evaluated for each item, so ={{$json.targetField}} updates the field named by that item's input. Older imports that stored a mapping remain editable in JSON mode. Search HTTP Request to add a generic API call, and select Predefined Credential Type → Credential Type → Account to reuse an encrypted workspace account. Choose Authentication → None to clear the selected saved account and skip its authentication; explicit headers still apply. Query parameters JSON must resolve to an object, with array values appending repeated parameters. See node configuration. Create an OpenAI account once with its API key, optional organization and base URL, then use it in HTTP, chat or Embeddings. Imported n8n credential references still need a matching Confluye account; an export does not contain the provider's secret. See Block Reference.

Google Translate and Natural Language literal profiles

Ordinary googleTranslate numeric versions 1 and 2 support only explicit language.translate, literal nonempty text and a literal translateTo language code. An omitted, serviceAccount or oAuth2 authentication declaration describes the source; it never supplies execution authority. The additive native operation google-translate / translate.n8nV1 sends exactly {q, target} to Cloud Translation Basic v2, omitting format, source and model. It keeps the whole first translation object, including markup, entities and optional fields; later translations are not emitted. Existing native translate still sends format: "text" and returns selected fields.

Ordinary googleCloudNaturalLanguage numeric version 1 supports only explicit document.analyzeSentiment, source: "content" and literal nonempty content. options may be absent or contain only documentType: "PLAIN_TEXT" and encodingType: "UTF16". Language is autodetected. The additive google-natural-language / analyzeSentiment.n8nInlineV1 keeps the full bounded response, including sentences, numeric offsets and signed decimal sentiment values. Existing analyzeSentiment keeps its selected metadata and original numeric-token strings. HTML mode, GCS URIs, explicit language, other encodings, unknown or inactive options, Tool/Trigger/HitlTool variants, string/missing/other versions and expressions require manual repair.

Import preserves the original node, disabled state and inactive credential references through save/export/reimport. Select the matching current manual bearer account (googleTranslateBearerV2Api or googleNaturalLanguageManualBearerApi), then deliberately check all three initially unchecked choices: text disclosure, possible billing, and full-response retention. A separate per-request confirmation remains required. The supplied token is not acquired, refreshed or verified by import; source OAuth and service-account credentials are never activated.

For these admitted profiles, the structured block editor shows a migration notice in English or Spanish, including after portable save/reopen. Review its account, disclosure, billing and retention reminders before running; displaying the notice does not select an account or check any acknowledgment.

These profiles require exactly one incoming item; zero or multiple items refuse before dispatch. Translate emits its first object paired to input 0; Natural Language emits one complete object without adding pairing metadata. Source continue-on-fail, retry, execute-once and synthetic-output settings are refused. One physical attempt is made; failure after invocation may already have disclosed text and incurred charges. Do not retry based on a local failure alone.

Text is limited to 5000 Unicode code points, 10000 UTF-16 units and 32768 serialized request bytes. Responses are read within 1 MiB and retained within 256 KiB, 32 nested levels and 32768 JSON nodes; text/key budgets also apply. Full responses preserve unknown fields within those limits. Secret-shaped keys, malformed responses, unsafe numbers, decimal precision loss, negative zero, overflowing or underflowing numbers and content that cannot survive normal secret protections unchanged cause whole-response refusal instead of partial output. Returned links are inert data. Full input and response text can persist in normal workflow history and downstream data, including AI inputs. No diagnostic telemetry records the content.

Local tests use simulated provider responses and confirmation. Actual Google grants, service enablement, billing, token lifecycle, provider acceptance and authenticated Review workspace/organization journeys remain unverified. This is bounded compatibility for two literal profiles, not whole-family parity. See manual account and consent details.

Google Chat and Contacts bounded raw get imports

Only ordinary numeric typeVersion:1 is supported. Chat requires explicit authentication:"oAuth2", resource:"space", operation:"get" and a literal native-valid spaces/id. Contacts requires resource:"contact", operation:"get", a literal contact ID suffix, explicit rawData:true, and a unique nonempty fields subset of names, emailAddresses, phoneNumbers, organizations, birthdays. These map to additive spaces.getRaw/contacts.getRaw operations that preserve complete bounded records and emit one item paired to input index zero. Contacts adds contactId from the correlated response identity.

Reselect the appropriate current native manual account and deliberately check the initially false full-record retention acknowledgment, then confirm execution independently. Import retains original credential references inertly, the original disabled state and an immutable source ledger through form save/export/reopen. It grants no account authority or consent. Exactly one actual input is allowed. Lists/search/warmups, Contacts clean/default mode and wildcard fields, implicit Chat service-account authentication, expressions, extra options, retry/continue-on-error, Tool/Trigger/HitlTool, messages/members/media/webhooks/wait and writes require repair. Review complete private-record retention and finite response limits. These profiles do not establish full-family parity or real Google/Review compatibility.

For these admitted profiles, the structured block editor keeps the migration notice visible in English or Spanish after portable save/reopen. The notice reminds you to select a current manual account, review complete-record retention and confirm execution separately. It does not activate original credentials or preselect retention consent.