Docs

Template nodes

These sections describe the nodes available in templates and the fields that each node accepts. Node availability depends on your account and template type. Release flows and preview blueprints support different subsets of nodes.

The nodes are divided into the following categories:

  • Flow control sets the order in which nodes run.
  • Team resources manage projects, cloud integrations, and other account resources.
  • Project resources manage services, jobs, addons, and other resources within a project.
  • Actions start operations such as builds, job runs, or commands.
  • Messages send notifications to Slack, webhooks, or pull requests.
  • Conditions wait for a resource state, an operation result, or approval.

Resource update modes

Supported resource nodes offer an Update mode control, including project, service, job, and addon nodes. The available nodes depend on the template type.

Update modeJSON valueBehavior on each run
Put (create or replace)putCreates a missing resource or replaces an existing resource's configuration with the supplied specification.
Patch (partial update)patchUpdates supplied fields on an existing resource. Fails if the resource does not exist.
Create onlycreateCreates a missing resource. Skips the node without changing the resource if it already exists.

A skipped create node does not return the existing resource's outputs. If later nodes need that resource, use its known identifiers or template arguments instead of the skipped node's output reference.

For nodes with updateMode, name identifies the resource to create or update. Changing it targets a different resource rather than renaming the existing resource. For patch, keep the existing resource's name.

Requirements

You will need the following to get started:

  • For project resources, the correct project context on the node or inherited from a workflow
  • For patch, any additional fields required for the resource's PATCH operation, even if their values do not change
  • For put and create, the full specification required to create the resource

Required PATCH fields also apply to API PATCH requests. Beyond these required fields, supply only the fields that you want to change. PATCH preserves fields outside the supplied values. Only fields that the resource allows you to update can change.

Before saving an update

Review the fields that the node will replace before saving. Supplied arrays and some object fields replace the whole value. With put, omitted configurable fields can reset or clear. If automatic runs are enabled, saving changes runs the template immediately.

In the node's code view, set updateMode beside kind and spec. Use the lowercase values shown above. If you omit updateMode, Northflank uses put.

For example, this node updates the description of an existing project named example-project:

{
  "kind": "Project",
  "updateMode": "patch",
  "spec": {
    "name": "example-project",
    "description": "Shared development environment"
  }
}

To set the mode in the visual editor:

  1. Open the node's form in the visual editor.
  2. For service nodes, expand Template.
  3. Expand Advanced.
  4. Select an Update mode.
  5. Edit the specification for the chosen mode.
  6. Review the node's code for unwanted values.
  7. Click Save node.
  8. Save the template to keep the change.

Flow control nodes

Flow control nodes contain resource and action nodes, and determine in what order they are executed. You can click the switch button in the workflow node to change to a parallel or sequential flow.

Sequential workflows run nodes in order and wait until each node succeeds or skips before starting the next. Parallel workflows run their nodes concurrently.

Workflows can be nested. For example, you can run two sequential workflows simultaneously within a parallel workflow, within another sequential workflow.

If a node contained in a workflow fails, the entire workflow will be marked as failed.

Project context

Nodes inherit their workflow's project context. To use a different project, set the context directly on a node or nested workflow.

  • {object}
    Workflow node
    • ref

      string
      An identifier that can used to reference the output of this node later in the template.
    • kind

      string required
      The kind of node.
      one of
      Workflow
    • skipNodeExecution

      (multiple options: oneOf)
      If set to 'true', the execution of the node will be skipped.
      • string
        If set to 'true', the execution of the node will be skipped.
        one of
        true, false
      • OR

      • string
        A string containing one or more references that resolve to if set to 'true', the execution of the node will be skipped.
        pattern
        .*\${.*}.*
      • spec

        {object} required
        The specification for the workflow node.

Loop workflow

The Loop workflow (Experimental) node repeats a sequence of steps for each object in spec.iterations. It is available where the editor offers it. Set a unique ref for the loop. Add the repeated nodes to spec.steps.

Inside the loop, use its reference to read the current object's fields. For a loop with ref: "regions", ${refs.regions.region} reads the current object's region value. Iterations can run concurrently, while steps within each iteration run in sequence.

  • {object}
    LoopWorkflow node
    • ref

      string
      An identifier that can used to reference the output of this node later in the template.
    • kind

      string required
      The kind of node.
      one of
      LoopWorkflow
    • skipNodeExecution

      (multiple options: oneOf)
      If set to 'true', the execution of the node will be skipped.
      • string
        If set to 'true', the execution of the node will be skipped.
        one of
        true, false
      • OR

      • string
        A string containing one or more references that resolve to if set to 'true', the execution of the node will be skipped.
        pattern
        .*\${.*}.*
    • spec

      {object} required
      The specification for the loop workflow node.

Team resource nodes

Team resource nodes manage resources and integrations within your account. They do not require a project context to run.

The editor shows nodes available to your account and template type. Add the resource node in the visual editor. Open its form to configure it. Nodes that offer Update mode support the resource update modes.

KindDescription
ProjectCreate or update a project
BYOC integrationCreate or update a cloud provider integration
BYOC clusterCreate or update a cluster and node pools
BYOC registryCreate or update a registry for build images
DomainAdd a domain to your account
SubdomainCreate or update a subdomain
Subdomain pathCreate a path for routing on a subdomain
SSH identityConfigure SSH access to workloads
Workload identityConfigure workload access to cloud resources
Load balancerRoute TCP or UDP traffic to workloads
Egress IPConfigure a fixed IP address for outgoing traffic
Network policyControl incoming and outgoing workload traffic
OpenTofuManage resources outside Northflank
TagCreate or update a tag for resources
Custom planCreate or update a custom resource plan
Secret inheritanceMerge multiple global secrets with priority ordering
Rollout strategyCreate or update a canary rollout strategy

Project

Full specification (put or create)

  • {object}
    Project node
    • ref

      string
      An identifier that can used to reference the output of this node later in the template.
    • kind

      string required
      The kind of node.
      one of
      Project
    • skipNodeExecution

      (multiple options: oneOf)
      If set to 'true', the execution of the node will be skipped.
      • string
        If set to 'true', the execution of the node will be skipped.
        one of
        true, false
      • OR

      • string
        A string containing one or more references that resolve to if set to 'true', the execution of the node will be skipped.
        pattern
        .*\${.*}.*
    • spec

      (multiple options: oneOf) required
    • updateMode

      string
      Controls how the resource is created or updated on each template run. `put` (default) creates or fully replaces the resource. `create` only creates the resource and skips the node if it already exists. `patch` partially updates only the supplied fields on an existing resource.
      one of
      put, create

Partial update (patch)

  • {object}
    Project patch node
    • ref

      string
      An identifier that can used to reference the output of this node later in the template.
    • kind

      string required
      The kind of node.
      one of
      Project
    • skipNodeExecution

      (multiple options: oneOf)
      If set to 'true', the execution of the node will be skipped.
      • string
        If set to 'true', the execution of the node will be skipped.
        one of
        true, false
      • OR

      • string
        A string containing one or more references that resolve to if set to 'true', the execution of the node will be skipped.
        pattern
        .*\${.*}.*
    • spec

      {object} required
      The specification for the Project node.
    • updateMode

      string required
      Partially updates only the supplied fields on an existing resource.
      one of
      patch

BYOC integration

Full specification (put or create)

  • {object}
    BYOCIntegration node
    • ref

      string
      An identifier that can used to reference the output of this node later in the template.
    • kind

      string required
      The kind of node.
      one of
      BYOCIntegration
    • skipNodeExecution

      (multiple options: oneOf)
      If set to 'true', the execution of the node will be skipped.
      • string
        If set to 'true', the execution of the node will be skipped.
        one of
        true, false
      • OR

      • string
        A string containing one or more references that resolve to if set to 'true', the execution of the node will be skipped.
        pattern
        .*\${.*}.*
    • spec

      {object} required
      The specification for the BYOCIntegration node.
    • updateMode

      string
      Controls how the resource is created or updated on each template run. `put` (default) creates or fully replaces the resource. `create` only creates the resource and skips the node if it already exists. `patch` partially updates only the supplied fields on an existing resource.
      one of
      put, create

