> 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 audit object

```json
{"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"audit":{"type":"object","properties":{"Credentials Risk Report":{"type":"object"},"Database Risk Report":{"type":"object"},"Filesystem Risk Report":{"type":"object"},"Nodes Risk Report":{"type":"object"},"Instance Risk Report":{"type":"object"}}}}}}
```

## The ldap-configuration object

```json
{"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"ldap-configuration":{"type":"object","additionalProperties":false,"description":"Full LDAP configuration. Every field is returned by GET; send the full object back as PUT body.\n","required":["loginEnabled","loginLabel","connectionUrl","allowUnauthorizedCerts","connectionSecurity","connectionPort","baseDn","bindingAdminDn","bindingAdminPassword","firstNameAttribute","lastNameAttribute","emailAttribute","loginIdAttribute","ldapIdAttribute","userFilter","synchronizationEnabled","synchronizationInterval","searchPageSize","searchTimeout","enforceEmailUniqueness"],"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":"integer","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.\n"},"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.\n"},"synchronizationEnabled":{"type":"boolean","description":"Whether automatic LDAP synchronization is enabled."},"synchronizationInterval":{"type":"integer","description":"Interval in minutes between automatic synchronizations. Ignored if synchronizationEnabled is false."},"searchPageSize":{"type":"integer","description":"Number of LDAP entries to fetch per search page."},"searchTimeout":{"type":"integer","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.\n"}}}}}}
```

## The ldap-configuration.update object

```json
{"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"ldap-configuration.update":{"type":"object","additionalProperties":false,"description":"Full LDAP configuration. Use empty strings for unset fields.","required":["loginEnabled","loginLabel","connectionUrl","allowUnauthorizedCerts","connectionSecurity","connectionPort","baseDn","bindingAdminDn","bindingAdminPassword","firstNameAttribute","lastNameAttribute","emailAttribute","loginIdAttribute","ldapIdAttribute","userFilter","synchronizationEnabled","synchronizationInterval","searchPageSize","searchTimeout","enforceEmailUniqueness"],"properties":{"loginEnabled":{"type":"boolean","description":"Whether LDAP login is enabled. Setting this to false is destructive — it deletes all stored LDAP user identities and disables synchronization.\n"},"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":"integer","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. To keep an existing password unchanged, submit the blanking placeholder from a prior GET response. Use an empty string to clear the password.\n"},"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.\n"},"synchronizationEnabled":{"type":"boolean","description":"Whether automatic LDAP synchronization is enabled."},"synchronizationInterval":{"type":"integer","description":"Interval in minutes between automatic synchronizations. Ignored if synchronizationEnabled is false."},"searchPageSize":{"type":"integer","description":"Number of LDAP entries to fetch per search page."},"searchTimeout":{"type":"integer","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.\n"}}}}}}
```

## The ldap-sync-history object

```json
{"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"ldap-sync-history":{"type":"object","additionalProperties":false,"description":"LDAP synchronization history record.","required":["id","runMode","status","startedAt","endedAt","scanned","created","updated","disabled","error"],"properties":{"id":{"type":"integer","description":"Unique identifier for this sync run."},"runMode":{"type":"string","enum":["dry","live"],"description":"Whether the sync was a dry run or applied live."},"status":{"type":"string","description":"Status of the synchronization (e.g., success, error)."},"startedAt":{"type":"string","format":"date-time","description":"Timestamp when the synchronization started."},"endedAt":{"type":"string","format":"date-time","description":"Timestamp when the synchronization completed."},"scanned":{"type":"integer","description":"Number of LDAP entries scanned during synchronization."},"created":{"type":"integer","description":"Number of new users created during synchronization."},"updated":{"type":"integer","description":"Number of existing users updated during synchronization."},"disabled":{"type":"integer","description":"Number of users disabled during synchronization."},"error":{"type":"string","description":"Error message if the synchronization failed. Empty string if successful."}}}}}}
```

## The ldap-sync-history.list object

```json
{"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"ldap-sync-history.list":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/ldap-sync-history"}},"nextCursor":{"type":"string","nullable":true,"description":"Paginate through the synchronization history by setting the cursor parameter to the nextCursor attribute returned by the previous request. A null value means there are no more records.\n"}}},"ldap-sync-history":{"type":"object","additionalProperties":false,"description":"LDAP synchronization history record.","required":["id","runMode","status","startedAt","endedAt","scanned","created","updated","disabled","error"],"properties":{"id":{"type":"integer","description":"Unique identifier for this sync run."},"runMode":{"type":"string","enum":["dry","live"],"description":"Whether the sync was a dry run or applied live."},"status":{"type":"string","description":"Status of the synchronization (e.g., success, error)."},"startedAt":{"type":"string","format":"date-time","description":"Timestamp when the synchronization started."},"endedAt":{"type":"string","format":"date-time","description":"Timestamp when the synchronization completed."},"scanned":{"type":"integer","description":"Number of LDAP entries scanned during synchronization."},"created":{"type":"integer","description":"Number of new users created during synchronization."},"updated":{"type":"integer","description":"Number of existing users updated during synchronization."},"disabled":{"type":"integer","description":"Number of users disabled during synchronization."},"error":{"type":"string","description":"Error message if the synchronization failed. Empty string if successful."}}}}}}
```

## The ldap-sync.update object

```json
{"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"ldap-sync.update":{"type":"object","additionalProperties":false,"description":"Request body for triggering an LDAP synchronization.","required":["type"],"properties":{"type":{"type":"string","enum":["live","dry"],"description":"Type of synchronization. 'live' applies changes to the database, 'dry' performs a test run without persisting changes.\n"}}}}}}
```

## The security-policy object

```json
{"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"security-policy":{"type":"object","additionalProperties":false,"required":["personalSpacePublishing","personalSpaceSharing","publishedPersonalWorkflowsCount","sharedPersonalWorkflowsCount","sharedPersonalCredentialsCount","redactionEnforcement"],"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","readOnly":true,"description":"Number of currently published personal workflows, shown for awareness before tightening the policy."},"sharedPersonalWorkflowsCount":{"type":"integer","readOnly":true,"description":"Number of personal workflows currently shared with other users."},"sharedPersonalCredentialsCount":{"type":"integer","readOnly":true,"description":"Number of personal credentials currently shared with other users."},"redactionEnforcement":{"type":"object","additionalProperties":false,"required":["floor"],"properties":{"floor":{"type":"string","enum":["off","production","all"],"description":"Minimum execution-data redaction level enforced across the instance."}}}}}}}}
```

## The security-policy.update object

```json
{"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"security-policy.update":{"type":"object","additionalProperties":false,"description":"Full security policy. All writable fields must be provided; partial updates are not supported.","required":["personalSpacePublishing","personalSpaceSharing","redactionEnforcement"],"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."},"redactionEnforcement":{"type":"object","additionalProperties":false,"required":["floor"],"properties":{"floor":{"type":"string","enum":["off","production","all"],"description":"Minimum execution-data redaction level enforced across the instance."}}},"publishedPersonalWorkflowsCount":{"type":"integer","description":"Read-only usage count returned by GET. Ignored on write so a GET response can be sent back as a PUT body.\n"},"sharedPersonalWorkflowsCount":{"type":"integer","description":"Read-only usage count returned by GET. Ignored on write so a GET response can be sent back as a PUT body.\n"},"sharedPersonalCredentialsCount":{"type":"integer","description":"Read-only usage count returned by GET. Ignored on write so a GET response can be sent back as a PUT body.\n"}}}}}}
```

