> For the complete documentation index, see [llms.txt](https://docs.n8n.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.n8n.io/connect/n8n-api/models.md).

# Models

## The exportPackageRequest object

```json
{"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"exportPackageRequest":{"type":"object","additionalProperties":false,"description":"Selects what to export. Provide `agentIds`, `workflowIds`, and/or `folderIds` to export loose entities, or `projectIds` to export whole projects. Do not combine these two groups. Supply at least one ID.","properties":{"agentIds":{"type":"array","minItems":1,"maxItems":300,"description":"IDs of the agents to include. Requires the agents module.","items":{"type":"string","minLength":1}},"workflowIds":{"type":"array","maxItems":300,"description":"IDs of the workflows to include in the exported package.","items":{"type":"string","minLength":1}},"folderIds":{"type":"array","maxItems":300,"description":"IDs of the folders to include in the exported package. Each folder is exported with its nested folders.","items":{"type":"string","minLength":1}},"projectIds":{"type":"array","description":"IDs of the projects to include in the exported package. Includes their agents when the agents module is enabled.","items":{"type":"string","minLength":1}},"includeVariableValues":{"type":"boolean","default":true,"description":"Whether values of variables referenced by the exported entities are bundled into the package. When `false`, variables still travel as name/type files and are listed in the package requirements, but no values travel with the package."},"includeTags":{"type":"boolean","default":true,"description":"Whether tags assigned to the exported workflows are bundled into the package. When `false`, no tag files, tag references, or tag requirements travel with the package."},"dependencyPolicy":{"type":"string","enum":["fail","reference-only","include-in-package"],"description":"Policy for workflow and agent dependencies outside the selected package contents. Includes static workflow references and disabled agent references. `fail` aborts when a required workflow or agent is absent from the package. `include-in-package` adds accessible dependencies recursively. `reference-only` records external requirements without including those definitions. The same policy applies to workflows and agents.","default":"fail"},"versionPolicy":{"type":"string","enum":["published-strict","prefer-published","ignore-unpublished","latest"],"description":"Which version of each workflow and agent travels in the package. `latest` exports the current draft. `published-strict` requires a published version. `prefer-published` uses the published version when available and the draft otherwise. `ignore-unpublished` skips unpublished selections. Dependencies that cannot be included cause the export to fail only when `dependencyPolicy` is `fail` or `include-in-package`. With `reference-only`, the export records them as external requirements. The selected version supplies the definition and its references. Workflow names, settings, and tags always use their current values. Agent IDs, names, and MCP availability always use their current values.","default":"latest"},"credentialExportPolicy":{"type":"string","enum":["expression-values-only","no-values"],"description":"Whether expression values from credential data are bundled into the package. `expression-values-only` includes credential fields whose value is an n8n expression (for example `={{ $secrets.apiKey }}`); literal values never travel either way. `no-values` keeps credential data out of the package entirely, so each credential file carries only its id, name and type.","default":"expression-values-only"},"includeArchivedWorkflows":{"type":"boolean","description":"Whether folder and project exports include their archived workflows. When `false` (default) they are left out. When `true` they travel with `isArchived: true` and are archived on import. Workflows listed in `workflowIds` always export, also when archived.","default":false}}}}}}
```

## The error object

```json
{"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"error":{"required":["message"],"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"description":{"type":"string"}}}}}}
```

## The node object

```json
{"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"node":{"type":"object","additionalProperties":false,"properties":{"id":{"type":"string"},"name":{"type":"string"},"webhookId":{"type":"string"},"disabled":{"type":"boolean"},"notesInFlow":{"type":"boolean"},"notes":{"type":"string"},"type":{"type":"string"},"typeVersion":{"type":"number"},"executeOnce":{"type":"boolean"},"alwaysOutputData":{"type":"boolean"},"retryOnFail":{"type":"boolean"},"maxTries":{"type":"number"},"waitBetweenTries":{"type":"number"},"continueOnFail":{"type":"boolean","description":"use onError instead","deprecated":true},"onError":{"type":"string"},"position":{"type":"array","items":{"type":"number"}},"parameters":{"type":"object","additionalProperties":true},"credentials":{"type":"object"},"customTelemetryTags":{"type":"object","additionalProperties":false,"properties":{"tag":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["key","value"],"properties":{"key":{"type":"string"},"value":{"type":"string"}}}}}},"createdAt":{"type":"string","format":"date-time","readOnly":true},"updatedAt":{"type":"string","format":"date-time","readOnly":true}}}}}}
```

## The workflowNodeGroup object

```json
{"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"workflowNodeGroup":{"type":"object","additionalProperties":false,"required":["id","name","nodeIds"],"properties":{"id":{"type":"string","description":"Unique identifier for the node group"},"name":{"type":"string","description":"Display name of the node group"},"description":{"type":"string","maxLength":155,"description":"Optional plain-text description of the node group"},"nodeIds":{"type":"array","description":"IDs of the nodes that belong to this group","items":{"type":"string"}}}}}}}
```

## The tag object

```json
{"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"tag":{"type":"object","additionalProperties":false,"required":["name"],"properties":{"id":{"type":"string","readOnly":true},"name":{"type":"string"},"createdAt":{"type":"string","format":"date-time","readOnly":true},"updatedAt":{"type":"string","format":"date-time","readOnly":true}}}}}}
```

## The workflowSettings object

```json
{"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"workflowSettings":{"type":"object","additionalProperties":false,"properties":{"saveExecutionProgress":{"type":"boolean"},"saveManualExecutions":{"type":"boolean"},"saveDataErrorExecution":{"type":"string","enum":["all","none"]},"saveDataSuccessExecution":{"type":"string","enum":["all","none"]},"executionTimeout":{"type":"number","maxLength":3600},"errorWorkflow":{"type":"string","description":"The ID of the workflow that contains the error trigger node."},"timezone":{"type":"string"},"executionOrder":{"type":"string"},"binaryMode":{"type":"string","enum":["separate","combined"],"description":"Controls how binary data is resolved from a node's input. This is a derived,\ninternal setting rather than something intended to be set programmatically.\nIt is included in workflow responses for reference, but any value sent when\ncreating or updating a workflow is ignored.\n"},"callerPolicy":{"type":"string","enum":["any","none","workflowsFromAList","workflowsFromSameOwner"],"description":"Controls which workflows are allowed to call this workflow using the Execute Workflow node.\nDefaults to workflowsFromSameOwner.\n\nAvailable options:\n- `any`: Any workflow can call this workflow (no restrictions)\n- `none`: No other workflows can call this workflow (completely blocked)\n- `workflowsFromSameOwner` (default): Only workflows owned by the same project can call this workflow\n  * For personal projects: Only workflows created by the same user\n  * For team projects: Only workflows within the same team project\n- `workflowsFromAList`: Only specific workflows listed in the `callerIds` field can call this workflow\n  * Requires the `callerIds` field to specify which workflow IDs are allowed\n  * See `callerIds` field documentation for usage\n"},"callerIds":{"type":"string","description":"Comma-separated list of workflow IDs allowed to call this workflow (only used with workflowsFromAList policy)"},"timeSavedMode":{"type":"string","enum":["fixed","dynamic"],"description":"Controls how the time saved per execution is calculated.\nAvailable options:\n- `fixed`: Uses a predetermined time value specified in the `timeSavedPerExecution` field.\n  * Requires the `timeSavedPerExecution` field to be set\n  * Use when the time saved is consistent across all executions\n- `dynamic`: Automatically calculates time saved based on actual execution metrics\n  * The `timeSavedPerExecution` field is ignored when this mode is active\n  * Use when time saved varies between executions\n"},"timeSavedPerExecution":{"type":"number","description":"Estimated time saved per execution in minutes"},"redactionPolicy":{"type":"string","enum":["none","non-manual","manual-only","all"],"description":"Controls whether execution data is redacted for this workflow.\n\nAvailable options:\n- `none` (default): No redaction — all execution data is stored.\n- `non-manual`: Redact production (non-manually triggered) executions only.\n- `manual-only`: Redact manually triggered executions only.\n- `all`: Redact all executions (manual and production).\n\nWhen the instance has a redaction floor configured, the policy must be equal to\nor stricter than the floor. A policy weaker than the floor is rejected with 422\non create, and on update when it changes the stored policy; an unchanged\npre-existing below-floor policy is preserved (the floor is not applied\nretroactively). Omitting this field when creating a workflow seeds it to the\ninstance floor instead.\n"},"availableInMCP":{"type":"boolean","description":"Controls whether this workflow is accessible via the Model Context Protocol (MCP).\nDefaults to false.\n\nWhen enabled, this workflow can be called by MCP clients (AI assistants and other tools\nthat support MCP). This allows external AI tools to discover and execute this workflow\nas part of their capabilities.\n\nRequirements for enabling MCP access:\n- The workflow must be active (not deactivated)\n- The workflow must contain at least one active Webhook node\n- Only webhook-triggered workflows can be exposed via MCP\n\nSecurity note: When a workflow is available in MCP, it can be discovered and executed\nby any MCP client that has the appropriate API credentials for your n8n instance.\n"},"customTelemetryTags":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["key","value"],"properties":{"key":{"type":"string"},"value":{"type":"string"}}}},"credentialResolverId":{"type":"string","description":"ID of the credential resolver used to resolve credentials for this workflow.\nThis is a derived, internal setting managed via the workflow's credential\nresolver configuration rather than something intended to be set programmatically.\nIt is included in workflow responses for reference, but any value sent when\ncreating or updating a workflow is ignored.\n"}}}}}}
```

## The sharedWorkflow object

```json
{"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"sharedWorkflow":{"type":"object","additionalProperties":false,"properties":{"role":{"type":"string"},"workflowId":{"type":"string"},"projectId":{"type":"string"},"project":{"type":"object","properties":{"id":{"type":"string","readOnly":true},"name":{"type":"string"},"type":{"type":"string","readOnly":true}}},"createdAt":{"type":"string","format":"date-time","readOnly":true},"updatedAt":{"type":"string","format":"date-time","readOnly":true}}}}}}
```

## The activeVersion object

```json
{"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"activeVersion":{"type":"object","readOnly":true,"nullable":true,"additionalProperties":false,"properties":{"versionId":{"type":"string","readOnly":true,"description":"Unique identifier for this workflow version"},"workflowId":{"type":"string","readOnly":true,"description":"The workflow this version belongs to"},"nodes":{"type":"array","readOnly":true,"items":{"$ref":"#/components/schemas/node"}},"connections":{"type":"object","readOnly":true},"nodeGroups":{"type":"array","readOnly":true,"description":"Visual groupings of nodes shown as frames on the canvas","items":{"$ref":"#/components/schemas/workflowNodeGroup"}},"authors":{"type":"string","readOnly":true,"description":"Comma-separated list of author IDs who contributed to this version"},"name":{"type":"string","nullable":true,"readOnly":true,"description":"Optional name for this workflow version"},"description":{"type":"string","nullable":true,"readOnly":true,"description":"Optional description for this workflow version"},"autosaved":{"type":"boolean","readOnly":true,"description":"Whether this version was created by autosave"},"createdAt":{"type":"string","format":"date-time","readOnly":true},"updatedAt":{"type":"string","format":"date-time","readOnly":true}}},"node":{"type":"object","additionalProperties":false,"properties":{"id":{"type":"string"},"name":{"type":"string"},"webhookId":{"type":"string"},"disabled":{"type":"boolean"},"notesInFlow":{"type":"boolean"},"notes":{"type":"string"},"type":{"type":"string"},"typeVersion":{"type":"number"},"executeOnce":{"type":"boolean"},"alwaysOutputData":{"type":"boolean"},"retryOnFail":{"type":"boolean"},"maxTries":{"type":"number"},"waitBetweenTries":{"type":"number"},"continueOnFail":{"type":"boolean","description":"use onError instead","deprecated":true},"onError":{"type":"string"},"position":{"type":"array","items":{"type":"number"}},"parameters":{"type":"object","additionalProperties":true},"credentials":{"type":"object"},"customTelemetryTags":{"type":"object","additionalProperties":false,"properties":{"tag":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["key","value"],"properties":{"key":{"type":"string"},"value":{"type":"string"}}}}}},"createdAt":{"type":"string","format":"date-time","readOnly":true},"updatedAt":{"type":"string","format":"date-time","readOnly":true}}},"workflowNodeGroup":{"type":"object","additionalProperties":false,"required":["id","name","nodeIds"],"properties":{"id":{"type":"string","description":"Unique identifier for the node group"},"name":{"type":"string","description":"Display name of the node group"},"description":{"type":"string","maxLength":155,"description":"Optional plain-text description of the node group"},"nodeIds":{"type":"array","description":"IDs of the nodes that belong to this group","items":{"type":"string"}}}}}}}
```

## The workflow object

```json
{"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"workflow":{"type":"object","additionalProperties":false,"required":["name","nodes","connections","settings"],"properties":{"id":{"type":"string","readOnly":true},"name":{"type":"string"},"description":{"type":"string","description":"Description of the workflow"},"parentFolderId":{"type":"string","nullable":true,"writeOnly":true,"description":"ID of the folder to move the workflow into. Pass null to move it to the project root; omit to leave its current folder unchanged."},"active":{"type":"boolean","readOnly":true,"deprecated":true,"description":"Deprecated. Check whether `activeVersionId` is not null instead."},"activeVersionId":{"type":"string","nullable":true,"readOnly":true},"createdAt":{"type":"string","format":"date-time","readOnly":true},"updatedAt":{"type":"string","format":"date-time","readOnly":true},"isArchived":{"type":"boolean","readOnly":true},"versionId":{"type":"string","readOnly":true,"description":"Current version identifier used for optimistic locking"},"triggerCount":{"type":"integer","readOnly":true,"description":"Number of active trigger nodes in the workflow"},"nodes":{"type":"array","items":{"$ref":"#/components/schemas/node"}},"connections":{"type":"object"},"nodeGroups":{"type":"array","description":"Visual groupings of nodes shown as frames on the canvas","items":{"$ref":"#/components/schemas/workflowNodeGroup"}},"settings":{"$ref":"#/components/schemas/workflowSettings"},"staticData":{"anyOf":[{"type":"string","format":"jsonString","nullable":true},{"type":"object","nullable":true}]},"pinData":{"type":"object","nullable":true,"description":"Pinned sample data for nodes, keyed by node name"},"meta":{"type":"object","nullable":true,"readOnly":true,"description":"Workflow metadata such as template information","properties":{"onboardingId":{"type":"string"},"templateId":{"type":"string"},"instanceId":{"type":"string"},"templateCredsSetupCompleted":{"type":"boolean"}}},"tags":{"type":"array","items":{"$ref":"#/components/schemas/tag"},"readOnly":true},"shared":{"type":"array","items":{"$ref":"#/components/schemas/sharedWorkflow"}},"activeVersion":{"$ref":"#/components/schemas/activeVersion"}}},"node":{"type":"object","additionalProperties":false,"properties":{"id":{"type":"string"},"name":{"type":"string"},"webhookId":{"type":"string"},"disabled":{"type":"boolean"},"notesInFlow":{"type":"boolean"},"notes":{"type":"string"},"type":{"type":"string"},"typeVersion":{"type":"number"},"executeOnce":{"type":"boolean"},"alwaysOutputData":{"type":"boolean"},"retryOnFail":{"type":"boolean"},"maxTries":{"type":"number"},"waitBetweenTries":{"type":"number"},"continueOnFail":{"type":"boolean","description":"use onError instead","deprecated":true},"onError":{"type":"string"},"position":{"type":"array","items":{"type":"number"}},"parameters":{"type":"object","additionalProperties":true},"credentials":{"type":"object"},"customTelemetryTags":{"type":"object","additionalProperties":false,"properties":{"tag":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["key","value"],"properties":{"key":{"type":"string"},"value":{"type":"string"}}}}}},"createdAt":{"type":"string","format":"date-time","readOnly":true},"updatedAt":{"type":"string","format":"date-time","readOnly":true}}},"workflowNodeGroup":{"type":"object","additionalProperties":false,"required":["id","name","nodeIds"],"properties":{"id":{"type":"string","description":"Unique identifier for the node group"},"name":{"type":"string","description":"Display name of the node group"},"description":{"type":"string","maxLength":155,"description":"Optional plain-text description of the node group"},"nodeIds":{"type":"array","description":"IDs of the nodes that belong to this group","items":{"type":"string"}}}},"workflowSettings":{"type":"object","additionalProperties":false,"properties":{"saveExecutionProgress":{"type":"boolean"},"saveManualExecutions":{"type":"boolean"},"saveDataErrorExecution":{"type":"string","enum":["all","none"]},"saveDataSuccessExecution":{"type":"string","enum":["all","none"]},"executionTimeout":{"type":"number","maxLength":3600},"errorWorkflow":{"type":"string","description":"The ID of the workflow that contains the error trigger node."},"timezone":{"type":"string"},"executionOrder":{"type":"string"},"binaryMode":{"type":"string","enum":["separate","combined"],"description":"Controls how binary data is resolved from a node's input. This is a derived,\ninternal setting rather than something intended to be set programmatically.\nIt is included in workflow responses for reference, but any value sent when\ncreating or updating a workflow is ignored.\n"},"callerPolicy":{"type":"string","enum":["any","none","workflowsFromAList","workflowsFromSameOwner"],"description":"Controls which workflows are allowed to call this workflow using the Execute Workflow node.\nDefaults to workflowsFromSameOwner.\n\nAvailable options:\n- `any`: Any workflow can call this workflow (no restrictions)\n- `none`: No other workflows can call this workflow (completely blocked)\n- `workflowsFromSameOwner` (default): Only workflows owned by the same project can call this workflow\n  * For personal projects: Only workflows created by the same user\n  * For team projects: Only workflows within the same team project\n- `workflowsFromAList`: Only specific workflows listed in the `callerIds` field can call this workflow\n  * Requires the `callerIds` field to specify which workflow IDs are allowed\n  * See `callerIds` field documentation for usage\n"},"callerIds":{"type":"string","description":"Comma-separated list of workflow IDs allowed to call this workflow (only used with workflowsFromAList policy)"},"timeSavedMode":{"type":"string","enum":["fixed","dynamic"],"description":"Controls how the time saved per execution is calculated.\nAvailable options:\n- `fixed`: Uses a predetermined time value specified in the `timeSavedPerExecution` field.\n  * Requires the `timeSavedPerExecution` field to be set\n  * Use when the time saved is consistent across all executions\n- `dynamic`: Automatically calculates time saved based on actual execution metrics\n  * The `timeSavedPerExecution` field is ignored when this mode is active\n  * Use when time saved varies between executions\n"},"timeSavedPerExecution":{"type":"number","description":"Estimated time saved per execution in minutes"},"redactionPolicy":{"type":"string","enum":["none","non-manual","manual-only","all"],"description":"Controls whether execution data is redacted for this workflow.\n\nAvailable options:\n- `none` (default): No redaction — all execution data is stored.\n- `non-manual`: Redact production (non-manually triggered) executions only.\n- `manual-only`: Redact manually triggered executions only.\n- `all`: Redact all executions (manual and production).\n\nWhen the instance has a redaction floor configured, the policy must be equal to\nor stricter than the floor. A policy weaker than the floor is rejected with 422\non create, and on update when it changes the stored policy; an unchanged\npre-existing below-floor policy is preserved (the floor is not applied\nretroactively). Omitting this field when creating a workflow seeds it to the\ninstance floor instead.\n"},"availableInMCP":{"type":"boolean","description":"Controls whether this workflow is accessible via the Model Context Protocol (MCP).\nDefaults to false.\n\nWhen enabled, this workflow can be called by MCP clients (AI assistants and other tools\nthat support MCP). This allows external AI tools to discover and execute this workflow\nas part of their capabilities.\n\nRequirements for enabling MCP access:\n- The workflow must be active (not deactivated)\n- The workflow must contain at least one active Webhook node\n- Only webhook-triggered workflows can be exposed via MCP\n\nSecurity note: When a workflow is available in MCP, it can be discovered and executed\nby any MCP client that has the appropriate API credentials for your n8n instance.\n"},"customTelemetryTags":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["key","value"],"properties":{"key":{"type":"string"},"value":{"type":"string"}}}},"credentialResolverId":{"type":"string","description":"ID of the credential resolver used to resolve credentials for this workflow.\nThis is a derived, internal setting managed via the workflow's credential\nresolver configuration rather than something intended to be set programmatically.\nIt is included in workflow responses for reference, but any value sent when\ncreating or updating a workflow is ignored.\n"}}},"tag":{"type":"object","additionalProperties":false,"required":["name"],"properties":{"id":{"type":"string","readOnly":true},"name":{"type":"string"},"createdAt":{"type":"string","format":"date-time","readOnly":true},"updatedAt":{"type":"string","format":"date-time","readOnly":true}}},"sharedWorkflow":{"type":"object","additionalProperties":false,"properties":{"role":{"type":"string"},"workflowId":{"type":"string"},"projectId":{"type":"string"},"project":{"type":"object","properties":{"id":{"type":"string","readOnly":true},"name":{"type":"string"},"type":{"type":"string","readOnly":true}}},"createdAt":{"type":"string","format":"date-time","readOnly":true},"updatedAt":{"type":"string","format":"date-time","readOnly":true}}},"activeVersion":{"type":"object","readOnly":true,"nullable":true,"additionalProperties":false,"properties":{"versionId":{"type":"string","readOnly":true,"description":"Unique identifier for this workflow version"},"workflowId":{"type":"string","readOnly":true,"description":"The workflow this version belongs to"},"nodes":{"type":"array","readOnly":true,"items":{"$ref":"#/components/schemas/node"}},"connections":{"type":"object","readOnly":true},"nodeGroups":{"type":"array","readOnly":true,"description":"Visual groupings of nodes shown as frames on the canvas","items":{"$ref":"#/components/schemas/workflowNodeGroup"}},"authors":{"type":"string","readOnly":true,"description":"Comma-separated list of author IDs who contributed to this version"},"name":{"type":"string","nullable":true,"readOnly":true,"description":"Optional name for this workflow version"},"description":{"type":"string","nullable":true,"readOnly":true,"description":"Optional description for this workflow version"},"autosaved":{"type":"boolean","readOnly":true,"description":"Whether this version was created by autosave"},"createdAt":{"type":"string","format":"date-time","readOnly":true},"updatedAt":{"type":"string","format":"date-time","readOnly":true}}}}}}
```

## The workflowList object

```json
{"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"workflowList":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/workflow"}},"nextCursor":{"type":"string","description":"Paginate through workflows by setting the cursor parameter to a nextCursor attribute returned by a previous request. Default value fetches the first \"page\" of the collection.","nullable":true}}},"workflow":{"type":"object","additionalProperties":false,"required":["name","nodes","connections","settings"],"properties":{"id":{"type":"string","readOnly":true},"name":{"type":"string"},"description":{"type":"string","description":"Description of the workflow"},"parentFolderId":{"type":"string","nullable":true,"writeOnly":true,"description":"ID of the folder to move the workflow into. Pass null to move it to the project root; omit to leave its current folder unchanged."},"active":{"type":"boolean","readOnly":true,"deprecated":true,"description":"Deprecated. Check whether `activeVersionId` is not null instead."},"activeVersionId":{"type":"string","nullable":true,"readOnly":true},"createdAt":{"type":"string","format":"date-time","readOnly":true},"updatedAt":{"type":"string","format":"date-time","readOnly":true},"isArchived":{"type":"boolean","readOnly":true},"versionId":{"type":"string","readOnly":true,"description":"Current version identifier used for optimistic locking"},"triggerCount":{"type":"integer","readOnly":true,"description":"Number of active trigger nodes in the workflow"},"nodes":{"type":"array","items":{"$ref":"#/components/schemas/node"}},"connections":{"type":"object"},"nodeGroups":{"type":"array","description":"Visual groupings of nodes shown as frames on the canvas","items":{"$ref":"#/components/schemas/workflowNodeGroup"}},"settings":{"$ref":"#/components/schemas/workflowSettings"},"staticData":{"anyOf":[{"type":"string","format":"jsonString","nullable":true},{"type":"object","nullable":true}]},"pinData":{"type":"object","nullable":true,"description":"Pinned sample data for nodes, keyed by node name"},"meta":{"type":"object","nullable":true,"readOnly":true,"description":"Workflow metadata such as template information","properties":{"onboardingId":{"type":"string"},"templateId":{"type":"string"},"instanceId":{"type":"string"},"templateCredsSetupCompleted":{"type":"boolean"}}},"tags":{"type":"array","items":{"$ref":"#/components/schemas/tag"},"readOnly":true},"shared":{"type":"array","items":{"$ref":"#/components/schemas/sharedWorkflow"}},"activeVersion":{"$ref":"#/components/schemas/activeVersion"}}},"node":{"type":"object","additionalProperties":false,"properties":{"id":{"type":"string"},"name":{"type":"string"},"webhookId":{"type":"string"},"disabled":{"type":"boolean"},"notesInFlow":{"type":"boolean"},"notes":{"type":"string"},"type":{"type":"string"},"typeVersion":{"type":"number"},"executeOnce":{"type":"boolean"},"alwaysOutputData":{"type":"boolean"},"retryOnFail":{"type":"boolean"},"maxTries":{"type":"number"},"waitBetweenTries":{"type":"number"},"continueOnFail":{"type":"boolean","description":"use onError instead","deprecated":true},"onError":{"type":"string"},"position":{"type":"array","items":{"type":"number"}},"parameters":{"type":"object","additionalProperties":true},"credentials":{"type":"object"},"customTelemetryTags":{"type":"object","additionalProperties":false,"properties":{"tag":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["key","value"],"properties":{"key":{"type":"string"},"value":{"type":"string"}}}}}},"createdAt":{"type":"string","format":"date-time","readOnly":true},"updatedAt":{"type":"string","format":"date-time","readOnly":true}}},"workflowNodeGroup":{"type":"object","additionalProperties":false,"required":["id","name","nodeIds"],"properties":{"id":{"type":"string","description":"Unique identifier for the node group"},"name":{"type":"string","description":"Display name of the node group"},"description":{"type":"string","maxLength":155,"description":"Optional plain-text description of the node group"},"nodeIds":{"type":"array","description":"IDs of the nodes that belong to this group","items":{"type":"string"}}}},"workflowSettings":{"type":"object","additionalProperties":false,"properties":{"saveExecutionProgress":{"type":"boolean"},"saveManualExecutions":{"type":"boolean"},"saveDataErrorExecution":{"type":"string","enum":["all","none"]},"saveDataSuccessExecution":{"type":"string","enum":["all","none"]},"executionTimeout":{"type":"number","maxLength":3600},"errorWorkflow":{"type":"string","description":"The ID of the workflow that contains the error trigger node."},"timezone":{"type":"string"},"executionOrder":{"type":"string"},"binaryMode":{"type":"string","enum":["separate","combined"],"description":"Controls how binary data is resolved from a node's input. This is a derived,\ninternal setting rather than something intended to be set programmatically.\nIt is included in workflow responses for reference, but any value sent when\ncreating or updating a workflow is ignored.\n"},"callerPolicy":{"type":"string","enum":["any","none","workflowsFromAList","workflowsFromSameOwner"],"description":"Controls which workflows are allowed to call this workflow using the Execute Workflow node.\nDefaults to workflowsFromSameOwner.\n\nAvailable options:\n- `any`: Any workflow can call this workflow (no restrictions)\n- `none`: No other workflows can call this workflow (completely blocked)\n- `workflowsFromSameOwner` (default): Only workflows owned by the same project can call this workflow\n  * For personal projects: Only workflows created by the same user\n  * For team projects: Only workflows within the same team project\n- `workflowsFromAList`: Only specific workflows listed in the `callerIds` field can call this workflow\n  * Requires the `callerIds` field to specify which workflow IDs are allowed\n  * See `callerIds` field documentation for usage\n"},"callerIds":{"type":"string","description":"Comma-separated list of workflow IDs allowed to call this workflow (only used with workflowsFromAList policy)"},"timeSavedMode":{"type":"string","enum":["fixed","dynamic"],"description":"Controls how the time saved per execution is calculated.\nAvailable options:\n- `fixed`: Uses a predetermined time value specified in the `timeSavedPerExecution` field.\n  * Requires the `timeSavedPerExecution` field to be set\n  * Use when the time saved is consistent across all executions\n- `dynamic`: Automatically calculates time saved based on actual execution metrics\n  * The `timeSavedPerExecution` field is ignored when this mode is active\n  * Use when time saved varies between executions\n"},"timeSavedPerExecution":{"type":"number","description":"Estimated time saved per execution in minutes"},"redactionPolicy":{"type":"string","enum":["none","non-manual","manual-only","all"],"description":"Controls whether execution data is redacted for this workflow.\n\nAvailable options:\n- `none` (default): No redaction — all execution data is stored.\n- `non-manual`: Redact production (non-manually triggered) executions only.\n- `manual-only`: Redact manually triggered executions only.\n- `all`: Redact all executions (manual and production).\n\nWhen the instance has a redaction floor configured, the policy must be equal to\nor stricter than the floor. A policy weaker than the floor is rejected with 422\non create, and on update when it changes the stored policy; an unchanged\npre-existing below-floor policy is preserved (the floor is not applied\nretroactively). Omitting this field when creating a workflow seeds it to the\ninstance floor instead.\n"},"availableInMCP":{"type":"boolean","description":"Controls whether this workflow is accessible via the Model Context Protocol (MCP).\nDefaults to false.\n\nWhen enabled, this workflow can be called by MCP clients (AI assistants and other tools\nthat support MCP). This allows external AI tools to discover and execute this workflow\nas part of their capabilities.\n\nRequirements for enabling MCP access:\n- The workflow must be active (not deactivated)\n- The workflow must contain at least one active Webhook node\n- Only webhook-triggered workflows can be exposed via MCP\n\nSecurity note: When a workflow is available in MCP, it can be discovered and executed\nby any MCP client that has the appropriate API credentials for your n8n instance.\n"},"customTelemetryTags":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["key","value"],"properties":{"key":{"type":"string"},"value":{"type":"string"}}}},"credentialResolverId":{"type":"string","description":"ID of the credential resolver used to resolve credentials for this workflow.\nThis is a derived, internal setting managed via the workflow's credential\nresolver configuration rather than something intended to be set programmatically.\nIt is included in workflow responses for reference, but any value sent when\ncreating or updating a workflow is ignored.\n"}}},"tag":{"type":"object","additionalProperties":false,"required":["name"],"properties":{"id":{"type":"string","readOnly":true},"name":{"type":"string"},"createdAt":{"type":"string","format":"date-time","readOnly":true},"updatedAt":{"type":"string","format":"date-time","readOnly":true}}},"sharedWorkflow":{"type":"object","additionalProperties":false,"properties":{"role":{"type":"string"},"workflowId":{"type":"string"},"projectId":{"type":"string"},"project":{"type":"object","properties":{"id":{"type":"string","readOnly":true},"name":{"type":"string"},"type":{"type":"string","readOnly":true}}},"createdAt":{"type":"string","format":"date-time","readOnly":true},"updatedAt":{"type":"string","format":"date-time","readOnly":true}}},"activeVersion":{"type":"object","readOnly":true,"nullable":true,"additionalProperties":false,"properties":{"versionId":{"type":"string","readOnly":true,"description":"Unique identifier for this workflow version"},"workflowId":{"type":"string","readOnly":true,"description":"The workflow this version belongs to"},"nodes":{"type":"array","readOnly":true,"items":{"$ref":"#/components/schemas/node"}},"connections":{"type":"object","readOnly":true},"nodeGroups":{"type":"array","readOnly":true,"description":"Visual groupings of nodes shown as frames on the canvas","items":{"$ref":"#/components/schemas/workflowNodeGroup"}},"authors":{"type":"string","readOnly":true,"description":"Comma-separated list of author IDs who contributed to this version"},"name":{"type":"string","nullable":true,"readOnly":true,"description":"Optional name for this workflow version"},"description":{"type":"string","nullable":true,"readOnly":true,"description":"Optional description for this workflow version"},"autosaved":{"type":"boolean","readOnly":true,"description":"Whether this version was created by autosave"},"createdAt":{"type":"string","format":"date-time","readOnly":true},"updatedAt":{"type":"string","format":"date-time","readOnly":true}}}}}}
```

## The Error object

```json
{"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"Error":{"$ref":"#/components/schemas/error"},"error":{"required":["message"],"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"description":{"type":"string"}}}}}}
```

## The Node object

```json
{"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"Node":{"$ref":"#/components/schemas/node"},"node":{"type":"object","additionalProperties":false,"properties":{"id":{"type":"string"},"name":{"type":"string"},"webhookId":{"type":"string"},"disabled":{"type":"boolean"},"notesInFlow":{"type":"boolean"},"notes":{"type":"string"},"type":{"type":"string"},"typeVersion":{"type":"number"},"executeOnce":{"type":"boolean"},"alwaysOutputData":{"type":"boolean"},"retryOnFail":{"type":"boolean"},"maxTries":{"type":"number"},"waitBetweenTries":{"type":"number"},"continueOnFail":{"type":"boolean","description":"use onError instead","deprecated":true},"onError":{"type":"string"},"position":{"type":"array","items":{"type":"number"}},"parameters":{"type":"object","additionalProperties":true},"credentials":{"type":"object"},"customTelemetryTags":{"type":"object","additionalProperties":false,"properties":{"tag":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["key","value"],"properties":{"key":{"type":"string"},"value":{"type":"string"}}}}}},"createdAt":{"type":"string","format":"date-time","readOnly":true},"updatedAt":{"type":"string","format":"date-time","readOnly":true}}}}}}
```

## The WorkflowNodeGroup object

```json
{"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"WorkflowNodeGroup":{"$ref":"#/components/schemas/workflowNodeGroup"},"workflowNodeGroup":{"type":"object","additionalProperties":false,"required":["id","name","nodeIds"],"properties":{"id":{"type":"string","description":"Unique identifier for the node group"},"name":{"type":"string","description":"Display name of the node group"},"description":{"type":"string","maxLength":155,"description":"Optional plain-text description of the node group"},"nodeIds":{"type":"array","description":"IDs of the nodes that belong to this group","items":{"type":"string"}}}}}}}
```

## The Tag object

```json
{"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"Tag":{"$ref":"#/components/schemas/tag"},"tag":{"type":"object","additionalProperties":false,"required":["name"],"properties":{"id":{"type":"string","readOnly":true},"name":{"type":"string"},"createdAt":{"type":"string","format":"date-time","readOnly":true},"updatedAt":{"type":"string","format":"date-time","readOnly":true}}}}}}
```

## The Workflow object

```json
{"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"Workflow":{"$ref":"#/components/schemas/workflow"},"workflow":{"type":"object","additionalProperties":false,"required":["name","nodes","connections","settings"],"properties":{"id":{"type":"string","readOnly":true},"name":{"type":"string"},"description":{"type":"string","description":"Description of the workflow"},"parentFolderId":{"type":"string","nullable":true,"writeOnly":true,"description":"ID of the folder to move the workflow into. Pass null to move it to the project root; omit to leave its current folder unchanged."},"active":{"type":"boolean","readOnly":true,"deprecated":true,"description":"Deprecated. Check whether `activeVersionId` is not null instead."},"activeVersionId":{"type":"string","nullable":true,"readOnly":true},"createdAt":{"type":"string","format":"date-time","readOnly":true},"updatedAt":{"type":"string","format":"date-time","readOnly":true},"isArchived":{"type":"boolean","readOnly":true},"versionId":{"type":"string","readOnly":true,"description":"Current version identifier used for optimistic locking"},"triggerCount":{"type":"integer","readOnly":true,"description":"Number of active trigger nodes in the workflow"},"nodes":{"type":"array","items":{"$ref":"#/components/schemas/node"}},"connections":{"type":"object"},"nodeGroups":{"type":"array","description":"Visual groupings of nodes shown as frames on the canvas","items":{"$ref":"#/components/schemas/workflowNodeGroup"}},"settings":{"$ref":"#/components/schemas/workflowSettings"},"staticData":{"anyOf":[{"type":"string","format":"jsonString","nullable":true},{"type":"object","nullable":true}]},"pinData":{"type":"object","nullable":true,"description":"Pinned sample data for nodes, keyed by node name"},"meta":{"type":"object","nullable":true,"readOnly":true,"description":"Workflow metadata such as template information","properties":{"onboardingId":{"type":"string"},"templateId":{"type":"string"},"instanceId":{"type":"string"},"templateCredsSetupCompleted":{"type":"boolean"}}},"tags":{"type":"array","items":{"$ref":"#/components/schemas/tag"},"readOnly":true},"shared":{"type":"array","items":{"$ref":"#/components/schemas/sharedWorkflow"}},"activeVersion":{"$ref":"#/components/schemas/activeVersion"}}},"node":{"type":"object","additionalProperties":false,"properties":{"id":{"type":"string"},"name":{"type":"string"},"webhookId":{"type":"string"},"disabled":{"type":"boolean"},"notesInFlow":{"type":"boolean"},"notes":{"type":"string"},"type":{"type":"string"},"typeVersion":{"type":"number"},"executeOnce":{"type":"boolean"},"alwaysOutputData":{"type":"boolean"},"retryOnFail":{"type":"boolean"},"maxTries":{"type":"number"},"waitBetweenTries":{"type":"number"},"continueOnFail":{"type":"boolean","description":"use onError instead","deprecated":true},"onError":{"type":"string"},"position":{"type":"array","items":{"type":"number"}},"parameters":{"type":"object","additionalProperties":true},"credentials":{"type":"object"},"customTelemetryTags":{"type":"object","additionalProperties":false,"properties":{"tag":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["key","value"],"properties":{"key":{"type":"string"},"value":{"type":"string"}}}}}},"createdAt":{"type":"string","format":"date-time","readOnly":true},"updatedAt":{"type":"string","format":"date-time","readOnly":true}}},"workflowNodeGroup":{"type":"object","additionalProperties":false,"required":["id","name","nodeIds"],"properties":{"id":{"type":"string","description":"Unique identifier for the node group"},"name":{"type":"string","description":"Display name of the node group"},"description":{"type":"string","maxLength":155,"description":"Optional plain-text description of the node group"},"nodeIds":{"type":"array","description":"IDs of the nodes that belong to this group","items":{"type":"string"}}}},"workflowSettings":{"type":"object","additionalProperties":false,"properties":{"saveExecutionProgress":{"type":"boolean"},"saveManualExecutions":{"type":"boolean"},"saveDataErrorExecution":{"type":"string","enum":["all","none"]},"saveDataSuccessExecution":{"type":"string","enum":["all","none"]},"executionTimeout":{"type":"number","maxLength":3600},"errorWorkflow":{"type":"string","description":"The ID of the workflow that contains the error trigger node."},"timezone":{"type":"string"},"executionOrder":{"type":"string"},"binaryMode":{"type":"string","enum":["separate","combined"],"description":"Controls how binary data is resolved from a node's input. This is a derived,\ninternal setting rather than something intended to be set programmatically.\nIt is included in workflow responses for reference, but any value sent when\ncreating or updating a workflow is ignored.\n"},"callerPolicy":{"type":"string","enum":["any","none","workflowsFromAList","workflowsFromSameOwner"],"description":"Controls which workflows are allowed to call this workflow using the Execute Workflow node.\nDefaults to workflowsFromSameOwner.\n\nAvailable options:\n- `any`: Any workflow can call this workflow (no restrictions)\n- `none`: No other workflows can call this workflow (completely blocked)\n- `workflowsFromSameOwner` (default): Only workflows owned by the same project can call this workflow\n  * For personal projects: Only workflows created by the same user\n  * For team projects: Only workflows within the same team project\n- `workflowsFromAList`: Only specific workflows listed in the `callerIds` field can call this workflow\n  * Requires the `callerIds` field to specify which workflow IDs are allowed\n  * See `callerIds` field documentation for usage\n"},"callerIds":{"type":"string","description":"Comma-separated list of workflow IDs allowed to call this workflow (only used with workflowsFromAList policy)"},"timeSavedMode":{"type":"string","enum":["fixed","dynamic"],"description":"Controls how the time saved per execution is calculated.\nAvailable options:\n- `fixed`: Uses a predetermined time value specified in the `timeSavedPerExecution` field.\n  * Requires the `timeSavedPerExecution` field to be set\n  * Use when the time saved is consistent across all executions\n- `dynamic`: Automatically calculates time saved based on actual execution metrics\n  * The `timeSavedPerExecution` field is ignored when this mode is active\n  * Use when time saved varies between executions\n"},"timeSavedPerExecution":{"type":"number","description":"Estimated time saved per execution in minutes"},"redactionPolicy":{"type":"string","enum":["none","non-manual","manual-only","all"],"description":"Controls whether execution data is redacted for this workflow.\n\nAvailable options:\n- `none` (default): No redaction — all execution data is stored.\n- `non-manual`: Redact production (non-manually triggered) executions only.\n- `manual-only`: Redact manually triggered executions only.\n- `all`: Redact all executions (manual and production).\n\nWhen the instance has a redaction floor configured, the policy must be equal to\nor stricter than the floor. A policy weaker than the floor is rejected with 422\non create, and on update when it changes the stored policy; an unchanged\npre-existing below-floor policy is preserved (the floor is not applied\nretroactively). Omitting this field when creating a workflow seeds it to the\ninstance floor instead.\n"},"availableInMCP":{"type":"boolean","description":"Controls whether this workflow is accessible via the Model Context Protocol (MCP).\nDefaults to false.\n\nWhen enabled, this workflow can be called by MCP clients (AI assistants and other tools\nthat support MCP). This allows external AI tools to discover and execute this workflow\nas part of their capabilities.\n\nRequirements for enabling MCP access:\n- The workflow must be active (not deactivated)\n- The workflow must contain at least one active Webhook node\n- Only webhook-triggered workflows can be exposed via MCP\n\nSecurity note: When a workflow is available in MCP, it can be discovered and executed\nby any MCP client that has the appropriate API credentials for your n8n instance.\n"},"customTelemetryTags":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["key","value"],"properties":{"key":{"type":"string"},"value":{"type":"string"}}}},"credentialResolverId":{"type":"string","description":"ID of the credential resolver used to resolve credentials for this workflow.\nThis is a derived, internal setting managed via the workflow's credential\nresolver configuration rather than something intended to be set programmatically.\nIt is included in workflow responses for reference, but any value sent when\ncreating or updating a workflow is ignored.\n"}}},"tag":{"type":"object","additionalProperties":false,"required":["name"],"properties":{"id":{"type":"string","readOnly":true},"name":{"type":"string"},"createdAt":{"type":"string","format":"date-time","readOnly":true},"updatedAt":{"type":"string","format":"date-time","readOnly":true}}},"sharedWorkflow":{"type":"object","additionalProperties":false,"properties":{"role":{"type":"string"},"workflowId":{"type":"string"},"projectId":{"type":"string"},"project":{"type":"object","properties":{"id":{"type":"string","readOnly":true},"name":{"type":"string"},"type":{"type":"string","readOnly":true}}},"createdAt":{"type":"string","format":"date-time","readOnly":true},"updatedAt":{"type":"string","format":"date-time","readOnly":true}}},"activeVersion":{"type":"object","readOnly":true,"nullable":true,"additionalProperties":false,"properties":{"versionId":{"type":"string","readOnly":true,"description":"Unique identifier for this workflow version"},"workflowId":{"type":"string","readOnly":true,"description":"The workflow this version belongs to"},"nodes":{"type":"array","readOnly":true,"items":{"$ref":"#/components/schemas/node"}},"connections":{"type":"object","readOnly":true},"nodeGroups":{"type":"array","readOnly":true,"description":"Visual groupings of nodes shown as frames on the canvas","items":{"$ref":"#/components/schemas/workflowNodeGroup"}},"authors":{"type":"string","readOnly":true,"description":"Comma-separated list of author IDs who contributed to this version"},"name":{"type":"string","nullable":true,"readOnly":true,"description":"Optional name for this workflow version"},"description":{"type":"string","nullable":true,"readOnly":true,"description":"Optional description for this workflow version"},"autosaved":{"type":"boolean","readOnly":true,"description":"Whether this version was created by autosave"},"createdAt":{"type":"string","format":"date-time","readOnly":true},"updatedAt":{"type":"string","format":"date-time","readOnly":true}}}}}}
```

## The WorkflowSettings object

```json
{"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"WorkflowSettings":{"$ref":"#/components/schemas/workflowSettings"},"workflowSettings":{"type":"object","additionalProperties":false,"properties":{"saveExecutionProgress":{"type":"boolean"},"saveManualExecutions":{"type":"boolean"},"saveDataErrorExecution":{"type":"string","enum":["all","none"]},"saveDataSuccessExecution":{"type":"string","enum":["all","none"]},"executionTimeout":{"type":"number","maxLength":3600},"errorWorkflow":{"type":"string","description":"The ID of the workflow that contains the error trigger node."},"timezone":{"type":"string"},"executionOrder":{"type":"string"},"binaryMode":{"type":"string","enum":["separate","combined"],"description":"Controls how binary data is resolved from a node's input. This is a derived,\ninternal setting rather than something intended to be set programmatically.\nIt is included in workflow responses for reference, but any value sent when\ncreating or updating a workflow is ignored.\n"},"callerPolicy":{"type":"string","enum":["any","none","workflowsFromAList","workflowsFromSameOwner"],"description":"Controls which workflows are allowed to call this workflow using the Execute Workflow node.\nDefaults to workflowsFromSameOwner.\n\nAvailable options:\n- `any`: Any workflow can call this workflow (no restrictions)\n- `none`: No other workflows can call this workflow (completely blocked)\n- `workflowsFromSameOwner` (default): Only workflows owned by the same project can call this workflow\n  * For personal projects: Only workflows created by the same user\n  * For team projects: Only workflows within the same team project\n- `workflowsFromAList`: Only specific workflows listed in the `callerIds` field can call this workflow\n  * Requires the `callerIds` field to specify which workflow IDs are allowed\n  * See `callerIds` field documentation for usage\n"},"callerIds":{"type":"string","description":"Comma-separated list of workflow IDs allowed to call this workflow (only used with workflowsFromAList policy)"},"timeSavedMode":{"type":"string","enum":["fixed","dynamic"],"description":"Controls how the time saved per execution is calculated.\nAvailable options:\n- `fixed`: Uses a predetermined time value specified in the `timeSavedPerExecution` field.\n  * Requires the `timeSavedPerExecution` field to be set\n  * Use when the time saved is consistent across all executions\n- `dynamic`: Automatically calculates time saved based on actual execution metrics\n  * The `timeSavedPerExecution` field is ignored when this mode is active\n  * Use when time saved varies between executions\n"},"timeSavedPerExecution":{"type":"number","description":"Estimated time saved per execution in minutes"},"redactionPolicy":{"type":"string","enum":["none","non-manual","manual-only","all"],"description":"Controls whether execution data is redacted for this workflow.\n\nAvailable options:\n- `none` (default): No redaction — all execution data is stored.\n- `non-manual`: Redact production (non-manually triggered) executions only.\n- `manual-only`: Redact manually triggered executions only.\n- `all`: Redact all executions (manual and production).\n\nWhen the instance has a redaction floor configured, the policy must be equal to\nor stricter than the floor. A policy weaker than the floor is rejected with 422\non create, and on update when it changes the stored policy; an unchanged\npre-existing below-floor policy is preserved (the floor is not applied\nretroactively). Omitting this field when creating a workflow seeds it to the\ninstance floor instead.\n"},"availableInMCP":{"type":"boolean","description":"Controls whether this workflow is accessible via the Model Context Protocol (MCP).\nDefaults to false.\n\nWhen enabled, this workflow can be called by MCP clients (AI assistants and other tools\nthat support MCP). This allows external AI tools to discover and execute this workflow\nas part of their capabilities.\n\nRequirements for enabling MCP access:\n- The workflow must be active (not deactivated)\n- The workflow must contain at least one active Webhook node\n- Only webhook-triggered workflows can be exposed via MCP\n\nSecurity note: When a workflow is available in MCP, it can be discovered and executed\nby any MCP client that has the appropriate API credentials for your n8n instance.\n"},"customTelemetryTags":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["key","value"],"properties":{"key":{"type":"string"},"value":{"type":"string"}}}},"credentialResolverId":{"type":"string","description":"ID of the credential resolver used to resolve credentials for this workflow.\nThis is a derived, internal setting managed via the workflow's credential\nresolver configuration rather than something intended to be set programmatically.\nIt is included in workflow responses for reference, but any value sent when\ncreating or updating a workflow is ignored.\n"}}}}}}
```

## The WorkflowList object

```json
{"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"WorkflowList":{"$ref":"#/components/schemas/workflowList"},"workflowList":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/workflow"}},"nextCursor":{"type":"string","description":"Paginate through workflows by setting the cursor parameter to a nextCursor attribute returned by a previous request. Default value fetches the first \"page\" of the collection.","nullable":true}}},"workflow":{"type":"object","additionalProperties":false,"required":["name","nodes","connections","settings"],"properties":{"id":{"type":"string","readOnly":true},"name":{"type":"string"},"description":{"type":"string","description":"Description of the workflow"},"parentFolderId":{"type":"string","nullable":true,"writeOnly":true,"description":"ID of the folder to move the workflow into. Pass null to move it to the project root; omit to leave its current folder unchanged."},"active":{"type":"boolean","readOnly":true,"deprecated":true,"description":"Deprecated. Check whether `activeVersionId` is not null instead."},"activeVersionId":{"type":"string","nullable":true,"readOnly":true},"createdAt":{"type":"string","format":"date-time","readOnly":true},"updatedAt":{"type":"string","format":"date-time","readOnly":true},"isArchived":{"type":"boolean","readOnly":true},"versionId":{"type":"string","readOnly":true,"description":"Current version identifier used for optimistic locking"},"triggerCount":{"type":"integer","readOnly":true,"description":"Number of active trigger nodes in the workflow"},"nodes":{"type":"array","items":{"$ref":"#/components/schemas/node"}},"connections":{"type":"object"},"nodeGroups":{"type":"array","description":"Visual groupings of nodes shown as frames on the canvas","items":{"$ref":"#/components/schemas/workflowNodeGroup"}},"settings":{"$ref":"#/components/schemas/workflowSettings"},"staticData":{"anyOf":[{"type":"string","format":"jsonString","nullable":true},{"type":"object","nullable":true}]},"pinData":{"type":"object","nullable":true,"description":"Pinned sample data for nodes, keyed by node name"},"meta":{"type":"object","nullable":true,"readOnly":true,"description":"Workflow metadata such as template information","properties":{"onboardingId":{"type":"string"},"templateId":{"type":"string"},"instanceId":{"type":"string"},"templateCredsSetupCompleted":{"type":"boolean"}}},"tags":{"type":"array","items":{"$ref":"#/components/schemas/tag"},"readOnly":true},"shared":{"type":"array","items":{"$ref":"#/components/schemas/sharedWorkflow"}},"activeVersion":{"$ref":"#/components/schemas/activeVersion"}}},"node":{"type":"object","additionalProperties":false,"properties":{"id":{"type":"string"},"name":{"type":"string"},"webhookId":{"type":"string"},"disabled":{"type":"boolean"},"notesInFlow":{"type":"boolean"},"notes":{"type":"string"},"type":{"type":"string"},"typeVersion":{"type":"number"},"executeOnce":{"type":"boolean"},"alwaysOutputData":{"type":"boolean"},"retryOnFail":{"type":"boolean"},"maxTries":{"type":"number"},"waitBetweenTries":{"type":"number"},"continueOnFail":{"type":"boolean","description":"use onError instead","deprecated":true},"onError":{"type":"string"},"position":{"type":"array","items":{"type":"number"}},"parameters":{"type":"object","additionalProperties":true},"credentials":{"type":"object"},"customTelemetryTags":{"type":"object","additionalProperties":false,"properties":{"tag":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["key","value"],"properties":{"key":{"type":"string"},"value":{"type":"string"}}}}}},"createdAt":{"type":"string","format":"date-time","readOnly":true},"updatedAt":{"type":"string","format":"date-time","readOnly":true}}},"workflowNodeGroup":{"type":"object","additionalProperties":false,"required":["id","name","nodeIds"],"properties":{"id":{"type":"string","description":"Unique identifier for the node group"},"name":{"type":"string","description":"Display name of the node group"},"description":{"type":"string","maxLength":155,"description":"Optional plain-text description of the node group"},"nodeIds":{"type":"array","description":"IDs of the nodes that belong to this group","items":{"type":"string"}}}},"workflowSettings":{"type":"object","additionalProperties":false,"properties":{"saveExecutionProgress":{"type":"boolean"},"saveManualExecutions":{"type":"boolean"},"saveDataErrorExecution":{"type":"string","enum":["all","none"]},"saveDataSuccessExecution":{"type":"string","enum":["all","none"]},"executionTimeout":{"type":"number","maxLength":3600},"errorWorkflow":{"type":"string","description":"The ID of the workflow that contains the error trigger node."},"timezone":{"type":"string"},"executionOrder":{"type":"string"},"binaryMode":{"type":"string","enum":["separate","combined"],"description":"Controls how binary data is resolved from a node's input. This is a derived,\ninternal setting rather than something intended to be set programmatically.\nIt is included in workflow responses for reference, but any value sent when\ncreating or updating a workflow is ignored.\n"},"callerPolicy":{"type":"string","enum":["any","none","workflowsFromAList","workflowsFromSameOwner"],"description":"Controls which workflows are allowed to call this workflow using the Execute Workflow node.\nDefaults to workflowsFromSameOwner.\n\nAvailable options:\n- `any`: Any workflow can call this workflow (no restrictions)\n- `none`: No other workflows can call this workflow (completely blocked)\n- `workflowsFromSameOwner` (default): Only workflows owned by the same project can call this workflow\n  * For personal projects: Only workflows created by the same user\n  * For team projects: Only workflows within the same team project\n- `workflowsFromAList`: Only specific workflows listed in the `callerIds` field can call this workflow\n  * Requires the `callerIds` field to specify which workflow IDs are allowed\n  * See `callerIds` field documentation for usage\n"},"callerIds":{"type":"string","description":"Comma-separated list of workflow IDs allowed to call this workflow (only used with workflowsFromAList policy)"},"timeSavedMode":{"type":"string","enum":["fixed","dynamic"],"description":"Controls how the time saved per execution is calculated.\nAvailable options:\n- `fixed`: Uses a predetermined time value specified in the `timeSavedPerExecution` field.\n  * Requires the `timeSavedPerExecution` field to be set\n  * Use when the time saved is consistent across all executions\n- `dynamic`: Automatically calculates time saved based on actual execution metrics\n  * The `timeSavedPerExecution` field is ignored when this mode is active\n  * Use when time saved varies between executions\n"},"timeSavedPerExecution":{"type":"number","description":"Estimated time saved per execution in minutes"},"redactionPolicy":{"type":"string","enum":["none","non-manual","manual-only","all"],"description":"Controls whether execution data is redacted for this workflow.\n\nAvailable options:\n- `none` (default): No redaction — all execution data is stored.\n- `non-manual`: Redact production (non-manually triggered) executions only.\n- `manual-only`: Redact manually triggered executions only.\n- `all`: Redact all executions (manual and production).\n\nWhen the instance has a redaction floor configured, the policy must be equal to\nor stricter than the floor. A policy weaker than the floor is rejected with 422\non create, and on update when it changes the stored policy; an unchanged\npre-existing below-floor policy is preserved (the floor is not applied\nretroactively). Omitting this field when creating a workflow seeds it to the\ninstance floor instead.\n"},"availableInMCP":{"type":"boolean","description":"Controls whether this workflow is accessible via the Model Context Protocol (MCP).\nDefaults to false.\n\nWhen enabled, this workflow can be called by MCP clients (AI assistants and other tools\nthat support MCP). This allows external AI tools to discover and execute this workflow\nas part of their capabilities.\n\nRequirements for enabling MCP access:\n- The workflow must be active (not deactivated)\n- The workflow must contain at least one active Webhook node\n- Only webhook-triggered workflows can be exposed via MCP\n\nSecurity note: When a workflow is available in MCP, it can be discovered and executed\nby any MCP client that has the appropriate API credentials for your n8n instance.\n"},"customTelemetryTags":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["key","value"],"properties":{"key":{"type":"string"},"value":{"type":"string"}}}},"credentialResolverId":{"type":"string","description":"ID of the credential resolver used to resolve credentials for this workflow.\nThis is a derived, internal setting managed via the workflow's credential\nresolver configuration rather than something intended to be set programmatically.\nIt is included in workflow responses for reference, but any value sent when\ncreating or updating a workflow is ignored.\n"}}},"tag":{"type":"object","additionalProperties":false,"required":["name"],"properties":{"id":{"type":"string","readOnly":true},"name":{"type":"string"},"createdAt":{"type":"string","format":"date-time","readOnly":true},"updatedAt":{"type":"string","format":"date-time","readOnly":true}}},"sharedWorkflow":{"type":"object","additionalProperties":false,"properties":{"role":{"type":"string"},"workflowId":{"type":"string"},"projectId":{"type":"string"},"project":{"type":"object","properties":{"id":{"type":"string","readOnly":true},"name":{"type":"string"},"type":{"type":"string","readOnly":true}}},"createdAt":{"type":"string","format":"date-time","readOnly":true},"updatedAt":{"type":"string","format":"date-time","readOnly":true}}},"activeVersion":{"type":"object","readOnly":true,"nullable":true,"additionalProperties":false,"properties":{"versionId":{"type":"string","readOnly":true,"description":"Unique identifier for this workflow version"},"workflowId":{"type":"string","readOnly":true,"description":"The workflow this version belongs to"},"nodes":{"type":"array","readOnly":true,"items":{"$ref":"#/components/schemas/node"}},"connections":{"type":"object","readOnly":true},"nodeGroups":{"type":"array","readOnly":true,"description":"Visual groupings of nodes shown as frames on the canvas","items":{"$ref":"#/components/schemas/workflowNodeGroup"}},"authors":{"type":"string","readOnly":true,"description":"Comma-separated list of author IDs who contributed to this version"},"name":{"type":"string","nullable":true,"readOnly":true,"description":"Optional name for this workflow version"},"description":{"type":"string","nullable":true,"readOnly":true,"description":"Optional description for this workflow version"},"autosaved":{"type":"boolean","readOnly":true,"description":"Whether this version was created by autosave"},"createdAt":{"type":"string","format":"date-time","readOnly":true},"updatedAt":{"type":"string","format":"date-time","readOnly":true}}}}}}
```

## The auditVersion.generated object

```json
{"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"auditVersion.generated":{"type":"object","properties":{"name":{"type":"string"},"nodes":{"type":"array","items":{}},"createdAt":{"type":"string"},"description":{"type":"string"},"documentationUrl":{"type":"string"},"hasBreakingChange":{"type":"boolean"},"hasSecurityFix":{"type":"boolean","nullable":true},"hasSecurityIssue":{"type":"boolean","nullable":true},"securityIssueFixVersion":{"type":"string","nullable":true}},"required":["name","nodes","createdAt","description","documentationUrl","hasBreakingChange","hasSecurityFix","hasSecurityIssue","securityIssueFixVersion"]}}}}
```

## The communityPackagePublicDto.generated object

```json
{"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"communityPackagePublicDto.generated":{"type":"object","properties":{"packageName":{"type":"string","description":"npm package name"},"installedVersion":{"type":"string","description":"Currently installed version"},"authorName":{"type":"string","description":"Package author name"},"authorEmail":{"type":"string","description":"Package author email"},"installedNodes":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string"},"latestVersion":{"type":"number"}}},"description":"Nodes included in this package"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"updateAvailable":{"type":"string","description":"Version available for update, if any"},"failedLoading":{"type":"boolean","description":"Whether the package failed to load"}},"required":["packageName","installedVersion","installedNodes","createdAt","updatedAt"]}}}}
```

## The credentialTypePolicyEffectivePublicDto.generated object

```json
{"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"credentialTypePolicyEffectivePublicDto.generated":{"type":"object","properties":{"scopeId":{"type":"string","nullable":true},"rules":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1},"action":{"type":"string","enum":["allow","deny","delegate"]},"selector":{"oneOf":[{"type":"object","properties":{"kind":{"type":"string","enum":["name"]},"value":{"type":"string","minLength":1}},"required":["kind","value"]},{"type":"object","properties":{"kind":{"type":"string","enum":["package"]},"value":{"type":"string","minLength":1}},"required":["kind","value"]},{"type":"object","properties":{"kind":{"type":"string","enum":["extends"]},"value":{"type":"string","minLength":1}},"required":["kind","value"],"description":"Matches the named credential type and every type that extends it"}],"type":"object"}},"required":["id","action","selector"]}},"defaultAction":{"type":"string","enum":["allow","deny","delegate"]},"version":{"type":"integer","minimum":0}},"required":["scopeId","rules","defaultAction","version"]}}}}
```

## The credentialTypePolicyEffectiveWriteResultPublicDto.generated object

```json
{"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"credentialTypePolicyEffectiveWriteResultPublicDto.generated":{"type":"object","properties":{"scopeId":{"type":"string","nullable":true},"rules":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1},"action":{"type":"string","enum":["allow","deny","delegate"]},"selector":{"oneOf":[{"type":"object","properties":{"kind":{"type":"string","enum":["name"]},"value":{"type":"string","minLength":1}},"required":["kind","value"]},{"type":"object","properties":{"kind":{"type":"string","enum":["package"]},"value":{"type":"string","minLength":1}},"required":["kind","value"]},{"type":"object","properties":{"kind":{"type":"string","enum":["extends"]},"value":{"type":"string","minLength":1}},"required":["kind","value"],"description":"Matches the named credential type and every type that extends it"}],"type":"object"}},"required":["id","action","selector"]}},"defaultAction":{"type":"string","enum":["allow","deny","delegate"]},"version":{"type":"integer","minimum":0},"warnings":{"type":"array","items":{"type":"object","properties":{"ruleId":{"type":"string"},"shadowedByRuleId":{"type":"string"}},"required":["ruleId","shadowedByRuleId"]}}},"required":["scopeId","rules","defaultAction","version","warnings"]}}}}
```

## The credentialTypePolicyDocumentWriteResultPublicDto.generated object

```json
{"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"credentialTypePolicyDocumentWriteResultPublicDto.generated":{"type":"object","properties":{"policy":{"type":"object","properties":{"id":{"type":"string"},"kind":{"type":"string"},"rules":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1},"action":{"type":"string","enum":["allow","deny","delegate"]},"selector":{"oneOf":[{"type":"object","properties":{"kind":{"type":"string","enum":["name"]},"value":{"type":"string","minLength":1}},"required":["kind","value"]},{"type":"object","properties":{"kind":{"type":"string","enum":["package"]},"value":{"type":"string","minLength":1}},"required":["kind","value"]},{"type":"object","properties":{"kind":{"type":"string","enum":["extends"]},"value":{"type":"string","minLength":1}},"required":["kind","value"],"description":"Matches the named credential type and every type that extends it"}],"type":"object"}},"required":["id","action","selector"]}},"version":{"type":"integer","minimum":0,"exclusiveMinimum":true},"updatedBy":{"type":"string"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","kind","rules","version","updatedBy","createdAt","updatedAt"]},"warnings":{"type":"array","items":{"type":"object","properties":{"ruleId":{"type":"string"},"shadowedByRuleId":{"type":"string"}},"required":["ruleId","shadowedByRuleId"]}}},"required":["policy","warnings"]}}}}
```

## The credentialPublicDto.generated object

```json
{"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"credentialPublicDto.generated":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"type":{"type":"string"},"isManaged":{"type":"boolean"},"isGlobal":{"type":"boolean"},"isResolvable":{"type":"boolean"},"resolvableAllowFallback":{"type":"boolean"},"resolverId":{"type":"string","nullable":true},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"description":{"type":"string","nullable":true,"description":"Present only when credential descriptions are enabled."}},"required":["id","name","type","isManaged","isGlobal","isResolvable","resolvableAllowFallback","resolverId","createdAt","updatedAt"]}}}}
```

## The dataTablePublicDto.generated object

```json
{"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"dataTablePublicDto.generated":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the data table"},"name":{"type":"string","description":"Name of the data table"},"columns":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Column ID"},"name":{"type":"string","description":"Column name"},"type":{"type":"string","description":"Column data type","enum":["string","number","boolean","date"]},"index":{"type":"integer","description":"Column position"},"createdAt":{"type":"string","format":"date-time","description":"Timestamp when the column was created"},"updatedAt":{"type":"string","format":"date-time","description":"Timestamp when the column was last updated"}},"required":["id","name","type","index","createdAt","updatedAt"]},"description":"Column definitions"},"projectId":{"type":"string","description":"ID of the project this table belongs to"},"createdAt":{"type":"string","format":"date-time","description":"Timestamp when the table was created"},"updatedAt":{"type":"string","format":"date-time","description":"Timestamp when the table was last updated"},"sizeBytes":{"type":"integer","description":"Physical storage in bytes, including indexes and internal overhead. Not reduced immediately by row deletion, and may be a few seconds stale."}},"required":["id","name","columns","projectId","createdAt","updatedAt","sizeBytes"]}}}}
```

## The dataTableColumnPublicDto.generated object

```json
{"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"dataTableColumnPublicDto.generated":{"type":"object","properties":{"id":{"type":"string","description":"Column ID"},"name":{"type":"string","description":"Column name"},"type":{"type":"string","description":"Column data type","enum":["string","number","boolean","date"]},"index":{"type":"integer","description":"Column position"},"createdAt":{"type":"string","format":"date-time","description":"Timestamp when the column was created"},"updatedAt":{"type":"string","format":"date-time","description":"Timestamp when the column was last updated"},"dataTableId":{"type":"string","description":"ID of the data table this column belongs to"}},"required":["id","name","type","index","createdAt","updatedAt","dataTableId"]}}}}
```

## The executionTagsPublicDto.generated object

```json
{"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"executionTagsPublicDto.generated":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","readOnly":true},"name":{"type":"string"},"createdAt":{"type":"string","format":"date-time","readOnly":true},"updatedAt":{"type":"string","format":"date-time","readOnly":true}},"required":["id","name","createdAt","updatedAt"]}}}}}
```

## The ldapConfigurationPublicDto.generated object

```json
{"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"ldapConfigurationPublicDto.generated":{"type":"object","properties":{"loginEnabled":{"type":"boolean","description":"Whether LDAP login is enabled."},"loginLabel":{"type":"string","description":"Label shown on the LDAP login button."},"connectionUrl":{"type":"string","description":"LDAP server URL."},"allowUnauthorizedCerts":{"type":"boolean","description":"Whether to allow unauthorized (self-signed) certificates."},"connectionSecurity":{"type":"string","enum":["none","tls","startTls"],"description":"TLS/SSL security mode for the LDAP connection."},"connectionPort":{"type":"number","description":"LDAP server port."},"baseDn":{"type":"string","description":"Base DN for LDAP search queries."},"bindingAdminDn":{"type":"string","description":"DN of the LDAP admin user for binding."},"bindingAdminPassword":{"type":"string","description":"Password for the LDAP admin user. Redacted on GET; returns the blanking placeholder when a password is stored, empty string when unset. Send the blanking placeholder from a prior GET to keep the stored password unchanged."},"firstNameAttribute":{"type":"string","description":"LDAP attribute mapped to the user's first name."},"lastNameAttribute":{"type":"string","description":"LDAP attribute mapped to the user's last name."},"emailAttribute":{"type":"string","description":"LDAP attribute mapped to the user's email."},"loginIdAttribute":{"type":"string","description":"LDAP attribute used for login (usually the same as emailAttribute)."},"ldapIdAttribute":{"type":"string","description":"LDAP attribute that uniquely identifies a user."},"userFilter":{"type":"string","description":"Additional LDAP filter to apply when searching for users. Use an empty string for no additional filter."},"synchronizationEnabled":{"type":"boolean","description":"Whether automatic LDAP synchronization is enabled."},"synchronizationInterval":{"type":"number","description":"Interval in minutes between automatic synchronizations. Ignored if synchronizationEnabled is false."},"searchPageSize":{"type":"number","description":"Number of LDAP entries to fetch per search page."},"searchTimeout":{"type":"number","description":"LDAP search timeout in seconds."},"enforceEmailUniqueness":{"type":"boolean","description":"Whether to enforce that email addresses are unique across LDAP users. When true, if two users have the same email, only the first will be imported."}},"required":["loginEnabled","loginLabel","connectionUrl","allowUnauthorizedCerts","connectionSecurity","connectionPort","baseDn","bindingAdminDn","bindingAdminPassword","firstNameAttribute","lastNameAttribute","emailAttribute","loginIdAttribute","ldapIdAttribute","userFilter","synchronizationEnabled","synchronizationInterval","searchPageSize","searchTimeout","enforceEmailUniqueness"],"description":"Full LDAP configuration. Every field is returned by GET; send the full object back as PUT body.","additionalProperties":false}}}}
```

## The logStreamingDestinationPublicDto.generated object

```json
{"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"logStreamingDestinationPublicDto.generated":{"oneOf":[{"type":"object","properties":{"label":{"type":"string","minLength":1,"description":"Human-readable name shown in the UI."},"enabled":{"type":"boolean","description":"Whether the destination currently receives events."},"subscribedEvents":{"type":"array","items":{"type":"string"},"description":"Event names (or group prefixes, e.g. `n8n.workflow`, which matches all `n8n.workflow.*` events) this destination receives. Retrieve the full list of streamable event names from `GET /settings/log-streaming/event-types`."},"anonymizeAuditMessages":{"type":"boolean","description":"Whether audit message payloads are anonymized before being sent."},"circuitBreaker":{"type":"object","properties":{"maxFailures":{"type":"integer","minimum":0,"exclusiveMinimum":true,"description":"Maximum failures within the sliding window before the breaker opens."},"failureWindow":{"type":"integer","minimum":0,"exclusiveMinimum":true,"description":"Sliding window, in milliseconds, over which failures are counted."}},"description":"Circuit-breaker tuning for delivery. After repeated failures the destination stops sending for a cool-down window instead of hammering an unhealthy target. All fields are optional; sensible defaults apply when omitted."},"type":{"type":"string","enum":["webhook"],"description":"Sends each event as an HTTP request to a URL."},"url":{"type":"string","format":"uri","description":"Target URL that receives the event payload."},"method":{"type":"string","description":"HTTP method used for the request."},"sendHeaders":{"type":"boolean","description":"Whether to attach custom headers to the request."},"specifyHeaders":{"type":"string","description":"How custom headers are provided — `keypair` or `json`."},"headerParameters":{"type":"object","properties":{"parameters":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"value":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{},{}],"description":"Parameter value. Usually a string; numbers, booleans and null are also accepted."}},"required":["name","value"]}}},"required":["parameters"],"description":"Key-value pairs used when the matching `specify*` field is `keypair`."},"jsonHeaders":{"type":"string","description":"Custom headers as a JSON string when `specifyHeaders` is `json`."},"sendQuery":{"type":"boolean","description":"Whether to attach query parameters to the request."},"specifyQuery":{"type":"string","description":"How query parameters are provided — `keypair` or `json`."},"queryParameters":{"type":"object","properties":{"parameters":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"value":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{},{}],"description":"Parameter value. Usually a string; numbers, booleans and null are also accepted."}},"required":["name","value"]}}},"required":["parameters"],"description":"Key-value pairs used when the matching `specify*` field is `keypair`."},"jsonQuery":{"type":"string","description":"Query parameters as a JSON string when `specifyQuery` is `json`."},"options":{"type":"object","properties":{"timeout":{"type":"integer","minimum":0,"exclusiveMinimum":true,"description":"Request timeout in milliseconds."},"allowUnauthorizedCerts":{"type":"boolean","description":"Accept self-signed or otherwise invalid TLS certificates."},"queryParameterArrays":{"type":"string","enum":["indices","brackets","repeat"],"description":"How array-valued query parameters are serialized into the query string."},"redirect":{"type":"object","properties":{"redirect":{"type":"object","properties":{"followRedirects":{"type":"boolean","description":"Whether to follow HTTP redirects."},"maxRedirects":{"type":"integer","minimum":0,"exclusiveMinimum":true,"description":"Maximum number of redirects to follow."}}}},"required":["redirect"],"description":"Redirect-following behaviour."},"proxy":{"type":"object","properties":{"proxy":{"type":"object","properties":{"protocol":{"type":"string","enum":["https","http"],"description":"Proxy protocol."},"host":{"type":"string","description":"Proxy host, without protocol or port."},"port":{"type":"integer","minimum":0,"exclusiveMinimum":true,"description":"Proxy port."}},"required":["protocol","host","port"]}},"required":["proxy"],"description":"Outbound proxy configuration."},"socket":{"type":"object","properties":{"keepAlive":{"type":"boolean","description":"Whether to keep sockets open for reuse."},"maxSockets":{"type":"integer","minimum":0,"exclusiveMinimum":true,"description":"Maximum sockets per host kept open at once."},"maxFreeSockets":{"type":"integer","minimum":0,"exclusiveMinimum":true,"description":"Maximum idle sockets per host kept open."}},"description":"Connection socket options."}},"description":"Additional HTTP request options."},"id":{"type":"string","description":"Server-generated unique id of the destination. Returned in responses; not accepted in requests."}},"required":["type","url","id"]},{"type":"object","properties":{"label":{"type":"string","minLength":1,"description":"Human-readable name shown in the UI."},"enabled":{"type":"boolean","description":"Whether the destination currently receives events."},"subscribedEvents":{"type":"array","items":{"type":"string"},"description":"Event names (or group prefixes, e.g. `n8n.workflow`, which matches all `n8n.workflow.*` events) this destination receives. Retrieve the full list of streamable event names from `GET /settings/log-streaming/event-types`."},"anonymizeAuditMessages":{"type":"boolean","description":"Whether audit message payloads are anonymized before being sent."},"circuitBreaker":{"type":"object","properties":{"maxFailures":{"type":"integer","minimum":0,"exclusiveMinimum":true,"description":"Maximum failures within the sliding window before the breaker opens."},"failureWindow":{"type":"integer","minimum":0,"exclusiveMinimum":true,"description":"Sliding window, in milliseconds, over which failures are counted."}},"description":"Circuit-breaker tuning for delivery. After repeated failures the destination stops sending for a cool-down window instead of hammering an unhealthy target. All fields are optional; sensible defaults apply when omitted."},"type":{"type":"string","enum":["syslog"],"description":"Sends each event to a syslog server."},"host":{"type":"string","minLength":1,"description":"Syslog server host."},"port":{"type":"integer","minimum":0,"exclusiveMinimum":true,"description":"Syslog server port."},"protocol":{"type":"string","enum":["udp","tcp","tls"],"description":"Transport protocol."},"facility":{"type":"integer","minimum":0,"maximum":23,"description":"Syslog facility code (0–23, per RFC 5424). Common values: 0 Kernel, 1 User, 3 System, 13 Audit, 14 Alert, 16 Local0, 17 Local1, 18 Local2, 19 Local3, 20 Local4, 21 Local5, 22 Local6, 23 Local7."},"app_name":{"type":"string","description":"Application name reported in the syslog message."},"tlsCa":{"type":"string","description":"PEM-encoded CA certificate used when `protocol` is `tls`."},"id":{"type":"string","description":"Server-generated unique id of the destination. Returned in responses; not accepted in requests."}},"required":["type","host","id"]},{"type":"object","properties":{"label":{"type":"string","minLength":1,"description":"Human-readable name shown in the UI."},"enabled":{"type":"boolean","description":"Whether the destination currently receives events."},"subscribedEvents":{"type":"array","items":{"type":"string"},"description":"Event names (or group prefixes, e.g. `n8n.workflow`, which matches all `n8n.workflow.*` events) this destination receives. Retrieve the full list of streamable event names from `GET /settings/log-streaming/event-types`."},"anonymizeAuditMessages":{"type":"boolean","description":"Whether audit message payloads are anonymized before being sent."},"circuitBreaker":{"type":"object","properties":{"maxFailures":{"type":"integer","minimum":0,"exclusiveMinimum":true,"description":"Maximum failures within the sliding window before the breaker opens."},"failureWindow":{"type":"integer","minimum":0,"exclusiveMinimum":true,"description":"Sliding window, in milliseconds, over which failures are counted."}},"description":"Circuit-breaker tuning for delivery. After repeated failures the destination stops sending for a cool-down window instead of hammering an unhealthy target. All fields are optional; sensible defaults apply when omitted."},"type":{"type":"string","enum":["sentry"],"description":"Sends each event to a Sentry project."},"dsn":{"type":"string","format":"uri","description":"Sentry DSN the events are sent to."},"id":{"type":"string","description":"Server-generated unique id of the destination. Returned in responses; not accepted in requests."}},"required":["type","dsn","id"]}],"description":"A log streaming destination. The `type` field selects the variant and its type-specific fields: `webhook`, `syslog`, or `sentry`.","type":"object"}}}}
```

## The importResultDto.generated object

```json
{"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"importResultDto.generated":{"type":"object","properties":{"package":{"type":"object","properties":{"sourceN8nVersion":{"type":"string"},"sourceId":{"type":"string"},"exportedAt":{"type":"string","format":"date-time"}},"required":["sourceN8nVersion","sourceId","exportedAt"]},"workflows":{"type":"array","items":{"type":"object","properties":{"sourceWorkflowId":{"type":"string","description":"Workflow id as it appeared in the package."},"localId":{"type":"string","description":"Workflow id on the target instance: newly assigned for `created` (fresh under `workflowIdPolicy=new`, the package id under `source`), the existing workflow's id for `updated`/`skipped`."},"name":{"type":"string"},"projectId":{"type":"string"},"parentFolderId":{"type":"string","nullable":true},"activeVersionId":{"type":"string","nullable":true,"description":"Published version on the target instance, if any. `null` when the workflow is not published after import."},"isArchived":{"type":"boolean","description":"Whether the workflow is archived on the target after import. Under `new-version` this follows the package's `isArchived` flag. A skipped workflow keeps its own state."},"publishing":{"type":"object","properties":{"state":{"type":"string","enum":["published","unpublished","unchanged","blocked","failed"],"description":"`blocked` means the imported version could not be published and no version is active (for example because the workflow uses a stubbed credential, or uses a node type this instance does not have). When a prior published version remains active, `state` is `unchanged` with `skippedPublishReason` instead. `failed` means publish or unpublish was attempted but did not succeed."},"error":{"type":"string","description":"Present when `state` is `failed`. Explains why publish or unpublish could not be applied."},"blockedReason":{"type":"string","enum":["stub-credential","missing-node-type"],"description":"Present when `state` is `blocked`: the imported version could not be published and no version is active."},"skippedPublishReason":{"type":"string","enum":["stub-credential","missing-node-type"],"description":"Present when `state` is `unchanged` but the policy wanted to publish the imported version: a prior published version is still active (for example after an update with stubbed credentials)."}},"required":["state"],"description":"Outcome of applying the selected publishing policy to this workflow."},"status":{"type":"string","enum":["created","updated","skipped"],"description":"Import outcome for this package workflow."}},"required":["sourceWorkflowId","localId","name","projectId","parentFolderId","activeVersionId","isArchived","publishing","status"]}},"removedWorkflows":{"type":"array","items":{"type":"object","properties":{"workflowId":{"type":"string","description":"Id of the removed workflow on this instance."},"name":{"type":"string"},"projectId":{"type":"string","description":"Project the workflow was reconciled against."},"parentFolderId":{"type":"string","nullable":true,"description":"Folder that held the workflow, or null at the project root."},"deletion":{"type":"string","enum":["archived","deleted"],"description":"What actually happened, not what `overwriteDeletionPolicy` asked for: a `hard-delete` whose row could not be dropped yet is reported as `archived`."}},"required":["workflowId","name","projectId","parentFolderId","deletion"]},"description":"Workflows removed from the target during this import."},"removedFolders":{"type":"array","items":{"type":"object","properties":{"folderId":{"type":"string"},"name":{"type":"string"},"projectId":{"type":"string"},"parentFolderId":{"type":"string","nullable":true,"description":"Folder that held it, or null at the project root."}},"required":["folderId","name","projectId","parentFolderId"]},"description":"Folders the package does not define that reconciliation left empty, removed by `folderConflictPolicy=overwrite`. A folder still holding anything survives, so target-only content is never swept up. Empty under every other policy."},"folders":{"type":"array","items":{"type":"object","properties":{"sourceFolderId":{"type":"string","description":"Folder id as it appeared in the package."},"localId":{"type":"string","description":"Folder id on the target instance (equal to `sourceFolderId`; folder ids are reused)."},"name":{"type":"string"},"parentFolderId":{"type":"string","nullable":true,"description":"Resolved parent folder on the target, or `null` at the project root."},"status":{"type":"string","enum":["created","skipped"],"description":"Import outcome for this package folder."}},"required":["sourceFolderId","localId","name","parentFolderId","status"]},"description":"Folder shells created or skipped in the target project."},"projects":{"type":"array","items":{"type":"object","properties":{"sourceProjectId":{"type":"string","description":"Project id as it appeared in the package."},"localId":{"type":"string","description":"Project id on the target instance (equal to `sourceProjectId`; project ids are reused)."},"name":{"type":"string","description":"The project's name on the target: the package's under `overwrite`, the pre-existing one under `merge`."},"status":{"type":"string","enum":["created","updated","skipped"],"description":"Import outcome for this package project. `skipped` means the project already existed and `projectConflictPolicy=merge` left its details untouched — its contents were still imported."}},"required":["sourceProjectId","localId","name","status"]},"description":"Project shells created, or matched and then updated or left as-is (see `projectConflictPolicy`). Present for project packages; empty when importing loose workflows/folders."},"bindings":{"type":"object","properties":{"workflows":{"type":"object","additionalProperties":{"type":"string"}},"credentials":{"type":"object","additionalProperties":{"type":"string"},"description":"Credential id from `requirements.credentials` in the package manifest → resolved target credential id on the target instance. Covers both a matched existing credential and a credential created as a stub under `credentialMissingMode=create-stub`."}},"required":["workflows","credentials"],"description":"Source id → target id mappings produced during import, one map per entity type. Each value maps an id as it appeared in the package to the id on the target instance."},"credentials":{"type":"object","properties":{"matched":{"type":"array","items":{"type":"string"},"description":"Source credential ids from the package that matched existing credentials on the target instance."},"stubbed":{"type":"array","items":{"type":"string"},"description":"Source credential ids for which empty placeholder credentials were created in the target project."}},"required":["matched","stubbed"],"description":"Source credential ids grouped by whether they matched an existing credential or were created as stubs. Full source→target id mapping is in `bindings.credentials`."},"dataTables":{"type":"object","properties":{"matched":{"type":"integer","minimum":0},"created":{"type":"integer","minimum":0},"updated":{"type":"integer","minimum":0}},"required":["matched","created","updated"]},"variables":{"type":"object","properties":{"matched":{"type":"array","items":{"type":"string"},"description":"Variable names that resolved to an existing variable (importing project's scope first, then global) and were left untouched. A resolved variable this import rewrote is listed under `updated` instead."},"missing":{"type":"array","items":{"type":"string"},"description":"Variable names still unresolved after import. Under `variableMissingMode=do-nothing` these are warnings — the import still succeeds and nothing is created. A successful `create-stub` or `create-with-value` import normally leaves this empty."},"created":{"type":"array","items":{"type":"string"},"description":"Variable names created with a package value under `variableMissingMode=create-with-value`. Empty stubs are listed under `stubbed`."},"stubbed":{"type":"array","items":{"type":"string"},"description":"Variable names created with an empty value by this import under `variableMissingMode=create-stub`, or because `create-with-value` had no exported value. Empty for other outcomes."},"updated":{"type":"array","items":{"type":"string"},"description":"Variable names whose existing value this import replaced with the package value under `variableConflictPolicy=overwrite`. Empty for other policies."}},"required":["matched","missing","created","stubbed","updated"],"description":"Resolution of the package's variable requirements. Names only — values never travel in the response. For project packages these arrays are package-level unions of per-destination outcomes and may overlap (for example, a name may be created with a value in one project and stubbed in another); classification under concurrent external writes is best-effort."},"tags":{"type":"object","properties":{"matched":{"type":"array","items":{"type":"string"},"description":"Tags that resolved to an existing tag with the same id and name; attached as-is."},"created":{"type":"array","items":{"type":"string"},"description":"Tags created by this import, by name, under `tagMissingMode=create`."},"renamed":{"type":"array","items":{"type":"string"},"description":"Target tags renamed to the package name under `tagConflictPolicy=rename`; listed by their new name."},"reconciled":{"type":"array","items":{"type":"string"},"description":"Existing target tags re-keyed to the package (source) id on a name collision under `tagConflictPolicy=rename`; their name, workflow and folder taggings are kept."},"skipped":{"type":"array","items":{"type":"string"},"description":"Tags dropped from the import — not created, not renamed, and not attached to any imported workflow — under `tagMissingMode=do-nothing` or `tagConflictPolicy=skip`."}},"required":["matched","created","renamed","reconciled","skipped"],"description":"Resolution of the tags referenced by the imported workflows, matched by source id. Tag names only."}},"required":["package","workflows","removedWorkflows","removedFolders","folders","projects","bindings","credentials","dataTables","variables","tags"]}}}}
```

## The packageRequirementConsumer.generated object

```json
{"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"packageRequirementConsumer.generated":{"type":"object","properties":{"kind":{"type":"string","enum":["workflow","agent"]},"id":{"type":"string","minLength":1}},"required":["kind","id"]}}}}
```

## The importBlockingIssue.generated object

```json
{"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"importBlockingIssue.generated":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["workflow-conflict"]},"sourceWorkflowId":{"type":"string"},"existingWorkflowId":{"type":"string"},"name":{"type":"string"}},"required":["type","sourceWorkflowId","existingWorkflowId","name"],"description":"A workflow whose source id already matches one in the target project, under the `fail` conflict policy."},{"type":"object","properties":{"type":{"type":"string","enum":["workflow-lineage-conflict"]},"sourceWorkflowId":{"type":"string"},"projectId":{"type":"string"},"existingWorkflows":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"isArchived":{"type":"boolean"}},"required":["id","name","isArchived"]}}},"required":["type","sourceWorkflowId","projectId","existingWorkflows"],"description":"A package workflow whose source id matches multiple workflows in the target project. The import cannot choose a workflow safely."},{"type":"object","properties":{"type":{"type":"string","enum":["workflow-id-conflict"]},"sourceWorkflowId":{"type":"string"},"existingWorkflowId":{"type":"string"},"existingProjectId":{"type":"string","nullable":true,"description":"Project that owns the existing workflow, or null when no owning project could be determined."},"isArchived":{"type":"boolean","description":"Whether the existing workflow is archived."},"name":{"type":"string"}},"required":["type","sourceWorkflowId","existingWorkflowId","existingProjectId","isArchived","name"],"description":"A `source`-policy workflow whose id is already taken on the instance. Workflow ids are globally unique, so the id cannot be created in the target project. The existing workflow can be in another project, can lack an owner share, or can use a different source id. It can also be archived."},{"type":"object","properties":{"type":{"type":"string","enum":["workflow-folder-conflict"]},"sourceWorkflowId":{"type":"string"},"existingWorkflowId":{"type":"string"},"existingParentFolderId":{"type":"string","nullable":true,"description":"Folder that currently contains the matched workflow, or null when it lives at the project root."},"targetFolderId":{"type":"string","description":"Folder the import was requested to land in."},"name":{"type":"string"}},"required":["type","sourceWorkflowId","existingWorkflowId","existingParentFolderId","targetFolderId","name"],"description":"A workflow whose source id already matches one in the target project but lives outside the requested import folder. Folder-targeted imports cannot update workflows in place at a different location."},{"type":"object","properties":{"type":{"type":"string","enum":["workflow-archive-forbidden"]},"sourceWorkflowId":{"type":"string"},"existingWorkflowId":{"type":"string"},"name":{"type":"string"},"projectId":{"type":"string","description":"Project that owns the matched workflow."},"transition":{"type":"string","enum":["archive","unarchive"],"description":"The step the import needs to bring the workflow to the package's state."}},"required":["type","sourceWorkflowId","existingWorkflowId","name","projectId","transition"],"description":"A matched workflow whose archived state differs from the package, so the import must archive or unarchive it, but the caller lacks `workflow:delete` on it. Reported at plan time so nothing is written."},{"type":"object","properties":{"type":{"type":"string","enum":["credential-unresolved"]},"kind":{"type":"string","enum":["not_found","unknown_type","source_not_found","type_mismatch"]},"sourceId":{"type":"string"},"targetId":{"type":"string","description":"Target credential id: for `not_found`, the explicit binding that could not be resolved; for `type_mismatch`, the credential id that was resolved — via an explicit binding or automatic matching — but has the wrong type."},"expectedType":{"type":"string","description":"For `type_mismatch`: the credential type the package's workflow node requires."},"actualType":{"type":"string","description":"For `type_mismatch`: the actual type of the resolved target credential."},"usedBy":{"type":"array","items":{"$ref":"#/components/schemas/packageRequirementConsumer.generated"}}},"required":["type","kind","sourceId","usedBy"],"description":"A credential reference that could not be resolved in the target project."},{"type":"object","properties":{"type":{"type":"string","enum":["project-conflict"]},"kind":{"type":"string","enum":["fail-policy"]},"sourceProjectId":{"type":"string"},"name":{"type":"string","description":"The project's name as it appears in the package."}},"required":["type","kind","sourceProjectId","name"],"description":"A project defined by the package that already exists on this instance, under `projectConflictPolicy=fail`."},{"type":"object","properties":{"type":{"type":"string","enum":["folder-conflict"]},"kind":{"type":"string","enum":["parent-mismatch","id-in-other-project","fail-policy"]},"sourceFolderId":{"type":"string"},"name":{"type":"string"},"existingParentFolderId":{"type":"string","nullable":true,"description":"For `parent-mismatch`: the matched folder's current parent in the target."},"expectedParentFolderId":{"type":"string","nullable":true,"description":"For `parent-mismatch`: the parent the package would place the folder under."},"existingProjectId":{"type":"string","nullable":true,"description":"For `id-in-other-project`: the project that already owns the id."}},"required":["type","kind","sourceFolderId","name"],"description":"A package folder that cannot be imported as-is. `kind` distinguishes the cause: `parent-mismatch` (a folder matched by id sits under a different parent than the package places it), `id-in-other-project` (the folder id already exists in a different project — ids are globally unique), or `fail-policy` (the folder already exists and `folderConflictPolicy` is `fail`)."},{"type":"object","properties":{"type":{"type":"string","enum":["workflow-removal-forbidden"]},"workflowId":{"type":"string"},"name":{"type":"string"},"projectId":{"type":"string","description":"Project the workflow was being reconciled against."}},"required":["type","workflowId","name","projectId"],"description":"A workflow the import would remove but the caller lacks `workflow:delete` on: either `folderConflictPolicy=overwrite` would remove it because the package does not contain it, or it is named in the selection's `deletedWorkflowIds`. Reported instead of removing a subset, which would leave the project matching neither the package nor its previous state."},{"type":"object","properties":{"type":{"type":"string","enum":["workflow-removal-conflict"]},"sourceWorkflowId":{"type":"string"},"workflowId":{"type":"string","description":"The destination id of the selected workflow."},"projectId":{"type":"string"}},"required":["type","sourceWorkflowId","workflowId","projectId"],"description":"A selected workflow resolves to a destination id in `deletedWorkflowIds`. The import stops before any writes, including when the conflict policy is `skip`."},{"type":"object","properties":{"type":{"type":"string","enum":["folder-removal-forbidden"]},"folderId":{"type":"string"},"name":{"type":"string"},"projectId":{"type":"string","description":"Project the folder was being reconciled against."}},"required":["type","folderId","name","projectId"],"description":"A folder that `folderConflictPolicy=overwrite` would delete — the package does not define it and reconciliation leaves it empty — but the caller lacks `folder:delete` on the target project. Reported instead of removing a subset, which would leave the project matching neither the package nor its previous state."},{"type":"object","properties":{"type":{"type":"string","enum":["data-table-unresolved"]},"kind":{"type":"string","enum":["missing","id-conflict","name-conflict","schema-incompatible","module-disabled","permission-denied"]},"sourceId":{"type":"string","description":"Absent for import-wide failures (`module-disabled`, `permission-denied`)."},"name":{"type":"string"},"existingProjectId":{"type":"string","description":"For `id-conflict`: the project owning the conflicting target table."},"missingColumns":{"type":"array","items":{"type":"string"},"description":"For `schema-incompatible`: package columns absent from the target table."},"typeMismatches":{"type":"array","items":{"type":"object","properties":{"column":{"type":"string"},"expectedType":{"type":"string"},"actualType":{"type":"string"}},"required":["column","expectedType","actualType"]},"description":"For `schema-incompatible`: package columns whose target type differs."},"extraColumns":{"type":"array","items":{"type":"string"},"description":"For `schema-incompatible` under the `fail` policy: target columns not in the package schema."},"overwriteChanges":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"kind":{"type":"string","enum":["add-column"]},"column":{"type":"string"},"type":{"type":"string","enum":["string","number","boolean","date"]},"destructive":{"type":"boolean","enum":[false]}},"required":["kind","column","type","destructive"]},{"type":"object","properties":{"kind":{"type":"string","enum":["remove-column"]},"column":{"type":"string"},"type":{"type":"string","enum":["string","number","boolean","date"]},"destructive":{"type":"boolean","enum":[true]}},"required":["kind","column","type","destructive"]},{"type":"object","properties":{"kind":{"type":"string","enum":["change-column-type"]},"column":{"type":"string"},"from":{"type":"string","enum":["string","number","boolean","date"]},"to":{"type":"string","enum":["string","number","boolean","date"]},"destructive":{"type":"boolean","enum":[true]}},"required":["kind","column","from","to","destructive"]},{"type":"object","properties":{"kind":{"type":"string","enum":["rename-column"]},"from":{"type":"string"},"to":{"type":"string"},"destructive":{"type":"boolean","enum":[false]}},"required":["kind","from","to","destructive"]},{"type":"object","properties":{"kind":{"type":"string","enum":["reorder-columns"]},"destructive":{"type":"boolean","enum":[false]}},"required":["kind","destructive"]},{"type":"object","properties":{"kind":{"type":"string","enum":["rename-table"]},"from":{"type":"string"},"to":{"type":"string"},"destructive":{"type":"boolean","enum":[false]}},"required":["kind","from","to","destructive"]}],"description":"A single change `dataTableSchemaConflictPolicy=overwrite` would make (or made) to a matched target table's schema. `destructive` operations remove the values in a column.","type":"object"},"description":"For `schema-incompatible`: the changes `overwrite` would make to the target table."},"missingScope":{"type":"string","enum":["dataTable:create","dataTable:update"],"description":"For `permission-denied`: the project scope the user lacks."},"conflictingTableId":{"type":"string","description":"For `name-conflict`: the other table that holds or claims the name."},"currentName":{"type":"string","description":"For a rename `name-conflict`: the matched table's current name."},"usedBy":{"type":"array","items":{"$ref":"#/components/schemas/packageRequirementConsumer.generated"}}},"required":["type","kind","usedBy"],"description":"A data table referenced by the package's workflows that could not be resolved against the target project — under `dataTableMissingMode=must-preexist` or `dataTableSchemaConflictPolicy`, or because the data table module is disabled on this instance, or the caller lacks the scope the resolution needs."},{"type":"object","properties":{"type":{"type":"string","enum":["tag-unresolved"]},"kind":{"type":"string","enum":["rename-drift","name-collision","invalid-name","invalid-id","permission-denied"]},"sourceId":{"type":"string","description":"Tag id as it appears in the package. Absent for `permission-denied`."},"name":{"type":"string","description":"The (trimmed) package tag name. Absent for `permission-denied`."},"missingScope":{"type":"string","enum":["tag:create","tag:update"],"description":"For `permission-denied`: the global scope the importing user lacks."},"existingTagId":{"type":"string","description":"Id of the contested target tag — the different tag currently holding the wanted name, or the target tag a blocked reconcile would re-key. Absent when two package tags collide with each other rather than over a target tag."},"existingName":{"type":"string","description":"For `rename-drift`: the current name of the same-id target tag."},"usedBy":{"type":"array","items":{"$ref":"#/components/schemas/packageRequirementConsumer.generated"},"description":"Package consumers that reference the source tag. This excludes skipped consumers and workflows attached to the contested target tag."}},"required":["type","kind","usedBy"],"description":"A tag referenced by the package's workflows that could not be resolved on the target instance. `kind` distinguishes the cause: `rename-drift` (the same-id target tag carries a different name — under `tagConflictPolicy=fail`, or `rename` when the package name is held by another tag), `name-collision` (the id is free but the name belongs to a different tag under `tagMissingMode=create` with `tagConflictPolicy=fail`; also raised when two package tags collide with each other, or when the target tag a reconcile would re-key is claimed by another package tag), `invalid-name` / `invalid-id` (the package tag's name or id cannot be written on this instance), or `permission-denied` (the importing user lacks the global `tag:create` / `tag:update` scope the plan needs)."},{"type":"object","properties":{"type":{"type":"string","enum":["variable-unresolved"]},"name":{"type":"string","description":"Requirement name with no match in the target project or global scope."},"usedBy":{"type":"array","items":{"$ref":"#/components/schemas/packageRequirementConsumer.generated"}}},"required":["type","name","usedBy"],"description":"A variable reference that could not be resolved in the target project or the global scope, under `variableMissingMode=must-preexist`."},{"type":"object","properties":{"type":{"type":"string","enum":["variable-conflict"]},"name":{"type":"string","description":"Name of the variable whose value differs."},"projectId":{"type":"string","description":"Project owning the resolved variable. Absent when it resolved at the global scope."},"usedBy":{"type":"array","items":{"$ref":"#/components/schemas/packageRequirementConsumer.generated"}}},"required":["type","name","usedBy"],"description":"A variable that resolved in the target project or the global scope, but whose value differs from the one the package bundles for it, under `variableConflictPolicy=fail`. Also reported under `overwrite`, once per scope, when the projects of a package resolve one row and disagree about the value it should hold. Values are never reported — only the name and the scope the variable was found in."},{"type":"object","properties":{"type":{"type":"string","enum":["variable-limit-exceeded"]},"limit":{"type":"integer","description":"The instance variable quota."},"remaining":{"type":"integer","description":"Variable rows still available under the quota. The import is blocked because `requested` exceeds this, not because it exceeds `limit`."},"requested":{"type":"integer","description":"Number of new variable rows the import would create (destination-deduplicated)."},"names":{"type":"array","items":{"type":"string"},"description":"The unique variable names the import would create."},"usedBy":{"type":"array","items":{"$ref":"#/components/schemas/packageRequirementConsumer.generated"},"description":"Package consumers that reference any of the listed variables."}},"required":["type","limit","remaining","requested","names","usedBy"],"description":"Creating the package's variables under `create-stub` or `create-with-value` would exceed the instance variable quota (`quota:maxVariables`). Reported once for the whole import; nothing is created."},{"type":"object","properties":{"type":{"type":"string","enum":["missing-node-type"]},"nodeType":{"type":"string","description":"Full node type name as used by the package's workflows."},"typeVersion":{"type":"number","description":"Node type version the package's workflows use."},"usedBy":{"type":"array","items":{"$ref":"#/components/schemas/packageRequirementConsumer.generated"},"description":"Package consumers that use this node type and version."}},"required":["type","nodeType","typeVersion","usedBy"],"description":"A node type — or a version of a node type — used by a package workflow that this instance does not have, under `missingNodeTypeMode=fail`. One issue is reported per missing `(nodeType, typeVersion)` pair."},{"type":"object","properties":{"type":{"type":"string","enum":["policy-violation"]},"sourceWorkflowId":{"type":"string","description":"Workflow id as it appears in the package."},"name":{"type":"string"},"violations":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string"},"checkId":{"type":"string"},"message":{"type":"string"},"subject":{"type":"string"},"subjectType":{"type":"string"},"scope":{"type":"string"},"matchedRuleId":{"type":"string"}},"required":["kind","checkId","message"]}}},"required":["type","sourceWorkflowId","name","violations"],"description":"A workflow the content-import policy refused. Takes down the whole package rather than skipping the workflow: the import rewrites cross-workflow references to the ids each workflow would get, so dropping one leaves the workflows that call it pointing at a row nothing ever wrote."},{"type":"object","properties":{"type":{"type":"string","enum":["credential-policy-violation"]},"sourceId":{"type":"string","description":"Credential id as it appears in the package."},"name":{"type":"string"},"credentialType":{"type":"string"},"usedBy":{"type":"array","items":{"$ref":"#/components/schemas/packageRequirementConsumer.generated"},"description":"Package consumers that use this credential."},"violations":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string"},"checkId":{"type":"string"},"message":{"type":"string"},"subject":{"type":"string"},"subjectType":{"type":"string"},"scope":{"type":"string"},"matchedRuleId":{"type":"string"}},"required":["kind","checkId","message"]}}},"required":["type","sourceId","credentialType","usedBy","violations"],"description":"A credential the import would write that the credential-save policy refused, for example a stub of a credential type this instance does not allow. The import stops before any writes."}],"type":"object"},"packageRequirementConsumer.generated":{"type":"object","properties":{"kind":{"type":"string","enum":["workflow","agent"]},"id":{"type":"string","minLength":1}},"required":["kind","id"]}}}}
```

## The policyEffectivePublicDto.generated object

```json
{"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"policyEffectivePublicDto.generated":{"type":"object","properties":{"scopeId":{"type":"string","nullable":true},"rules":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1},"action":{"type":"string","enum":["allow","deny","delegate"]},"selector":{"oneOf":[{"type":"object","properties":{"kind":{"type":"string","enum":["name"]},"value":{"type":"string","minLength":1}},"required":["kind","value"]},{"type":"object","properties":{"kind":{"type":"string","enum":["package"]},"value":{"type":"string","minLength":1}},"required":["kind","value"]}],"type":"object"}},"required":["id","action","selector"]}},"defaultAction":{"type":"string","enum":["allow","deny","delegate"]},"version":{"type":"integer","minimum":0}},"required":["scopeId","rules","defaultAction","version"]}}}}
```

## The policyEffectiveWriteResultPublicDto.generated object

```json
{"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"policyEffectiveWriteResultPublicDto.generated":{"type":"object","properties":{"scopeId":{"type":"string","nullable":true},"rules":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1},"action":{"type":"string","enum":["allow","deny","delegate"]},"selector":{"oneOf":[{"type":"object","properties":{"kind":{"type":"string","enum":["name"]},"value":{"type":"string","minLength":1}},"required":["kind","value"]},{"type":"object","properties":{"kind":{"type":"string","enum":["package"]},"value":{"type":"string","minLength":1}},"required":["kind","value"]}],"type":"object"}},"required":["id","action","selector"]}},"defaultAction":{"type":"string","enum":["allow","deny","delegate"]},"version":{"type":"integer","minimum":0},"warnings":{"type":"array","items":{"type":"object","properties":{"ruleId":{"type":"string"},"shadowedByRuleId":{"type":"string"}},"required":["ruleId","shadowedByRuleId"]}}},"required":["scopeId","rules","defaultAction","version","warnings"]}}}}
```

## The policyDocumentWriteResultPublicDto.generated object

```json
{"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"policyDocumentWriteResultPublicDto.generated":{"type":"object","properties":{"policy":{"type":"object","properties":{"id":{"type":"string"},"kind":{"type":"string"},"rules":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1},"action":{"type":"string","enum":["allow","deny","delegate"]},"selector":{"oneOf":[{"type":"object","properties":{"kind":{"type":"string","enum":["name"]},"value":{"type":"string","minLength":1}},"required":["kind","value"]},{"type":"object","properties":{"kind":{"type":"string","enum":["package"]},"value":{"type":"string","minLength":1}},"required":["kind","value"]}],"type":"object"}},"required":["id","action","selector"]}},"version":{"type":"integer","minimum":0,"exclusiveMinimum":true},"updatedBy":{"type":"string"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","kind","rules","version","updatedBy","createdAt","updatedAt"]},"warnings":{"type":"array","items":{"type":"object","properties":{"ruleId":{"type":"string"},"shadowedByRuleId":{"type":"string"}},"required":["ruleId","shadowedByRuleId"]}}},"required":["policy","warnings"]}}}}
```

## The otelSettingsPublicDto.generated object

```json
{"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"otelSettingsPublicDto.generated":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether OpenTelemetry tracing is enabled."},"exporterProtocol":{"type":"string","default":"http/protobuf","description":"The wire protocol used to export spans. Collectors conventionally serve OTLP/HTTP on port 4318 and OTLP/gRPC on port 4317. The endpoint scheme (`http://` or `https://`) controls TLS for both protocols. Optional: a write that omits it selects `http/protobuf`, but an instance that sets this field to another value with an environment variable rejects that write with 409.","enum":["http/protobuf","grpc"]},"exporterEndpoint":{"type":"string","format":"uri","description":"The base URL of the OTLP collector to export traces to. The value must be an `http://` or `https://` URL, because the scheme selects TLS — for gRPC, `https://` uses SSL and `http://` is plaintext."},"exporterTracingPath":{"type":"string","description":"The path appended to the endpoint for the OTLP traces signal. Ignored when `exporterProtocol` is `grpc`, which takes no URL path."},"exporterServiceName":{"type":"string","minLength":1,"description":"The `service.name` resource attribute reported on every span."},"exporterHeaders":{"type":"string","description":"Additional headers sent to the OTLP collector, as a single string of comma-separated `key=value` pairs (e.g. `authorization=Bearer my-token,x-tenant-id=acme`). Whitespace around each key and value is trimmed; a value may contain spaces but not commas. Use an empty string when unused."},"tracesSampleRate":{"type":"number","description":"The ratio of traces to sample, between 0 (none) and 1 (all).","minimum":0,"maximum":1},"startupConnectivityTimeoutMs":{"type":"integer","description":"How long, in milliseconds, to wait when checking the collector is reachable. Also used as the timeout for the test-trace endpoint.","minimum":0},"includeNodeSpans":{"type":"boolean","description":"Whether to emit a span for each node execution in addition to the workflow span."},"emitWorkflowStartSpan":{"type":"boolean","description":"Whether to emit a `workflow.execute.started` span with a duration of 0 ms when each execution or resumed segment starts. Optional: a write that omits it selects `false`, but an instance that sets this field to `true` with an environment variable rejects that write with 409."},"emitNodeStartSpan":{"type":"boolean","description":"Whether to emit a `node.execute.started` span with a duration of 0 ms when each node span starts. This doubles the number of node spans. Has no effect when `includeNodeSpans` is false. Optional: a write that omits it selects `false`, but an instance that sets this field to `true` with an environment variable rejects that write with 409."},"injectOutbound":{"type":"boolean","description":"Whether to inject trace context headers into outbound HTTP requests made by nodes."},"productionExecutionsOnly":{"type":"boolean","description":"When true, only production executions of published (active) workflows are traced, not manual/test runs."}},"required":["enabled","exporterProtocol","exporterEndpoint","exporterTracingPath","exporterServiceName","exporterHeaders","tracesSampleRate","startupConnectivityTimeoutMs","includeNodeSpans","emitWorkflowStartSpan","emitNodeStartSpan","injectOutbound","productionExecutionsOnly"],"additionalProperties":false,"description":"The OpenTelemetry configuration, matching the fields exposed in the UI. On a write this is a full replacement: every field must be provided, except `exporterProtocol`, which defaults to `http/protobuf` when omitted, and `emitWorkflowStartSpan` and `emitNodeStartSpan`, which default to `false` when omitted. Fields managed declaratively via environment variables are returned with their effective value. A write can repeat these values, but changing them returns 409."}}}}
```

## The promotionProviderPublicDto.generated object

```json
{"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"promotionProviderPublicDto.generated":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":36},"name":{"type":"string"},"type":{"type":"string","enum":["git","gitlab"]},"authType":{"type":"string","enum":["ssh-key","token"]},"config":{"anyOf":[{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[1]},"publicKey":{"type":"string","minLength":1},"keyType":{"type":"string","enum":["ed25519","rsa"]}},"required":["schemaVersion","publicKey","keyType"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[1]}},"required":["schemaVersion"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[1]},"baseUrl":{"type":"string"}},"required":["schemaVersion","baseUrl"],"additionalProperties":false}]},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","name","type","authType","config","createdAt","updatedAt"]}}}}
```

## The promotionConnectionPublicDto.generated object

```json
{"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"promotionConnectionPublicDto.generated":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":36},"name":{"type":"string"},"scope":{"type":"string","enum":["instance","projects"]},"target":{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[1]},"remoteUrl":{"type":"string","minLength":1}},"required":["schemaVersion","remoteUrl"],"additionalProperties":false},"provider":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":36},"name":{"type":"string"},"type":{"type":"string","enum":["git","gitlab"]},"authType":{"type":"string","enum":["ssh-key","token"]},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","name","type","authType","createdAt","updatedAt"]},"configs":{"type":"object","properties":{"apply":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":36},"name":{"type":"string"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"checkout":{"type":"object","properties":{"hasCheckout":{"type":"boolean"},"matchesConfig":{"type":"boolean"}},"required":["hasCheckout","matchesConfig"]},"settings":{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[1]},"branchName":{"type":"string","minLength":1,"maxLength":255}},"required":["schemaVersion","branchName"],"additionalProperties":false}},"required":["id","name","createdAt","updatedAt","checkout","settings"]},"promote":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":36},"name":{"type":"string"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"checkout":{"type":"object","properties":{"hasCheckout":{"type":"boolean"},"matchesConfig":{"type":"boolean"}},"required":["hasCheckout","matchesConfig"]},"settings":{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[1]},"baseBranchName":{"type":"string","minLength":1,"maxLength":255},"createBranchOnPromotion":{"type":"boolean"}},"required":["schemaVersion","baseBranchName","createBranchOnPromotion"],"additionalProperties":false}},"required":["id","name","createdAt","updatedAt","checkout","settings"]}}},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","name","scope","target","provider","configs","createdAt","updatedAt"]}}}}
```

## The promotionCheckoutPublicDto.generated object

```json
{"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"promotionCheckoutPublicDto.generated":{"type":"object","properties":{"connectionId":{"type":"string","minLength":1,"maxLength":36},"configId":{"type":"string","minLength":1,"maxLength":36},"direction":{"type":"string","enum":["apply","promote"]},"branchName":{"type":"string"},"hasCheckout":{"type":"boolean"}},"required":["connectionId","configId","direction","branchName","hasCheckout"]}}}}
```

## The promotePackageResultDto.generated object

```json
{"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"promotePackageResultDto.generated":{"type":"object","properties":{"connectionId":{"type":"string","minLength":1,"maxLength":36},"configId":{"type":"string","minLength":1,"maxLength":36},"counts":{"type":"object","properties":{"workflows":{"type":"integer","minimum":0},"folders":{"type":"integer","minimum":0},"credentials":{"type":"integer","minimum":0},"dataTables":{"type":"integer","minimum":0},"variables":{"type":"integer","minimum":0},"tags":{"type":"integer","minimum":0}},"required":["workflows","folders","credentials","dataTables","variables","tags"]},"git":{"type":"object","properties":{"commitSha":{"type":"string"},"branchName":{"type":"string"}},"required":["commitSha","branchName"]}},"required":["connectionId","configId","counts","git"]}}}}
```

## The promotionCredentialExpressionValue.generated object

```json
{"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"promotionCredentialExpressionValue.generated":{"anyOf":[{"type":"string"},{"type":"array","items":{"$ref":"#/components/schemas/promotionCredentialExpressionValue.generated"}},{"type":"object","additionalProperties":{"$ref":"#/components/schemas/promotionCredentialExpressionValue.generated"}}],"description":"Values can be strings, arrays, or nested objects. Every leaf is an expression string."}}}}
```

## The applyPackageResultDto.generated object

```json
{"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"applyPackageResultDto.generated":{"oneOf":[{"type":"object","properties":{"connectionId":{"type":"string","minLength":1,"maxLength":36},"configId":{"type":"string","minLength":1,"maxLength":36},"git":{"type":"object","properties":{"commitSha":{"type":"string"},"branchName":{"type":"string"}},"required":["commitSha","branchName"]},"status":{"type":"string","enum":["applied"]},"counts":{"type":"object","properties":{"projects":{"type":"object","properties":{"created":{"type":"integer","minimum":0},"updated":{"type":"integer","minimum":0},"skipped":{"type":"integer","minimum":0},"deleted":{"type":"integer","minimum":0}},"required":["created","updated","skipped","deleted"]},"folders":{"type":"object","properties":{"created":{"type":"integer","minimum":0},"skipped":{"type":"integer","minimum":0},"removed":{"type":"integer","minimum":0}},"required":["created","skipped","removed"]},"workflows":{"type":"object","properties":{"created":{"type":"integer","minimum":0},"updated":{"type":"integer","minimum":0},"skipped":{"type":"integer","minimum":0},"archived":{"type":"integer","minimum":0},"deleted":{"type":"integer","minimum":0},"publishing":{"type":"object","properties":{"published":{"type":"integer","minimum":0},"unpublished":{"type":"integer","minimum":0},"unchanged":{"type":"integer","minimum":0},"blocked":{"type":"integer","minimum":0},"failed":{"type":"integer","minimum":0}},"required":["published","unpublished","unchanged","blocked","failed"]}},"required":["created","updated","skipped","archived","deleted","publishing"]},"credentials":{"type":"object","properties":{"matched":{"type":"integer","minimum":0},"stubbed":{"type":"integer","minimum":0}},"required":["matched","stubbed"]},"dataTables":{"type":"object","properties":{"matched":{"type":"integer","minimum":0},"created":{"type":"integer","minimum":0},"updated":{"type":"integer","minimum":0}},"required":["matched","created","updated"]},"variables":{"type":"object","properties":{"matched":{"type":"integer","minimum":0},"created":{"type":"integer","minimum":0},"updated":{"type":"integer","minimum":0},"stubbed":{"type":"integer","minimum":0},"missing":{"type":"integer","minimum":0}},"required":["matched","created","updated","stubbed","missing"]},"tags":{"type":"object","properties":{"matched":{"type":"integer","minimum":0},"created":{"type":"integer","minimum":0},"renamed":{"type":"integer","minimum":0},"reconciled":{"type":"integer","minimum":0},"skipped":{"type":"integer","minimum":0}},"required":["matched","created","renamed","reconciled","skipped"]}},"required":["projects","folders","workflows","credentials","dataTables","variables","tags"]},"warnings":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string","enum":["variable"]},"code":{"type":"string","enum":["variable-shadowed"]},"name":{"type":"string","minLength":1},"scope":{"type":"object","properties":{"kind":{"type":"string","enum":["global"]}},"required":["kind"]},"consumers":{"type":"array","items":{"type":"object","properties":{"project":{"type":"object","properties":{"id":{"type":"string","minLength":1},"name":{"type":"string"}},"required":["id","name"]},"workflows":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1},"name":{"type":"string"}},"required":["id","name"]},"minItems":1}},"required":["project","workflows"]},"minItems":1}},"required":["kind","code","name","scope","consumers"]}}},"required":["connectionId","configId","git","status","counts","warnings"]},{"type":"object","properties":{"connectionId":{"type":"string","minLength":1,"maxLength":36},"configId":{"type":"string","minLength":1,"maxLength":36},"git":{"type":"object","properties":{"commitSha":{"type":"string"},"branchName":{"type":"string"}},"required":["commitSha","branchName"]},"status":{"type":"string","enum":["blocked"]},"preflight":{"type":"object","properties":{"missingProjects":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1},"name":{"type":"string"},"icon":{"type":"object","properties":{"type":{"type":"string","enum":["emoji","icon"]},"value":{"type":"string"}},"required":["type","value"]},"description":{"type":"string"},"customTelemetryTags":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"value":{"type":"string"}},"required":["key","value"]}}},"required":["id","name"]},"description":"Projects in the package that do not exist on this instance. Preflight preserves their metadata without checking project creation rules. The project creation API can reject invalid values."},"missingBindings":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"kind":{"type":"string","enum":["credential"]},"sourceId":{"type":"string","minLength":1},"name":{"type":"string"},"credentialType":{"type":"string","minLength":1},"consumers":{"type":"array","items":{"type":"object","properties":{"project":{"type":"object","properties":{"id":{"type":"string","minLength":1},"name":{"type":"string"}},"required":["id","name"]},"workflows":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1},"name":{"type":"string"}},"required":["id","name"]},"minItems":1}},"required":["project","workflows"]},"minItems":1},"ownerProject":{"type":"object","properties":{"id":{"type":"string","minLength":1},"name":{"type":"string"}},"required":["id","name"]},"expressionData":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/promotionCredentialExpressionValue.generated"},"description":"Credential expressions."}},"required":["kind","sourceId","name","credentialType","consumers","ownerProject"]},{"type":"object","properties":{"kind":{"type":"string","enum":["variable"]},"name":{"type":"string","minLength":1},"variableType":{"type":"string","enum":["string"],"default":"string"},"scope":{"oneOf":[{"type":"object","properties":{"kind":{"type":"string","enum":["global"]}},"required":["kind"]},{"type":"object","properties":{"kind":{"type":"string","enum":["project"]},"project":{"type":"object","properties":{"id":{"type":"string","minLength":1},"name":{"type":"string"}},"required":["id","name"]}},"required":["kind","project"]}],"type":"object"},"sourceValue":{"type":"string","maxLength":1000},"consumers":{"type":"array","items":{"type":"object","properties":{"project":{"type":"object","properties":{"id":{"type":"string","minLength":1},"name":{"type":"string"}},"required":["id","name"]},"workflows":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1},"name":{"type":"string"}},"required":["id","name"]},"minItems":1}},"required":["project","workflows"]},"minItems":1}},"required":["kind","name","scope","consumers"]}],"type":"object"}},"accessRequirements":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string","enum":["credential"]},"sourceId":{"type":"string","minLength":1},"name":{"type":"string"},"credentialType":{"type":"string","minLength":1},"consumers":{"type":"array","items":{"type":"object","properties":{"project":{"type":"object","properties":{"id":{"type":"string","minLength":1},"name":{"type":"string"}},"required":["id","name"]},"workflows":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1},"name":{"type":"string"}},"required":["id","name"]},"minItems":1}},"required":["project","workflows"]},"minItems":1},"code":{"type":"string","enum":["access-required"]}},"required":["kind","sourceId","name","credentialType","consumers","code"]}},"conflicts":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"kind":{"type":"string","enum":["credential"]},"sourceId":{"type":"string","nullable":true,"minLength":1},"name":{"type":"string"},"expectedTypes":{"type":"array","items":{"type":"string"},"minItems":1},"filePath":{"type":"string"},"referenceFiles":{"type":"array","items":{"type":"string"},"minItems":1},"consumers":{"type":"array","items":{"type":"object","properties":{"project":{"type":"object","properties":{"id":{"type":"string","minLength":1},"name":{"type":"string"}},"required":["id","name"]},"workflows":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1},"name":{"type":"string"}},"required":["id","name"]},"minItems":1}},"required":["project","workflows"]},"minItems":1},"code":{"type":"string","enum":["missing-id"]}},"required":["kind","sourceId","name","expectedTypes","referenceFiles","consumers","code"]},{"type":"object","properties":{"kind":{"type":"string","enum":["credential"]},"sourceId":{"type":"string","nullable":true,"minLength":1},"name":{"type":"string"},"expectedTypes":{"type":"array","items":{"type":"string"},"minItems":1},"filePath":{"type":"string"},"referenceFiles":{"type":"array","items":{"type":"string"},"minItems":1},"consumers":{"type":"array","items":{"type":"object","properties":{"project":{"type":"object","properties":{"id":{"type":"string","minLength":1},"name":{"type":"string"}},"required":["id","name"]},"workflows":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1},"name":{"type":"string"}},"required":["id","name"]},"minItems":1}},"required":["project","workflows"]},"minItems":1},"code":{"type":"string","enum":["conflicting-types"]}},"required":["kind","sourceId","name","expectedTypes","referenceFiles","consumers","code"]},{"type":"object","properties":{"kind":{"type":"string","enum":["credential"]},"sourceId":{"type":"string","nullable":true,"minLength":1},"name":{"type":"string"},"expectedTypes":{"type":"array","items":{"type":"string"},"minItems":1},"filePath":{"type":"string"},"referenceFiles":{"type":"array","items":{"type":"string"},"minItems":1},"consumers":{"type":"array","items":{"type":"object","properties":{"project":{"type":"object","properties":{"id":{"type":"string","minLength":1},"name":{"type":"string"}},"required":["id","name"]},"workflows":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1},"name":{"type":"string"}},"required":["id","name"]},"minItems":1}},"required":["project","workflows"]},"minItems":1},"code":{"type":"string","enum":["unknown-type"]}},"required":["kind","sourceId","name","expectedTypes","referenceFiles","consumers","code"]},{"type":"object","properties":{"kind":{"type":"string","enum":["credential"]},"sourceId":{"type":"string","nullable":true,"minLength":1},"name":{"type":"string"},"expectedTypes":{"type":"array","items":{"type":"string"},"minItems":1},"filePath":{"type":"string"},"referenceFiles":{"type":"array","items":{"type":"string"},"minItems":1},"consumers":{"type":"array","items":{"type":"object","properties":{"project":{"type":"object","properties":{"id":{"type":"string","minLength":1},"name":{"type":"string"}},"required":["id","name"]},"workflows":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1},"name":{"type":"string"}},"required":["id","name"]},"minItems":1}},"required":["project","workflows"]},"minItems":1},"code":{"type":"string","enum":["unknown-owner"]}},"required":["kind","sourceId","name","expectedTypes","referenceFiles","consumers","code"]},{"type":"object","properties":{"kind":{"type":"string","enum":["credential"]},"sourceId":{"type":"string","nullable":true,"minLength":1},"name":{"type":"string"},"expectedTypes":{"type":"array","items":{"type":"string"},"minItems":1},"filePath":{"type":"string"},"referenceFiles":{"type":"array","items":{"type":"string"},"minItems":1},"consumers":{"type":"array","items":{"type":"object","properties":{"project":{"type":"object","properties":{"id":{"type":"string","minLength":1},"name":{"type":"string"}},"required":["id","name"]},"workflows":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1},"name":{"type":"string"}},"required":["id","name"]},"minItems":1}},"required":["project","workflows"]},"minItems":1},"code":{"type":"string","enum":["type-mismatch"]},"targetType":{"type":"string"}},"required":["kind","sourceId","name","expectedTypes","referenceFiles","consumers","code","targetType"]},{"type":"object","properties":{"kind":{"type":"string","enum":["credential"]},"sourceId":{"type":"string","nullable":true,"minLength":1},"name":{"type":"string"},"expectedTypes":{"type":"array","items":{"type":"string"},"minItems":1},"filePath":{"type":"string"},"referenceFiles":{"type":"array","items":{"type":"string"},"minItems":1},"consumers":{"type":"array","items":{"type":"object","properties":{"project":{"type":"object","properties":{"id":{"type":"string","minLength":1},"name":{"type":"string"}},"required":["id","name"]},"workflows":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1},"name":{"type":"string"}},"required":["id","name"]},"minItems":1}},"required":["project","workflows"]},"minItems":1},"code":{"type":"string","enum":["incompatible-usage-scope"]},"usageScope":{"type":"string"}},"required":["kind","sourceId","name","expectedTypes","referenceFiles","consumers","code","usageScope"]},{"type":"object","properties":{"kind":{"type":"string","enum":["variable"]},"code":{"type":"string","enum":["missing-definition"]},"name":{"type":"string","minLength":1},"referenceFiles":{"type":"array","items":{"type":"string"},"minItems":1},"consumers":{"type":"array","items":{"type":"object","properties":{"project":{"type":"object","properties":{"id":{"type":"string","minLength":1},"name":{"type":"string"}},"required":["id","name"]},"workflows":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1},"name":{"type":"string"}},"required":["id","name"]},"minItems":1}},"required":["project","workflows"]},"minItems":1}},"required":["kind","code","name","referenceFiles","consumers"]},{"type":"object","properties":{"kind":{"type":"string","enum":["project"]},"code":{"type":"string","enum":["project-not-team"]},"project":{"type":"object","properties":{"id":{"type":"string","minLength":1},"name":{"type":"string"}},"required":["id","name"]},"filePath":{"type":"string"},"workflows":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1},"name":{"type":"string"}},"required":["id","name"]}}},"required":["kind","code","project","filePath","workflows"]},{"type":"object","properties":{"kind":{"type":"string","enum":["data-table"]},"code":{"type":"string","enum":["destructive-change"]},"id":{"type":"string","minLength":1},"name":{"type":"string"},"consumers":{"type":"array","items":{"type":"object","properties":{"project":{"type":"object","properties":{"id":{"type":"string","minLength":1},"name":{"type":"string"}},"required":["id","name"]},"workflows":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1},"name":{"type":"string"}},"required":["id","name"]},"minItems":1}},"required":["project","workflows"]},"minItems":1},"changes":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"kind":{"type":"string","enum":["add-column"]},"column":{"type":"string"},"type":{"type":"string","enum":["string","number","boolean","date"]},"destructive":{"type":"boolean","enum":[false]}},"required":["kind","column","type","destructive"]},{"type":"object","properties":{"kind":{"type":"string","enum":["remove-column"]},"column":{"type":"string"},"type":{"type":"string","enum":["string","number","boolean","date"]},"destructive":{"type":"boolean","enum":[true]}},"required":["kind","column","type","destructive"]},{"type":"object","properties":{"kind":{"type":"string","enum":["change-column-type"]},"column":{"type":"string"},"from":{"type":"string","enum":["string","number","boolean","date"]},"to":{"type":"string","enum":["string","number","boolean","date"]},"destructive":{"type":"boolean","enum":[true]}},"required":["kind","column","from","to","destructive"]},{"type":"object","properties":{"kind":{"type":"string","enum":["rename-column"]},"from":{"type":"string"},"to":{"type":"string"},"destructive":{"type":"boolean","enum":[false]}},"required":["kind","from","to","destructive"]},{"type":"object","properties":{"kind":{"type":"string","enum":["reorder-columns"]},"destructive":{"type":"boolean","enum":[false]}},"required":["kind","destructive"]},{"type":"object","properties":{"kind":{"type":"string","enum":["rename-table"]},"from":{"type":"string"},"to":{"type":"string"},"destructive":{"type":"boolean","enum":[false]}},"required":["kind","from","to","destructive"]}],"type":"object"},"minItems":1}},"required":["kind","code","id","name","consumers","changes"]}],"type":"object"}},"warnings":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string","enum":["variable"]},"code":{"type":"string","enum":["variable-shadowed"]},"name":{"type":"string","minLength":1},"scope":{"type":"object","properties":{"kind":{"type":"string","enum":["global"]}},"required":["kind"]},"consumers":{"type":"array","items":{"type":"object","properties":{"project":{"type":"object","properties":{"id":{"type":"string","minLength":1},"name":{"type":"string"}},"required":["id","name"]},"workflows":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1},"name":{"type":"string"}},"required":["id","name"]},"minItems":1}},"required":["project","workflows"]},"minItems":1}},"required":["kind","code","name","scope","consumers"]}}},"required":["missingProjects","missingBindings","accessRequirements","conflicts","warnings"]}},"required":["connectionId","configId","git","status","preflight"]},{"type":"object","properties":{"connectionId":{"type":"string","minLength":1,"maxLength":36},"configId":{"type":"string","minLength":1,"maxLength":36},"git":{"type":"object","properties":{"commitSha":{"type":"string"},"branchName":{"type":"string"}},"required":["commitSha","branchName"]},"status":{"type":"string","enum":["source-changed"]}},"required":["connectionId","configId","git","status"]}],"type":"object"},"promotionCredentialExpressionValue.generated":{"anyOf":[{"type":"string"},{"type":"array","items":{"$ref":"#/components/schemas/promotionCredentialExpressionValue.generated"}},{"type":"object","additionalProperties":{"$ref":"#/components/schemas/promotionCredentialExpressionValue.generated"}}],"description":"Values can be strings, arrays, or nested objects. Every leaf is an expression string."}}}}
```

## The roleMappingRulePublicDto.generated object

```json
{"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"roleMappingRulePublicDto.generated":{"type":"object","properties":{"id":{"type":"string"},"expression":{"type":"string"},"role":{"type":"string"},"type":{"type":"string","enum":["instance","project"]},"order":{"type":"integer"},"projectIds":{"type":"array","items":{"type":"string"}},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","expression","role","type","order","projectIds","createdAt","updatedAt"]}}}}
```

## The rolePublicDto.generated object

```json
{"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"rolePublicDto.generated":{"type":"object","properties":{"slug":{"type":"string"},"displayName":{"type":"string"},"description":{"type":"string","nullable":true},"systemRole":{"type":"boolean"},"roleType":{"type":"string","enum":["project","global"]},"scopes":{"type":"array","items":{"type":"string"}},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["slug","displayName","description","systemRole","roleType","scopes","createdAt","updatedAt"]}}}}
```

## The securityPolicyPublicDto.generated object

```json
{"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"securityPolicyPublicDto.generated":{"type":"object","properties":{"personalSpacePublishing":{"type":"boolean","description":"Whether members may publish workflows and agents from their personal space."},"personalSpaceSharing":{"type":"boolean","description":"Whether members may share workflows and credentials from their personal space."},"publishedPersonalWorkflowsCount":{"type":"integer","description":"Number of currently published personal workflows, shown for awareness before tightening the policy.","readOnly":true},"sharedPersonalWorkflowsCount":{"type":"integer","description":"Number of personal workflows currently shared with other users.","readOnly":true},"sharedPersonalCredentialsCount":{"type":"integer","description":"Number of personal credentials currently shared with other users.","readOnly":true},"redactionEnforcement":{"type":"object","properties":{"floor":{"type":"string","enum":["off","production","all"],"description":"Minimum execution-data redaction level enforced across the instance."}},"required":["floor"],"additionalProperties":false}},"required":["personalSpacePublishing","personalSpaceSharing","publishedPersonalWorkflowsCount","sharedPersonalWorkflowsCount","sharedPersonalCredentialsCount","redactionEnforcement"],"additionalProperties":false}}}}
```

## The oidcConfigurationPublicDto.generated object

```json
{"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"oidcConfigurationPublicDto.generated":{"type":"object","properties":{"clientId":{"type":"string","description":"The client ID issued when registering n8n with the OIDC provider."},"clientSecret":{"type":"string","description":"The client secret issued when registering n8n with the OIDC provider. Redacted on read when set; never echoed back in plaintext."},"discoveryEndpoint":{"type":"string","format":"uri","description":"The OIDC provider's well-known discovery endpoint."},"loginEnabled":{"type":"boolean","description":"Whether OIDC single sign-on is enabled."},"prompt":{"type":"string","enum":["none","login","consent","select_account","create"],"description":"The prompt parameter to use when authenticating with the OIDC provider."},"authenticationContextClassReference":{"type":"array","items":{"type":"string"},"description":"ACR values to include in the authorization request (acr_values parameter), in order of preference."},"additionalScopes":{"type":"string","description":"Additional scopes to request, space separated. n8n always requests `openid`, `profile` and `email`."},"emailVerifiedRequired":{"type":"boolean","description":"Whether the identity provider must assert that the user's email address is verified before the login is accepted. When disabled, only an explicit negative assertion is rejected."},"rpInitiatedLogoutEnabled":{"type":"boolean","description":"Whether signing out of n8n also ends the session at the OIDC provider via RP-Initiated Logout. When disabled, sign-out is local to n8n only."}},"required":["clientId","clientSecret","discoveryEndpoint","loginEnabled","prompt","authenticationContextClassReference","additionalScopes","emailVerifiedRequired","rpInitiatedLogoutEnabled"],"additionalProperties":false}}}}
```

## The samlConfigurationPublicDto.generated object

```json
{"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"samlConfigurationPublicDto.generated":{"type":"object","properties":{"entityID":{"type":"string","description":"Service provider entity ID (metadata URL).","readOnly":true},"returnUrl":{"type":"string","description":"Assertion Consumer Service (ACS) return URL.","readOnly":true},"mapping":{"type":"object","properties":{"email":{"type":"string","description":"SAML attribute mapped to the user's email."},"firstName":{"type":"string","description":"SAML attribute mapped to the user's first name."},"lastName":{"type":"string","description":"SAML attribute mapped to the user's last name."},"userPrincipalName":{"type":"string","description":"SAML attribute mapped to the user's principal name."},"emailVerified":{"type":"string","description":"SAML attribute that states whether the identity provider verified the user's email. An empty string when unused."},"n8nInstanceRole":{"type":"string","description":"SAML attribute mapped to the n8n instance role."},"n8nProjectRoles":{"type":"array","items":{"type":"string"},"description":"SAML attributes mapped to n8n project roles, formatted as `<projectId>:<role>`."}},"required":["email","firstName","lastName","userPrincipalName","emailVerified","n8nInstanceRole","n8nProjectRoles"],"description":"Mapping of SAML attributes to n8n user fields.","additionalProperties":false},"metadata":{"type":"string","description":"Identity provider metadata in XML format. Redacted on read when set because it contains IdP certificates; never echoed back in plaintext. Use an empty string when unset."},"metadataUrl":{"type":"string","description":"URL to fetch identity provider metadata from. Use an empty string when unset."},"ignoreSSL":{"type":"boolean","description":"Whether to ignore SSL certificate errors when fetching metadata from a URL."},"loginBinding":{"type":"string","enum":["redirect","post"],"description":"SAML login request binding."},"loginEnabled":{"type":"boolean","description":"Whether SAML login is enabled."},"loginLabel":{"type":"string","description":"Label shown on the SAML login button."},"authnRequestsSigned":{"type":"boolean","description":"Whether authentication requests are signed."},"wantAssertionsSigned":{"type":"boolean","description":"Whether signed assertions are required."},"wantMessageSigned":{"type":"boolean","description":"Whether signed SAML messages are required."},"emailVerifiedRequired":{"type":"boolean","description":"Whether the identity provider must assert that the user's email address is verified before a login is linked to an existing user by email. When disabled, only an explicit negative assertion is rejected."},"signingPrivateKey":{"type":"string","description":"PEM-encoded private key for signing SAML AuthnRequests. Redacted on read when set; never echoed back in plaintext. Use an empty string when unset."},"signingCertificate":{"type":"string","description":"PEM-encoded certificate containing the public key matching the signing private key. Redacted on read when set; never echoed back in plaintext. Use an empty string when unset."},"acsBinding":{"type":"string","enum":["redirect","post"],"description":"Assertion Consumer Service binding."},"signatureConfig":{"type":"object","properties":{"prefix":{"type":"string"},"location":{"type":"object","properties":{"reference":{"type":"string"},"action":{"type":"string","enum":["before","after","prepend","append"]}},"required":["reference","action"],"additionalProperties":false}},"required":["prefix","location"],"description":"Configuration for the signature in SAML requests and responses.","additionalProperties":false},"relayState":{"type":"string","description":"Default relay state value for SAML requests. Use an empty string when unset."}},"required":["entityID","returnUrl","mapping","metadata","metadataUrl","ignoreSSL","loginBinding","loginEnabled","loginLabel","authnRequestsSigned","wantAssertionsSigned","wantMessageSigned","emailVerifiedRequired","signingPrivateKey","signingCertificate","acsBinding","signatureConfig","relayState"],"additionalProperties":false}}}}
```

## The tagPublicDto.generated object

```json
{"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"tagPublicDto.generated":{"type":"object","properties":{"id":{"type":"string","readOnly":true},"name":{"type":"string"},"createdAt":{"type":"string","format":"date-time","readOnly":true},"updatedAt":{"type":"string","format":"date-time","readOnly":true}},"required":["id","name","createdAt","updatedAt"]}}}}
```

## The workflowPublicDto.generated object

```json
{"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"workflowPublicDto.generated":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"description":{"type":"string","nullable":true},"active":{"type":"boolean","description":"Deprecated. Check whether `activeVersionId` is not null instead.","deprecated":true},"activeVersionId":{"type":"string","nullable":true},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"isArchived":{"type":"boolean"},"versionId":{"type":"string"},"versionCounter":{"type":"number"},"sourceWorkflowId":{"type":"string","nullable":true},"triggerCount":{"type":"number"},"nodes":{"type":"array","description":"Nodes that make up the workflow","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"webhookId":{"type":"string"},"disabled":{"type":"boolean"},"notesInFlow":{"type":"boolean"},"notes":{"type":"string"},"type":{"type":"string"},"typeVersion":{"type":"number"},"executeOnce":{"type":"boolean"},"alwaysOutputData":{"type":"boolean"},"retryOnFail":{"type":"boolean"},"maxTries":{"type":"number"},"waitBetweenTries":{"type":"number"},"continueOnFail":{"type":"boolean","description":"use onError instead","deprecated":true},"onError":{"type":"string"},"position":{"type":"array","items":{"type":"number"}},"parameters":{"type":"object","additionalProperties":true},"credentials":{"type":"object"},"customTelemetryTags":{"type":"object","properties":{"tag":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"value":{"type":"string"}},"required":["key","value"]}}}},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}}}},"connections":{"type":"object","description":"Connections between nodes, keyed by source node name"},"nodeGroups":{"type":"array","description":"Visual groupings of nodes shown as frames on the canvas","items":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the node group"},"name":{"type":"string","description":"Display name of the node group"},"description":{"type":"string","maxLength":155,"description":"Optional plain-text description of the node group"},"nodeIds":{"type":"array","description":"IDs of the nodes that belong to this group","items":{"type":"string"}}},"required":["id","name","nodeIds"]}},"settings":{"type":"object","description":"Execution and behaviour settings for the workflow","properties":{"saveExecutionProgress":{"oneOf":[{"type":"boolean"},{"type":"string","enum":["DEFAULT"]}]},"saveManualExecutions":{"oneOf":[{"type":"boolean"},{"type":"string","enum":["DEFAULT"]}]},"saveDataErrorExecution":{"type":"string","enum":["DEFAULT","all","none"]},"saveDataSuccessExecution":{"type":"string","enum":["DEFAULT","all","none"]},"executionTimeout":{"type":"number"},"errorWorkflow":{"type":"string","description":"The ID of the workflow that contains the error trigger node."},"timezone":{"type":"string"},"executionOrder":{"type":"string"},"binaryMode":{"type":"string","enum":["separate","combined"],"description":"Controls how binary data is resolved from a node's input. This is a derived, internal setting rather than something intended to be set programmatically. It is included in workflow responses for reference, but any value sent when creating or updating a workflow is ignored."},"callerPolicy":{"type":"string","enum":["any","none","workflowsFromAList","workflowsFromSameOwner"],"description":"Controls which workflows are allowed to call this workflow using the Execute Workflow node. Defaults to workflowsFromSameOwner.\n\nAvailable options:\n- `any`: Any workflow can call this workflow (no restrictions)\n- `none`: No other workflows can call this workflow (completely blocked)\n- `workflowsFromSameOwner` (default): Only workflows owned by the same project can call this workflow\n- `workflowsFromAList`: Only the workflows listed in `callerIds` can call this workflow"},"callerIds":{"type":"string","description":"Comma-separated list of workflow IDs allowed to call this workflow (only used with the workflowsFromAList policy)"},"timeSavedMode":{"type":"string","enum":["fixed","dynamic"],"description":"Controls how the time saved per execution is calculated.\n\nAvailable options:\n- `fixed`: Uses the value in `timeSavedPerExecution`. Use when the time saved is the same for every execution.\n- `dynamic`: Calculates the time saved from actual execution metrics. `timeSavedPerExecution` is ignored."},"timeSavedPerExecution":{"type":"number","description":"Estimated time saved per execution in minutes"},"redactionPolicy":{"type":"string","enum":["none","non-manual","manual-only","all"],"description":"Controls whether execution data is redacted for this workflow.\n\nAvailable options:\n- `none` (default): No redaction. All execution data is stored.\n- `non-manual`: Redact production (non-manually triggered) executions only.\n- `manual-only`: Redact manually triggered executions only.\n- `all`: Redact all executions, manual and production."},"availableInMCP":{"type":"boolean","description":"Controls whether this workflow is reachable over the Model Context Protocol (MCP). Defaults to false. The workflow must be active and must hold at least one active Webhook node."},"customTelemetryTags":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"value":{"type":"string"}},"required":["key","value"]}},"credentialResolverId":{"type":"string","description":"ID of the credential resolver that resolves credentials for this workflow. This is a derived, internal setting managed through the credential resolver configuration rather than something intended to be set programmatically. It is included in workflow responses for reference, but any value sent when creating or updating a workflow is ignored."}},"nullable":true},"staticData":{"type":"object","description":"Data the workflow keeps between executions","nullable":true},"pinData":{"type":"object","description":"Pinned sample data for nodes, keyed by node name","nullable":true},"meta":{"type":"object","description":"Workflow metadata such as template information","properties":{"onboardingId":{"type":"string"},"templateId":{"type":"string"},"instanceId":{"type":"string"},"templateCredsSetupCompleted":{"type":"boolean"}},"nullable":true},"tags":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","readOnly":true},"name":{"type":"string"},"createdAt":{"type":"string","format":"date-time","readOnly":true},"updatedAt":{"type":"string","format":"date-time","readOnly":true}},"required":["id","name","createdAt","updatedAt"]}},"shared":{"type":"array","items":{"type":"object","properties":{"role":{"type":"string"},"workflowId":{"type":"string"},"projectId":{"type":"string"},"project":{"type":"object","properties":{"id":{"type":"string","readOnly":true},"name":{"type":"string"},"type":{"type":"string","enum":["personal","team"],"readOnly":true},"icon":{"type":"object","description":"Icon of the project, or null when the project has none","properties":{"type":{"type":"string","enum":["emoji","icon"]},"value":{"type":"string"},"color":{"type":"string"}},"required":["type","value"],"nullable":true},"description":{"type":"string","nullable":true},"customTelemetryTags":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"value":{"type":"string"}},"required":["key","value"]}},"creatorId":{"type":"string","nullable":true},"createdAt":{"type":"string","format":"date-time","readOnly":true},"updatedAt":{"type":"string","format":"date-time","readOnly":true}},"required":["id","name","type","icon","description","customTelemetryTags","creatorId","createdAt","updatedAt"]},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["role","workflowId","projectId","project","createdAt","updatedAt"]}},"activeVersion":{"type":"object","nullable":true,"properties":{"versionId":{"type":"string"},"workflowId":{"type":"string"},"nodes":{"type":"array","description":"Nodes that make up the workflow","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"webhookId":{"type":"string"},"disabled":{"type":"boolean"},"notesInFlow":{"type":"boolean"},"notes":{"type":"string"},"type":{"type":"string"},"typeVersion":{"type":"number"},"executeOnce":{"type":"boolean"},"alwaysOutputData":{"type":"boolean"},"retryOnFail":{"type":"boolean"},"maxTries":{"type":"number"},"waitBetweenTries":{"type":"number"},"continueOnFail":{"type":"boolean","description":"use onError instead","deprecated":true},"onError":{"type":"string"},"position":{"type":"array","items":{"type":"number"}},"parameters":{"type":"object","additionalProperties":true},"credentials":{"type":"object"},"customTelemetryTags":{"type":"object","properties":{"tag":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"value":{"type":"string"}},"required":["key","value"]}}}},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}}}},"connections":{"type":"object","description":"Connections between nodes, keyed by source node name"},"nodeGroups":{"type":"array","description":"Visual groupings of nodes shown as frames on the canvas","items":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the node group"},"name":{"type":"string","description":"Display name of the node group"},"description":{"type":"string","maxLength":155,"description":"Optional plain-text description of the node group"},"nodeIds":{"type":"array","description":"IDs of the nodes that belong to this group","items":{"type":"string"}}},"required":["id","name","nodeIds"]}},"authors":{"type":"string"},"name":{"type":"string","nullable":true},"description":{"type":"string","nullable":true},"autosaved":{"type":"boolean"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"workflowPublishHistory":{"type":"array","items":{"type":"object","properties":{"id":{"type":"number"},"workflowId":{"type":"string"},"versionId":{"type":"string","nullable":true},"event":{"type":"string","enum":["activated","deactivated"]},"userId":{"type":"string","nullable":true},"createdAt":{"type":"string","format":"date-time"}},"required":["id","workflowId","versionId","event","userId","createdAt"]}}},"required":["versionId","workflowId","nodes","connections","nodeGroups","authors","name","description","autosaved","createdAt","updatedAt","workflowPublishHistory"]}},"required":["id","name","description","active","activeVersionId","createdAt","updatedAt","isArchived","versionId","versionCounter","sourceWorkflowId","triggerCount","nodes","connections","nodeGroups","settings","staticData","meta","shared","activeVersion"]}}}}
```

## The workflowPublishPublicDto.generated object

```json
{"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"workflowPublishPublicDto.generated":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"description":{"type":"string","nullable":true},"active":{"type":"boolean","description":"Deprecated. Check whether `activeVersionId` is not null instead.","deprecated":true},"activeVersionId":{"type":"string","nullable":true},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"isArchived":{"type":"boolean"},"versionId":{"type":"string"},"versionCounter":{"type":"number"},"sourceWorkflowId":{"type":"string","nullable":true},"triggerCount":{"type":"number"},"nodes":{"type":"array","description":"Nodes that make up the workflow","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"webhookId":{"type":"string"},"disabled":{"type":"boolean"},"notesInFlow":{"type":"boolean"},"notes":{"type":"string"},"type":{"type":"string"},"typeVersion":{"type":"number"},"executeOnce":{"type":"boolean"},"alwaysOutputData":{"type":"boolean"},"retryOnFail":{"type":"boolean"},"maxTries":{"type":"number"},"waitBetweenTries":{"type":"number"},"continueOnFail":{"type":"boolean","description":"use onError instead","deprecated":true},"onError":{"type":"string"},"position":{"type":"array","items":{"type":"number"}},"parameters":{"type":"object","additionalProperties":true},"credentials":{"type":"object"},"customTelemetryTags":{"type":"object","properties":{"tag":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"value":{"type":"string"}},"required":["key","value"]}}}},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}}}},"connections":{"type":"object","description":"Connections between nodes, keyed by source node name"},"nodeGroups":{"type":"array","description":"Visual groupings of nodes shown as frames on the canvas","items":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the node group"},"name":{"type":"string","description":"Display name of the node group"},"description":{"type":"string","maxLength":155,"description":"Optional plain-text description of the node group"},"nodeIds":{"type":"array","description":"IDs of the nodes that belong to this group","items":{"type":"string"}}},"required":["id","name","nodeIds"]}},"settings":{"type":"object","description":"Execution and behaviour settings for the workflow","properties":{"saveExecutionProgress":{"oneOf":[{"type":"boolean"},{"type":"string","enum":["DEFAULT"]}]},"saveManualExecutions":{"oneOf":[{"type":"boolean"},{"type":"string","enum":["DEFAULT"]}]},"saveDataErrorExecution":{"type":"string","enum":["DEFAULT","all","none"]},"saveDataSuccessExecution":{"type":"string","enum":["DEFAULT","all","none"]},"executionTimeout":{"type":"number"},"errorWorkflow":{"type":"string","description":"The ID of the workflow that contains the error trigger node."},"timezone":{"type":"string"},"executionOrder":{"type":"string"},"binaryMode":{"type":"string","enum":["separate","combined"],"description":"Controls how binary data is resolved from a node's input. This is a derived, internal setting rather than something intended to be set programmatically. It is included in workflow responses for reference, but any value sent when creating or updating a workflow is ignored."},"callerPolicy":{"type":"string","enum":["any","none","workflowsFromAList","workflowsFromSameOwner"],"description":"Controls which workflows are allowed to call this workflow using the Execute Workflow node. Defaults to workflowsFromSameOwner.\n\nAvailable options:\n- `any`: Any workflow can call this workflow (no restrictions)\n- `none`: No other workflows can call this workflow (completely blocked)\n- `workflowsFromSameOwner` (default): Only workflows owned by the same project can call this workflow\n- `workflowsFromAList`: Only the workflows listed in `callerIds` can call this workflow"},"callerIds":{"type":"string","description":"Comma-separated list of workflow IDs allowed to call this workflow (only used with the workflowsFromAList policy)"},"timeSavedMode":{"type":"string","enum":["fixed","dynamic"],"description":"Controls how the time saved per execution is calculated.\n\nAvailable options:\n- `fixed`: Uses the value in `timeSavedPerExecution`. Use when the time saved is the same for every execution.\n- `dynamic`: Calculates the time saved from actual execution metrics. `timeSavedPerExecution` is ignored."},"timeSavedPerExecution":{"type":"number","description":"Estimated time saved per execution in minutes"},"redactionPolicy":{"type":"string","enum":["none","non-manual","manual-only","all"],"description":"Controls whether execution data is redacted for this workflow.\n\nAvailable options:\n- `none` (default): No redaction. All execution data is stored.\n- `non-manual`: Redact production (non-manually triggered) executions only.\n- `manual-only`: Redact manually triggered executions only.\n- `all`: Redact all executions, manual and production."},"availableInMCP":{"type":"boolean","description":"Controls whether this workflow is reachable over the Model Context Protocol (MCP). Defaults to false. The workflow must be active and must hold at least one active Webhook node."},"customTelemetryTags":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"value":{"type":"string"}},"required":["key","value"]}},"credentialResolverId":{"type":"string","description":"ID of the credential resolver that resolves credentials for this workflow. This is a derived, internal setting managed through the credential resolver configuration rather than something intended to be set programmatically. It is included in workflow responses for reference, but any value sent when creating or updating a workflow is ignored."}},"nullable":true},"staticData":{"type":"object","description":"Data the workflow keeps between executions","nullable":true},"pinData":{"type":"object","description":"Pinned sample data for nodes, keyed by node name","nullable":true},"meta":{"type":"object","description":"Workflow metadata such as template information","properties":{"onboardingId":{"type":"string"},"templateId":{"type":"string"},"instanceId":{"type":"string"},"templateCredsSetupCompleted":{"type":"boolean"}},"nullable":true},"tags":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","readOnly":true},"name":{"type":"string"},"createdAt":{"type":"string","format":"date-time","readOnly":true},"updatedAt":{"type":"string","format":"date-time","readOnly":true}},"required":["id","name","createdAt","updatedAt"]}},"activeVersion":{"type":"object","nullable":true,"properties":{"versionId":{"type":"string"},"workflowId":{"type":"string"},"nodes":{"type":"array","description":"Nodes that make up the workflow","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"webhookId":{"type":"string"},"disabled":{"type":"boolean"},"notesInFlow":{"type":"boolean"},"notes":{"type":"string"},"type":{"type":"string"},"typeVersion":{"type":"number"},"executeOnce":{"type":"boolean"},"alwaysOutputData":{"type":"boolean"},"retryOnFail":{"type":"boolean"},"maxTries":{"type":"number"},"waitBetweenTries":{"type":"number"},"continueOnFail":{"type":"boolean","description":"use onError instead","deprecated":true},"onError":{"type":"string"},"position":{"type":"array","items":{"type":"number"}},"parameters":{"type":"object","additionalProperties":true},"credentials":{"type":"object"},"customTelemetryTags":{"type":"object","properties":{"tag":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"value":{"type":"string"}},"required":["key","value"]}}}},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}}}},"connections":{"type":"object","description":"Connections between nodes, keyed by source node name"},"nodeGroups":{"type":"array","description":"Visual groupings of nodes shown as frames on the canvas","items":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the node group"},"name":{"type":"string","description":"Display name of the node group"},"description":{"type":"string","maxLength":155,"description":"Optional plain-text description of the node group"},"nodeIds":{"type":"array","description":"IDs of the nodes that belong to this group","items":{"type":"string"}}},"required":["id","name","nodeIds"]}},"authors":{"type":"string"},"name":{"type":"string","nullable":true},"description":{"type":"string","nullable":true},"autosaved":{"type":"boolean"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"workflowPublishHistory":{"type":"array","items":{"type":"object","properties":{"id":{"type":"number"},"workflowId":{"type":"string"},"versionId":{"type":"string","nullable":true},"event":{"type":"string","enum":["activated","deactivated"]},"userId":{"type":"string","nullable":true},"createdAt":{"type":"string","format":"date-time"}},"required":["id","workflowId","versionId","event","userId","createdAt"]}}},"required":["versionId","workflowId","nodes","connections","nodeGroups","authors","name","description","autosaved","createdAt","updatedAt","workflowPublishHistory"]}},"required":["id","name","description","active","activeVersionId","createdAt","updatedAt","isArchived","versionId","versionCounter","sourceWorkflowId","triggerCount","nodes","connections","nodeGroups","settings","staticData","meta","activeVersion"]}}}}
```

## The workflowTagsPublicDto.generated object

```json
{"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"workflowTagsPublicDto.generated":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","readOnly":true},"name":{"type":"string"},"createdAt":{"type":"string","format":"date-time","readOnly":true},"updatedAt":{"type":"string","format":"date-time","readOnly":true}},"required":["id","name","createdAt","updatedAt"]}}}}}
```