Partial update (patch)

  • {object}
    BYOCIntegration patch node
    • ref

      string
      An identifier that can used to reference the output of this node later in the template.
    • kind

      string required
      The kind of node.
      one of
      BYOCIntegration
    • skipNodeExecution

      (multiple options: oneOf)
      If set to 'true', the execution of the node will be skipped.
      • string
        If set to 'true', the execution of the node will be skipped.
        one of
        true, false
      • OR

      • string
        A string containing one or more references that resolve to if set to 'true', the execution of the node will be skipped.
        pattern
        .*\${.*}.*
    • spec

      {object} required
      The specification for the BYOCIntegration node.
    • updateMode

      string required
      Partially updates only the supplied fields on an existing resource.
      one of
      patch

BYOC cluster

Full specification (put or create)

  • {object}
    BYOCCluster node
    • ref

      string
      An identifier that can used to reference the output of this node later in the template.
    • kind

      string required
      The kind of node.
      one of
      BYOCCluster
    • skipNodeExecution

      (multiple options: oneOf)
      If set to 'true', the execution of the node will be skipped.
      • string
        If set to 'true', the execution of the node will be skipped.
        one of
        true, false
      • OR

      • string
        A string containing one or more references that resolve to if set to 'true', the execution of the node will be skipped.
        pattern
        .*\${.*}.*
    • spec

      {object} required
      The specification for the BYOCCluster node.
    • updateMode

      string
      Controls how the resource is created or updated on each template run. `put` (default) creates or fully replaces the resource. `create` only creates the resource and skips the node if it already exists. `patch` partially updates only the supplied fields on an existing resource.
      one of
      put, create

Partial update (patch)

  • {object}
    BYOCCluster patch node
    • ref

      string
      An identifier that can used to reference the output of this node later in the template.
    • kind

      string required
      The kind of node.
      one of
      BYOCCluster
    • skipNodeExecution

      (multiple options: oneOf)
      If set to 'true', the execution of the node will be skipped.
      • string
        If set to 'true', the execution of the node will be skipped.
        one of
        true, false
      • OR

      • string
        A string containing one or more references that resolve to if set to 'true', the execution of the node will be skipped.
        pattern
        .*\${.*}.*
    • spec

      {object} required
      The specification for the BYOCCluster node.
    • updateMode

      string required
      Partially updates only the supplied fields on an existing resource.
      one of
      patch

BYOC registry

Use this node in a template to configure a custom build registry. Select a supported cloud provider, integration, and region in the node form. This node is unavailable in release flows and preview environment templates.

Full specification (put or create)

  • {object}
    BYOCRegistry node
    • ref

      string
      An identifier that can used to reference the output of this node later in the template.
    • kind

      string required
      The kind of node.
      one of
      BYOCRegistry
    • skipNodeExecution

      (multiple options: oneOf)
      If set to 'true', the execution of the node will be skipped.
      • string
        If set to 'true', the execution of the node will be skipped.
        one of
        true, false
      • OR

      • string
        A string containing one or more references that resolve to if set to 'true', the execution of the node will be skipped.
        pattern
        .*\${.*}.*
    • spec

      {object} required
      The specification for the BYOCRegistry node.
    • updateMode

      string
      Controls how the resource is created or updated on each template run. `put` (default) creates or fully replaces the resource. `create` only creates the resource and skips the node if it already exists. `patch` partially updates only the supplied fields on an existing resource.
      one of
      put, create

Partial update (patch)

  • {object}
    BYOCRegistry patch node
    • ref

      string
      An identifier that can used to reference the output of this node later in the template.
    • kind

      string required
      The kind of node.
      one of
      BYOCRegistry
    • skipNodeExecution

      (multiple options: oneOf)
      If set to 'true', the execution of the node will be skipped.
      • string
        If set to 'true', the execution of the node will be skipped.
        one of
        true, false
      • OR

      • string
        A string containing one or more references that resolve to if set to 'true', the execution of the node will be skipped.
        pattern
        .*\${.*}.*
    • spec

      {object} required
      The specification for the BYOCRegistry node.
    • updateMode

      string required
      Partially updates only the supplied fields on an existing resource.
      one of
      patch

Domain

The Domain node adds a domain to your Northflank account in templates and preview environment templates. It does not register or purchase a domain. Supply the domain name in spec.domain.

Add the DNS records requested by Northflank at your DNS provider. Creating the node does not complete ownership verification. Use the domain verification action after the records are available.

Repeated runs reuse domains that this template or preview environment created. They do not update the domain's configuration. The node fails if the domain already exists outside that template or environment. This node does not offer Update mode.

  • {object}
    Domain node
    • ref

      string
      An identifier that can used to reference the output of this node later in the template.
    • kind

      string required
      The kind of node.
      one of
      Domain
    • skipNodeExecution

      (multiple options: oneOf)
      If set to 'true', the execution of the node will be skipped.
      • string
        If set to 'true', the execution of the node will be skipped.
        one of
        true, false
      • OR

      • string
        A string containing one or more references that resolve to if set to 'true', the execution of the node will be skipped.
        pattern
        .*\${.*}.*
    • spec

      {object} required
      The specification for the Domain node.

Subdomain

Use this node to create a subdomain in templates and preview environment templates. Complete the domain and subdomain verification requirements before routing traffic. See link a domain to a port for service routing.

This node uses spec.domain and spec.name to identify the target subdomain. It does not offer Update mode.

  • {object}
    Subdomain node
    • ref

      string
      An identifier that can used to reference the output of this node later in the template.
    • kind

      string required
      The kind of node.
      one of
      Subdomain
    • skipNodeExecution

      (multiple options: oneOf)
      If set to 'true', the execution of the node will be skipped.
      • string
        If set to 'true', the execution of the node will be skipped.
        one of
        true, false
      • OR

      • string
        A string containing one or more references that resolve to if set to 'true', the execution of the node will be skipped.
        pattern
        .*\${.*}.*
    • spec

      {object} required
      The specification for the Subdomain node.

Subdomain path

  • {object}
    SubdomainPath node
    • ref

      string
      An identifier that can used to reference the output of this node later in the template.
    • kind

      string required
      The kind of node.
      one of
      SubdomainPath
    • skipNodeExecution

      (multiple options: oneOf)
      If set to 'true', the execution of the node will be skipped.
      • string
        If set to 'true', the execution of the node will be skipped.
        one of
        true, false
      • OR

      • string
        A string containing one or more references that resolve to if set to 'true', the execution of the node will be skipped.
        pattern
        .*\${.*}.*
    • spec

      {object} required
      The specification for the SubdomainPath node.

SSH identity

An SSH identity controls access through SSH keys. Use this node in a template to define the identity and its workload restrictions. See SSH access for connection requirements.

This node is unavailable in release flows and preview environment templates.

Full specification (put or create)

  • {object}
    SSHIdentity node
    • ref

      string
      An identifier that can used to reference the output of this node later in the template.
    • kind

      string required
      The kind of node.
      one of
      SSHIdentity
    • skipNodeExecution

      (multiple options: oneOf)
      If set to 'true', the execution of the node will be skipped.
      • string
        If set to 'true', the execution of the node will be skipped.
        one of
        true, false
      • OR

      • string
        A string containing one or more references that resolve to if set to 'true', the execution of the node will be skipped.
        pattern
        .*\${.*}.*
    • spec

      {object} required
      The specification for the SSHIdentity node.
    • updateMode

      string
      Controls how the resource is created or updated on each template run. `put` (default) creates or fully replaces the resource. `create` only creates the resource and skips the node if it already exists. `patch` partially updates only the supplied fields on an existing resource.
      one of
      put, create

Partial update (patch)

  • {object}
    SSHIdentity patch node
    • ref

      string
      An identifier that can used to reference the output of this node later in the template.
    • kind

      string required
      The kind of node.
      one of
      SSHIdentity
    • skipNodeExecution

      (multiple options: oneOf)
      If set to 'true', the execution of the node will be skipped.
      • string
        If set to 'true', the execution of the node will be skipped.
        one of
        true, false
      • OR

      • string
        A string containing one or more references that resolve to if set to 'true', the execution of the node will be skipped.
        pattern
        .*\${.*}.*
    • spec

      {object} required
      The specification for the SSHIdentity node.
    • updateMode

      string required
      Partially updates only the supplied fields on an existing resource.
      one of
      patch

