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 mode | JSON value | Behavior on each run |
|---|---|---|
| Put (create or replace) | put | Creates a missing resource or replaces an existing resource's configuration with the supplied specification. |
| Patch (partial update) | patch | Updates supplied fields on an existing resource. Fails if the resource does not exist. |
| Create only | create | Creates 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.
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
putandcreate, 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.
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:
- Open the node's form in the visual editor.
- For service nodes, expand Template.
- Expand Advanced.
- Select an Update mode.
- Edit the specification for the chosen mode.
- Review the node's code for unwanted values.
- Click Save node.
- 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
stringAn identifier that can used to reference the output of this node later in the template.kind
string requiredThe kind of node.one ofWorkflowskipNodeExecution
(multiple options: oneOf)If set to 'true', the execution of the node will be skipped.- stringIf set to 'true', the execution of the node will be skipped.one oftrue, false
- stringA string containing one or more references that resolve to if set to 'true', the execution of the node will be skipped.pattern.*\${.*}.*
spec
{object} requiredThe specification for the workflow node.
OR
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
stringAn identifier that can used to reference the output of this node later in the template.kind
string requiredThe kind of node.one ofLoopWorkflowskipNodeExecution
(multiple options: oneOf)If set to 'true', the execution of the node will be skipped.- stringIf set to 'true', the execution of the node will be skipped.one oftrue, false
- stringA string containing one or more references that resolve to if set to 'true', the execution of the node will be skipped.pattern.*\${.*}.*
spec
{object} requiredThe specification for the loop workflow node.
OR
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.
| Kind | Description |
|---|---|
| Project | Create or update a project |
| BYOC integration | Create or update a cloud provider integration |
| BYOC cluster | Create or update a cluster and node pools |
| BYOC registry | Create or update a registry for build images |
| Domain | Add a domain to your account |
| Subdomain | Create or update a subdomain |
| Subdomain path | Create a path for routing on a subdomain |
| SSH identity | Configure SSH access to workloads |
| Workload identity | Configure workload access to cloud resources |
| Load balancer | Route TCP or UDP traffic to workloads |
| Egress IP | Configure a fixed IP address for outgoing traffic |
| Network policy | Control incoming and outgoing workload traffic |
| OpenTofu | Manage resources outside Northflank |
| Tag | Create or update a tag for resources |
| Custom plan | Create or update a custom resource plan |
| Secret inheritance | Merge multiple global secrets with priority ordering |
| Rollout strategy | Create or update a canary rollout strategy |
Project
Full specification (put or create)
- {object}Project node
ref
stringAn identifier that can used to reference the output of this node later in the template.kind
string requiredThe kind of node.one ofProjectskipNodeExecution
(multiple options: oneOf)If set to 'true', the execution of the node will be skipped.- stringIf set to 'true', the execution of the node will be skipped.one oftrue, false
- stringA 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) requiredupdateMode
stringControls 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 ofput, create
OR
Partial update (patch)
- {object}Project patch node
ref
stringAn identifier that can used to reference the output of this node later in the template.kind
string requiredThe kind of node.one ofProjectskipNodeExecution
(multiple options: oneOf)If set to 'true', the execution of the node will be skipped.- stringIf set to 'true', the execution of the node will be skipped.one oftrue, false
- stringA string containing one or more references that resolve to if set to 'true', the execution of the node will be skipped.pattern.*\${.*}.*
spec
{object} requiredThe specification for the Project node.updateMode
string requiredPartially updates only the supplied fields on an existing resource.one ofpatch
OR
BYOC integration
Full specification (put or create)
- {object}BYOCIntegration node
ref
stringAn identifier that can used to reference the output of this node later in the template.kind
string requiredThe kind of node.one ofBYOCIntegrationskipNodeExecution
(multiple options: oneOf)If set to 'true', the execution of the node will be skipped.- stringIf set to 'true', the execution of the node will be skipped.one oftrue, false
- stringA string containing one or more references that resolve to if set to 'true', the execution of the node will be skipped.pattern.*\${.*}.*
spec
{object} requiredThe specification for the BYOCIntegration node.updateMode
stringControls 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 ofput, create
OR
Partial update (patch)
- {object}BYOCIntegration patch node
ref
stringAn identifier that can used to reference the output of this node later in the template.kind
string requiredThe kind of node.one ofBYOCIntegrationskipNodeExecution
(multiple options: oneOf)If set to 'true', the execution of the node will be skipped.- stringIf set to 'true', the execution of the node will be skipped.one oftrue, false
- stringA string containing one or more references that resolve to if set to 'true', the execution of the node will be skipped.pattern.*\${.*}.*
spec
{object} requiredThe specification for the BYOCIntegration node.updateMode
string requiredPartially updates only the supplied fields on an existing resource.one ofpatch
OR
BYOC cluster
Full specification (put or create)
- {object}BYOCCluster node
ref
stringAn identifier that can used to reference the output of this node later in the template.kind
string requiredThe kind of node.one ofBYOCClusterskipNodeExecution
(multiple options: oneOf)If set to 'true', the execution of the node will be skipped.- stringIf set to 'true', the execution of the node will be skipped.one oftrue, false
- stringA string containing one or more references that resolve to if set to 'true', the execution of the node will be skipped.pattern.*\${.*}.*
spec
{object} requiredThe specification for the BYOCCluster node.updateMode
stringControls 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 ofput, create
OR
Partial update (patch)
- {object}BYOCCluster patch node
ref
stringAn identifier that can used to reference the output of this node later in the template.kind
string requiredThe kind of node.one ofBYOCClusterskipNodeExecution
(multiple options: oneOf)If set to 'true', the execution of the node will be skipped.- stringIf set to 'true', the execution of the node will be skipped.one oftrue, false
- stringA string containing one or more references that resolve to if set to 'true', the execution of the node will be skipped.pattern.*\${.*}.*
spec
{object} requiredThe specification for the BYOCCluster node.updateMode
string requiredPartially updates only the supplied fields on an existing resource.one ofpatch
OR
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
stringAn identifier that can used to reference the output of this node later in the template.kind
string requiredThe kind of node.one ofBYOCRegistryskipNodeExecution
(multiple options: oneOf)If set to 'true', the execution of the node will be skipped.- stringIf set to 'true', the execution of the node will be skipped.one oftrue, false
- stringA string containing one or more references that resolve to if set to 'true', the execution of the node will be skipped.pattern.*\${.*}.*
spec
{object} requiredThe specification for the BYOCRegistry node.updateMode
stringControls 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 ofput, create
OR
Partial update (patch)
- {object}BYOCRegistry patch node
ref
stringAn identifier that can used to reference the output of this node later in the template.kind
string requiredThe kind of node.one ofBYOCRegistryskipNodeExecution
(multiple options: oneOf)If set to 'true', the execution of the node will be skipped.- stringIf set to 'true', the execution of the node will be skipped.one oftrue, false
- stringA string containing one or more references that resolve to if set to 'true', the execution of the node will be skipped.pattern.*\${.*}.*
spec
{object} requiredThe specification for the BYOCRegistry node.updateMode
string requiredPartially updates only the supplied fields on an existing resource.one ofpatch
OR
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
stringAn identifier that can used to reference the output of this node later in the template.kind
string requiredThe kind of node.one ofDomainskipNodeExecution
(multiple options: oneOf)If set to 'true', the execution of the node will be skipped.- stringIf set to 'true', the execution of the node will be skipped.one oftrue, false
- stringA string containing one or more references that resolve to if set to 'true', the execution of the node will be skipped.pattern.*\${.*}.*
spec
{object} requiredThe specification for the Domain node.
OR
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
stringAn identifier that can used to reference the output of this node later in the template.kind
string requiredThe kind of node.one ofSubdomainskipNodeExecution
(multiple options: oneOf)If set to 'true', the execution of the node will be skipped.- stringIf set to 'true', the execution of the node will be skipped.one oftrue, false
- stringA string containing one or more references that resolve to if set to 'true', the execution of the node will be skipped.pattern.*\${.*}.*
spec
{object} requiredThe specification for the Subdomain node.
OR
Subdomain path
- {object}SubdomainPath node
ref
stringAn identifier that can used to reference the output of this node later in the template.kind
string requiredThe kind of node.one ofSubdomainPathskipNodeExecution
(multiple options: oneOf)If set to 'true', the execution of the node will be skipped.- stringIf set to 'true', the execution of the node will be skipped.one oftrue, false
- stringA string containing one or more references that resolve to if set to 'true', the execution of the node will be skipped.pattern.*\${.*}.*
spec
{object} requiredThe specification for the SubdomainPath node.
OR
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
stringAn identifier that can used to reference the output of this node later in the template.kind
string requiredThe kind of node.one ofSSHIdentityskipNodeExecution
(multiple options: oneOf)If set to 'true', the execution of the node will be skipped.- stringIf set to 'true', the execution of the node will be skipped.one oftrue, false
- stringA string containing one or more references that resolve to if set to 'true', the execution of the node will be skipped.pattern.*\${.*}.*
spec
{object} requiredThe specification for the SSHIdentity node.updateMode
stringControls 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 ofput, create
OR
Partial update (patch)
- {object}SSHIdentity patch node
ref
stringAn identifier that can used to reference the output of this node later in the template.kind
string requiredThe kind of node.one ofSSHIdentityskipNodeExecution
(multiple options: oneOf)If set to 'true', the execution of the node will be skipped.- stringIf set to 'true', the execution of the node will be skipped.one oftrue, false
- stringA string containing one or more references that resolve to if set to 'true', the execution of the node will be skipped.pattern.*\${.*}.*
spec
{object} requiredThe specification for the SSHIdentity node.updateMode
string requiredPartially updates only the supplied fields on an existing resource.one ofpatch
OR
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
stringAn identifier that can used to reference the output of this node later in the template.kind
string requiredThe kind of node.one ofWorkloadIdentitycondition
stringone ofsuccessskipNodeExecution
(multiple options: oneOf)If set to 'true', the execution of the node will be skipped.- stringIf set to 'true', the execution of the node will be skipped.one oftrue, false
- stringA string containing one or more references that resolve to if set to 'true', the execution of the node will be skipped.pattern.*\${.*}.*
spec
{object} requiredThe specification for the WorkloadIdentity node.updateMode
stringControls 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 ofput, create
OR
Partial update (patch)
- {object}WorkloadIdentity patch node
ref
stringAn identifier that can used to reference the output of this node later in the template.kind
string requiredThe kind of node.one ofWorkloadIdentitycondition
stringone ofsuccessskipNodeExecution
(multiple options: oneOf)If set to 'true', the execution of the node will be skipped.- stringIf set to 'true', the execution of the node will be skipped.one oftrue, false
- stringA string containing one or more references that resolve to if set to 'true', the execution of the node will be skipped.pattern.*\${.*}.*
spec
{object} requiredThe specification for the WorkloadIdentity node.updateMode
string requiredPartially updates only the supplied fields on an existing resource.one ofpatch
OR
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
stringAn identifier that can used to reference the output of this node later in the template.kind
string requiredThe kind of node.one ofLoadBalancerskipNodeExecution
(multiple options: oneOf)If set to 'true', the execution of the node will be skipped.- stringIf set to 'true', the execution of the node will be skipped.one oftrue, false
- stringA string containing one or more references that resolve to if set to 'true', the execution of the node will be skipped.pattern.*\${.*}.*
spec
{object} requiredThe specification for the LoadBalancer node.updateMode
stringControls 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 ofput, create
OR
Partial update (patch)
- {object}LoadBalancer patch node
ref
stringAn identifier that can used to reference the output of this node later in the template.kind
string requiredThe kind of node.one ofLoadBalancerskipNodeExecution
(multiple options: oneOf)If set to 'true', the execution of the node will be skipped.- stringIf set to 'true', the execution of the node will be skipped.one oftrue, false
- stringA string containing one or more references that resolve to if set to 'true', the execution of the node will be skipped.pattern.*\${.*}.*
spec
{object} requiredThe specification for the LoadBalancer node.updateMode
string requiredPartially updates only the supplied fields on an existing resource.one ofpatch
OR
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
stringAn identifier that can used to reference the output of this node later in the template.kind
string requiredThe kind of node.one ofEgressIpskipNodeExecution
(multiple options: oneOf)If set to 'true', the execution of the node will be skipped.- stringIf set to 'true', the execution of the node will be skipped.one oftrue, false
- stringA string containing one or more references that resolve to if set to 'true', the execution of the node will be skipped.pattern.*\${.*}.*
spec
{object} requiredThe specification for the EgressIp node.updateMode
stringControls 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 ofput, create
OR
Partial update (patch)
- {object}EgressIp patch node
ref
stringAn identifier that can used to reference the output of this node later in the template.kind
string requiredThe kind of node.one ofEgressIpskipNodeExecution
(multiple options: oneOf)If set to 'true', the execution of the node will be skipped.- stringIf set to 'true', the execution of the node will be skipped.one oftrue, false
- stringA string containing one or more references that resolve to if set to 'true', the execution of the node will be skipped.pattern.*\${.*}.*
spec
{object} requiredThe specification for the EgressIp node.updateMode
string requiredPartially updates only the supplied fields on an existing resource.one ofpatch
OR
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
stringAn identifier that can used to reference the output of this node later in the template.kind
string requiredThe kind of node.one ofNetworkPolicyskipNodeExecution
(multiple options: oneOf)If set to 'true', the execution of the node will be skipped.- stringIf set to 'true', the execution of the node will be skipped.one oftrue, false
- stringA string containing one or more references that resolve to if set to 'true', the execution of the node will be skipped.pattern.*\${.*}.*
spec
{object} requiredThe specification for the NetworkPolicy node.updateMode
stringControls 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 ofput, create
OR
Partial update (patch)
- {object}NetworkPolicy patch node
ref
stringAn identifier that can used to reference the output of this node later in the template.kind
string requiredThe kind of node.one ofNetworkPolicyskipNodeExecution
(multiple options: oneOf)If set to 'true', the execution of the node will be skipped.- stringIf set to 'true', the execution of the node will be skipped.one oftrue, false
- stringA string containing one or more references that resolve to if set to 'true', the execution of the node will be skipped.pattern.*\${.*}.*
spec
{object} requiredThe specification for the NetworkPolicy node.updateMode
string requiredPartially updates only the supplied fields on an existing resource.one ofpatch
OR
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
stringAn identifier that can used to reference the output of this node later in the template.kind
string requiredThe kind of node.one ofOpenTofucondition
stringone ofsuccessskipNodeExecution
(multiple options: oneOf)If set to 'true', the execution of the node will be skipped.- stringIf set to 'true', the execution of the node will be skipped.one oftrue, false
- stringA string containing one or more references that resolve to if set to 'true', the execution of the node will be skipped.pattern.*\${.*}.*
spec
{object} requiredThe specification for the OpenTofu node.
OR
Tag
Full specification (put or create)
- {object}ResourceTag node
ref
stringAn identifier that can used to reference the output of this node later in the template.kind
string requiredThe kind of node.one ofResourceTagskipNodeExecution
(multiple options: oneOf)If set to 'true', the execution of the node will be skipped.- stringIf set to 'true', the execution of the node will be skipped.one oftrue, false
- stringA string containing one or more references that resolve to if set to 'true', the execution of the node will be skipped.pattern.*\${.*}.*
spec
{object} requiredThe specification for the ResourceTag node.updateMode
stringControls 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 ofput, create
OR
Partial update (patch)
- {object}ResourceTag patch node
ref
stringAn identifier that can used to reference the output of this node later in the template.kind
string requiredThe kind of node.one ofResourceTagskipNodeExecution
(multiple options: oneOf)If set to 'true', the execution of the node will be skipped.- stringIf set to 'true', the execution of the node will be skipped.one oftrue, false
- stringA string containing one or more references that resolve to if set to 'true', the execution of the node will be skipped.pattern.*\${.*}.*
spec
{object} requiredThe specification for the ResourceTag node.updateMode
string requiredPartially updates only the supplied fields on an existing resource.one ofpatch
OR
Custom plan
Full specification (put or create)
- {object}CustomPlan node
ref
stringAn identifier that can used to reference the output of this node later in the template.kind
string requiredThe kind of node.one ofCustomPlanskipNodeExecution
(multiple options: oneOf)If set to 'true', the execution of the node will be skipped.- stringIf set to 'true', the execution of the node will be skipped.one oftrue, false
- stringA string containing one or more references that resolve to if set to 'true', the execution of the node will be skipped.pattern.*\${.*}.*
spec
{object} requiredThe specification for the CustomPlan node.updateMode
stringControls 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 ofput, create
OR
Partial update (patch)
- {object}CustomPlan patch node
ref
stringAn identifier that can used to reference the output of this node later in the template.kind
string requiredThe kind of node.one ofCustomPlanskipNodeExecution
(multiple options: oneOf)If set to 'true', the execution of the node will be skipped.- stringIf set to 'true', the execution of the node will be skipped.one oftrue, false
- stringA string containing one or more references that resolve to if set to 'true', the execution of the node will be skipped.pattern.*\${.*}.*
spec
{object} requiredThe specification for the CustomPlan node.updateMode
string requiredPartially updates only the supplied fields on an existing resource.one ofpatch
OR
Secret inheritance
- {object}SecretInheritance node
ref
stringAn identifier that can used to reference the output of this node later in the template.kind
string requiredThe kind of node.one ofSecretInheritanceskipNodeExecution
(multiple options: oneOf)If set to 'true', the execution of the node will be skipped.- stringIf set to 'true', the execution of the node will be skipped.one oftrue, false
- stringA string containing one or more references that resolve to if set to 'true', the execution of the node will be skipped.pattern.*\${.*}.*
spec
{object} requiredThe specification for the SecretInheritance node.
OR
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
stringAn identifier that can used to reference the output of this node later in the template.kind
string requiredThe kind of node.one ofRolloutStrategyskipNodeExecution
(multiple options: oneOf)If set to 'true', the execution of the node will be skipped.- stringIf set to 'true', the execution of the node will be skipped.one oftrue, false
- stringA string containing one or more references that resolve to if set to 'true', the execution of the node will be skipped.pattern.*\${.*}.*
spec
{object} requiredThe specification for the RolloutStrategy node.updateMode
stringControls 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 ofput, create
OR
Partial update (patch)
- {object}RolloutStrategy patch node
ref
stringAn identifier that can used to reference the output of this node later in the template.kind
string requiredThe kind of node.one ofRolloutStrategyskipNodeExecution
(multiple options: oneOf)If set to 'true', the execution of the node will be skipped.- stringIf set to 'true', the execution of the node will be skipped.one oftrue, false
- stringA string containing one or more references that resolve to if set to 'true', the execution of the node will be skipped.pattern.*\${.*}.*
spec
{object} requiredThe specification for the RolloutStrategy node.updateMode
string requiredPartially updates only the supplied fields on an existing resource.one ofpatch
OR
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.
| Kind | Description |
|---|---|
| Combined service | Create or update a combined service |
| Build service | Create or update a build service |
| Deployment service | Create or update a deployment service |
| Harness | Create or update a cloud coding environment |
| Cron job | Create or update a cron job |
| Manual job | Create or update a manual job |
| Addon | Create or update an addon |
| External addon | Manage a resource through an external provider |
| Secret group | Create or update a secret group |
| Pipeline | Create or update a pipeline |
| Environment | Create or update an environment |
| Workflow template | Define a reusable workflow |
| Preview blueprint | Define a preview blueprint |
| Volume | Create 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
stringAn identifier that can used to reference the output of this node later in the template.kind
string requiredThe kind of node.one ofCombinedServiceskipNodeExecution
(multiple options: oneOf)If set to 'true', the execution of the node will be skipped.- stringIf set to 'true', the execution of the node will be skipped.one oftrue, false
- stringA 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.- booleanAllows the template to remove existing domain assignments from this service.
- stringA string containing one or more references that resolve to allows the template to remove existing domain assignments from this service.pattern.*\${.*}.*
spec
{object} requiredThe specification for the CombinedService node.updateMode
stringControls 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 ofput, create
OR
OR
Partial update (patch)
- {object}CombinedService patch node
ref
stringAn identifier that can used to reference the output of this node later in the template.kind
string requiredThe kind of node.one ofCombinedServiceskipNodeExecution
(multiple options: oneOf)If set to 'true', the execution of the node will be skipped.- stringIf set to 'true', the execution of the node will be skipped.one oftrue, false
- stringA 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.- booleanAllows the template to remove existing domain assignments from this service.
- stringA string containing one or more references that resolve to allows the template to remove existing domain assignments from this service.pattern.*\${.*}.*
spec
{object} requiredThe specification for the CombinedService node.updateMode
string requiredPartially updates only the supplied fields on an existing resource.one ofpatch
OR
OR
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
stringAn identifier that can used to reference the output of this node later in the template.kind
string requiredThe kind of node.one ofBuildServiceskipNodeExecution
(multiple options: oneOf)If set to 'true', the execution of the node will be skipped.- stringIf set to 'true', the execution of the node will be skipped.one oftrue, false
- stringA string containing one or more references that resolve to if set to 'true', the execution of the node will be skipped.pattern.*\${.*}.*
spec
{object} requiredThe specification for the BuildService node.updateMode
stringControls 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 ofput, create
OR
Partial update (patch)
- {object}BuildService patch node
ref
stringAn identifier that can used to reference the output of this node later in the template.kind
string requiredThe kind of node.one ofBuildServiceskipNodeExecution
(multiple options: oneOf)If set to 'true', the execution of the node will be skipped.- stringIf set to 'true', the execution of the node will be skipped.one oftrue, false
- stringA string containing one or more references that resolve to if set to 'true', the execution of the node will be skipped.pattern.*\${.*}.*
spec
{object} requiredThe specification for the BuildService node.updateMode
string requiredPartially updates only the supplied fields on an existing resource.one ofpatch
OR
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
stringAn identifier that can used to reference the output of this node later in the template.kind
string requiredThe kind of node.one ofDeploymentServiceskipNodeExecution
(multiple options: oneOf)If set to 'true', the execution of the node will be skipped.- stringIf set to 'true', the execution of the node will be skipped.one oftrue, false
- stringA 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.- booleanAllows the template to remove existing domain assignments from this service.
- stringA string containing one or more references that resolve to allows the template to remove existing domain assignments from this service.pattern.*\${.*}.*
spec
{object} requiredThe specification for the DeploymentService node.updateMode
stringControls 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 ofput, create
OR
OR
Partial update (patch)
- {object}DeploymentService patch node
ref
stringAn identifier that can used to reference the output of this node later in the template.kind
string requiredThe kind of node.one ofDeploymentServiceskipNodeExecution
(multiple options: oneOf)If set to 'true', the execution of the node will be skipped.- stringIf set to 'true', the execution of the node will be skipped.one oftrue, false
- stringA 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.- booleanAllows the template to remove existing domain assignments from this service.
- stringA string containing one or more references that resolve to allows the template to remove existing domain assignments from this service.pattern.*\${.*}.*
spec
{object} requiredThe specification for the DeploymentService node.updateMode
string requiredPartially updates only the supplied fields on an existing resource.one ofpatch
OR
OR
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
stringAn identifier that can used to reference the output of this node later in the template.kind
string requiredThe kind of node.one ofHarnessskipNodeExecution
(multiple options: oneOf)If set to 'true', the execution of the node will be skipped.- stringIf set to 'true', the execution of the node will be skipped.one oftrue, false
- stringA string containing one or more references that resolve to if set to 'true', the execution of the node will be skipped.pattern.*\${.*}.*
spec
{object} requiredThe specification for the Harness node.updateMode
stringControls 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 ofput, create
OR
Partial update (patch)
- {object}Harness patch node
ref
stringAn identifier that can used to reference the output of this node later in the template.kind
string requiredThe kind of node.one ofHarnessskipNodeExecution
(multiple options: oneOf)If set to 'true', the execution of the node will be skipped.- stringIf set to 'true', the execution of the node will be skipped.one oftrue, false
- stringA string containing one or more references that resolve to if set to 'true', the execution of the node will be skipped.pattern.*\${.*}.*
spec
{object} requiredThe specification for the Harness node.updateMode
string requiredPartially updates only the supplied fields on an existing resource.one ofpatch
OR
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
stringAn identifier that can used to reference the output of this node later in the template.kind
string requiredThe kind of node.one ofCronJobskipNodeExecution
(multiple options: oneOf)If set to 'true', the execution of the node will be skipped.- stringIf set to 'true', the execution of the node will be skipped.one oftrue, false
- stringA string containing one or more references that resolve to if set to 'true', the execution of the node will be skipped.pattern.*\${.*}.*
spec
{object} requiredThe specification for the CronJob node.updateMode
stringControls 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 ofput, create
OR
Partial update (patch)
- {object}CronJob patch node
ref
stringAn identifier that can used to reference the output of this node later in the template.kind
string requiredThe kind of node.one ofCronJobskipNodeExecution
(multiple options: oneOf)If set to 'true', the execution of the node will be skipped.- stringIf set to 'true', the execution of the node will be skipped.one oftrue, false
- stringA string containing one or more references that resolve to if set to 'true', the execution of the node will be skipped.pattern.*\${.*}.*
spec
{object} requiredThe specification for the CronJob node.updateMode
string requiredPartially updates only the supplied fields on an existing resource.one ofpatch
OR
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
stringAn identifier that can used to reference the output of this node later in the template.kind
string requiredThe kind of node.one ofManualJobskipNodeExecution
(multiple options: oneOf)If set to 'true', the execution of the node will be skipped.- stringIf set to 'true', the execution of the node will be skipped.one oftrue, false
- stringA string containing one or more references that resolve to if set to 'true', the execution of the node will be skipped.pattern.*\${.*}.*
spec
{object} requiredThe specification for the ManualJob node.updateMode
stringControls 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 ofput, create
OR
Partial update (patch)
- {object}ManualJob patch node
ref
stringAn identifier that can used to reference the output of this node later in the template.kind
string requiredThe kind of node.one ofManualJobskipNodeExecution
(multiple options: oneOf)If set to 'true', the execution of the node will be skipped.- stringIf set to 'true', the execution of the node will be skipped.one oftrue, false
- stringA string containing one or more references that resolve to if set to 'true', the execution of the node will be skipped.pattern.*\${.*}.*
spec
{object} requiredThe specification for the ManualJob node.updateMode
string requiredPartially updates only the supplied fields on an existing resource.one ofpatch
OR
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
stringAn identifier that can used to reference the output of this node later in the template.kind
string requiredThe kind of node.one ofAddonskipNodeExecution
(multiple options: oneOf)If set to 'true', the execution of the node will be skipped.- stringIf set to 'true', the execution of the node will be skipped.one oftrue, false
- stringA 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
- stringpattern.*\${.*}.*
spec
(multiple options: anyOf) requiredThe provisioner type of the addonupdateMode
stringControls 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 ofput, create
OR
OR
Partial update (patch)
- {object}Addon patch node
ref
stringAn identifier that can used to reference the output of this node later in the template.kind
string requiredThe kind of node.one ofAddonskipNodeExecution
(multiple options: oneOf)If set to 'true', the execution of the node will be skipped.- stringIf set to 'true', the execution of the node will be skipped.one oftrue, false
- stringA 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
- stringpattern.*\${.*}.*
spec
(multiple options: anyOf) requiredThe provisioner type of the addonupdateMode
string requiredPartially updates only the supplied fields on an existing resource.one ofpatch
OR
OR
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
stringAn identifier that can used to reference the output of this node later in the template.kind
string requiredThe kind of node.one ofExternalAddoncondition
stringone ofsuccessskipNodeExecution
(multiple options: oneOf)If set to 'true', the execution of the node will be skipped.- stringIf set to 'true', the execution of the node will be skipped.one oftrue, false
- stringA string containing one or more references that resolve to if set to 'true', the execution of the node will be skipped.pattern.*\${.*}.*
spec
{object} requiredThe specification for the ExternalAddon node.
OR
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
stringAn identifier that can used to reference the output of this node later in the template.kind
string requiredThe kind of node.one ofSecretGroupskipNodeExecution
(multiple options: oneOf)If set to 'true', the execution of the node will be skipped.- stringIf set to 'true', the execution of the node will be skipped.one oftrue, false
- stringA string containing one or more references that resolve to if set to 'true', the execution of the node will be skipped.pattern.*\${.*}.*
spec
{object} requiredThe specification for the SecretGroup node.updateMode
stringControls 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 ofput, create
OR
Partial update (patch)
- {object}SecretGroup patch node
ref
stringAn identifier that can used to reference the output of this node later in the template.kind
string requiredThe kind of node.one ofSecretGroupskipNodeExecution
(multiple options: oneOf)If set to 'true', the execution of the node will be skipped.- stringIf set to 'true', the execution of the node will be skipped.one oftrue, false
- stringA string containing one or more references that resolve to if set to 'true', the execution of the node will be skipped.pattern.*\${.*}.*
spec
{object} requiredThe specification for the SecretGroup node.updateMode
string requiredPartially updates only the supplied fields on an existing resource.one ofpatch
OR
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
stringAn identifier that can used to reference the output of this node later in the template.kind
string requiredThe kind of node.one ofPipelineskipNodeExecution
(multiple options: oneOf)If set to 'true', the execution of the node will be skipped.- stringIf set to 'true', the execution of the node will be skipped.one oftrue, false
- stringA string containing one or more references that resolve to if set to 'true', the execution of the node will be skipped.pattern.*\${.*}.*
spec
{object} requiredThe specification for the Pipeline node.updateMode
stringControls 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 ofput, create
OR
Partial update (patch)
- {object}Pipeline patch node
ref
stringAn identifier that can used to reference the output of this node later in the template.kind
string requiredThe kind of node.one ofPipelineskipNodeExecution
(multiple options: oneOf)If set to 'true', the execution of the node will be skipped.- stringIf set to 'true', the execution of the node will be skipped.one oftrue, false
- stringA string containing one or more references that resolve to if set to 'true', the execution of the node will be skipped.pattern.*\${.*}.*
spec
{object} requiredThe specification for the Pipeline node.updateMode
string requiredPartially updates only the supplied fields on an existing resource.one ofpatch
OR
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
stringAn identifier that can used to reference the output of this node later in the template.kind
string requiredThe kind of node.one ofVolumeskipNodeExecution
(multiple options: oneOf)If set to 'true', the execution of the node will be skipped.- stringIf set to 'true', the execution of the node will be skipped.one oftrue, false
- stringA string containing one or more references that resolve to if set to 'true', the execution of the node will be skipped.pattern.*\${.*}.*
spec
{object} requiredThe specification for the Volume node.updateMode
stringControls 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 ofput, create
OR
Partial update (patch)
- {object}Volume patch node
ref
stringAn identifier that can used to reference the output of this node later in the template.kind
string requiredThe kind of node.one ofVolumeskipNodeExecution
(multiple options: oneOf)If set to 'true', the execution of the node will be skipped.- stringIf set to 'true', the execution of the node will be skipped.one oftrue, false
- stringA string containing one or more references that resolve to if set to 'true', the execution of the node will be skipped.pattern.*\${.*}.*
spec
{object} requiredThe specification for the Volume node.updateMode
string requiredPartially updates only the supplied fields on an existing resource.one ofpatch
OR
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
stringAn identifier that can used to reference the output of this node later in the template.kind
string requiredThe kind of node.one ofReleaseStageskipNodeExecution
(multiple options: oneOf)If set to 'true', the execution of the node will be skipped.- stringIf set to 'true', the execution of the node will be skipped.one oftrue, false
- stringA string containing one or more references that resolve to if set to 'true', the execution of the node will be skipped.pattern.*\${.*}.*
spec
{object} requiredThe specification for the ReleaseStage node.
OR
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
stringAn identifier that can used to reference the output of this node later in the template.kind
string requiredThe kind of node.one ofPreviewBlueprintskipNodeExecution
(multiple options: oneOf)If set to 'true', the execution of the node will be skipped.- stringIf set to 'true', the execution of the node will be skipped.one oftrue, false
- stringA string containing one or more references that resolve to if set to 'true', the execution of the node will be skipped.pattern.*\${.*}.*
spec
{object} requiredThe specification for the PreviewBlueprint node.
OR
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
stringAn identifier that can used to reference the output of this node later in the template.kind
string requiredThe kind of node.one ofWorkflowTemplateskipNodeExecution
(multiple options: oneOf)If set to 'true', the execution of the node will be skipped.- stringIf set to 'true', the execution of the node will be skipped.one oftrue, false
- stringA string containing one or more references that resolve to if set to 'true', the execution of the node will be skipped.pattern.*\${.*}.*
spec
{object} requiredThe specification for the WorkflowTemplate node.
OR
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.
| Kind | Description |
|---|---|
| Run backup | Performs a backup on an addon |
| Import backup | Imports a backup into an addon from a URL or connection string |
| Job run | Runs a job with the specified configuration |
| Start build | Triggers a build in a service or job, from a branch or a specific commit |
| Run action | Performs 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
stringAn identifier that can used to reference the output of this node later in the template.kind
string requiredThe kind of node.one ofAddonBackupcondition
stringone ofsuccessskipNodeExecution
(multiple options: oneOf)If set to 'true', the execution of the node will be skipped.- stringIf set to 'true', the execution of the node will be skipped.one oftrue, false
- stringA 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)- stringone oftrue, false
- stringpattern.*\${.*}.*
spec
{object} requiredThe specification for the AddonBackup node.
OR
OR
Run job
Start a job run. The job must have a build or image available.
- {object}JobRun node
ref
stringAn identifier that can used to reference the output of this node later in the template.kind
string requiredThe kind of node.one ofJobRuncondition
stringone ofsuccessskipNodeExecution
(multiple options: oneOf)If set to 'true', the execution of the node will be skipped.- stringIf set to 'true', the execution of the node will be skipped.one oftrue, false
- stringA 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)- stringone oftrue, false
- stringpattern.*\${.*}.*
spec
{object} requiredThe specification for the JobRun node.
OR
OR
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
stringAn identifier that can used to reference the output of this node later in the template.kind
string requiredThe kind of node.one ofAddonImportcondition
stringone ofsuccessskipNodeExecution
(multiple options: oneOf)If set to 'true', the execution of the node will be skipped.- stringIf set to 'true', the execution of the node will be skipped.one oftrue, false
- stringA 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)- stringone oftrue, false
- stringpattern.*\${.*}.*
spec
{object} requiredThe specification for the AddonImport node.
OR
OR
Start build
You can trigger builds in build and combined services, and jobs that deploy from version control.
- {object}Build node
ref
stringAn identifier that can used to reference the output of this node later in the template.kind
string requiredThe kind of node.one ofBuildcondition
stringone ofsuccessskipNodeExecution
(multiple options: oneOf)If set to 'true', the execution of the node will be skipped.- stringIf set to 'true', the execution of the node will be skipped.one oftrue, false
- stringA string containing one or more references that resolve to if set to 'true', the execution of the node will be skipped.pattern.*\${.*}.*
spec
{object} requiredThe specification for the Build node.
OR
Run action
The Run action node acts on services, jobs, addons, domains, and VCS (version control system) accounts.
| Kind | On resource |
|---|---|
| Restart | Service or addon |
| Execute command | Service or job |
| Restore addon from backup | Addon (with available backup) |
| Clone repository | Linked VCS account |
| Verify domain | Domain 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
stringAn identifier that can used to reference the output of this node later in the template.kind
string requiredThe kind of node.one ofActionskipNodeExecution
(multiple options: oneOf)If set to 'true', the execution of the node will be skipped.- stringIf set to 'true', the execution of the node will be skipped.one oftrue, false
- stringA 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)- stringone oftrue, false
- stringpattern.*\${.*}.*
spec
(multiple options: oneOf) requiredThe specification for the Action node.
OR
OR
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.
| Kind | Description |
|---|---|
| Slack | Sends a message to Slack via a webhook or a Slack integration |
| Webhook | Sends a message to an arbitrary webhook URL |
| VCS | Comments 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
stringAn identifier that can used to reference the output of this node later in the template.kind
string requiredThe kind of node.one ofMessageskipNodeExecution
(multiple options: oneOf)If set to 'true', the execution of the node will be skipped.- stringIf set to 'true', the execution of the node will be skipped.one oftrue, false
- stringA 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)- stringone oftrue, false
- stringpattern.*\${.*}.*
spec
(multiple options: oneOf) requiredThe specification for the Message node.
OR
OR
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.
| Kind | Description |
|---|---|
| Service | Wait until a service runs |
| Addon | Wait until an addon runs |
| Addon backup | Wait until an addon backup succeeds |
| Addon import | Wait until an addon import succeeds |
| BYOC cluster | Wait until a BYOC cluster runs |
| VCS | Wait until a Git repository clone succeeds |
| Build | Wait until a build succeeds |
| Job run | Wait until a job run succeeds |
| Domain | Wait until the domain is verified |
- {object}Condition node
ref
stringAn identifier that can used to reference the output of this node later in the template.kind
string requiredThe kind of node.one ofConditionskipNodeExecution
(multiple options: oneOf)If set to 'true', the execution of the node will be skipped.- stringIf set to 'true', the execution of the node will be skipped.one oftrue, false
- stringA 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) requiredThe specification for the Condition node.
OR
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
stringAn identifier that can used to reference the output of this node later in the template.kind
string requiredThe kind of node.one ofApprovalskipNodeExecution
(multiple options: oneOf)If set to 'true', the execution of the node will be skipped.- stringIf set to 'true', the execution of the node will be skipped.one oftrue, false
- stringA string containing one or more references that resolve to if set to 'true', the execution of the node will be skipped.pattern.*\${.*}.*
spec
{object} requiredThe specification for the Approval node.
OR
Next steps
Run a template
Run templates manually or automatically.
Update a template
Update a template and resources within a project.
GitOps on Northflank
Use templates and workflows in a Git repository to trigger changes to your config and resources.
Share a template
Share templates with your team or the public.
Manage template versions on Northflank
Use the template drafts system to review, accept, or reject proposed changes to your team's Northflank templates.