## The otel-settings object

```json
{"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"otel-settings":{"type":"object","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. Fields managed declaratively via environment variables are returned with their effective value and ignored on write.\n","required":["enabled","exporterEndpoint","exporterTracingPath","exporterServiceName","exporterHeaders","tracesSampleRate","startupConnectivityTimeoutMs","includeNodeSpans","injectOutbound","productionExecutionsOnly"],"properties":{"enabled":{"type":"boolean","description":"Whether OpenTelemetry tracing is enabled."},"exporterProtocol":{"type":"string","enum":["http/protobuf","grpc"],"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.\n"},"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.\n"},"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.\n"},"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.\n"},"tracesSampleRate":{"type":"number","minimum":0,"maximum":1,"description":"The ratio of traces to sample, between 0 (none) and 1 (all)."},"startupConnectivityTimeoutMs":{"type":"integer","minimum":0,"description":"How long, in milliseconds, to wait when checking the collector is reachable. Also used as the timeout for the test-trace endpoint.\n"},"includeNodeSpans":{"type":"boolean","description":"Whether to emit a span for each node execution in addition to the workflow span."},"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.\n"}}}}}}
```

## The otel-test-trace object

```json
{"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"otel-test-trace":{"type":"object","additionalProperties":false,"description":"The connection details to test against an OTLP collector. Fields managed declaratively via environment variables are overridden with their effective value before the test is sent.\n","required":["exporterEndpoint","exporterTracingPath","exporterServiceName","exporterHeaders","startupConnectivityTimeoutMs"],"properties":{"exporterProtocol":{"type":"string","enum":["http/protobuf","grpc"],"default":"http/protobuf","description":"The wire protocol used to send the test span. 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: omitting it selects `http/protobuf`, unless an environment variable manages this field, which then supplies the value.\n"},"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.\n"},"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.\n"},"exporterServiceName":{"type":"string","minLength":1,"description":"The `service.name` resource attribute reported on the test 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.\n"},"startupConnectivityTimeoutMs":{"type":"integer","minimum":0,"description":"How long, in milliseconds, to wait for the collector to respond."}}}}}}
```

## The otel-test-trace-result object

```json
{"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"otel-test-trace-result":{"type":"object","additionalProperties":false,"description":"The outcome of the test connection to the OTLP collector.","required":["success"],"properties":{"success":{"type":"boolean","description":"Whether the test span was accepted by the collector."},"error":{"type":"string","description":"The error reported by the collector or exporter. Present only when `success` is false.\n"}}}}}}
```

## The oidc-configuration object

```json
{"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"oidc-configuration":{"type":"object","additionalProperties":false,"required":["clientId","clientSecret","discoveryEndpoint","loginEnabled","prompt","authenticationContextClassReference","additionalScopes","emailVerifiedRequired","rpInitiatedLogoutEnabled"],"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.\n"},"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.\n"},"additionalScopes":{"type":"string","description":"Additional scopes to request, space separated. n8n always requests `openid`, `profile` and `email`.\n"},"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.\n"},"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.\n"}}}}}}
```

## The oidc-configuration.update object

```json
{"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"oidc-configuration.update":{"type":"object","additionalProperties":false,"description":"Full OIDC SSO configuration to set. This is a full replacement: every writable field must be provided. Partial updates are rejected. Submit the redacted secret sentinel  for `clientSecret` to keep the stored secret unchanged.\n","required":["clientId","clientSecret","discoveryEndpoint","loginEnabled","prompt","authenticationContextClassReference","additionalScopes","emailVerifiedRequired","rpInitiatedLogoutEnabled"],"properties":{"clientId":{"type":"string","minLength":1,"description":"The client ID issued when registering n8n with the OIDC provider."},"clientSecret":{"type":"string","minLength":1,"description":"The client secret issued when registering n8n with the OIDC provider. Submit the redacted sentinel value returned on read to keep the stored secret unchanged.\n"},"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."},"authenticationContextClassReference":{"type":"array","items":{"type":"string"},"description":"ACR values to include in the authorization request (acr_values parameter), in order of preference. Use an empty array when unused.\n"},"additionalScopes":{"type":"string","description":"Additional scopes to request, space separated. n8n always requests `openid`, `profile` and `email`. Use an empty string when unused.\n"},"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.\n"},"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.\n"}}}}}}
```

## The saml-configuration object