Workload identity

A workload identity grants workloads access to cloud resources. Use this node in a template with workload identity enabled for your account. Configure the cloud integration, role, and workload restrictions in the node form.

This node is unavailable in release flows and preview environment templates.

Full specification (put or create)

  • {object}
    WorkloadIdentity node
    • ref

      string
      An identifier that can used to reference the output of this node later in the template.
    • kind

      string required
      The kind of node.
      one of
      WorkloadIdentity
    • condition

      string
      one of
      success
    • skipNodeExecution

      (multiple options: oneOf)
      If set to 'true', the execution of the node will be skipped.
      • string
        If set to 'true', the execution of the node will be skipped.
        one of
        true, false
      • OR

      • string
        A string containing one or more references that resolve to if set to 'true', the execution of the node will be skipped.
        pattern
        .*\${.*}.*
    • spec

      {object} required
      The specification for the WorkloadIdentity node.
    • updateMode

      string
      Controls how the resource is created or updated on each template run. `put` (default) creates or fully replaces the resource. `create` only creates the resource and skips the node if it already exists. `patch` partially updates only the supplied fields on an existing resource.
      one of
      put, create

Partial update (patch)

  • {object}
    WorkloadIdentity patch node
    • ref

      string
      An identifier that can used to reference the output of this node later in the template.
    • kind

      string required
      The kind of node.
      one of
      WorkloadIdentity
    • condition

      string
      one of
      success
    • skipNodeExecution

      (multiple options: oneOf)
      If set to 'true', the execution of the node will be skipped.
      • string
        If set to 'true', the execution of the node will be skipped.
        one of
        true, false
      • OR

      • string
        A string containing one or more references that resolve to if set to 'true', the execution of the node will be skipped.
        pattern
        .*\${.*}.*
    • spec

      {object} required
      The specification for the WorkloadIdentity node.
    • updateMode

      string required
      Partially updates only the supplied fields on an existing resource.
      one of
      patch

Load balancer

Use this node in a template to configure a dedicated load balancer and its workload backends. It routes TCP or UDP traffic. This resource is separate from the cluster ingress load balancers used by ordinary HTTP service ports.

This node is unavailable in release flows and preview environment templates.

Full specification (put or create)

  • {object}
    LoadBalancer node
    • ref

      string
      An identifier that can used to reference the output of this node later in the template.
    • kind

      string required
      The kind of node.
      one of
      LoadBalancer
    • skipNodeExecution

      (multiple options: oneOf)
      If set to 'true', the execution of the node will be skipped.
      • string
        If set to 'true', the execution of the node will be skipped.
        one of
        true, false
      • OR

      • string
        A string containing one or more references that resolve to if set to 'true', the execution of the node will be skipped.
        pattern
        .*\${.*}.*
    • spec

      {object} required
      The specification for the LoadBalancer node.
    • updateMode

      string
      Controls how the resource is created or updated on each template run. `put` (default) creates or fully replaces the resource. `create` only creates the resource and skips the node if it already exists. `patch` partially updates only the supplied fields on an existing resource.
      one of
      put, create

Partial update (patch)

  • {object}
    LoadBalancer patch node
    • ref

      string
      An identifier that can used to reference the output of this node later in the template.
    • kind

      string required
      The kind of node.
      one of
      LoadBalancer
    • skipNodeExecution

      (multiple options: oneOf)
      If set to 'true', the execution of the node will be skipped.
      • string
        If set to 'true', the execution of the node will be skipped.
        one of
        true, false
      • OR

      • string
        A string containing one or more references that resolve to if set to 'true', the execution of the node will be skipped.
        pattern
        .*\${.*}.*
    • spec

      {object} required
      The specification for the LoadBalancer node.
    • updateMode

      string required
      Partially updates only the supplied fields on an existing resource.
      one of
      patch

Egress IP

An egress IP is an address for outgoing traffic. Use this node in a template to configure a fixed egress IP. Configure the region and workload selection in the node form.

This node is unavailable in release flows and preview environment templates.

Full specification (put or create)

  • {object}
    EgressIp node
    • ref

      string
      An identifier that can used to reference the output of this node later in the template.
    • kind

      string required
      The kind of node.
      one of
      EgressIp
    • skipNodeExecution

      (multiple options: oneOf)
      If set to 'true', the execution of the node will be skipped.
      • string
        If set to 'true', the execution of the node will be skipped.
        one of
        true, false
      • OR

      • string
        A string containing one or more references that resolve to if set to 'true', the execution of the node will be skipped.
        pattern
        .*\${.*}.*
    • spec

      {object} required
      The specification for the EgressIp node.
    • updateMode

      string
      Controls how the resource is created or updated on each template run. `put` (default) creates or fully replaces the resource. `create` only creates the resource and skips the node if it already exists. `patch` partially updates only the supplied fields on an existing resource.
      one of
      put, create

Partial update (patch)

  • {object}
    EgressIp patch node
    • ref

      string
      An identifier that can used to reference the output of this node later in the template.
    • kind

      string required
      The kind of node.
      one of
      EgressIp
    • skipNodeExecution

      (multiple options: oneOf)
      If set to 'true', the execution of the node will be skipped.
      • string
        If set to 'true', the execution of the node will be skipped.
        one of
        true, false
      • OR

      • string
        A string containing one or more references that resolve to if set to 'true', the execution of the node will be skipped.
        pattern
        .*\${.*}.*
    • spec

      {object} required
      The specification for the EgressIp node.
    • updateMode

      string required
      Partially updates only the supplied fields on an existing resource.
      one of
      patch

Network policy

Use this node in a template to define network policies for selected workloads on supported BYOC clusters. Configure the project and tag restrictions and the traffic rules in the node form. Network policies control incoming and outgoing traffic.

This node is unavailable in release flows and preview environment templates.

Full specification (put or create)

  • {object}
    NetworkPolicy node
    • ref

      string
      An identifier that can used to reference the output of this node later in the template.
    • kind

      string required
      The kind of node.
      one of
      NetworkPolicy
    • skipNodeExecution

      (multiple options: oneOf)
      If set to 'true', the execution of the node will be skipped.
      • string
        If set to 'true', the execution of the node will be skipped.
        one of
        true, false
      • OR

      • string
        A string containing one or more references that resolve to if set to 'true', the execution of the node will be skipped.
        pattern
        .*\${.*}.*
    • spec

      {object} required
      The specification for the NetworkPolicy node.
    • updateMode

      string
      Controls how the resource is created or updated on each template run. `put` (default) creates or fully replaces the resource. `create` only creates the resource and skips the node if it already exists. `patch` partially updates only the supplied fields on an existing resource.
      one of
      put, create

Partial update (patch)

  • {object}
    NetworkPolicy patch node
    • ref

      string
      An identifier that can used to reference the output of this node later in the template.
    • kind

      string required
      The kind of node.
      one of
      NetworkPolicy
    • skipNodeExecution

      (multiple options: oneOf)
      If set to 'true', the execution of the node will be skipped.
      • string
        If set to 'true', the execution of the node will be skipped.
        one of
        true, false
      • OR

      • string
        A string containing one or more references that resolve to if set to 'true', the execution of the node will be skipped.
        pattern
        .*\${.*}.*
    • spec

      {object} required
      The specification for the NetworkPolicy node.
    • updateMode

      string required
      Partially updates only the supplied fields on an existing resource.
      one of
      patch

OpenTofu

Use this node to manage external cloud resources in templates and preview environment templates. Configure a supported provider and its credentials before running the node. See manage external infrastructure for provider configuration and examples.

