v1
Double column
API
CLI
JS Client

Templates /

Create template

Create a template

Required permission

Account > Templates > General > Create

Request body

  • {object}
    Create a new template
    • name

      string required
      Name of the template.
      min length
      3
      max length
      100
      pattern
      ^[a-zA-Z0-9]+((-|\s)[a-zA-Z0-9]+)*$
    • description

      string
      Description of the template.
      max length
      200
      pattern
      ^[a-zA-Z0-9.,?\s\\/'"()[\];`%^&*\-_:!]+$
    • apiVersion

      string required
      The version of the Northflank API to run the template against.
      one of
      v1.2
    • arguments

      {object}
      A set of arguments that can be referenced in a template using '${args.argumentName}'.
      • gitops

        {object}
        • vcsService

          string required
          The VCS provider to use.
          one of
          bitbucket, gitlab, github, self-hosted, azure
        • selfHostedVcsId

          string
          If projectType is self-hosted, the ID of the self-hosted vcs to use.
          pattern
          ^([A-Za-z0-9-]+\/[A-Za-z0-9-]+)|([0-9a-f]{24})$
        • accountLogin

          string
          By 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

          string
          Legacy key. Please used accountLogin instead.
        • repoUrl

          string required
          URL 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 required
          The name of the branch to use.
        • filePath

          string required
          The 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-._]+$
      • $schema

        string
      • spec

        (multiple options: oneOf) required
        A node representing an action to be performed as part of the template.
      • argumentOverrides

        {object}
        Argument overrides stored outside of the template. If GitOps is enabled, these will not be saved in version control.
        • options

          {object}
          Options regarding how the template is run.
          • autorun

            boolean
            If true, the template will run automatically whenever a change is made to it.
          • concurrencyPolicy

            string
            Defines the concurrency behaviour of the template with respect to parallel runs.
            one of
            allow, queue, forbid
          • runOnCreation

            boolean
            If true, the template will be ran immediately after creation.
          • runOnCreationArgumentOverrides

            {object}
            Argument overrides for the initial run. Valid only if `runOnCreation` is `true`.
        OR
        • {object}
          Create a new template with GitOps enabled (use an existing git template)
          • name

            string required
            Name of the template.
            min length
            3
            max length
            100
            pattern
            ^[a-zA-Z0-9]+((-|\s)[a-zA-Z0-9]+)*$
          • description

            string
            Description of the template.
            max length
            200
            pattern
            ^[a-zA-Z0-9.,?\s\\/'"()[\];`%^&*\-_:!]+$
          • arguments

            {object}
            A set of arguments that can be referenced in a template using '${args.argumentName}'.
            • $schema

              string
            • argumentOverrides

              {object}
              Argument overrides stored outside of the template. If GitOps is enabled, these will not be saved in version control.
              • options

                {object}
                Options regarding how the template is run.
                • autorun

                  boolean
                  If true, the template will run automatically whenever a change is made to it.
                • concurrencyPolicy

                  string
                  Defines the concurrency behaviour of the template with respect to parallel runs.
                  one of
                  allow, queue, forbid
                • runOnCreation

                  boolean
                  If true, the template will be ran immediately after creation.
                • runOnCreationArgumentOverrides

                  {object}
                  Argument overrides for the initial run. Valid only if `runOnCreation` is `true`.
                • gitops

                  {object} required
                  GitOps data for syncing this template with a file in version control.
                  • vcsService

                    string required
                    The VCS provider to use.
                    one of
                    bitbucket, gitlab, github, self-hosted, azure
                  • selfHostedVcsId

                    string
                    If projectType is self-hosted, the ID of the self-hosted vcs to use.
                    pattern
                    ^([A-Za-z0-9-]+\/[A-Za-z0-9-]+)|([0-9a-f]{24})$
                  • accountLogin

                    string
                    By 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

                    string
                    Legacy key. Please used accountLogin instead.
                  • repoUrl

                    string required
                    URL 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 required
                    The name of the branch to use.
                  • filePath

                    string required
                    The 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-._]+$
                • project

                  {object}

                Response body

                • {object}
                  Response object.
                  • data

                    {object} required
                    Result data.
                    • template

                      {object} required
                      Details about the newly created template.
                      • name

                        string required
                        Name of the template.
                        min length
                        3
                        max length
                        100
                        pattern
                        ^[a-zA-Z0-9]+((-|\s)[a-zA-Z0-9]+)*$
                      • description

                        string
                        Description of the template.
                        max length
                        200
                        pattern
                        ^[a-zA-Z0-9.,?\s\\/'"()[\];`%^&*\-_:!]+$
                      • apiVersion

                        string required
                        The version of the Northflank API to run the template against.
                        one of
                        v1.2
                      • arguments

                        {object}
                        A set of arguments that can be referenced in a template using '${args.argumentName}'.
                        • $schema

                          string
                        • spec

                          (multiple options: oneOf) required
                          A node representing an action to be performed as part of the template.
                        • id

                          string required
                          Identifier for the template
                          min length
                          3
                          max length
                          100
                          pattern
                          ^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$
                        • gitops

                          {object}
                          • vcsService

                            string required
                            The VCS provider to use.
                            one of
                            bitbucket, gitlab, github, self-hosted, azure
                          • selfHostedVcsId

                            string
                            If projectType is self-hosted, the ID of the self-hosted vcs to use.
                            pattern
                            ^([A-Za-z0-9-]+\/[A-Za-z0-9-]+)|([0-9a-f]{24})$
                          • accountLogin

                            string
                            By 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

                            string
                            Legacy key. Please used accountLogin instead.
                          • repoUrl

                            string required
                            URL 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 required
                            The name of the branch to use.
                          • filePath

                            string required
                            The 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 required
                            The SHA of the current commit that is being used for the template.
                        • concurrencyPolicy

                          string
                          Defines the concurrency behaviour of the template with respect to parallel runs.
                          one of
                          allow, queue, forbid
                        • options

                          {object} required
                          • autorun

                            boolean required
                            Whether autorun is enabled
                        • createdAt

                          string
                          time of creation
                        • updatedAt

                          string
                          time of update
                      • templateRun

                        {object}
                        • name

                          string required
                          Name of the template.
                          min length
                          3
                          max length
                          100
                          pattern
                          ^[a-zA-Z0-9]+((-|\s)[a-zA-Z0-9]+)*$
                        • description

                          string
                          Description of the template.
                          max length
                          200
                          pattern
                          ^[a-zA-Z0-9.,?\s\\/'"()[\];`%^&*\-_:!]+$
                        • apiVersion

                          string required
                          The version of the Northflank API to run the template against.
                          one of
                          v1.2
                        • options

                          {object}
                          Options regarding how the template is run.
                          • autorun

                            boolean
                            If true, the template will run automatically whenever a change is made to it.
                          • concurrencyPolicy

                            string
                            Defines the concurrency behaviour of the template with respect to parallel runs.
                            one of
                            allow, queue, forbid
                        • arguments

                          {object}
                          A set of arguments that can be referenced in a template using '${args.argumentName}'.
                          • gitops

                            {object}
                            • vcsService

                              string required
                              The VCS provider to use.
                              one of
                              bitbucket, gitlab, github, self-hosted, azure
                            • selfHostedVcsId

                              string
                              If projectType is self-hosted, the ID of the self-hosted vcs to use.
                              pattern
                              ^([A-Za-z0-9-]+\/[A-Za-z0-9-]+)|([0-9a-f]{24})$
                            • accountLogin

                              string
                              By 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

                              string
                              Legacy key. Please used accountLogin instead.
                            • repoUrl

                              string required
                              URL 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 required
                              The name of the branch to use.
                            • filePath

                              string required
                              The 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-._]+$
                          • $schema

                            string
                          • spec

                            (multiple options: oneOf) required
                            A node representing an action to be performed as part of the template.
                          • refs

                            {object}
                            • id

                              string required
                              Identifier for the template run
                            • templateId

                              string required
                              Identifier for the template
                            • status

                              string required
                              Status of the template run
                              one of
                              pending, running, success, failure, aborted, aborting, queued, unknown, skipped
                            • concluded

                              boolean required
                              Whether the run has concluded (aborted, success, failed)
                            • createdAt

                              string required
                              Timestamp the run was created at.
                            • updatedAt

                              string required
                              Timestamp the run was last updated at.
                      API
                      CLI
                      JS Client

                      POST /v1/templates

                      Example request

                      Request body
                      Create a new template
                      curl
                      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.2","gitops":{"vcsService":"github","accountLogin":"github-user","repoUrl":"https://github.com/northflank-examples/remix-postgres-redis-demo","branch":"main"},"spec":{"kind":"Workflow","spec":{"context":{"projectId":"example-project"},"type":"sequential"}},"options":{"autorun":false,"concurrencyPolicy":"allow","runOnCreation":true}}' \
                        https://api.northflank.com/v1/templates
                      OR
                      Create a new template with GitOps enabled (use an existing git template)
                      curl
                      curl --header "Content-Type: application/json" \
                        --header "Authorization: Bearer NORTHFLANK_API_TOKEN" \
                        --request POST \
                        --data '{"name":"Example Template","description":"This is a sample template.","options":{"autorun":false,"concurrencyPolicy":"allow","runOnCreation":true},"gitops":{"vcsService":"github","accountLogin":"github-user","repoUrl":"https://github.com/northflank-examples/remix-postgres-redis-demo","branch":"main"}}' \
                        https://api.northflank.com/v1/templates

                      Example response

                      200 OK

                      Details about the newly created template.

                      JSON

                      {
                        "data": {
                          "template": {
                            "name": "Example Template",
                            "description": "This is a sample template.",
                            "apiVersion": "v1.2",
                            "spec": {
                              "kind": "Workflow",
                              "spec": {
                                "context": {
                                  "projectId": "example-project"
                                },
                                "type": "sequential"
                              }
                            },
                            "id": "example-template",
                            "gitops": {
                              "vcsService": "github",
                              "accountLogin": "github-user",
                              "repoUrl": "https://github.com/northflank-examples/remix-postgres-redis-demo",
                              "branch": "main",
                              "templateSha": "8c7e040ee3737ddc3a713363ae72bbe960e9fb16"
                            },
                            "concurrencyPolicy": "allow"
                          },
                          "templateRun": {
                            "name": "Example Template",
                            "description": "This is a sample template.",
                            "apiVersion": "v1.2",
                            "options": {
                              "autorun": false,
                              "concurrencyPolicy": "allow"
                            },
                            "gitops": {
                              "vcsService": "github",
                              "accountLogin": "github-user",
                              "repoUrl": "https://github.com/northflank-examples/remix-postgres-redis-demo",
                              "branch": "main"
                            },
                            "spec": {
                              "settings": {
                                "maxAttempts": 3,
                                "backoff": {
                                  "type": "fixed",
                                  "delay": 60
                                }
                              },
                              "kind": "Workflow",
                              "response": {
                                "status": "success",
                                "retries": {
                                  "attempts": 1,
                                  "maxAttempts": 3,
                                  "timestamp": 1657296265
                                },
                                "startTime": 1657296265,
                                "endTime": 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"
                          }
                        }
                      }

                      © 2024 Northflank Ltd. All rights reserved.