Templates /
Create template
Required permission
Account > Templates > General > Create
Request body
- {object}
Create a new template
name
string requiredName of the template.
min length3max length39pattern^[a-zA-Z]((-|\s)?[a-zA-Z0-9]+((-|\s)[a-zA-Z0-9]+)*)?$description
stringDescription of the template.
max length200pattern^[a-zA-Z0-9.,?\s\\/'"()[\];`%^&*\-_:!]+$apiVersion
string requiredThe version of the Northflank API to run the template against.
one ofv1project
(multiple options: oneOf) requiredDetails of the project the template will run in.
- {object}
Use an existing project
id
string requiredThe ID of the project to use.
pattern^[A-Za-z0-9-]+$- {object}
Create a new project
spec
(multiple options: oneOf) requiredarguments
{object}A set of arguments that can be referenced in a template using '${args.argumentName}'.
spec
(multiple options: oneOf) requiredA node representing an action to be performed as part of the template.
concurrencyPolicy
stringDefines the concurrency behaviour of the template with respect to parallel runs.
one ofallow, queue, forbidargumentOverrides
{object}Argument overrides stored outside of the template. If GitOps is enabled, these will not be saved in version control.
options
{object}Additional options for the template creation.
runOnCreation
booleanIf true, the template will be ran immediately after creation.
runOnCreationArgumentOverrides
{object}Argument overrides for the initial run. Valid only if
runOnCreation
istrue
.autorun
booleanIf true, the template will run automatically whenever it is updated.
OR
- {object}
Create a new template with GitOps enabled (push to git)
name
string requiredName of the template.
min length3max length39pattern^[a-zA-Z]((-|\s)?[a-zA-Z0-9]+((-|\s)[a-zA-Z0-9]+)*)?$description
stringDescription of the template.
max length200pattern^[a-zA-Z0-9.,?\s\\/'"()[\];`%^&*\-_:!]+$apiVersion
string requiredThe version of the Northflank API to run the template against.
one ofv1project
(multiple options: oneOf) requiredDetails of the project the template will run in.
- {object}
Use an existing project
id
string requiredThe ID of the project to use.
pattern^[A-Za-z0-9-]+$- {object}
Create a new project
spec
(multiple options: oneOf) requiredarguments
{object}A set of arguments that can be referenced in a template using '${args.argumentName}'.
spec
(multiple options: oneOf) requiredA node representing an action to be performed as part of the template.
concurrencyPolicy
stringDefines the concurrency behaviour of the template with respect to parallel runs.
one ofallow, queue, forbidargumentOverrides
{object}Argument overrides stored outside of the template. If GitOps is enabled, these will not be saved in version control.
options
{object}Additional options for the template creation.
runOnCreation
booleanIf true, the template will be ran immediately after creation.
runOnCreationArgumentOverrides
{object}Argument overrides for the initial run. Valid only if
runOnCreation
istrue
.autorun
booleanIf true, the template will run automatically whenever it is updated.
gitops
{object} requiredGitOps data for syncing this template with a file in version control.
vcsService
string requiredThe VCS provider to use.
one ofbitbucket, gitlab, github, self-hostedselfHostedVcsId
stringIf projectType is self-hosted, the ID of the self-hosted vcs to use.
pattern^[A-Za-z0-9-]+\/[A-Za-z0-9-]+$accountLogin
stringBy default, if you have multiple version control accounts of the same provider linked, Northflank will pick a linked account that has access to the repository. If
accountLogin
is provided, Northflank will instead use your linked account with that login name.repoUrl
string requiredURL of the Git repo to sync the template with.
pattern^(https:\/\/)?((www(\.[a-zA-Z0-9\-]{2,})+\.)?[a-zA-Z0-9\-]{2,})(\.([a-zA-Z0-9\-]{2,}))+(\/([a-zA-Z0-9\-._]{2,}))+?$branch
string requiredThe name of the branch to use.
filePath
string requiredThe file path to the template in the repository. If using an existing template, it should be in JSON format.
pattern^\/([a-zA-Z0-9-._]+\/)*[a-zA-Z0-9-._]+$
OR
- {object}
Create a new template with GitOps enabled (use an existing git template)
name
string requiredName of the template.
min length3max length39pattern^[a-zA-Z]((-|\s)?[a-zA-Z0-9]+((-|\s)[a-zA-Z0-9]+)*)?$description
stringDescription of the template.
max length200pattern^[a-zA-Z0-9.,?\s\\/'"()[\];`%^&*\-_:!]+$concurrencyPolicy
stringDefines the concurrency behaviour of the template with respect to parallel runs.
one ofallow, queue, forbidargumentOverrides
{object}Argument overrides stored outside of the template. If GitOps is enabled, these will not be saved in version control.
options
{object}Additional options for the template creation.
runOnCreation
booleanIf true, the template will be ran immediately after creation.
runOnCreationArgumentOverrides
{object}Argument overrides for the initial run. Valid only if
runOnCreation
istrue
.autorun
booleanIf true, the template will run automatically whenever it is updated.
gitops
{object} requiredGitOps data for syncing this template with a file in version control.
vcsService
string requiredThe VCS provider to use.
one ofbitbucket, gitlab, github, self-hostedselfHostedVcsId
stringIf projectType is self-hosted, the ID of the self-hosted vcs to use.
pattern^[A-Za-z0-9-]+\/[A-Za-z0-9-]+$accountLogin
stringBy default, if you have multiple version control accounts of the same provider linked, Northflank will pick a linked account that has access to the repository. If
accountLogin
is provided, Northflank will instead use your linked account with that login name.repoUrl
string requiredURL of the Git repo to sync the template with.
pattern^(https:\/\/)?((www(\.[a-zA-Z0-9\-]{2,})+\.)?[a-zA-Z0-9\-]{2,})(\.([a-zA-Z0-9\-]{2,}))+(\/([a-zA-Z0-9\-._]{2,}))+?$branch
string requiredThe name of the branch to use.
filePath
string requiredThe file path to the template in the repository. If using an existing template, it should be in JSON format.
pattern^\/([a-zA-Z0-9-._]+\/)*[a-zA-Z0-9-._]+$
Response body
- {object}
Response object.
data
{object} requiredResult data.
template
{object} requiredDetails about the newly created template.
name
string requiredName of the template.
min length3max length39pattern^[a-zA-Z]((-|\s)?[a-zA-Z0-9]+((-|\s)[a-zA-Z0-9]+)*)?$description
stringDescription of the template.
max length200pattern^[a-zA-Z0-9.,?\s\\/'"()[\];`%^&*\-_:!]+$apiVersion
string requiredThe version of the Northflank API to run the template against.
one ofv1project
(multiple options: oneOf) requiredDetails of the project the template will run in.
- {object}
Use an existing project
id
string requiredThe ID of the project to use.
pattern^[A-Za-z0-9-]+$- {object}
Create a new project
spec
(multiple options: oneOf) requiredarguments
{object}A set of arguments that can be referenced in a template using '${args.argumentName}'.
spec
(multiple options: oneOf) requiredA node representing an action to be performed as part of the template.
id
string requiredIdentifier for the template
gitops
{object}vcsService
string requiredThe VCS provider to use.
one ofbitbucket, gitlab, github, self-hostedselfHostedVcsId
stringIf projectType is self-hosted, the ID of the self-hosted vcs to use.
pattern^[A-Za-z0-9-]+\/[A-Za-z0-9-]+$accountLogin
stringBy default, if you have multiple version control accounts of the same provider linked, Northflank will pick a linked account that has access to the repository. If
accountLogin
is provided, Northflank will instead use your linked account with that login name.repoUrl
string requiredURL of the Git repo to sync the template with.
pattern^(https:\/\/)?((www(\.[a-zA-Z0-9\-]{2,})+\.)?[a-zA-Z0-9\-]{2,})(\.([a-zA-Z0-9\-]{2,}))+(\/([a-zA-Z0-9\-._]{2,}))+?$branch
string requiredThe name of the branch to use.
filePath
string requiredThe file path to the template in the repository. If using an existing template, it should be in JSON format.
pattern^\/([a-zA-Z0-9-._]+\/)*[a-zA-Z0-9-._]+$templateSha
string requiredThe SHA of the current commit that is being used for the template.
concurrencyPolicy
stringDefines the concurrency behaviour of the template with respect to parallel runs.
one ofallow, queue, forbidoptions
{object} requiredautorun
boolean requiredWhether autorun is enabled
createdAt
stringtime of creation
updatedAt
stringtime of update
templateRun
{object}name
string requiredName of the template.
min length3max length39pattern^[a-zA-Z]((-|\s)?[a-zA-Z0-9]+((-|\s)[a-zA-Z0-9]+)*)?$description
stringDescription of the template.
max length200pattern^[a-zA-Z0-9.,?\s\\/'"()[\];`%^&*\-_:!]+$apiVersion
string requiredThe version of the Northflank API to run the template against.
one ofv1project
(multiple options: oneOf) requiredDetails of the project the template will run in.
- {object}
Use an existing project
id
string requiredThe ID of the project to use.
pattern^[A-Za-z0-9-]+$- {object}
Create a new project
spec
(multiple options: oneOf) requiredarguments
{object}A set of arguments that can be referenced in a template using '${args.argumentName}'.
spec
(multiple options: oneOf) requiredA node representing an action to be performed as part of the template.
refs
{object}id
string requiredIdentifier for the template run
templateId
string requiredIdentifier for the template
status
string requiredStatus of the template run
one ofpending, running, success, failure, aborted, abortingconcluded
boolean requiredWhether the run has concluded (aborted, success, failed)
createdAt
string requiredTimestamp the run was created at.
updatedAt
string requiredTimestamp the run was last updated at.
OR
OR
POST /v1/templates
Example request
curl --header "Content-Type: application/json" \
--header "Authorization: Bearer NORTHFLANK_API_TOKEN" \
--request POST \
--data '{"name":"Example Template","description":"This is a sample template.","apiVersion":"v1","arguments":{"ARGUMENT_1":"value_1","ARGUMENT_2":"value_2"},"spec":{"kind":"Workflow","spec":{"type":"sequential","steps":[null]}},"concurrencyPolicy":"allow","argumentOverrides":{"ARGUMENT_1":"value_1","ARGUMENT_2":"value_2"},"options":{"runOnCreation":true,"runOnCreationArgumentOverrides":{"ARGUMENT_1":"value_1","ARGUMENT_2":"value_2"},"autorun":false}}' \
https://api.northflank.com/v1/templates
curl --header "Content-Type: application/json" \
--header "Authorization: Bearer NORTHFLANK_API_TOKEN" \
--request POST \
--data '{"name":"Example Template","description":"This is a sample template.","apiVersion":"v1","arguments":{"ARGUMENT_1":"value_1","ARGUMENT_2":"value_2"},"spec":{"kind":"Workflow","spec":{"type":"sequential","steps":[null]}},"concurrencyPolicy":"allow","argumentOverrides":{"ARGUMENT_1":"value_1","ARGUMENT_2":"value_2"},"options":{"runOnCreation":true,"runOnCreationArgumentOverrides":{"ARGUMENT_1":"value_1","ARGUMENT_2":"value_2"},"autorun":false},"gitops":{"vcsService":"github","accountLogin":"github-user","repoUrl":"https://github.com/northflank-examples/remix-postgres-redis-demo","branch":"main","filePath":"northflank.json"}}' \
https://api.northflank.com/v1/templates
curl --header "Content-Type: application/json" \
--header "Authorization: Bearer NORTHFLANK_API_TOKEN" \
--request POST \
--data '{"name":"Example Template","description":"This is a sample template.","concurrencyPolicy":"allow","argumentOverrides":{"ARGUMENT_1":"value_1","ARGUMENT_2":"value_2"},"options":{"runOnCreation":true,"runOnCreationArgumentOverrides":{"ARGUMENT_1":"value_1","ARGUMENT_2":"value_2"},"autorun":false},"gitops":{"vcsService":"github","accountLogin":"github-user","repoUrl":"https://github.com/northflank-examples/remix-postgres-redis-demo","branch":"main","filePath":"northflank.json"}}' \
https://api.northflank.com/v1/templates
Example response
200 OK
JSON
{
"data": {
"template": {
"name": "Example Template",
"description": "This is a sample template.",
"apiVersion": "v1",
"arguments": {
"ARGUMENT_1": "value_1",
"ARGUMENT_2": "value_2"
},
"spec": {
"kind": "Workflow",
"spec": {
"type": "sequential",
"steps": [
null
]
}
},
"id": "example-template",
"gitops": {
"vcsService": "github",
"accountLogin": "github-user",
"repoUrl": "https://github.com/northflank-examples/remix-postgres-redis-demo",
"branch": "main",
"filePath": "northflank.json",
"templateSha": "8c7e040ee3737ddc3a713363ae72bbe960e9fb16"
},
"concurrencyPolicy": "allow"
},
"templateRun": {
"name": "Example Template",
"description": "This is a sample template.",
"apiVersion": "v1",
"arguments": {
"ARGUMENT_1": "value_1",
"ARGUMENT_2": "value_2"
},
"spec": {
"settings": {
"maxAttempts": 3,
"backoff": {
"type": "fixed",
"delay": 60
}
},
"kind": "Workflow",
"response": {
"status": "success",
"retries": {
"attempts": 1,
"maxAttempts": 3,
"timestamp": 1657296265
}
}
},
"id": "3dd592f6-ce63-45ee-acf8-13dc5ec5235c",
"templateId": "example-template",
"status": "success",
"concluded": true,
"createdAt": "2021-01-01 12:00:00.000Z",
"updatedAt": "2021-01-01 12:00:00.000Z"
}
}
}