OpenTofu uses its own plan and apply workflow and does not offer Update mode. Use OpenTofuDestroy in a teardown workflow to remove resources that this node manages.

  • {object}
    OpenTofu node
    • ref

      string
      An identifier that can used to reference the output of this node later in the template.
    • kind

      string required
      The kind of node.
      one of
      OpenTofu
    • condition

      string
      one of
      success
    • skipNodeExecution

      (multiple options: oneOf)
      If set to 'true', the execution of the node will be skipped.
      • string
        If set to 'true', the execution of the node will be skipped.
        one of
        true, false
      • OR

      • string
        A string containing one or more references that resolve to if set to 'true', the execution of the node will be skipped.
        pattern
        .*\${.*}.*
    • spec

      {object} required
      The specification for the OpenTofu node.

Tag

Full specification (put or create)

  • {object}
    ResourceTag node
    • ref

      string
      An identifier that can used to reference the output of this node later in the template.
    • kind

      string required
      The kind of node.
      one of
      ResourceTag
    • skipNodeExecution

      (multiple options: oneOf)
      If set to 'true', the execution of the node will be skipped.
      • string
        If set to 'true', the execution of the node will be skipped.
        one of
        true, false
      • OR

      • string
        A string containing one or more references that resolve to if set to 'true', the execution of the node will be skipped.
        pattern
        .*\${.*}.*
    • spec

      {object} required
      The specification for the ResourceTag node.
    • updateMode

      string
      Controls how the resource is created or updated on each template run. `put` (default) creates or fully replaces the resource. `create` only creates the resource and skips the node if it already exists. `patch` partially updates only the supplied fields on an existing resource.
      one of
      put, create

Partial update (patch)

  • {object}
    ResourceTag patch node
    • ref

      string
      An identifier that can used to reference the output of this node later in the template.
    • kind

      string required
      The kind of node.
      one of
      ResourceTag
    • skipNodeExecution

      (multiple options: oneOf)
      If set to 'true', the execution of the node will be skipped.
      • string
        If set to 'true', the execution of the node will be skipped.
        one of
        true, false
      • OR

      • string
        A string containing one or more references that resolve to if set to 'true', the execution of the node will be skipped.
        pattern
        .*\${.*}.*
    • spec

      {object} required
      The specification for the ResourceTag node.
    • updateMode

      string required
      Partially updates only the supplied fields on an existing resource.
      one of
      patch

Custom plan

Full specification (put or create)

  • {object}
    CustomPlan node
    • ref

      string
      An identifier that can used to reference the output of this node later in the template.
    • kind

      string required
      The kind of node.
      one of
      CustomPlan
    • skipNodeExecution

      (multiple options: oneOf)
      If set to 'true', the execution of the node will be skipped.
      • string
        If set to 'true', the execution of the node will be skipped.
        one of
        true, false
      • OR

      • string
        A string containing one or more references that resolve to if set to 'true', the execution of the node will be skipped.
        pattern
        .*\${.*}.*
    • spec

      {object} required
      The specification for the CustomPlan node.
    • updateMode

      string
      Controls how the resource is created or updated on each template run. `put` (default) creates or fully replaces the resource. `create` only creates the resource and skips the node if it already exists. `patch` partially updates only the supplied fields on an existing resource.
      one of
      put, create

Partial update (patch)

  • {object}
    CustomPlan patch node
    • ref

      string
      An identifier that can used to reference the output of this node later in the template.
    • kind

      string required
      The kind of node.
      one of
      CustomPlan
    • skipNodeExecution

      (multiple options: oneOf)
      If set to 'true', the execution of the node will be skipped.
      • string
        If set to 'true', the execution of the node will be skipped.
        one of
        true, false
      • OR

      • string
        A string containing one or more references that resolve to if set to 'true', the execution of the node will be skipped.
        pattern
        .*\${.*}.*
    • spec

      {object} required
      The specification for the CustomPlan node.
    • updateMode

      string required
      Partially updates only the supplied fields on an existing resource.
      one of
      patch

Secret inheritance

  • {object}
    SecretInheritance node
    • ref

      string
      An identifier that can used to reference the output of this node later in the template.
    • kind

      string required
      The kind of node.
      one of
      SecretInheritance
    • skipNodeExecution

      (multiple options: oneOf)
      If set to 'true', the execution of the node will be skipped.
      • string
        If set to 'true', the execution of the node will be skipped.
        one of
        true, false
      • OR

      • string
        A string containing one or more references that resolve to if set to 'true', the execution of the node will be skipped.
        pattern
        .*\${.*}.*
    • spec

      {object} required
      The specification for the SecretInheritance node.

Rollout strategy

A rollout strategy can be attached to a deployment service or combined service node by setting gradualRolloutStrategyId in the node's deployment object.

Full specification (put or create)

  • {object}
    RolloutStrategy node
    • ref

      string
      An identifier that can used to reference the output of this node later in the template.
    • kind

      string required
      The kind of node.
      one of
      RolloutStrategy
    • skipNodeExecution

      (multiple options: oneOf)
      If set to 'true', the execution of the node will be skipped.
      • string
        If set to 'true', the execution of the node will be skipped.
        one of
        true, false
      • OR

      • string
        A string containing one or more references that resolve to if set to 'true', the execution of the node will be skipped.
        pattern
        .*\${.*}.*
    • spec

      {object} required
      The specification for the RolloutStrategy node.
    • updateMode

      string
      Controls how the resource is created or updated on each template run. `put` (default) creates or fully replaces the resource. `create` only creates the resource and skips the node if it already exists. `patch` partially updates only the supplied fields on an existing resource.
      one of
      put, create

Partial update (patch)

  • {object}
    RolloutStrategy patch node
    • ref

      string
      An identifier that can used to reference the output of this node later in the template.
    • kind

      string required
      The kind of node.
      one of
      RolloutStrategy
    • skipNodeExecution

      (multiple options: oneOf)
      If set to 'true', the execution of the node will be skipped.
      • string
        If set to 'true', the execution of the node will be skipped.
        one of
        true, false
      • OR

      • string
        A string containing one or more references that resolve to if set to 'true', the execution of the node will be skipped.
        pattern
        .*\${.*}.*
    • spec

      {object} required
      The specification for the RolloutStrategy node.
    • updateMode

      string required
      Partially updates only the supplied fields on an existing resource.
      one of
      patch

Project resource nodes

Project resource nodes manage services, jobs, addons, and other resources within a project. Use action nodes to start builds, run jobs, or back up addons.

Project resource nodes require a project context to run. Set the context on the parent workflow. Nodes with a spec.projectId field also accept the context directly.

The editor shows nodes available to your account and template type. Add the resource node in the visual editor. Open its form to configure it. Nodes that offer Update mode support the resource update modes.

KindDescription
Combined serviceCreate or update a combined service
Build serviceCreate or update a build service
Deployment serviceCreate or update a deployment service
HarnessCreate or update a cloud coding environment
Cron jobCreate or update a cron job
Manual jobCreate or update a manual job
AddonCreate or update an addon
External addonManage a resource through an external provider
Secret groupCreate or update a secret group
PipelineCreate or update a pipeline
EnvironmentCreate or update an environment
Workflow templateDefine a reusable workflow
Preview blueprintDefine a preview blueprint
VolumeCreate or update a volume

To enable CI/CD and build from private Git repositories you must have a Git account linked to your Northflank team. To deploy images from a private container registry you must add your registry credentials to your team.

Combined service

A combined service builds code from a repository and deploys the resulting image. Configure its repository, build rules, and deployment in the node form.

You can attach a canary rollout strategy to the service by setting gradualRolloutStrategyId in the deployment object.

Full specification (put or create)

  • {object}
    CombinedService node
    • ref

      string
      An identifier that can used to reference the output of this node later in the template.
    • kind

      string required
      The kind of node.
      one of
      CombinedService
    • skipNodeExecution

      (multiple options: oneOf)
      If set to 'true', the execution of the node will be skipped.
      • string
        If set to 'true', the execution of the node will be skipped.
        one of
        true, false
      • OR

      • string
        A string containing one or more references that resolve to if set to 'true', the execution of the node will be skipped.
        pattern
        .*\${.*}.*
    • options

      {object}
      • allowUnlinkingDomains

        (multiple options: oneOf)
        Allows the template to remove existing domain assignments from this service.
        • boolean
          Allows the template to remove existing domain assignments from this service.
        • OR

        • string
          A string containing one or more references that resolve to allows the template to remove existing domain assignments from this service.
          pattern
          .*\${.*}.*
    • spec

      {object} required
      The specification for the CombinedService node.
    • updateMode

      string
      Controls how the resource is created or updated on each template run. `put` (default) creates or fully replaces the resource. `create` only creates the resource and skips the node if it already exists. `patch` partially updates only the supplied fields on an existing resource.
      one of
      put, create

