Services /
Put combined service
Required permission
Project > Services > General > Create
Path parameters
projectId
string requiredID of the project
Request body
- {object}
name
string requiredThe name of the service.min length3max length54pattern^[a-zA-Z]((-|\s)?[a-zA-Z0-9]+((-|\s)[a-zA-Z0-9]+)*)?$description
stringA description of the service.max length200pattern^[a-zA-Z0-9.,?\s\\/'"()[\];`%^&*\-_:!]+$billing
{object} requireddeploymentPlan
string requiredThe ID of the deployment plan to use.pattern^[A-Za-z0-9-]+$buildPlan
stringThe ID of the build plan to use.pattern^[A-Za-z0-9-]+$gpu
{object}enabled
booleanconfiguration
{object}gpuType
string requiredtimesliced
booleandeployment
{object} requiredinstances
integer requiredThe number of instances to run the service on.buildpack
{object}Allows for customization of buildpack runtimeconfigType
string requiredType of buildpack run configurationone ofdefault, customProcess, customCommand, customEntrypointCustomCommand, originalEntrypointCustomCommandcustomProcess
stringCustom process which should be run. Required in case where `configType` is `customProcess`customEntrypoint
stringCustom entrypoint which should be run. Required in case where `configType` is `customEntrypointCustomCommand`customCommand
stringCustom command which should be run. Required in case where `configType` is `customCommand`, `customEntrypointCustomCommand` or `originalEntrypointCustomCommand`docker
{object}Allows for customization of docker runtimeconfigType
string requiredType of entrypoint & command override configurationone ofdefault, customEntrypoint, customCommand, customEntrypointCustomCommandcustomEntrypoint
stringCustom entrypoint which should be used. Required in case where `configType` is `customEntrypoint` or `customEntrypointCustomCommand`customCommand
stringCustom command which should be used. Required in case where `configType` is `customCommand` or `customEntrypointCustomCommand`storage
{object}ephemeralStorage
{object}storageSize
integerEphemeral storage per container in MBone of1024, 2048, 5120, 10240, 20480, 30720, 40960, 51200, 61440, 81920, 102400, 122880, 153600, 204800min1024max204800shmSize
integerConfigures the amount of available memory-backed disk space available to /dev/shmone of64, 128, 256, 512, 1024, 2048, 5120, 10240min64max10240strategy
{object}Roll out strategy of the servicetype
stringConfigures the instance roll out strategy of your service. Currently only available via feature flag.one ofrecreate, rollout-steady, rollout-balanced, rollout-fastzonalRedundancy
{object}type
stringDefines scheduling behaviour across different zones within the same region.one ofdisabled, preferred, requiredminZones
integerDefines how many zones are required and will prevent containers from additional scheduling into existing zones. (Only relevant if type is set to "required")min1gpu
{object}enabled
booleanconfiguration
{object}gpuType
string requiredtimesliced
booleangracePeriodSeconds
integerThe maximum amount of time the process has to shut down after receiving a SIGTERM signal before it is forcefully shut down SIGKILL by the system.min15max600metadata
{object}Allow setting custom labels and annotations for workloads.labels
{object}Specify custom labels for the workload.annotations
{object}Specify custom annotations for the workload as string or object.ports
[array]- {object}
name
string requiredThe name used to identify the port.min length1max length8pattern^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$internalPort
integer requiredThe port number.min1max65535public
booleanIf true, the port will be exposed publicly.security
{object}credentials
[array]An array of credentials to access the service.- {object}
username
string requiredThe username to access the servicemin length3max length39pattern^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$password
string requiredThe password to access the service with this username.type
string requiredThe type of authentication usedone ofbasic-authip
[array]An array of IP address policies.- {object}
addresses
[array] requiredAn array of IP addresses used for this rule- stringAn IP address used by this rule
action
string requiredThe action for this rule.one ofALLOW, DENYpolicies
[array]An array of IP address policies.- {object}
addresses
[array] requiredAn array of IP addresses used for this rule- stringAn IP address used by this rule
action
string requiredThe action for this rule.one ofALLOW, DENYsso
{object}Configure port authentication via SSOorganizationId
stringID of the SSO organization that the user will have to be a member ofdirectoryGroupIds
[array]Array of directory groups that will have access- string
validateInternalTraffic
booleanEnforce internal traffic through SSO authentication flowsetCookieOnRootDomain
booleanSet SSO authentication cookie on root domainallowInternalTrafficViaPublicDns
booleanAllow internal traffic from same or shared projects via public DNS to skip SSO authentication flowheaders
[array]List of header authentication settings, it checks the presence of all headers and compares it against the expected value. Wildcard (*) is supported.- (multiple options: anyOf)
- {object}Matches provided headers as strings.
regexMode
booleanname
string requiredpattern^[a-zA-Z0-9_\-%$+]+$value
string required- {object}Matches provided headers as regex.
regexMode
booleanname
string requiredvalue
string requiredverificationMode
stringMode used to verify multiple security features like ip policies and SSO authenticationone ofor, andsecurePathConfiguration
{object}enabled
booleanEnable security policies on a path-level styleskipSecurityPoliciesForInternalTrafficViaPublicDns
booleanAllow internal traffic from same or shared projects via public DNS to skip all security policiesrules
[array]- {object}
paths
[array] requiredArray of path objects which represent the paths and their priority for which the security policies will be enforced- (multiple options: oneOf)Data about how the path should be handled.
- {object}Route when the path starts with the provided prefix.
path
string requiredpattern^\/([_a-zA-Z0-9-&?=.]*)((\/[_a-zA-Z0-9-&?=.]+)*(\/)?)?$routingMode
string requiredMode of the path, determining how the URI will be interpreted.one ofprefixpriority
integer requiredmin0max100- {object}Route when the path is an exact match.
path
string requiredpattern^\/([_a-zA-Z0-9-&?=.]*)((\/[_a-zA-Z0-9-&?=.]+)*(\/)?)?$routingMode
string requiredMode of the path, determining how the URI will be interpreted.one ofexactpriority
integer requiredmin0max100- {object}Route when the path matches the provided regex.
path
string requiredroutingMode
string requiredMode of the path, determining how the URI will be interpreted.one ofregexpriority
integer requiredmin0max100accessMode
string requiredSpecify the way the path rule will behave when processing policies. This enables an allow-list/deny-list approach for access control on each pathone ofprotected, unprotectedsecurityPolicies
{object}orPolicies
{object}credentials
[array]An array of credentials to access the service.- {object}
username
string requiredThe username to access the servicemin length3max length39pattern^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$password
string requiredThe password to access the service with this username.type
string requiredThe type of authentication usedone ofbasic-authip
[array]An array of IP address policies.- {object}
addresses
[array] requiredAn array of IP addresses used for this rule- stringAn IP address used by this rule
action
string requiredThe action for this rule.one ofALLOW, DENYpolicies
[array]An array of IP address policies.- {object}
addresses
[array] requiredAn array of IP addresses used for this rule- stringAn IP address used by this rule
action
string requiredThe action for this rule.one ofALLOW, DENYsso
{object}Configure port authentication via SSOorganizationId
stringID of the SSO organization that the user will have to be a member ofdirectoryGroupIds
[array]Array of directory groups that will have access- string
validateInternalTraffic
booleanEnforce internal traffic through SSO authentication flowsetCookieOnRootDomain
booleanSet SSO authentication cookie on root domainallowInternalTrafficViaPublicDns
booleanAllow internal traffic from same or shared projects via public DNS to skip SSO authentication flowheaders
[array]List of header authentication settings, it checks the presence of all headers and compares it against the expected value. Wildcard (*) is supported.- (multiple options: anyOf)
- {object}Matches provided headers as strings.
regexMode
booleanname
string requiredpattern^[a-zA-Z0-9_\-%$+]+$value
string required- {object}Matches provided headers as regex.
regexMode
booleanname
string requiredvalue
string requiredrequiredPolicies
{object}credentials
[array]An array of credentials to access the service.- {object}
username
string requiredThe username to access the servicemin length3max length39pattern^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$password
string requiredThe password to access the service with this username.type
string requiredThe type of authentication usedone ofbasic-authip
[array]An array of IP address policies.- {object}
addresses
[array] requiredAn array of IP addresses used for this rule- stringAn IP address used by this rule
action
string requiredThe action for this rule.one ofALLOW, DENYpolicies
[array]An array of IP address policies.- {object}
addresses
[array] requiredAn array of IP addresses used for this rule- stringAn IP address used by this rule
action
string requiredThe action for this rule.one ofALLOW, DENYsso
{object}Configure port authentication via SSOorganizationId
stringID of the SSO organization that the user will have to be a member ofdirectoryGroupIds
[array]Array of directory groups that will have access- string
validateInternalTraffic
booleanEnforce internal traffic through SSO authentication flowsetCookieOnRootDomain
booleanSet SSO authentication cookie on root domainallowInternalTrafficViaPublicDns
booleanAllow internal traffic from same or shared projects via public DNS to skip SSO authentication flowheaders
[array]List of header authentication settings, it checks the presence of all headers and compares it against the expected value. Wildcard (*) is supported.- (multiple options: anyOf)
- {object}Matches provided headers as strings.
regexMode
booleanname
string requiredpattern^[a-zA-Z0-9_\-%$+]+$value
string required- {object}Matches provided headers as regex.
regexMode
booleanname
string requiredvalue
string requireddomains
[array]An array of domains to redirect to this port. Each domain must first be verified and registered to your account.- stringA domain to redirect to this port.
disableNfDomain
booleanDisable routing on the default code.run domain for public HTTP ports with custom domains.protocol
string requiredThe protocol to use for the port.one ofHTTP, HTTP/2, TCP, UDPdisabledCI
booleanWhether CI (continuous integration) should be disabled.buildSource
stringDefines the build source for this resourceone ofgit, bundlevcsData
{object}projectUrl
string requiredURL of the Git repo to build.pattern^(https:\/\/)?((www(\.[a-zA-Z0-9\-]{2,})+\.)?[a-zA-Z0-9\-]{2,})(\.([a-zA-Z0-9\-]{2,}))+(\/([a-zA-Z0-9\-._]{2,}))+?$projectType
string requiredThe VCS provider to use.one ofbitbucket, gitlab, github, self-hosted, azureselfHostedVcsId
stringIf projectType is self-hosted, the ID of the self-hosted vcs to use.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.vcsLinkId
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 `vcsLinkId` is provided, Northflank will instead use your linked account with that ID.min length24max length24projectBranch
string requiredThe name of the branch to use.bundleData
{object}bundleUrl
string requiredURL of the bundle to be builtbranch
string requiredBranch identifier for the bundle.pattern^[A-Za-z0-9-]+$buildSettings
(multiple options: oneOf) requiredBuild engine- {object}Build from a Dockerfile
storage
{object}ephemeralStorage
{object}storageSize
integerEphemeral storage per build in MBone of16384, 32768, 65536, 131072, 262144, 524288min16384max65536dockerfile
{object} requiredbuildEngine
stringBuild engine to use. Defaults to recommended build engine `kaniko`one ofkaniko, buildkitdockerFilePath
string requiredThe file path of the Dockerfile.pattern^\/([a-zA-Z0-9-._]+\/)*[a-zA-Z0-9-._]+$dockerWorkDir
string requiredThe working directory of the Dockerfile.pattern^\/([a-zA-Z0-9-._]+\/)*[a-zA-Z0-9-._]*$useCache
booleanShould intermediate image layers be cached?buildkit
{object}useInternalCache
booleaninternalCacheStorage
number- {object}Build from a Buildpack
storage
{object}ephemeralStorage
{object}storageSize
integerEphemeral storage per build in MBone of16384, 32768, 65536, 131072, 262144, 524288min16384max65536buildpack
{object} requiredbuilder
stringBuildpack stack to use. Defaults to recommended stack `HEROKU_22`.one ofHEROKU_22, HEROKU_22_CLASSIC, HEROKU_20, HEROKU_18, GOOGLE_V1, CNB_ALPINE, CNB_BIONIC, PAKETO_TINY, PAKETO_BASE, PAKETO_FULLbuildpackLocators
[array]Array of custom Buildpacks to use.- stringUrl or registry identifier of custom Buildpack.
buildContext
stringThe working directory to build in.pattern^\/([a-zA-Z0-9-._]+\/)*[a-zA-Z0-9-._]*$useCache
booleanShould build dependencies be cached?buildConfiguration
{object}pathIgnoreRules
[array]An array of path ignore rules. A commit will only be built if a file has been changed that does not match any of the ignore rules. Path ignore rules follow `.gitignore` syntax.- stringA path ignore rule, following `.gitignore` syntax. For example, `*.md` will ignore all files ending with `.md`.max length260
isAllowList
booleanIf `true`, the functionality of `pathIgnoreRules` will be inverted. A commit will only be built if a file has been changed that matches one or more of the rules in `pathIgnoreRules`.ciIgnoreFlagsEnabled
booleanIf `true`, enables commit ignore flags. If a commit message contains one or more of the flags in `ciIgnoreFlags`, that commit will not be built.ciIgnoreFlags
[array]An array of commit ignore flags. If a commit message contains one or more of these flags, that commit will not be built. Defaults to `["[skip ci]", "[ci skip]", "[no ci]", "[skip nf]", "[nf skip]", "[northflank skip]", "[skip northflank]"]`- stringA commit ignore flag.max length72
dockerfileTarget
stringIf your Dockerfile contains multiple build stages, you can specify the target stage by entering its name here.dockerCredentials
[array]- stringThe ID of the docker credentials to use.pattern^[A-Za-z0-9-]+$
includeGitFolder
booleanInclude .git folder inside the build contextfullGitClone
booleanInclude the entire git history as part of the .git folder. Only relevant if "includeGitFolder" is set.storage
{object}ephemeralStorage
{object}storageSize
integerEphemeral storage per build in MBone of16384, 32768, 65536, 131072, 262144, 524288min16384max65536runtimeEnvironment
{object}An object containing the runtime environment to set for the service. Keys may only contain letters, numbers, hyphens, forward slashes and dots.runtimeFiles
{object}Secret files as JSON object, encrypted at rest. File path must be absolutebuildArguments
{object}An object containing the build arguments to set for the service. Keys may only contain letters, numbers, hyphens, forward slashes and dots.buildFiles
{object}Secret files as JSON object, encrypted at rest. File path must be absolutehealthChecks
[array]An array of health checks.- {object}A health check object.
protocol
string requiredThe protocol to access the health check with.one ofHTTP, CMD, TCPtype
string requiredThe type of health check.one oflivenessProbe, readinessProbe, startupProbepath
stringThe path of the health check endpoint. Required when protocol is HTTP.pattern^\/([a-zA-Z0-9-._]+\/)*[a-zA-Z0-9-._]+$cmd
stringThe command to run for the health check. Required when protocol is CMDport
integerPort number for the health check endpoint. Required when protocol is HTTP.min1initialDelaySeconds
integer requiredInitial delay, in seconds, before the health check is first run.min1max180periodSeconds
integer requiredThe time between each check, in seconds.min10max600timeoutSeconds
integer requiredThe time to wait for a response before marking the health check as a failure.min1max60failureThreshold
integer requiredThe maximum number of allowed failures.min1max255successThreshold
integerThe number of successes required to mark the health check as a success.min1max255autoscaling
{object}Describes all autoscaling configurationshorizontal
{object}Describes the horizontal autoscaling configurationenabled
boolean requiredWhether horizontal autoscaling should be enabledminReplicas
number requiredMinimum number of replicas which should be running at any timemin1maxReplicas
number requiredMaximum number of replicas which can be running at any timecpu
{object}enabled
boolean requiredWhether autoscaling should take into account cpu usagethresholdPercentage
integer requiredThreshold CPU usage percentage at which the workload will be scaledmin10max100memory
{object}enabled
boolean requiredWhether autoscaling should take into account memory usagethresholdPercentage
integer requiredThreshold memory usage percentage at which the workload will be scaledmin10max100rps
{object}enabled
boolean requiredWhether autoscaling should take into requests-per-secondthresholdValue
integer requiredThreshold rps value on which the workload will be scaledmin1
OR
OR
OR
OR
OR
OR
Response body
- {object}Response object.
data
{object} requiredResult data.name
string requiredThe name of the service.min length3max length54pattern^[a-zA-Z]((-|\s)?[a-zA-Z0-9]+((-|\s)[a-zA-Z0-9]+)*)?$description
stringA description of the service.max length200pattern^[a-zA-Z0-9.,?\s\\/'"()[\];`%^&*\-_:!]+$billing
{object} requireddeploymentPlan
string requiredThe ID of the deployment plan to use.pattern^[A-Za-z0-9-]+$buildPlan
stringThe ID of the build plan to use.pattern^[A-Za-z0-9-]+$gpu
{object}enabled
booleanconfiguration
{object}gpuType
string requiredtimesliced
booleanports
[array]- {object}
name
string requiredThe name used to identify the port.min length1max length8pattern^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$internalPort
integer requiredThe port number.min1max65535public
booleanIf true, the port will be exposed publicly.security
{object}credentials
[array]An array of credentials to access the service.- {object}
username
string requiredThe username to access the servicemin length3max length39pattern^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$password
string requiredThe password to access the service with this username.type
string requiredThe type of authentication usedone ofbasic-authip
[array]An array of IP address policies.- {object}
addresses
[array] requiredAn array of IP addresses used for this rule- stringAn IP address used by this rule
action
string requiredThe action for this rule.one ofALLOW, DENYpolicies
[array]An array of IP address policies.- {object}
addresses
[array] requiredAn array of IP addresses used for this rule- stringAn IP address used by this rule
action
string requiredThe action for this rule.one ofALLOW, DENYsso
{object}Configure port authentication via SSOorganizationId
stringID of the SSO organization that the user will have to be a member ofdirectoryGroupIds
[array]Array of directory groups that will have access- string
validateInternalTraffic
booleanEnforce internal traffic through SSO authentication flowsetCookieOnRootDomain
booleanSet SSO authentication cookie on root domainallowInternalTrafficViaPublicDns
booleanAllow internal traffic from same or shared projects via public DNS to skip SSO authentication flowheaders
[array]List of header authentication settings, it checks the presence of all headers and compares it against the expected value. Wildcard (*) is supported.- (multiple options: anyOf)
- {object}Matches provided headers as strings.
regexMode
booleanname
string requiredpattern^[a-zA-Z0-9_\-%$+]+$value
string required- {object}Matches provided headers as regex.
regexMode
booleanname
string requiredvalue
string requiredverificationMode
stringMode used to verify multiple security features like ip policies and SSO authenticationone ofor, andsecurePathConfiguration
{object}enabled
booleanEnable security policies on a path-level styleskipSecurityPoliciesForInternalTrafficViaPublicDns
booleanAllow internal traffic from same or shared projects via public DNS to skip all security policiesrules
[array]- {object}
paths
[array] requiredArray of path objects which represent the paths and their priority for which the security policies will be enforced- (multiple options: oneOf)Data about how the path should be handled.
- {object}Route when the path starts with the provided prefix.
path
string requiredpattern^\/([_a-zA-Z0-9-&?=.]*)((\/[_a-zA-Z0-9-&?=.]+)*(\/)?)?$routingMode
string requiredMode of the path, determining how the URI will be interpreted.one ofprefixpriority
integer requiredmin0max100- {object}Route when the path is an exact match.
path
string requiredpattern^\/([_a-zA-Z0-9-&?=.]*)((\/[_a-zA-Z0-9-&?=.]+)*(\/)?)?$routingMode
string requiredMode of the path, determining how the URI will be interpreted.one ofexactpriority
integer requiredmin0max100- {object}Route when the path matches the provided regex.
path
string requiredroutingMode
string requiredMode of the path, determining how the URI will be interpreted.one ofregexpriority
integer requiredmin0max100accessMode
string requiredSpecify the way the path rule will behave when processing policies. This enables an allow-list/deny-list approach for access control on each pathone ofprotected, unprotectedsecurityPolicies
{object}orPolicies
{object}credentials
[array]An array of credentials to access the service.- {object}
username
string requiredThe username to access the servicemin length3max length39pattern^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$password
string requiredThe password to access the service with this username.type
string requiredThe type of authentication usedone ofbasic-authip
[array]An array of IP address policies.- {object}
addresses
[array] requiredAn array of IP addresses used for this rule- stringAn IP address used by this rule
action
string requiredThe action for this rule.one ofALLOW, DENYpolicies
[array]An array of IP address policies.- {object}
addresses
[array] requiredAn array of IP addresses used for this rule- stringAn IP address used by this rule
action
string requiredThe action for this rule.one ofALLOW, DENYsso
{object}Configure port authentication via SSOorganizationId
stringID of the SSO organization that the user will have to be a member ofdirectoryGroupIds
[array]Array of directory groups that will have access- string
validateInternalTraffic
booleanEnforce internal traffic through SSO authentication flowsetCookieOnRootDomain
booleanSet SSO authentication cookie on root domainallowInternalTrafficViaPublicDns
booleanAllow internal traffic from same or shared projects via public DNS to skip SSO authentication flowheaders
[array]List of header authentication settings, it checks the presence of all headers and compares it against the expected value. Wildcard (*) is supported.- (multiple options: anyOf)
- {object}Matches provided headers as strings.
regexMode
booleanname
string requiredpattern^[a-zA-Z0-9_\-%$+]+$value
string required- {object}Matches provided headers as regex.
regexMode
booleanname
string requiredvalue
string requiredrequiredPolicies
{object}credentials
[array]An array of credentials to access the service.- {object}
username
string requiredThe username to access the servicemin length3max length39pattern^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$password
string requiredThe password to access the service with this username.type
string requiredThe type of authentication usedone ofbasic-authip
[array]An array of IP address policies.- {object}
addresses
[array] requiredAn array of IP addresses used for this rule- stringAn IP address used by this rule
action
string requiredThe action for this rule.one ofALLOW, DENYpolicies
[array]An array of IP address policies.- {object}
addresses
[array] requiredAn array of IP addresses used for this rule- stringAn IP address used by this rule
action
string requiredThe action for this rule.one ofALLOW, DENYsso
{object}Configure port authentication via SSOorganizationId
stringID of the SSO organization that the user will have to be a member ofdirectoryGroupIds
[array]Array of directory groups that will have access- string
validateInternalTraffic
booleanEnforce internal traffic through SSO authentication flowsetCookieOnRootDomain
booleanSet SSO authentication cookie on root domainallowInternalTrafficViaPublicDns
booleanAllow internal traffic from same or shared projects via public DNS to skip SSO authentication flowheaders
[array]List of header authentication settings, it checks the presence of all headers and compares it against the expected value. Wildcard (*) is supported.- (multiple options: anyOf)
- {object}Matches provided headers as strings.
regexMode
booleanname
string requiredpattern^[a-zA-Z0-9_\-%$+]+$value
string required- {object}Matches provided headers as regex.
regexMode
booleanname
string requiredvalue
string requireddomains
[array]An array of domains to redirect to this port. Each domain must first be verified and registered to your account.- stringA domain to redirect to this port.
disableNfDomain
booleanDisable routing on the default code.run domain for public HTTP ports with custom domains.protocol
(multiple options: oneOf) requiredThe protocol to use for the port.- stringone ofHTTP, HTTP/2
- stringone ofHTTP, HTTP/2, TCP, UDP
disabledCI
booleanWhether CI (continuous integration) should be disabled.buildSource
stringDefines the build source for this resourceone ofgit, bundlevcsData
{object}projectUrl
string requiredURL of the Git repo to build.pattern^(https:\/\/)?((www(\.[a-zA-Z0-9\-]{2,})+\.)?[a-zA-Z0-9\-]{2,})(\.([a-zA-Z0-9\-]{2,}))+(\/([a-zA-Z0-9\-._]{2,}))+?$projectType
string requiredThe VCS provider to use.one ofbitbucket, gitlab, github, self-hosted, azureselfHostedVcsId
stringIf projectType is self-hosted, the ID of the self-hosted vcs to use.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.vcsLinkId
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 `vcsLinkId` is provided, Northflank will instead use your linked account with that ID.min length24max length24projectBranch
string requiredThe name of the branch to use.bundleData
{object}bundleUrl
string requiredURL of the bundle to be builtbranch
string requiredBranch identifier for the bundle.pattern^[A-Za-z0-9-]+$buildSettings
(multiple options: oneOf) requiredBuild engine- {object}Build from a Dockerfile
storage
{object}ephemeralStorage
{object}storageSize
integerEphemeral storage per build in MBone of16384, 32768, 65536, 131072, 262144, 524288min16384max65536dockerfile
{object} requiredbuildEngine
stringBuild engine to use. Defaults to recommended build engine `kaniko`one ofkaniko, buildkitdockerFilePath
string requiredThe file path of the Dockerfile.pattern^\/([a-zA-Z0-9-._]+\/)*[a-zA-Z0-9-._]+$dockerWorkDir
string requiredThe working directory of the Dockerfile.pattern^\/([a-zA-Z0-9-._]+\/)*[a-zA-Z0-9-._]*$useCache
booleanShould intermediate image layers be cached?buildkit
{object}useInternalCache
booleaninternalCacheStorage
number- {object}Build from a Buildpack
storage
{object}ephemeralStorage
{object}storageSize
integerEphemeral storage per build in MBone of16384, 32768, 65536, 131072, 262144, 524288min16384max65536buildpack
{object} requiredbuilder
stringBuildpack stack to use. Defaults to recommended stack `HEROKU_22`.one ofHEROKU_22, HEROKU_22_CLASSIC, HEROKU_20, HEROKU_18, GOOGLE_V1, CNB_ALPINE, CNB_BIONIC, PAKETO_TINY, PAKETO_BASE, PAKETO_FULLbuildpackLocators
[array]Array of custom Buildpacks to use.- stringUrl or registry identifier of custom Buildpack.
buildContext
stringThe working directory to build in.pattern^\/([a-zA-Z0-9-._]+\/)*[a-zA-Z0-9-._]*$useCache
booleanShould build dependencies be cached?buildConfiguration
{object}pathIgnoreRules
[array]An array of path ignore rules. A commit will only be built if a file has been changed that does not match any of the ignore rules. Path ignore rules follow `.gitignore` syntax.- stringA path ignore rule, following `.gitignore` syntax. For example, `*.md` will ignore all files ending with `.md`.max length260
isAllowList
booleanIf `true`, the functionality of `pathIgnoreRules` will be inverted. A commit will only be built if a file has been changed that matches one or more of the rules in `pathIgnoreRules`.ciIgnoreFlagsEnabled
booleanIf `true`, enables commit ignore flags. If a commit message contains one or more of the flags in `ciIgnoreFlags`, that commit will not be built.ciIgnoreFlags
[array]An array of commit ignore flags. If a commit message contains one or more of these flags, that commit will not be built. Defaults to `["[skip ci]", "[ci skip]", "[no ci]", "[skip nf]", "[nf skip]", "[northflank skip]", "[skip northflank]"]`- stringA commit ignore flag.max length72
dockerfileTarget
stringIf your Dockerfile contains multiple build stages, you can specify the target stage by entering its name here.dockerCredentials
[array]- stringThe ID of the docker credentials to use.pattern^[A-Za-z0-9-]+$
includeGitFolder
booleanInclude .git folder inside the build contextfullGitClone
booleanInclude the entire git history as part of the .git folder. Only relevant if "includeGitFolder" is set.storage
{object}ephemeralStorage
{object}storageSize
integerEphemeral storage per build in MBone of16384, 32768, 65536, 131072, 262144, 524288min16384max65536runtimeEnvironment
{object}An object containing the runtime environment to set for the service. Keys may only contain letters, numbers, hyphens, forward slashes and dots.runtimeFiles
{object}Secret files as JSON object, encrypted at rest. File path must be absolutebuildArguments
{object}An object containing the build arguments to set for the service. Keys may only contain letters, numbers, hyphens, forward slashes and dots.buildFiles
{object}Secret files as JSON object, encrypted at rest. File path must be absolutehealthChecks
[array]An array of health checks.- {object}A health check object.
protocol
string requiredThe protocol to access the health check with.one ofHTTP, CMD, TCPtype
string requiredThe type of health check.one oflivenessProbe, readinessProbe, startupProbepath
stringThe path of the health check endpoint. Required when protocol is HTTP.pattern^\/([a-zA-Z0-9-._]+\/)*[a-zA-Z0-9-._]+$cmd
stringThe command to run for the health check. Required when protocol is CMDport
integerPort number for the health check endpoint. Required when protocol is HTTP.min1initialDelaySeconds
integer requiredInitial delay, in seconds, before the health check is first run.min1max180periodSeconds
integer requiredThe time between each check, in seconds.min10max600timeoutSeconds
integer requiredThe time to wait for a response before marking the health check as a failure.min1max60failureThreshold
integer requiredThe maximum number of allowed failures.min1max255successThreshold
integerThe number of successes required to mark the health check as a success.min1max255autoscaling
{object}Describes all autoscaling configurationshorizontal
{object}Describes the horizontal autoscaling configurationenabled
boolean requiredWhether horizontal autoscaling should be enabledminReplicas
number requiredMinimum number of replicas which should be running at any timemin1maxReplicas
number requiredMaximum number of replicas which can be running at any timecpu
{object}enabled
boolean requiredWhether autoscaling should take into account cpu usagethresholdPercentage
integer requiredThreshold CPU usage percentage at which the workload will be scaledmin10max100memory
{object}enabled
boolean requiredWhether autoscaling should take into account memory usagethresholdPercentage
integer requiredThreshold memory usage percentage at which the workload will be scaledmin10max100rps
{object}enabled
boolean requiredWhether autoscaling should take into requests-per-secondthresholdValue
integer requiredThreshold rps value on which the workload will be scaledmin1deploymentSysctlSettings
{object}vm.max_map_count
integermin1max1048576serviceType
string requiredType of the service (combined, build or deployment)one ofcombineddeployment
{object} requiredinstances
integer requiredThe number of instances to run the service on.buildpack
{object}Allows for customization of buildpack runtimeconfigType
string requiredType of buildpack run configurationone ofdefault, customProcess, customCommand, customEntrypointCustomCommand, originalEntrypointCustomCommandcustomProcess
stringCustom process which should be run. Required in case where `configType` is `customProcess`customEntrypoint
stringCustom entrypoint which should be run. Required in case where `configType` is `customEntrypointCustomCommand`customCommand
stringCustom command which should be run. Required in case where `configType` is `customCommand`, `customEntrypointCustomCommand` or `originalEntrypointCustomCommand`docker
{object}Allows for customization of docker runtimeconfigType
string requiredType of entrypoint & command override configurationone ofdefault, customEntrypoint, customCommand, customEntrypointCustomCommandcustomEntrypoint
stringCustom entrypoint which should be used. Required in case where `configType` is `customEntrypoint` or `customEntrypointCustomCommand`customCommand
stringCustom command which should be used. Required in case where `configType` is `customCommand` or `customEntrypointCustomCommand`storage
{object}ephemeralStorage
{object}storageSize
integerEphemeral storage per container in MBone of1024, 2048, 5120, 10240, 20480, 30720, 40960, 51200, 61440, 81920, 102400, 122880, 153600, 204800min1024max204800shmSize
integerConfigures the amount of available memory-backed disk space available to /dev/shmone of64, 128, 256, 512, 1024, 2048, 5120, 10240min64max10240strategy
{object}Roll out strategy of the servicetype
stringConfigures the instance roll out strategy of your service. Currently only available via feature flag.one ofrecreate, rollout-steady, rollout-balanced, rollout-fastzonalRedundancy
{object}type
stringDefines scheduling behaviour across different zones within the same region.one ofdisabled, preferred, requiredminZones
integerDefines how many zones are required and will prevent containers from additional scheduling into existing zones. (Only relevant if type is set to "required")min1gpu
{object}enabled
booleanconfiguration
{object}gpuType
string requiredtimesliced
booleangracePeriodSeconds
integerThe maximum amount of time the process has to shut down after receiving a SIGTERM signal before it is forcefully shut down SIGKILL by the system.min15max600metadata
{object}Allow setting custom labels and annotations for workloads.labels
{object}Specify custom labels for the workload.annotations
{object}Specify custom annotations for the workload as string or object.imageUrl
stringImage registry url of the deployed image.id
string requiredIdentifier for the serviceappId
string requiredFull identifier used for service deploymentcluster
{object} requiredCluster informationid
string requiredThe id of the cluster associated with this project.name
string requiredThe name of the cluster associated with this project.namespace
stringNamespace this resource is located within on the cluster.loadBalancers
[array]Load balancer DNS for the cluster.- string
createdAt
stringtime of creationupdatedAt
stringtime of updatestatus
{object} requiredDetails about the current service status.build
{object}Details about the status of the most recent build.status
string requiredThe current status of the build.one ofQUEUED, PENDING, STARTING, CLONING, BUILDING, UPLOADING, ABORTED, FAILURE, SUBMISSION_FAILURE, SUCCESS, CRASHEDlastTransitionTime
stringThe timestamp of when the build reached this status.deployment
{object} requiredDetails about the current deployment status.status
string requiredThe current status of the deployment.one ofPENDING, IN_PROGRESS, COMPLETED, FAILEDreason
string requiredThe reason the current deployment was started.one ofSCALING, DEPLOYINGlastTransitionTime
stringThe timestamp of when the deployment reached this status.
OR
OR
OR
OR
OR
OR
OR
PUT /v1/projects/{projectId}/services/combined
Example request
curl --header "Content-Type: application/json" \
--header "Authorization: Bearer NORTHFLANK_API_TOKEN" \
--request PUT \
--data '{"name":"Example Service","description":"A service description","tags":["my-tag"],"billing":{"deploymentPlan":"nf-compute-20","buildPlan":"nf-compute-200-8"},"deployment":{"instances":1,"docker":{"configType":"default"},"storage":{"ephemeralStorage":{"storageSize":1024}}},"ports":[{"name":"p01","internalPort":8080,"public":true,"security":{"credentials":[{"username":"admin","password":"password123","type":"basic-auth"}],"ip":[{"addresses":["127.0.0.1"],"action":"DENY"}],"policies":[{"addresses":["127.0.0.1"],"action":"DENY"}],"headers":[{"regexMode":false}],"securePathConfiguration":{"rules":[{"paths":[{"routingMode":"prefix"}],"securityPolicies":{"orPolicies":{"credentials":[{"username":"admin","password":"password123","type":"basic-auth"}],"ip":[{"addresses":["127.0.0.1"],"action":"DENY"}],"policies":[{"addresses":["127.0.0.1"],"action":"DENY"}],"headers":[{"regexMode":false}]},"requiredPolicies":{"credentials":[{"username":"admin","password":"password123","type":"basic-auth"}],"ip":[{"addresses":["127.0.0.1"],"action":"DENY"}],"policies":[{"addresses":["127.0.0.1"],"action":"DENY"}],"headers":[{"regexMode":false}]}}}]}},"domains":["app.example.com"],"protocol":"HTTP"}],"buildSource":"git","vcsData":{"projectUrl":"https://github.com/northflank/gatsby-with-northflank","projectType":"github","accountLogin":"github-user","projectBranch":"master"},"bundleData":{"bundleUrl":"https://example.com/archive.tar"},"buildSettings":{"storage":{"ephemeralStorage":{"storageSize":16384}},"dockerfile":{"buildEngine":"kaniko","dockerFilePath":"/Dockerfile","dockerWorkDir":"/","useCache":false}},"buildConfiguration":{"pathIgnoreRules":["README.md"],"isAllowList":false,"ciIgnoreFlags":["[skip ci]"],"dockerCredentials":["example-docker-credential"],"storage":{"ephemeralStorage":{"storageSize":16384}}},"runtimeEnvironment":{"VARIABLE_1":"abcdef","VARIABLE_2":"12345"},"runtimeFiles":{"/dir/fileName":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}},"buildArguments":{"ARGUMENT_1":"abcdef","ARGUMENT_2":"12345"},"buildFiles":{"/dir/fileName":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}},"healthChecks":[{"protocol":"HTTP","type":"readinessProbe","path":"/health-check","port":8080,"initialDelaySeconds":10,"periodSeconds":60,"timeoutSeconds":1,"failureThreshold":3,"successThreshold":1}]}' \
https://api.northflank.com/v1/projects/{projectId}/services/combined
Example response
200 OK
JSON
{
"data": {
"name": "Example Service",
"description": "A service description",
"tags": [
"my-tag"
],
"billing": {
"deploymentPlan": "nf-compute-20",
"buildPlan": "nf-compute-200-8"
},
"ports": [
{
"name": "p01",
"internalPort": 8080,
"public": true,
"security": {
"credentials": [
{
"username": "admin",
"password": "password123",
"type": "basic-auth"
}
],
"ip": [
{
"addresses": [
"127.0.0.1"
],
"action": "DENY"
}
],
"policies": [
{
"addresses": [
"127.0.0.1"
],
"action": "DENY"
}
],
"headers": [
{
"regexMode": false
}
],
"securePathConfiguration": {
"rules": [
{
"paths": [
{
"routingMode": "prefix"
}
],
"securityPolicies": {
"orPolicies": {
"credentials": [
{
"username": "admin",
"password": "password123",
"type": "basic-auth"
}
],
"ip": [
{
"addresses": [
"127.0.0.1"
],
"action": "DENY"
}
],
"policies": [
{
"addresses": [
"127.0.0.1"
],
"action": "DENY"
}
],
"headers": [
{
"regexMode": false
}
]
},
"requiredPolicies": {
"credentials": [
{
"username": "admin",
"password": "password123",
"type": "basic-auth"
}
],
"ip": [
{
"addresses": [
"127.0.0.1"
],
"action": "DENY"
}
],
"policies": [
{
"addresses": [
"127.0.0.1"
],
"action": "DENY"
}
],
"headers": [
{
"regexMode": false
}
]
}
}
}
]
}
},
"domains": [
"app.example.com"
]
}
],
"buildSource": "git",
"vcsData": {
"projectUrl": "https://github.com/northflank/gatsby-with-northflank",
"projectType": "github",
"accountLogin": "github-user",
"projectBranch": "master"
},
"bundleData": {
"bundleUrl": "https://example.com/archive.tar"
},
"buildSettings": {
"storage": {
"ephemeralStorage": {
"storageSize": 16384
}
},
"dockerfile": {
"buildEngine": "kaniko",
"dockerFilePath": "/Dockerfile",
"dockerWorkDir": "/",
"useCache": false
}
},
"buildConfiguration": {
"pathIgnoreRules": [
"README.md"
],
"isAllowList": false,
"ciIgnoreFlags": [
"[skip ci]"
],
"dockerCredentials": [
"example-docker-credential"
],
"storage": {
"ephemeralStorage": {
"storageSize": 16384
}
}
},
"runtimeEnvironment": {
"VARIABLE_1": "abcdef",
"VARIABLE_2": "12345"
},
"runtimeFiles": {
"/dir/fileName": {
"data": "VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=",
"encoding": "utf-8"
}
},
"buildArguments": {
"ARGUMENT_1": "abcdef",
"ARGUMENT_2": "12345"
},
"buildFiles": {
"/dir/fileName": {
"data": "VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=",
"encoding": "utf-8"
}
},
"healthChecks": [
{
"protocol": "HTTP",
"type": "readinessProbe",
"path": "/health-check",
"port": 8080,
"initialDelaySeconds": 10,
"periodSeconds": 60,
"timeoutSeconds": 1,
"failureThreshold": 3,
"successThreshold": 1
}
],
"serviceType": "combined",
"deployment": {
"instances": 1,
"docker": {
"configType": "default"
},
"storage": {
"ephemeralStorage": {
"storageSize": 1024
}
}
},
"id": "example-service",
"appId": "/example-user/default-project/example-service",
"cluster": {
"id": "nf-europe-west",
"name": "nf-europe-west",
"namespace": "ns-8zy2mcjh9zn2",
"loadBalancers": [
"lb.659200800000000000000000.northflank.com"
]
},
"status": {
"build": {
"status": "SUCCESS",
"lastTransitionTime": "2021-11-29T11:47:16.624Z"
},
"deployment": {
"status": "COMPLETED",
"reason": "DEPLOYING",
"lastTransitionTime": "2021-11-29T11:47:16.624Z"
}
}
}
}