```json
{"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"saml-configuration":{"type":"object","additionalProperties":false,"required":["entityID","returnUrl","mapping","metadata","metadataUrl","ignoreSSL","loginBinding","loginEnabled","loginLabel","authnRequestsSigned","wantAssertionsSigned","wantMessageSigned","signingPrivateKey","signingCertificate","acsBinding","signatureConfig","relayState"],"properties":{"entityID":{"type":"string","readOnly":true,"description":"Service provider entity ID (metadata URL)."},"returnUrl":{"type":"string","readOnly":true,"description":"Assertion Consumer Service (ACS) return URL."},"mapping":{"type":"object","description":"Mapping of SAML attributes to n8n user fields.","additionalProperties":false,"required":["email","firstName","lastName","userPrincipalName","n8nInstanceRole","n8nProjectRoles"],"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."},"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>`."}}},"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.\n"},"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."},"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.\n"},"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.\n"},"acsBinding":{"type":"string","enum":["redirect","post"],"description":"Assertion Consumer Service binding."},"signatureConfig":{"type":"object","description":"Configuration for the signature in SAML requests and responses.","additionalProperties":false,"required":["prefix","location"],"properties":{"prefix":{"type":"string"},"location":{"type":"object","additionalProperties":false,"required":["reference","action"],"properties":{"reference":{"type":"string"},"action":{"type":"string","enum":["before","after","prepend","append"]}}}}},"relayState":{"type":"string","description":"Default relay state value for SAML requests. Use an empty string when unset."}}}}}}
```

## The saml-configuration.update object

```json
{"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"saml-configuration.update":{"type":"object","additionalProperties":false,"description":"Full SAML SSO configuration. Every field must be provided; use empty strings or empty arrays when a value is unset. Partial updates are not supported.\n","required":["mapping","metadata","metadataUrl","ignoreSSL","loginBinding","loginEnabled","loginLabel","authnRequestsSigned","wantAssertionsSigned","wantMessageSigned","signingPrivateKey","signingCertificate","acsBinding","signatureConfig","relayState"],"properties":{"mapping":{"type":"object","description":"Mapping of SAML attributes to n8n user fields. Use empty strings / empty arrays for unused attributes.","additionalProperties":false,"required":["email","firstName","lastName","userPrincipalName","n8nInstanceRole","n8nProjectRoles"],"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."},"n8nInstanceRole":{"type":"string","description":"SAML attribute mapped to the n8n instance role. Use an empty string when unused."},"n8nProjectRoles":{"type":"array","items":{"type":"string"},"description":"SAML attributes mapped to n8n project roles, formatted as `<projectId>:<role>`. Use an empty array when unused.\n"}}},"metadata":{"type":"string","description":"Identity provider metadata in XML format. Use an empty string to clear stored metadata (also clears metadataUrl when no URL is provided). Use the redaction placeholder from a prior GET to leave an existing value unchanged.\n"},"metadataUrl":{"type":"string","description":"URL to fetch identity provider metadata from. Use an empty string to clear a stored URL.\n"},"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."},"signingPrivateKey":{"type":"string","description":"PEM-encoded private key for signing SAML AuthnRequests. Use an empty string to clear an existing key, or the redaction placeholder from a prior GET to leave it unchanged.\n"},"signingCertificate":{"type":"string","description":"PEM-encoded certificate containing the public key matching the signing private key. Use an empty string when unused or to clear an existing certificate.\n"},"acsBinding":{"type":"string","enum":["redirect","post"],"description":"Assertion Consumer Service binding."},"signatureConfig":{"type":"object","description":"Configuration for the signature in SAML requests and responses.","additionalProperties":false,"required":["prefix","location"],"properties":{"prefix":{"type":"string"},"location":{"type":"object","additionalProperties":false,"required":["reference","action"],"properties":{"reference":{"type":"string"},"action":{"type":"string","enum":["before","after","prepend","append"]}}}}},"relayState":{"type":"string","description":"Default relay state value for SAML requests. Use an empty string when unused."},"entityID":{"type":"string","description":"Service provider entity ID. Returned by GET for convenience; ignored on write so a GET response can be sent back as a PUT body.\n"},"returnUrl":{"type":"string","description":"Assertion Consumer Service return URL. Returned by GET for convenience; ignored on write so a GET response can be sent back as a PUT body.\n"}}}}}}
```

## The credentialTestResponse object

```json
{"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"credentialTestResponse":{"type":"object","required":["status","message"],"properties":{"status":{"type":"string","enum":["OK","Error"]},"message":{"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 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 workflowVersion object

```json
{"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"workflowVersion":{"type":"object","additionalProperties":false,"required":["versionId","workflowId","nodes","connections","authors"],"properties":{"versionId":{"type":"string","readOnly":true,"description":"The version ID of this workflow snapshot"},"workflowId":{"type":"string","readOnly":true,"description":"The workflow ID this version belongs to"},"nodes":{"type":"array","items":{"$ref":"#/components/schemas/node"},"description":"Nodes as they were in this version","readOnly":true},"connections":{"type":"object","description":"Connections as they were in this version","readOnly":true},"nodeGroups":{"type":"array","readOnly":true,"description":"Node groups as they were in this version","items":{"$ref":"#/components/schemas/workflowNodeGroup"}},"authors":{"type":"string","readOnly":true,"description":"Authors who created this version"},"name":{"type":"string","nullable":true,"description":"Workflow name at this version"},"description":{"type":"string","nullable":true,"description":"Workflow description at this version"},"createdAt":{"type":"string","format":"date-time","readOnly":true,"description":"When this version was created"},"updatedAt":{"type":"string","format":"date-time","readOnly":true,"description":"When this version was last updated"}}},"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 testRunSummary object

```json
{"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"testRunSummary":{"type":"object","properties":{"id":{"type":"string"},"status":{"type":"string","enum":["new","running","completed","error","cancelled"]},"runAt":{"type":"string","format":"date-time","nullable":true},"completedAt":{"type":"string","format":"date-time","nullable":true},"metrics":{"type":"object","nullable":true,"additionalProperties":true,"description":"Aggregated metrics collected across the run's test cases."},"errorCode":{"type":"string","nullable":true},"errorDetails":{"type":"object","nullable":true,"additionalProperties":true},"finalResult":{"type":"string","nullable":true,"enum":["success","error","warning"],"description":"Overall result of the run, derived from its test cases once completed."},"testCaseCount":{"type":"integer"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}}}}}}
```

## The testRunList object

```json
{"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"testRunList":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/testRunSummary"}},"nextCursor":{"type":"string","nullable":true,"description":"Paginate through test runs by setting the cursor parameter to the nextCursor attribute returned by a previous request. Default value fetches the first \"page\" of the collection."}}},"testRunSummary":{"type":"object","properties":{"id":{"type":"string"},"status":{"type":"string","enum":["new","running","completed","error","cancelled"]},"runAt":{"type":"string","format":"date-time","nullable":true},"completedAt":{"type":"string","format":"date-time","nullable":true},"metrics":{"type":"object","nullable":true,"additionalProperties":true,"description":"Aggregated metrics collected across the run's test cases."},"errorCode":{"type":"string","nullable":true},"errorDetails":{"type":"object","nullable":true,"additionalProperties":true},"finalResult":{"type":"string","nullable":true,"enum":["success","error","warning"],"description":"Overall result of the run, derived from its test cases once completed."},"testCaseCount":{"type":"integer"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}}}}}}
```

## The testRun object

```json
{"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"testRun":{"type":"object","properties":{"id":{"type":"string"},"status":{"type":"string","enum":["new","running","completed","error","cancelled"]},"createdAt":{"type":"string","format":"date-time"}}}}}}
```

## The testRunCancel object

```json
{"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"testRunCancel":{"type":"object","properties":{"id":{"type":"string"},"status":{"type":"string","enum":["cancelled"]}}}}}}
```

## The testCaseExecution object

```json
{"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"testCaseExecution":{"type":"object","properties":{"id":{"type":"string"},"status":{"type":"string","enum":["new","running","evaluation_running","success","error","warning","cancelled"]},"runAt":{"type":"string","format":"date-time","nullable":true},"completedAt":{"type":"string","format":"date-time","nullable":true},"metrics":{"type":"object","nullable":true,"additionalProperties":true,"description":"Metrics produced by this test case."},"errorCode":{"type":"string","nullable":true},"errorDetails":{"type":"object","nullable":true,"additionalProperties":true},"inputs":{"type":"object","nullable":true,"additionalProperties":true,"description":"Input data for this test case."},"outputs":{"type":"object","nullable":true,"additionalProperties":true,"description":"Output data produced by this test case."},"executionId":{"type":"string","nullable":true,"description":"ID of the underlying workflow execution, if still retained."}}}}}}
```

## The testCaseExecutionList object

```json
{"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"testCaseExecutionList":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/testCaseExecution"}},"nextCursor":{"type":"string","nullable":true,"description":"Paginate through test cases by setting the cursor parameter to the nextCursor attribute returned by a previous request. Default value fetches the first \"page\" of the collection."}}},"testCaseExecution":{"type":"object","properties":{"id":{"type":"string"},"status":{"type":"string","enum":["new","running","evaluation_running","success","error","warning","cancelled"]},"runAt":{"type":"string","format":"date-time","nullable":true},"completedAt":{"type":"string","format":"date-time","nullable":true},"metrics":{"type":"object","nullable":true,"additionalProperties":true,"description":"Metrics produced by this test case."},"errorCode":{"type":"string","nullable":true},"errorDetails":{"type":"object","nullable":true,"additionalProperties":true},"inputs":{"type":"object","nullable":true,"additionalProperties":true,"description":"Input data for this test case."},"outputs":{"type":"object","nullable":true,"additionalProperties":true,"description":"Output data produced by this test case."},"executionId":{"type":"string","nullable":true,"description":"ID of the underlying workflow execution, if still retained."}}}}}}
```

## The user object

```json
{"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"user":{"required":["email"],"type":"object","properties":{"id":{"type":"string","readOnly":true},"email":{"type":"string","format":"email"},"firstName":{"maxLength":32,"type":"string","description":"User's first name","readOnly":true},"lastName":{"maxLength":32,"type":"string","description":"User's last name","readOnly":true},"isPending":{"type":"boolean","description":"Whether the user finished setting up their account in response to the invitation (true) or not (false).","readOnly":true},"createdAt":{"type":"string","description":"Time the user was created.","format":"date-time","readOnly":true},"updatedAt":{"type":"string","description":"Last time the user was updated.","format":"date-time","readOnly":true},"role":{"type":"string","readOnly":true},"mfaEnabled":{"type":"boolean","description":"Whether the user has multi-factor authentication (MFA/2FA) enabled.","readOnly":true}}}}}}
```

## The userList object

```json
{"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"userList":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/user"}},"nextCursor":{"type":"string","description":"Paginate through users 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}}},"user":{"required":["email"],"type":"object","properties":{"id":{"type":"string","readOnly":true},"email":{"type":"string","format":"email"},"firstName":{"maxLength":32,"type":"string","description":"User's first name","readOnly":true},"lastName":{"maxLength":32,"type":"string","description":"User's last name","readOnly":true},"isPending":{"type":"boolean","description":"Whether the user finished setting up their account in response to the invitation (true) or not (false).","readOnly":true},"createdAt":{"type":"string","description":"Time the user was created.","format":"date-time","readOnly":true},"updatedAt":{"type":"string","description":"Last time the user was updated.","format":"date-time","readOnly":true},"role":{"type":"string","readOnly":true},"mfaEnabled":{"type":"boolean","description":"Whether the user has multi-factor authentication (MFA/2FA) enabled.","readOnly":true}}}}}}
```

## The dataTable object

```json
{"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"dataTable":{"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","description":"Column definitions","items":{"type":"object","properties":{"id":{"type":"string","description":"Column ID"},"name":{"type":"string","description":"Column name"},"type":{"type":"string","enum":["string","number","boolean","date"],"description":"Column data type"},"index":{"type":"integer","description":"Column position"}}}},"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 dataTableList object

```json
{"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"dataTableList":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/dataTable"}},"nextCursor":{"type":"string","description":"Paginate through data tables 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}}},"dataTable":{"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","description":"Column definitions","items":{"type":"object","properties":{"id":{"type":"string","description":"Column ID"},"name":{"type":"string","description":"Column name"},"type":{"type":"string","enum":["string","number","boolean","date"],"description":"Column data type"},"index":{"type":"integer","description":"Column position"}}}},"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 createDataTableRequest object

```json
{"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"createDataTableRequest":{"type":"object","properties":{"name":{"type":"string","description":"Name of the data table","minLength":1,"maxLength":128},"columns":{"type":"array","description":"Column definitions for the table","items":{"type":"object","properties":{"name":{"type":"string","description":"Column name","minLength":1},"type":{"type":"string","enum":["string","number","boolean","date","json"],"description":"Column data type"}},"required":["name","type"]}},"projectId":{"type":"string","description":"ID of the project to create the table in. When omitted, the table is created in the user's personal project.\n"}},"required":["name","columns"]}}}}
```

## The updateDataTableRequest object

```json
{"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"updateDataTableRequest":{"type":"object","properties":{"name":{"type":"string","description":"New name for the data table","minLength":1,"maxLength":128}},"required":["name"]}}}}
```

## The dataTableRow object

```json
{"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"dataTableRow":{"type":"object","properties":{"id":{"type":"integer","description":"The row ID (auto-generated)"},"createdAt":{"type":"string","format":"date-time","description":"The date and time the row was created"},"updatedAt":{"type":"string","format":"date-time","description":"The date and time the row was last updated"}},"additionalProperties":true,"description":"A data table row with system columns (id, createdAt, updatedAt) and user-defined columns"}}}}
```

## The dataTableRowList object

```json
{"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"dataTableRowList":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/dataTableRow"}},"nextCursor":{"type":"string","description":"Paginate through rows 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}}},"dataTableRow":{"type":"object","properties":{"id":{"type":"integer","description":"The row ID (auto-generated)"},"createdAt":{"type":"string","format":"date-time","description":"The date and time the row was created"},"updatedAt":{"type":"string","format":"date-time","description":"The date and time the row was last updated"}},"additionalProperties":true,"description":"A data table row with system columns (id, createdAt, updatedAt) and user-defined columns"}}}}
```

## The insertRowsRequest object

```json
{"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"insertRowsRequest":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","additionalProperties":true},"description":"Array of rows to insert. Each row is an object with column names as keys.","minItems":1},"returnType":{"type":"string","enum":["count","id","all"],"default":"count","description":"- count: Return only the number of rows inserted\n- id: Return an array of inserted row IDs\n- all: Return the full row data for all inserted rows\n"}},"required":["data"]}}}}
```

## The updateRowsRequest object

```json
{"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"updateRowsRequest":{"type":"object","properties":{"filter":{"type":"object","properties":{"type":{"type":"string","enum":["and","or"],"default":"and"},"filters":{"type":"array","minItems":1,"items":{"type":"object","properties":{"columnName":{"type":"string"},"condition":{"type":"string","enum":["eq","neq","like","ilike","gt","gte","lt","lte"]},"value":{}},"required":["columnName","condition","value"]}}},"required":["filters"],"description":"Filter conditions to match rows for update"},"data":{"type":"object","additionalProperties":true,"description":"Column values to update"},"returnData":{"type":"boolean","default":false,"description":"If true, return the updated rows; if false, return true on success"},"dryRun":{"type":"boolean","default":false,"description":"If true, preview changes without persisting them"}},"required":["filter","data"]}}}}
```

## The upsertRowRequest object

```json
{"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"upsertRowRequest":{"type":"object","properties":{"filter":{"type":"object","properties":{"type":{"type":"string","enum":["and","or"],"default":"and"},"filters":{"type":"array","minItems":1,"items":{"type":"object","properties":{"columnName":{"type":"string"},"condition":{"type":"string","enum":["eq","neq","like","ilike","gt","gte","lt","lte"]},"value":{}},"required":["columnName","condition","value"]}}},"required":["filters"],"description":"Filter conditions to match existing row. If no row matches, a new row is inserted."},"data":{"type":"object","additionalProperties":true,"description":"Column values for the row"},"returnData":{"type":"boolean","default":false,"description":"If true, return the upserted row; if false, return true on success"},"dryRun":{"type":"boolean","default":false,"description":"If true, preview changes without persisting them"}},"required":["filter","data"]}}}}
```

## The dataTableColumn object

```json
{"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"dataTableColumn":{"type":"object","properties":{"id":{"type":"string","description":"Column ID"},"name":{"type":"string","description":"Column name"},"dataTableId":{"type":"string","description":"ID of the data table this column belongs to"},"type":{"type":"string","enum":["string","number","boolean","date"],"description":"Column data type"},"index":{"type":"integer","description":"Column position"}},"required":["id","name","dataTableId","type","index"]}}}}
```

## The dataTableColumnName object

```json
{"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"dataTableColumnName":{"type":"string","description":"Column name. Must start with a letter; only letters, digits, and underscores after that; maximum 63 characters.","minLength":1,"maxLength":63,"pattern":"^[a-zA-Z][a-zA-Z0-9_]*$"}}}}
```

## The createColumnRequest object

```json
{"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"createColumnRequest":{"type":"object","properties":{"name":{"$ref":"#/components/schemas/dataTableColumnName"},"type":{"type":"string","enum":["string","number","boolean","date"],"description":"Column data type"},"index":{"type":"integer","minimum":0,"description":"Column position (optional, appended to end if omitted)"}},"required":["name","type"]},"dataTableColumnName":{"type":"string","description":"Column name. Must start with a letter; only letters, digits, and underscores after that; maximum 63 characters.","minLength":1,"maxLength":63,"pattern":"^[a-zA-Z][a-zA-Z0-9_]*$"}}}}
```

## The updateColumnRequest object

```json
{"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"updateColumnRequest":{"type":"object","properties":{"name":{"$ref":"#/components/schemas/dataTableColumnName"},"index":{"type":"integer","minimum":0,"description":"New zero-based position for the column"}},"additionalProperties":false,"anyOf":[{"required":["name"]},{"required":["index"]}]},"dataTableColumnName":{"type":"string","description":"Column name. Must start with a letter; only letters, digits, and underscores after that; maximum 63 characters.","minLength":1,"maxLength":63,"pattern":"^[a-zA-Z][a-zA-Z0-9_]*$"}}}}
```

## The communityPackage object

```json
{"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"communityPackage":{"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","description":"Nodes included in this package","items":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string"},"latestVersion":{"type":"number"}}}},"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"}}}}}}
```

## The communityPackageList object

```json
{"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"communityPackageList":{"type":"array","items":{"$ref":"#/components/schemas/communityPackage"}},"communityPackage":{"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","description":"Nodes included in this package","items":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string"},"latestVersion":{"type":"number"}}}},"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"}}}}}}
```

## The installCommunityPackageRequest object

```json
{"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"installCommunityPackageRequest":{"type":"object","required":["name"],"properties":{"name":{"type":"string","description":"npm package name (must start with n8n-nodes-)"},"version":{"type":"string","description":"Specific semver version to install"},"verify":{"type":"boolean","description":"Whether to verify the package against the n8n-vetted package list. Required when the instance has N8N_UNVERIFIED_PACKAGES_ENABLED=false.\n"}}}}}}
```

## The insights object

```json
{"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"insights":{"type":"object","required":["total","failed","failureRate","timeSaved","averageRunTime"],"properties":{"total":{"type":"object","required":["value","deviation","unit"],"properties":{"value":{"type":"number"},"deviation":{"type":"number","nullable":true},"unit":{"type":"string","enum":["count"]}}},"failed":{"type":"object","required":["value","deviation","unit"],"properties":{"value":{"type":"number"},"deviation":{"type":"number","nullable":true},"unit":{"type":"string","enum":["count"]}}},"failureRate":{"type":"object","required":["value","deviation","unit"],"properties":{"value":{"type":"number"},"deviation":{"type":"number","nullable":true},"unit":{"type":"string","enum":["ratio"]}}},"timeSaved":{"type":"object","required":["value","deviation","unit"],"properties":{"value":{"type":"number"},"deviation":{"type":"number","nullable":true},"unit":{"type":"string","enum":["minute"]}}},"averageRunTime":{"type":"object","required":["value","deviation","unit"],"properties":{"value":{"type":"number"},"deviation":{"type":"number","nullable":true},"unit":{"type":"string","enum":["millisecond"]}}}}}}}}
```

## The folder object

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

## The folder.create object

```json
{"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"folder.create":{"type":"object","additionalProperties":false,"required":["name"],"properties":{"name":{"type":"string"},"parentFolderId":{"type":"string"}}}}}}
```

## The folder.update object

```json
{"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"folder.update":{"type":"object","additionalProperties":false,"minProperties":1,"properties":{"name":{"type":"string"},"parentFolderId":{"type":"string"}}}}}}
```

## 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 `workflowIds` and/or `folderIds` to export loose workflows and folders, or `projectIds` to export whole projects, but not both groups in the same request. At least one id must be supplied.","properties":{"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.","items":{"type":"string","minLength":1}},"includeVariableValues":{"type":"boolean","default":true,"description":"Whether values of variables referenced by the exported workflows 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."},"missingWorkflowDependencyPolicy":{"type":"string","enum":["fail","reference-only","include-in-package"],"description":"Policy for missing static sub-workflow dependencies. `fail` aborts the export when any static sub-workflow is missing from the package; `include-in-package` automatically adds missing static sub-workflows. `reference-only` keeps missing static sub-workflows out of the package and lists them in the package requirements as workflows expected to already exist on the target.","default":"fail"},"workflowVersionPolicy":{"type":"string","enum":["published-strict","prefer-published","ignore-unpublished","latest"],"description":"Which version of each workflow travels in the package. `latest` exports the latest version, published or not. `published-strict` exports the published version and aborts the export if any workflow has none. `prefer-published` falls back to the latest version where there is no published one. `ignore-unpublished` leaves unpublished workflows out of the package entirely. The chosen version decides which credentials, data tables, variables and sub-workflows are bundled alongside it; the workflow's name, settings and tags are not versioned and always come from the latest version.","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 policyViolation object

```json
{"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"policyViolation":{"type":"object","description":"One reason a policy check objected. `kind`, `subjectType` and `scope` are open strings, not enums, so later policy features can add values — a reader must cope with values it does not recognise.\n","required":["kind","checkId","message"],"properties":{"kind":{"type":"string","description":"e.g. `node-type-unavailable`. Do not assume you know every value."},"checkId":{"type":"string","description":"Id of the check that objected."},"message":{"type":"string","description":"Readable on its own. Do not parse details out of it — use the fields below."},"subject":{"type":"string","description":"What was objected to: a node type name, a credential type name, …"},"subjectType":{"type":"string","description":"What kind of name `subject` is — node and credential type names can look alike."},"scope":{"type":"string","description":"Which level objected. Usually `instance` or `project`, but treat it as open."},"matchedRuleId":{"type":"string","description":"The rule that decided, if a rule did rather than a fallback default."}}}}}}
```

## The importBlockingIssue object

```json
{"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"importBlockingIssue":{"oneOf":[{"type":"object","description":"A workflow whose source id already matches one in the target project, under the `fail` conflict policy.\n","required":["type","sourceWorkflowId","existingWorkflowId","name"],"properties":{"type":{"type":"string","enum":["workflow-conflict"]},"sourceWorkflowId":{"type":"string"},"existingWorkflowId":{"type":"string"},"name":{"type":"string"}}},{"type":"object","description":"A package workflow whose source id matches multiple workflows in the target project. The import cannot choose a workflow safely.\n","required":["type","sourceWorkflowId","projectId","existingWorkflows"],"properties":{"type":{"type":"string","enum":["workflow-lineage-conflict"]},"sourceWorkflowId":{"type":"string"},"projectId":{"type":"string"},"existingWorkflows":{"type":"array","items":{"type":"object","required":["id","name","isArchived"],"properties":{"id":{"type":"string"},"name":{"type":"string"},"isArchived":{"type":"boolean"}}}}}},{"type":"object","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.\n","required":["type","sourceWorkflowId","existingWorkflowId","existingProjectId","isArchived","name"],"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.\n"},"isArchived":{"type":"boolean","description":"Whether the existing workflow is archived."},"name":{"type":"string"}}},{"type":"object","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.\n","required":["type","sourceWorkflowId","existingWorkflowId","existingParentFolderId","targetFolderId","name"],"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.\n"},"targetFolderId":{"type":"string","description":"Folder the import was requested to land in."},"name":{"type":"string"}}},{"type":"object","description":"A project defined by the package that already exists on this instance, under `projectConflictPolicy=fail`.\n","required":["type","kind","sourceProjectId","name"],"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."}}},{"type":"object","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`).\n","required":["type","kind","sourceFolderId","name"],"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."}}},{"type":"object","description":"A workflow that `folderConflictPolicy=overwrite` would remove, because the package does not contain it, but the caller lacks `workflow:delete` on. Reported instead of removing a subset, which would leave the project matching neither the package nor its previous state.\n","required":["type","workflowId","name","projectId"],"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."}}},{"type":"object","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.\n","required":["type","sourceWorkflowId","existingWorkflowId","name","projectId","transition"],"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."}}},{"type":"object","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.\n","required":["type","folderId","name","projectId"],"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."}}},{"type":"object","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.\n","required":["type","nodeType","typeVersion","usedByWorkflows"],"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."},"usedByWorkflows":{"type":"array","items":{"type":"string"},"description":"Package workflow ids that use this node type and version."}}},{"type":"object","description":"A credential reference that could not be resolved in the target project.","required":["type","kind","sourceId","usedByWorkflows"],"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 an explicit credential binding."},"expectedType":{"type":"string","description":"For `type_mismatch`: the credential type the package's workflow node requires.\n"},"actualType":{"type":"string","description":"For `type_mismatch`: the actual type of the resolved target credential.\n"},"usedByWorkflows":{"type":"array","items":{"type":"string"}}}},{"type":"object","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).\n","required":["type","kind","usedByWorkflows"],"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.\n"},"existingName":{"type":"string","description":"For `rename-drift`: the current name of the same-id target tag."},"usedByWorkflows":{"type":"array","items":{"type":"string"},"description":"Package workflow ids (non-skipped) that reference the source tag — not workflows attached to the contested target tag.\n"}}},{"type":"object","description":"A variable reference that could not be resolved in the target project or the global scope, under `variableMissingMode=must-preexist`.\n","required":["type","name","usedByWorkflows"],"properties":{"type":{"type":"string","enum":["variable-unresolved"]},"name":{"type":"string","description":"Requirement name with no match in the target project or global scope."},"usedByWorkflows":{"type":"array","items":{"type":"string"}}}},{"type":"object","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.\n","required":["type","name","usedByWorkflows"],"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.\n"},"usedByWorkflows":{"type":"array","items":{"type":"string"}}}},{"type":"object","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.\n","required":["type","limit","remaining","requested","names","usedByWorkflows"],"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."},"usedByWorkflows":{"type":"array","items":{"type":"string"},"description":"Package workflow ids that reference any of the listed variables."}}},{"type":"object","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.\n","required":["type","sourceWorkflowId","name","violations"],"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":{"$ref":"#/components/schemas/policyViolation"}}}}]},"policyViolation":{"type":"object","description":"One reason a policy check objected. `kind`, `subjectType` and `scope` are open strings, not enums, so later policy features can add values — a reader must cope with values it does not recognise.\n","required":["kind","checkId","message"],"properties":{"kind":{"type":"string","description":"e.g. `node-type-unavailable`. Do not assume you know every value."},"checkId":{"type":"string","description":"Id of the check that objected."},"message":{"type":"string","description":"Readable on its own. Do not parse details out of it — use the fields below."},"subject":{"type":"string","description":"What was objected to: a node type name, a credential type name, …"},"subjectType":{"type":"string","description":"What kind of name `subject` is — node and credential type names can look alike."},"scope":{"type":"string","description":"Which level objected. Usually `instance` or `project`, but treat it as open."},"matchedRuleId":{"type":"string","description":"The rule that decided, if a rule did rather than a fallback default."}}}}}}
```

## The event-types object

```json
{"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"event-types":{"type":"object","additionalProperties":false,"required":["data"],"properties":{"data":{"type":"array","description":"Event names that can be streamed to a destination.","items":{"type":"string"}}}}}}}
```

## The destination.common object

```json
{"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"destination.common":{"type":"object","properties":{"id":{"type":"string","readOnly":true,"description":"Server-generated unique id of the destination. Returned in responses; not accepted in requests."},"label":{"type":"string","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`.\n"},"anonymizeAuditMessages":{"type":"boolean","description":"Whether audit message payloads are anonymized before being sent."},"circuitBreaker":{"type":"object","additionalProperties":true,"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.\n","properties":{"maxFailures":{"type":"integer","description":"Maximum failures within the sliding window before the breaker opens."},"failureWindow":{"type":"integer","description":"Sliding window, in milliseconds, over which failures are counted."}}}}}}}}
```

## The parameter-list object

```json
{"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"parameter-list":{"type":"object","additionalProperties":true,"description":"Key-value pairs used when the matching `specify*` field is `keypair`.","properties":{"parameters":{"type":"array","items":{"type":"object","required":["name","value"],"properties":{"name":{"type":"string"},"value":{"description":"Parameter value. Usually a string; numbers, booleans and null are also accepted.\n"}}}}}}}}}
```

## The destination.webhook object

```json
{"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"destination.webhook":{"allOf":[{"$ref":"#/components/schemas/destination.common"},{"type":"object","additionalProperties":true,"required":["type","url"],"properties":{"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":{"$ref":"#/components/schemas/parameter-list"},"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":{"$ref":"#/components/schemas/parameter-list"},"jsonQuery":{"type":"string","description":"Query parameters as a JSON string when `specifyQuery` is `json`."},"options":{"type":"object","additionalProperties":true,"description":"Additional HTTP request options.","properties":{"timeout":{"type":"integer","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","additionalProperties":true,"description":"Redirect-following behaviour.","properties":{"redirect":{"type":"object","additionalProperties":true,"properties":{"followRedirects":{"type":"boolean","description":"Whether to follow HTTP redirects."},"maxRedirects":{"type":"integer","description":"Maximum number of redirects to follow."}}}}},"proxy":{"type":"object","additionalProperties":true,"description":"Outbound proxy configuration.","properties":{"proxy":{"type":"object","additionalProperties":true,"properties":{"protocol":{"type":"string","enum":["https","http"],"description":"Proxy protocol."},"host":{"type":"string","description":"Proxy host, without protocol or port."},"port":{"type":"integer","description":"Proxy port."}}}}},"socket":{"type":"object","additionalProperties":true,"description":"Connection socket options.","properties":{"keepAlive":{"type":"boolean","description":"Whether to keep sockets open for reuse."},"maxSockets":{"type":"integer","description":"Maximum sockets per host kept open at once."},"maxFreeSockets":{"type":"integer","description":"Maximum idle sockets per host kept open."}}}}}}}]},"destination.common":{"type":"object","properties":{"id":{"type":"string","readOnly":true,"description":"Server-generated unique id of the destination. Returned in responses; not accepted in requests."},"label":{"type":"string","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`.\n"},"anonymizeAuditMessages":{"type":"boolean","description":"Whether audit message payloads are anonymized before being sent."},"circuitBreaker":{"type":"object","additionalProperties":true,"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.\n","properties":{"maxFailures":{"type":"integer","description":"Maximum failures within the sliding window before the breaker opens."},"failureWindow":{"type":"integer","description":"Sliding window, in milliseconds, over which failures are counted."}}}}},"parameter-list":{"type":"object","additionalProperties":true,"description":"Key-value pairs used when the matching `specify*` field is `keypair`.","properties":{"parameters":{"type":"array","items":{"type":"object","required":["name","value"],"properties":{"name":{"type":"string"},"value":{"description":"Parameter value. Usually a string; numbers, booleans and null are also accepted.\n"}}}}}}}}}
```

## The destination.syslog object

```json
{"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"destination.syslog":{"allOf":[{"$ref":"#/components/schemas/destination.common"},{"type":"object","additionalProperties":true,"required":["type","host"],"properties":{"type":{"type":"string","enum":["syslog"],"description":"Sends each event to a syslog server."},"host":{"type":"string","description":"Syslog server host."},"port":{"type":"integer","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.\n"},"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`."}}}]},"destination.common":{"type":"object","properties":{"id":{"type":"string","readOnly":true,"description":"Server-generated unique id of the destination. Returned in responses; not accepted in requests."},"label":{"type":"string","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`.\n"},"anonymizeAuditMessages":{"type":"boolean","description":"Whether audit message payloads are anonymized before being sent."},"circuitBreaker":{"type":"object","additionalProperties":true,"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.\n","properties":{"maxFailures":{"type":"integer","description":"Maximum failures within the sliding window before the breaker opens."},"failureWindow":{"type":"integer","description":"Sliding window, in milliseconds, over which failures are counted."}}}}}}}}
```

## The destination.sentry object

```json
{"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"destination.sentry":{"allOf":[{"$ref":"#/components/schemas/destination.common"},{"type":"object","additionalProperties":true,"required":["type","dsn"],"properties":{"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."}}}]},"destination.common":{"type":"object","properties":{"id":{"type":"string","readOnly":true,"description":"Server-generated unique id of the destination. Returned in responses; not accepted in requests."},"label":{"type":"string","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`.\n"},"anonymizeAuditMessages":{"type":"boolean","description":"Whether audit message payloads are anonymized before being sent."},"circuitBreaker":{"type":"object","additionalProperties":true,"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.\n","properties":{"maxFailures":{"type":"integer","description":"Maximum failures within the sliding window before the breaker opens."},"failureWindow":{"type":"integer","description":"Sliding window, in milliseconds, over which failures are counted."}}}}}}}}
```

## The destination object

```json
{"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"destination":{"type":"object","oneOf":[{"$ref":"#/components/schemas/destination.webhook"},{"$ref":"#/components/schemas/destination.syslog"},{"$ref":"#/components/schemas/destination.sentry"}],"description":"A log streaming destination. The `type` field selects the variant and its type-specific fields: `webhook`, `syslog`, or `sentry`.\n"},"destination.webhook":{"allOf":[{"$ref":"#/components/schemas/destination.common"},{"type":"object","additionalProperties":true,"required":["type","url"],"properties":{"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":{"$ref":"#/components/schemas/parameter-list"},"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":{"$ref":"#/components/schemas/parameter-list"},"jsonQuery":{"type":"string","description":"Query parameters as a JSON string when `specifyQuery` is `json`."},"options":{"type":"object","additionalProperties":true,"description":"Additional HTTP request options.","properties":{"timeout":{"type":"integer","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","additionalProperties":true,"description":"Redirect-following behaviour.","properties":{"redirect":{"type":"object","additionalProperties":true,"properties":{"followRedirects":{"type":"boolean","description":"Whether to follow HTTP redirects."},"maxRedirects":{"type":"integer","description":"Maximum number of redirects to follow."}}}}},"proxy":{"type":"object","additionalProperties":true,"description":"Outbound proxy configuration.","properties":{"proxy":{"type":"object","additionalProperties":true,"properties":{"protocol":{"type":"string","enum":["https","http"],"description":"Proxy protocol."},"host":{"type":"string","description":"Proxy host, without protocol or port."},"port":{"type":"integer","description":"Proxy port."}}}}},"socket":{"type":"object","additionalProperties":true,"description":"Connection socket options.","properties":{"keepAlive":{"type":"boolean","description":"Whether to keep sockets open for reuse."},"maxSockets":{"type":"integer","description":"Maximum sockets per host kept open at once."},"maxFreeSockets":{"type":"integer","description":"Maximum idle sockets per host kept open."}}}}}}}]},"destination.common":{"type":"object","properties":{"id":{"type":"string","readOnly":true,"description":"Server-generated unique id of the destination. Returned in responses; not accepted in requests."},"label":{"type":"string","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`.\n"},"anonymizeAuditMessages":{"type":"boolean","description":"Whether audit message payloads are anonymized before being sent."},"circuitBreaker":{"type":"object","additionalProperties":true,"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.\n","properties":{"maxFailures":{"type":"integer","description":"Maximum failures within the sliding window before the breaker opens."},"failureWindow":{"type":"integer","description":"Sliding window, in milliseconds, over which failures are counted."}}}}},"parameter-list":{"type":"object","additionalProperties":true,"description":"Key-value pairs used when the matching `specify*` field is `keypair`.","properties":{"parameters":{"type":"array","items":{"type":"object","required":["name","value"],"properties":{"name":{"type":"string"},"value":{"description":"Parameter value. Usually a string; numbers, booleans and null are also accepted.\n"}}}}}},"destination.syslog":{"allOf":[{"$ref":"#/components/schemas/destination.common"},{"type":"object","additionalProperties":true,"required":["type","host"],"properties":{"type":{"type":"string","enum":["syslog"],"description":"Sends each event to a syslog server."},"host":{"type":"string","description":"Syslog server host."},"port":{"type":"integer","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.\n"},"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`."}}}]},"destination.sentry":{"allOf":[{"$ref":"#/components/schemas/destination.common"},{"type":"object","additionalProperties":true,"required":["type","dsn"],"properties":{"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."}}}]}}}}
```

## The destination.list object

```json
{"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"destination.list":{"type":"object","additionalProperties":false,"required":["data"],"properties":{"data":{"type":"array","description":"The configured log streaming destinations.","items":{"$ref":"#/components/schemas/destination"}}}},"destination":{"type":"object","oneOf":[{"$ref":"#/components/schemas/destination.webhook"},{"$ref":"#/components/schemas/destination.syslog"},{"$ref":"#/components/schemas/destination.sentry"}],"description":"A log streaming destination. The `type` field selects the variant and its type-specific fields: `webhook`, `syslog`, or `sentry`.\n"},"destination.webhook":{"allOf":[{"$ref":"#/components/schemas/destination.common"},{"type":"object","additionalProperties":true,"required":["type","url"],"properties":{"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":{"$ref":"#/components/schemas/parameter-list"},"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":{"$ref":"#/components/schemas/parameter-list"},"jsonQuery":{"type":"string","description":"Query parameters as a JSON string when `specifyQuery` is `json`."},"options":{"type":"object","additionalProperties":true,"description":"Additional HTTP request options.","properties":{"timeout":{"type":"integer","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","additionalProperties":true,"description":"Redirect-following behaviour.","properties":{"redirect":{"type":"object","additionalProperties":true,"properties":{"followRedirects":{"type":"boolean","description":"Whether to follow HTTP redirects."},"maxRedirects":{"type":"integer","description":"Maximum number of redirects to follow."}}}}},"proxy":{"type":"object","additionalProperties":true,"description":"Outbound proxy configuration.","properties":{"proxy":{"type":"object","additionalProperties":true,"properties":{"protocol":{"type":"string","enum":["https","http"],"description":"Proxy protocol."},"host":{"type":"string","description":"Proxy host, without protocol or port."},"port":{"type":"integer","description":"Proxy port."}}}}},"socket":{"type":"object","additionalProperties":true,"description":"Connection socket options.","properties":{"keepAlive":{"type":"boolean","description":"Whether to keep sockets open for reuse."},"maxSockets":{"type":"integer","description":"Maximum sockets per host kept open at once."},"maxFreeSockets":{"type":"integer","description":"Maximum idle sockets per host kept open."}}}}}}}]},"destination.common":{"type":"object","properties":{"id":{"type":"string","readOnly":true,"description":"Server-generated unique id of the destination. Returned in responses; not accepted in requests."},"label":{"type":"string","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`.\n"},"anonymizeAuditMessages":{"type":"boolean","description":"Whether audit message payloads are anonymized before being sent."},"circuitBreaker":{"type":"object","additionalProperties":true,"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.\n","properties":{"maxFailures":{"type":"integer","description":"Maximum failures within the sliding window before the breaker opens."},"failureWindow":{"type":"integer","description":"Sliding window, in milliseconds, over which failures are counted."}}}}},"parameter-list":{"type":"object","additionalProperties":true,"description":"Key-value pairs used when the matching `specify*` field is `keypair`.","properties":{"parameters":{"type":"array","items":{"type":"object","required":["name","value"],"properties":{"name":{"type":"string"},"value":{"description":"Parameter value. Usually a string; numbers, booleans and null are also accepted.\n"}}}}}},"destination.syslog":{"allOf":[{"$ref":"#/components/schemas/destination.common"},{"type":"object","additionalProperties":true,"required":["type","host"],"properties":{"type":{"type":"string","enum":["syslog"],"description":"Sends each event to a syslog server."},"host":{"type":"string","description":"Syslog server host."},"port":{"type":"integer","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.\n"},"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`."}}}]},"destination.sentry":{"allOf":[{"$ref":"#/components/schemas/destination.common"},{"type":"object","additionalProperties":true,"required":["type","dsn"],"properties":{"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."}}}]}}}}
```

## The test-result object

```json
{"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"test-result":{"type":"object","additionalProperties":false,"required":["success"],"properties":{"success":{"type":"boolean","description":"Whether the test message was delivered to the destination successfully."}}}}}}
```

## 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 role object

```json
{"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"role":{"readOnly":true,"type":"object","properties":{"id":{"type":"number","readOnly":true},"name":{"type":"string","readOnly":true},"scope":{"type":"string","readOnly":true},"createdAt":{"type":"string","description":"Time the role was created.","format":"date-time","readOnly":true},"updatedAt":{"type":"string","description":"Last time the role was updated.","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`: **Deprecated, removed in version 3.** Any workflow can call this workflow.\n  Switch to `workflowsFromAList` or `workflowsFromSameOwner` before upgrading.\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},"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`: **Deprecated, removed in version 3.** Any workflow can call this workflow.\n  Switch to `workflowsFromAList` or `workflowsFromSameOwner` before upgrading.\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},"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`: **Deprecated, removed in version 3.** Any workflow can call this workflow.\n  Switch to `workflowsFromAList` or `workflowsFromSameOwner` before upgrading.\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 credentialType object

```json
{"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"credentialType":{"type":"object","properties":{"displayName":{"type":"string","readOnly":true},"name":{"type":"string","readOnly":true},"type":{"type":"string","readOnly":true},"default":{"type":"string","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 Role object

```json
{"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"Role":{"$ref":"#/components/schemas/role"},"role":{"readOnly":true,"type":"object","properties":{"id":{"type":"number","readOnly":true},"name":{"type":"string","readOnly":true},"scope":{"type":"string","readOnly":true},"createdAt":{"type":"string","description":"Time the role was created.","format":"date-time","readOnly":true},"updatedAt":{"type":"string","description":"Last time the role was updated.","format":"date-time","readOnly":true}}}}}}
```

## 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},"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`: **Deprecated, removed in version 3.** Any workflow can call this workflow.\n  Switch to `workflowsFromAList` or `workflowsFromSameOwner` before upgrading.\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`: **Deprecated, removed in version 3.** Any workflow can call this workflow.\n  Switch to `workflowsFromAList` or `workflowsFromSameOwner` before upgrading.\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},"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`: **Deprecated, removed in version 3.** Any workflow can call this workflow.\n  Switch to `workflowsFromAList` or `workflowsFromSameOwner` before upgrading.\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 CredentialType object

```json
{"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"CredentialType":{"$ref":"#/components/schemas/credentialType"},"credentialType":{"type":"object","properties":{"displayName":{"type":"string","readOnly":true},"name":{"type":"string","readOnly":true},"type":{"type":"string","readOnly":true},"default":{"type":"string","readOnly":true}}}}}}
```

## The Audit object

```json
{"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"Audit":{"$ref":"#/components/schemas/audit"},"audit":{"type":"object","properties":{"Credentials Risk Report":{"type":"object"},"Database Risk Report":{"type":"object"},"Filesystem Risk Report":{"type":"object"},"Nodes Risk Report":{"type":"object"},"Instance Risk Report":{"type":"object"}}}}}}
```

## The UserList object

```json
{"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"UserList":{"$ref":"#/components/schemas/userList"},"userList":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/user"}},"nextCursor":{"type":"string","description":"Paginate through users 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}}},"user":{"required":["email"],"type":"object","properties":{"id":{"type":"string","readOnly":true},"email":{"type":"string","format":"email"},"firstName":{"maxLength":32,"type":"string","description":"User's first name","readOnly":true},"lastName":{"maxLength":32,"type":"string","description":"User's last name","readOnly":true},"isPending":{"type":"boolean","description":"Whether the user finished setting up their account in response to the invitation (true) or not (false).","readOnly":true},"createdAt":{"type":"string","description":"Time the user was created.","format":"date-time","readOnly":true},"updatedAt":{"type":"string","description":"Last time the user was updated.","format":"date-time","readOnly":true},"role":{"type":"string","readOnly":true},"mfaEnabled":{"type":"boolean","description":"Whether the user has multi-factor authentication (MFA/2FA) enabled.","readOnly":true}}}}}}
```

## The User object

```json
{"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"User":{"$ref":"#/components/schemas/user"},"user":{"required":["email"],"type":"object","properties":{"id":{"type":"string","readOnly":true},"email":{"type":"string","format":"email"},"firstName":{"maxLength":32,"type":"string","description":"User's first name","readOnly":true},"lastName":{"maxLength":32,"type":"string","description":"User's last name","readOnly":true},"isPending":{"type":"boolean","description":"Whether the user finished setting up their account in response to the invitation (true) or not (false).","readOnly":true},"createdAt":{"type":"string","description":"Time the user was created.","format":"date-time","readOnly":true},"updatedAt":{"type":"string","description":"Last time the user was updated.","format":"date-time","readOnly":true},"role":{"type":"string","readOnly":true},"mfaEnabled":{"type":"boolean","description":"Whether the user has multi-factor authentication (MFA/2FA) enabled.","readOnly":true}}}}}}
```

## 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"}},"required":["id","name","type","isManaged","isGlobal","isResolvable","resolvableAllowFallback","resolverId","createdAt","updatedAt"]}}}}
```

## 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 nodeTypePolicyEffectivePublicDto.generated object

```json
{"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"nodeTypePolicyEffectivePublicDto.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"]}]}},"required":["id","action","selector"]}},"defaultAction":{"type":"string","enum":["allow","deny","delegate"]},"version":{"type":"integer","minimum":0}},"required":["scopeId","rules","defaultAction","version"]}}}}
```

## The nodeTypePolicyEffectiveWriteResultPublicDto.generated object

```json
{"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"nodeTypePolicyEffectiveWriteResultPublicDto.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"]}]}},"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 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"]},"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}]},"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"]},"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"},"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","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"},"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","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 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 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"},"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"},"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"]}}}}}
```