Partial update (patch)

  • {object}
    CombinedService patch node
    • ref

      string
      An identifier that can used to reference the output of this node later in the template.
    • kind

      string required
      The kind of node.
      one of
      CombinedService
    • skipNodeExecution

      (multiple options: oneOf)
      If set to 'true', the execution of the node will be skipped.
      • string
        If set to 'true', the execution of the node will be skipped.
        one of
        true, false
      • OR

      • string
        A string containing one or more references that resolve to if set to 'true', the execution of the node will be skipped.
        pattern
        .*\${.*}.*
    • options

      {object}
      • allowUnlinkingDomains

        (multiple options: oneOf)
        Allows the template to remove existing domain assignments from this service.
        • boolean
          Allows the template to remove existing domain assignments from this service.
        • OR

        • string
          A string containing one or more references that resolve to allows the template to remove existing domain assignments from this service.
          pattern
          .*\${.*}.*
    • spec

      {object} required
      The specification for the CombinedService node.
    • updateMode

      string required
      Partially updates only the supplied fields on an existing resource.
      one of
      patch

Build service

After the build service node, add a Start build node to build an image during the run. Enable Wait for completion before using the image in later nodes. See build rules for builds triggered by repository changes.

Full specification (put or create)

  • {object}
    BuildService node
    • ref

      string
      An identifier that can used to reference the output of this node later in the template.
    • kind

      string required
      The kind of node.
      one of
      BuildService
    • skipNodeExecution

      (multiple options: oneOf)
      If set to 'true', the execution of the node will be skipped.
      • string
        If set to 'true', the execution of the node will be skipped.
        one of
        true, false
      • OR

      • string
        A string containing one or more references that resolve to if set to 'true', the execution of the node will be skipped.
        pattern
        .*\${.*}.*
    • spec

      {object} required
      The specification for the BuildService node.
    • updateMode

      string
      Controls how the resource is created or updated on each template run. `put` (default) creates or fully replaces the resource. `create` only creates the resource and skips the node if it already exists. `patch` partially updates only the supplied fields on an existing resource.
      one of
      put, create

Partial update (patch)

  • {object}
    BuildService patch node
    • ref

      string
      An identifier that can used to reference the output of this node later in the template.
    • kind

      string required
      The kind of node.
      one of
      BuildService
    • skipNodeExecution

      (multiple options: oneOf)
      If set to 'true', the execution of the node will be skipped.
      • string
        If set to 'true', the execution of the node will be skipped.
        one of
        true, false
      • OR

      • string
        A string containing one or more references that resolve to if set to 'true', the execution of the node will be skipped.
        pattern
        .*\${.*}.*
    • spec

      {object} required
      The specification for the BuildService node.
    • updateMode

      string required
      Partially updates only the supplied fields on an existing resource.
      one of
      patch

Deployment service

You can link a deployment service to a build service or deploy an image from a container registry. Select the source and image version in the node form. See deployment sources for build and registry choices.

You can attach a canary rollout strategy to the service by setting gradualRolloutStrategyId in the deployment object.

Full specification (put or create)

  • {object}
    DeploymentService node
    • ref

      string
      An identifier that can used to reference the output of this node later in the template.
    • kind

      string required
      The kind of node.
      one of
      DeploymentService
    • skipNodeExecution

      (multiple options: oneOf)
      If set to 'true', the execution of the node will be skipped.
      • string
        If set to 'true', the execution of the node will be skipped.
        one of
        true, false
      • OR

      • string
        A string containing one or more references that resolve to if set to 'true', the execution of the node will be skipped.
        pattern
        .*\${.*}.*
    • options

      {object}
      • allowUnlinkingDomains

        (multiple options: oneOf)
        Allows the template to remove existing domain assignments from this service.
        • boolean
          Allows the template to remove existing domain assignments from this service.
        • OR

        • string
          A string containing one or more references that resolve to allows the template to remove existing domain assignments from this service.
          pattern
          .*\${.*}.*
    • spec

      {object} required
      The specification for the DeploymentService node.
    • updateMode

      string
      Controls how the resource is created or updated on each template run. `put` (default) creates or fully replaces the resource. `create` only creates the resource and skips the node if it already exists. `patch` partially updates only the supplied fields on an existing resource.
      one of
      put, create

Partial update (patch)

  • {object}
    DeploymentService patch node
    • ref

      string
      An identifier that can used to reference the output of this node later in the template.
    • kind

      string required
      The kind of node.
      one of
      DeploymentService
    • skipNodeExecution

      (multiple options: oneOf)
      If set to 'true', the execution of the node will be skipped.
      • string
        If set to 'true', the execution of the node will be skipped.
        one of
        true, false
      • OR

      • string
        A string containing one or more references that resolve to if set to 'true', the execution of the node will be skipped.
        pattern
        .*\${.*}.*
    • options

      {object}
      • allowUnlinkingDomains

        (multiple options: oneOf)
        Allows the template to remove existing domain assignments from this service.
        • boolean
          Allows the template to remove existing domain assignments from this service.
        • OR

        • string
          A string containing one or more references that resolve to allows the template to remove existing domain assignments from this service.
          pattern
          .*\${.*}.*
    • spec

      {object} required
      The specification for the DeploymentService node.
    • updateMode

      string required
      Partially updates only the supplied fields on an existing resource.
      one of
      patch

Harness

A Cloud Harness is a cloud environment for coding agents. Use the Harness node in templates and preview environment templates where Cloud Harnesses are available to your account. Configure its deployment source, compute resources, and networking in the node form.

See create a Cloud Harness for setup and connection instructions.

Full specification (put or create)

  • {object}
    Harness node
    • ref

      string
      An identifier that can used to reference the output of this node later in the template.
    • kind

      string required
      The kind of node.
      one of
      Harness
    • skipNodeExecution

      (multiple options: oneOf)
      If set to 'true', the execution of the node will be skipped.
      • string
        If set to 'true', the execution of the node will be skipped.
        one of
        true, false
      • OR

      • string
        A string containing one or more references that resolve to if set to 'true', the execution of the node will be skipped.
        pattern
        .*\${.*}.*
    • spec

      {object} required
      The specification for the Harness node.
    • updateMode

      string
      Controls how the resource is created or updated on each template run. `put` (default) creates or fully replaces the resource. `create` only creates the resource and skips the node if it already exists. `patch` partially updates only the supplied fields on an existing resource.
      one of
      put, create

Partial update (patch)

  • {object}
    Harness patch node
    • ref

      string
      An identifier that can used to reference the output of this node later in the template.
    • kind

      string required
      The kind of node.
      one of
      Harness
    • skipNodeExecution

      (multiple options: oneOf)
      If set to 'true', the execution of the node will be skipped.
      • string
        If set to 'true', the execution of the node will be skipped.
        one of
        true, false
      • OR

      • string
        A string containing one or more references that resolve to if set to 'true', the execution of the node will be skipped.
        pattern
        .*\${.*}.*
    • spec

      {object} required
      The specification for the Harness node.
    • updateMode

      string required
      Partially updates only the supplied fields on an existing resource.
      one of
      patch

Cron job

You can deploy a job using an image from a container registry or one built by a Northflank build service.

To build the job image from source, link a Git repository. Add a Start build node to build the image during the template run.

Full specification (put or create)

  • {object}
    CronJob node
    • ref

      string
      An identifier that can used to reference the output of this node later in the template.
    • kind

      string required
      The kind of node.
      one of
      CronJob
    • skipNodeExecution

      (multiple options: oneOf)
      If set to 'true', the execution of the node will be skipped.
      • string
        If set to 'true', the execution of the node will be skipped.
        one of
        true, false
      • OR

      • string
        A string containing one or more references that resolve to if set to 'true', the execution of the node will be skipped.
        pattern
        .*\${.*}.*
    • spec

      {object} required
      The specification for the CronJob node.
    • updateMode

      string
      Controls how the resource is created or updated on each template run. `put` (default) creates or fully replaces the resource. `create` only creates the resource and skips the node if it already exists. `patch` partially updates only the supplied fields on an existing resource.
      one of
      put, create

Partial update (patch)

  • {object}
    CronJob patch node
    • ref

      string
      An identifier that can used to reference the output of this node later in the template.
    • kind

      string required
      The kind of node.
      one of
      CronJob
    • skipNodeExecution

      (multiple options: oneOf)
      If set to 'true', the execution of the node will be skipped.
      • string
        If set to 'true', the execution of the node will be skipped.
        one of
        true, false
      • OR

      • string
        A string containing one or more references that resolve to if set to 'true', the execution of the node will be skipped.
        pattern
        .*\${.*}.*
    • spec

      {object} required
      The specification for the CronJob node.
    • updateMode

      string required
      Partially updates only the supplied fields on an existing resource.
      one of
      patch

Manual job

You can deploy a job using an image from a container registry or one built by a Northflank build service.

To build the job image from source, link a Git repository. Add a Start build node to build the image during the template run.

Full specification (put or create)

  • {object}
    ManualJob node
    • ref

      string
      An identifier that can used to reference the output of this node later in the template.
    • kind

      string required
      The kind of node.
      one of
      ManualJob
    • skipNodeExecution

      (multiple options: oneOf)
      If set to 'true', the execution of the node will be skipped.
      • string
        If set to 'true', the execution of the node will be skipped.
        one of
        true, false
      • OR

      • string
        A string containing one or more references that resolve to if set to 'true', the execution of the node will be skipped.
        pattern
        .*\${.*}.*
    • spec

      {object} required
      The specification for the ManualJob node.
    • updateMode

      string
      Controls how the resource is created or updated on each template run. `put` (default) creates or fully replaces the resource. `create` only creates the resource and skips the node if it already exists. `patch` partially updates only the supplied fields on an existing resource.
      one of
      put, create

Partial update (patch)

  • {object}
    ManualJob patch node
    • ref

      string
      An identifier that can used to reference the output of this node later in the template.
    • kind

      string required
      The kind of node.
      one of
      ManualJob
    • skipNodeExecution

      (multiple options: oneOf)
      If set to 'true', the execution of the node will be skipped.
      • string
        If set to 'true', the execution of the node will be skipped.
        one of
        true, false
      • OR

      • string
        A string containing one or more references that resolve to if set to 'true', the execution of the node will be skipped.
        pattern
        .*\${.*}.*
    • spec

      {object} required
      The specification for the ManualJob node.
    • updateMode

      string required
      Partially updates only the supplied fields on an existing resource.
      one of
      patch

Addon

Use a secret group node to share an addon's connection details with workloads. Before a backup or restore, use a condition node to wait until the addon runs.

Fork an addon

You can fork an addon from an existing project or one created earlier in the template. Select a backup compatible with the target addon version. See fork an addon for version requirements.

The latest choice uses the most recent backup. The node fails if no backup is available.

Upgrade an addon

To allow an upgrade, enable Upgrade on version mismatch or set options.upgradeOnVersionMismatch: true on the addon node. This control is disabled by default. Follow the supported upgrade path for the addon type.

Full specification (put or create)

  • {object}
    Addon node
    • ref

      string
      An identifier that can used to reference the output of this node later in the template.
    • kind

      string required
      The kind of node.
      one of
      Addon
    • skipNodeExecution

      (multiple options: oneOf)
      If set to 'true', the execution of the node will be skipped.
      • string
        If set to 'true', the execution of the node will be skipped.
        one of
        true, false
      • OR

      • string
        A string containing one or more references that resolve to if set to 'true', the execution of the node will be skipped.
        pattern
        .*\${.*}.*
    • options

      {object}
      • upgradeOnVersionMismatch

        (multiple options: oneOf)
        • boolean
        • OR

        • string
          pattern
          .*\${.*}.*
    • spec

      (multiple options: anyOf) required
      The provisioner type of the addon
    • updateMode

      string
      Controls how the resource is created or updated on each template run. `put` (default) creates or fully replaces the resource. `create` only creates the resource and skips the node if it already exists. `patch` partially updates only the supplied fields on an existing resource.
      one of
      put, create

Partial update (patch)

  • {object}
    Addon patch node
    • ref

      string
      An identifier that can used to reference the output of this node later in the template.
    • kind

      string required
      The kind of node.
      one of
      Addon
    • skipNodeExecution

      (multiple options: oneOf)
      If set to 'true', the execution of the node will be skipped.
      • string
        If set to 'true', the execution of the node will be skipped.
        one of
        true, false
      • OR

      • string
        A string containing one or more references that resolve to if set to 'true', the execution of the node will be skipped.
        pattern
        .*\${.*}.*
    • options

      {object}
      • upgradeOnVersionMismatch

        (multiple options: oneOf)
        • boolean
        • OR

        • string
          pattern
          .*\${.*}.*
    • spec

      (multiple options: anyOf) required
      The provisioner type of the addon
    • updateMode

      string required
      Partially updates only the supplied fields on an existing resource.
      one of
      patch

External addon

Use this node in templates and preview environment templates to manage a resource through a supported external provider. Configure the provider integration, resource type, and resource values in the node form. See external addon templates for an example that links outputs to a secret group.

External addons use their own provisioning workflow and do not offer Update mode.

This node uses the parent workflow's project context.

  • {object}
    ExternalAddon node
    • ref

      string
      An identifier that can used to reference the output of this node later in the template.
    • kind

      string required
      The kind of node.
      one of
      ExternalAddon
    • condition

      string
      one of
      success
    • skipNodeExecution

      (multiple options: oneOf)
      If set to 'true', the execution of the node will be skipped.
      • string
        If set to 'true', the execution of the node will be skipped.
        one of
        true, false
      • OR

      • string
        A string containing one or more references that resolve to if set to 'true', the execution of the node will be skipped.
        pattern
        .*\${.*}.*
    • spec

      {object} required
      The specification for the ExternalAddon node.

Secret group

Use a secret group node to define shared values and link addon connection details to workloads. Keep sensitive values in template secrets.

Full specification (put or create)

  • {object}
    SecretGroup node
    • ref

      string
      An identifier that can used to reference the output of this node later in the template.
    • kind

      string required
      The kind of node.
      one of
      SecretGroup
    • skipNodeExecution

      (multiple options: oneOf)
      If set to 'true', the execution of the node will be skipped.
      • string
        If set to 'true', the execution of the node will be skipped.
        one of
        true, false
      • OR

      • string
        A string containing one or more references that resolve to if set to 'true', the execution of the node will be skipped.
        pattern
        .*\${.*}.*
    • spec

      {object} required
      The specification for the SecretGroup node.
    • updateMode

      string
      Controls how the resource is created or updated on each template run. `put` (default) creates or fully replaces the resource. `create` only creates the resource and skips the node if it already exists. `patch` partially updates only the supplied fields on an existing resource.
      one of
      put, create

Partial update (patch)

  • {object}
    SecretGroup patch node
    • ref

      string
      An identifier that can used to reference the output of this node later in the template.
    • kind

      string required
      The kind of node.
      one of
      SecretGroup
    • skipNodeExecution

      (multiple options: oneOf)
      If set to 'true', the execution of the node will be skipped.
      • string
        If set to 'true', the execution of the node will be skipped.
        one of
        true, false
      • OR

      • string
        A string containing one or more references that resolve to if set to 'true', the execution of the node will be skipped.
        pattern
        .*\${.*}.*
    • spec

      {object} required
      The specification for the SecretGroup node.
    • updateMode

      string required
      Partially updates only the supplied fields on an existing resource.
      one of
      patch

Pipeline

Use this node to define a legacy pipeline, its stages, and nested release flow or preview templates. Configure the pipeline in its project context. For separate environments, workflows, and preview blueprints, use the environment and template nodes.

Full specification (put or create)

  • {object}
    Pipeline node
    • ref

      string
      An identifier that can used to reference the output of this node later in the template.
    • kind

      string required
      The kind of node.
      one of
      Pipeline
    • skipNodeExecution

      (multiple options: oneOf)
      If set to 'true', the execution of the node will be skipped.
      • string
        If set to 'true', the execution of the node will be skipped.
        one of
        true, false
      • OR

      • string
        A string containing one or more references that resolve to if set to 'true', the execution of the node will be skipped.
        pattern
        .*\${.*}.*
    • spec

      {object} required
      The specification for the Pipeline node.
    • updateMode

      string
      Controls how the resource is created or updated on each template run. `put` (default) creates or fully replaces the resource. `create` only creates the resource and skips the node if it already exists. `patch` partially updates only the supplied fields on an existing resource.
      one of
      put, create

Partial update (patch)

  • {object}
    Pipeline patch node
    • ref

      string
      An identifier that can used to reference the output of this node later in the template.
    • kind

      string required
      The kind of node.
      one of
      Pipeline
    • skipNodeExecution

      (multiple options: oneOf)
      If set to 'true', the execution of the node will be skipped.
      • string
        If set to 'true', the execution of the node will be skipped.
        one of
        true, false
      • OR

      • string
        A string containing one or more references that resolve to if set to 'true', the execution of the node will be skipped.
        pattern
        .*\${.*}.*
    • spec

      {object} required
      The specification for the Pipeline node.
    • updateMode

      string required
      Partially updates only the supplied fields on an existing resource.
      one of
      patch

Volume

Use a volume node to configure persistent storage and its workload attachments. Attaching a volume can restart the affected workload. See add a volume for storage and attachment requirements.

Full specification (put or create)

  • {object}
    Volume node
    • ref

      string
      An identifier that can used to reference the output of this node later in the template.
    • kind

      string required
      The kind of node.
      one of
      Volume
    • skipNodeExecution

      (multiple options: oneOf)
      If set to 'true', the execution of the node will be skipped.
      • string
        If set to 'true', the execution of the node will be skipped.
        one of
        true, false
      • OR

      • string
        A string containing one or more references that resolve to if set to 'true', the execution of the node will be skipped.
        pattern
        .*\${.*}.*
    • spec

      {object} required
      The specification for the Volume node.
    • updateMode

      string
      Controls how the resource is created or updated on each template run. `put` (default) creates or fully replaces the resource. `create` only creates the resource and skips the node if it already exists. `patch` partially updates only the supplied fields on an existing resource.
      one of
      put, create

Partial update (patch)

  • {object}
    Volume patch node
    • ref

      string
      An identifier that can used to reference the output of this node later in the template.
    • kind

      string required
      The kind of node.
      one of
      Volume
    • skipNodeExecution

      (multiple options: oneOf)
      If set to 'true', the execution of the node will be skipped.
      • string
        If set to 'true', the execution of the node will be skipped.
        one of
        true, false
      • OR

      • string
        A string containing one or more references that resolve to if set to 'true', the execution of the node will be skipped.
        pattern
        .*\${.*}.*
    • spec

      {object} required
      The specification for the Volume node.
    • updateMode

      string required
      Partially updates only the supplied fields on an existing resource.
      one of
      patch

Environment node

The Environment node creates or updates an environment within a project. Its JSON kind is ReleaseStage. Set spec.name and spec.position, with a project context on the node or its parent workflow.

Use separate Workflow template and Preview blueprint nodes to define reusable automation. These nodes are available in templates, rather than inside release flows or preview environment templates. They do not offer Update mode.

  • {object}
    ReleaseStage node
    • ref

      string
      An identifier that can used to reference the output of this node later in the template.
    • kind

      string required
      The kind of node.
      one of
      ReleaseStage
    • skipNodeExecution

      (multiple options: oneOf)
      If set to 'true', the execution of the node will be skipped.
      • string
        If set to 'true', the execution of the node will be skipped.
        one of
        true, false
      • OR

      • string
        A string containing one or more references that resolve to if set to 'true', the execution of the node will be skipped.
        pattern
        .*\${.*}.*
    • spec

      {object} required
      The specification for the ReleaseStage node.

References, arguments, and functions in nested templates

References, arguments, and functions within a nested workflow or preview blueprint normally resolve when that nested template runs. Prefix an expression with template to resolve it during the parent template run. Use the prefix for parent values needed in nested triggers and rich inputs.

For example:

  • "${template.refs.build.branch}" uses the parent build node's branch.
  • "${template.args.SECRET}" uses an argument from the parent template.
  • "${template.fn.randomString(64)}" generates a value during the parent template run.

Preview blueprint

Use a PreviewBlueprint node to create or update a preview blueprint in a project. Put the blueprint's configuration and root node inside the node's spec. See preview blueprints for triggers and environment creation.

  • {object}
    PreviewBlueprint node
    • ref

      string
      An identifier that can used to reference the output of this node later in the template.
    • kind

      string required
      The kind of node.
      one of
      PreviewBlueprint
    • skipNodeExecution

      (multiple options: oneOf)
      If set to 'true', the execution of the node will be skipped.
      • string
        If set to 'true', the execution of the node will be skipped.
        one of
        true, false
      • OR

      • string
        A string containing one or more references that resolve to if set to 'true', the execution of the node will be skipped.
        pattern
        .*\${.*}.*
    • spec

      {object} required
      The specification for the PreviewBlueprint node.

Workflow

Use a WorkflowTemplate node to create or update a reusable workflow in a project. Set spec.stageId to associate the workflow with an environment. See configure workflows for workflow configuration and triggers.

  • {object}
    WorkflowTemplate node
    • ref

      string
      An identifier that can used to reference the output of this node later in the template.
    • kind

      string required
      The kind of node.
      one of
      WorkflowTemplate
    • skipNodeExecution

      (multiple options: oneOf)
      If set to 'true', the execution of the node will be skipped.
      • string
        If set to 'true', the execution of the node will be skipped.
        one of
        true, false
      • OR

      • string
        A string containing one or more references that resolve to if set to 'true', the execution of the node will be skipped.
        pattern
        .*\${.*}.*
    • spec

      {object} required
      The specification for the WorkflowTemplate node.

Action nodes

Action nodes start operations on existing resources, such as builds, job runs, backups, and domain verification. For operations that support it, enable Wait for completion before later nodes depend on the result.

In preview blueprints, runNodeOnce: "true" skips a supported node after it succeeds for that environment. Failed nodes can run again. Moving the node or changing its reference can cause it to run again.

KindDescription
Run backupPerforms a backup on an addon
Import backupImports a backup into an addon from a URL or connection string
Job runRuns a job with the specified configuration
Start buildTriggers a build in a service or job, from a branch or a specific commit
Run actionPerforms the action contained within the node

Run backup

An addon must be in a running state to run a backup successfully. Before the backup node runs, use a condition node to wait until the addon runs.

  • {object}
    AddonBackup node
    • ref

      string
      An identifier that can used to reference the output of this node later in the template.
    • kind

      string required
      The kind of node.
      one of
      AddonBackup
    • condition

      string
      one of
      success
    • skipNodeExecution

      (multiple options: oneOf)
      If set to 'true', the execution of the node will be skipped.
      • string
        If set to 'true', the execution of the node will be skipped.
        one of
        true, false
      • OR

      • string
        A string containing one or more references that resolve to if set to 'true', the execution of the node will be skipped.
        pattern
        .*\${.*}.*
    • runNodeOnce

      (multiple options: oneOf)
      • string
        one of
        true, false
      • OR

      • string
        pattern
        .*\${.*}.*
    • spec

      {object} required
      The specification for the AddonBackup node.

Run job

Start a job run. The job must have a build or image available.

  • {object}
    JobRun node
    • ref

      string
      An identifier that can used to reference the output of this node later in the template.
    • kind

      string required
      The kind of node.
      one of
      JobRun
    • condition

      string
      one of
      success
    • skipNodeExecution

      (multiple options: oneOf)
      If set to 'true', the execution of the node will be skipped.
      • string
        If set to 'true', the execution of the node will be skipped.
        one of
        true, false
      • OR

      • string
        A string containing one or more references that resolve to if set to 'true', the execution of the node will be skipped.
        pattern
        .*\${.*}.*
    • runNodeOnce

      (multiple options: oneOf)
      • string
        one of
        true, false
      • OR

      • string
        pattern
        .*\${.*}.*
    • spec

      {object} required
      The specification for the JobRun node.

Import backup

Import a backup into an addon from a URL or live database connection. Use this to automate data seeding, cross-environment migrations, or disaster recovery workflows in templates, workflows, and preview blueprints. See backup, restore, and import data for the UI method.

Set spec.importUrl to a backup file URL or spec.connectionString to a live database connection string. Supply exactly one of these fields. Template import nodes do not accept file uploads.

By default, the node continues while the import runs. Enable Wait for completion to wait for a successful import. In JSON, set condition: "success" beside the node's kind and spec.

You can combine this with a Run action node to import and restore data in the same workflow.

  • {object}
    AddonImport node
    • ref

      string
      An identifier that can used to reference the output of this node later in the template.
    • kind

      string required
      The kind of node.
      one of
      AddonImport
    • condition

      string
      one of
      success
    • skipNodeExecution

      (multiple options: oneOf)
      If set to 'true', the execution of the node will be skipped.
      • string
        If set to 'true', the execution of the node will be skipped.
        one of
        true, false
      • OR

      • string
        A string containing one or more references that resolve to if set to 'true', the execution of the node will be skipped.
        pattern
        .*\${.*}.*
    • runNodeOnce

      (multiple options: oneOf)
      • string
        one of
        true, false
      • OR

      • string
        pattern
        .*\${.*}.*
    • spec

      {object} required
      The specification for the AddonImport node.

Start build

You can trigger builds in build and combined services, and jobs that deploy from version control.

  • {object}
    Build node
    • ref

      string
      An identifier that can used to reference the output of this node later in the template.
    • kind

      string required
      The kind of node.
      one of
      Build
    • condition

      string
      one of
      success
    • skipNodeExecution

      (multiple options: oneOf)
      If set to 'true', the execution of the node will be skipped.
      • string
        If set to 'true', the execution of the node will be skipped.
        one of
        true, false
      • OR

      • string
        A string containing one or more references that resolve to if set to 'true', the execution of the node will be skipped.
        pattern
        .*\${.*}.*
    • spec

      {object} required
      The specification for the Build node.

Run action

The Run action node acts on services, jobs, addons, domains, and VCS (version control system) accounts.

KindOn resource
RestartService or addon
Execute commandService or job
Restore addon from backupAddon (with available backup)
Clone repositoryLinked VCS account
Verify domainDomain in your account

Commands in action nodes do not invoke a shell by default. Learn more about executing commands in action nodes.

  • {object}
    Action node
    • ref

      string
      An identifier that can used to reference the output of this node later in the template.
    • kind

      string required
      The kind of node.
      one of
      Action
    • skipNodeExecution

      (multiple options: oneOf)
      If set to 'true', the execution of the node will be skipped.
      • string
        If set to 'true', the execution of the node will be skipped.
        one of
        true, false
      • OR

      • string
        A string containing one or more references that resolve to if set to 'true', the execution of the node will be skipped.
        pattern
        .*\${.*}.*
    • runNodeOnce

      (multiple options: oneOf)
      • string
        one of
        true, false
      • OR

      • string
        pattern
        .*\${.*}.*
    • spec

      (multiple options: oneOf) required
      The specification for the Action node.

Verify a domain

The domain verification action starts ownership verification for a domain already in your account. Add the DNS records requested by Northflank before running it. The action does not create records at your DNS provider.

In a Run action node, select Domain and Verify. Enable Wait for completion to wait for verification. In JSON, use the following structure:

{
  "kind": "Action",
  "spec": {
    "kind": "Domain",
    "spec": {
      "type": "verify",
      "data": {
        "domain": "example.com"
      },
      "condition": "verified"
    }
  }
}

Without the condition, the action continues after starting verification. It does not wait for the domain to become verified. Use the domain condition to wait for verification that is already in progress.

Message node

A message node sends a notification when it runs. You can use it to report progress from a template, workflow, or preview blueprint.

KindDescription
SlackSends a message to Slack via a webhook or a Slack integration
WebhookSends a message to an arbitrary webhook URL
VCSComments on a pull request in a linked version control repository

The message content supports template arguments, functions, and references, so you can include values such as a generated preview domain in the notification.

In preview blueprints, set runNodeOnce: "true" to skip the message node after it succeeds for that environment. Failed nodes can run again. Moving the node or changing its reference can cause it to run again.

  • {object}
    Message node
    • ref

      string
      An identifier that can used to reference the output of this node later in the template.
    • kind

      string required
      The kind of node.
      one of
      Message
    • skipNodeExecution

      (multiple options: oneOf)
      If set to 'true', the execution of the node will be skipped.
      • string
        If set to 'true', the execution of the node will be skipped.
        one of
        true, false
      • OR

      • string
        A string containing one or more references that resolve to if set to 'true', the execution of the node will be skipped.
        pattern
        .*\${.*}.*
    • runNodeOnce

      (multiple options: oneOf)
      • string
        one of
        true, false
      • OR

      • string
        pattern
        .*\${.*}.*
    • spec

      (multiple options: oneOf) required
      The specification for the Message node.

Condition nodes

Condition nodes wait for a resource state or an operation result. In a sequential workflow, later nodes wait until the condition succeeds. In a parallel workflow, other nodes continue, but the workflow waits for the condition before it completes.

Use the node form to select a resource and condition. Set a timeout to limit how long the node waits. A failed condition or timeout fails the node.

KindDescription
ServiceWait until a service runs
AddonWait until an addon runs
Addon backupWait until an addon backup succeeds
Addon importWait until an addon import succeeds
BYOC clusterWait until a BYOC cluster runs
VCSWait until a Git repository clone succeeds
BuildWait until a build succeeds
Job runWait until a job run succeeds
DomainWait until the domain is verified
  • {object}
    Condition node
    • ref

      string
      An identifier that can used to reference the output of this node later in the template.
    • kind

      string required
      The kind of node.
      one of
      Condition
    • skipNodeExecution

      (multiple options: oneOf)
      If set to 'true', the execution of the node will be skipped.
      • string
        If set to 'true', the execution of the node will be skipped.
        one of
        true, false
      • OR

      • string
        A string containing one or more references that resolve to if set to 'true', the execution of the node will be skipped.
        pattern
        .*\${.*}.*
    • spec

      (multiple options: oneOf) required
      The specification for the Condition node.

Domain verification

The domain condition waits for an existing domain to become verified. It does not start verification or create DNS records. Start verification through the domain action or the domain page before waiting for it.

In a condition node, select Domain and Domain is verified. Use spec.kind: "Domain", spec.spec.type: "verified", and spec.spec.data.domain for the domain name in JSON. A missing domain, a final verification failure, or an expired timeout causes the condition to fail.

Approval

An Approval node waits until it receives the required approvals. Later nodes in a sequential workflow wait for approval. Other nodes in a parallel workflow can continue.

Set Number of approvals required in the form, or use a positive integer in spec.amount. Approve the node from the template run page to continue.

  • {object}
    Approval node
    • ref

      string
      An identifier that can used to reference the output of this node later in the template.
    • kind

      string required
      The kind of node.
      one of
      Approval
    • skipNodeExecution

      (multiple options: oneOf)
      If set to 'true', the execution of the node will be skipped.
      • string
        If set to 'true', the execution of the node will be skipped.
        one of
        true, false
      • OR

      • string
        A string containing one or more references that resolve to if set to 'true', the execution of the node will be skipped.
        pattern
        .*\${.*}.*
    • spec

      {object} required
      The specification for the Approval node.

© 2026 Northflank Ltd. All rights reserved.

northflank.com / Terms / Privacy / feedback@northflank.ai