{"info":{"title":"Northflank API","description":"This is the API for northflank.com","version":"1.0.0"},"paths":{"/v1/":{"get":{"operationId":"get","summary":"Health check","description":"Returns api service status","parameters":[],"responses":{"200":{"description":"success"}},"tags":["Miscellaneous"],"security":[]}},"/v1/addon-types":{"get":{"operationId":"getAddonTypes","summary":"List addon types","description":"Gets information about the available addon types","parameters":[],"responses":{"200":{"description":"A list of the available addon types.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"addonTypes":{"oneOf":[{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","description":"The identifier for the addon type.","example":"redis"},"name":{"type":"string","description":"The name of the addon type.","example":"Redis"},"description":{"type":"string","description":"A description of the addon.","example":"Redis implements a distributed, in-memory key-value database with optional durability."},"features":{"type":"object","properties":{"backupsDump":{"type":"boolean","description":"Whether this addon supports native (dump) backups","example":false},"customDBName":{"type":"boolean","description":"Whether this addon supports customising the database name.","example":false},"forkAddon":{"type":"boolean","description":"Whether this addon supports addon forking - creating a new addon from an existing addon backup.","example":false},"importDump":{"type":"boolean","description":"Whether this addon supports importing from an external backup.","example":false},"importLive":{"type":"boolean","description":"Whether this addon supports importing from an existing live database.","example":false},"scaleReplicas":{"type":"boolean","description":"Whether this addon supports replica scaling.","example":false},"tls":{"type":"boolean","description":"Whether this addon supports connection via TLS.","example":true},"externalAccess":{"type":"boolean","description":"Whether this addon supports external connection.","example":true}},"required":["backupsDump","customDBName","forkAddon","importDump","importLive","scaleReplicas","tls","externalAccess"],"additionalProperties":false,"description":"Features supported by this addon type."},"versions":{"type":"array","items":{"type":"string","description":"A version string.","example":"6.0.8"},"description":"A list of available versions of the addon type."},"major":{"type":"array","items":{"type":"string","description":"A major version string.","example":"6.0"},"description":"A list of available major versions of the addon type."},"resources":{"type":"object","properties":{"storage":{"type":"object","properties":{"options":{"type":"array","items":{"type":"number","format":"float","example":1024},"description":"Available options for storage size for this addon, in MB."},"default":{"type":"number","format":"float","description":"The default storage value for this addon.","example":1024}},"required":["options","default"],"additionalProperties":false,"description":"Details about storage size options for this addon."},"replicas":{"type":"object","properties":{"options":{"type":"array","items":{"type":"number","format":"float","example":1},"description":"Available options for replica counts for this addon."},"default":{"type":"number","format":"float","description":"The default replica count for this addon.","example":1}},"required":["options","default"],"additionalProperties":false,"description":"Details about replica count options for this addon."}},"required":["storage","replicas"],"additionalProperties":false,"description":"Details about resource options for the addon type."}},"required":["type","name","description","versions","major","resources"],"additionalProperties":false,"description":"Northflank-managed addon type"}},{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","description":"The identifier for the addon type.","example":"redis"},"name":{"type":"string","description":"The name of the addon type.","example":"Redis"},"description":{"type":"string","description":"A description of the addon.","example":"Redis implements a distributed, in-memory key-value database with optional durability."},"features":{"type":"object","properties":{"backupsDump":{"type":"boolean","description":"Whether this addon supports native (dump) backups","example":false},"customDBName":{"type":"boolean","description":"Whether this addon supports customising the database name.","example":false},"forkAddon":{"type":"boolean","description":"Whether this addon supports addon forking - creating a new addon from an existing addon backup.","example":false},"importDump":{"type":"boolean","description":"Whether this addon supports importing from an external backup.","example":false},"importLive":{"type":"boolean","description":"Whether this addon supports importing from an existing live database.","example":false},"scaleReplicas":{"type":"boolean","description":"Whether this addon supports replica scaling.","example":false},"tls":{"type":"boolean","description":"Whether this addon supports connection via TLS.","example":true},"externalAccess":{"type":"boolean","description":"Whether this addon supports external connection.","example":true}},"required":["backupsDump","customDBName","forkAddon","importDump","importLive","scaleReplicas","tls","externalAccess"],"additionalProperties":false,"description":"Features supported by this addon type."},"config":{"type":"object","properties":{"showTemplateValues":{"type":"boolean","description":"Allow addon user to view values provided to templating engine.","default":true},"enableTemplateValuesModification":{"type":"boolean","description":"Allow addon user to edit values provided to templating engine.","default":true},"enableErrorRecovery":{"type":"boolean","description":"Allow addon user to view and resolve potential errors occuring with templating engine run.","default":true},"installCrds":{"type":"boolean","description":"Install CRDs provided in resource bundle.","default":false},"useNfSecretInjection":{"type":"boolean","description":"Apply Northflank secret injection instead of using Kubernetes secrets.","default":true},"useNfImagePullSecret":{"type":"boolean","description":"Inject Northflank-specific Kubernetes imagePullSecret to Pod resources.","default":true}},"additionalProperties":false},"scope":{"type":"string","enum":["project","cluster"],"description":"If the addon deploys any k8s resources which are not namespace/project-scoped, it's a cluster scoped addon"}},"required":["type","name","description","config","scope"],"additionalProperties":false,"description":"Custom addon type"}}],"description":"A list of available addon types."}},"required":["addonTypes"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Addons"],"security":[],"x-nf-cli-command":["get","addon","types"]}},"/v1/backup-destinations":{"get":{"$ref":"#/components/pathItems/v1-backup-destinations-get"},"post":{"$ref":"#/components/pathItems/v1-backup-destinations-post"}},"/v1/teams/{teamId}/backup-destinations":{"get":{"$ref":"#/components/pathItems/v1-backup-destinations-get-team-scoped"},"post":{"$ref":"#/components/pathItems/v1-backup-destinations-post-team-scoped"}},"/v1/backup-destinations/{backupDestinationId}":{"get":{"$ref":"#/components/pathItems/v1-backup-destinations--backupDestinationId--get"},"patch":{"$ref":"#/components/pathItems/v1-backup-destinations--backupDestinationId--patch"},"delete":{"$ref":"#/components/pathItems/v1-backup-destinations--backupDestinationId--delete"}},"/v1/teams/{teamId}/backup-destinations/{backupDestinationId}":{"get":{"$ref":"#/components/pathItems/v1-backup-destinations--backupDestinationId--get-team-scoped"},"patch":{"$ref":"#/components/pathItems/v1-backup-destinations--backupDestinationId--patch-team-scoped"},"delete":{"$ref":"#/components/pathItems/v1-backup-destinations--backupDestinationId--delete-team-scoped"}},"/v1/backup-destinations/{backupDestinationId}/backups":{"get":{"$ref":"#/components/pathItems/v1-backup-destinations--backupDestinationId--backups-get"}},"/v1/teams/{teamId}/backup-destinations/{backupDestinationId}/backups":{"get":{"$ref":"#/components/pathItems/v1-backup-destinations--backupDestinationId--backups-get-team-scoped"}},"/v1/billing/invoices":{"get":{"$ref":"#/components/pathItems/v1-billing-invoices-get"}},"/v1/teams/{teamId}/billing/invoices":{"get":{"$ref":"#/components/pathItems/v1-billing-invoices-get-team-scoped"}},"/v1/billing/invoices/{invoiceId}":{"get":{"$ref":"#/components/pathItems/v1-billing-invoices--invoiceId--get"}},"/v1/teams/{teamId}/billing/invoices/{invoiceId}":{"get":{"$ref":"#/components/pathItems/v1-billing-invoices--invoiceId--get-team-scoped"}},"/v1/billing/usage":{"get":{"$ref":"#/components/pathItems/v1-billing-usage-get"}},"/v1/teams/{teamId}/billing/usage":{"get":{"$ref":"#/components/pathItems/v1-billing-usage-get-team-scoped"}},"/v1/billing/usage/{timestamp}":{"get":{"$ref":"#/components/pathItems/v1-billing-usage--timestamp--get"}},"/v1/teams/{teamId}/billing/usage/{timestamp}":{"get":{"$ref":"#/components/pathItems/v1-billing-usage--timestamp--get-team-scoped"}},"/v1/cloud-providers":{"get":{"operationId":"getCloudProviders","summary":"List providers","description":"Lists supported cloud providers","parameters":[],"responses":{"200":{"description":"A list of supported cloud providers.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"providers":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the provider.","example":"aws"},"name":{"type":"string","description":"The name of the provider.","example":"Amazon Web Services"},"engine":{"type":"string","description":"The kubernetes engine used.","example":"Elastic Kubernetes Service (EKS)"},"kubernetesVersions":{"type":"array","items":{"type":"string","example":"1.27"},"description":"An array of available kubernetes versions"},"diskSizes":{"type":"array","items":{"type":"number","format":"float","example":100},"description":"An array of supported node disk sizes"},"flags":{"type":"object","properties":{"preemptible":{"type":"boolean","description":"Preemptible/Spot node pool support","example":true},"autoscaling":{"type":"boolean","description":"Node pool autoscaling support","example":true}},"additionalProperties":false,"description":"An object with feature flags to indicate (un)supported features"}},"required":["id","name","engine","kubernetesVersions","diskSizes","flags"],"additionalProperties":false,"description":"A provider object"},"description":"An array of supported cloud providers"}},"required":["providers"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Cloud Providers"],"security":[],"x-nf-cli-command":["list","cloud","providers"]}},"/v1/cloud-providers/clusters":{"get":{"$ref":"#/components/pathItems/v1-cloud-providers-clusters-get"},"post":{"$ref":"#/components/pathItems/v1-cloud-providers-clusters-post"},"put":{"$ref":"#/components/pathItems/v1-cloud-providers-clusters-put"}},"/v1/teams/{teamId}/cloud-providers/clusters":{"get":{"$ref":"#/components/pathItems/v1-cloud-providers-clusters-get-team-scoped"},"post":{"$ref":"#/components/pathItems/v1-cloud-providers-clusters-post-team-scoped"},"put":{"$ref":"#/components/pathItems/v1-cloud-providers-clusters-put-team-scoped"}},"/v1/cloud-providers/clusters/{clusterId}":{"get":{"$ref":"#/components/pathItems/v1-cloud-providers-clusters--clusterId--get"},"patch":{"$ref":"#/components/pathItems/v1-cloud-providers-clusters--clusterId--patch"},"delete":{"$ref":"#/components/pathItems/v1-cloud-providers-clusters--clusterId--delete"}},"/v1/teams/{teamId}/cloud-providers/clusters/{clusterId}":{"get":{"$ref":"#/components/pathItems/v1-cloud-providers-clusters--clusterId--get-team-scoped"},"patch":{"$ref":"#/components/pathItems/v1-cloud-providers-clusters--clusterId--patch-team-scoped"},"delete":{"$ref":"#/components/pathItems/v1-cloud-providers-clusters--clusterId--delete-team-scoped"}},"/v1/cloud-providers/clusters/{clusterId}/nodes":{"get":{"$ref":"#/components/pathItems/v1-cloud-providers-clusters--clusterId--nodes-get"}},"/v1/teams/{teamId}/cloud-providers/clusters/{clusterId}/nodes":{"get":{"$ref":"#/components/pathItems/v1-cloud-providers-clusters--clusterId--nodes-get-team-scoped"}},"/v1/cloud-providers/clusters/{clusterId}/nodes/{nodeId}/cordon":{"post":{"$ref":"#/components/pathItems/v1-cloud-providers-clusters--clusterId--nodes--nodeId--cordon-post"}},"/v1/teams/{teamId}/cloud-providers/clusters/{clusterId}/nodes/{nodeId}/cordon":{"post":{"$ref":"#/components/pathItems/v1-cloud-providers-clusters--clusterId--nodes--nodeId--cordon-post-team-scoped"}},"/v1/cloud-providers/clusters/{clusterId}/nodes/{nodeId}/drain":{"post":{"$ref":"#/components/pathItems/v1-cloud-providers-clusters--clusterId--nodes--nodeId--drain-post"}},"/v1/teams/{teamId}/cloud-providers/clusters/{clusterId}/nodes/{nodeId}/drain":{"post":{"$ref":"#/components/pathItems/v1-cloud-providers-clusters--clusterId--nodes--nodeId--drain-post-team-scoped"}},"/v1/cloud-providers/clusters/{clusterId}/nodes/{nodeId}/uncordon":{"post":{"$ref":"#/components/pathItems/v1-cloud-providers-clusters--clusterId--nodes--nodeId--uncordon-post"}},"/v1/teams/{teamId}/cloud-providers/clusters/{clusterId}/nodes/{nodeId}/uncordon":{"post":{"$ref":"#/components/pathItems/v1-cloud-providers-clusters--clusterId--nodes--nodeId--uncordon-post-team-scoped"}},"/v1/cloud-providers/integrations":{"get":{"$ref":"#/components/pathItems/v1-cloud-providers-integrations-get"},"post":{"$ref":"#/components/pathItems/v1-cloud-providers-integrations-post"},"put":{"$ref":"#/components/pathItems/v1-cloud-providers-integrations-put"}},"/v1/teams/{teamId}/cloud-providers/integrations":{"get":{"$ref":"#/components/pathItems/v1-cloud-providers-integrations-get-team-scoped"},"post":{"$ref":"#/components/pathItems/v1-cloud-providers-integrations-post-team-scoped"},"put":{"$ref":"#/components/pathItems/v1-cloud-providers-integrations-put-team-scoped"}},"/v1/cloud-providers/integrations/{integrationId}":{"get":{"$ref":"#/components/pathItems/v1-cloud-providers-integrations--integrationId--get"},"patch":{"$ref":"#/components/pathItems/v1-cloud-providers-integrations--integrationId--patch"},"delete":{"$ref":"#/components/pathItems/v1-cloud-providers-integrations--integrationId--delete"}},"/v1/teams/{teamId}/cloud-providers/integrations/{integrationId}":{"get":{"$ref":"#/components/pathItems/v1-cloud-providers-integrations--integrationId--get-team-scoped"},"patch":{"$ref":"#/components/pathItems/v1-cloud-providers-integrations--integrationId--patch-team-scoped"},"delete":{"$ref":"#/components/pathItems/v1-cloud-providers-integrations--integrationId--delete-team-scoped"}},"/v1/cloud-providers/node-types":{"get":{"operationId":"getCloudProvidersNodeTypes","summary":"List provider node types","description":"Lists supported cloud provider node types","parameters":[{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query","schema":{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query"}},{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query","schema":{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query"}},{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query","schema":{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query"}},{"name":"provider","type":"string","description":"If provided, only returns items belonging to this cloud provider.","example":"gcp","in":"query","schema":{"name":"provider","type":"string","description":"If provided, only returns items belonging to this cloud provider.","example":"gcp","in":"query"}},{"name":"region","type":"string","description":"If provided, only returns items available in this region.","example":"europe-west-1","in":"query","schema":{"name":"region","type":"string","description":"If provided, only returns items available in this region.","example":"europe-west-1","in":"query"}},{"name":"family","type":"string","description":"If provided, only returns items of this family.","example":"N","in":"query","schema":{"name":"family","type":"string","description":"If provided, only returns items of this family.","example":"N","in":"query"}},{"name":"maxGenerationAge","type":"integer","description":"If provided, only returns items with a generation age less than or equal to the number given.","example":0,"in":"query","schema":{"name":"maxGenerationAge","type":"integer","description":"If provided, only returns items with a generation age less than or equal to the number given.","example":0,"in":"query"}},{"name":"hasGpu","type":"boolean","description":"If true, only returns items with GPUs. If false, only returns items without GPUs.","example":true,"in":"query","schema":{"name":"hasGpu","type":"boolean","description":"If true, only returns items with GPUs. If false, only returns items without GPUs.","example":true,"in":"query"}}],"responses":{"200":{"description":"A list of supported cloud provider node types.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"providers":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the node type","example":"n2-standard-8"},"name":{"type":"string","description":"The name of the node type","example":"n2-standard-8"},"resources":{"type":"object","properties":{"vcpu":{"type":"integer","description":"Number of vCPU of this node type","example":8},"memory":{"type":"integer","description":"Amount of memory capacity in GB of this node type","example":32}},"additionalProperties":false,"description":"An listing the resources of this node type"},"family":{"type":"string","description":"Family of the node type","example":"N"},"processorFamily":{"type":"string","description":"Processor family of the node type","example":"intel"},"workloadType":{"type":"string","description":"Workload this node type is optimized for","example":"general-purpose"}},"required":["id","name","resources","family","processorFamily","workloadType"],"additionalProperties":false,"description":"A provider node type object"},"description":"An array of supported cloud provider node types"}},"required":["providers"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Cloud Providers","team","org"],"security":[],"x-nf-cli-command":["list","cloud","node-types"]}},"/v1/cloud-providers/regions":{"get":{"operationId":"getCloudProvidersRegions","summary":"List provider regions","description":"Lists supported cloud provider regions","parameters":[{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query","schema":{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query"}},{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query","schema":{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query"}},{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query","schema":{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query"}},{"name":"provider","type":"string","description":"If provided, only returns items belonging to this cloud provider.","example":"gcp","in":"query","schema":{"name":"provider","type":"string","description":"If provided, only returns items belonging to this cloud provider.","example":"gcp","in":"query"}}],"responses":{"200":{"description":"A list of supported cloud provider regions.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"providers":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the region","example":"europe-west1"},"name":{"type":"string","description":"The name of the region","example":"europe-west1"},"availabilityZones":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"The id of the availability zone","example":"europe-west1-b"},"name":{"type":"string","description":"The name of the availability zone","example":"europe-west1-b"}},"required":["id","name"],"additionalProperties":false},"description":"The availability zones belonging to this region"}},"required":["id","name","availabilityZones"],"additionalProperties":false,"description":"A provider region object"},"description":"An array of supported cloud provider regions"}},"required":["providers"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Cloud Providers","team","org"],"security":[],"x-nf-cli-command":["list","cloud","regions"]}},"/v1/directory-groups":{"get":{"operationId":"getDirectoryGroups","summary":"List org directory groups","description":"Lists the Directory Sync directory groups for the authenticated org.","parameters":[],"responses":{"200":{"description":"A list of directory groups for the org.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"directoryGroups":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"ID of the directory group.","example":"directory_group_1234567890ABCDEFGHIJKLMNOP"},"name":{"type":"string","description":"Display name of the directory group."},"idpId":{"type":"string","description":"ID of the linked group from the Identity Provider (IdP)."},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","name","idpId","createdAt","updatedAt"],"additionalProperties":false,"description":"An org directory group object."},"description":"An array of org directory groups."}},"required":["directoryGroups"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Org Roles","org"],"security":[],"x-nf-permission-required":"Organisation > Admin > Roles > Read","x-nf-org-scoped":true,"x-nf-cli-command":["get","org-directory-groups"]}},"/v1/directory-groups/{groupId}/members":{"get":{"operationId":"getDirectoryGroupsGroupidMembers","summary":"List directory group members","description":"Lists the users who are members of the org via a specific Directory Sync group.","parameters":[{"name":"groupId","type":"string","required":true,"description":"ID of the directory group","example":"directory_group_1234567890ABCDEFGHIJKLMNOP","in":"path","schema":{"name":"groupId","type":"string","required":true,"description":"ID of the directory group","example":"directory_group_1234567890ABCDEFGHIJKLMNOP","in":"path"}},{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query","schema":{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query"}},{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query","schema":{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query"}},{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query","schema":{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query"}}],"responses":{"200":{"description":"A list of members in the directory group.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"members":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","nullable":true,"description":"ID (username) of the directory member.","example":"john-doe"},"name":{"type":"string","description":"Display name from the member profile.","example":"John Doe"},"emails":{"type":"array","items":{"type":"string","format":"email"},"description":"Email addresses of the member.","example":["john@example.com"]}},"required":["id"],"additionalProperties":false,"description":"A directory member object."},"description":"An array of members in the directory group."}},"required":["members"],"additionalProperties":false,"description":"Result data."},"pagination":{"type":"object","properties":{"hasNextPage":{"type":"boolean","description":"Is there another page of results available?","example":false},"cursor":{"type":"string","description":"The cursor to access the next page of results."},"count":{"type":"number","format":"float","description":"The number of results returned by this request.","example":1}},"required":["hasNextPage","count"],"additionalProperties":false,"description":"Data about the endpoint pagination."}},"required":["data","pagination"],"additionalProperties":false,"description":"Response object."}}},"tags":["Org Roles","org"],"security":[],"x-nf-permission-required":"Organisation > Admin > Members > Read","x-nf-org-scoped":true,"x-nf-cli-command":["list","org-directory-group-members"]}},"/v1/dns-id":{"get":{"$ref":"#/components/pathItems/v1-dns-id-get"}},"/v1/teams/{teamId}/dns-id":{"get":{"$ref":"#/components/pathItems/v1-dns-id-get-team-scoped"}},"/v1/domains":{"get":{"$ref":"#/components/pathItems/v1-domains-get"},"post":{"$ref":"#/components/pathItems/v1-domains-post"}},"/v1/teams/{teamId}/domains":{"get":{"$ref":"#/components/pathItems/v1-domains-get-team-scoped"},"post":{"$ref":"#/components/pathItems/v1-domains-post-team-scoped"}},"/v1/domains/{domain}":{"get":{"$ref":"#/components/pathItems/v1-domains--domain--get"},"delete":{"$ref":"#/components/pathItems/v1-domains--domain--delete"}},"/v1/teams/{teamId}/domains/{domain}":{"get":{"$ref":"#/components/pathItems/v1-domains--domain--get-team-scoped"},"delete":{"$ref":"#/components/pathItems/v1-domains--domain--delete-team-scoped"}},"/v1/domains/{domain}/certificate":{"get":{"$ref":"#/components/pathItems/v1-domains--domain--certificate-get"}},"/v1/teams/{teamId}/domains/{domain}/certificate":{"get":{"$ref":"#/components/pathItems/v1-domains--domain--certificate-get-team-scoped"}},"/v1/domains/{domain}/import":{"post":{"$ref":"#/components/pathItems/v1-domains--domain--import-post"}},"/v1/teams/{teamId}/domains/{domain}/import":{"post":{"$ref":"#/components/pathItems/v1-domains--domain--import-post-team-scoped"}},"/v1/domains/{domain}/subdomains":{"post":{"$ref":"#/components/pathItems/v1-domains--domain--subdomains-post"},"put":{"$ref":"#/components/pathItems/v1-domains--domain--subdomains-put"}},"/v1/teams/{teamId}/domains/{domain}/subdomains":{"post":{"$ref":"#/components/pathItems/v1-domains--domain--subdomains-post-team-scoped"},"put":{"$ref":"#/components/pathItems/v1-domains--domain--subdomains-put-team-scoped"}},"/v1/domains/{domain}/subdomains/{subdomain}":{"get":{"$ref":"#/components/pathItems/v1-domains--domain--subdomains--subdomain--get"},"delete":{"$ref":"#/components/pathItems/v1-domains--domain--subdomains--subdomain--delete"}},"/v1/teams/{teamId}/domains/{domain}/subdomains/{subdomain}":{"get":{"$ref":"#/components/pathItems/v1-domains--domain--subdomains--subdomain--get-team-scoped"},"delete":{"$ref":"#/components/pathItems/v1-domains--domain--subdomains--subdomain--delete-team-scoped"}},"/v1/domains/{domain}/subdomains/{subdomain}/assign":{"post":{"$ref":"#/components/pathItems/v1-domains--domain--subdomains--subdomain--assign-post"},"delete":{"$ref":"#/components/pathItems/v1-domains--domain--subdomains--subdomain--assign-delete"}},"/v1/teams/{teamId}/domains/{domain}/subdomains/{subdomain}/assign":{"post":{"$ref":"#/components/pathItems/v1-domains--domain--subdomains--subdomain--assign-post-team-scoped"},"delete":{"$ref":"#/components/pathItems/v1-domains--domain--subdomains--subdomain--assign-delete-team-scoped"}},"/v1/domains/{domain}/subdomains/{subdomain}/cdn/disable":{"post":{"$ref":"#/components/pathItems/v1-domains--domain--subdomains--subdomain--cdn-disable-post"}},"/v1/teams/{teamId}/domains/{domain}/subdomains/{subdomain}/cdn/disable":{"post":{"$ref":"#/components/pathItems/v1-domains--domain--subdomains--subdomain--cdn-disable-post-team-scoped"}},"/v1/domains/{domain}/subdomains/{subdomain}/cdn/enable":{"post":{"$ref":"#/components/pathItems/v1-domains--domain--subdomains--subdomain--cdn-enable-post"}},"/v1/teams/{teamId}/domains/{domain}/subdomains/{subdomain}/cdn/enable":{"post":{"$ref":"#/components/pathItems/v1-domains--domain--subdomains--subdomain--cdn-enable-post-team-scoped"}},"/v1/domains/{domain}/subdomains/{subdomain}/paths":{"post":{"$ref":"#/components/pathItems/v1-domains--domain--subdomains--subdomain--paths-post"},"get":{"$ref":"#/components/pathItems/v1-domains--domain--subdomains--subdomain--paths-get"}},"/v1/teams/{teamId}/domains/{domain}/subdomains/{subdomain}/paths":{"post":{"$ref":"#/components/pathItems/v1-domains--domain--subdomains--subdomain--paths-post-team-scoped"},"get":{"$ref":"#/components/pathItems/v1-domains--domain--subdomains--subdomain--paths-get-team-scoped"}},"/v1/domains/{domain}/subdomains/{subdomain}/paths/{subdomainPath}":{"get":{"$ref":"#/components/pathItems/v1-domains--domain--subdomains--subdomain--paths--subdomainPath--get"},"delete":{"$ref":"#/components/pathItems/v1-domains--domain--subdomains--subdomain--paths--subdomainPath--delete"},"post":{"$ref":"#/components/pathItems/v1-domains--domain--subdomains--subdomain--paths--subdomainPath--post"}},"/v1/teams/{teamId}/domains/{domain}/subdomains/{subdomain}/paths/{subdomainPath}":{"get":{"$ref":"#/components/pathItems/v1-domains--domain--subdomains--subdomain--paths--subdomainPath--get-team-scoped"},"delete":{"$ref":"#/components/pathItems/v1-domains--domain--subdomains--subdomain--paths--subdomainPath--delete-team-scoped"},"post":{"$ref":"#/components/pathItems/v1-domains--domain--subdomains--subdomain--paths--subdomainPath--post-team-scoped"}},"/v1/domains/{domain}/subdomains/{subdomain}/paths/{subdomainPath}/assign":{"post":{"$ref":"#/components/pathItems/v1-domains--domain--subdomains--subdomain--paths--subdomainPath--assign-post"},"delete":{"$ref":"#/components/pathItems/v1-domains--domain--subdomains--subdomain--paths--subdomainPath--assign-delete"}},"/v1/teams/{teamId}/domains/{domain}/subdomains/{subdomain}/paths/{subdomainPath}/assign":{"post":{"$ref":"#/components/pathItems/v1-domains--domain--subdomains--subdomain--paths--subdomainPath--assign-post-team-scoped"},"delete":{"$ref":"#/components/pathItems/v1-domains--domain--subdomains--subdomain--paths--subdomainPath--assign-delete-team-scoped"}},"/v1/domains/{domain}/subdomains/{subdomain}/verify":{"post":{"$ref":"#/components/pathItems/v1-domains--domain--subdomains--subdomain--verify-post"}},"/v1/teams/{teamId}/domains/{domain}/subdomains/{subdomain}/verify":{"post":{"$ref":"#/components/pathItems/v1-domains--domain--subdomains--subdomain--verify-post-team-scoped"}},"/v1/domains/{domain}/verify":{"post":{"$ref":"#/components/pathItems/v1-domains--domain--verify-post"}},"/v1/teams/{teamId}/domains/{domain}/verify":{"post":{"$ref":"#/components/pathItems/v1-domains--domain--verify-post-team-scoped"}},"/v1/egress-ips":{"get":{"$ref":"#/components/pathItems/v1-egress-ips-get"},"post":{"$ref":"#/components/pathItems/v1-egress-ips-post"},"put":{"$ref":"#/components/pathItems/v1-egress-ips-put"}},"/v1/teams/{teamId}/egress-ips":{"get":{"$ref":"#/components/pathItems/v1-egress-ips-get-team-scoped"},"post":{"$ref":"#/components/pathItems/v1-egress-ips-post-team-scoped"},"put":{"$ref":"#/components/pathItems/v1-egress-ips-put-team-scoped"}},"/v1/egress-ips/{egressIpId}":{"get":{"$ref":"#/components/pathItems/v1-egress-ips--egressIpId--get"},"patch":{"$ref":"#/components/pathItems/v1-egress-ips--egressIpId--patch"},"delete":{"$ref":"#/components/pathItems/v1-egress-ips--egressIpId--delete"}},"/v1/teams/{teamId}/egress-ips/{egressIpId}":{"get":{"$ref":"#/components/pathItems/v1-egress-ips--egressIpId--get-team-scoped"},"patch":{"$ref":"#/components/pathItems/v1-egress-ips--egressIpId--patch-team-scoped"},"delete":{"$ref":"#/components/pathItems/v1-egress-ips--egressIpId--delete-team-scoped"}},"/v1/gradual-rollout-strategies":{"post":{"$ref":"#/components/pathItems/v1-gradual-rollout-strategies-post"},"put":{"$ref":"#/components/pathItems/v1-gradual-rollout-strategies-put"}},"/v1/teams/{teamId}/gradual-rollout-strategies":{"post":{"$ref":"#/components/pathItems/v1-gradual-rollout-strategies-post-team-scoped"},"put":{"$ref":"#/components/pathItems/v1-gradual-rollout-strategies-put-team-scoped"}},"/v1/gradual-rollout-strategies/{gradualRolloutStrategyId}":{"patch":{"$ref":"#/components/pathItems/v1-gradual-rollout-strategies--gradualRolloutStrategyId--patch"},"delete":{"$ref":"#/components/pathItems/v1-gradual-rollout-strategies--gradualRolloutStrategyId--delete"}},"/v1/teams/{teamId}/gradual-rollout-strategies/{gradualRolloutStrategyId}":{"patch":{"$ref":"#/components/pathItems/v1-gradual-rollout-strategies--gradualRolloutStrategyId--patch-team-scoped"},"delete":{"$ref":"#/components/pathItems/v1-gradual-rollout-strategies--gradualRolloutStrategyId--delete-team-scoped"}},"/v1/integrations/log-sinks":{"get":{"$ref":"#/components/pathItems/v1-integrations-log-sinks-get"},"post":{"$ref":"#/components/pathItems/v1-integrations-log-sinks-post"}},"/v1/teams/{teamId}/integrations/log-sinks":{"get":{"$ref":"#/components/pathItems/v1-integrations-log-sinks-get-team-scoped"},"post":{"$ref":"#/components/pathItems/v1-integrations-log-sinks-post-team-scoped"}},"/v1/integrations/log-sinks/{logSinkId}":{"get":{"$ref":"#/components/pathItems/v1-integrations-log-sinks--logSinkId--get"},"delete":{"$ref":"#/components/pathItems/v1-integrations-log-sinks--logSinkId--delete"}},"/v1/teams/{teamId}/integrations/log-sinks/{logSinkId}":{"get":{"$ref":"#/components/pathItems/v1-integrations-log-sinks--logSinkId--get-team-scoped"},"delete":{"$ref":"#/components/pathItems/v1-integrations-log-sinks--logSinkId--delete-team-scoped"}},"/v1/integrations/log-sinks/{logSinkId}/pause":{"post":{"$ref":"#/components/pathItems/v1-integrations-log-sinks--logSinkId--pause-post"}},"/v1/teams/{teamId}/integrations/log-sinks/{logSinkId}/pause":{"post":{"$ref":"#/components/pathItems/v1-integrations-log-sinks--logSinkId--pause-post-team-scoped"}},"/v1/integrations/log-sinks/{logSinkId}/resume":{"post":{"$ref":"#/components/pathItems/v1-integrations-log-sinks--logSinkId--resume-post"}},"/v1/teams/{teamId}/integrations/log-sinks/{logSinkId}/resume":{"post":{"$ref":"#/components/pathItems/v1-integrations-log-sinks--logSinkId--resume-post-team-scoped"}},"/v1/integrations/log-sinks/{logSinkId}/settings":{"post":{"$ref":"#/components/pathItems/v1-integrations-log-sinks--logSinkId--settings-post"}},"/v1/teams/{teamId}/integrations/log-sinks/{logSinkId}/settings":{"post":{"$ref":"#/components/pathItems/v1-integrations-log-sinks--logSinkId--settings-post-team-scoped"}},"/v1/integrations/notifications":{"get":{"$ref":"#/components/pathItems/v1-integrations-notifications-get"},"post":{"$ref":"#/components/pathItems/v1-integrations-notifications-post"}},"/v1/teams/{teamId}/integrations/notifications":{"get":{"$ref":"#/components/pathItems/v1-integrations-notifications-get-team-scoped"},"post":{"$ref":"#/components/pathItems/v1-integrations-notifications-post-team-scoped"}},"/v1/integrations/notifications/{notificationId}":{"get":{"$ref":"#/components/pathItems/v1-integrations-notifications--notificationId--get"},"post":{"$ref":"#/components/pathItems/v1-integrations-notifications--notificationId--post"},"delete":{"$ref":"#/components/pathItems/v1-integrations-notifications--notificationId--delete"}},"/v1/teams/{teamId}/integrations/notifications/{notificationId}":{"get":{"$ref":"#/components/pathItems/v1-integrations-notifications--notificationId--get-team-scoped"},"post":{"$ref":"#/components/pathItems/v1-integrations-notifications--notificationId--post-team-scoped"},"delete":{"$ref":"#/components/pathItems/v1-integrations-notifications--notificationId--delete-team-scoped"}},"/v1/integrations/registries":{"get":{"$ref":"#/components/pathItems/v1-integrations-registries-get"},"post":{"$ref":"#/components/pathItems/v1-integrations-registries-post"}},"/v1/teams/{teamId}/integrations/registries":{"get":{"$ref":"#/components/pathItems/v1-integrations-registries-get-team-scoped"},"post":{"$ref":"#/components/pathItems/v1-integrations-registries-post-team-scoped"}},"/v1/integrations/registries/{credentialId}":{"get":{"$ref":"#/components/pathItems/v1-integrations-registries--credentialId--get"},"patch":{"$ref":"#/components/pathItems/v1-integrations-registries--credentialId--patch"},"delete":{"$ref":"#/components/pathItems/v1-integrations-registries--credentialId--delete"}},"/v1/teams/{teamId}/integrations/registries/{credentialId}":{"get":{"$ref":"#/components/pathItems/v1-integrations-registries--credentialId--get-team-scoped"},"patch":{"$ref":"#/components/pathItems/v1-integrations-registries--credentialId--patch-team-scoped"},"delete":{"$ref":"#/components/pathItems/v1-integrations-registries--credentialId--delete-team-scoped"}},"/v1/integrations/ssh-identities":{"get":{"$ref":"#/components/pathItems/v1-integrations-ssh-identities-get"},"post":{"$ref":"#/components/pathItems/v1-integrations-ssh-identities-post"}},"/v1/teams/{teamId}/integrations/ssh-identities":{"get":{"$ref":"#/components/pathItems/v1-integrations-ssh-identities-get-team-scoped"},"post":{"$ref":"#/components/pathItems/v1-integrations-ssh-identities-post-team-scoped"}},"/v1/integrations/ssh-identities/{identityId}":{"get":{"$ref":"#/components/pathItems/v1-integrations-ssh-identities--identityId--get"},"put":{"$ref":"#/components/pathItems/v1-integrations-ssh-identities--identityId--put"},"patch":{"$ref":"#/components/pathItems/v1-integrations-ssh-identities--identityId--patch"},"delete":{"$ref":"#/components/pathItems/v1-integrations-ssh-identities--identityId--delete"}},"/v1/teams/{teamId}/integrations/ssh-identities/{identityId}":{"get":{"$ref":"#/components/pathItems/v1-integrations-ssh-identities--identityId--get-team-scoped"},"put":{"$ref":"#/components/pathItems/v1-integrations-ssh-identities--identityId--put-team-scoped"},"patch":{"$ref":"#/components/pathItems/v1-integrations-ssh-identities--identityId--patch-team-scoped"},"delete":{"$ref":"#/components/pathItems/v1-integrations-ssh-identities--identityId--delete-team-scoped"}},"/v1/integrations/vcs":{"get":{"$ref":"#/components/pathItems/v1-integrations-vcs-get"}},"/v1/teams/{teamId}/integrations/vcs":{"get":{"$ref":"#/components/pathItems/v1-integrations-vcs-get-team-scoped"}},"/v1/integrations/vcs/custom/{customVCSId}/token/{vcsLinkId}":{"post":{"$ref":"#/components/pathItems/v1-integrations-vcs-custom--customVCSId--token--vcsLinkId--post"}},"/v1/teams/{teamId}/integrations/vcs/custom/{customVCSId}/token/{vcsLinkId}":{"post":{"$ref":"#/components/pathItems/v1-integrations-vcs-custom--customVCSId--token--vcsLinkId--post-team-scoped"}},"/v1/integrations/vcs/repos":{"get":{"$ref":"#/components/pathItems/v1-integrations-vcs-repos-get"}},"/v1/teams/{teamId}/integrations/vcs/repos":{"get":{"$ref":"#/components/pathItems/v1-integrations-vcs-repos-get-team-scoped"}},"/v1/integrations/vcs/repos/{vcsService}/{repositoryOwner}/{repositoryName}/branches":{"get":{"$ref":"#/components/pathItems/v1-integrations-vcs-repos--vcsService---repositoryOwner---repositoryName--branches-get"}},"/v1/teams/{teamId}/integrations/vcs/repos/{vcsService}/{repositoryOwner}/{repositoryName}/branches":{"get":{"$ref":"#/components/pathItems/v1-integrations-vcs-repos--vcsService---repositoryOwner---repositoryName--branches-get-team-scoped"}},"/v1/load-balancers":{"get":{"$ref":"#/components/pathItems/v1-load-balancers-get"},"post":{"$ref":"#/components/pathItems/v1-load-balancers-post"},"put":{"$ref":"#/components/pathItems/v1-load-balancers-put"}},"/v1/teams/{teamId}/load-balancers":{"get":{"$ref":"#/components/pathItems/v1-load-balancers-get-team-scoped"},"post":{"$ref":"#/components/pathItems/v1-load-balancers-post-team-scoped"},"put":{"$ref":"#/components/pathItems/v1-load-balancers-put-team-scoped"}},"/v1/load-balancers/{loadBalancerId}":{"get":{"$ref":"#/components/pathItems/v1-load-balancers--loadBalancerId--get"},"patch":{"$ref":"#/components/pathItems/v1-load-balancers--loadBalancerId--patch"},"delete":{"$ref":"#/components/pathItems/v1-load-balancers--loadBalancerId--delete"}},"/v1/teams/{teamId}/load-balancers/{loadBalancerId}":{"get":{"$ref":"#/components/pathItems/v1-load-balancers--loadBalancerId--get-team-scoped"},"patch":{"$ref":"#/components/pathItems/v1-load-balancers--loadBalancerId--patch-team-scoped"},"delete":{"$ref":"#/components/pathItems/v1-load-balancers--loadBalancerId--delete-team-scoped"}},"/v1/logs":{"get":{"operationId":"getLogs","summary":"Get logs for a resource","description":"Get logs for any Northflank resource","parameters":[{"name":"containerName","type":"string","minLength":3,"maxLength":64,"description":"Limits logs to a specific container.","example":"my-container-67d6d748c5-kgvwh","default":"all","in":"query","schema":{"name":"containerName","type":"string","minLength":3,"maxLength":64,"description":"Limits logs to a specific container.","example":"my-container-67d6d748c5-kgvwh","default":"all","in":"query"}},{"name":"podName","type":"string","description":"Name of the pod to see logs of","default":"acme-6b97845ff4-cwkj4","in":"query","schema":{"name":"podName","type":"string","description":"Name of the pod to see logs of","default":"acme-6b97845ff4-cwkj4","in":"query"}},{"name":"projectId","type":"string","description":"Name of the project the resources belong to","in":"query","schema":{"name":"projectId","type":"string","description":"Name of the project the resources belong to","in":"query"}},{"name":"clusterId","type":"string","description":"Name of the cluster the resources belong to","in":"query","schema":{"name":"clusterId","type":"string","description":"Name of the cluster the resources belong to","in":"query"}},{"name":"queryType","type":"string","enum":["range"],"description":"`range` selects a log range and returns immediately.","example":"range","default":"range","in":"query","schema":{"name":"queryType","type":"string","enum":["range"],"description":"`range` selects a log range and returns immediately.","example":"range","default":"range","in":"query"}},{"name":"startTime","type":"string","format":"date-time","description":"Fetch logs generated after this timestamp.","example":"2023-02-16T14:00:00.000Z","in":"query","schema":{"name":"startTime","type":"string","format":"date-time","description":"Fetch logs generated after this timestamp.","example":"2023-02-16T14:00:00.000Z","in":"query"}},{"name":"endTime","type":"string","format":"date-time","description":"Fetch logs generated before this timestamp.","example":"2023-02-16T15:00:00.000Z","in":"query","schema":{"name":"endTime","type":"string","format":"date-time","description":"Fetch logs generated before this timestamp.","example":"2023-02-16T15:00:00.000Z","in":"query"}},{"name":"duration","type":"integer","description":"Range duration in seconds. If set, only one of `startTime` or `endTime` can be set.","example":600,"in":"query","schema":{"name":"duration","type":"integer","description":"Range duration in seconds. If set, only one of `startTime` or `endTime` can be set.","example":600,"in":"query"}},{"name":"lineLimit","type":"number","format":"float","minimum":0,"maximum":1000,"description":"Number of log lines to fetch.","example":250,"in":"query","schema":{"name":"lineLimit","type":"number","format":"float","minimum":0,"maximum":1000,"description":"Number of log lines to fetch.","example":250,"in":"query"}},{"name":"direction","type":"string","enum":["backward","forward"],"description":"Ordering of log lines","example":"backward","default":"backward","in":"query","schema":{"name":"direction","type":"string","enum":["backward","forward"],"description":"Ordering of log lines","example":"backward","default":"backward","in":"query"}},{"name":"textIncludes","type":"string","minLength":1,"maxLength":100,"description":"Filter log lines to match this search string","example":"myvalue","in":"query","schema":{"name":"textIncludes","type":"string","minLength":1,"maxLength":100,"description":"Filter log lines to match this search string","example":"myvalue","in":"query"}},{"name":"textNotIncludes","type":"string","minLength":1,"maxLength":100,"description":"Filter log lines to not match this search string","example":"myvalue","in":"query","schema":{"name":"textNotIncludes","type":"string","minLength":1,"maxLength":100,"description":"Filter log lines to not match this search string","example":"myvalue","in":"query"}},{"name":"regexIncludes","type":"string","minLength":1,"maxLength":100,"description":"Filter log lines to match this regular expression","example":"my.*value","in":"query","schema":{"name":"regexIncludes","type":"string","minLength":1,"maxLength":100,"description":"Filter log lines to match this regular expression","example":"my.*value","in":"query"}},{"name":"regexNotIncludes","type":"string","minLength":1,"maxLength":100,"description":"Filter log lines to not match this regular expression","example":"my.*value","in":"query","schema":{"name":"regexNotIncludes","type":"string","minLength":1,"maxLength":100,"description":"Filter log lines to not match this regular expression","example":"my.*value","in":"query"}}],"responses":{"200":{"description":"List of logs values","schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"containerId":{"type":"string"},"log":{"example":"stdout F This is a log line"},"ts":{"type":"string","format":"date-time","example":"2023-03-21T15:01:17.310Z"}},"required":["containerId","log","ts"],"additionalProperties":false},"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Addons","Jobs","Services"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"containerName":{"type":"string","minLength":3,"maxLength":64,"description":"Limits logs to a specific container.","example":"my-container-67d6d748c5-kgvwh","default":"all"},"podName":{"type":"string","description":"Name of the pod to see logs of","default":"acme-6b97845ff4-cwkj4"},"projectId":{"type":"string","description":"Name of the project the resources belong to"},"clusterId":{"type":"string","description":"Name of the cluster the resources belong to"},"queryType":{"type":"string","enum":["range"],"description":"`range` selects a log range and returns immediately.","example":"range","default":"range"},"startTime":{"type":"string","format":"date-time","description":"Fetch logs generated after this timestamp.","example":"2023-02-16T14:00:00.000Z"},"endTime":{"type":"string","format":"date-time","description":"Fetch logs generated before this timestamp.","example":"2023-02-16T15:00:00.000Z"},"duration":{"type":"integer","description":"Range duration in seconds. If set, only one of `startTime` or `endTime` can be set.","example":600},"lineLimit":{"type":"number","format":"float","minimum":0,"maximum":1000,"description":"Number of log lines to fetch.","example":250},"direction":{"type":"string","enum":["backward","forward"],"description":"Ordering of log lines","example":"backward","default":"backward"},"textIncludes":{"type":"string","minLength":1,"maxLength":100,"description":"Filter log lines to match this search string","example":"myvalue"},"textNotIncludes":{"type":"string","minLength":1,"maxLength":100,"description":"Filter log lines to not match this search string","example":"myvalue"},"regexIncludes":{"type":"string","minLength":1,"maxLength":100,"description":"Filter log lines to match this regular expression","example":"my.*value"},"regexNotIncludes":{"type":"string","minLength":1,"maxLength":100,"description":"Filter log lines to not match this regular expression","example":"my.*value"}},"additionalProperties":false}}},"required":true},"x-nf-link":"undefined/v1/api/log-tailing","x-nf-link-description":"For more information on live log tailing, see our documentation page.","x-nf-cli-command":["get","logs"]}},"/v1/opentofu-jobs/{opentofuJobId}/logs":{"get":{"$ref":"#/components/pathItems/v1-opentofu-jobs--opentofuJobId--logs-get"}},"/v1/teams/{teamId}/opentofu-jobs/{opentofuJobId}/logs":{"get":{"$ref":"#/components/pathItems/v1-opentofu-jobs--opentofuJobId--logs-get-team-scoped"}},"/v1/org-members":{"get":{"operationId":"getOrgMembers","summary":"List org members","description":"Gets a list of members belonging to the authenticated org.","parameters":[{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query","schema":{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query"}},{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query","schema":{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query"}},{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query","schema":{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query"}}],"responses":{"200":{"description":"A list of members in the org.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"members":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"ID (username) of the org member. For users who are not finalized this ID may change on finalisation.","example":"john-doe"},"name":{"type":"string","description":"Display name from the member profile.","example":"John Doe"},"emails":{"type":"array","items":{"type":"object","properties":{"address":{"type":"string","example":"john@example.com"},"verified":{"type":"boolean","example":true}},"additionalProperties":false,"description":"Email addresses of the member."},"description":"Email addresses of the member."},"joinedAt":{"type":"string","format":"date-time","description":"The time the member joined the org.","example":"2021-01-20T11:19:53.175Z"},"finalized":{"type":"boolean","description":"Whether the account has been fully set up by the user."}},"required":["id","finalized"],"additionalProperties":false,"description":"An org member object."},"description":"An array of org members."}},"required":["members"],"additionalProperties":false,"description":"Result data."},"pagination":{"type":"object","properties":{"hasNextPage":{"type":"boolean","description":"Is there another page of results available?","example":false},"cursor":{"type":"string","description":"The cursor to access the next page of results."},"count":{"type":"number","format":"float","description":"The number of results returned by this request.","example":1}},"required":["hasNextPage","count"],"additionalProperties":false,"description":"Data about the endpoint pagination."}},"required":["data","pagination"],"additionalProperties":false,"description":"Response object."}}},"tags":["Org Members","org"],"security":[],"x-nf-permission-required":"Organisation > Admin > Members > Read","x-nf-org-scoped":true,"x-nf-cli-command":["list","org-members"]}},"/v1/org-roles":{"get":{"operationId":"getOrgRoles","summary":"List org roles","description":"Gets a list of platform roles for the authenticated org.","parameters":[{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query","schema":{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query"}},{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query","schema":{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query"}},{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query","schema":{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query"}}],"responses":{"200":{"description":"A list of platform roles for the org.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"roles":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"ID of the role.","example":"developer"},"name":{"type":"string","description":"Display name of the role.","example":"Developer"},"description":{"type":"string","description":"Description of the role.","example":"Role for developers."},"restrictions":{"type":"object","properties":{"enabled":{"type":"boolean"},"teams":{"type":"array","items":{"type":"object","properties":{"teamId":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39},"restrictions":{"type":"object","properties":{"enabled":{"type":"boolean"},"projects":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39},"default":[]},"restrictionMode":{"type":"string","enum":["in","notIn"]}},"required":["enabled"],"additionalProperties":false,"default":{"enabled":false,"projects":[]}}},"required":["teamId"],"additionalProperties":false},"default":[]}},"required":["enabled"],"additionalProperties":false},"directoryGroups":{"type":"array","items":{"type":"string","description":"The ID of the linked directory group."},"description":"An array of linked directory groups. Users belonging to any of these linked directory groups will automatically be a member of this role."},"createdAt":{"type":"string","format":"date-time","description":"Creation time.","example":"2021-01-20T11:19:53.175Z"},"updatedAt":{"type":"string","format":"date-time","description":"Last updated.","example":"2021-01-20T11:19:53.175Z"}},"required":["id","name","restrictions"],"additionalProperties":false,"description":"An org role object."},"description":"An array of org roles."}},"required":["roles"],"additionalProperties":false,"description":"Result data."},"pagination":{"type":"object","properties":{"hasNextPage":{"type":"boolean","description":"Is there another page of results available?","example":false},"cursor":{"type":"string","description":"The cursor to access the next page of results."},"count":{"type":"number","format":"float","description":"The number of results returned by this request.","example":1}},"required":["hasNextPage","count"],"additionalProperties":false,"description":"Data about the endpoint pagination."}},"required":["data","pagination"],"additionalProperties":false,"description":"Response object."}}},"tags":["Org Roles","org"],"security":[],"x-nf-permission-required":"Organisation > Admin > Roles > Read","x-nf-org-scoped":true,"x-nf-cli-command":["list","org-roles"]},"post":{"operationId":"postOrgRoles","summary":"Create org role","description":"Creates a new platform role for the authenticated org.","parameters":[],"responses":{"200":{"description":"Details about the newly created org role.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"ID of the role.","example":"developer"},"name":{"type":"string","description":"Display name of the role.","example":"Developer"},"description":{"type":"string","description":"Description of the role.","example":"Role for developers."},"restrictions":{"type":"object","properties":{"enabled":{"type":"boolean"},"teams":{"type":"array","items":{"type":"object","properties":{"teamId":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39},"restrictions":{"type":"object","properties":{"enabled":{"type":"boolean"},"projects":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39},"default":[]},"restrictionMode":{"type":"string","enum":["in","notIn"]}},"required":["enabled"],"additionalProperties":false,"default":{"enabled":false,"projects":[]}}},"required":["teamId"],"additionalProperties":false},"default":[]}},"required":["enabled"],"additionalProperties":false},"directoryGroups":{"type":"array","items":{"type":"string","description":"The ID of the linked directory group."},"description":"An array of linked directory groups. Users belonging to any of these linked directory groups will automatically be a member of this role."},"createdAt":{"type":"string","format":"date-time","description":"Creation time.","example":"2021-01-20T11:19:53.175Z"},"updatedAt":{"type":"string","format":"date-time","description":"Last updated.","example":"2021-01-20T11:19:53.175Z"},"permissions":{"type":"object","properties":{"teamScope":{"type":"array","items":{"type":"string"},"description":"Team-level permissions."},"projectScope":{"type":"array","items":{"type":"string"},"description":"Project-level permissions."},"orgScope":{"type":"array","items":{"type":"string"},"description":"Org-level permissions."}},"required":["teamScope","projectScope","orgScope"],"additionalProperties":false}},"required":["id","name","restrictions","permissions"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Org Roles","org"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"The name of the role.","example":"Developer"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"A description of the role.","example":"Role for developers."},"permissions":{"type":"object","properties":{"teamScope":{"type":"array","items":{"type":"string"},"description":"Team-level RBAC permission strings.","default":[]},"projectScope":{"type":"array","items":{"type":"string"},"description":"Project-level RBAC permission strings.","default":[]},"orgScope":{"type":"array","items":{"type":"string"},"description":"Org-level RBAC permission strings.","default":[]}},"additionalProperties":false,"description":"Permissions granted by this role.","default":{"teamScope":[],"projectScope":[],"orgScope":[]}},"restrictions":{"type":"object","properties":{"enabled":{"type":"boolean"},"teams":{"type":"array","items":{"type":"object","properties":{"teamId":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39},"restrictions":{"type":"object","properties":{"enabled":{"type":"boolean"},"projects":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39},"default":[]},"restrictionMode":{"type":"string","enum":["in","notIn"]}},"required":["enabled"],"additionalProperties":false,"default":{"enabled":false,"projects":[]}}},"required":["teamId"],"additionalProperties":false},"default":[]}},"required":["enabled"],"additionalProperties":false,"description":"Access restrictions for this role.","default":{"enabled":false}},"directoryGroups":{"type":"array","items":{"type":"string","description":"The ID of the linked directory group."},"description":"An array of linked directory groups. Users belonging to any of these linked directory groups will automatically be a member of this role."}},"required":["name"],"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Organisation > Admin > Roles > Manage","x-nf-org-scoped":true,"x-nf-cli-command":["create","org-role"]},"put":{"operationId":"putOrgRoles","summary":"Create or update org role","description":"Creates role or updates all user-editable fields on a platform role for the authenticated org.","parameters":[],"responses":{"200":{"description":"Details about the updated org role.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"ID of the role.","example":"developer"},"name":{"type":"string","description":"Display name of the role.","example":"Developer"},"description":{"type":"string","description":"Description of the role.","example":"Role for developers."},"restrictions":{"type":"object","properties":{"enabled":{"type":"boolean"},"teams":{"type":"array","items":{"type":"object","properties":{"teamId":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39},"restrictions":{"type":"object","properties":{"enabled":{"type":"boolean"},"projects":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39},"default":[]},"restrictionMode":{"type":"string","enum":["in","notIn"]}},"required":["enabled"],"additionalProperties":false,"default":{"enabled":false,"projects":[]}}},"required":["teamId"],"additionalProperties":false},"default":[]}},"required":["enabled"],"additionalProperties":false},"directoryGroups":{"type":"array","items":{"type":"string","description":"The ID of the linked directory group."},"description":"An array of linked directory groups. Users belonging to any of these linked directory groups will automatically be a member of this role."},"createdAt":{"type":"string","format":"date-time","description":"Creation time.","example":"2021-01-20T11:19:53.175Z"},"updatedAt":{"type":"string","format":"date-time","description":"Last updated.","example":"2021-01-20T11:19:53.175Z"},"permissions":{"type":"object","properties":{"teamScope":{"type":"array","items":{"type":"string"},"description":"Team-level permissions."},"projectScope":{"type":"array","items":{"type":"string"},"description":"Project-level permissions."},"orgScope":{"type":"array","items":{"type":"string"},"description":"Org-level permissions."}},"required":["teamScope","projectScope","orgScope"],"additionalProperties":false}},"required":["id","name","restrictions","permissions"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Org Roles","org"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"The name of the role.","example":"Developer"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"A description of the role.","example":"Role for developers."},"permissions":{"type":"object","properties":{"teamScope":{"type":"array","items":{"type":"string"},"description":"Team-level RBAC permission strings.","default":[]},"projectScope":{"type":"array","items":{"type":"string"},"description":"Project-level RBAC permission strings.","default":[]},"orgScope":{"type":"array","items":{"type":"string"},"description":"Org-level RBAC permission strings.","default":[]}},"additionalProperties":false,"description":"Permissions granted by this role.","default":{"teamScope":[],"projectScope":[],"orgScope":[]}},"restrictions":{"type":"object","properties":{"enabled":{"type":"boolean"},"teams":{"type":"array","items":{"type":"object","properties":{"teamId":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39},"restrictions":{"type":"object","properties":{"enabled":{"type":"boolean"},"projects":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39},"default":[]},"restrictionMode":{"type":"string","enum":["in","notIn"]}},"required":["enabled"],"additionalProperties":false,"default":{"enabled":false,"projects":[]}}},"required":["teamId"],"additionalProperties":false},"default":[]}},"required":["enabled"],"additionalProperties":false,"description":"Access restrictions for this role.","default":{"enabled":false}},"directoryGroups":{"type":"array","items":{"type":"string","description":"The ID of the linked directory group."},"description":"An array of linked directory groups. Users belonging to any of these linked directory groups will automatically be a member of this role."}},"required":["name"],"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Organisation > Admin > Roles > Manage","x-nf-org-scoped":true,"x-nf-cli-command":["put","org-role"]}},"/v1/org-roles/{roleId}":{"get":{"operationId":"getOrgRolesRoleid","summary":"Get org role","description":"Gets details about a specific org platform role.","parameters":[{"name":"roleId","type":"string","required":true,"description":"ID of the org role","example":"developer","in":"path","schema":{"name":"roleId","type":"string","required":true,"description":"ID of the org role","example":"developer","in":"path"}}],"responses":{"200":{"description":"Details about the org role.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"ID of the role.","example":"developer"},"name":{"type":"string","description":"Display name of the role.","example":"Developer"},"description":{"type":"string","description":"Description of the role.","example":"Role for developers."},"restrictions":{"type":"object","properties":{"enabled":{"type":"boolean"},"teams":{"type":"array","items":{"type":"object","properties":{"teamId":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39},"restrictions":{"type":"object","properties":{"enabled":{"type":"boolean"},"projects":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39},"default":[]},"restrictionMode":{"type":"string","enum":["in","notIn"]}},"required":["enabled"],"additionalProperties":false,"default":{"enabled":false,"projects":[]}}},"required":["teamId"],"additionalProperties":false},"default":[]}},"required":["enabled"],"additionalProperties":false},"directoryGroups":{"type":"array","items":{"type":"string","description":"The ID of the linked directory group."},"description":"An array of linked directory groups. Users belonging to any of these linked directory groups will automatically be a member of this role."},"createdAt":{"type":"string","format":"date-time","description":"Creation time.","example":"2021-01-20T11:19:53.175Z"},"updatedAt":{"type":"string","format":"date-time","description":"Last updated.","example":"2021-01-20T11:19:53.175Z"},"permissions":{"type":"object","properties":{"teamScope":{"type":"array","items":{"type":"string"},"description":"Team-level permissions."},"projectScope":{"type":"array","items":{"type":"string"},"description":"Project-level permissions."},"orgScope":{"type":"array","items":{"type":"string"},"description":"Org-level permissions."}},"required":["teamScope","projectScope","orgScope"],"additionalProperties":false}},"required":["id","name","restrictions","permissions"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Org Roles","org"],"security":[],"x-nf-permission-required":"Organisation > Admin > Roles > Read","x-nf-org-scoped":true,"x-nf-cli-command":["get","org-role"]},"patch":{"operationId":"patchOrgRolesRoleid","summary":"Update org role","description":"Partially updates a platform role for the authenticated org.","parameters":[{"name":"roleId","type":"string","required":true,"description":"ID of the org role","example":"developer","in":"path","schema":{"name":"roleId","type":"string","required":true,"description":"ID of the org role","example":"developer","in":"path"}}],"responses":{"200":{"description":"Details about the updated org role.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"ID of the role.","example":"developer"},"name":{"type":"string","description":"Display name of the role.","example":"Developer"},"description":{"type":"string","description":"Description of the role.","example":"Role for developers."},"restrictions":{"type":"object","properties":{"enabled":{"type":"boolean"},"teams":{"type":"array","items":{"type":"object","properties":{"teamId":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39},"restrictions":{"type":"object","properties":{"enabled":{"type":"boolean"},"projects":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39},"default":[]},"restrictionMode":{"type":"string","enum":["in","notIn"]}},"required":["enabled"],"additionalProperties":false,"default":{"enabled":false,"projects":[]}}},"required":["teamId"],"additionalProperties":false},"default":[]}},"required":["enabled"],"additionalProperties":false},"directoryGroups":{"type":"array","items":{"type":"string","description":"The ID of the linked directory group."},"description":"An array of linked directory groups. Users belonging to any of these linked directory groups will automatically be a member of this role."},"createdAt":{"type":"string","format":"date-time","description":"Creation time.","example":"2021-01-20T11:19:53.175Z"},"updatedAt":{"type":"string","format":"date-time","description":"Last updated.","example":"2021-01-20T11:19:53.175Z"},"permissions":{"type":"object","properties":{"teamScope":{"type":"array","items":{"type":"string"},"description":"Team-level permissions."},"projectScope":{"type":"array","items":{"type":"string"},"description":"Project-level permissions."},"orgScope":{"type":"array","items":{"type":"string"},"description":"Org-level permissions."}},"required":["teamScope","projectScope","orgScope"],"additionalProperties":false}},"required":["id","name","restrictions","permissions"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Org Roles","org"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"A description of the role.","example":"Role for developers."},"permissions":{"type":"object","properties":{"teamScope":{"type":"array","items":{"type":"string"},"description":"Team-level RBAC permission strings.","default":[]},"projectScope":{"type":"array","items":{"type":"string"},"description":"Project-level RBAC permission strings.","default":[]},"orgScope":{"type":"array","items":{"type":"string"},"description":"Org-level RBAC permission strings.","default":[]}},"additionalProperties":false,"description":"Permissions granted by this role."},"restrictions":{"type":"object","properties":{"enabled":{"type":"boolean"},"teams":{"type":"array","items":{"type":"object","properties":{"teamId":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39},"restrictions":{"type":"object","properties":{"enabled":{"type":"boolean"},"projects":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39},"default":[]},"restrictionMode":{"type":"string","enum":["in","notIn"]}},"required":["enabled"],"additionalProperties":false,"default":{"enabled":false,"projects":[]}}},"required":["teamId"],"additionalProperties":false},"default":[]}},"required":["enabled"],"additionalProperties":false,"description":"Access restrictions for this role."},"directoryGroups":{"type":"array","items":{"type":"string","description":"The ID of the linked directory group."},"description":"An array of linked directory groups. Users belonging to any of these linked directory groups will automatically be a member of this role."}},"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Organisation > Admin > Roles > Manage","x-nf-org-scoped":true,"x-nf-cli-command":["patch","org-role"]},"delete":{"operationId":"deleteOrgRolesRoleid","summary":"Delete org role","description":"Deletes a platform role from the authenticated org.","parameters":[{"name":"roleId","type":"string","required":true,"description":"ID of the org role","example":"developer","in":"path","schema":{"name":"roleId","type":"string","required":true,"description":"ID of the org role","example":"developer","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Org Roles","org"],"security":[],"x-nf-permission-required":"Organisation > Admin > Roles > Manage","x-nf-org-scoped":true,"x-nf-cli-command":["delete","org-role"]}},"/v1/org-roles/{roleId}/members":{"get":{"operationId":"getOrgRolesRoleidMembers","summary":"List org role members","description":"Gets a list of members assigned to a platform role in the authenticated org.","parameters":[{"name":"roleId","type":"string","required":true,"description":"ID of the org role","example":"developer","in":"path","schema":{"name":"roleId","type":"string","required":true,"description":"ID of the org role","example":"developer","in":"path"}},{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query","schema":{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query"}},{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query","schema":{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query"}},{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query","schema":{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query"}},{"name":"type","type":"string","enum":["explicit","implicit"],"description":"Filter members by how they were added, directly or implicitly via directory group membership.","example":"explicit","in":"query","schema":{"name":"type","type":"string","enum":["explicit","implicit"],"description":"Filter members by how they were added, directly or implicitly via directory group membership.","example":"explicit","in":"query"}},{"name":"userIds","description":"Filter members by user ID. Specify the parameter multiple times to filter by multiple user IDs.","example":"john-doe","in":"query","schema":{"anyOf":[{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9-]+$"}},{"type":"string","pattern":"^[A-Za-z0-9-]+$"}]}}],"responses":{"200":{"description":"A list of members in the org role.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"members":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"ID (username) of the org member. For users who are not finalized this ID may change on finalisation.","example":"john-doe"},"name":{"type":"string","description":"Display name from the member profile.","example":"John Doe"},"emails":{"type":"array","items":{"type":"object","properties":{"address":{"type":"string","example":"john@example.com"},"verified":{"type":"boolean","example":true}},"additionalProperties":false,"description":"Email addresses of the member."},"description":"Email addresses of the member."},"joinedAt":{"type":"string","format":"date-time","description":"The time the member joined the org.","example":"2021-01-20T11:19:53.175Z"},"finalized":{"type":"boolean","description":"Whether the account has been fully set up by the user."},"type":{"type":"string","enum":["explicit","implicit"],"description":"How the member was added to the role. `explicit` means manually added; `implicit` means provisioned via Directory Sync.","example":"explicit"}},"required":["id","finalized","type"],"additionalProperties":false,"description":"An org role member object."},"description":"An array of members in the org role."}},"required":["members"],"additionalProperties":false,"description":"Result data."},"pagination":{"type":"object","properties":{"hasNextPage":{"type":"boolean","description":"Is there another page of results available?","example":false},"cursor":{"type":"string","description":"The cursor to access the next page of results."},"count":{"type":"number","format":"float","description":"The number of results returned by this request.","example":1}},"required":["hasNextPage","count"],"additionalProperties":false,"description":"Data about the endpoint pagination."}},"required":["data","pagination"],"additionalProperties":false,"description":"Response object."}}},"tags":["Org Roles","org"],"security":[],"x-nf-permission-required":"Organisation > Admin > Roles > Read","x-nf-org-scoped":true,"x-nf-cli-command":["list","org-role-members"]},"post":{"operationId":"postOrgRolesRoleidMembers","summary":"Add member to org role","description":"Adds a user to a platform role in the authenticated org.","parameters":[{"name":"roleId","type":"string","required":true,"description":"ID of the org role","example":"developer","in":"path","schema":{"name":"roleId","type":"string","required":true,"description":"ID of the org role","example":"developer","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Org Roles","org"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"ID of the user to add to this role.","example":"john-doe"}},"required":["userId"],"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Organisation > Admin > Roles > Manage","x-nf-org-scoped":true,"x-nf-cli-command":["create","org-role-member"]}},"/v1/org-roles/{roleId}/members/{memberId}":{"delete":{"operationId":"deleteOrgRolesRoleidMembersMemberid","summary":"Remove member from org role","description":"Removes a user from a platform role in the authenticated org.","parameters":[{"name":"roleId","type":"string","required":true,"description":"ID of the org role","example":"developer","in":"path","schema":{"name":"roleId","type":"string","required":true,"description":"ID of the org role","example":"developer","in":"path"}},{"name":"memberId","type":"string","required":true,"description":"ID of the org member.","example":"john-doe","in":"path","schema":{"name":"memberId","type":"string","required":true,"description":"ID of the org member.","example":"john-doe","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Org Roles","org"],"security":[],"x-nf-permission-required":"Organisation > Admin > Roles > Manage","x-nf-org-scoped":true,"x-nf-cli-command":["delete","org-role-member"]}},"/v1/plans":{"get":{"operationId":"getPlans","summary":"List plans","description":"Lists available billing plans","parameters":[],"responses":{"200":{"description":"A list of available plans.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"plans":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the plan.","example":"nf-compute-20"},"name":{"type":"string","description":"The name of the plan.","example":"nf-compute-20"},"currency":{"type":"string","description":"The currency code of the currency used by this plan.","example":"usd"},"amountPerMonth":{"type":"number","format":"float","description":"The approximate monthly (30 days) cost of the plan.","example":4.4},"amountPerHour":{"type":"number","format":"float","description":"The hourly cost of the plan.","example":0.0061},"cpuResource":{"type":"number","format":"float","description":"The CPU resource of the plan, in vCPUs.","example":0.2},"ramResource":{"type":"number","format":"float","description":"The memory resource of the plan, in megabytes","example":512}},"required":["id","name","currency","amountPerMonth","amountPerHour","cpuResource","ramResource"],"additionalProperties":false,"description":"A plan object"},"description":"An array of available plans"}},"required":["plans"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Miscellaneous"],"security":[],"x-nf-cli-command":["list","plans"]}},"/v1/projects":{"get":{"$ref":"#/components/pathItems/v1-projects-get"},"post":{"$ref":"#/components/pathItems/v1-projects-post"},"put":{"$ref":"#/components/pathItems/v1-projects-put"}},"/v1/teams/{teamId}/projects":{"get":{"$ref":"#/components/pathItems/v1-projects-get-team-scoped"},"post":{"$ref":"#/components/pathItems/v1-projects-post-team-scoped"},"put":{"$ref":"#/components/pathItems/v1-projects-put-team-scoped"}},"/v1/projects/{projectId}":{"patch":{"$ref":"#/components/pathItems/v1-projects--projectId--patch"},"get":{"$ref":"#/components/pathItems/v1-projects--projectId--get"},"delete":{"$ref":"#/components/pathItems/v1-projects--projectId--delete"}},"/v1/teams/{teamId}/projects/{projectId}":{"patch":{"$ref":"#/components/pathItems/v1-projects--projectId--patch-team-scoped"},"get":{"$ref":"#/components/pathItems/v1-projects--projectId--get-team-scoped"},"delete":{"$ref":"#/components/pathItems/v1-projects--projectId--delete-team-scoped"}},"/v1/projects/{projectId}/addons":{"get":{"$ref":"#/components/pathItems/v1-projects--projectId--addons-get"},"post":{"$ref":"#/components/pathItems/v1-projects--projectId--addons-post"},"put":{"$ref":"#/components/pathItems/v1-projects--projectId--addons-put"}},"/v1/teams/{teamId}/projects/{projectId}/addons":{"get":{"$ref":"#/components/pathItems/v1-projects--projectId--addons-get-team-scoped"},"post":{"$ref":"#/components/pathItems/v1-projects--projectId--addons-post-team-scoped"},"put":{"$ref":"#/components/pathItems/v1-projects--projectId--addons-put-team-scoped"}},"/v1/projects/{projectId}/addons/{addonId}":{"get":{"$ref":"#/components/pathItems/v1-projects--projectId--addons--addonId--get"},"patch":{"$ref":"#/components/pathItems/v1-projects--projectId--addons--addonId--patch"},"delete":{"$ref":"#/components/pathItems/v1-projects--projectId--addons--addonId--delete"}},"/v1/teams/{teamId}/projects/{projectId}/addons/{addonId}":{"get":{"$ref":"#/components/pathItems/v1-projects--projectId--addons--addonId--get-team-scoped"},"patch":{"$ref":"#/components/pathItems/v1-projects--projectId--addons--addonId--patch-team-scoped"},"delete":{"$ref":"#/components/pathItems/v1-projects--projectId--addons--addonId--delete-team-scoped"}},"/v1/projects/{projectId}/addons/{addonId}/backup-schedules":{"get":{"$ref":"#/components/pathItems/v1-projects--projectId--addons--addonId--backup-schedules-get"},"post":{"$ref":"#/components/pathItems/v1-projects--projectId--addons--addonId--backup-schedules-post"}},"/v1/teams/{teamId}/projects/{projectId}/addons/{addonId}/backup-schedules":{"get":{"$ref":"#/components/pathItems/v1-projects--projectId--addons--addonId--backup-schedules-get-team-scoped"},"post":{"$ref":"#/components/pathItems/v1-projects--projectId--addons--addonId--backup-schedules-post-team-scoped"}},"/v1/projects/{projectId}/addons/{addonId}/backup-schedules/{scheduleId}":{"delete":{"$ref":"#/components/pathItems/v1-projects--projectId--addons--addonId--backup-schedules--scheduleId--delete"}},"/v1/teams/{teamId}/projects/{projectId}/addons/{addonId}/backup-schedules/{scheduleId}":{"delete":{"$ref":"#/components/pathItems/v1-projects--projectId--addons--addonId--backup-schedules--scheduleId--delete-team-scoped"}},"/v1/projects/{projectId}/addons/{addonId}/backups":{"get":{"$ref":"#/components/pathItems/v1-projects--projectId--addons--addonId--backups-get"},"post":{"$ref":"#/components/pathItems/v1-projects--projectId--addons--addonId--backups-post"}},"/v1/teams/{teamId}/projects/{projectId}/addons/{addonId}/backups":{"get":{"$ref":"#/components/pathItems/v1-projects--projectId--addons--addonId--backups-get-team-scoped"},"post":{"$ref":"#/components/pathItems/v1-projects--projectId--addons--addonId--backups-post-team-scoped"}},"/v1/projects/{projectId}/addons/{addonId}/backups/{backupId}":{"get":{"$ref":"#/components/pathItems/v1-projects--projectId--addons--addonId--backups--backupId--get"},"delete":{"$ref":"#/components/pathItems/v1-projects--projectId--addons--addonId--backups--backupId--delete"}},"/v1/teams/{teamId}/projects/{projectId}/addons/{addonId}/backups/{backupId}":{"get":{"$ref":"#/components/pathItems/v1-projects--projectId--addons--addonId--backups--backupId--get-team-scoped"},"delete":{"$ref":"#/components/pathItems/v1-projects--projectId--addons--addonId--backups--backupId--delete-team-scoped"}},"/v1/projects/{projectId}/addons/{addonId}/backups/{backupId}/abort":{"post":{"$ref":"#/components/pathItems/v1-projects--projectId--addons--addonId--backups--backupId--abort-post"}},"/v1/teams/{teamId}/projects/{projectId}/addons/{addonId}/backups/{backupId}/abort":{"post":{"$ref":"#/components/pathItems/v1-projects--projectId--addons--addonId--backups--backupId--abort-post-team-scoped"}},"/v1/projects/{projectId}/addons/{addonId}/backups/{backupId}/abort-restore":{"post":{"$ref":"#/components/pathItems/v1-projects--projectId--addons--addonId--backups--backupId--abort-restore-post"}},"/v1/teams/{teamId}/projects/{projectId}/addons/{addonId}/backups/{backupId}/abort-restore":{"post":{"$ref":"#/components/pathItems/v1-projects--projectId--addons--addonId--backups--backupId--abort-restore-post-team-scoped"}},"/v1/projects/{projectId}/addons/{addonId}/backups/{backupId}/download-link":{"get":{"$ref":"#/components/pathItems/v1-projects--projectId--addons--addonId--backups--backupId--download-link-get"}},"/v1/teams/{teamId}/projects/{projectId}/addons/{addonId}/backups/{backupId}/download-link":{"get":{"$ref":"#/components/pathItems/v1-projects--projectId--addons--addonId--backups--backupId--download-link-get-team-scoped"}},"/v1/projects/{projectId}/addons/{addonId}/backups/{backupId}/logs":{"get":{"$ref":"#/components/pathItems/v1-projects--projectId--addons--addonId--backups--backupId--logs-get"}},"/v1/teams/{teamId}/projects/{projectId}/addons/{addonId}/backups/{backupId}/logs":{"get":{"$ref":"#/components/pathItems/v1-projects--projectId--addons--addonId--backups--backupId--logs-get-team-scoped"}},"/v1/projects/{projectId}/addons/{addonId}/backups/{backupId}/restore":{"post":{"$ref":"#/components/pathItems/v1-projects--projectId--addons--addonId--backups--backupId--restore-post"}},"/v1/teams/{teamId}/projects/{projectId}/addons/{addonId}/backups/{backupId}/restore":{"post":{"$ref":"#/components/pathItems/v1-projects--projectId--addons--addonId--backups--backupId--restore-post-team-scoped"}},"/v1/projects/{projectId}/addons/{addonId}/backups/{backupId}/restores":{"get":{"$ref":"#/components/pathItems/v1-projects--projectId--addons--addonId--backups--backupId--restores-get"}},"/v1/teams/{teamId}/projects/{projectId}/addons/{addonId}/backups/{backupId}/restores":{"get":{"$ref":"#/components/pathItems/v1-projects--projectId--addons--addonId--backups--backupId--restores-get-team-scoped"}},"/v1/projects/{projectId}/addons/{addonId}/backups/{backupId}/restores/{restoreId}/logs":{"get":{"$ref":"#/components/pathItems/v1-projects--projectId--addons--addonId--backups--backupId--restores--restoreId--logs-get"}},"/v1/teams/{teamId}/projects/{projectId}/addons/{addonId}/backups/{backupId}/restores/{restoreId}/logs":{"get":{"$ref":"#/components/pathItems/v1-projects--projectId--addons--addonId--backups--backupId--restores--restoreId--logs-get-team-scoped"}},"/v1/projects/{projectId}/addons/{addonId}/backups/{backupId}/retain":{"post":{"$ref":"#/components/pathItems/v1-projects--projectId--addons--addonId--backups--backupId--retain-post"}},"/v1/teams/{teamId}/projects/{projectId}/addons/{addonId}/backups/{backupId}/retain":{"post":{"$ref":"#/components/pathItems/v1-projects--projectId--addons--addonId--backups--backupId--retain-post-team-scoped"}},"/v1/projects/{projectId}/addons/{addonId}/containers":{"get":{"$ref":"#/components/pathItems/v1-projects--projectId--addons--addonId--containers-get"}},"/v1/teams/{teamId}/projects/{projectId}/addons/{addonId}/containers":{"get":{"$ref":"#/components/pathItems/v1-projects--projectId--addons--addonId--containers-get-team-scoped"}},"/v1/projects/{projectId}/addons/{addonId}/credentials":{"get":{"$ref":"#/components/pathItems/v1-projects--projectId--addons--addonId--credentials-get"}},"/v1/teams/{teamId}/projects/{projectId}/addons/{addonId}/credentials":{"get":{"$ref":"#/components/pathItems/v1-projects--projectId--addons--addonId--credentials-get-team-scoped"}},"/v1/projects/{projectId}/addons/{addonId}/import":{"post":{"operationId":"postProjectsAddonsAddonidImport","summary":"Import addon backup","description":"Imports a database from an external archive or existing live database.","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"addonId","type":"string","required":true,"description":"ID of the addon","example":"example-addon","in":"path","schema":{"name":"addonId","type":"string","required":true,"description":"ID of the addon","example":"example-addon","in":"path"}}],"responses":{"200":{"description":"success"}},"tags":["Addons","project"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z0-9]+((-|\\s|\\/|:)[a-zA-Z0-9]+)*$","minLength":3,"maxLength":39,"description":"The name of the backup. If not provided, a default name will be generated containing the current date.","example":"Example Backup"},"connectionString":{"type":"string","description":"A database connection string.","example":"mongodb://mongodb0.example.com:27017"},"importAllDatabases":{"type":"boolean","description":"Detect and import all databases. If false, attempts to import only the database specified in the connection string","default":true},"compressionType":{"type":"string","enum":["gz","zstd"],"description":"The compression algorithm for storing the imported file. Defaults to `gz`.","example":"gz"},"customDestinationId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"Custom destination to store the imported backup in. If not specified, backup is stored in Northflank-managed destination."}},"required":["connectionString"],"additionalProperties":false,"description":"Import using a connection string. The database will be imported from the live database located at the connection string's location."},{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z0-9]+((-|\\s|\\/|:)[a-zA-Z0-9]+)*$","minLength":3,"maxLength":39,"description":"The name of the backup. If not provided, a default name will be generated containing the current date.","example":"Example Backup"},"importUrl":{"type":"string","description":"A url pointing to an existing backup stored as a GNU zip (.gz) file.","example":"https://example.com/backup.db.gz"},"customDestinationId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"Custom destination to store the imported backup in. If not specified, backup is stored in Northflank-managed destination."}},"required":["importUrl"],"additionalProperties":false,"description":"Import using an external archive. The database will be imported from an existing backup."}],"description":"Import type"},"examples":{"live":{"value":{"name":"Example Backup","connectionString":"mongodb://mongodb0.example.com:27017"},"description":"Import from a connection string"},"url":{"value":{"name":"Example Backup","importUrl":"https://example.com/backup.db.gz"},"description":"Import from a url"}}}},"required":true},"x-nf-permission-required":"Project > Addons > General > Update","x-nf-cli-command":["import","addon","backup"]}},"/v1/projects/{projectId}/addons/{addonId}/logs":{"get":{"$ref":"#/components/pathItems/v1-projects--projectId--addons--addonId--logs-get"}},"/v1/teams/{teamId}/projects/{projectId}/addons/{addonId}/logs":{"get":{"$ref":"#/components/pathItems/v1-projects--projectId--addons--addonId--logs-get-team-scoped"}},"/v1/projects/{projectId}/addons/{addonId}/metrics":{"get":{"$ref":"#/components/pathItems/v1-projects--projectId--addons--addonId--metrics-get"}},"/v1/teams/{teamId}/projects/{projectId}/addons/{addonId}/metrics":{"get":{"$ref":"#/components/pathItems/v1-projects--projectId--addons--addonId--metrics-get-team-scoped"}},"/v1/projects/{projectId}/addons/{addonId}/network-settings":{"post":{"$ref":"#/components/pathItems/v1-projects--projectId--addons--addonId--network-settings-post"}},"/v1/teams/{teamId}/projects/{projectId}/addons/{addonId}/network-settings":{"post":{"$ref":"#/components/pathItems/v1-projects--projectId--addons--addonId--network-settings-post-team-scoped"}},"/v1/projects/{projectId}/addons/{addonId}/pause":{"post":{"$ref":"#/components/pathItems/v1-projects--projectId--addons--addonId--pause-post"}},"/v1/teams/{teamId}/projects/{projectId}/addons/{addonId}/pause":{"post":{"$ref":"#/components/pathItems/v1-projects--projectId--addons--addonId--pause-post-team-scoped"}},"/v1/projects/{projectId}/addons/{addonId}/reset":{"post":{"$ref":"#/components/pathItems/v1-projects--projectId--addons--addonId--reset-post"}},"/v1/teams/{teamId}/projects/{projectId}/addons/{addonId}/reset":{"post":{"$ref":"#/components/pathItems/v1-projects--projectId--addons--addonId--reset-post-team-scoped"}},"/v1/projects/{projectId}/addons/{addonId}/restart":{"post":{"$ref":"#/components/pathItems/v1-projects--projectId--addons--addonId--restart-post"}},"/v1/teams/{teamId}/projects/{projectId}/addons/{addonId}/restart":{"post":{"$ref":"#/components/pathItems/v1-projects--projectId--addons--addonId--restart-post-team-scoped"}},"/v1/projects/{projectId}/addons/{addonId}/restores":{"get":{"$ref":"#/components/pathItems/v1-projects--projectId--addons--addonId--restores-get"}},"/v1/teams/{teamId}/projects/{projectId}/addons/{addonId}/restores":{"get":{"$ref":"#/components/pathItems/v1-projects--projectId--addons--addonId--restores-get-team-scoped"}},"/v1/projects/{projectId}/addons/{addonId}/resume":{"post":{"$ref":"#/components/pathItems/v1-projects--projectId--addons--addonId--resume-post"}},"/v1/teams/{teamId}/projects/{projectId}/addons/{addonId}/resume":{"post":{"$ref":"#/components/pathItems/v1-projects--projectId--addons--addonId--resume-post-team-scoped"}},"/v1/projects/{projectId}/addons/{addonId}/scale":{"post":{"$ref":"#/components/pathItems/v1-projects--projectId--addons--addonId--scale-post"}},"/v1/teams/{teamId}/projects/{projectId}/addons/{addonId}/scale":{"post":{"$ref":"#/components/pathItems/v1-projects--projectId--addons--addonId--scale-post-team-scoped"}},"/v1/projects/{projectId}/addons/{addonId}/security":{"post":{"$ref":"#/components/pathItems/v1-projects--projectId--addons--addonId--security-post"}},"/v1/teams/{teamId}/projects/{projectId}/addons/{addonId}/security":{"post":{"$ref":"#/components/pathItems/v1-projects--projectId--addons--addonId--security-post-team-scoped"}},"/v1/projects/{projectId}/addons/{addonId}/version":{"get":{"$ref":"#/components/pathItems/v1-projects--projectId--addons--addonId--version-get"},"post":{"$ref":"#/components/pathItems/v1-projects--projectId--addons--addonId--version-post"}},"/v1/teams/{teamId}/projects/{projectId}/addons/{addonId}/version":{"get":{"$ref":"#/components/pathItems/v1-projects--projectId--addons--addonId--version-get-team-scoped"},"post":{"$ref":"#/components/pathItems/v1-projects--projectId--addons--addonId--version-post-team-scoped"}},"/v1/projects/{projectId}/external-addons":{"get":{"$ref":"#/components/pathItems/v1-projects--projectId--external-addons-get"},"post":{"$ref":"#/components/pathItems/v1-projects--projectId--external-addons-post"}},"/v1/teams/{teamId}/projects/{projectId}/external-addons":{"get":{"$ref":"#/components/pathItems/v1-projects--projectId--external-addons-get-team-scoped"},"post":{"$ref":"#/components/pathItems/v1-projects--projectId--external-addons-post-team-scoped"}},"/v1/projects/{projectId}/external-addons/{externalAddonId}":{"get":{"$ref":"#/components/pathItems/v1-projects--projectId--external-addons--externalAddonId--get"},"patch":{"$ref":"#/components/pathItems/v1-projects--projectId--external-addons--externalAddonId--patch"},"delete":{"$ref":"#/components/pathItems/v1-projects--projectId--external-addons--externalAddonId--delete"}},"/v1/teams/{teamId}/projects/{projectId}/external-addons/{externalAddonId}":{"get":{"$ref":"#/components/pathItems/v1-projects--projectId--external-addons--externalAddonId--get-team-scoped"},"patch":{"$ref":"#/components/pathItems/v1-projects--projectId--external-addons--externalAddonId--patch-team-scoped"},"delete":{"$ref":"#/components/pathItems/v1-projects--projectId--external-addons--externalAddonId--delete-team-scoped"}},"/v1/projects/{projectId}/jobs":{"get":{"$ref":"#/components/pathItems/v1-projects--projectId--jobs-get"},"post":{"$ref":"#/components/pathItems/v1-projects--projectId--jobs-post"},"put":{"$ref":"#/components/pathItems/v1-projects--projectId--jobs-put"}},"/v1/teams/{teamId}/projects/{projectId}/jobs":{"get":{"$ref":"#/components/pathItems/v1-projects--projectId--jobs-get-team-scoped"},"post":{"$ref":"#/components/pathItems/v1-projects--projectId--jobs-post-team-scoped"},"put":{"$ref":"#/components/pathItems/v1-projects--projectId--jobs-put-team-scoped"}},"/v1/projects/{projectId}/jobs/cron":{"post":{"$ref":"#/components/pathItems/v1-projects--projectId--jobs-cron-post"},"put":{"$ref":"#/components/pathItems/v1-projects--projectId--jobs-cron-put"}},"/v1/teams/{teamId}/projects/{projectId}/jobs/cron":{"post":{"$ref":"#/components/pathItems/v1-projects--projectId--jobs-cron-post-team-scoped"},"put":{"$ref":"#/components/pathItems/v1-projects--projectId--jobs-cron-put-team-scoped"}},"/v1/projects/{projectId}/jobs/cron/{jobId}":{"patch":{"$ref":"#/components/pathItems/v1-projects--projectId--jobs-cron--jobId--patch"}},"/v1/teams/{teamId}/projects/{projectId}/jobs/cron/{jobId}":{"patch":{"$ref":"#/components/pathItems/v1-projects--projectId--jobs-cron--jobId--patch-team-scoped"}},"/v1/projects/{projectId}/jobs/manual":{"post":{"$ref":"#/components/pathItems/v1-projects--projectId--jobs-manual-post"},"put":{"$ref":"#/components/pathItems/v1-projects--projectId--jobs-manual-put"}},"/v1/teams/{teamId}/projects/{projectId}/jobs/manual":{"post":{"$ref":"#/components/pathItems/v1-projects--projectId--jobs-manual-post-team-scoped"},"put":{"$ref":"#/components/pathItems/v1-projects--projectId--jobs-manual-put-team-scoped"}},"/v1/projects/{projectId}/jobs/manual/{jobId}":{"patch":{"$ref":"#/components/pathItems/v1-projects--projectId--jobs-manual--jobId--patch"}},"/v1/teams/{teamId}/projects/{projectId}/jobs/manual/{jobId}":{"patch":{"$ref":"#/components/pathItems/v1-projects--projectId--jobs-manual--jobId--patch-team-scoped"}},"/v1/projects/{projectId}/jobs/{jobId}":{"get":{"$ref":"#/components/pathItems/v1-projects--projectId--jobs--jobId--get"},"patch":{"$ref":"#/components/pathItems/v1-projects--projectId--jobs--jobId--patch"},"delete":{"$ref":"#/components/pathItems/v1-projects--projectId--jobs--jobId--delete"}},"/v1/teams/{teamId}/projects/{projectId}/jobs/{jobId}":{"get":{"$ref":"#/components/pathItems/v1-projects--projectId--jobs--jobId--get-team-scoped"},"patch":{"$ref":"#/components/pathItems/v1-projects--projectId--jobs--jobId--patch-team-scoped"},"delete":{"$ref":"#/components/pathItems/v1-projects--projectId--jobs--jobId--delete-team-scoped"}},"/v1/projects/{projectId}/jobs/{jobId}/branches":{"get":{"$ref":"#/components/pathItems/v1-projects--projectId--jobs--jobId--branches-get"}},"/v1/teams/{teamId}/projects/{projectId}/jobs/{jobId}/branches":{"get":{"$ref":"#/components/pathItems/v1-projects--projectId--jobs--jobId--branches-get-team-scoped"}},"/v1/projects/{projectId}/jobs/{jobId}/build":{"get":{"$ref":"#/components/pathItems/v1-projects--projectId--jobs--jobId--build-get"},"post":{"$ref":"#/components/pathItems/v1-projects--projectId--jobs--jobId--build-post"}},"/v1/teams/{teamId}/projects/{projectId}/jobs/{jobId}/build":{"get":{"$ref":"#/components/pathItems/v1-projects--projectId--jobs--jobId--build-get-team-scoped"},"post":{"$ref":"#/components/pathItems/v1-projects--projectId--jobs--jobId--build-post-team-scoped"}},"/v1/projects/{projectId}/jobs/{jobId}/build-arguments":{"get":{"$ref":"#/components/pathItems/v1-projects--projectId--jobs--jobId--build-arguments-get"},"post":{"$ref":"#/components/pathItems/v1-projects--projectId--jobs--jobId--build-arguments-post"}},"/v1/teams/{teamId}/projects/{projectId}/jobs/{jobId}/build-arguments":{"get":{"$ref":"#/components/pathItems/v1-projects--projectId--jobs--jobId--build-arguments-get-team-scoped"},"post":{"$ref":"#/components/pathItems/v1-projects--projectId--jobs--jobId--build-arguments-post-team-scoped"}},"/v1/projects/{projectId}/jobs/{jobId}/build-arguments/details":{"get":{"$ref":"#/components/pathItems/v1-projects--projectId--jobs--jobId--build-arguments-details-get"}},"/v1/teams/{teamId}/projects/{projectId}/jobs/{jobId}/build-arguments/details":{"get":{"$ref":"#/components/pathItems/v1-projects--projectId--jobs--jobId--build-arguments-details-get-team-scoped"}},"/v1/projects/{projectId}/jobs/{jobId}/build-logs":{"get":{"$ref":"#/components/pathItems/v1-projects--projectId--jobs--jobId--build-logs-get"}},"/v1/teams/{teamId}/projects/{projectId}/jobs/{jobId}/build-logs":{"get":{"$ref":"#/components/pathItems/v1-projects--projectId--jobs--jobId--build-logs-get-team-scoped"}},"/v1/projects/{projectId}/jobs/{jobId}/build-metrics":{"get":{"$ref":"#/components/pathItems/v1-projects--projectId--jobs--jobId--build-metrics-get"}},"/v1/teams/{teamId}/projects/{projectId}/jobs/{jobId}/build-metrics":{"get":{"$ref":"#/components/pathItems/v1-projects--projectId--jobs--jobId--build-metrics-get-team-scoped"}},"/v1/projects/{projectId}/jobs/{jobId}/build-options":{"post":{"$ref":"#/components/pathItems/v1-projects--projectId--jobs--jobId--build-options-post"}},"/v1/teams/{teamId}/projects/{projectId}/jobs/{jobId}/build-options":{"post":{"$ref":"#/components/pathItems/v1-projects--projectId--jobs--jobId--build-options-post-team-scoped"}},"/v1/projects/{projectId}/jobs/{jobId}/build-source":{"post":{"$ref":"#/components/pathItems/v1-projects--projectId--jobs--jobId--build-source-post"}},"/v1/teams/{teamId}/projects/{projectId}/jobs/{jobId}/build-source":{"post":{"$ref":"#/components/pathItems/v1-projects--projectId--jobs--jobId--build-source-post-team-scoped"}},"/v1/projects/{projectId}/jobs/{jobId}/build/{buildId}":{"get":{"$ref":"#/components/pathItems/v1-projects--projectId--jobs--jobId--build--buildId--get"},"delete":{"$ref":"#/components/pathItems/v1-projects--projectId--jobs--jobId--build--buildId--delete"}},"/v1/teams/{teamId}/projects/{projectId}/jobs/{jobId}/build/{buildId}":{"get":{"$ref":"#/components/pathItems/v1-projects--projectId--jobs--jobId--build--buildId--get-team-scoped"},"delete":{"$ref":"#/components/pathItems/v1-projects--projectId--jobs--jobId--build--buildId--delete-team-scoped"}},"/v1/projects/{projectId}/jobs/{jobId}/containers":{"get":{"$ref":"#/components/pathItems/v1-projects--projectId--jobs--jobId--containers-get"}},"/v1/teams/{teamId}/projects/{projectId}/jobs/{jobId}/containers":{"get":{"$ref":"#/components/pathItems/v1-projects--projectId--jobs--jobId--containers-get-team-scoped"}},"/v1/projects/{projectId}/jobs/{jobId}/deployment":{"get":{"$ref":"#/components/pathItems/v1-projects--projectId--jobs--jobId--deployment-get"},"post":{"$ref":"#/components/pathItems/v1-projects--projectId--jobs--jobId--deployment-post"}},"/v1/teams/{teamId}/projects/{projectId}/jobs/{jobId}/deployment":{"get":{"$ref":"#/components/pathItems/v1-projects--projectId--jobs--jobId--deployment-get-team-scoped"},"post":{"$ref":"#/components/pathItems/v1-projects--projectId--jobs--jobId--deployment-post-team-scoped"}},"/v1/projects/{projectId}/jobs/{jobId}/health-checks":{"get":{"$ref":"#/components/pathItems/v1-projects--projectId--jobs--jobId--health-checks-get"},"post":{"$ref":"#/components/pathItems/v1-projects--projectId--jobs--jobId--health-checks-post"}},"/v1/teams/{teamId}/projects/{projectId}/jobs/{jobId}/health-checks":{"get":{"$ref":"#/components/pathItems/v1-projects--projectId--jobs--jobId--health-checks-get-team-scoped"},"post":{"$ref":"#/components/pathItems/v1-projects--projectId--jobs--jobId--health-checks-post-team-scoped"}},"/v1/projects/{projectId}/jobs/{jobId}/logs":{"get":{"$ref":"#/components/pathItems/v1-projects--projectId--jobs--jobId--logs-get"}},"/v1/teams/{teamId}/projects/{projectId}/jobs/{jobId}/logs":{"get":{"$ref":"#/components/pathItems/v1-projects--projectId--jobs--jobId--logs-get-team-scoped"}},"/v1/projects/{projectId}/jobs/{jobId}/metrics":{"get":{"$ref":"#/components/pathItems/v1-projects--projectId--jobs--jobId--metrics-get"}},"/v1/teams/{teamId}/projects/{projectId}/jobs/{jobId}/metrics":{"get":{"$ref":"#/components/pathItems/v1-projects--projectId--jobs--jobId--metrics-get-team-scoped"}},"/v1/projects/{projectId}/jobs/{jobId}/pause":{"post":{"$ref":"#/components/pathItems/v1-projects--projectId--jobs--jobId--pause-post"}},"/v1/teams/{teamId}/projects/{projectId}/jobs/{jobId}/pause":{"post":{"$ref":"#/components/pathItems/v1-projects--projectId--jobs--jobId--pause-post-team-scoped"}},"/v1/projects/{projectId}/jobs/{jobId}/pull-requests":{"get":{"$ref":"#/components/pathItems/v1-projects--projectId--jobs--jobId--pull-requests-get"}},"/v1/teams/{teamId}/projects/{projectId}/jobs/{jobId}/pull-requests":{"get":{"$ref":"#/components/pathItems/v1-projects--projectId--jobs--jobId--pull-requests-get-team-scoped"}},"/v1/projects/{projectId}/jobs/{jobId}/resume":{"post":{"$ref":"#/components/pathItems/v1-projects--projectId--jobs--jobId--resume-post"}},"/v1/teams/{teamId}/projects/{projectId}/jobs/{jobId}/resume":{"post":{"$ref":"#/components/pathItems/v1-projects--projectId--jobs--jobId--resume-post-team-scoped"}},"/v1/projects/{projectId}/jobs/{jobId}/runs":{"get":{"$ref":"#/components/pathItems/v1-projects--projectId--jobs--jobId--runs-get"},"post":{"$ref":"#/components/pathItems/v1-projects--projectId--jobs--jobId--runs-post"}},"/v1/teams/{teamId}/projects/{projectId}/jobs/{jobId}/runs":{"get":{"$ref":"#/components/pathItems/v1-projects--projectId--jobs--jobId--runs-get-team-scoped"},"post":{"$ref":"#/components/pathItems/v1-projects--projectId--jobs--jobId--runs-post-team-scoped"}},"/v1/projects/{projectId}/jobs/{jobId}/runs/{runId}":{"get":{"$ref":"#/components/pathItems/v1-projects--projectId--jobs--jobId--runs--runId--get"},"delete":{"$ref":"#/components/pathItems/v1-projects--projectId--jobs--jobId--runs--runId--delete"}},"/v1/teams/{teamId}/projects/{projectId}/jobs/{jobId}/runs/{runId}":{"get":{"$ref":"#/components/pathItems/v1-projects--projectId--jobs--jobId--runs--runId--get-team-scoped"},"delete":{"$ref":"#/components/pathItems/v1-projects--projectId--jobs--jobId--runs--runId--delete-team-scoped"}},"/v1/projects/{projectId}/jobs/{jobId}/runtime-environment":{"get":{"$ref":"#/components/pathItems/v1-projects--projectId--jobs--jobId--runtime-environment-get"},"post":{"$ref":"#/components/pathItems/v1-projects--projectId--jobs--jobId--runtime-environment-post"}},"/v1/teams/{teamId}/projects/{projectId}/jobs/{jobId}/runtime-environment":{"get":{"$ref":"#/components/pathItems/v1-projects--projectId--jobs--jobId--runtime-environment-get-team-scoped"},"post":{"$ref":"#/components/pathItems/v1-projects--projectId--jobs--jobId--runtime-environment-post-team-scoped"}},"/v1/projects/{projectId}/jobs/{jobId}/runtime-environment/details":{"get":{"$ref":"#/components/pathItems/v1-projects--projectId--jobs--jobId--runtime-environment-details-get"}},"/v1/teams/{teamId}/projects/{projectId}/jobs/{jobId}/runtime-environment/details":{"get":{"$ref":"#/components/pathItems/v1-projects--projectId--jobs--jobId--runtime-environment-details-get-team-scoped"}},"/v1/projects/{projectId}/jobs/{jobId}/scale":{"post":{"$ref":"#/components/pathItems/v1-projects--projectId--jobs--jobId--scale-post"}},"/v1/teams/{teamId}/projects/{projectId}/jobs/{jobId}/scale":{"post":{"$ref":"#/components/pathItems/v1-projects--projectId--jobs--jobId--scale-post-team-scoped"}},"/v1/projects/{projectId}/jobs/{jobId}/settings":{"post":{"$ref":"#/components/pathItems/v1-projects--projectId--jobs--jobId--settings-post"}},"/v1/teams/{teamId}/projects/{projectId}/jobs/{jobId}/settings":{"post":{"$ref":"#/components/pathItems/v1-projects--projectId--jobs--jobId--settings-post-team-scoped"}},"/v1/projects/{projectId}/jobs/{jobId}/suspend":{"post":{"$ref":"#/components/pathItems/v1-projects--projectId--jobs--jobId--suspend-post"}},"/v1/teams/{teamId}/projects/{projectId}/jobs/{jobId}/suspend":{"post":{"$ref":"#/components/pathItems/v1-projects--projectId--jobs--jobId--suspend-post-team-scoped"}},"/v1/projects/{projectId}/llm-model-deployments":{"get":{"$ref":"#/components/pathItems/v1-projects--projectId--llm-model-deployments-get"},"post":{"$ref":"#/components/pathItems/v1-projects--projectId--llm-model-deployments-post"}},"/v1/teams/{teamId}/projects/{projectId}/llm-model-deployments":{"get":{"$ref":"#/components/pathItems/v1-projects--projectId--llm-model-deployments-get-team-scoped"},"post":{"$ref":"#/components/pathItems/v1-projects--projectId--llm-model-deployments-post-team-scoped"}},"/v1/projects/{projectId}/llm-model-deployments/{llmModelDeploymentId}":{"get":{"$ref":"#/components/pathItems/v1-projects--projectId--llm-model-deployments--llmModelDeploymentId--get"},"post":{"$ref":"#/components/pathItems/v1-projects--projectId--llm-model-deployments--llmModelDeploymentId--post"},"delete":{"$ref":"#/components/pathItems/v1-projects--projectId--llm-model-deployments--llmModelDeploymentId--delete"}},"/v1/teams/{teamId}/projects/{projectId}/llm-model-deployments/{llmModelDeploymentId}":{"get":{"$ref":"#/components/pathItems/v1-projects--projectId--llm-model-deployments--llmModelDeploymentId--get-team-scoped"},"post":{"$ref":"#/components/pathItems/v1-projects--projectId--llm-model-deployments--llmModelDeploymentId--post-team-scoped"},"delete":{"$ref":"#/components/pathItems/v1-projects--projectId--llm-model-deployments--llmModelDeploymentId--delete-team-scoped"}},"/v1/projects/{projectId}/pipelines":{"get":{"$ref":"#/components/pathItems/v1-projects--projectId--pipelines-get"}},"/v1/teams/{teamId}/projects/{projectId}/pipelines":{"get":{"$ref":"#/components/pathItems/v1-projects--projectId--pipelines-get-team-scoped"}},"/v1/projects/{projectId}/pipelines/{pipelineId}":{"get":{"$ref":"#/components/pathItems/v1-projects--projectId--pipelines--pipelineId--get"}},"/v1/teams/{teamId}/projects/{projectId}/pipelines/{pipelineId}":{"get":{"$ref":"#/components/pathItems/v1-projects--projectId--pipelines--pipelineId--get-team-scoped"}},"/v1/projects/{projectId}/pipelines/{pipelineId}/preview-envs":{"get":{"$ref":"#/components/pathItems/v1-projects--projectId--pipelines--pipelineId--preview-envs-get"},"post":{"$ref":"#/components/pathItems/v1-projects--projectId--pipelines--pipelineId--preview-envs-post"}},"/v1/teams/{teamId}/projects/{projectId}/pipelines/{pipelineId}/preview-envs":{"get":{"$ref":"#/components/pathItems/v1-projects--projectId--pipelines--pipelineId--preview-envs-get-team-scoped"},"post":{"$ref":"#/components/pathItems/v1-projects--projectId--pipelines--pipelineId--preview-envs-post-team-scoped"}},"/v1/projects/{projectId}/pipelines/{pipelineId}/preview-envs/previews":{"get":{"$ref":"#/components/pathItems/v1-projects--projectId--pipelines--pipelineId--preview-envs-previews-get"}},"/v1/teams/{teamId}/projects/{projectId}/pipelines/{pipelineId}/preview-envs/previews":{"get":{"$ref":"#/components/pathItems/v1-projects--projectId--pipelines--pipelineId--preview-envs-previews-get-team-scoped"}},"/v1/projects/{projectId}/pipelines/{pipelineId}/preview-envs/previews/{previewId}":{"delete":{"$ref":"#/components/pathItems/v1-projects--projectId--pipelines--pipelineId--preview-envs-previews--previewId--delete"}},"/v1/teams/{teamId}/projects/{projectId}/pipelines/{pipelineId}/preview-envs/previews/{previewId}":{"delete":{"$ref":"#/components/pathItems/v1-projects--projectId--pipelines--pipelineId--preview-envs-previews--previewId--delete-team-scoped"}},"/v1/projects/{projectId}/pipelines/{pipelineId}/preview-envs/runs":{"post":{"$ref":"#/components/pathItems/v1-projects--projectId--pipelines--pipelineId--preview-envs-runs-post"},"get":{"$ref":"#/components/pathItems/v1-projects--projectId--pipelines--pipelineId--preview-envs-runs-get"}},"/v1/teams/{teamId}/projects/{projectId}/pipelines/{pipelineId}/preview-envs/runs":{"post":{"$ref":"#/components/pathItems/v1-projects--projectId--pipelines--pipelineId--preview-envs-runs-post-team-scoped"},"get":{"$ref":"#/components/pathItems/v1-projects--projectId--pipelines--pipelineId--preview-envs-runs-get-team-scoped"}},"/v1/projects/{projectId}/pipelines/{pipelineId}/preview-envs/runs/{templateRunId}":{"get":{"$ref":"#/components/pathItems/v1-projects--projectId--pipelines--pipelineId--preview-envs-runs--templateRunId--get"}},"/v1/teams/{teamId}/projects/{projectId}/pipelines/{pipelineId}/preview-envs/runs/{templateRunId}":{"get":{"$ref":"#/components/pathItems/v1-projects--projectId--pipelines--pipelineId--preview-envs-runs--templateRunId--get-team-scoped"}},"/v1/projects/{projectId}/pipelines/{pipelineId}/release-flows/{stage}":{"get":{"$ref":"#/components/pathItems/v1-projects--projectId--pipelines--pipelineId--release-flows--stage--get"},"post":{"$ref":"#/components/pathItems/v1-projects--projectId--pipelines--pipelineId--release-flows--stage--post"}},"/v1/teams/{teamId}/projects/{projectId}/pipelines/{pipelineId}/release-flows/{stage}":{"get":{"$ref":"#/components/pathItems/v1-projects--projectId--pipelines--pipelineId--release-flows--stage--get-team-scoped"},"post":{"$ref":"#/components/pathItems/v1-projects--projectId--pipelines--pipelineId--release-flows--stage--post-team-scoped"}},"/v1/projects/{projectId}/pipelines/{pipelineId}/release-flows/{stage}/runs":{"post":{"$ref":"#/components/pathItems/v1-projects--projectId--pipelines--pipelineId--release-flows--stage--runs-post"},"get":{"$ref":"#/components/pathItems/v1-projects--projectId--pipelines--pipelineId--release-flows--stage--runs-get"}},"/v1/teams/{teamId}/projects/{projectId}/pipelines/{pipelineId}/release-flows/{stage}/runs":{"post":{"$ref":"#/components/pathItems/v1-projects--projectId--pipelines--pipelineId--release-flows--stage--runs-post-team-scoped"},"get":{"$ref":"#/components/pathItems/v1-projects--projectId--pipelines--pipelineId--release-flows--stage--runs-get-team-scoped"}},"/v1/projects/{projectId}/pipelines/{pipelineId}/release-flows/{stage}/runs/{runId}":{"get":{"$ref":"#/components/pathItems/v1-projects--projectId--pipelines--pipelineId--release-flows--stage--runs--runId--get"}},"/v1/teams/{teamId}/projects/{projectId}/pipelines/{pipelineId}/release-flows/{stage}/runs/{runId}":{"get":{"$ref":"#/components/pathItems/v1-projects--projectId--pipelines--pipelineId--release-flows--stage--runs--runId--get-team-scoped"}},"/v1/projects/{projectId}/pipelines/{pipelineId}/release-flows/{stage}/runs/{runId}/abort":{"post":{"$ref":"#/components/pathItems/v1-projects--projectId--pipelines--pipelineId--release-flows--stage--runs--runId--abort-post"}},"/v1/teams/{teamId}/projects/{projectId}/pipelines/{pipelineId}/release-flows/{stage}/runs/{runId}/abort":{"post":{"$ref":"#/components/pathItems/v1-projects--projectId--pipelines--pipelineId--release-flows--stage--runs--runId--abort-post-team-scoped"}},"/v1/projects/{projectId}/preview-blueprints":{"get":{"$ref":"#/components/pathItems/v1-projects--projectId--preview-blueprints-get"},"post":{"$ref":"#/components/pathItems/v1-projects--projectId--preview-blueprints-post"}},"/v1/teams/{teamId}/projects/{projectId}/preview-blueprints":{"get":{"$ref":"#/components/pathItems/v1-projects--projectId--preview-blueprints-get-team-scoped"},"post":{"$ref":"#/components/pathItems/v1-projects--projectId--preview-blueprints-post-team-scoped"}},"/v1/projects/{projectId}/preview-blueprints/{previewBlueprintId}":{"get":{"$ref":"#/components/pathItems/v1-projects--projectId--preview-blueprints--previewBlueprintId--get"},"post":{"$ref":"#/components/pathItems/v1-projects--projectId--preview-blueprints--previewBlueprintId--post"},"delete":{"$ref":"#/components/pathItems/v1-projects--projectId--preview-blueprints--previewBlueprintId--delete"}},"/v1/teams/{teamId}/projects/{projectId}/preview-blueprints/{previewBlueprintId}":{"get":{"$ref":"#/components/pathItems/v1-projects--projectId--preview-blueprints--previewBlueprintId--get-team-scoped"},"post":{"$ref":"#/components/pathItems/v1-projects--projectId--preview-blueprints--previewBlueprintId--post-team-scoped"},"delete":{"$ref":"#/components/pathItems/v1-projects--projectId--preview-blueprints--previewBlueprintId--delete-team-scoped"}},"/v1/projects/{projectId}/preview-blueprints/{previewBlueprintId}/previews":{"get":{"$ref":"#/components/pathItems/v1-projects--projectId--preview-blueprints--previewBlueprintId--previews-get"}},"/v1/teams/{teamId}/projects/{projectId}/preview-blueprints/{previewBlueprintId}/previews":{"get":{"$ref":"#/components/pathItems/v1-projects--projectId--preview-blueprints--previewBlueprintId--previews-get-team-scoped"}},"/v1/projects/{projectId}/preview-blueprints/{previewBlueprintId}/previews/{previewId}":{"delete":{"$ref":"#/components/pathItems/v1-projects--projectId--preview-blueprints--previewBlueprintId--previews--previewId--delete"}},"/v1/teams/{teamId}/projects/{projectId}/preview-blueprints/{previewBlueprintId}/previews/{previewId}":{"delete":{"$ref":"#/components/pathItems/v1-projects--projectId--preview-blueprints--previewBlueprintId--previews--previewId--delete-team-scoped"}},"/v1/projects/{projectId}/preview-blueprints/{previewBlueprintId}/previews/{previewId}/pause":{"post":{"$ref":"#/components/pathItems/v1-projects--projectId--preview-blueprints--previewBlueprintId--previews--previewId--pause-post"}},"/v1/teams/{teamId}/projects/{projectId}/preview-blueprints/{previewBlueprintId}/previews/{previewId}/pause":{"post":{"$ref":"#/components/pathItems/v1-projects--projectId--preview-blueprints--previewBlueprintId--previews--previewId--pause-post-team-scoped"}},"/v1/projects/{projectId}/preview-blueprints/{previewBlueprintId}/previews/{previewId}/reset":{"post":{"$ref":"#/components/pathItems/v1-projects--projectId--preview-blueprints--previewBlueprintId--previews--previewId--reset-post"}},"/v1/teams/{teamId}/projects/{projectId}/preview-blueprints/{previewBlueprintId}/previews/{previewId}/reset":{"post":{"$ref":"#/components/pathItems/v1-projects--projectId--preview-blueprints--previewBlueprintId--previews--previewId--reset-post-team-scoped"}},"/v1/projects/{projectId}/preview-blueprints/{previewBlueprintId}/previews/{previewId}/resume":{"post":{"$ref":"#/components/pathItems/v1-projects--projectId--preview-blueprints--previewBlueprintId--previews--previewId--resume-post"}},"/v1/teams/{teamId}/projects/{projectId}/preview-blueprints/{previewBlueprintId}/previews/{previewId}/resume":{"post":{"$ref":"#/components/pathItems/v1-projects--projectId--preview-blueprints--previewBlueprintId--previews--previewId--resume-post-team-scoped"}},"/v1/projects/{projectId}/preview-blueprints/{previewBlueprintId}/runs":{"post":{"$ref":"#/components/pathItems/v1-projects--projectId--preview-blueprints--previewBlueprintId--runs-post"},"get":{"$ref":"#/components/pathItems/v1-projects--projectId--preview-blueprints--previewBlueprintId--runs-get"}},"/v1/teams/{teamId}/projects/{projectId}/preview-blueprints/{previewBlueprintId}/runs":{"post":{"$ref":"#/components/pathItems/v1-projects--projectId--preview-blueprints--previewBlueprintId--runs-post-team-scoped"},"get":{"$ref":"#/components/pathItems/v1-projects--projectId--preview-blueprints--previewBlueprintId--runs-get-team-scoped"}},"/v1/projects/{projectId}/preview-blueprints/{previewBlueprintId}/runs/{runId}":{"get":{"$ref":"#/components/pathItems/v1-projects--projectId--preview-blueprints--previewBlueprintId--runs--runId--get"}},"/v1/teams/{teamId}/projects/{projectId}/preview-blueprints/{previewBlueprintId}/runs/{runId}":{"get":{"$ref":"#/components/pathItems/v1-projects--projectId--preview-blueprints--previewBlueprintId--runs--runId--get-team-scoped"}},"/v1/projects/{projectId}/preview-blueprints/{previewBlueprintId}/runs/{runId}/abort":{"post":{"$ref":"#/components/pathItems/v1-projects--projectId--preview-blueprints--previewBlueprintId--runs--runId--abort-post"}},"/v1/teams/{teamId}/projects/{projectId}/preview-blueprints/{previewBlueprintId}/runs/{runId}/abort":{"post":{"$ref":"#/components/pathItems/v1-projects--projectId--preview-blueprints--previewBlueprintId--runs--runId--abort-post-team-scoped"}},"/v1/projects/{projectId}/secrets":{"get":{"$ref":"#/components/pathItems/v1-projects--projectId--secrets-get"},"post":{"$ref":"#/components/pathItems/v1-projects--projectId--secrets-post"},"put":{"$ref":"#/components/pathItems/v1-projects--projectId--secrets-put"}},"/v1/teams/{teamId}/projects/{projectId}/secrets":{"get":{"$ref":"#/components/pathItems/v1-projects--projectId--secrets-get-team-scoped"},"post":{"$ref":"#/components/pathItems/v1-projects--projectId--secrets-post-team-scoped"},"put":{"$ref":"#/components/pathItems/v1-projects--projectId--secrets-put-team-scoped"}},"/v1/projects/{projectId}/secrets/{secretId}":{"patch":{"$ref":"#/components/pathItems/v1-projects--projectId--secrets--secretId--patch"},"get":{"$ref":"#/components/pathItems/v1-projects--projectId--secrets--secretId--get"},"delete":{"$ref":"#/components/pathItems/v1-projects--projectId--secrets--secretId--delete"},"post":{"$ref":"#/components/pathItems/v1-projects--projectId--secrets--secretId--post"}},"/v1/teams/{teamId}/projects/{projectId}/secrets/{secretId}":{"patch":{"$ref":"#/components/pathItems/v1-projects--projectId--secrets--secretId--patch-team-scoped"},"get":{"$ref":"#/components/pathItems/v1-projects--projectId--secrets--secretId--get-team-scoped"},"delete":{"$ref":"#/components/pathItems/v1-projects--projectId--secrets--secretId--delete-team-scoped"},"post":{"$ref":"#/components/pathItems/v1-projects--projectId--secrets--secretId--post-team-scoped"}},"/v1/projects/{projectId}/secrets/{secretId}/addons/{addonId}":{"post":{"$ref":"#/components/pathItems/v1-projects--projectId--secrets--secretId--addons--addonId--post"},"get":{"$ref":"#/components/pathItems/v1-projects--projectId--secrets--secretId--addons--addonId--get"},"delete":{"$ref":"#/components/pathItems/v1-projects--projectId--secrets--secretId--addons--addonId--delete"}},"/v1/teams/{teamId}/projects/{projectId}/secrets/{secretId}/addons/{addonId}":{"post":{"$ref":"#/components/pathItems/v1-projects--projectId--secrets--secretId--addons--addonId--post-team-scoped"},"get":{"$ref":"#/components/pathItems/v1-projects--projectId--secrets--secretId--addons--addonId--get-team-scoped"},"delete":{"$ref":"#/components/pathItems/v1-projects--projectId--secrets--secretId--addons--addonId--delete-team-scoped"}},"/v1/projects/{projectId}/secrets/{secretId}/details":{"get":{"$ref":"#/components/pathItems/v1-projects--projectId--secrets--secretId--details-get"}},"/v1/teams/{teamId}/projects/{projectId}/secrets/{secretId}/details":{"get":{"$ref":"#/components/pathItems/v1-projects--projectId--secrets--secretId--details-get-team-scoped"}},"/v1/projects/{projectId}/services":{"get":{"$ref":"#/components/pathItems/v1-projects--projectId--services-get"}},"/v1/teams/{teamId}/projects/{projectId}/services":{"get":{"$ref":"#/components/pathItems/v1-projects--projectId--services-get-team-scoped"}},"/v1/projects/{projectId}/services/build":{"post":{"$ref":"#/components/pathItems/v1-projects--projectId--services-build-post"},"put":{"$ref":"#/components/pathItems/v1-projects--projectId--services-build-put"}},"/v1/teams/{teamId}/projects/{projectId}/services/build":{"post":{"$ref":"#/components/pathItems/v1-projects--projectId--services-build-post-team-scoped"},"put":{"$ref":"#/components/pathItems/v1-projects--projectId--services-build-put-team-scoped"}},"/v1/projects/{projectId}/services/build/{serviceId}":{"patch":{"$ref":"#/components/pathItems/v1-projects--projectId--services-build--serviceId--patch"}},"/v1/teams/{teamId}/projects/{projectId}/services/build/{serviceId}":{"patch":{"$ref":"#/components/pathItems/v1-projects--projectId--services-build--serviceId--patch-team-scoped"}},"/v1/projects/{projectId}/services/combined":{"post":{"$ref":"#/components/pathItems/v1-projects--projectId--services-combined-post"},"put":{"$ref":"#/components/pathItems/v1-projects--projectId--services-combined-put"}},"/v1/teams/{teamId}/projects/{projectId}/services/combined":{"post":{"$ref":"#/components/pathItems/v1-projects--projectId--services-combined-post-team-scoped"},"put":{"$ref":"#/components/pathItems/v1-projects--projectId--services-combined-put-team-scoped"}},"/v1/projects/{projectId}/services/combined/{serviceId}":{"patch":{"$ref":"#/components/pathItems/v1-projects--projectId--services-combined--serviceId--patch"}},"/v1/teams/{teamId}/projects/{projectId}/services/combined/{serviceId}":{"patch":{"$ref":"#/components/pathItems/v1-projects--projectId--services-combined--serviceId--patch-team-scoped"}},"/v1/projects/{projectId}/services/deployment":{"post":{"$ref":"#/components/pathItems/v1-projects--projectId--services-deployment-post"},"put":{"$ref":"#/components/pathItems/v1-projects--projectId--services-deployment-put"}},"/v1/teams/{teamId}/projects/{projectId}/services/deployment":{"post":{"$ref":"#/components/pathItems/v1-projects--projectId--services-deployment-post-team-scoped"},"put":{"$ref":"#/components/pathItems/v1-projects--projectId--services-deployment-put-team-scoped"}},"/v1/projects/{projectId}/services/deployment/{serviceId}":{"patch":{"$ref":"#/components/pathItems/v1-projects--projectId--services-deployment--serviceId--patch"}},"/v1/teams/{teamId}/projects/{projectId}/services/deployment/{serviceId}":{"patch":{"$ref":"#/components/pathItems/v1-projects--projectId--services-deployment--serviceId--patch-team-scoped"}},"/v1/projects/{projectId}/services/{serviceId}":{"get":{"$ref":"#/components/pathItems/v1-projects--projectId--services--serviceId--get"},"delete":{"$ref":"#/components/pathItems/v1-projects--projectId--services--serviceId--delete"}},"/v1/teams/{teamId}/projects/{projectId}/services/{serviceId}":{"get":{"$ref":"#/components/pathItems/v1-projects--projectId--services--serviceId--get-team-scoped"},"delete":{"$ref":"#/components/pathItems/v1-projects--projectId--services--serviceId--delete-team-scoped"}},"/v1/projects/{projectId}/services/{serviceId}/branches":{"get":{"$ref":"#/components/pathItems/v1-projects--projectId--services--serviceId--branches-get"}},"/v1/teams/{teamId}/projects/{projectId}/services/{serviceId}/branches":{"get":{"$ref":"#/components/pathItems/v1-projects--projectId--services--serviceId--branches-get-team-scoped"}},"/v1/projects/{projectId}/services/{serviceId}/build":{"get":{"$ref":"#/components/pathItems/v1-projects--projectId--services--serviceId--build-get"},"post":{"$ref":"#/components/pathItems/v1-projects--projectId--services--serviceId--build-post"}},"/v1/teams/{teamId}/projects/{projectId}/services/{serviceId}/build":{"get":{"$ref":"#/components/pathItems/v1-projects--projectId--services--serviceId--build-get-team-scoped"},"post":{"$ref":"#/components/pathItems/v1-projects--projectId--services--serviceId--build-post-team-scoped"}},"/v1/projects/{projectId}/services/{serviceId}/build-arguments":{"get":{"$ref":"#/components/pathItems/v1-projects--projectId--services--serviceId--build-arguments-get"},"post":{"$ref":"#/components/pathItems/v1-projects--projectId--services--serviceId--build-arguments-post"}},"/v1/teams/{teamId}/projects/{projectId}/services/{serviceId}/build-arguments":{"get":{"$ref":"#/components/pathItems/v1-projects--projectId--services--serviceId--build-arguments-get-team-scoped"},"post":{"$ref":"#/components/pathItems/v1-projects--projectId--services--serviceId--build-arguments-post-team-scoped"}},"/v1/projects/{projectId}/services/{serviceId}/build-arguments/details":{"get":{"$ref":"#/components/pathItems/v1-projects--projectId--services--serviceId--build-arguments-details-get"}},"/v1/teams/{teamId}/projects/{projectId}/services/{serviceId}/build-arguments/details":{"get":{"$ref":"#/components/pathItems/v1-projects--projectId--services--serviceId--build-arguments-details-get-team-scoped"}},"/v1/projects/{projectId}/services/{serviceId}/build-cache":{"delete":{"$ref":"#/components/pathItems/v1-projects--projectId--services--serviceId--build-cache-delete"}},"/v1/teams/{teamId}/projects/{projectId}/services/{serviceId}/build-cache":{"delete":{"$ref":"#/components/pathItems/v1-projects--projectId--services--serviceId--build-cache-delete-team-scoped"}},"/v1/projects/{projectId}/services/{serviceId}/build-logs":{"get":{"$ref":"#/components/pathItems/v1-projects--projectId--services--serviceId--build-logs-get"}},"/v1/teams/{teamId}/projects/{projectId}/services/{serviceId}/build-logs":{"get":{"$ref":"#/components/pathItems/v1-projects--projectId--services--serviceId--build-logs-get-team-scoped"}},"/v1/projects/{projectId}/services/{serviceId}/build-metrics":{"get":{"$ref":"#/components/pathItems/v1-projects--projectId--services--serviceId--build-metrics-get"}},"/v1/teams/{teamId}/projects/{projectId}/services/{serviceId}/build-metrics":{"get":{"$ref":"#/components/pathItems/v1-projects--projectId--services--serviceId--build-metrics-get-team-scoped"}},"/v1/projects/{projectId}/services/{serviceId}/build-options":{"post":{"$ref":"#/components/pathItems/v1-projects--projectId--services--serviceId--build-options-post"}},"/v1/teams/{teamId}/projects/{projectId}/services/{serviceId}/build-options":{"post":{"$ref":"#/components/pathItems/v1-projects--projectId--services--serviceId--build-options-post-team-scoped"}},"/v1/projects/{projectId}/services/{serviceId}/build-source":{"post":{"$ref":"#/components/pathItems/v1-projects--projectId--services--serviceId--build-source-post"}},"/v1/teams/{teamId}/projects/{projectId}/services/{serviceId}/build-source":{"post":{"$ref":"#/components/pathItems/v1-projects--projectId--services--serviceId--build-source-post-team-scoped"}},"/v1/projects/{projectId}/services/{serviceId}/build/{buildId}":{"get":{"$ref":"#/components/pathItems/v1-projects--projectId--services--serviceId--build--buildId--get"},"delete":{"$ref":"#/components/pathItems/v1-projects--projectId--services--serviceId--build--buildId--delete"}},"/v1/teams/{teamId}/projects/{projectId}/services/{serviceId}/build/{buildId}":{"get":{"$ref":"#/components/pathItems/v1-projects--projectId--services--serviceId--build--buildId--get-team-scoped"},"delete":{"$ref":"#/components/pathItems/v1-projects--projectId--services--serviceId--build--buildId--delete-team-scoped"}},"/v1/projects/{projectId}/services/{serviceId}/containers":{"get":{"$ref":"#/components/pathItems/v1-projects--projectId--services--serviceId--containers-get"}},"/v1/teams/{teamId}/projects/{projectId}/services/{serviceId}/containers":{"get":{"$ref":"#/components/pathItems/v1-projects--projectId--services--serviceId--containers-get-team-scoped"}},"/v1/projects/{projectId}/services/{serviceId}/deployment":{"get":{"$ref":"#/components/pathItems/v1-projects--projectId--services--serviceId--deployment-get"},"post":{"$ref":"#/components/pathItems/v1-projects--projectId--services--serviceId--deployment-post"}},"/v1/teams/{teamId}/projects/{projectId}/services/{serviceId}/deployment":{"get":{"$ref":"#/components/pathItems/v1-projects--projectId--services--serviceId--deployment-get-team-scoped"},"post":{"$ref":"#/components/pathItems/v1-projects--projectId--services--serviceId--deployment-post-team-scoped"}},"/v1/projects/{projectId}/services/{serviceId}/health-checks":{"get":{"$ref":"#/components/pathItems/v1-projects--projectId--services--serviceId--health-checks-get"},"post":{"$ref":"#/components/pathItems/v1-projects--projectId--services--serviceId--health-checks-post"}},"/v1/teams/{teamId}/projects/{projectId}/services/{serviceId}/health-checks":{"get":{"$ref":"#/components/pathItems/v1-projects--projectId--services--serviceId--health-checks-get-team-scoped"},"post":{"$ref":"#/components/pathItems/v1-projects--projectId--services--serviceId--health-checks-post-team-scoped"}},"/v1/projects/{projectId}/services/{serviceId}/logs":{"get":{"$ref":"#/components/pathItems/v1-projects--projectId--services--serviceId--logs-get"}},"/v1/teams/{teamId}/projects/{projectId}/services/{serviceId}/logs":{"get":{"$ref":"#/components/pathItems/v1-projects--projectId--services--serviceId--logs-get-team-scoped"}},"/v1/projects/{projectId}/services/{serviceId}/metrics":{"get":{"$ref":"#/components/pathItems/v1-projects--projectId--services--serviceId--metrics-get"}},"/v1/teams/{teamId}/projects/{projectId}/services/{serviceId}/metrics":{"get":{"$ref":"#/components/pathItems/v1-projects--projectId--services--serviceId--metrics-get-team-scoped"}},"/v1/projects/{projectId}/services/{serviceId}/pause":{"post":{"$ref":"#/components/pathItems/v1-projects--projectId--services--serviceId--pause-post"}},"/v1/teams/{teamId}/projects/{projectId}/services/{serviceId}/pause":{"post":{"$ref":"#/components/pathItems/v1-projects--projectId--services--serviceId--pause-post-team-scoped"}},"/v1/projects/{projectId}/services/{serviceId}/ports":{"get":{"$ref":"#/components/pathItems/v1-projects--projectId--services--serviceId--ports-get"},"post":{"$ref":"#/components/pathItems/v1-projects--projectId--services--serviceId--ports-post"}},"/v1/teams/{teamId}/projects/{projectId}/services/{serviceId}/ports":{"get":{"$ref":"#/components/pathItems/v1-projects--projectId--services--serviceId--ports-get-team-scoped"},"post":{"$ref":"#/components/pathItems/v1-projects--projectId--services--serviceId--ports-post-team-scoped"}},"/v1/projects/{projectId}/services/{serviceId}/pull-requests":{"get":{"$ref":"#/components/pathItems/v1-projects--projectId--services--serviceId--pull-requests-get"}},"/v1/teams/{teamId}/projects/{projectId}/services/{serviceId}/pull-requests":{"get":{"$ref":"#/components/pathItems/v1-projects--projectId--services--serviceId--pull-requests-get-team-scoped"}},"/v1/projects/{projectId}/services/{serviceId}/restart":{"post":{"$ref":"#/components/pathItems/v1-projects--projectId--services--serviceId--restart-post"}},"/v1/teams/{teamId}/projects/{projectId}/services/{serviceId}/restart":{"post":{"$ref":"#/components/pathItems/v1-projects--projectId--services--serviceId--restart-post-team-scoped"}},"/v1/projects/{projectId}/services/{serviceId}/resume":{"post":{"$ref":"#/components/pathItems/v1-projects--projectId--services--serviceId--resume-post"}},"/v1/teams/{teamId}/projects/{projectId}/services/{serviceId}/resume":{"post":{"$ref":"#/components/pathItems/v1-projects--projectId--services--serviceId--resume-post-team-scoped"}},"/v1/projects/{projectId}/services/{serviceId}/runtime-environment":{"get":{"$ref":"#/components/pathItems/v1-projects--projectId--services--serviceId--runtime-environment-get"},"post":{"$ref":"#/components/pathItems/v1-projects--projectId--services--serviceId--runtime-environment-post"}},"/v1/teams/{teamId}/projects/{projectId}/services/{serviceId}/runtime-environment":{"get":{"$ref":"#/components/pathItems/v1-projects--projectId--services--serviceId--runtime-environment-get-team-scoped"},"post":{"$ref":"#/components/pathItems/v1-projects--projectId--services--serviceId--runtime-environment-post-team-scoped"}},"/v1/projects/{projectId}/services/{serviceId}/runtime-environment/details":{"get":{"$ref":"#/components/pathItems/v1-projects--projectId--services--serviceId--runtime-environment-details-get"}},"/v1/teams/{teamId}/projects/{projectId}/services/{serviceId}/runtime-environment/details":{"get":{"$ref":"#/components/pathItems/v1-projects--projectId--services--serviceId--runtime-environment-details-get-team-scoped"}},"/v1/projects/{projectId}/services/{serviceId}/scale":{"post":{"$ref":"#/components/pathItems/v1-projects--projectId--services--serviceId--scale-post"}},"/v1/teams/{teamId}/projects/{projectId}/services/{serviceId}/scale":{"post":{"$ref":"#/components/pathItems/v1-projects--projectId--services--serviceId--scale-post-team-scoped"}},"/v1/projects/{projectId}/volumes":{"get":{"$ref":"#/components/pathItems/v1-projects--projectId--volumes-get"},"post":{"$ref":"#/components/pathItems/v1-projects--projectId--volumes-post"}},"/v1/teams/{teamId}/projects/{projectId}/volumes":{"get":{"$ref":"#/components/pathItems/v1-projects--projectId--volumes-get-team-scoped"},"post":{"$ref":"#/components/pathItems/v1-projects--projectId--volumes-post-team-scoped"}},"/v1/projects/{projectId}/volumes/{volumeId}":{"get":{"$ref":"#/components/pathItems/v1-projects--projectId--volumes--volumeId--get"},"post":{"$ref":"#/components/pathItems/v1-projects--projectId--volumes--volumeId--post"},"delete":{"$ref":"#/components/pathItems/v1-projects--projectId--volumes--volumeId--delete"}},"/v1/teams/{teamId}/projects/{projectId}/volumes/{volumeId}":{"get":{"$ref":"#/components/pathItems/v1-projects--projectId--volumes--volumeId--get-team-scoped"},"post":{"$ref":"#/components/pathItems/v1-projects--projectId--volumes--volumeId--post-team-scoped"},"delete":{"$ref":"#/components/pathItems/v1-projects--projectId--volumes--volumeId--delete-team-scoped"}},"/v1/projects/{projectId}/volumes/{volumeId}/attach":{"post":{"$ref":"#/components/pathItems/v1-projects--projectId--volumes--volumeId--attach-post"}},"/v1/teams/{teamId}/projects/{projectId}/volumes/{volumeId}/attach":{"post":{"$ref":"#/components/pathItems/v1-projects--projectId--volumes--volumeId--attach-post-team-scoped"}},"/v1/projects/{projectId}/volumes/{volumeId}/backups":{"get":{"$ref":"#/components/pathItems/v1-projects--projectId--volumes--volumeId--backups-get"},"post":{"$ref":"#/components/pathItems/v1-projects--projectId--volumes--volumeId--backups-post"}},"/v1/teams/{teamId}/projects/{projectId}/volumes/{volumeId}/backups":{"get":{"$ref":"#/components/pathItems/v1-projects--projectId--volumes--volumeId--backups-get-team-scoped"},"post":{"$ref":"#/components/pathItems/v1-projects--projectId--volumes--volumeId--backups-post-team-scoped"}},"/v1/projects/{projectId}/volumes/{volumeId}/backups/{backupId}":{"get":{"$ref":"#/components/pathItems/v1-projects--projectId--volumes--volumeId--backups--backupId--get"},"delete":{"$ref":"#/components/pathItems/v1-projects--projectId--volumes--volumeId--backups--backupId--delete"}},"/v1/teams/{teamId}/projects/{projectId}/volumes/{volumeId}/backups/{backupId}":{"get":{"$ref":"#/components/pathItems/v1-projects--projectId--volumes--volumeId--backups--backupId--get-team-scoped"},"delete":{"$ref":"#/components/pathItems/v1-projects--projectId--volumes--volumeId--backups--backupId--delete-team-scoped"}},"/v1/projects/{projectId}/volumes/{volumeId}/detach":{"post":{"$ref":"#/components/pathItems/v1-projects--projectId--volumes--volumeId--detach-post"}},"/v1/teams/{teamId}/projects/{projectId}/volumes/{volumeId}/detach":{"post":{"$ref":"#/components/pathItems/v1-projects--projectId--volumes--volumeId--detach-post-team-scoped"}},"/v1/projects/{projectId}/workflows":{"get":{"$ref":"#/components/pathItems/v1-projects--projectId--workflows-get"},"post":{"$ref":"#/components/pathItems/v1-projects--projectId--workflows-post"}},"/v1/teams/{teamId}/projects/{projectId}/workflows":{"get":{"$ref":"#/components/pathItems/v1-projects--projectId--workflows-get-team-scoped"},"post":{"$ref":"#/components/pathItems/v1-projects--projectId--workflows-post-team-scoped"}},"/v1/projects/{projectId}/workflows/{workflowId}":{"get":{"$ref":"#/components/pathItems/v1-projects--projectId--workflows--workflowId--get"},"post":{"$ref":"#/components/pathItems/v1-projects--projectId--workflows--workflowId--post"}},"/v1/teams/{teamId}/projects/{projectId}/workflows/{workflowId}":{"get":{"$ref":"#/components/pathItems/v1-projects--projectId--workflows--workflowId--get-team-scoped"},"post":{"$ref":"#/components/pathItems/v1-projects--projectId--workflows--workflowId--post-team-scoped"}},"/v1/projects/{projectId}/workflows/{workflowId}/runs":{"post":{"$ref":"#/components/pathItems/v1-projects--projectId--workflows--workflowId--runs-post"},"get":{"$ref":"#/components/pathItems/v1-projects--projectId--workflows--workflowId--runs-get"}},"/v1/teams/{teamId}/projects/{projectId}/workflows/{workflowId}/runs":{"post":{"$ref":"#/components/pathItems/v1-projects--projectId--workflows--workflowId--runs-post-team-scoped"},"get":{"$ref":"#/components/pathItems/v1-projects--projectId--workflows--workflowId--runs-get-team-scoped"}},"/v1/projects/{projectId}/workflows/{workflowId}/runs/{runId}":{"get":{"$ref":"#/components/pathItems/v1-projects--projectId--workflows--workflowId--runs--runId--get"}},"/v1/teams/{teamId}/projects/{projectId}/workflows/{workflowId}/runs/{runId}":{"get":{"$ref":"#/components/pathItems/v1-projects--projectId--workflows--workflowId--runs--runId--get-team-scoped"}},"/v1/projects/{projectId}/workflows/{workflowId}/runs/{runId}/abort":{"post":{"$ref":"#/components/pathItems/v1-projects--projectId--workflows--workflowId--runs--runId--abort-post"}},"/v1/teams/{teamId}/projects/{projectId}/workflows/{workflowId}/runs/{runId}/abort":{"post":{"$ref":"#/components/pathItems/v1-projects--projectId--workflows--workflowId--runs--runId--abort-post-team-scoped"}},"/v1/regions":{"get":{"operationId":"getRegions","summary":"List regions","description":"Lists available project regions","parameters":[],"responses":{"200":{"description":"A list of available regions.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"regions":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the region.","example":"europe-west"},"name":{"type":"string","description":"The name of the region.","example":"Europe - West"},"regionName":{"type":"string","description":"The name of the group this region belongs to.","example":"EMEA"},"provider":{"type":"object","properties":{"id":{"type":"string"},"region":{"type":"string"}},"required":["id","region"],"additionalProperties":false},"gpuDevices":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the GPU device.","example":"h100-80"},"name":{"type":"string","description":"The name of the GPU device.","example":"H100"},"manufacturer":{"type":"string","description":"The manufacturer of the GPU.","example":"NVIDIA"},"memoryInfo":{"type":"object","properties":{"sizeInMiB":{"type":"number","format":"float","description":"The size of the GPU memory in MiB.","example":81920}},"required":["sizeInMiB"],"additionalProperties":false},"countOptions":{"type":"array","items":{"type":"number","format":"float"},"description":"The list of available configurations for GPU count.","example":[1,2,4,8]},"pricing":{"type":"object","properties":{"onDemand":{"type":"number","format":"float","description":"The price per hour for on-demand usage, in US¢.","example":274}},"required":["onDemand"],"additionalProperties":false}},"required":["id","name","manufacturer","countOptions","pricing"],"additionalProperties":false},"description":"The list of GPUs available in this region."}},"required":["id","name","regionName","gpuDevices"],"additionalProperties":false,"description":"A region object"},"description":"An array of regions"}},"required":["regions"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Miscellaneous"],"security":[],"x-nf-cli-command":["list","regions"]}},"/v1/secrets":{"get":{"$ref":"#/components/pathItems/v1-secrets-get"},"post":{"$ref":"#/components/pathItems/v1-secrets-post"},"put":{"$ref":"#/components/pathItems/v1-secrets-put"}},"/v1/teams/{teamId}/secrets":{"get":{"$ref":"#/components/pathItems/v1-secrets-get-team-scoped"},"post":{"$ref":"#/components/pathItems/v1-secrets-post-team-scoped"},"put":{"$ref":"#/components/pathItems/v1-secrets-put-team-scoped"}},"/v1/secrets/{secretId}":{"patch":{"$ref":"#/components/pathItems/v1-secrets--secretId--patch"},"get":{"$ref":"#/components/pathItems/v1-secrets--secretId--get"},"delete":{"$ref":"#/components/pathItems/v1-secrets--secretId--delete"}},"/v1/teams/{teamId}/secrets/{secretId}":{"patch":{"$ref":"#/components/pathItems/v1-secrets--secretId--patch-team-scoped"},"get":{"$ref":"#/components/pathItems/v1-secrets--secretId--get-team-scoped"},"delete":{"$ref":"#/components/pathItems/v1-secrets--secretId--delete-team-scoped"}},"/v1/tags":{"get":{"$ref":"#/components/pathItems/v1-tags-get"},"post":{"$ref":"#/components/pathItems/v1-tags-post"},"put":{"$ref":"#/components/pathItems/v1-tags-put"}},"/v1/teams/{teamId}/tags":{"get":{"$ref":"#/components/pathItems/v1-tags-get-team-scoped"},"post":{"$ref":"#/components/pathItems/v1-tags-post-team-scoped"},"put":{"$ref":"#/components/pathItems/v1-tags-put-team-scoped"}},"/v1/tags/{resourceTagId}":{"get":{"$ref":"#/components/pathItems/v1-tags--resourceTagId--get"},"patch":{"$ref":"#/components/pathItems/v1-tags--resourceTagId--patch"},"delete":{"$ref":"#/components/pathItems/v1-tags--resourceTagId--delete"}},"/v1/teams/{teamId}/tags/{resourceTagId}":{"get":{"$ref":"#/components/pathItems/v1-tags--resourceTagId--get-team-scoped"},"patch":{"$ref":"#/components/pathItems/v1-tags--resourceTagId--patch-team-scoped"},"delete":{"$ref":"#/components/pathItems/v1-tags--resourceTagId--delete-team-scoped"}},"/v1/teams":{"post":{"operationId":"postTeams","summary":"Create team","description":"Creates a new team belonging to the authenticated org.","parameters":[],"responses":{"200":{"description":"Details about the newly created team.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"ID of the team.","example":"my-team"},"name":{"type":"string","description":"Display name of the team.","example":"My Team"},"description":{"type":"string","description":"Description of the team.","example":"This is my team."},"createdAt":{"type":"string","format":"date-time","description":"The time the team was created.","example":"2021-01-20T11:19:53.175Z"},"updatedAt":{"type":"string","format":"date-time","description":"The time the team was last updated.","example":"2021-01-20T11:19:53.175Z"}},"required":["id","name","createdAt"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Teams","org"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z](('[a-zA-Z])?(-|\\s)?[a-zA-Z0-9]+(('[a-zA-Z])?(-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":45,"description":"The name of the team.","example":"My Team"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"A description of the team.","example":"This is my team."},"email":{"type":"string","pattern":"^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$","description":"The billing email address for the team.","example":"billing@example.com"}},"required":["name","email"],"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Organisation > Team > General > Create","x-nf-org-scoped":true,"x-nf-cli-command":["create","team"]},"get":{"operationId":"getTeams","summary":"List teams","description":"Gets a list of teams belonging to the authenticated org.","parameters":[{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query","schema":{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query"}},{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query","schema":{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query"}},{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query","schema":{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query"}}],"responses":{"200":{"description":"A list of teams belonging to the org.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"teams":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"ID of the team.","example":"my-team"},"name":{"type":"string","description":"Display name of the team.","example":"My Team"},"description":{"type":"string","description":"Description of the team.","example":"This is my team."},"createdAt":{"type":"string","format":"date-time","description":"The time the team was created.","example":"2021-01-20T11:19:53.175Z"}},"required":["id","name","createdAt"],"additionalProperties":false,"description":"A team object."},"description":"An array of teams."}},"required":["teams"],"additionalProperties":false,"description":"Result data."},"pagination":{"type":"object","properties":{"hasNextPage":{"type":"boolean","description":"Is there another page of results available?","example":false},"cursor":{"type":"string","description":"The cursor to access the next page of results."},"count":{"type":"number","format":"float","description":"The number of results returned by this request.","example":1}},"required":["hasNextPage","count"],"additionalProperties":false,"description":"Data about the endpoint pagination."}},"required":["data","pagination"],"additionalProperties":false,"description":"Response object."}}},"tags":["Teams","org"],"security":[],"x-nf-permission-required":"Organisation > Team > General > Read","x-nf-org-scoped":true,"x-nf-cli-command":["list","teams"]}},"/v1/teams/{teamId}":{"get":{"operationId":"getTeamsTeamid","summary":"Get team","description":"Gets information about a team belonging to the authenticated org.","parameters":[{"name":"teamId","type":"string","required":true,"description":"ID of the team","example":"my-team","in":"path","schema":{"name":"teamId","type":"string","required":true,"description":"ID of the team","example":"my-team","in":"path"}}],"responses":{"200":{"description":"Details about the team.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"ID of the team.","example":"my-team"},"name":{"type":"string","description":"Display name of the team.","example":"My Team"},"description":{"type":"string","description":"Description of the team.","example":"This is my team."},"createdAt":{"type":"string","format":"date-time","description":"The time the team was created.","example":"2021-01-20T11:19:53.175Z"},"updatedAt":{"type":"string","format":"date-time","description":"The time the team was last updated.","example":"2021-01-20T11:19:53.175Z"}},"required":["id","name","createdAt"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Teams","org"],"security":[],"x-nf-permission-required":"Organisation > Team > General > Read","x-nf-org-scoped":true,"x-nf-cli-command":["get","team"]},"patch":{"operationId":"patchTeamsTeamid","summary":"Update team","description":"Updates the description of a team belonging to the authenticated org.","parameters":[{"name":"teamId","type":"string","required":true,"description":"ID of the team","example":"my-team","in":"path","schema":{"name":"teamId","type":"string","required":true,"description":"ID of the team","example":"my-team","in":"path"}}],"responses":{"200":{"description":"Details about the updated team.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"ID of the team.","example":"my-team"},"name":{"type":"string","description":"Display name of the team.","example":"My Team"},"description":{"type":"string","description":"Description of the team.","example":"This is my team."},"createdAt":{"type":"string","format":"date-time","description":"The time the team was created.","example":"2021-01-20T11:19:53.175Z"},"updatedAt":{"type":"string","format":"date-time","description":"The time the team was last updated.","example":"2021-01-20T11:19:53.175Z"}},"required":["id","name","createdAt"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Teams","org"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"A description of the team.","example":"This is my team."}},"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Organisation > Team > General > Update","x-nf-org-scoped":true,"x-nf-cli-command":["patch","team"]}},"/v1/teams/{teamId}/members":{"get":{"operationId":"getMembers","summary":"List team members","description":"Gets a list of members belonging to a team.","parameters":[{"name":"teamId","type":"string","required":true,"description":"ID of the team","example":"my-team","in":"path","schema":{"name":"teamId","type":"string","required":true,"description":"ID of the team","example":"my-team","in":"path"}},{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query","schema":{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query"}},{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query","schema":{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query"}},{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query","schema":{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query"}}],"responses":{"200":{"description":"A list of members in the team.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"members":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","nullable":true,"description":"ID (username) of the team member. For users who are not finalized this ID may change on finalisation.","example":"john-doe"},"name":{"type":"string","description":"Display name from the member profile.","example":"John Doe"},"emails":{"type":"array","items":{"type":"object","properties":{"address":{"type":"string","format":"email","example":"john@example.com"},"verified":{"type":"boolean","example":true}},"required":["address","verified"],"additionalProperties":false},"description":"Email addresses of the member."},"joinedAt":{"type":"string","format":"date-time","description":"The time the member joined the team.","example":"2021-01-20T11:19:53.175Z"},"finalized":{"type":"boolean","description":"Whether the account has been fully set up by the user."}},"required":["id"],"additionalProperties":false,"description":"A team member object."},"description":"An array of team members."}},"required":["members"],"additionalProperties":false,"description":"Result data."},"pagination":{"type":"object","properties":{"hasNextPage":{"type":"boolean","description":"Is there another page of results available?","example":false},"cursor":{"type":"string","description":"The cursor to access the next page of results."},"count":{"type":"number","format":"float","description":"The number of results returned by this request.","example":1}},"required":["hasNextPage","count"],"additionalProperties":false,"description":"Data about the endpoint pagination."}},"required":["data","pagination"],"additionalProperties":false,"description":"Response object."}}},"tags":["Team Members","team"],"security":[],"x-nf-permission-required":"Account > Admin > Members > Read","x-nf-team-scoped":true,"x-nf-org-scoped":true,"x-nf-cli-command":["list","team-members"]},"post":{"operationId":"postMembers","summary":"Invite team member","description":"Invites a user to a team.","parameters":[{"name":"teamId","type":"string","required":true,"description":"ID of the team","example":"my-team","in":"path","schema":{"name":"teamId","type":"string","required":true,"description":"ID of the team","example":"my-team","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Team Members","team"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"email":{"type":"string","pattern":"^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$","description":"Email of the user to invite.","example":"user@example.com"},"roles":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9-]+$"},"description":"Role IDs to assign to the invited member."}},"required":["email"],"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Account > Admin > Members > Manage","x-nf-team-scoped":true,"x-nf-org-scoped":true,"x-nf-cli-command":["create","team-member-invite"]}},"/v1/teams/{teamId}/members/{memberId}":{"delete":{"operationId":"deleteMembersMemberid","summary":"Remove team member","description":"Removes a member from a team.","parameters":[{"name":"teamId","type":"string","required":true,"description":"ID of the team","example":"my-team","in":"path","schema":{"name":"teamId","type":"string","required":true,"description":"ID of the team","example":"my-team","in":"path"}},{"name":"memberId","type":"string","required":true,"description":"ID of the team member.","example":"john-doe","in":"path","schema":{"name":"memberId","type":"string","required":true,"description":"ID of the team member.","example":"john-doe","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Team Members","team"],"security":[],"x-nf-permission-required":"Account > Admin > Members > Manage","x-nf-team-scoped":true,"x-nf-org-scoped":true,"x-nf-cli-command":["delete","team-member"]}},"/v1/teams/{teamId}/roles":{"get":{"operationId":"getRoles","summary":"List team roles","description":"Gets a list of platform roles for a team.","parameters":[{"name":"teamId","type":"string","required":true,"description":"ID of the team","example":"my-team","in":"path","schema":{"name":"teamId","type":"string","required":true,"description":"ID of the team","example":"my-team","in":"path"}},{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query","schema":{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query"}},{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query","schema":{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query"}},{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query","schema":{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query"}}],"responses":{"200":{"description":"A list of platform roles for the team.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"roles":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"ID of the role.","example":"developer"},"name":{"type":"string","description":"Display name of the role.","example":"Developer"},"description":{"type":"string","description":"Description of the role.","example":"Role for developers."},"restrictions":{"type":"object","properties":{"enabled":{"type":"boolean"},"projects":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39},"default":[]},"restrictionMode":{"type":"string","enum":["in","notIn"]}},"required":["enabled"],"additionalProperties":false},"createdAt":{"type":"string","format":"date-time","description":"Creation time.","example":"2021-01-20T11:19:53.175Z"},"updatedAt":{"type":"string","format":"date-time","description":"Last updated.","example":"2021-01-20T11:19:53.175Z"}},"required":["id","name"],"additionalProperties":false,"description":"A team role object."},"description":"An array of team roles."}},"required":["roles"],"additionalProperties":false,"description":"Result data."},"pagination":{"type":"object","properties":{"hasNextPage":{"type":"boolean","description":"Is there another page of results available?","example":false},"cursor":{"type":"string","description":"The cursor to access the next page of results."},"count":{"type":"number","format":"float","description":"The number of results returned by this request.","example":1}},"required":["hasNextPage","count"],"additionalProperties":false,"description":"Data about the endpoint pagination."}},"required":["data","pagination"],"additionalProperties":false,"description":"Response object."}}},"tags":["Team Roles","team"],"security":[],"x-nf-permission-required":"Account > Admin > Roles > Read","x-nf-team-scoped":true,"x-nf-org-scoped":true,"x-nf-cli-command":["list","team-roles"]},"post":{"operationId":"postRoles","summary":"Create team role","description":"Creates a new platform role for a team.","parameters":[{"name":"teamId","type":"string","required":true,"description":"ID of the team","example":"my-team","in":"path","schema":{"name":"teamId","type":"string","required":true,"description":"ID of the team","example":"my-team","in":"path"}}],"responses":{"200":{"description":"Details about the newly created team role.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"ID of the role.","example":"developer"},"name":{"type":"string","description":"Display name of the role.","example":"Developer"},"description":{"type":"string","description":"Description of the role.","example":"Role for developers."},"restrictions":{"type":"object","properties":{"enabled":{"type":"boolean"},"projects":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39},"default":[]},"restrictionMode":{"type":"string","enum":["in","notIn"]}},"required":["enabled"],"additionalProperties":false},"createdAt":{"type":"string","format":"date-time","description":"Creation time.","example":"2021-01-20T11:19:53.175Z"},"updatedAt":{"type":"string","format":"date-time","description":"Last updated.","example":"2021-01-20T11:19:53.175Z"},"permissions":{"type":"object","properties":{"teamScope":{"type":"array","items":{"type":"string"},"description":"Team-level permissions."},"projectScope":{"type":"array","items":{"type":"string"},"description":"Project-level permissions."}},"required":["teamScope","projectScope"],"additionalProperties":false}},"required":["id","name","permissions"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Team Roles","team"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The name of the role.","example":"Developer"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"A description of the role.","example":"Role for developers."},"permissions":{"type":"object","properties":{"teamScope":{"type":"array","items":{"type":"string"},"description":"Team-level RBAC permission strings.","default":[]},"projectScope":{"type":"array","items":{"type":"string"},"description":"Project-level RBAC permission strings.","default":[]}},"additionalProperties":false,"description":"Permissions granted by this role.","default":{"teamScope":[],"projectScope":[]}},"restrictions":{"type":"object","properties":{"enabled":{"type":"boolean"},"projects":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39},"default":[]},"restrictionMode":{"type":"string","enum":["in","notIn"]}},"required":["enabled"],"additionalProperties":false,"description":"Project access restrictions for this role.","default":{"enabled":false,"projects":[]}}},"required":["name"],"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Account > Admin > Roles > Manage","x-nf-team-scoped":true,"x-nf-org-scoped":true,"x-nf-cli-command":["create","team-role"]},"put":{"operationId":"putRoles","summary":"Create or update role","description":"Creates role or updates all user-editable fields on a platform role.","parameters":[{"name":"teamId","type":"string","required":true,"description":"ID of the team","example":"my-team","in":"path","schema":{"name":"teamId","type":"string","required":true,"description":"ID of the team","example":"my-team","in":"path"}}],"responses":{"200":{"description":"Details about the updated team role.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"ID of the role.","example":"developer"},"name":{"type":"string","description":"Display name of the role.","example":"Developer"},"description":{"type":"string","description":"Description of the role.","example":"Role for developers."},"restrictions":{"type":"object","properties":{"enabled":{"type":"boolean"},"projects":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39},"default":[]},"restrictionMode":{"type":"string","enum":["in","notIn"]}},"required":["enabled"],"additionalProperties":false},"createdAt":{"type":"string","format":"date-time","description":"Creation time.","example":"2021-01-20T11:19:53.175Z"},"updatedAt":{"type":"string","format":"date-time","description":"Last updated.","example":"2021-01-20T11:19:53.175Z"},"permissions":{"type":"object","properties":{"teamScope":{"type":"array","items":{"type":"string"},"description":"Team-level permissions."},"projectScope":{"type":"array","items":{"type":"string"},"description":"Project-level permissions."}},"required":["teamScope","projectScope"],"additionalProperties":false}},"required":["id","name","permissions"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Team Roles","team"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The name of the role.","example":"Developer"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"A description of the role.","example":"Role for developers."},"permissions":{"type":"object","properties":{"teamScope":{"type":"array","items":{"type":"string"},"description":"Team-level RBAC permission strings.","default":[]},"projectScope":{"type":"array","items":{"type":"string"},"description":"Project-level RBAC permission strings.","default":[]}},"additionalProperties":false,"description":"Permissions granted by this role.","default":{"teamScope":[],"projectScope":[]}},"restrictions":{"type":"object","properties":{"enabled":{"type":"boolean"},"projects":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39},"default":[]},"restrictionMode":{"type":"string","enum":["in","notIn"]}},"required":["enabled"],"additionalProperties":false,"description":"Project access restrictions for this role.","default":{"enabled":false,"projects":[]}}},"required":["name"],"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Account > Admin > Roles > Manage","x-nf-team-scoped":true,"x-nf-org-scoped":true,"x-nf-cli-command":["put","team-role"]}},"/v1/teams/{teamId}/roles/{roleId}":{"get":{"operationId":"getRolesRoleid","summary":"Get team role","description":"Gets details about a specific platform role.","parameters":[{"name":"teamId","type":"string","required":true,"description":"ID of the team","example":"my-team","in":"path","schema":{"name":"teamId","type":"string","required":true,"description":"ID of the team","example":"my-team","in":"path"}},{"name":"roleId","type":"string","required":true,"description":"ID of the team role","example":"developer","in":"path","schema":{"name":"roleId","type":"string","required":true,"description":"ID of the team role","example":"developer","in":"path"}}],"responses":{"200":{"description":"Details about the team role.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"ID of the role.","example":"developer"},"name":{"type":"string","description":"Display name of the role.","example":"Developer"},"description":{"type":"string","description":"Description of the role.","example":"Role for developers."},"restrictions":{"type":"object","properties":{"enabled":{"type":"boolean"},"projects":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39},"default":[]},"restrictionMode":{"type":"string","enum":["in","notIn"]}},"required":["enabled"],"additionalProperties":false},"createdAt":{"type":"string","format":"date-time","description":"Creation time.","example":"2021-01-20T11:19:53.175Z"},"updatedAt":{"type":"string","format":"date-time","description":"Last updated.","example":"2021-01-20T11:19:53.175Z"},"permissions":{"type":"object","properties":{"teamScope":{"type":"array","items":{"type":"string"},"description":"Team-level permissions."},"projectScope":{"type":"array","items":{"type":"string"},"description":"Project-level permissions."}},"required":["teamScope","projectScope"],"additionalProperties":false}},"required":["id","name","permissions"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Team Roles","team"],"security":[],"x-nf-permission-required":"Account > Admin > Roles > Read","x-nf-team-scoped":true,"x-nf-org-scoped":true,"x-nf-cli-command":["get","team-role"]},"patch":{"operationId":"patchRolesRoleid","summary":"Update team role","description":"Updates a platform role for a team.","parameters":[{"name":"teamId","type":"string","required":true,"description":"ID of the team","example":"my-team","in":"path","schema":{"name":"teamId","type":"string","required":true,"description":"ID of the team","example":"my-team","in":"path"}},{"name":"roleId","type":"string","required":true,"description":"ID of the team role","example":"developer","in":"path","schema":{"name":"roleId","type":"string","required":true,"description":"ID of the team role","example":"developer","in":"path"}}],"responses":{"200":{"description":"Details about the updated team role.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"ID of the role.","example":"developer"},"name":{"type":"string","description":"Display name of the role.","example":"Developer"},"description":{"type":"string","description":"Description of the role.","example":"Role for developers."},"restrictions":{"type":"object","properties":{"enabled":{"type":"boolean"},"projects":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39},"default":[]},"restrictionMode":{"type":"string","enum":["in","notIn"]}},"required":["enabled"],"additionalProperties":false},"createdAt":{"type":"string","format":"date-time","description":"Creation time.","example":"2021-01-20T11:19:53.175Z"},"updatedAt":{"type":"string","format":"date-time","description":"Last updated.","example":"2021-01-20T11:19:53.175Z"},"permissions":{"type":"object","properties":{"teamScope":{"type":"array","items":{"type":"string"},"description":"Team-level permissions."},"projectScope":{"type":"array","items":{"type":"string"},"description":"Project-level permissions."}},"required":["teamScope","projectScope"],"additionalProperties":false}},"required":["id","name","permissions"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Team Roles","team"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"A description of the role.","example":"Role for developers."},"permissions":{"type":"object","properties":{"teamScope":{"type":"array","items":{"type":"string"},"description":"Team-level RBAC permission strings.","default":[]},"projectScope":{"type":"array","items":{"type":"string"},"description":"Project-level RBAC permission strings.","default":[]}},"additionalProperties":false,"description":"Permissions granted by this role."},"restrictions":{"type":"object","properties":{"enabled":{"type":"boolean"},"projects":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39},"default":[]},"restrictionMode":{"type":"string","enum":["in","notIn"]}},"required":["enabled"],"additionalProperties":false,"description":"Project access restrictions for this role."}},"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Account > Admin > Roles > Manage","x-nf-team-scoped":true,"x-nf-org-scoped":true,"x-nf-cli-command":["patch","team-role"]},"delete":{"operationId":"deleteRolesRoleid","summary":"Delete team role","description":"Deletes a platform role from a team.","parameters":[{"name":"teamId","type":"string","required":true,"description":"ID of the team","example":"my-team","in":"path","schema":{"name":"teamId","type":"string","required":true,"description":"ID of the team","example":"my-team","in":"path"}},{"name":"roleId","type":"string","required":true,"description":"ID of the team role","example":"developer","in":"path","schema":{"name":"roleId","type":"string","required":true,"description":"ID of the team role","example":"developer","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Team Roles","team"],"security":[],"x-nf-permission-required":"Account > Admin > Roles > Manage","x-nf-team-scoped":true,"x-nf-org-scoped":true,"x-nf-cli-command":["delete","team-role"]}},"/v1/teams/{teamId}/roles/{roleId}/members":{"get":{"operationId":"getRolesRoleidMembers","summary":"List team role members","description":"Gets a list of members assigned to a platform role in a team.","parameters":[{"name":"teamId","type":"string","required":true,"description":"ID of the team","example":"my-team","in":"path","schema":{"name":"teamId","type":"string","required":true,"description":"ID of the team","example":"my-team","in":"path"}},{"name":"roleId","type":"string","required":true,"description":"ID of the team role","example":"developer","in":"path","schema":{"name":"roleId","type":"string","required":true,"description":"ID of the team role","example":"developer","in":"path"}},{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query","schema":{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query"}},{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query","schema":{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query"}},{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query","schema":{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query"}},{"name":"userIds","description":"Filter members by user ID. Specify the parameter multiple times to filter by multiple user IDs.","example":"john-doe","in":"query","schema":{"anyOf":[{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9-]+$"}},{"type":"string","pattern":"^[A-Za-z0-9-]+$"}]}}],"responses":{"200":{"description":"A list of members in the team role.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"members":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","nullable":true,"description":"ID (username) of the team member. For users who are not finalized this ID may change on finalisation.","example":"john-doe"},"name":{"type":"string","description":"Display name from the member profile.","example":"John Doe"},"emails":{"type":"array","items":{"type":"object","properties":{"address":{"type":"string","format":"email","example":"john@example.com"},"verified":{"type":"boolean","example":true}},"required":["address","verified"],"additionalProperties":false},"description":"Email addresses of the member."},"joinedAt":{"type":"string","format":"date-time","description":"The time the member joined the team.","example":"2021-01-20T11:19:53.175Z"},"finalized":{"type":"boolean","description":"Whether the account has been fully set up by the user."}},"required":["id"],"additionalProperties":false,"description":"A team role member object."},"description":"An array of members in the team role."}},"required":["members"],"additionalProperties":false,"description":"Result data."},"pagination":{"type":"object","properties":{"hasNextPage":{"type":"boolean","description":"Is there another page of results available?","example":false},"cursor":{"type":"string","description":"The cursor to access the next page of results."},"count":{"type":"number","format":"float","description":"The number of results returned by this request.","example":1}},"required":["hasNextPage","count"],"additionalProperties":false,"description":"Data about the endpoint pagination."}},"required":["data","pagination"],"additionalProperties":false,"description":"Response object."}}},"tags":["Team Roles","team"],"security":[],"x-nf-permission-required":"Account > Admin > Roles > Read","x-nf-team-scoped":true,"x-nf-org-scoped":true,"x-nf-cli-command":["list","team-role-members"]},"post":{"operationId":"postRolesRoleidMembers","summary":"Add member to team role","description":"Adds a user to a platform role in a team.","parameters":[{"name":"teamId","type":"string","required":true,"description":"ID of the team","example":"my-team","in":"path","schema":{"name":"teamId","type":"string","required":true,"description":"ID of the team","example":"my-team","in":"path"}},{"name":"roleId","type":"string","required":true,"description":"ID of the team role","example":"developer","in":"path","schema":{"name":"roleId","type":"string","required":true,"description":"ID of the team role","example":"developer","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Team Roles","team"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"ID of the user to add to this role.","example":"john-doe"}},"required":["userId"],"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Account > Admin > Roles > Manage","x-nf-team-scoped":true,"x-nf-org-scoped":true,"x-nf-cli-command":["create","team-role-member"]}},"/v1/teams/{teamId}/roles/{roleId}/members/{memberId}":{"delete":{"operationId":"deleteRolesRoleidMembersMemberid","summary":"Remove member from team role","description":"Removes a user from a platform role in a team.","parameters":[{"name":"teamId","type":"string","required":true,"description":"ID of the team","example":"my-team","in":"path","schema":{"name":"teamId","type":"string","required":true,"description":"ID of the team","example":"my-team","in":"path"}},{"name":"roleId","type":"string","required":true,"description":"ID of the team role","example":"developer","in":"path","schema":{"name":"roleId","type":"string","required":true,"description":"ID of the team role","example":"developer","in":"path"}},{"name":"memberId","type":"string","required":true,"description":"ID of the team member.","example":"john-doe","in":"path","schema":{"name":"memberId","type":"string","required":true,"description":"ID of the team member.","example":"john-doe","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Team Roles","team"],"security":[],"x-nf-permission-required":"Account > Admin > Roles > Manage","x-nf-team-scoped":true,"x-nf-org-scoped":true,"x-nf-cli-command":["delete","team-role-member"]}},"/v1/templates":{"get":{"$ref":"#/components/pathItems/v1-templates-get"},"post":{"$ref":"#/components/pathItems/v1-templates-post"}},"/v1/teams/{teamId}/templates":{"get":{"$ref":"#/components/pathItems/v1-templates-get-team-scoped"},"post":{"$ref":"#/components/pathItems/v1-templates-post-team-scoped"}},"/v1/templates/{templateId}":{"get":{"$ref":"#/components/pathItems/v1-templates--templateId--get"},"post":{"$ref":"#/components/pathItems/v1-templates--templateId--post"},"delete":{"$ref":"#/components/pathItems/v1-templates--templateId--delete"}},"/v1/teams/{teamId}/templates/{templateId}":{"get":{"$ref":"#/components/pathItems/v1-templates--templateId--get-team-scoped"},"post":{"$ref":"#/components/pathItems/v1-templates--templateId--post-team-scoped"},"delete":{"$ref":"#/components/pathItems/v1-templates--templateId--delete-team-scoped"}},"/v1/templates/{templateId}/runs":{"post":{"$ref":"#/components/pathItems/v1-templates--templateId--runs-post"},"get":{"$ref":"#/components/pathItems/v1-templates--templateId--runs-get"}},"/v1/teams/{teamId}/templates/{templateId}/runs":{"post":{"$ref":"#/components/pathItems/v1-templates--templateId--runs-post-team-scoped"},"get":{"$ref":"#/components/pathItems/v1-templates--templateId--runs-get-team-scoped"}},"/v1/templates/{templateId}/runs/{templateRunId}":{"get":{"$ref":"#/components/pathItems/v1-templates--templateId--runs--templateRunId--get"}},"/v1/teams/{teamId}/templates/{templateId}/runs/{templateRunId}":{"get":{"$ref":"#/components/pathItems/v1-templates--templateId--runs--templateRunId--get-team-scoped"}},"/v1/templates/{templateId}/runs/{templateRunId}/abort":{"post":{"$ref":"#/components/pathItems/v1-templates--templateId--runs--templateRunId--abort-post"}},"/v1/teams/{teamId}/templates/{templateId}/runs/{templateRunId}/abort":{"post":{"$ref":"#/components/pathItems/v1-templates--templateId--runs--templateRunId--abort-post-team-scoped"}}},"responses":{},"definitions":{},"tags":[{"name":"Projects"},{"name":"Services"},{"name":"Domains"},{"name":"Jobs"},{"name":"Addons"},{"name":"AI Models"},{"name":"Secrets"},{"name":"Volumes"},{"name":"Templates"},{"name":"Workflows"},{"name":"Preview Blueprints"},{"name":"Pipelines"},{"name":"Integrations"},{"name":"Cloud Providers"},{"name":"Load Balancers"},{"name":"Egress IPs"},{"name":"Rollout Strategies"},{"name":"OpenTofu"},{"name":"Tags"},{"name":"Billing"},{"name":"Backup Destinations"},{"name":"Miscellaneous"},{"name":"team"},{"name":"org"},{"name":"Org Roles"},{"name":"Org Members"},{"name":"project"},{"name":"Teams"},{"name":"Team Members"},{"name":"Team Roles"},{"name":"External Addons"}],"openapi":"3.0.1","servers":[{"url":"placeholder/v1","description":"Production API"}],"components":{"schemas":{"V1ReleaseFlowRichInputSchema":{"oneOf":[{"type":"object","properties":{"kind":{"type":"string","enum":["BranchCommitSelector"],"description":"The kind of input.","example":"BranchCommitSelector"},"spec":{"type":"object","properties":{"title":{"type":"string","description":"The title displayed for the input."},"description":{"type":"string","description":"The description displayed for the input."},"required":{"type":"boolean","description":"If true, an error will be displayed if this input is not provided a value.","example":false},"inputs":{"type":"object","properties":{"source":{"type":"string","description":"The ID of the build service to use for this input.","example":"build-service"}},"required":["source"],"additionalProperties":false,"description":"Inputs for the rich input node"},"outputs":{"type":"object","properties":{"branch":{"type":"string","example":"TARGET_BRANCH"},"buildSha":{"type":"string","example":"TARGET_COMMIT"}},"additionalProperties":false,"description":"Outputs for the rich input node. The value of each field corresponds to the argument name to be passed to the template."}},"required":["title","inputs","outputs"],"additionalProperties":false,"description":"The specification for the BranchCommitSelector input."}},"required":["kind","spec"],"additionalProperties":false,"description":"BranchCommitSelector input"},{"type":"object","properties":{"kind":{"type":"string","enum":["BuildSelector"],"description":"The kind of input.","example":"BuildSelector"},"spec":{"type":"object","properties":{"title":{"type":"string","description":"The title displayed for the input."},"description":{"type":"string","description":"The description displayed for the input."},"required":{"type":"boolean","description":"If true, an error will be displayed if this input is not provided a value.","example":false},"inputs":{"type":"object","properties":{"source":{"type":"string","description":"The ID of the build service to use for this input.","example":"build-service"}},"required":["source"],"additionalProperties":false,"description":"Inputs for the rich input node"},"outputs":{"type":"object","properties":{"branch":{"type":"string","example":"TARGET_BRANCH"},"buildId":{"type":"string","example":"TARGET_BUILD"},"buildSha":{"type":"string","example":"TARGET_COMMIT"}},"additionalProperties":false,"description":"Outputs for the rich input node. The value of each field corresponds to the argument name to be passed to the template."}},"required":["title","inputs","outputs"],"additionalProperties":false,"description":"The specification for the BuildSelector input."}},"required":["kind","spec"],"additionalProperties":false,"description":"BuildSelector input"}],"description":"A node representing a rich UI override for the Release Flow template."},"V1ReleaseFlowTemplateNodeSchema":{"type":"object"},"V1TeardownNodeSchema":{"type":"object"},"V1ReleaseFlowTemplateNodeRunSchema":{"type":"object"},"V1PreviewEnvTemplateNodeSchema":{"type":"object"},"V1TemplateNodeSchema":{"type":"object"},"V1PreviewEnvTemplateNodeRunSchema":{"type":"object"},"V1TemplateNodeRunSchema":{"type":"object"}},"pathItems":{"v1-backup-destinations-get":{"operationId":"getBackupDestinations","summary":"List backup destinations","description":"Lists the backup destinations saved to this account. Does not display secrets.","parameters":[{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query","schema":{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query"}},{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query","schema":{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query"}},{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query","schema":{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query"}}],"responses":{"200":{"description":"A list of backup destination saved to this account.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"backupDestinations":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The name of the backup destination.","example":"Example Backup Destination"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200},"type":{"type":"string","enum":["s3"],"description":"Type of the backup destination.","default":"s3"},"prefix":{"type":"string","pattern":"^([a-zA-Z0-9-_]+)\\/$","description":"A prefix path to add to the bucket objects if not writing to /"},"credentials":{"type":"object","properties":{"accessKey":{"type":"string"},"secretKey":{"type":"string"},"bucketName":{"type":"string"},"region":{"type":"string"},"endpoint":{"type":"string","description":"S3 destination including region, fe s3.us-west-2.amazonaws.com"}},"required":["accessKey","secretKey","bucketName","region","endpoint"],"additionalProperties":false,"description":"Credentials used for the backup destination."}},"required":["name","type","prefix","credentials"],"additionalProperties":false},"description":"List of backup destinations."}},"required":["backupDestinations"],"additionalProperties":false,"description":"Result data."},"pagination":{"type":"object","properties":{"hasNextPage":{"type":"boolean","description":"Is there another page of results available?","example":false},"cursor":{"type":"string","description":"The cursor to access the next page of results."},"count":{"type":"number","format":"float","description":"The number of results returned by this request.","example":1}},"required":["hasNextPage","count"],"additionalProperties":false,"description":"Data about the endpoint pagination."}},"required":["data","pagination"],"additionalProperties":false,"description":"Response object."}}},"tags":["Backup Destinations"],"security":[],"x-nf-permission-required":"Account > BackupDestinations > General > Read","x-nf-team-scoped":true,"x-nf-cli-command":["list","backup-destinations"]},"v1-backup-destinations-get-team-scoped":{"operationId":"getBackupDestinations","summary":"List backup destinations","description":"Lists the backup destinations saved to this account. Does not display secrets.","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query","schema":{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query"}},{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query","schema":{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query"}},{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query","schema":{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query"}}],"responses":{"200":{"description":"A list of backup destination saved to this account.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"backupDestinations":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The name of the backup destination.","example":"Example Backup Destination"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200},"type":{"type":"string","enum":["s3"],"description":"Type of the backup destination.","default":"s3"},"prefix":{"type":"string","pattern":"^([a-zA-Z0-9-_]+)\\/$","description":"A prefix path to add to the bucket objects if not writing to /"},"credentials":{"type":"object","properties":{"accessKey":{"type":"string"},"secretKey":{"type":"string"},"bucketName":{"type":"string"},"region":{"type":"string"},"endpoint":{"type":"string","description":"S3 destination including region, fe s3.us-west-2.amazonaws.com"}},"required":["accessKey","secretKey","bucketName","region","endpoint"],"additionalProperties":false,"description":"Credentials used for the backup destination."}},"required":["name","type","prefix","credentials"],"additionalProperties":false},"description":"List of backup destinations."}},"required":["backupDestinations"],"additionalProperties":false,"description":"Result data."},"pagination":{"type":"object","properties":{"hasNextPage":{"type":"boolean","description":"Is there another page of results available?","example":false},"cursor":{"type":"string","description":"The cursor to access the next page of results."},"count":{"type":"number","format":"float","description":"The number of results returned by this request.","example":1}},"required":["hasNextPage","count"],"additionalProperties":false,"description":"Data about the endpoint pagination."}},"required":["data","pagination"],"additionalProperties":false,"description":"Response object."}}},"tags":["Backup Destinations","team"],"security":[],"x-nf-permission-required":"Account > BackupDestinations > General > Read","x-nf-team-scoped":true,"x-nf-cli-command":["list","backup-destinations"]},"v1-backup-destinations-post":{"operationId":"postBackupDestinations","summary":"Add backup destination","description":"Adds a new backup destination to this account.","parameters":[],"responses":{"200":{"description":"Data about the newly created backup destination.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The name of the backup destination.","example":"Example Backup Destination"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200},"type":{"type":"string","enum":["s3"],"description":"Type of the backup destination.","default":"s3"},"prefix":{"type":"string","pattern":"^([a-zA-Z0-9-_]+)\\/$","description":"A prefix path to add to the bucket objects if not writing to /"},"credentials":{"type":"object","properties":{"accessKey":{"type":"string"},"secretKey":{"type":"string"},"bucketName":{"type":"string"},"region":{"type":"string"},"endpoint":{"type":"string","description":"S3 destination including region, fe s3.us-west-2.amazonaws.com"}},"required":["accessKey","secretKey","bucketName","region","endpoint"],"additionalProperties":false,"description":"Credentials used for the backup destination."},"id":{"type":"string","description":"Identifier for the backup destination","example":"example-backup-destination"},"createdAt":{"type":"string","format":"date-time","description":"time of creation"},"updatedAt":{"type":"string","format":"date-time","description":"time of update"}},"required":["name","type","prefix","credentials","id"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Backup Destinations"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The name of the backup destination.","example":"Example Backup Destination"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200},"type":{"type":"string","enum":["s3"],"description":"Type of the backup destination.","default":"s3"},"prefix":{"type":"string","pattern":"^([a-zA-Z0-9-_]+)\\/$","description":"A prefix path to add to the bucket objects if not writing to /"},"credentials":{"type":"object","properties":{"accessKey":{"type":"string"},"secretKey":{"type":"string"},"bucketName":{"type":"string"},"region":{"type":"string"},"endpoint":{"type":"string","description":"S3 destination including region, fe s3.us-west-2.amazonaws.com"}},"required":["accessKey","secretKey","bucketName","region","endpoint"],"additionalProperties":false,"description":"Credentials used for the backup destination."}},"required":["name","type","prefix","credentials"],"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Account > BackupDestinations > General > Create","x-nf-team-scoped":true,"x-nf-cli-command":["add","backup-destination"]},"v1-backup-destinations-post-team-scoped":{"operationId":"postBackupDestinations","summary":"Add backup destination","description":"Adds a new backup destination to this account.","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}}],"responses":{"200":{"description":"Data about the newly created backup destination.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The name of the backup destination.","example":"Example Backup Destination"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200},"type":{"type":"string","enum":["s3"],"description":"Type of the backup destination.","default":"s3"},"prefix":{"type":"string","pattern":"^([a-zA-Z0-9-_]+)\\/$","description":"A prefix path to add to the bucket objects if not writing to /"},"credentials":{"type":"object","properties":{"accessKey":{"type":"string"},"secretKey":{"type":"string"},"bucketName":{"type":"string"},"region":{"type":"string"},"endpoint":{"type":"string","description":"S3 destination including region, fe s3.us-west-2.amazonaws.com"}},"required":["accessKey","secretKey","bucketName","region","endpoint"],"additionalProperties":false,"description":"Credentials used for the backup destination."},"id":{"type":"string","description":"Identifier for the backup destination","example":"example-backup-destination"},"createdAt":{"type":"string","format":"date-time","description":"time of creation"},"updatedAt":{"type":"string","format":"date-time","description":"time of update"}},"required":["name","type","prefix","credentials","id"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Backup Destinations","team"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The name of the backup destination.","example":"Example Backup Destination"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200},"type":{"type":"string","enum":["s3"],"description":"Type of the backup destination.","default":"s3"},"prefix":{"type":"string","pattern":"^([a-zA-Z0-9-_]+)\\/$","description":"A prefix path to add to the bucket objects if not writing to /"},"credentials":{"type":"object","properties":{"accessKey":{"type":"string"},"secretKey":{"type":"string"},"bucketName":{"type":"string"},"region":{"type":"string"},"endpoint":{"type":"string","description":"S3 destination including region, fe s3.us-west-2.amazonaws.com"}},"required":["accessKey","secretKey","bucketName","region","endpoint"],"additionalProperties":false,"description":"Credentials used for the backup destination."}},"required":["name","type","prefix","credentials"],"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Account > BackupDestinations > General > Create","x-nf-team-scoped":true,"x-nf-cli-command":["add","backup-destination"]},"v1-backup-destinations--backupDestinationId--get":{"operationId":"getBackupDestinationsBackupdestinationid","summary":"Get backup destination","description":"View a backup destination, including secrets.","parameters":[{"name":"backupDestinationId","type":"string","required":true,"description":"ID of the backup destination","example":"example-destination","in":"path","schema":{"name":"backupDestinationId","type":"string","required":true,"description":"ID of the backup destination","example":"example-destination","in":"path"}}],"responses":{"200":{"description":"Details of the backup destination.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The name of the backup destination.","example":"Example Backup Destination"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200},"type":{"type":"string","enum":["s3"],"description":"Type of the backup destination.","default":"s3"},"prefix":{"type":"string","pattern":"^([a-zA-Z0-9-_]+)\\/$","description":"A prefix path to add to the bucket objects if not writing to /"},"credentials":{"type":"object","properties":{"accessKey":{"type":"string"},"secretKey":{"type":"string"},"bucketName":{"type":"string"},"region":{"type":"string"},"endpoint":{"type":"string","description":"S3 destination including region, fe s3.us-west-2.amazonaws.com"}},"required":["accessKey","secretKey","bucketName","region","endpoint"],"additionalProperties":false,"description":"Credentials used for the backup destination."},"id":{"type":"string","description":"Identifier for the backup destination","example":"example-backup-destination"},"createdAt":{"type":"string","format":"date-time","description":"time of creation"},"updatedAt":{"type":"string","format":"date-time","description":"time of update"}},"required":["name","type","prefix","credentials","id"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Backup Destinations"],"security":[],"x-nf-permission-required":"Account > BackupDestinations > General > Read","x-nf-team-scoped":true,"x-nf-cli-command":["get","backup-destination"]},"v1-backup-destinations--backupDestinationId--get-team-scoped":{"operationId":"getBackupDestinationsBackupdestinationid","summary":"Get backup destination","description":"View a backup destination, including secrets.","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"backupDestinationId","type":"string","required":true,"description":"ID of the backup destination","example":"example-destination","in":"path","schema":{"name":"backupDestinationId","type":"string","required":true,"description":"ID of the backup destination","example":"example-destination","in":"path"}}],"responses":{"200":{"description":"Details of the backup destination.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The name of the backup destination.","example":"Example Backup Destination"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200},"type":{"type":"string","enum":["s3"],"description":"Type of the backup destination.","default":"s3"},"prefix":{"type":"string","pattern":"^([a-zA-Z0-9-_]+)\\/$","description":"A prefix path to add to the bucket objects if not writing to /"},"credentials":{"type":"object","properties":{"accessKey":{"type":"string"},"secretKey":{"type":"string"},"bucketName":{"type":"string"},"region":{"type":"string"},"endpoint":{"type":"string","description":"S3 destination including region, fe s3.us-west-2.amazonaws.com"}},"required":["accessKey","secretKey","bucketName","region","endpoint"],"additionalProperties":false,"description":"Credentials used for the backup destination."},"id":{"type":"string","description":"Identifier for the backup destination","example":"example-backup-destination"},"createdAt":{"type":"string","format":"date-time","description":"time of creation"},"updatedAt":{"type":"string","format":"date-time","description":"time of update"}},"required":["name","type","prefix","credentials","id"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Backup Destinations","team"],"security":[],"x-nf-permission-required":"Account > BackupDestinations > General > Read","x-nf-team-scoped":true,"x-nf-cli-command":["get","backup-destination"]},"v1-backup-destinations--backupDestinationId--patch":{"operationId":"patchBackupDestinationsBackupdestinationid","summary":"Patch backup destination","description":"Updates a backup destination.","parameters":[{"name":"backupDestinationId","type":"string","required":true,"description":"ID of the backup destination","example":"example-destination","in":"path","schema":{"name":"backupDestinationId","type":"string","required":true,"description":"ID of the backup destination","example":"example-destination","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Backup Destinations"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The name of the backup destination.","example":"Example Backup Destination"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200},"credentials":{"type":"object","properties":{"accessKey":{"type":"string"},"secretKey":{"type":"string"},"bucketName":{"type":"string"},"region":{"type":"string"},"endpoint":{"type":"string","description":"S3 destination including region, fe s3.us-west-2.amazonaws.com"}},"required":["accessKey","secretKey","bucketName","region","endpoint"],"additionalProperties":false,"description":"Credentials used for the backup destination."}},"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Account > BackupDestinations > General > Update","x-nf-team-scoped":true,"x-nf-cli-command":["patch","backup-destination"]},"v1-backup-destinations--backupDestinationId--patch-team-scoped":{"operationId":"patchBackupDestinationsBackupdestinationid","summary":"Patch backup destination","description":"Updates a backup destination.","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"backupDestinationId","type":"string","required":true,"description":"ID of the backup destination","example":"example-destination","in":"path","schema":{"name":"backupDestinationId","type":"string","required":true,"description":"ID of the backup destination","example":"example-destination","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Backup Destinations","team"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The name of the backup destination.","example":"Example Backup Destination"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200},"credentials":{"type":"object","properties":{"accessKey":{"type":"string"},"secretKey":{"type":"string"},"bucketName":{"type":"string"},"region":{"type":"string"},"endpoint":{"type":"string","description":"S3 destination including region, fe s3.us-west-2.amazonaws.com"}},"required":["accessKey","secretKey","bucketName","region","endpoint"],"additionalProperties":false,"description":"Credentials used for the backup destination."}},"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Account > BackupDestinations > General > Update","x-nf-team-scoped":true,"x-nf-cli-command":["patch","backup-destination"]},"v1-backup-destinations--backupDestinationId--delete":{"operationId":"deleteBackupDestinationsBackupdestinationid","summary":"Delete backup destination","description":"Delete a backup destination.","parameters":[{"name":"backupDestinationId","type":"string","required":true,"description":"ID of the backup destination","example":"example-destination","in":"path","schema":{"name":"backupDestinationId","type":"string","required":true,"description":"ID of the backup destination","example":"example-destination","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Backup Destinations"],"security":[],"x-nf-permission-required":"Account > BackupDestinations > General > Delete","x-nf-team-scoped":true,"x-nf-cli-command":["delete","backup-destination"]},"v1-backup-destinations--backupDestinationId--delete-team-scoped":{"operationId":"deleteBackupDestinationsBackupdestinationid","summary":"Delete backup destination","description":"Delete a backup destination.","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"backupDestinationId","type":"string","required":true,"description":"ID of the backup destination","example":"example-destination","in":"path","schema":{"name":"backupDestinationId","type":"string","required":true,"description":"ID of the backup destination","example":"example-destination","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Backup Destinations","team"],"security":[],"x-nf-permission-required":"Account > BackupDestinations > General > Delete","x-nf-team-scoped":true,"x-nf-cli-command":["delete","backup-destination"]},"v1-backup-destinations--backupDestinationId--backups-get":{"operationId":"getBackupDestinationsBackupdestinationidBackups","summary":"List destinations backups","description":"Lists the backups associated with a backup destinations.","parameters":[{"name":"backupDestinationId","type":"string","required":true,"description":"ID of the backup destination","example":"example-destination","in":"path","schema":{"name":"backupDestinationId","type":"string","required":true,"description":"ID of the backup destination","example":"example-destination","in":"path"}},{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query","schema":{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query"}},{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query","schema":{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query"}},{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query","schema":{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query"}}],"responses":{"200":{"description":"A list of backups saved to this backup destination.","schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"The identifier for the backup.","example":"example-backup"},"name":{"type":"string","description":"The name of the backup.","example":"Example Backup"},"status":{"type":"string","enum":["scheduled","in-progress","completed","aborting","aborted","failed","not-supported"],"description":"The current status of the backup.","example":"completed"},"project":{"type":"object","properties":{"id":{"type":"string","description":"ID of the project this backup was taken for","example":"example-project"},"name":{"type":"string","description":"Name of the project this backup was taken for","example":"Example Project"}},"additionalProperties":false},"addon":{"type":"object","properties":{"id":{"type":"string","description":"ID of the addon this backup was taken for","example":"example-addon"},"name":{"type":"string","description":"Name of the addon this backup was taken for","example":"Example Addon"}},"additionalProperties":false},"config":{"type":"object","properties":{"addonVersion":{"type":"string","description":"The version of the addon at the time of the backup. The addon will be restored to this version when the backup is restored.","example":"4.4.8"},"addonType":{"type":"string","description":"The type of the addon this backup was taken for.","example":"mongodb"},"source":{"type":"object","properties":{"type":{"type":"string","enum":["global"],"description":"The type of backup.","example":"global"}},"additionalProperties":false,"description":"Data about the source of the backup."},"size":{"type":"string","description":"The size of the backup, in bytes","example":"1234"}},"required":["size"],"additionalProperties":false,"description":"Data about the backup configuration."},"schedules":{"type":"array","items":{"type":"object","properties":{"interval":{"type":"string","enum":["hourly","daily","weekly"],"description":"The interval between backups. Each addon can only have one backup schedule of each interval for each backup type.","example":"weekly"},"minute":{"type":"array","items":{"type":"integer","minimum":0,"maximum":59,"description":"A minute when the backup should be performed.","example":30},"uniqueItems":true,"description":"An array of minutes when the backup should be performed."},"hour":{"type":"array","items":{"type":"integer","minimum":0,"maximum":23,"description":"An hour when the backup should be performed, in 24 hour format.","example":18},"uniqueItems":true,"description":"An array of hours in 24 hour format when the backup should be performed. At these hours, a backup will be performed at each of the minutes provided in the `minute` field. Required for `daily` and `weekly` intervals and unavailable for `hourly` intervals."},"day":{"type":"array","items":{"type":"integer","minimum":0,"maximum":6,"description":"A day of the week when the backup should be performed, where `0` represents Monday and `6` represents Sunday.","example":4},"uniqueItems":true,"description":"An array of days of the week when the backup should be performed, where `0` represents Monday and `6` represents Sunday. On these days, a backup will be performed at each of the minutes provided in the `minute` field whenever it is an hour from the `hour` field. Required for `weekly` intervals and unavailable for `hourly` and `daily` intervals."}},"required":["interval","minute"],"additionalProperties":false},"description":"The schedules this backup was taken for."},"expiredBy":{"type":"number","format":"float","description":"The time the backup will expiry.","example":"1729232400000.0"},"createdAt":{"type":"string","description":"The time the backup was initiated.","example":"2021-01-20T11:19:53.175Z"},"completedAt":{"type":"string","description":"The time the backup was completed.","example":"2021-01-20T11:19:54.494Z"}},"required":["id","name","status","config","expiredBy","createdAt","completedAt"],"additionalProperties":false,"description":"Data about a backup."},"description":"Result data."},"pagination":{"type":"object","properties":{"hasNextPage":{"type":"boolean","description":"Is there another page of results available?","example":false},"cursor":{"type":"string","description":"The cursor to access the next page of results."},"count":{"type":"number","format":"float","description":"The number of results returned by this request.","example":1}},"required":["hasNextPage","count"],"additionalProperties":false,"description":"Data about the endpoint pagination."}},"required":["data","pagination"],"additionalProperties":false,"description":"Response object."}}},"tags":["Backup Destinations"],"security":[],"x-nf-permission-required":"Account > BackupDestinations > General > Read","x-nf-team-scoped":true,"x-nf-cli-command":["list","backup-destinations-backups"]},"v1-backup-destinations--backupDestinationId--backups-get-team-scoped":{"operationId":"getBackupDestinationsBackupdestinationidBackups","summary":"List destinations backups","description":"Lists the backups associated with a backup destinations.","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"backupDestinationId","type":"string","required":true,"description":"ID of the backup destination","example":"example-destination","in":"path","schema":{"name":"backupDestinationId","type":"string","required":true,"description":"ID of the backup destination","example":"example-destination","in":"path"}},{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query","schema":{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query"}},{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query","schema":{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query"}},{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query","schema":{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query"}}],"responses":{"200":{"description":"A list of backups saved to this backup destination.","schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"The identifier for the backup.","example":"example-backup"},"name":{"type":"string","description":"The name of the backup.","example":"Example Backup"},"status":{"type":"string","enum":["scheduled","in-progress","completed","aborting","aborted","failed","not-supported"],"description":"The current status of the backup.","example":"completed"},"project":{"type":"object","properties":{"id":{"type":"string","description":"ID of the project this backup was taken for","example":"example-project"},"name":{"type":"string","description":"Name of the project this backup was taken for","example":"Example Project"}},"additionalProperties":false},"addon":{"type":"object","properties":{"id":{"type":"string","description":"ID of the addon this backup was taken for","example":"example-addon"},"name":{"type":"string","description":"Name of the addon this backup was taken for","example":"Example Addon"}},"additionalProperties":false},"config":{"type":"object","properties":{"addonVersion":{"type":"string","description":"The version of the addon at the time of the backup. The addon will be restored to this version when the backup is restored.","example":"4.4.8"},"addonType":{"type":"string","description":"The type of the addon this backup was taken for.","example":"mongodb"},"source":{"type":"object","properties":{"type":{"type":"string","enum":["global"],"description":"The type of backup.","example":"global"}},"additionalProperties":false,"description":"Data about the source of the backup."},"size":{"type":"string","description":"The size of the backup, in bytes","example":"1234"}},"required":["size"],"additionalProperties":false,"description":"Data about the backup configuration."},"schedules":{"type":"array","items":{"type":"object","properties":{"interval":{"type":"string","enum":["hourly","daily","weekly"],"description":"The interval between backups. Each addon can only have one backup schedule of each interval for each backup type.","example":"weekly"},"minute":{"type":"array","items":{"type":"integer","minimum":0,"maximum":59,"description":"A minute when the backup should be performed.","example":30},"uniqueItems":true,"description":"An array of minutes when the backup should be performed."},"hour":{"type":"array","items":{"type":"integer","minimum":0,"maximum":23,"description":"An hour when the backup should be performed, in 24 hour format.","example":18},"uniqueItems":true,"description":"An array of hours in 24 hour format when the backup should be performed. At these hours, a backup will be performed at each of the minutes provided in the `minute` field. Required for `daily` and `weekly` intervals and unavailable for `hourly` intervals."},"day":{"type":"array","items":{"type":"integer","minimum":0,"maximum":6,"description":"A day of the week when the backup should be performed, where `0` represents Monday and `6` represents Sunday.","example":4},"uniqueItems":true,"description":"An array of days of the week when the backup should be performed, where `0` represents Monday and `6` represents Sunday. On these days, a backup will be performed at each of the minutes provided in the `minute` field whenever it is an hour from the `hour` field. Required for `weekly` intervals and unavailable for `hourly` and `daily` intervals."}},"required":["interval","minute"],"additionalProperties":false},"description":"The schedules this backup was taken for."},"expiredBy":{"type":"number","format":"float","description":"The time the backup will expiry.","example":"1729232400000.0"},"createdAt":{"type":"string","description":"The time the backup was initiated.","example":"2021-01-20T11:19:53.175Z"},"completedAt":{"type":"string","description":"The time the backup was completed.","example":"2021-01-20T11:19:54.494Z"}},"required":["id","name","status","config","expiredBy","createdAt","completedAt"],"additionalProperties":false,"description":"Data about a backup."},"description":"Result data."},"pagination":{"type":"object","properties":{"hasNextPage":{"type":"boolean","description":"Is there another page of results available?","example":false},"cursor":{"type":"string","description":"The cursor to access the next page of results."},"count":{"type":"number","format":"float","description":"The number of results returned by this request.","example":1}},"required":["hasNextPage","count"],"additionalProperties":false,"description":"Data about the endpoint pagination."}},"required":["data","pagination"],"additionalProperties":false,"description":"Response object."}}},"tags":["Backup Destinations","team"],"security":[],"x-nf-permission-required":"Account > BackupDestinations > General > Read","x-nf-team-scoped":true,"x-nf-cli-command":["list","backup-destinations-backups"]},"v1-billing-invoices-get":{"operationId":"getBillingInvoices","summary":"List invoices","description":"Lists finalized invoices.","parameters":[{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query","schema":{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query"}},{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query","schema":{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query"}},{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query","schema":{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query"}}],"responses":{"200":{"description":"A list of invoices.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"invoices":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Identifier for the invoice."},"period":{"type":"object","properties":{"start":{"type":"number","format":"float","description":"The start of the billing period, as a Unix timestamp."},"end":{"type":"number","format":"float","description":"The end of the billing period, as a Unix timestamp."}},"additionalProperties":false},"currency":{"type":"string","description":"The currency code.","example":"usd"},"paasUsage":{"type":"object","properties":{"price":{"type":"object","properties":{"total":{"type":"number","format":"float","description":"The total PaaS price, in cents."},"cpu":{"type":"number","format":"float","description":"The CPU usage price, in cents."},"memory":{"type":"number","format":"float","description":"The memory usage price, in cents."},"storage":{"type":"number","format":"float","description":"The storage usage price, in cents."},"gpu":{"type":"number","format":"float","description":"The GPU usage price, in cents."}},"additionalProperties":false}},"additionalProperties":false,"description":"The PaaS usage price total."},"byocUsage":{"type":"object","properties":{"price":{"type":"object","properties":{"total":{"type":"number","format":"float","description":"The total BYOC price, in cents."},"vcpu":{"type":"number","format":"float","description":"The vCPU usage price, in cents."},"memory":{"type":"number","format":"float","description":"The memory usage price, in cents."},"gpuMemory":{"type":"number","format":"float","description":"The GPU memory usage price, in cents."},"cluster":{"type":"number","format":"float","description":"The cluster usage price, in cents."}},"additionalProperties":false,"description":"The customer-level BYOC price total. Always reflects the full customer total, regardless of drill-down filters."}},"additionalProperties":false},"total":{"type":"number","format":"float","description":"The total cost of the invoice, including tax, in cents."},"subTotal":{"type":"number","format":"float","description":"The subtotal before tax and discounts, in cents."},"paid":{"type":"boolean","description":"Whether the invoice has been paid."}},"additionalProperties":false}}},"additionalProperties":false,"description":"Result data."},"pagination":{"type":"object","properties":{"hasNextPage":{"type":"boolean","description":"Is there another page of results available?","example":false},"cursor":{"type":"string","description":"The cursor to access the next page of results."},"count":{"type":"number","format":"float","description":"The number of results returned by this request.","example":1}},"required":["hasNextPage","count"],"additionalProperties":false,"description":"Data about the endpoint pagination."}},"required":["data","pagination"],"additionalProperties":false,"description":"Response object."}}},"tags":["Billing","org"],"security":[],"x-nf-permission-required":"Account > Billing > General > Read","x-nf-supports-orgs":true,"x-nf-team-scoped":true,"x-nf-org-scoped":true,"x-nf-cli-command":["list","invoices"]},"v1-billing-invoices-get-team-scoped":{"operationId":"getBillingInvoices","summary":"List invoices","description":"Lists finalized invoices.","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query","schema":{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query"}},{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query","schema":{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query"}},{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query","schema":{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query"}}],"responses":{"200":{"description":"A list of invoices.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"invoices":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Identifier for the invoice."},"period":{"type":"object","properties":{"start":{"type":"number","format":"float","description":"The start of the billing period, as a Unix timestamp."},"end":{"type":"number","format":"float","description":"The end of the billing period, as a Unix timestamp."}},"additionalProperties":false},"currency":{"type":"string","description":"The currency code.","example":"usd"},"paasUsage":{"type":"object","properties":{"price":{"type":"object","properties":{"total":{"type":"number","format":"float","description":"The total PaaS price, in cents."},"cpu":{"type":"number","format":"float","description":"The CPU usage price, in cents."},"memory":{"type":"number","format":"float","description":"The memory usage price, in cents."},"storage":{"type":"number","format":"float","description":"The storage usage price, in cents."},"gpu":{"type":"number","format":"float","description":"The GPU usage price, in cents."}},"additionalProperties":false}},"additionalProperties":false,"description":"The PaaS usage price total."},"byocUsage":{"type":"object","properties":{"price":{"type":"object","properties":{"total":{"type":"number","format":"float","description":"The total BYOC price, in cents."},"vcpu":{"type":"number","format":"float","description":"The vCPU usage price, in cents."},"memory":{"type":"number","format":"float","description":"The memory usage price, in cents."},"gpuMemory":{"type":"number","format":"float","description":"The GPU memory usage price, in cents."},"cluster":{"type":"number","format":"float","description":"The cluster usage price, in cents."}},"additionalProperties":false,"description":"The customer-level BYOC price total. Always reflects the full customer total, regardless of drill-down filters."}},"additionalProperties":false},"total":{"type":"number","format":"float","description":"The total cost of the invoice, including tax, in cents."},"subTotal":{"type":"number","format":"float","description":"The subtotal before tax and discounts, in cents."},"paid":{"type":"boolean","description":"Whether the invoice has been paid."}},"additionalProperties":false}}},"additionalProperties":false,"description":"Result data."},"pagination":{"type":"object","properties":{"hasNextPage":{"type":"boolean","description":"Is there another page of results available?","example":false},"cursor":{"type":"string","description":"The cursor to access the next page of results."},"count":{"type":"number","format":"float","description":"The number of results returned by this request.","example":1}},"required":["hasNextPage","count"],"additionalProperties":false,"description":"Data about the endpoint pagination."}},"required":["data","pagination"],"additionalProperties":false,"description":"Response object."}}},"tags":["Billing","team"],"security":[],"x-nf-permission-required":"Account > Billing > General > Read","x-nf-supports-orgs":true,"x-nf-team-scoped":true,"x-nf-org-scoped":true,"x-nf-cli-command":["list","invoices"]},"v1-billing-invoices--invoiceId--get":{"operationId":"getBillingInvoicesInvoiceid","summary":"Get invoice","description":"Gets details about a given invoice.","parameters":[{"name":"invoiceId","type":"string","required":true,"description":"ID of the invoice","example":"835994C3-14310","in":"path","schema":{"name":"invoiceId","type":"string","required":true,"description":"ID of the invoice","example":"835994C3-14310","in":"path"}},{"name":"teamId","type":"string","minLength":24,"maxLength":24,"description":"The ID of the team to filter by.","in":"query","schema":{"name":"teamId","type":"string","minLength":24,"maxLength":24,"description":"The ID of the team to filter by.","in":"query"}},{"name":"projectId","type":"string","minLength":24,"maxLength":24,"description":"The ID of the project to filter by.","in":"query","schema":{"name":"projectId","type":"string","minLength":24,"maxLength":24,"description":"The ID of the project to filter by.","in":"query"}},{"name":"resourceType","type":"string","enum":["job","service","addon","volume","opentofu-job","llm-model-deployment","external-addon"],"description":"The resource type to filter by (e.g. service, job, addon, volume).","in":"query","schema":{"name":"resourceType","type":"string","enum":["job","service","addon","volume","opentofu-job","llm-model-deployment","external-addon"],"description":"The resource type to filter by (e.g. service, job, addon, volume).","in":"query"}}],"responses":{"200":{"description":"Invoice details.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","description":"Identifier for the invoice."},"period":{"type":"object","properties":{"start":{"type":"number","format":"float","description":"The start of the billing period, as a Unix timestamp."},"end":{"type":"number","format":"float","description":"The end of the billing period, as a Unix timestamp."}},"additionalProperties":false},"currency":{"type":"string","description":"The currency code.","example":"usd"},"byocUsage":{"type":"object","properties":{"price":{"type":"object","properties":{"total":{"type":"number","format":"float","description":"The total BYOC price, in cents."},"vcpu":{"type":"number","format":"float","description":"The vCPU usage price, in cents."},"memory":{"type":"number","format":"float","description":"The memory usage price, in cents."},"gpuMemory":{"type":"number","format":"float","description":"The GPU memory usage price, in cents."},"cluster":{"type":"number","format":"float","description":"The cluster usage price, in cents."}},"additionalProperties":false,"description":"The customer-level BYOC price total. Always reflects the full customer total, regardless of drill-down filters."}},"additionalProperties":false},"paasUsage":{"type":"object","properties":{"price":{"type":"object","properties":{"total":{"type":"number","format":"float","description":"The total PaaS price, in cents."},"cpu":{"type":"number","format":"float","description":"The CPU usage price, in cents."},"memory":{"type":"number","format":"float","description":"The memory usage price, in cents."},"storage":{"type":"number","format":"float","description":"The storage usage price, in cents."},"gpu":{"type":"number","format":"float","description":"The GPU usage price, in cents."}},"additionalProperties":false},"teams":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Identifier for the team."},"name":{"type":"string","description":"The name of the team."},"price":{"type":"object","properties":{"total":{"type":"number","format":"float","description":"The total PaaS price, in cents."},"cpu":{"type":"number","format":"float","description":"The CPU usage price, in cents."},"memory":{"type":"number","format":"float","description":"The memory usage price, in cents."},"storage":{"type":"number","format":"float","description":"The storage usage price, in cents."},"gpu":{"type":"number","format":"float","description":"The GPU usage price, in cents."}},"additionalProperties":false,"description":"The team's PaaS price. When a projectId or resourceType filter is applied, this reflects only the filtered slice (e.g. one project, or one resource type across the team)."},"projects":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Identifier for the project."},"name":{"type":"string","description":"The name of the project."},"price":{"type":"object","properties":{"total":{"type":"number","format":"float","description":"The total PaaS price, in cents."},"cpu":{"type":"number","format":"float","description":"The CPU usage price, in cents."},"memory":{"type":"number","format":"float","description":"The memory usage price, in cents."},"storage":{"type":"number","format":"float","description":"The storage usage price, in cents."},"gpu":{"type":"number","format":"float","description":"The GPU usage price, in cents."}},"additionalProperties":false,"description":"The project's PaaS price. When a resourceType filter is applied, this reflects only that resource type's spend within the project."},"resourceTypes":{"type":"array","items":{"type":"object","properties":{"resourceType":{"type":"string","description":"The type of the resource (service, job, addon, volume, etc.)."},"price":{"type":"object","properties":{"total":{"type":"number","format":"float","description":"The total PaaS price, in cents."},"cpu":{"type":"number","format":"float","description":"The CPU usage price, in cents."},"memory":{"type":"number","format":"float","description":"The memory usage price, in cents."},"storage":{"type":"number","format":"float","description":"The storage usage price, in cents."},"gpu":{"type":"number","format":"float","description":"The GPU usage price, in cents."}},"additionalProperties":false},"resources":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Identifier for the resource."},"name":{"type":"string","description":"The name of the resource."},"price":{"type":"object","properties":{"total":{"type":"number","format":"float","description":"The total PaaS price, in cents."},"cpu":{"type":"number","format":"float","description":"The CPU usage price, in cents."},"memory":{"type":"number","format":"float","description":"The memory usage price, in cents."},"storage":{"type":"number","format":"float","description":"The storage usage price, in cents."},"gpu":{"type":"number","format":"float","description":"The GPU usage price, in cents."}},"additionalProperties":false}},"additionalProperties":false},"description":"An array of resources of this type."}},"additionalProperties":false},"description":"An array of resource types. Present when a projectId or resourceType filter is applied."}},"additionalProperties":false},"description":"An array of projects for this team. Present when a teamId or projectId filter is applied, or when the response contains only one team."}},"additionalProperties":false},"description":"An array of teams with price totals. Projects are included when a teamId or projectId filter is applied, or when there is only one team. Resources are included when a projectId or resourceType filter is applied."}},"required":["teams"],"additionalProperties":false},"lineItems":{"type":"array","items":{"type":"object","properties":{"title":{"type":"string","description":"A description of the line item."},"total":{"type":"number","format":"float","description":"The total cost of the line item, in cents."},"base":{"type":"number","format":"float","description":"The base amount before proration, in cents."},"proration":{"type":"number","format":"float","description":"The proration adjustment amount, in cents."}},"additionalProperties":false},"description":"An array of line items for this invoice."},"subTotal":{"type":"number","format":"float","description":"The subtotal before tax and discounts, in cents."},"discounts":{"type":"object","properties":{"total":{"type":"number","format":"float","description":"The total discount amount, in cents."}},"additionalProperties":false},"tax":{"type":"object","properties":{"percent":{"type":"number","format":"float","description":"The tax percentage."},"amount":{"type":"number","format":"float","description":"The tax amount, in cents."}},"additionalProperties":false},"total":{"type":"number","format":"float","description":"The total cost of the invoice, including tax, in cents."},"paid":{"type":"boolean","description":"Whether the invoice has been paid."}},"required":["id","period"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Billing","org"],"security":[],"x-nf-permission-required":"Account > Billing > General > Read","x-nf-supports-orgs":true,"x-nf-team-scoped":true,"x-nf-org-scoped":true,"x-nf-cli-command":["get","invoice"]},"v1-billing-invoices--invoiceId--get-team-scoped":{"operationId":"getBillingInvoicesInvoiceid","summary":"Get invoice","description":"Gets details about a given invoice.","parameters":[{"name":"invoiceId","type":"string","required":true,"description":"ID of the invoice","example":"835994C3-14310","in":"path","schema":{"name":"invoiceId","type":"string","required":true,"description":"ID of the invoice","example":"835994C3-14310","in":"path"}},{"name":"teamId","type":"string","minLength":24,"maxLength":24,"description":"The ID of the team to filter by.","in":"query","schema":{"name":"teamId","type":"string","minLength":24,"maxLength":24,"description":"The ID of the team to filter by.","in":"query"}},{"name":"projectId","type":"string","minLength":24,"maxLength":24,"description":"The ID of the project to filter by.","in":"query","schema":{"name":"projectId","type":"string","minLength":24,"maxLength":24,"description":"The ID of the project to filter by.","in":"query"}},{"name":"resourceType","type":"string","enum":["job","service","addon","volume","opentofu-job","llm-model-deployment","external-addon"],"description":"The resource type to filter by (e.g. service, job, addon, volume).","in":"query","schema":{"name":"resourceType","type":"string","enum":["job","service","addon","volume","opentofu-job","llm-model-deployment","external-addon"],"description":"The resource type to filter by (e.g. service, job, addon, volume).","in":"query"}}],"responses":{"200":{"description":"Invoice details.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","description":"Identifier for the invoice."},"period":{"type":"object","properties":{"start":{"type":"number","format":"float","description":"The start of the billing period, as a Unix timestamp."},"end":{"type":"number","format":"float","description":"The end of the billing period, as a Unix timestamp."}},"additionalProperties":false},"currency":{"type":"string","description":"The currency code.","example":"usd"},"byocUsage":{"type":"object","properties":{"price":{"type":"object","properties":{"total":{"type":"number","format":"float","description":"The total BYOC price, in cents."},"vcpu":{"type":"number","format":"float","description":"The vCPU usage price, in cents."},"memory":{"type":"number","format":"float","description":"The memory usage price, in cents."},"gpuMemory":{"type":"number","format":"float","description":"The GPU memory usage price, in cents."},"cluster":{"type":"number","format":"float","description":"The cluster usage price, in cents."}},"additionalProperties":false,"description":"The customer-level BYOC price total. Always reflects the full customer total, regardless of drill-down filters."}},"additionalProperties":false},"paasUsage":{"type":"object","properties":{"price":{"type":"object","properties":{"total":{"type":"number","format":"float","description":"The total PaaS price, in cents."},"cpu":{"type":"number","format":"float","description":"The CPU usage price, in cents."},"memory":{"type":"number","format":"float","description":"The memory usage price, in cents."},"storage":{"type":"number","format":"float","description":"The storage usage price, in cents."},"gpu":{"type":"number","format":"float","description":"The GPU usage price, in cents."}},"additionalProperties":false},"teams":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Identifier for the team."},"name":{"type":"string","description":"The name of the team."},"price":{"type":"object","properties":{"total":{"type":"number","format":"float","description":"The total PaaS price, in cents."},"cpu":{"type":"number","format":"float","description":"The CPU usage price, in cents."},"memory":{"type":"number","format":"float","description":"The memory usage price, in cents."},"storage":{"type":"number","format":"float","description":"The storage usage price, in cents."},"gpu":{"type":"number","format":"float","description":"The GPU usage price, in cents."}},"additionalProperties":false,"description":"The team's PaaS price. When a projectId or resourceType filter is applied, this reflects only the filtered slice (e.g. one project, or one resource type across the team)."},"projects":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Identifier for the project."},"name":{"type":"string","description":"The name of the project."},"price":{"type":"object","properties":{"total":{"type":"number","format":"float","description":"The total PaaS price, in cents."},"cpu":{"type":"number","format":"float","description":"The CPU usage price, in cents."},"memory":{"type":"number","format":"float","description":"The memory usage price, in cents."},"storage":{"type":"number","format":"float","description":"The storage usage price, in cents."},"gpu":{"type":"number","format":"float","description":"The GPU usage price, in cents."}},"additionalProperties":false,"description":"The project's PaaS price. When a resourceType filter is applied, this reflects only that resource type's spend within the project."},"resourceTypes":{"type":"array","items":{"type":"object","properties":{"resourceType":{"type":"string","description":"The type of the resource (service, job, addon, volume, etc.)."},"price":{"type":"object","properties":{"total":{"type":"number","format":"float","description":"The total PaaS price, in cents."},"cpu":{"type":"number","format":"float","description":"The CPU usage price, in cents."},"memory":{"type":"number","format":"float","description":"The memory usage price, in cents."},"storage":{"type":"number","format":"float","description":"The storage usage price, in cents."},"gpu":{"type":"number","format":"float","description":"The GPU usage price, in cents."}},"additionalProperties":false},"resources":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Identifier for the resource."},"name":{"type":"string","description":"The name of the resource."},"price":{"type":"object","properties":{"total":{"type":"number","format":"float","description":"The total PaaS price, in cents."},"cpu":{"type":"number","format":"float","description":"The CPU usage price, in cents."},"memory":{"type":"number","format":"float","description":"The memory usage price, in cents."},"storage":{"type":"number","format":"float","description":"The storage usage price, in cents."},"gpu":{"type":"number","format":"float","description":"The GPU usage price, in cents."}},"additionalProperties":false}},"additionalProperties":false},"description":"An array of resources of this type."}},"additionalProperties":false},"description":"An array of resource types. Present when a projectId or resourceType filter is applied."}},"additionalProperties":false},"description":"An array of projects for this team. Present when a teamId or projectId filter is applied, or when the response contains only one team."}},"additionalProperties":false},"description":"An array of teams with price totals. Projects are included when a teamId or projectId filter is applied, or when there is only one team. Resources are included when a projectId or resourceType filter is applied."}},"required":["teams"],"additionalProperties":false},"lineItems":{"type":"array","items":{"type":"object","properties":{"title":{"type":"string","description":"A description of the line item."},"total":{"type":"number","format":"float","description":"The total cost of the line item, in cents."},"base":{"type":"number","format":"float","description":"The base amount before proration, in cents."},"proration":{"type":"number","format":"float","description":"The proration adjustment amount, in cents."}},"additionalProperties":false},"description":"An array of line items for this invoice."},"subTotal":{"type":"number","format":"float","description":"The subtotal before tax and discounts, in cents."},"discounts":{"type":"object","properties":{"total":{"type":"number","format":"float","description":"The total discount amount, in cents."}},"additionalProperties":false},"tax":{"type":"object","properties":{"percent":{"type":"number","format":"float","description":"The tax percentage."},"amount":{"type":"number","format":"float","description":"The tax amount, in cents."}},"additionalProperties":false},"total":{"type":"number","format":"float","description":"The total cost of the invoice, including tax, in cents."},"paid":{"type":"boolean","description":"Whether the invoice has been paid."}},"required":["id","period"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Billing","team"],"security":[],"x-nf-permission-required":"Account > Billing > General > Read","x-nf-supports-orgs":true,"x-nf-team-scoped":true,"x-nf-org-scoped":true,"x-nf-cli-command":["get","invoice"]},"v1-billing-usage-get":{"operationId":"getBillingUsage","summary":"List usage","description":"Lists hourly usage entries.","parameters":[{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query","schema":{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query"}},{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query","schema":{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query"}},{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query","schema":{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query"}},{"name":"startTime","type":"integer","description":"The Unix timestamp to start from (inclusive).","in":"query","schema":{"name":"startTime","type":"integer","description":"The Unix timestamp to start from (inclusive).","in":"query"}},{"name":"endTime","type":"integer","description":"The Unix timestamp to end at (exclusive). Requires startTime.","in":"query","schema":{"name":"endTime","type":"integer","description":"The Unix timestamp to end at (exclusive). Requires startTime.","in":"query"}}],"responses":{"200":{"description":"A list of hourly usage entries.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"usage":{"type":"array","items":{"type":"object","properties":{"timestamp":{"type":"number","format":"float","description":"The Unix timestamp of the billing hour."},"paasUsage":{"type":"object","properties":{"price":{"type":"object","properties":{"total":{"type":"number","format":"float","description":"The total PaaS price, in cents."},"cpu":{"type":"number","format":"float","description":"The CPU usage price, in cents."},"memory":{"type":"number","format":"float","description":"The memory usage price, in cents."},"storage":{"type":"number","format":"float","description":"The storage usage price, in cents."},"gpu":{"type":"number","format":"float","description":"The GPU usage price, in cents."}},"additionalProperties":false}},"additionalProperties":false,"description":"The PaaS usage for this hour."},"byocUsage":{"type":"object","properties":{"price":{"type":"object","properties":{"total":{"type":"number","format":"float","description":"The total BYOC price, in cents."},"vcpu":{"type":"number","format":"float","description":"The vCPU usage price, in cents."},"memory":{"type":"number","format":"float","description":"The memory usage price, in cents."},"gpuMemory":{"type":"number","format":"float","description":"The GPU memory usage price, in cents."},"cluster":{"type":"number","format":"float","description":"The cluster usage price, in cents."}},"additionalProperties":false,"description":"The customer-level BYOC price total. Always reflects the full customer total, regardless of drill-down filters."}},"additionalProperties":false}},"additionalProperties":false},"description":"An array of hourly usage entries, sorted by most recent first."}},"additionalProperties":false,"description":"Result data."},"pagination":{"type":"object","properties":{"hasNextPage":{"type":"boolean","description":"Is there another page of results available?","example":false},"cursor":{"type":"string","description":"The cursor to access the next page of results."},"count":{"type":"number","format":"float","description":"The number of results returned by this request.","example":1}},"required":["hasNextPage","count"],"additionalProperties":false,"description":"Data about the endpoint pagination."}},"required":["data","pagination"],"additionalProperties":false,"description":"Response object."}}},"tags":["Billing","org"],"security":[],"x-nf-permission-required":"Account > Billing > General > Read","x-nf-supports-orgs":true,"x-nf-team-scoped":true,"x-nf-org-scoped":true,"x-nf-cli-command":["list","usage"]},"v1-billing-usage-get-team-scoped":{"operationId":"getBillingUsage","summary":"List usage","description":"Lists hourly usage entries.","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query","schema":{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query"}},{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query","schema":{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query"}},{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query","schema":{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query"}},{"name":"startTime","type":"integer","description":"The Unix timestamp to start from (inclusive).","in":"query","schema":{"name":"startTime","type":"integer","description":"The Unix timestamp to start from (inclusive).","in":"query"}},{"name":"endTime","type":"integer","description":"The Unix timestamp to end at (exclusive). Requires startTime.","in":"query","schema":{"name":"endTime","type":"integer","description":"The Unix timestamp to end at (exclusive). Requires startTime.","in":"query"}}],"responses":{"200":{"description":"A list of hourly usage entries.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"usage":{"type":"array","items":{"type":"object","properties":{"timestamp":{"type":"number","format":"float","description":"The Unix timestamp of the billing hour."},"paasUsage":{"type":"object","properties":{"price":{"type":"object","properties":{"total":{"type":"number","format":"float","description":"The total PaaS price, in cents."},"cpu":{"type":"number","format":"float","description":"The CPU usage price, in cents."},"memory":{"type":"number","format":"float","description":"The memory usage price, in cents."},"storage":{"type":"number","format":"float","description":"The storage usage price, in cents."},"gpu":{"type":"number","format":"float","description":"The GPU usage price, in cents."}},"additionalProperties":false}},"additionalProperties":false,"description":"The PaaS usage for this hour."},"byocUsage":{"type":"object","properties":{"price":{"type":"object","properties":{"total":{"type":"number","format":"float","description":"The total BYOC price, in cents."},"vcpu":{"type":"number","format":"float","description":"The vCPU usage price, in cents."},"memory":{"type":"number","format":"float","description":"The memory usage price, in cents."},"gpuMemory":{"type":"number","format":"float","description":"The GPU memory usage price, in cents."},"cluster":{"type":"number","format":"float","description":"The cluster usage price, in cents."}},"additionalProperties":false,"description":"The customer-level BYOC price total. Always reflects the full customer total, regardless of drill-down filters."}},"additionalProperties":false}},"additionalProperties":false},"description":"An array of hourly usage entries, sorted by most recent first."}},"additionalProperties":false,"description":"Result data."},"pagination":{"type":"object","properties":{"hasNextPage":{"type":"boolean","description":"Is there another page of results available?","example":false},"cursor":{"type":"string","description":"The cursor to access the next page of results."},"count":{"type":"number","format":"float","description":"The number of results returned by this request.","example":1}},"required":["hasNextPage","count"],"additionalProperties":false,"description":"Data about the endpoint pagination."}},"required":["data","pagination"],"additionalProperties":false,"description":"Response object."}}},"tags":["Billing","team"],"security":[],"x-nf-permission-required":"Account > Billing > General > Read","x-nf-supports-orgs":true,"x-nf-team-scoped":true,"x-nf-org-scoped":true,"x-nf-cli-command":["list","usage"]},"v1-billing-usage--timestamp--get":{"operationId":"getBillingUsageTimestamp","summary":"Get usage","description":"Gets usage details for a given billing hour.","parameters":[{"name":"timestamp","type":"string","required":true,"description":"Unix timestamp of the billing hour","example":"1655823815","in":"path","schema":{"name":"timestamp","type":"string","required":true,"description":"Unix timestamp of the billing hour","example":"1655823815","in":"path"}},{"name":"teamId","type":"string","minLength":24,"maxLength":24,"description":"The ID of the team to filter by.","in":"query","schema":{"name":"teamId","type":"string","minLength":24,"maxLength":24,"description":"The ID of the team to filter by.","in":"query"}},{"name":"projectId","type":"string","minLength":24,"maxLength":24,"description":"The ID of the project to filter by.","in":"query","schema":{"name":"projectId","type":"string","minLength":24,"maxLength":24,"description":"The ID of the project to filter by.","in":"query"}},{"name":"resourceType","type":"string","enum":["job","service","addon","volume","opentofu-job","llm-model-deployment","external-addon"],"description":"The resource type to filter by (e.g. service, job, addon, volume).","in":"query","schema":{"name":"resourceType","type":"string","enum":["job","service","addon","volume","opentofu-job","llm-model-deployment","external-addon"],"description":"The resource type to filter by (e.g. service, job, addon, volume).","in":"query"}}],"responses":{"200":{"description":"Hourly usage detail.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"timestamp":{"type":"number","format":"float","description":"The Unix timestamp of the billing hour."},"paasUsage":{"type":"object","properties":{"price":{"type":"object","properties":{"total":{"type":"number","format":"float","description":"The total PaaS price, in cents."},"cpu":{"type":"number","format":"float","description":"The CPU usage price, in cents."},"memory":{"type":"number","format":"float","description":"The memory usage price, in cents."},"storage":{"type":"number","format":"float","description":"The storage usage price, in cents."},"gpu":{"type":"number","format":"float","description":"The GPU usage price, in cents."}},"additionalProperties":false},"teams":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Identifier for the team."},"name":{"type":"string","description":"The name of the team."},"price":{"type":"object","properties":{"total":{"type":"number","format":"float","description":"The total PaaS price, in cents."},"cpu":{"type":"number","format":"float","description":"The CPU usage price, in cents."},"memory":{"type":"number","format":"float","description":"The memory usage price, in cents."},"storage":{"type":"number","format":"float","description":"The storage usage price, in cents."},"gpu":{"type":"number","format":"float","description":"The GPU usage price, in cents."}},"additionalProperties":false,"description":"The team's PaaS price. When a projectId or resourceType filter is applied, this reflects only the filtered slice (e.g. one project, or one resource type across the team)."},"projects":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Identifier for the project."},"name":{"type":"string","description":"The name of the project."},"price":{"type":"object","properties":{"total":{"type":"number","format":"float","description":"The total PaaS price, in cents."},"cpu":{"type":"number","format":"float","description":"The CPU usage price, in cents."},"memory":{"type":"number","format":"float","description":"The memory usage price, in cents."},"storage":{"type":"number","format":"float","description":"The storage usage price, in cents."},"gpu":{"type":"number","format":"float","description":"The GPU usage price, in cents."}},"additionalProperties":false,"description":"The project's PaaS price. When a resourceType filter is applied, this reflects only that resource type's spend within the project."},"resourceTypes":{"type":"array","items":{"type":"object","properties":{"resourceType":{"type":"string","description":"The type of the resource (service, job, addon, volume, etc.)."},"price":{"type":"object","properties":{"total":{"type":"number","format":"float","description":"The total PaaS price, in cents."},"cpu":{"type":"number","format":"float","description":"The CPU usage price, in cents."},"memory":{"type":"number","format":"float","description":"The memory usage price, in cents."},"storage":{"type":"number","format":"float","description":"The storage usage price, in cents."},"gpu":{"type":"number","format":"float","description":"The GPU usage price, in cents."}},"additionalProperties":false},"resources":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Identifier for the resource."},"name":{"type":"string","description":"The name of the resource."},"price":{"type":"object","properties":{"total":{"type":"number","format":"float","description":"The total PaaS price, in cents."},"cpu":{"type":"number","format":"float","description":"The CPU usage price, in cents."},"memory":{"type":"number","format":"float","description":"The memory usage price, in cents."},"storage":{"type":"number","format":"float","description":"The storage usage price, in cents."},"gpu":{"type":"number","format":"float","description":"The GPU usage price, in cents."}},"additionalProperties":false}},"additionalProperties":false},"description":"An array of resources of this type."}},"additionalProperties":false},"description":"An array of resource types. Present when a projectId or resourceType filter is applied."}},"additionalProperties":false},"description":"An array of projects for this team. Present when a teamId or projectId filter is applied, or when the response contains only one team."}},"additionalProperties":false},"description":"An array of teams with price totals. Projects are included when a teamId or projectId filter is applied, or when there is only one team. Resources are included when a projectId or resourceType filter is applied."}},"required":["teams"],"additionalProperties":false,"description":"The PaaS usage breakdown for this hour. The drill-down depth depends on the active filters."},"byocUsage":{"type":"object","properties":{"price":{"type":"object","properties":{"total":{"type":"number","format":"float","description":"The total BYOC price, in cents."},"vcpu":{"type":"number","format":"float","description":"The vCPU usage price, in cents."},"memory":{"type":"number","format":"float","description":"The memory usage price, in cents."},"gpuMemory":{"type":"number","format":"float","description":"The GPU memory usage price, in cents."},"cluster":{"type":"number","format":"float","description":"The cluster usage price, in cents."}},"additionalProperties":false,"description":"The customer-level BYOC price total. Always reflects the full customer total, regardless of drill-down filters."}},"additionalProperties":false}},"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Billing","org"],"security":[],"x-nf-permission-required":"Account > Billing > General > Read","x-nf-supports-orgs":true,"x-nf-team-scoped":true,"x-nf-org-scoped":true,"x-nf-cli-command":["get","usage"]},"v1-billing-usage--timestamp--get-team-scoped":{"operationId":"getBillingUsageTimestamp","summary":"Get usage","description":"Gets usage details for a given billing hour.","parameters":[{"name":"timestamp","type":"string","required":true,"description":"Unix timestamp of the billing hour","example":"1655823815","in":"path","schema":{"name":"timestamp","type":"string","required":true,"description":"Unix timestamp of the billing hour","example":"1655823815","in":"path"}},{"name":"teamId","type":"string","minLength":24,"maxLength":24,"description":"The ID of the team to filter by.","in":"query","schema":{"name":"teamId","type":"string","minLength":24,"maxLength":24,"description":"The ID of the team to filter by.","in":"query"}},{"name":"projectId","type":"string","minLength":24,"maxLength":24,"description":"The ID of the project to filter by.","in":"query","schema":{"name":"projectId","type":"string","minLength":24,"maxLength":24,"description":"The ID of the project to filter by.","in":"query"}},{"name":"resourceType","type":"string","enum":["job","service","addon","volume","opentofu-job","llm-model-deployment","external-addon"],"description":"The resource type to filter by (e.g. service, job, addon, volume).","in":"query","schema":{"name":"resourceType","type":"string","enum":["job","service","addon","volume","opentofu-job","llm-model-deployment","external-addon"],"description":"The resource type to filter by (e.g. service, job, addon, volume).","in":"query"}}],"responses":{"200":{"description":"Hourly usage detail.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"timestamp":{"type":"number","format":"float","description":"The Unix timestamp of the billing hour."},"paasUsage":{"type":"object","properties":{"price":{"type":"object","properties":{"total":{"type":"number","format":"float","description":"The total PaaS price, in cents."},"cpu":{"type":"number","format":"float","description":"The CPU usage price, in cents."},"memory":{"type":"number","format":"float","description":"The memory usage price, in cents."},"storage":{"type":"number","format":"float","description":"The storage usage price, in cents."},"gpu":{"type":"number","format":"float","description":"The GPU usage price, in cents."}},"additionalProperties":false},"teams":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Identifier for the team."},"name":{"type":"string","description":"The name of the team."},"price":{"type":"object","properties":{"total":{"type":"number","format":"float","description":"The total PaaS price, in cents."},"cpu":{"type":"number","format":"float","description":"The CPU usage price, in cents."},"memory":{"type":"number","format":"float","description":"The memory usage price, in cents."},"storage":{"type":"number","format":"float","description":"The storage usage price, in cents."},"gpu":{"type":"number","format":"float","description":"The GPU usage price, in cents."}},"additionalProperties":false,"description":"The team's PaaS price. When a projectId or resourceType filter is applied, this reflects only the filtered slice (e.g. one project, or one resource type across the team)."},"projects":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Identifier for the project."},"name":{"type":"string","description":"The name of the project."},"price":{"type":"object","properties":{"total":{"type":"number","format":"float","description":"The total PaaS price, in cents."},"cpu":{"type":"number","format":"float","description":"The CPU usage price, in cents."},"memory":{"type":"number","format":"float","description":"The memory usage price, in cents."},"storage":{"type":"number","format":"float","description":"The storage usage price, in cents."},"gpu":{"type":"number","format":"float","description":"The GPU usage price, in cents."}},"additionalProperties":false,"description":"The project's PaaS price. When a resourceType filter is applied, this reflects only that resource type's spend within the project."},"resourceTypes":{"type":"array","items":{"type":"object","properties":{"resourceType":{"type":"string","description":"The type of the resource (service, job, addon, volume, etc.)."},"price":{"type":"object","properties":{"total":{"type":"number","format":"float","description":"The total PaaS price, in cents."},"cpu":{"type":"number","format":"float","description":"The CPU usage price, in cents."},"memory":{"type":"number","format":"float","description":"The memory usage price, in cents."},"storage":{"type":"number","format":"float","description":"The storage usage price, in cents."},"gpu":{"type":"number","format":"float","description":"The GPU usage price, in cents."}},"additionalProperties":false},"resources":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Identifier for the resource."},"name":{"type":"string","description":"The name of the resource."},"price":{"type":"object","properties":{"total":{"type":"number","format":"float","description":"The total PaaS price, in cents."},"cpu":{"type":"number","format":"float","description":"The CPU usage price, in cents."},"memory":{"type":"number","format":"float","description":"The memory usage price, in cents."},"storage":{"type":"number","format":"float","description":"The storage usage price, in cents."},"gpu":{"type":"number","format":"float","description":"The GPU usage price, in cents."}},"additionalProperties":false}},"additionalProperties":false},"description":"An array of resources of this type."}},"additionalProperties":false},"description":"An array of resource types. Present when a projectId or resourceType filter is applied."}},"additionalProperties":false},"description":"An array of projects for this team. Present when a teamId or projectId filter is applied, or when the response contains only one team."}},"additionalProperties":false},"description":"An array of teams with price totals. Projects are included when a teamId or projectId filter is applied, or when there is only one team. Resources are included when a projectId or resourceType filter is applied."}},"required":["teams"],"additionalProperties":false,"description":"The PaaS usage breakdown for this hour. The drill-down depth depends on the active filters."},"byocUsage":{"type":"object","properties":{"price":{"type":"object","properties":{"total":{"type":"number","format":"float","description":"The total BYOC price, in cents."},"vcpu":{"type":"number","format":"float","description":"The vCPU usage price, in cents."},"memory":{"type":"number","format":"float","description":"The memory usage price, in cents."},"gpuMemory":{"type":"number","format":"float","description":"The GPU memory usage price, in cents."},"cluster":{"type":"number","format":"float","description":"The cluster usage price, in cents."}},"additionalProperties":false,"description":"The customer-level BYOC price total. Always reflects the full customer total, regardless of drill-down filters."}},"additionalProperties":false}},"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Billing","team"],"security":[],"x-nf-permission-required":"Account > Billing > General > Read","x-nf-supports-orgs":true,"x-nf-team-scoped":true,"x-nf-org-scoped":true,"x-nf-cli-command":["get","usage"]},"v1-cloud-providers-clusters-get":{"operationId":"getCloudProvidersClusters","summary":"List clusters","description":"Lists clusters for the authenticated user or team.","parameters":[{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query","schema":{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query"}},{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query","schema":{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query"}},{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query","schema":{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query"}}],"responses":{"200":{"description":"A list of clusters for the authenticated user","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"clusters":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"The ID of cluster","example":"gcp-cluster-1"},"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":20,"description":"The name of the cluster.","example":"GCP Cluster 1"},"entityType":{"type":"string","enum":["org","team"],"example":"team"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"The description of the cluster.","example":"This is a new cluster."},"provider":{"type":"string","enum":["aws","azure","civo","gcp","oci","cloudflare","coreweave","aiven","backblaze","akamai","byok"],"description":"Cloud provider to be used for the selected resource","example":"gcp"},"region":{"type":"string","description":"Region of the cluster. Can only be updated for BYOK clusters.","example":"europe-west2"},"status":{"type":"object","properties":{"state":{"type":"object","properties":{"state":{"type":"string","description":"Current state of the cluster.","example":"running"},"transitionTime":{"type":"string","format":"date-time","description":"Time of the last state transition."},"reason":{"type":"string","description":"The reason, given the cluster is in an error state."}},"required":["state"],"additionalProperties":false}},"additionalProperties":false},"kubernetesVersion":{"type":"string","description":"Deprecated: This field is no longer used, the version is now set by the platform.","example":"1.30"},"integrationId":{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","description":"Existing integration to use for this cluster.","example":"gcp-integration"},"storage":{"type":"object","properties":{"storageClasses":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"type":{"type":"string","enum":["storage-class","snapshot-class"]},"kubernetesName":{"type":"string"},"defaultSnapshotClass":{"type":"string"},"options":{"type":"object","properties":{"capabilities":{"type":"object","properties":{"expansion":{"type":"boolean","description":"Increasing volume size after provisioning."},"snapshot":{"type":"boolean","description":"Point in time snapshotting of volumes."}},"additionalProperties":false},"accessModes":{"type":"object","properties":{"ReadWriteOnce":{"type":"boolean","description":"Access mode where a volume is exclusively attached to a single pod at a time."},"ReadWriteMany":{"type":"boolean","description":"Access mode where a volume can be attached to multiple single pods at a time for read and write operations."}},"additionalProperties":false},"storageSize":{"type":"object","properties":{"minValidSize":{"type":"integer","minimum":1,"description":"Enforces a minimum storage size per addon or volume."},"maxValidSize":{"type":"integer","minimum":1,"description":"Enforces a maximum storage size per addon or volume."},"suggestedOptions":{"type":"array","items":{"type":"integer","minimum":1},"description":"Specific storage size options to suggest in the UI."}},"additionalProperties":false},"platform":{"type":"object","properties":{"supportedResources":{"type":"array","items":{"type":"string","enum":["addon","volume","build-cache"]}}},"additionalProperties":false}},"additionalProperties":false}},"required":["id","name","kubernetesName"],"additionalProperties":false},"uniqueItems":true},"snapshotClasses":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"kubernetesName":{"type":"string"}},"required":["id","name","kubernetesName"],"additionalProperties":false},"uniqueItems":true}},"additionalProperties":false},"nodePools":{"oneOf":[{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"(^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$)|(^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89ABab][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$)","minLength":3,"maxLength":63,"description":"ID of existing node pool. Must be passed when modifying existing node pools. Not relevant for new node pools","example":"6aa96121-0345-43ad-bade-af36d540c222"},"nodeType":{"type":"string","description":"Machine type to be used by the node pool.","example":"n2-standard-8"},"oci":{"type":"object","properties":{"ocpu":{"type":"integer","minimum":1},"memory":{"type":"integer","minimum":1}},"required":["ocpu","memory"],"additionalProperties":false,"description":"OCI instance specific settings. Must respect ratios as determined by the selected node type."},"gcp":{"type":"object","properties":{"enablePrivateNodes":{"type":"boolean","description":"Set this flag to disable public IP assignment for nodes in this node pool."}},"additionalProperties":false,"description":"GCP specific settings."},"azure":{"type":"object","properties":{"systemPool":{"type":"boolean","description":"When 'provider' is 'azure', at least one system node pool is required per cluster."},"enablePublicNodeIp":{"type":"boolean","description":"When 'provider' is 'azure', set this flag to use public node IPs."},"vnetSubnetId":{"type":"string","description":"ID of the vnet subnet to use."}},"additionalProperties":false,"description":"Azure specific settings."},"aws":{"type":"object","properties":{"launchTemplate":{"type":"object","properties":{"id":{"type":"string","description":"ID of the launch template to use."},"version":{"type":"integer","minimum":1,"description":"Version of the launch template that should be used."}},"required":["id","version"],"additionalProperties":false,"description":"Specify a launch template to use for this node pool. When using a launch template, the disk size selection on the node pool level will be ignored."}},"additionalProperties":false,"description":"AWS specific node pool settings."},"nodeCount":{"type":"integer","minimum":0,"maximum":250,"description":"Number of nodes to the node pool should be provisioned with.","example":3},"autoscaling":{"type":"object","properties":{"enabled":{"type":"boolean","example":true,"default":false},"min":{"type":"integer","minimum":0,"maximum":249,"example":0},"max":{"type":"integer","minimum":1,"maximum":250,"example":10}},"additionalProperties":false,"nullable":true,"description":"Auto scaling settings to use for the node pool. Requires that the cloud provider supports this feature."},"computeResources":{"type":"object","properties":{"gpu":{"type":"object","properties":{"type":{"type":"string","pattern":"[a-z0-9]","description":"GPU type associated with the node pool.","example":"h100"},"resources":{"type":"object","properties":{"memoryInfo":{"type":"object","properties":{"sizeInGiB":{"type":"number","format":"float","minimum":1,"description":"Memory amount of the GPU in Gib.","example":80}},"additionalProperties":false}},"additionalProperties":false},"count":{"type":"integer","minimum":1,"description":"Number of GPUs per node.","example":1},"timeslicing":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether or not to enable time-slicing on the GPU."},"numSlices":{"type":"number","format":"float","minimum":1,"description":"Sets the amount of slices per GPU, e.g. how many pods may be scheduled concurrently on each GPU."}},"additionalProperties":false,"description":"Time-slicing configuration object."}},"required":["type","resources","count"],"additionalProperties":false}},"additionalProperties":false},"preemptible":{"type":"boolean","description":"Configures node pool with preemptible / spot instances if enabled.","example":false,"default":false},"diskType":{"type":"string","description":"The disk type to use."},"diskSize":{"type":"integer","minimum":1,"description":"Disk size in GB","example":100},"availabilityZones":{"type":"array","items":{"type":"string"},"minItems":1,"maxItems":1,"description":"Zones in which the node pool should be provisioned."},"subnets":{"type":"array","items":{"type":"string","description":"Subnets id."},"description":"Subnets ids in which the node pool should be provisioned."},"scheduling":{"type":"object","properties":{"allowJobs":{"type":"boolean","description":"Allow jobs to schedule to this node pool"},"onlyGpuJobs":{"type":"boolean","description":"Restrict job scheduling to jobs which have GPU resources configured. Only relevant for GPU node pools."},"allowServices":{"type":"boolean","description":"Allow services to schedule to this node pool"},"onlyGpuServices":{"type":"boolean","description":"Restrict service scheduling to services which have GPU resources configured. Only relevant for GPU node pools."},"allowAddons":{"type":"boolean","description":"Allow addons to schedule to this node pool"},"allowBuilds":{"type":"boolean","description":"Allow builds to schedule to this node pool"},"onlyGpuBuilds":{"type":"boolean","description":"Restrict build scheduling to builds which have GPU resources configured. Only relevant for GPU node pools."},"allowCeph":{"type":"boolean","description":"Allow the placement of Ceph pods"}},"additionalProperties":false,"description":"Define basic workload scheduling restrictions for this node pool"},"labels":{"type":"object","properties":{},"additionalProperties":false,"description":"Set of label keys and values that can be used for advanced scheduling in combination with resource tag scheduling rules."}},"required":["id","nodeType","nodeCount","diskSize"],"additionalProperties":false,"description":"Node pool configuration for BYOC clusters"},"minItems":1,"uniqueItems":true,"description":"An array of node pools for BYOC."},{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"(^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$)|(^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89ABab][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$)","minLength":3,"maxLength":63,"description":"ID of the node pool. Must be passed when modifying existing node pools. Not relevant for new node pools","example":"node-pool-1"},"providerId":{"type":"string","pattern":"(^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$)|(^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89ABab][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$)","minLength":3,"maxLength":63,"description":"ID which identifies kubernetes nodes as belonging to this pool.","example":"6aa96121-0345-43ad-bade-af36d540c222"},"computeResources":{"type":"object","properties":{"gpu":{"type":"object","properties":{"supported":{"type":"boolean","description":"Whether this node pool consists of GPU nodes ."},"type":{"type":"string","pattern":"[a-z0-9]","description":"GPU type associated with the node pool.","example":"h100"},"resources":{"type":"object","properties":{"memoryInfo":{"type":"object","properties":{"sizeInGiB":{"type":"number","format":"float","minimum":1,"description":"Memory amount of the GPU in Gib.","example":80}},"additionalProperties":false}},"additionalProperties":false},"mig":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether or not to enable Multi-Instance GPU (MIG)."},"partitions":{"type":"array","items":{"type":"string"},"description":"The partitions to configure on the GPU."}},"additionalProperties":false,"description":"Multi-Instance GPU (MIG). configuration object."},"timeslicing":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether or not to enable time-slicing on the GPU."},"numSlices":{"type":"number","format":"float","minimum":1,"description":"Sets the amount of slices per GPU, e.g. how many pods may be scheduled concurrently on each GPU."}},"additionalProperties":false,"description":"Time-slicing configuration object."},"count":{"type":"integer","minimum":1,"description":"Number of GPUs per node.","example":1}},"additionalProperties":false}},"additionalProperties":false},"defaultPool":{"type":"boolean","description":"Fallback pool to which nodes which do not match any defined node pool are assigned. Exactly one default pool is required."},"preemptible":{"type":"boolean","description":"Configures node pool with preemptible / spot instances if enabled.","example":false,"default":false},"scheduling":{"type":"object","properties":{"allowJobs":{"type":"boolean","description":"Allow jobs to schedule to this node pool"},"onlyGpuJobs":{"type":"boolean","description":"Restrict job scheduling to jobs which have GPU resources configured. Only relevant for GPU node pools."},"allowServices":{"type":"boolean","description":"Allow services to schedule to this node pool"},"onlyGpuServices":{"type":"boolean","description":"Restrict service scheduling to services which have GPU resources configured. Only relevant for GPU node pools."},"allowAddons":{"type":"boolean","description":"Allow addons to schedule to this node pool"},"allowBuilds":{"type":"boolean","description":"Allow builds to schedule to this node pool"},"onlyGpuBuilds":{"type":"boolean","description":"Restrict build scheduling to builds which have GPU resources configured. Only relevant for GPU node pools."},"allowCeph":{"type":"boolean","description":"Allow the placement of Ceph pods"}},"additionalProperties":false,"description":"Define basic workload scheduling restrictions for this node pool"},"platform":{"type":"object","properties":{"architecture":{"type":"string","enum":["amd64","arm64"],"description":"Platform architecture of the underlying node type.","example":"amd64"}},"additionalProperties":false},"labels":{"type":"object","properties":{},"additionalProperties":false,"description":"Set of label keys and values that can be used for advanced scheduling in combination with resource tag scheduling rules."}},"required":["id","providerId"],"additionalProperties":false,"description":"Node pool configuration for BYOK clusters"},"minItems":1,"uniqueItems":true,"description":"An array of node pools for BYOK."}],"description":"An array of node pools for BYOC or BYOK."},"settings":{"type":"object","properties":{"builds":{"type":"object","properties":{"mode":{"type":"string","enum":["paas","internal","build-cluster"]},"plan":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"Plan to use for builds if they are run on the cluster","example":"nf-compute-200"},"clusterId":{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","description":"Cluster to use for scheduling builds"},"caching":{"type":"object","properties":{"allow":{"type":"boolean","description":"Whether to allow local disk based caching for builds."},"storageClassName":{"type":"string","description":"Storage class used by default for local disk based caching."}},"additionalProperties":false,"description":"Cache settings for builds"}},"additionalProperties":false},"registry":{"type":"object","properties":{"mode":{"type":"string","enum":["paas","self-hosted"]},"registryId":{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","description":"Credentials to use for storing of images.","example":"my-registry-credentials"}},"additionalProperties":false},"logging":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["paas"],"default":"paas"}},"additionalProperties":false,"description":"Logging via PaaS."},{"type":"object","properties":{"mode":{"type":"string","enum":["loki"]},"loki":{"type":"object","properties":{"storageType":{"type":"string","enum":["s3"]},"s3Region":{"type":"string"},"s3BucketName":{"type":"string"}},"required":["storageType","s3Region","s3BucketName"],"additionalProperties":false}},"required":["mode"],"additionalProperties":false,"description":"Logging via Loki (S3 storage)."},{"type":"object","properties":{"mode":{"type":"string","enum":["loki"]},"loki":{"type":"object","properties":{"storageType":{"type":"string","enum":["gcs"]},"gcsBucketName":{"type":"string"},"gcpIntegrationId":{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$"}},"required":["storageType","gcsBucketName","gcpIntegrationId"],"additionalProperties":false}},"required":["mode"],"additionalProperties":false,"description":"Logging via Loki (GCS storage)."}],"description":"Logging settings"},"networking":{"type":"object","properties":{"overlayNetwork":{"type":"boolean","description":"Whether overlay networking is enabled for this cluster."},"overlayCIDR":{"type":"string","pattern":"^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\\/([0-9]|[1-2][0-9]|3[0-2]))$","description":"CIDR range for the overlay network."}},"additionalProperties":false},"vanityDomains":{"type":"object","properties":{"apps":{"type":"object","properties":{"zoneName":{"type":"string"},"integrationId":{"type":"string"}},"required":["zoneName","integrationId"],"additionalProperties":false},"customDomains":{"type":"object","properties":{"zoneName":{"type":"string"},"integrationId":{"type":"string"}},"required":["zoneName","integrationId"],"additionalProperties":false},"loadBalancers":{"type":"object","properties":{"zoneName":{"type":"string"},"integrationId":{"type":"string"}},"required":["zoneName","integrationId"],"additionalProperties":false}},"additionalProperties":false},"infrastructure":{"type":"object","properties":{"workloads":{"type":"object","properties":{"runtimeClass":{"type":"string","enum":["none","gvisor","kata-clh","kata-qemu"]}},"additionalProperties":false,"description":"DEPRECATED: This field will be removed in the near future."},"builds":{"type":"object","properties":{"runtimeClass":{"type":"string","enum":["none","gvisor","kata-clh","kata-qemu"]}},"additionalProperties":false,"description":"DEPRECATED: This field will be removed in the near future."},"sandboxing":{"type":"object","properties":{"installGvisor":{"type":"boolean"},"installMicroVm":{"type":"boolean"},"defaultSandbox":{"type":"object","properties":{"builds":{"type":"string","enum":["none","gvisor","kata-clh","kata-qemu"]},"jobs":{"type":"string","enum":["none","gvisor","kata-clh","kata-qemu"]},"services":{"type":"string","enum":["none","gvisor","kata-clh","kata-qemu"]},"addons":{"type":"string","enum":["none","gvisor","kata-clh","kata-qemu"]}},"additionalProperties":false}},"additionalProperties":false},"installKata":{"type":"boolean","description":"DEPRECATED: This field will be removed in the near future."},"installGvisor":{"type":"boolean","description":"DEPRECATED: This field will be removed in the near future."},"cleanupVolumes":{"type":"boolean","default":true},"cleanupSnapshots":{"type":"boolean","default":true},"cephStorageProvider":{"type":"object","properties":{"enabled":{"type":"boolean","default":false},"resources":{"type":"object","properties":{"cpu":{"type":"number","format":"float","minimum":1,"maximum":20,"description":"Configure the CPU resources per Ceph replica"},"memory":{"type":"number","format":"float","minimum":4096,"maximum":40960,"description":"Configure the memory resources per Ceph replica"},"storage":{"type":"number","format":"float","minimum":102400,"maximum":5242880,"description":"Configure the data disk size per Ceph replica"}},"additionalProperties":false},"enableMultiReadWriteStorage":{"type":"boolean","description":"Configure Ceph to be enable use of multi read write storage for persistent volumes on the cluster."},"enableSingleReadWriteStorage":{"type":"boolean","description":"Configure Ceph to be used as default storage class for single read write storage. This will replace the default storage of the cloud provider."},"enableErasureCoding":{"type":"boolean","description":"Configure Ceph to be set up with erasure coding. This will be less fault tolerant but more cost effective."}},"additionalProperties":false}},"additionalProperties":false},"requestModifiers":{"type":"object","properties":{"services":{"type":"object","properties":{"cpu":{"type":"number","format":"float","minimum":0.2,"maximum":1,"example":0.5,"default":0.5},"memory":{"type":"number","format":"float","minimum":0.4,"maximum":1,"example":0.8,"default":0.8}},"required":["cpu","memory"],"additionalProperties":false,"description":"Request modifiers for services"},"jobs":{"type":"object","properties":{"cpu":{"type":"number","format":"float","minimum":0.2,"maximum":1,"example":0.5,"default":0.5},"memory":{"type":"number","format":"float","minimum":0.4,"maximum":1,"example":0.8,"default":0.8}},"required":["cpu","memory"],"additionalProperties":false,"description":"Request modifiers for jobs"},"builds":{"type":"object","properties":{"cpu":{"type":"number","format":"float","minimum":0.1,"maximum":1,"example":0.2,"default":0.2},"memory":{"type":"number","format":"float","minimum":0.1,"maximum":1,"example":0.5,"default":0.5}},"required":["cpu","memory"],"additionalProperties":false,"description":"Request modifiers for builds"},"addons":{"type":"object","properties":{"cpu":{"type":"number","format":"float","minimum":0.2,"maximum":1,"example":0.5,"default":0.5},"memory":{"type":"number","format":"float","minimum":0.4,"maximum":1,"example":0.8,"default":0.8}},"required":["cpu","memory"],"additionalProperties":false,"description":"Request modifiers for addons"}},"additionalProperties":false,"description":"Allows customising request modifier values."},"skipInstall":{"type":"boolean","default":false}},"additionalProperties":false},"restrictions":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Enable or disable BYOC restrictions for this entity"},"teams":{"type":"array","items":{"type":"object","properties":{"teamId":{"type":"string","description":"The ID of the team that has access to this BYOC cluster"}},"required":["teamId"]},"description":"List of teams that have access to this BYOC cluster","default":[]}},"required":["enabled"],"additionalProperties":false,"description":"BYOC restrictions configuration for controlling team access"},"gcp":{"type":"object","properties":{"networking":{"type":"object","properties":{"network":{"type":"string"},"subnetwork":{"type":"string"}},"additionalProperties":false},"enableAuthorizedIpRanges":{"type":"boolean"},"authorizedIpRanges":{"type":"array","items":{"type":"string","pattern":"^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\\/([0-9]|[1-2][0-9]|3[0-2]))$"}},"projectId":{"type":"string","pattern":"^[a-z][a-z0-9-]{4,28}[a-z0-9]$","description":"GCP Project ID"}},"additionalProperties":false,"description":"GCP specific data. Required when `provider` is `gcp`"},"aws":{"type":"object","properties":{"enablePublicAccessCidrs":{"type":"boolean"},"publicAccessCidrs":{"type":"array","items":{"type":"string","pattern":"^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\\/([0-9]|[1-2][0-9]|3[0-2]))$"}},"subnetConfiguration":{"type":"object","properties":{"mode":{"type":"string","enum":["default-subnets-for-azs","explicit-subnets"],"description":"The mode of the AWS subnet configuration"},"vpcId":{"type":"string","description":"Id of the VPC"},"subnets":{"type":"array","items":{"type":"string","example":"eu-west-1a"},"minItems":2,"description":"List of subnets the cluster should be created for. At least 2 must be specified."}},"required":["mode","subnets"],"additionalProperties":false},"vpcEgress":{"type":"boolean","description":"If egress traffic from the cluster should come from a single static egress IP."}},"additionalProperties":false,"description":"AWS specific data. Required when `provider` is `aws`."},"oci":{"type":"object","properties":{"vcnConfiguration":{"type":"object","properties":{"vcnId":{"type":"string"},"subnetIdForKubernetesApi":{"type":"string"},"subnetIdsForServiceLBs":{"type":"array","items":{"type":"string"}}},"required":["vcnId","subnetIdForKubernetesApi","subnetIdsForServiceLBs"],"additionalProperties":false}},"required":["vcnConfiguration"],"additionalProperties":false,"description":"OCI specific data. Required when `provider` is `oci`."},"azure":{"type":"object","properties":{"networking":{"type":"object","properties":{"vnetConfiguration":{"type":"object","properties":{"mode":{"type":"string","enum":["create-default","custom-vnet"],"description":"The vnet mode to use for this cluster. Use this to switch between creation of a new vnet per cluster or specifying a custom vnet."},"vnetId":{"type":"string","description":"Azure vnetId that should be used for this cluster. By default a new vnet will be created."}},"required":["mode"],"additionalProperties":false},"networkPluginMode":{"type":"string","enum":["overlay"],"description":"Optional setting to configure overlay mode on Azure."}},"additionalProperties":false},"enableAuthorizedIpRanges":{"type":"boolean"},"authorizedIpRanges":{"type":"array","items":{"type":"string","pattern":"^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\\/([0-9]|[1-2][0-9]|3[0-2]))$"}}},"additionalProperties":false,"description":"Azure specific data. Required when `provider` is `azure`."},"coreweave":{"type":"object","properties":{"zone":{"type":"string","description":"AZ of the cluster"},"network":{"type":"object","properties":{"networkMode":{"type":"string","enum":["create-default","custom"]},"vpcId":{"type":"string"},"customPrefixNames":{"type":"object","properties":{"podCidrName":{"type":"string"},"serviceCidrName":{"type":"string"},"internalLbCidrNames":{"type":"array","items":{"type":"string"},"minItems":1}},"required":["podCidrName","serviceCidrName","internalLbCidrNames"],"additionalProperties":false}},"required":["networkMode"],"additionalProperties":false,"description":"Network settings"}},"required":["zone"],"additionalProperties":false,"description":"CoreWeave specific data. Required when `provider` is `coreweave`."},"byok":{"type":"object","properties":{"nodePoolProviderIdLabel":{"type":"string"}},"required":["nodePoolProviderIdLabel"],"additionalProperties":false,"description":"BYOK specific data. Required when `provider` is `byok`."},"coordinates":{"type":"object","properties":{"latitude":{"type":"number","format":"float","minimum":-90,"maximum":90},"longitude":{"type":"number","format":"float","minimum":-180,"maximum":180}},"required":["latitude","longitude"],"additionalProperties":false,"description":"Geographic coordinates of the cluster. Optional, used for CDN geo-routing. Only applicable when `provider` is `byok`."},"dns":{"type":"string","description":"Auto-generated dns identifier for this cluster.","example":"xxxxxxxxxx"},"updatedAt":{"type":"string","format":"date-time","description":"The time the cluster was last updated.","example":"2021-01-20T11:19:53.175Z"},"createdAt":{"type":"string","format":"date-time","description":"The time the cluster was created.","example":"2021-01-20T11:19:53.175Z"},"deletionRequested":{"type":"boolean","description":"Indicates if provider resource deletion has been requested.","example":false}},"required":["id","name","provider","nodePools","updatedAt","createdAt","deletionRequested"],"additionalProperties":false,"description":"A cluster object."},"description":"An array of clusters."}},"required":["clusters"],"additionalProperties":false,"description":"Result data."},"pagination":{"type":"object","properties":{"hasNextPage":{"type":"boolean","description":"Is there another page of results available?","example":false},"cursor":{"type":"string","description":"The cursor to access the next page of results."},"count":{"type":"number","format":"float","description":"The number of results returned by this request.","example":1}},"required":["hasNextPage","count"],"additionalProperties":false,"description":"Data about the endpoint pagination."}},"required":["data","pagination"],"additionalProperties":false,"description":"Response object."}}},"tags":["Cloud Providers","org"],"security":[],"x-nf-permission-required":"Account > Cloud > Clusters > Read","x-nf-supports-orgs":true,"x-nf-team-scoped":true,"x-nf-org-scoped":true,"x-nf-cli-command":["list","cloud","clusters"]},"v1-cloud-providers-clusters-get-team-scoped":{"operationId":"getCloudProvidersClusters","summary":"List clusters","description":"Lists clusters for the authenticated user or team.","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query","schema":{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query"}},{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query","schema":{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query"}},{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query","schema":{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query"}}],"responses":{"200":{"description":"A list of clusters for the authenticated user","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"clusters":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"The ID of cluster","example":"gcp-cluster-1"},"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":20,"description":"The name of the cluster.","example":"GCP Cluster 1"},"entityType":{"type":"string","enum":["org","team"],"example":"team"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"The description of the cluster.","example":"This is a new cluster."},"provider":{"type":"string","enum":["aws","azure","civo","gcp","oci","cloudflare","coreweave","aiven","backblaze","akamai","byok"],"description":"Cloud provider to be used for the selected resource","example":"gcp"},"region":{"type":"string","description":"Region of the cluster. Can only be updated for BYOK clusters.","example":"europe-west2"},"status":{"type":"object","properties":{"state":{"type":"object","properties":{"state":{"type":"string","description":"Current state of the cluster.","example":"running"},"transitionTime":{"type":"string","format":"date-time","description":"Time of the last state transition."},"reason":{"type":"string","description":"The reason, given the cluster is in an error state."}},"required":["state"],"additionalProperties":false}},"additionalProperties":false},"kubernetesVersion":{"type":"string","description":"Deprecated: This field is no longer used, the version is now set by the platform.","example":"1.30"},"integrationId":{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","description":"Existing integration to use for this cluster.","example":"gcp-integration"},"storage":{"type":"object","properties":{"storageClasses":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"type":{"type":"string","enum":["storage-class","snapshot-class"]},"kubernetesName":{"type":"string"},"defaultSnapshotClass":{"type":"string"},"options":{"type":"object","properties":{"capabilities":{"type":"object","properties":{"expansion":{"type":"boolean","description":"Increasing volume size after provisioning."},"snapshot":{"type":"boolean","description":"Point in time snapshotting of volumes."}},"additionalProperties":false},"accessModes":{"type":"object","properties":{"ReadWriteOnce":{"type":"boolean","description":"Access mode where a volume is exclusively attached to a single pod at a time."},"ReadWriteMany":{"type":"boolean","description":"Access mode where a volume can be attached to multiple single pods at a time for read and write operations."}},"additionalProperties":false},"storageSize":{"type":"object","properties":{"minValidSize":{"type":"integer","minimum":1,"description":"Enforces a minimum storage size per addon or volume."},"maxValidSize":{"type":"integer","minimum":1,"description":"Enforces a maximum storage size per addon or volume."},"suggestedOptions":{"type":"array","items":{"type":"integer","minimum":1},"description":"Specific storage size options to suggest in the UI."}},"additionalProperties":false},"platform":{"type":"object","properties":{"supportedResources":{"type":"array","items":{"type":"string","enum":["addon","volume","build-cache"]}}},"additionalProperties":false}},"additionalProperties":false}},"required":["id","name","kubernetesName"],"additionalProperties":false},"uniqueItems":true},"snapshotClasses":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"kubernetesName":{"type":"string"}},"required":["id","name","kubernetesName"],"additionalProperties":false},"uniqueItems":true}},"additionalProperties":false},"nodePools":{"oneOf":[{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"(^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$)|(^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89ABab][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$)","minLength":3,"maxLength":63,"description":"ID of existing node pool. Must be passed when modifying existing node pools. Not relevant for new node pools","example":"6aa96121-0345-43ad-bade-af36d540c222"},"nodeType":{"type":"string","description":"Machine type to be used by the node pool.","example":"n2-standard-8"},"oci":{"type":"object","properties":{"ocpu":{"type":"integer","minimum":1},"memory":{"type":"integer","minimum":1}},"required":["ocpu","memory"],"additionalProperties":false,"description":"OCI instance specific settings. Must respect ratios as determined by the selected node type."},"gcp":{"type":"object","properties":{"enablePrivateNodes":{"type":"boolean","description":"Set this flag to disable public IP assignment for nodes in this node pool."}},"additionalProperties":false,"description":"GCP specific settings."},"azure":{"type":"object","properties":{"systemPool":{"type":"boolean","description":"When 'provider' is 'azure', at least one system node pool is required per cluster."},"enablePublicNodeIp":{"type":"boolean","description":"When 'provider' is 'azure', set this flag to use public node IPs."},"vnetSubnetId":{"type":"string","description":"ID of the vnet subnet to use."}},"additionalProperties":false,"description":"Azure specific settings."},"aws":{"type":"object","properties":{"launchTemplate":{"type":"object","properties":{"id":{"type":"string","description":"ID of the launch template to use."},"version":{"type":"integer","minimum":1,"description":"Version of the launch template that should be used."}},"required":["id","version"],"additionalProperties":false,"description":"Specify a launch template to use for this node pool. When using a launch template, the disk size selection on the node pool level will be ignored."}},"additionalProperties":false,"description":"AWS specific node pool settings."},"nodeCount":{"type":"integer","minimum":0,"maximum":250,"description":"Number of nodes to the node pool should be provisioned with.","example":3},"autoscaling":{"type":"object","properties":{"enabled":{"type":"boolean","example":true,"default":false},"min":{"type":"integer","minimum":0,"maximum":249,"example":0},"max":{"type":"integer","minimum":1,"maximum":250,"example":10}},"additionalProperties":false,"nullable":true,"description":"Auto scaling settings to use for the node pool. Requires that the cloud provider supports this feature."},"computeResources":{"type":"object","properties":{"gpu":{"type":"object","properties":{"type":{"type":"string","pattern":"[a-z0-9]","description":"GPU type associated with the node pool.","example":"h100"},"resources":{"type":"object","properties":{"memoryInfo":{"type":"object","properties":{"sizeInGiB":{"type":"number","format":"float","minimum":1,"description":"Memory amount of the GPU in Gib.","example":80}},"additionalProperties":false}},"additionalProperties":false},"count":{"type":"integer","minimum":1,"description":"Number of GPUs per node.","example":1},"timeslicing":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether or not to enable time-slicing on the GPU."},"numSlices":{"type":"number","format":"float","minimum":1,"description":"Sets the amount of slices per GPU, e.g. how many pods may be scheduled concurrently on each GPU."}},"additionalProperties":false,"description":"Time-slicing configuration object."}},"required":["type","resources","count"],"additionalProperties":false}},"additionalProperties":false},"preemptible":{"type":"boolean","description":"Configures node pool with preemptible / spot instances if enabled.","example":false,"default":false},"diskType":{"type":"string","description":"The disk type to use."},"diskSize":{"type":"integer","minimum":1,"description":"Disk size in GB","example":100},"availabilityZones":{"type":"array","items":{"type":"string"},"minItems":1,"maxItems":1,"description":"Zones in which the node pool should be provisioned."},"subnets":{"type":"array","items":{"type":"string","description":"Subnets id."},"description":"Subnets ids in which the node pool should be provisioned."},"scheduling":{"type":"object","properties":{"allowJobs":{"type":"boolean","description":"Allow jobs to schedule to this node pool"},"onlyGpuJobs":{"type":"boolean","description":"Restrict job scheduling to jobs which have GPU resources configured. Only relevant for GPU node pools."},"allowServices":{"type":"boolean","description":"Allow services to schedule to this node pool"},"onlyGpuServices":{"type":"boolean","description":"Restrict service scheduling to services which have GPU resources configured. Only relevant for GPU node pools."},"allowAddons":{"type":"boolean","description":"Allow addons to schedule to this node pool"},"allowBuilds":{"type":"boolean","description":"Allow builds to schedule to this node pool"},"onlyGpuBuilds":{"type":"boolean","description":"Restrict build scheduling to builds which have GPU resources configured. Only relevant for GPU node pools."},"allowCeph":{"type":"boolean","description":"Allow the placement of Ceph pods"}},"additionalProperties":false,"description":"Define basic workload scheduling restrictions for this node pool"},"labels":{"type":"object","properties":{},"additionalProperties":false,"description":"Set of label keys and values that can be used for advanced scheduling in combination with resource tag scheduling rules."}},"required":["id","nodeType","nodeCount","diskSize"],"additionalProperties":false,"description":"Node pool configuration for BYOC clusters"},"minItems":1,"uniqueItems":true,"description":"An array of node pools for BYOC."},{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"(^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$)|(^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89ABab][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$)","minLength":3,"maxLength":63,"description":"ID of the node pool. Must be passed when modifying existing node pools. Not relevant for new node pools","example":"node-pool-1"},"providerId":{"type":"string","pattern":"(^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$)|(^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89ABab][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$)","minLength":3,"maxLength":63,"description":"ID which identifies kubernetes nodes as belonging to this pool.","example":"6aa96121-0345-43ad-bade-af36d540c222"},"computeResources":{"type":"object","properties":{"gpu":{"type":"object","properties":{"supported":{"type":"boolean","description":"Whether this node pool consists of GPU nodes ."},"type":{"type":"string","pattern":"[a-z0-9]","description":"GPU type associated with the node pool.","example":"h100"},"resources":{"type":"object","properties":{"memoryInfo":{"type":"object","properties":{"sizeInGiB":{"type":"number","format":"float","minimum":1,"description":"Memory amount of the GPU in Gib.","example":80}},"additionalProperties":false}},"additionalProperties":false},"mig":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether or not to enable Multi-Instance GPU (MIG)."},"partitions":{"type":"array","items":{"type":"string"},"description":"The partitions to configure on the GPU."}},"additionalProperties":false,"description":"Multi-Instance GPU (MIG). configuration object."},"timeslicing":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether or not to enable time-slicing on the GPU."},"numSlices":{"type":"number","format":"float","minimum":1,"description":"Sets the amount of slices per GPU, e.g. how many pods may be scheduled concurrently on each GPU."}},"additionalProperties":false,"description":"Time-slicing configuration object."},"count":{"type":"integer","minimum":1,"description":"Number of GPUs per node.","example":1}},"additionalProperties":false}},"additionalProperties":false},"defaultPool":{"type":"boolean","description":"Fallback pool to which nodes which do not match any defined node pool are assigned. Exactly one default pool is required."},"preemptible":{"type":"boolean","description":"Configures node pool with preemptible / spot instances if enabled.","example":false,"default":false},"scheduling":{"type":"object","properties":{"allowJobs":{"type":"boolean","description":"Allow jobs to schedule to this node pool"},"onlyGpuJobs":{"type":"boolean","description":"Restrict job scheduling to jobs which have GPU resources configured. Only relevant for GPU node pools."},"allowServices":{"type":"boolean","description":"Allow services to schedule to this node pool"},"onlyGpuServices":{"type":"boolean","description":"Restrict service scheduling to services which have GPU resources configured. Only relevant for GPU node pools."},"allowAddons":{"type":"boolean","description":"Allow addons to schedule to this node pool"},"allowBuilds":{"type":"boolean","description":"Allow builds to schedule to this node pool"},"onlyGpuBuilds":{"type":"boolean","description":"Restrict build scheduling to builds which have GPU resources configured. Only relevant for GPU node pools."},"allowCeph":{"type":"boolean","description":"Allow the placement of Ceph pods"}},"additionalProperties":false,"description":"Define basic workload scheduling restrictions for this node pool"},"platform":{"type":"object","properties":{"architecture":{"type":"string","enum":["amd64","arm64"],"description":"Platform architecture of the underlying node type.","example":"amd64"}},"additionalProperties":false},"labels":{"type":"object","properties":{},"additionalProperties":false,"description":"Set of label keys and values that can be used for advanced scheduling in combination with resource tag scheduling rules."}},"required":["id","providerId"],"additionalProperties":false,"description":"Node pool configuration for BYOK clusters"},"minItems":1,"uniqueItems":true,"description":"An array of node pools for BYOK."}],"description":"An array of node pools for BYOC or BYOK."},"settings":{"type":"object","properties":{"builds":{"type":"object","properties":{"mode":{"type":"string","enum":["paas","internal","build-cluster"]},"plan":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"Plan to use for builds if they are run on the cluster","example":"nf-compute-200"},"clusterId":{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","description":"Cluster to use for scheduling builds"},"caching":{"type":"object","properties":{"allow":{"type":"boolean","description":"Whether to allow local disk based caching for builds."},"storageClassName":{"type":"string","description":"Storage class used by default for local disk based caching."}},"additionalProperties":false,"description":"Cache settings for builds"}},"additionalProperties":false},"registry":{"type":"object","properties":{"mode":{"type":"string","enum":["paas","self-hosted"]},"registryId":{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","description":"Credentials to use for storing of images.","example":"my-registry-credentials"}},"additionalProperties":false},"logging":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["paas"],"default":"paas"}},"additionalProperties":false,"description":"Logging via PaaS."},{"type":"object","properties":{"mode":{"type":"string","enum":["loki"]},"loki":{"type":"object","properties":{"storageType":{"type":"string","enum":["s3"]},"s3Region":{"type":"string"},"s3BucketName":{"type":"string"}},"required":["storageType","s3Region","s3BucketName"],"additionalProperties":false}},"required":["mode"],"additionalProperties":false,"description":"Logging via Loki (S3 storage)."},{"type":"object","properties":{"mode":{"type":"string","enum":["loki"]},"loki":{"type":"object","properties":{"storageType":{"type":"string","enum":["gcs"]},"gcsBucketName":{"type":"string"},"gcpIntegrationId":{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$"}},"required":["storageType","gcsBucketName","gcpIntegrationId"],"additionalProperties":false}},"required":["mode"],"additionalProperties":false,"description":"Logging via Loki (GCS storage)."}],"description":"Logging settings"},"networking":{"type":"object","properties":{"overlayNetwork":{"type":"boolean","description":"Whether overlay networking is enabled for this cluster."},"overlayCIDR":{"type":"string","pattern":"^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\\/([0-9]|[1-2][0-9]|3[0-2]))$","description":"CIDR range for the overlay network."}},"additionalProperties":false},"vanityDomains":{"type":"object","properties":{"apps":{"type":"object","properties":{"zoneName":{"type":"string"},"integrationId":{"type":"string"}},"required":["zoneName","integrationId"],"additionalProperties":false},"customDomains":{"type":"object","properties":{"zoneName":{"type":"string"},"integrationId":{"type":"string"}},"required":["zoneName","integrationId"],"additionalProperties":false},"loadBalancers":{"type":"object","properties":{"zoneName":{"type":"string"},"integrationId":{"type":"string"}},"required":["zoneName","integrationId"],"additionalProperties":false}},"additionalProperties":false},"infrastructure":{"type":"object","properties":{"workloads":{"type":"object","properties":{"runtimeClass":{"type":"string","enum":["none","gvisor","kata-clh","kata-qemu"]}},"additionalProperties":false,"description":"DEPRECATED: This field will be removed in the near future."},"builds":{"type":"object","properties":{"runtimeClass":{"type":"string","enum":["none","gvisor","kata-clh","kata-qemu"]}},"additionalProperties":false,"description":"DEPRECATED: This field will be removed in the near future."},"sandboxing":{"type":"object","properties":{"installGvisor":{"type":"boolean"},"installMicroVm":{"type":"boolean"},"defaultSandbox":{"type":"object","properties":{"builds":{"type":"string","enum":["none","gvisor","kata-clh","kata-qemu"]},"jobs":{"type":"string","enum":["none","gvisor","kata-clh","kata-qemu"]},"services":{"type":"string","enum":["none","gvisor","kata-clh","kata-qemu"]},"addons":{"type":"string","enum":["none","gvisor","kata-clh","kata-qemu"]}},"additionalProperties":false}},"additionalProperties":false},"installKata":{"type":"boolean","description":"DEPRECATED: This field will be removed in the near future."},"installGvisor":{"type":"boolean","description":"DEPRECATED: This field will be removed in the near future."},"cleanupVolumes":{"type":"boolean","default":true},"cleanupSnapshots":{"type":"boolean","default":true},"cephStorageProvider":{"type":"object","properties":{"enabled":{"type":"boolean","default":false},"resources":{"type":"object","properties":{"cpu":{"type":"number","format":"float","minimum":1,"maximum":20,"description":"Configure the CPU resources per Ceph replica"},"memory":{"type":"number","format":"float","minimum":4096,"maximum":40960,"description":"Configure the memory resources per Ceph replica"},"storage":{"type":"number","format":"float","minimum":102400,"maximum":5242880,"description":"Configure the data disk size per Ceph replica"}},"additionalProperties":false},"enableMultiReadWriteStorage":{"type":"boolean","description":"Configure Ceph to be enable use of multi read write storage for persistent volumes on the cluster."},"enableSingleReadWriteStorage":{"type":"boolean","description":"Configure Ceph to be used as default storage class for single read write storage. This will replace the default storage of the cloud provider."},"enableErasureCoding":{"type":"boolean","description":"Configure Ceph to be set up with erasure coding. This will be less fault tolerant but more cost effective."}},"additionalProperties":false}},"additionalProperties":false},"requestModifiers":{"type":"object","properties":{"services":{"type":"object","properties":{"cpu":{"type":"number","format":"float","minimum":0.2,"maximum":1,"example":0.5,"default":0.5},"memory":{"type":"number","format":"float","minimum":0.4,"maximum":1,"example":0.8,"default":0.8}},"required":["cpu","memory"],"additionalProperties":false,"description":"Request modifiers for services"},"jobs":{"type":"object","properties":{"cpu":{"type":"number","format":"float","minimum":0.2,"maximum":1,"example":0.5,"default":0.5},"memory":{"type":"number","format":"float","minimum":0.4,"maximum":1,"example":0.8,"default":0.8}},"required":["cpu","memory"],"additionalProperties":false,"description":"Request modifiers for jobs"},"builds":{"type":"object","properties":{"cpu":{"type":"number","format":"float","minimum":0.1,"maximum":1,"example":0.2,"default":0.2},"memory":{"type":"number","format":"float","minimum":0.1,"maximum":1,"example":0.5,"default":0.5}},"required":["cpu","memory"],"additionalProperties":false,"description":"Request modifiers for builds"},"addons":{"type":"object","properties":{"cpu":{"type":"number","format":"float","minimum":0.2,"maximum":1,"example":0.5,"default":0.5},"memory":{"type":"number","format":"float","minimum":0.4,"maximum":1,"example":0.8,"default":0.8}},"required":["cpu","memory"],"additionalProperties":false,"description":"Request modifiers for addons"}},"additionalProperties":false,"description":"Allows customising request modifier values."},"skipInstall":{"type":"boolean","default":false}},"additionalProperties":false},"restrictions":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Enable or disable BYOC restrictions for this entity"},"teams":{"type":"array","items":{"type":"object","properties":{"teamId":{"type":"string","description":"The ID of the team that has access to this BYOC cluster"}},"required":["teamId"]},"description":"List of teams that have access to this BYOC cluster","default":[]}},"required":["enabled"],"additionalProperties":false,"description":"BYOC restrictions configuration for controlling team access"},"gcp":{"type":"object","properties":{"networking":{"type":"object","properties":{"network":{"type":"string"},"subnetwork":{"type":"string"}},"additionalProperties":false},"enableAuthorizedIpRanges":{"type":"boolean"},"authorizedIpRanges":{"type":"array","items":{"type":"string","pattern":"^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\\/([0-9]|[1-2][0-9]|3[0-2]))$"}},"projectId":{"type":"string","pattern":"^[a-z][a-z0-9-]{4,28}[a-z0-9]$","description":"GCP Project ID"}},"additionalProperties":false,"description":"GCP specific data. Required when `provider` is `gcp`"},"aws":{"type":"object","properties":{"enablePublicAccessCidrs":{"type":"boolean"},"publicAccessCidrs":{"type":"array","items":{"type":"string","pattern":"^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\\/([0-9]|[1-2][0-9]|3[0-2]))$"}},"subnetConfiguration":{"type":"object","properties":{"mode":{"type":"string","enum":["default-subnets-for-azs","explicit-subnets"],"description":"The mode of the AWS subnet configuration"},"vpcId":{"type":"string","description":"Id of the VPC"},"subnets":{"type":"array","items":{"type":"string","example":"eu-west-1a"},"minItems":2,"description":"List of subnets the cluster should be created for. At least 2 must be specified."}},"required":["mode","subnets"],"additionalProperties":false},"vpcEgress":{"type":"boolean","description":"If egress traffic from the cluster should come from a single static egress IP."}},"additionalProperties":false,"description":"AWS specific data. Required when `provider` is `aws`."},"oci":{"type":"object","properties":{"vcnConfiguration":{"type":"object","properties":{"vcnId":{"type":"string"},"subnetIdForKubernetesApi":{"type":"string"},"subnetIdsForServiceLBs":{"type":"array","items":{"type":"string"}}},"required":["vcnId","subnetIdForKubernetesApi","subnetIdsForServiceLBs"],"additionalProperties":false}},"required":["vcnConfiguration"],"additionalProperties":false,"description":"OCI specific data. Required when `provider` is `oci`."},"azure":{"type":"object","properties":{"networking":{"type":"object","properties":{"vnetConfiguration":{"type":"object","properties":{"mode":{"type":"string","enum":["create-default","custom-vnet"],"description":"The vnet mode to use for this cluster. Use this to switch between creation of a new vnet per cluster or specifying a custom vnet."},"vnetId":{"type":"string","description":"Azure vnetId that should be used for this cluster. By default a new vnet will be created."}},"required":["mode"],"additionalProperties":false},"networkPluginMode":{"type":"string","enum":["overlay"],"description":"Optional setting to configure overlay mode on Azure."}},"additionalProperties":false},"enableAuthorizedIpRanges":{"type":"boolean"},"authorizedIpRanges":{"type":"array","items":{"type":"string","pattern":"^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\\/([0-9]|[1-2][0-9]|3[0-2]))$"}}},"additionalProperties":false,"description":"Azure specific data. Required when `provider` is `azure`."},"coreweave":{"type":"object","properties":{"zone":{"type":"string","description":"AZ of the cluster"},"network":{"type":"object","properties":{"networkMode":{"type":"string","enum":["create-default","custom"]},"vpcId":{"type":"string"},"customPrefixNames":{"type":"object","properties":{"podCidrName":{"type":"string"},"serviceCidrName":{"type":"string"},"internalLbCidrNames":{"type":"array","items":{"type":"string"},"minItems":1}},"required":["podCidrName","serviceCidrName","internalLbCidrNames"],"additionalProperties":false}},"required":["networkMode"],"additionalProperties":false,"description":"Network settings"}},"required":["zone"],"additionalProperties":false,"description":"CoreWeave specific data. Required when `provider` is `coreweave`."},"byok":{"type":"object","properties":{"nodePoolProviderIdLabel":{"type":"string"}},"required":["nodePoolProviderIdLabel"],"additionalProperties":false,"description":"BYOK specific data. Required when `provider` is `byok`."},"coordinates":{"type":"object","properties":{"latitude":{"type":"number","format":"float","minimum":-90,"maximum":90},"longitude":{"type":"number","format":"float","minimum":-180,"maximum":180}},"required":["latitude","longitude"],"additionalProperties":false,"description":"Geographic coordinates of the cluster. Optional, used for CDN geo-routing. Only applicable when `provider` is `byok`."},"dns":{"type":"string","description":"Auto-generated dns identifier for this cluster.","example":"xxxxxxxxxx"},"updatedAt":{"type":"string","format":"date-time","description":"The time the cluster was last updated.","example":"2021-01-20T11:19:53.175Z"},"createdAt":{"type":"string","format":"date-time","description":"The time the cluster was created.","example":"2021-01-20T11:19:53.175Z"},"deletionRequested":{"type":"boolean","description":"Indicates if provider resource deletion has been requested.","example":false}},"required":["id","name","provider","nodePools","updatedAt","createdAt","deletionRequested"],"additionalProperties":false,"description":"A cluster object."},"description":"An array of clusters."}},"required":["clusters"],"additionalProperties":false,"description":"Result data."},"pagination":{"type":"object","properties":{"hasNextPage":{"type":"boolean","description":"Is there another page of results available?","example":false},"cursor":{"type":"string","description":"The cursor to access the next page of results."},"count":{"type":"number","format":"float","description":"The number of results returned by this request.","example":1}},"required":["hasNextPage","count"],"additionalProperties":false,"description":"Data about the endpoint pagination."}},"required":["data","pagination"],"additionalProperties":false,"description":"Response object."}}},"tags":["Cloud Providers","team"],"security":[],"x-nf-permission-required":"Account > Cloud > Clusters > Read","x-nf-supports-orgs":true,"x-nf-team-scoped":true,"x-nf-org-scoped":true,"x-nf-cli-command":["list","cloud","clusters"]},"v1-cloud-providers-clusters-post":{"operationId":"postCloudProvidersClusters","summary":"Create cluster","description":"Creates a new cluster.","parameters":[],"responses":{"200":{"description":"Details about the created cluster.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","description":"The ID of cluster","example":"gcp-cluster-1"},"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":20,"description":"The name of the cluster.","example":"GCP Cluster 1"},"entityType":{"type":"string","enum":["org","team"],"example":"team"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"The description of the cluster.","example":"This is a new cluster."},"provider":{"type":"string","enum":["aws","azure","civo","gcp","oci","cloudflare","coreweave","aiven","backblaze","akamai","byok"],"description":"Cloud provider to be used for the selected resource","example":"gcp"},"region":{"type":"string","description":"Region of the cluster. Can only be updated for BYOK clusters.","example":"europe-west2"},"status":{"type":"object","properties":{"state":{"type":"object","properties":{"state":{"type":"string","description":"Current state of the cluster.","example":"running"},"transitionTime":{"type":"string","format":"date-time","description":"Time of the last state transition."},"reason":{"type":"string","description":"The reason, given the cluster is in an error state."}},"required":["state"],"additionalProperties":false}},"additionalProperties":false},"kubernetesVersion":{"type":"string","description":"Deprecated: This field is no longer used, the version is now set by the platform.","example":"1.30"},"integrationId":{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","description":"Existing integration to use for this cluster.","example":"gcp-integration"},"storage":{"type":"object","properties":{"storageClasses":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"type":{"type":"string","enum":["storage-class","snapshot-class"]},"kubernetesName":{"type":"string"},"defaultSnapshotClass":{"type":"string"},"options":{"type":"object","properties":{"capabilities":{"type":"object","properties":{"expansion":{"type":"boolean","description":"Increasing volume size after provisioning."},"snapshot":{"type":"boolean","description":"Point in time snapshotting of volumes."}},"additionalProperties":false},"accessModes":{"type":"object","properties":{"ReadWriteOnce":{"type":"boolean","description":"Access mode where a volume is exclusively attached to a single pod at a time."},"ReadWriteMany":{"type":"boolean","description":"Access mode where a volume can be attached to multiple single pods at a time for read and write operations."}},"additionalProperties":false},"storageSize":{"type":"object","properties":{"minValidSize":{"type":"integer","minimum":1,"description":"Enforces a minimum storage size per addon or volume."},"maxValidSize":{"type":"integer","minimum":1,"description":"Enforces a maximum storage size per addon or volume."},"suggestedOptions":{"type":"array","items":{"type":"integer","minimum":1},"description":"Specific storage size options to suggest in the UI."}},"additionalProperties":false},"platform":{"type":"object","properties":{"supportedResources":{"type":"array","items":{"type":"string","enum":["addon","volume","build-cache"]}}},"additionalProperties":false}},"additionalProperties":false}},"required":["id","name","kubernetesName"],"additionalProperties":false},"uniqueItems":true},"snapshotClasses":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"kubernetesName":{"type":"string"}},"required":["id","name","kubernetesName"],"additionalProperties":false},"uniqueItems":true}},"additionalProperties":false},"nodePools":{"oneOf":[{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"(^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$)|(^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89ABab][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$)","minLength":3,"maxLength":63,"description":"ID of existing node pool. Must be passed when modifying existing node pools. Not relevant for new node pools","example":"6aa96121-0345-43ad-bade-af36d540c222"},"nodeType":{"type":"string","description":"Machine type to be used by the node pool.","example":"n2-standard-8"},"oci":{"type":"object","properties":{"ocpu":{"type":"integer","minimum":1},"memory":{"type":"integer","minimum":1}},"required":["ocpu","memory"],"additionalProperties":false,"description":"OCI instance specific settings. Must respect ratios as determined by the selected node type."},"gcp":{"type":"object","properties":{"enablePrivateNodes":{"type":"boolean","description":"Set this flag to disable public IP assignment for nodes in this node pool."}},"additionalProperties":false,"description":"GCP specific settings."},"azure":{"type":"object","properties":{"systemPool":{"type":"boolean","description":"When 'provider' is 'azure', at least one system node pool is required per cluster."},"enablePublicNodeIp":{"type":"boolean","description":"When 'provider' is 'azure', set this flag to use public node IPs."},"vnetSubnetId":{"type":"string","description":"ID of the vnet subnet to use."}},"additionalProperties":false,"description":"Azure specific settings."},"aws":{"type":"object","properties":{"launchTemplate":{"type":"object","properties":{"id":{"type":"string","description":"ID of the launch template to use."},"version":{"type":"integer","minimum":1,"description":"Version of the launch template that should be used."}},"required":["id","version"],"additionalProperties":false,"description":"Specify a launch template to use for this node pool. When using a launch template, the disk size selection on the node pool level will be ignored."}},"additionalProperties":false,"description":"AWS specific node pool settings."},"nodeCount":{"type":"integer","minimum":0,"maximum":250,"description":"Number of nodes to the node pool should be provisioned with.","example":3},"autoscaling":{"type":"object","properties":{"enabled":{"type":"boolean","example":true,"default":false},"min":{"type":"integer","minimum":0,"maximum":249,"example":0},"max":{"type":"integer","minimum":1,"maximum":250,"example":10}},"additionalProperties":false,"nullable":true,"description":"Auto scaling settings to use for the node pool. Requires that the cloud provider supports this feature."},"computeResources":{"type":"object","properties":{"gpu":{"type":"object","properties":{"type":{"type":"string","pattern":"[a-z0-9]","description":"GPU type associated with the node pool.","example":"h100"},"resources":{"type":"object","properties":{"memoryInfo":{"type":"object","properties":{"sizeInGiB":{"type":"number","format":"float","minimum":1,"description":"Memory amount of the GPU in Gib.","example":80}},"additionalProperties":false}},"additionalProperties":false},"count":{"type":"integer","minimum":1,"description":"Number of GPUs per node.","example":1},"timeslicing":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether or not to enable time-slicing on the GPU."},"numSlices":{"type":"number","format":"float","minimum":1,"description":"Sets the amount of slices per GPU, e.g. how many pods may be scheduled concurrently on each GPU."}},"additionalProperties":false,"description":"Time-slicing configuration object."}},"required":["type","resources","count"],"additionalProperties":false}},"additionalProperties":false},"preemptible":{"type":"boolean","description":"Configures node pool with preemptible / spot instances if enabled.","example":false,"default":false},"diskType":{"type":"string","description":"The disk type to use."},"diskSize":{"type":"integer","minimum":1,"description":"Disk size in GB","example":100},"availabilityZones":{"type":"array","items":{"type":"string"},"minItems":1,"maxItems":1,"description":"Zones in which the node pool should be provisioned."},"subnets":{"type":"array","items":{"type":"string"},"minItems":1,"maxItems":1,"description":"Subnets in which the node pool should be provisioned. Required if provider is `oci`."},"scheduling":{"type":"object","properties":{"allowJobs":{"type":"boolean","description":"Allow jobs to schedule to this node pool"},"onlyGpuJobs":{"type":"boolean","description":"Restrict job scheduling to jobs which have GPU resources configured. Only relevant for GPU node pools."},"allowServices":{"type":"boolean","description":"Allow services to schedule to this node pool"},"onlyGpuServices":{"type":"boolean","description":"Restrict service scheduling to services which have GPU resources configured. Only relevant for GPU node pools."},"allowAddons":{"type":"boolean","description":"Allow addons to schedule to this node pool"},"allowBuilds":{"type":"boolean","description":"Allow builds to schedule to this node pool"},"onlyGpuBuilds":{"type":"boolean","description":"Restrict build scheduling to builds which have GPU resources configured. Only relevant for GPU node pools."},"allowCeph":{"type":"boolean","description":"Allow the placement of Ceph pods"}},"additionalProperties":false,"description":"Define basic workload scheduling restrictions for this node pool"},"labels":{"type":"object","properties":{},"additionalProperties":false,"description":"Set of label keys and values that can be used for advanced scheduling in combination with resource tag scheduling rules."}},"required":["id","nodeType","nodeCount","diskSize"],"additionalProperties":false,"description":"Node pool configuration for BYOC clusters"},"minItems":1,"uniqueItems":true,"description":"An array of node pools for BYOC."},{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"(^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$)|(^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89ABab][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$)","minLength":3,"maxLength":63,"description":"ID of the node pool. Must be passed when modifying existing node pools. Not relevant for new node pools","example":"node-pool-1"},"providerId":{"type":"string","pattern":"(^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$)|(^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89ABab][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$)","minLength":3,"maxLength":63,"description":"ID which identifies kubernetes nodes as belonging to this pool.","example":"6aa96121-0345-43ad-bade-af36d540c222"},"computeResources":{"type":"object","properties":{"gpu":{"type":"object","properties":{"supported":{"type":"boolean","description":"Whether this node pool consists of GPU nodes ."},"type":{"type":"string","pattern":"[a-z0-9]","description":"GPU type associated with the node pool.","example":"h100"},"resources":{"type":"object","properties":{"memoryInfo":{"type":"object","properties":{"sizeInGiB":{"type":"number","format":"float","minimum":1,"description":"Memory amount of the GPU in Gib.","example":80}},"additionalProperties":false}},"additionalProperties":false},"mig":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether or not to enable Multi-Instance GPU (MIG)."},"partitions":{"type":"array","items":{"type":"string"},"description":"The partitions to configure on the GPU."}},"additionalProperties":false,"description":"Multi-Instance GPU (MIG). configuration object."},"timeslicing":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether or not to enable time-slicing on the GPU."},"numSlices":{"type":"number","format":"float","minimum":1,"description":"Sets the amount of slices per GPU, e.g. how many pods may be scheduled concurrently on each GPU."}},"additionalProperties":false,"description":"Time-slicing configuration object."},"count":{"type":"integer","minimum":1,"description":"Number of GPUs per node.","example":1}},"additionalProperties":false}},"additionalProperties":false},"defaultPool":{"type":"boolean","description":"Fallback pool to which nodes which do not match any defined node pool are assigned. Exactly one default pool is required."},"preemptible":{"type":"boolean","description":"Configures node pool with preemptible / spot instances if enabled.","example":false,"default":false},"scheduling":{"type":"object","properties":{"allowJobs":{"type":"boolean","description":"Allow jobs to schedule to this node pool"},"onlyGpuJobs":{"type":"boolean","description":"Restrict job scheduling to jobs which have GPU resources configured. Only relevant for GPU node pools."},"allowServices":{"type":"boolean","description":"Allow services to schedule to this node pool"},"onlyGpuServices":{"type":"boolean","description":"Restrict service scheduling to services which have GPU resources configured. Only relevant for GPU node pools."},"allowAddons":{"type":"boolean","description":"Allow addons to schedule to this node pool"},"allowBuilds":{"type":"boolean","description":"Allow builds to schedule to this node pool"},"onlyGpuBuilds":{"type":"boolean","description":"Restrict build scheduling to builds which have GPU resources configured. Only relevant for GPU node pools."},"allowCeph":{"type":"boolean","description":"Allow the placement of Ceph pods"}},"additionalProperties":false,"description":"Define basic workload scheduling restrictions for this node pool"},"platform":{"type":"object","properties":{"architecture":{"type":"string","enum":["amd64","arm64"],"description":"Platform architecture of the underlying node type.","example":"amd64"}},"additionalProperties":false},"labels":{"type":"object","properties":{},"additionalProperties":false,"description":"Set of label keys and values that can be used for advanced scheduling in combination with resource tag scheduling rules."}},"required":["id","providerId"],"additionalProperties":false,"description":"Node pool configuration for BYOK clusters"},"minItems":1,"uniqueItems":true,"description":"An array of node pools for BYOK."}],"description":"An array of node pools for BYOC or BYOK."},"settings":{"type":"object","properties":{"builds":{"type":"object","properties":{"mode":{"type":"string","enum":["paas","internal","build-cluster"]},"plan":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"Plan to use for builds if they are run on the cluster","example":"nf-compute-200"},"clusterId":{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","description":"Cluster to use for scheduling builds"},"caching":{"type":"object","properties":{"allow":{"type":"boolean","description":"Whether to allow local disk based caching for builds."},"storageClassName":{"type":"string","description":"Storage class used by default for local disk based caching."}},"additionalProperties":false,"description":"Cache settings for builds"}},"additionalProperties":false},"registry":{"type":"object","properties":{"mode":{"type":"string","enum":["paas","self-hosted"]},"registryId":{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","description":"Credentials to use for storing of images.","example":"my-registry-credentials"}},"additionalProperties":false},"logging":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["paas"]}},"additionalProperties":false,"description":"Logging via PaaS."},{"type":"object","properties":{"mode":{"type":"string","enum":["loki"]},"loki":{"type":"object","properties":{"storageType":{"type":"string","enum":["s3"]},"s3BucketName":{"type":"string"},"s3AccessKey":{"type":"string"},"s3SecretKey":{"type":"string"},"s3Region":{"type":"string"}},"required":["storageType","s3BucketName","s3AccessKey","s3SecretKey","s3Region"],"additionalProperties":false}},"required":["mode"],"additionalProperties":false,"description":"Logging via Loki (S3 storage)."},{"type":"object","properties":{"mode":{"type":"string","enum":["loki"]},"loki":{"type":"object","properties":{"storageType":{"type":"string","enum":["gcs"]},"gcsBucketName":{"type":"string"},"gcpIntegrationId":{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$"}},"required":["storageType","gcsBucketName","gcpIntegrationId"],"additionalProperties":false}},"required":["mode"],"additionalProperties":false,"description":"Logging via Loki (GCS storage)."}],"description":"Logging settings"},"networking":{"type":"object","properties":{"overlayNetwork":{"type":"boolean","description":"Whether overlay networking is enabled for this cluster."},"overlayCIDR":{"type":"string","pattern":"^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\\/([0-9]|[1-2][0-9]|3[0-2]))$","description":"CIDR range for the overlay network."}},"additionalProperties":false},"vanityDomains":{"type":"object","properties":{"apps":{"type":"object","properties":{"zoneName":{"type":"string"},"integrationId":{"type":"string"}},"required":["zoneName","integrationId"],"additionalProperties":false},"customDomains":{"type":"object","properties":{"zoneName":{"type":"string"},"integrationId":{"type":"string"}},"required":["zoneName","integrationId"],"additionalProperties":false},"loadBalancers":{"type":"object","properties":{"zoneName":{"type":"string"},"integrationId":{"type":"string"}},"required":["zoneName","integrationId"],"additionalProperties":false}},"additionalProperties":false},"infrastructure":{"type":"object","properties":{"workloads":{"type":"object","properties":{"runtimeClass":{"type":"string","enum":["none","gvisor","kata-clh","kata-qemu"]}},"additionalProperties":false,"description":"DEPRECATED: This field will be removed in the near future."},"builds":{"type":"object","properties":{"runtimeClass":{"type":"string","enum":["none","gvisor","kata-clh","kata-qemu"]}},"additionalProperties":false,"description":"DEPRECATED: This field will be removed in the near future."},"sandboxing":{"type":"object","properties":{"installGvisor":{"type":"boolean"},"installMicroVm":{"type":"boolean"},"defaultSandbox":{"type":"object","properties":{"builds":{"type":"string","enum":["none","gvisor","kata-clh","kata-qemu"]},"jobs":{"type":"string","enum":["none","gvisor","kata-clh","kata-qemu"]},"services":{"type":"string","enum":["none","gvisor","kata-clh","kata-qemu"]},"addons":{"type":"string","enum":["none","gvisor","kata-clh","kata-qemu"]}},"additionalProperties":false}},"additionalProperties":false},"installKata":{"type":"boolean","description":"DEPRECATED: This field will be removed in the near future."},"installGvisor":{"type":"boolean","description":"DEPRECATED: This field will be removed in the near future."},"cleanupVolumes":{"type":"boolean","default":true},"cleanupSnapshots":{"type":"boolean","default":true},"cephStorageProvider":{"type":"object","properties":{"enabled":{"type":"boolean","default":false},"resources":{"type":"object","properties":{"cpu":{"type":"number","format":"float","minimum":1,"maximum":20,"description":"Configure the CPU resources per Ceph replica"},"memory":{"type":"number","format":"float","minimum":4096,"maximum":40960,"description":"Configure the memory resources per Ceph replica"},"storage":{"type":"number","format":"float","minimum":102400,"maximum":5242880,"description":"Configure the data disk size per Ceph replica"}},"additionalProperties":false},"enableMultiReadWriteStorage":{"type":"boolean","description":"Configure Ceph to be enable use of multi read write storage for persistent volumes on the cluster."},"enableSingleReadWriteStorage":{"type":"boolean","description":"Configure Ceph to be used as default storage class for single read write storage. This will replace the default storage of the cloud provider."},"enableErasureCoding":{"type":"boolean","description":"Configure Ceph to be set up with erasure coding. This will be less fault tolerant but more cost effective."},"enableTopologyAwareScheduling":{"type":"boolean","description":"Configure Ceph to be set up with topology aware scheduling, enforcing deployment across multiple zones."}},"additionalProperties":false}},"additionalProperties":false},"requestModifiers":{"type":"object","properties":{"services":{"type":"object","properties":{"cpu":{"type":"number","format":"float","minimum":0.2,"maximum":1,"example":0.5,"default":0.5},"memory":{"type":"number","format":"float","minimum":0.4,"maximum":1,"example":0.8,"default":0.8}},"required":["cpu","memory"],"additionalProperties":false,"description":"Request modifiers for services"},"jobs":{"type":"object","properties":{"cpu":{"type":"number","format":"float","minimum":0.2,"maximum":1,"example":0.5,"default":0.5},"memory":{"type":"number","format":"float","minimum":0.4,"maximum":1,"example":0.8,"default":0.8}},"required":["cpu","memory"],"additionalProperties":false,"description":"Request modifiers for jobs"},"builds":{"type":"object","properties":{"cpu":{"type":"number","format":"float","minimum":0.1,"maximum":1,"example":0.2,"default":0.2},"memory":{"type":"number","format":"float","minimum":0.1,"maximum":1,"example":0.5,"default":0.5}},"required":["cpu","memory"],"additionalProperties":false,"description":"Request modifiers for builds"},"addons":{"type":"object","properties":{"cpu":{"type":"number","format":"float","minimum":0.2,"maximum":1,"example":0.5,"default":0.5},"memory":{"type":"number","format":"float","minimum":0.4,"maximum":1,"example":0.8,"default":0.8}},"required":["cpu","memory"],"additionalProperties":false,"description":"Request modifiers for addons"}},"additionalProperties":false,"description":"Allows customising request modifier values."}},"additionalProperties":false},"restrictions":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Enable or disable BYOC restrictions for this entity"},"teams":{"type":"array","items":{"type":"object","properties":{"teamId":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":45,"description":"The ID of the team that has access to this BYOC cluster"}},"required":["teamId"]},"description":"List of teams that have access to this BYOC cluster","default":[]}},"required":["enabled"],"additionalProperties":false,"description":"BYOC restrictions configuration for controlling team access"},"gcp":{"type":"object","properties":{"networking":{"type":"object","properties":{"network":{"type":"string"},"subnetwork":{"type":"string"}},"additionalProperties":false},"enableAuthorizedIpRanges":{"type":"boolean"},"authorizedIpRanges":{"type":"array","items":{"type":"string","pattern":"^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\\/([0-9]|[1-2][0-9]|3[0-2]))$"}},"projectId":{"type":"string","pattern":"^[a-z][a-z0-9-]{4,28}[a-z0-9]$","description":"GCP Project ID"}},"additionalProperties":false,"description":"GCP specific data. Required when `provider` is `gcp`"},"aws":{"type":"object","properties":{"enablePublicAccessCidrs":{"type":"boolean"},"publicAccessCidrs":{"type":"array","items":{"type":"string","pattern":"^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\\/([0-9]|[1-2][0-9]|3[0-2]))$"}},"subnetConfiguration":{"type":"object","properties":{"mode":{"type":"string","enum":["default-subnets-for-azs","explicit-subnets"],"description":"The mode of the AWS subnet configuration"},"vpcId":{"type":"string","description":"Id of the VPC"},"subnets":{"type":"array","items":{"type":"string","example":"eu-west-1a"},"minItems":2,"description":"List of subnets the cluster should be created for. At least 2 must be specified."}},"required":["mode","subnets"],"additionalProperties":false},"vpcEgress":{"type":"boolean","description":"If egress traffic from the cluster should come from a single static egress IP."}},"additionalProperties":false,"description":"AWS specific data. Required when `provider` is `aws`."},"oci":{"type":"object","properties":{"vcnConfiguration":{"type":"object","properties":{"vcnId":{"type":"string"},"subnetIdForKubernetesApi":{"type":"string"},"subnetIdsForServiceLBs":{"type":"array","items":{"type":"string"}}},"required":["vcnId","subnetIdForKubernetesApi","subnetIdsForServiceLBs"],"additionalProperties":false}},"required":["vcnConfiguration"],"additionalProperties":false,"description":"OCI specific data. Required when `provider` is `oci`."},"azure":{"type":"object","properties":{"networking":{"type":"object","properties":{"vnetConfiguration":{"type":"object","properties":{"mode":{"type":"string","enum":["create-default","custom-vnet"],"description":"The vnet mode to use for this cluster. Use this to switch between creation of a new vnet per cluster or specifying a custom vnet."},"vnetId":{"type":"string","description":"Azure vnetId that should be used for this cluster. By default a new vnet will be created."}},"required":["mode"],"additionalProperties":false},"networkPluginMode":{"type":"string","enum":["overlay"],"description":"Optional setting to configure overlay mode on Azure."}},"additionalProperties":false},"enableAuthorizedIpRanges":{"type":"boolean"},"authorizedIpRanges":{"type":"array","items":{"type":"string","pattern":"^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\\/([0-9]|[1-2][0-9]|3[0-2]))$"}}},"additionalProperties":false,"description":"Azure specific data. Required when `provider` is `azure`."},"coreweave":{"type":"object","properties":{"zone":{"type":"string","description":"AZ of the cluster"},"network":{"type":"object","properties":{"networkMode":{"type":"string","enum":["create-default","custom"]},"vpcId":{"type":"string"},"customPrefixNames":{"type":"object","properties":{"podCidrName":{"type":"string"},"serviceCidrName":{"type":"string"},"internalLbCidrNames":{"type":"array","items":{"type":"string"},"minItems":1}},"required":["podCidrName","serviceCidrName","internalLbCidrNames"],"additionalProperties":false}},"required":["networkMode"],"additionalProperties":false,"description":"Network settings"}},"required":["zone"],"additionalProperties":false,"description":"CoreWeave specific data. Required when `provider` is `coreweave`."},"byok":{"type":"object","properties":{"nodePoolProviderIdLabel":{"type":"string"}},"required":["nodePoolProviderIdLabel"],"additionalProperties":false,"description":"BYOK specific data. Required when `provider` is `byok`."},"coordinates":{"type":"object","properties":{"latitude":{"type":"number","format":"float","minimum":-90,"maximum":90},"longitude":{"type":"number","format":"float","minimum":-180,"maximum":180}},"required":["latitude","longitude"],"additionalProperties":false,"description":"Geographic coordinates of the cluster. Optional, used for CDN geo-routing. Only applicable when `provider` is `byok`."},"dns":{"type":"string","description":"Auto-generated dns identifier for this cluster.","example":"xxxxxxxxxx"},"updatedAt":{"type":"string","format":"date-time","description":"The time the cluster was last updated.","example":"2021-01-20T11:19:53.175Z"},"createdAt":{"type":"string","format":"date-time","description":"The time the cluster was created.","example":"2021-01-20T11:19:53.175Z"},"deletionRequested":{"type":"boolean","description":"Indicates if provider resource deletion has been requested.","example":false}},"required":["id","name","provider","nodePools","updatedAt","createdAt","deletionRequested"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Cloud Providers"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":20,"description":"The name of the cluster.","example":"GCP Cluster 1"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"The description of the cluster.","example":"This is a new cluster."},"provider":{"type":"string","enum":["aws","azure","civo","gcp","oci","cloudflare","coreweave","aiven","backblaze","akamai","byok"],"description":"Cloud provider to be used for the selected resource","example":"gcp"},"region":{"type":"string","description":"Region of the cluster. Can only be updated for BYOK clusters.","example":"europe-west2"},"kubernetesVersion":{"type":"string","description":"Deprecated: This field is no longer used, the version is now set by the platform.","example":"1.30"},"integrationId":{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","description":"Existing integration to use for this cluster.","example":"gcp-integration"},"storage":{"type":"object","properties":{"storageClasses":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"type":{"type":"string","enum":["storage-class","snapshot-class"]},"kubernetesName":{"type":"string"},"defaultSnapshotClass":{"type":"string"},"options":{"type":"object","properties":{"capabilities":{"type":"object","properties":{"expansion":{"type":"boolean","description":"Increasing volume size after provisioning."},"snapshot":{"type":"boolean","description":"Point in time snapshotting of volumes."}},"additionalProperties":false},"accessModes":{"type":"object","properties":{"ReadWriteOnce":{"type":"boolean","description":"Access mode where a volume is exclusively attached to a single pod at a time."},"ReadWriteMany":{"type":"boolean","description":"Access mode where a volume can be attached to multiple single pods at a time for read and write operations."}},"additionalProperties":false},"storageSize":{"type":"object","properties":{"minValidSize":{"type":"integer","minimum":1,"description":"Enforces a minimum storage size per addon or volume."},"maxValidSize":{"type":"integer","minimum":1,"description":"Enforces a maximum storage size per addon or volume."},"suggestedOptions":{"type":"array","items":{"type":"integer","minimum":1},"description":"Specific storage size options to suggest in the UI."}},"additionalProperties":false},"platform":{"type":"object","properties":{"supportedResources":{"type":"array","items":{"type":"string","enum":["addon","volume","build-cache"]}}},"additionalProperties":false}},"additionalProperties":false}},"required":["id","name","kubernetesName"],"additionalProperties":false},"uniqueItems":true},"snapshotClasses":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"kubernetesName":{"type":"string"}},"required":["id","name","kubernetesName"],"additionalProperties":false},"uniqueItems":true}},"additionalProperties":false},"nodePools":{"oneOf":[{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"(^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$)|(^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89ABab][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$)","minLength":3,"maxLength":63,"description":"ID of existing node pool. Must be passed when modifying existing node pools. Not relevant for new node pools","example":"6aa96121-0345-43ad-bade-af36d540c222"},"nodeType":{"type":"string","description":"Machine type to be used by the node pool.","example":"n2-standard-8"},"oci":{"type":"object","properties":{"ocpu":{"type":"integer","minimum":1},"memory":{"type":"integer","minimum":1}},"required":["ocpu","memory"],"additionalProperties":false,"description":"OCI instance specific settings. Must respect ratios as determined by the selected node type."},"gcp":{"type":"object","properties":{"enablePrivateNodes":{"type":"boolean","description":"Set this flag to disable public IP assignment for nodes in this node pool."}},"additionalProperties":false,"description":"GCP specific settings."},"azure":{"type":"object","properties":{"systemPool":{"type":"boolean","description":"When 'provider' is 'azure', at least one system node pool is required per cluster."},"enablePublicNodeIp":{"type":"boolean","description":"When 'provider' is 'azure', set this flag to use public node IPs."},"vnetSubnetId":{"type":"string","description":"ID of the vnet subnet to use."}},"additionalProperties":false,"description":"Azure specific settings."},"aws":{"type":"object","properties":{"launchTemplate":{"type":"object","properties":{"id":{"type":"string","description":"ID of the launch template to use."},"version":{"type":"integer","minimum":1,"description":"Version of the launch template that should be used."}},"required":["id","version"],"additionalProperties":false,"description":"Specify a launch template to use for this node pool. When using a launch template, the disk size selection on the node pool level will be ignored."}},"additionalProperties":false,"description":"AWS specific node pool settings."},"nodeCount":{"type":"integer","minimum":0,"maximum":250,"description":"Number of nodes to the node pool should be provisioned with.","example":3},"autoscaling":{"type":"object","properties":{"enabled":{"type":"boolean","example":true,"default":false},"min":{"type":"integer","minimum":0,"maximum":249,"example":0},"max":{"type":"integer","minimum":1,"maximum":250,"example":10}},"additionalProperties":false,"nullable":true,"description":"Auto scaling settings to use for the node pool. Requires that the cloud provider supports this feature."},"computeResources":{"type":"object","properties":{"gpu":{"type":"object","properties":{"timeslicing":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether or not to enable time-slicing on the GPU."},"numSlices":{"type":"number","format":"float","minimum":1,"description":"Sets the amount of slices per GPU, e.g. how many pods may be scheduled concurrently on each GPU."}},"additionalProperties":false,"description":"Time-slicing configuration object."}},"additionalProperties":false}},"additionalProperties":false},"preemptible":{"type":"boolean","description":"Configures node pool with preemptible / spot instances if enabled.","example":false,"default":false},"diskType":{"type":"string","description":"The disk type to use."},"diskSize":{"type":"integer","minimum":1,"description":"Disk size in GB","example":100},"availabilityZones":{"type":"array","items":{"type":"string"},"minItems":1,"maxItems":1,"description":"Zones in which the node pool should be provisioned."},"subnets":{"type":"array","items":{"type":"string"},"minItems":1,"maxItems":1,"description":"Subnets in which the node pool should be provisioned. Required if provider is `oci`."},"scheduling":{"type":"object","properties":{"allowJobs":{"type":"boolean","description":"Allow jobs to schedule to this node pool"},"onlyGpuJobs":{"type":"boolean","description":"Restrict job scheduling to jobs which have GPU resources configured. Only relevant for GPU node pools."},"allowServices":{"type":"boolean","description":"Allow services to schedule to this node pool"},"onlyGpuServices":{"type":"boolean","description":"Restrict service scheduling to services which have GPU resources configured. Only relevant for GPU node pools."},"allowAddons":{"type":"boolean","description":"Allow addons to schedule to this node pool"},"allowBuilds":{"type":"boolean","description":"Allow builds to schedule to this node pool"},"onlyGpuBuilds":{"type":"boolean","description":"Restrict build scheduling to builds which have GPU resources configured. Only relevant for GPU node pools."},"allowCeph":{"type":"boolean","description":"Allow the placement of Ceph pods"}},"additionalProperties":false,"description":"Define basic workload scheduling restrictions for this node pool"},"labels":{"type":"object","properties":{},"additionalProperties":false,"description":"Set of label keys and values that can be used for advanced scheduling in combination with resource tag scheduling rules."}},"required":["id","nodeType","nodeCount","diskSize"],"additionalProperties":false,"description":"Node pool configuration for BYOC clusters"},"minItems":1,"uniqueItems":true,"description":"An array of node pools for BYOC."},{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"(^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$)|(^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89ABab][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$)","minLength":3,"maxLength":63,"description":"ID of the node pool. Must be passed when modifying existing node pools. Not relevant for new node pools","example":"node-pool-1"},"providerId":{"type":"string","pattern":"(^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$)|(^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89ABab][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$)","minLength":3,"maxLength":63,"description":"ID which identifies kubernetes nodes as belonging to this pool.","example":"6aa96121-0345-43ad-bade-af36d540c222"},"computeResources":{"type":"object","properties":{"gpu":{"type":"object","properties":{"supported":{"type":"boolean","description":"Whether this node pool consists of GPU nodes ."},"type":{"type":"string","pattern":"[a-z0-9]","description":"GPU type associated with the node pool.","example":"h100"},"resources":{"type":"object","properties":{"memoryInfo":{"type":"object","properties":{"sizeInGiB":{"type":"number","format":"float","minimum":1,"description":"Memory amount of the GPU in Gib.","example":80}},"additionalProperties":false}},"additionalProperties":false},"mig":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether or not to enable Multi-Instance GPU (MIG)."},"partitions":{"type":"array","items":{"type":"string"},"description":"The partitions to configure on the GPU."}},"additionalProperties":false,"description":"Multi-Instance GPU (MIG). configuration object."},"timeslicing":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether or not to enable time-slicing on the GPU."},"numSlices":{"type":"number","format":"float","minimum":1,"description":"Sets the amount of slices per GPU, e.g. how many pods may be scheduled concurrently on each GPU."}},"additionalProperties":false,"description":"Time-slicing configuration object."},"count":{"type":"integer","minimum":1,"description":"Number of GPUs per node.","example":1}},"additionalProperties":false}},"additionalProperties":false},"defaultPool":{"type":"boolean","description":"Fallback pool to which nodes which do not match any defined node pool are assigned. Exactly one default pool is required."},"preemptible":{"type":"boolean","description":"Configures node pool with preemptible / spot instances if enabled.","example":false,"default":false},"scheduling":{"type":"object","properties":{"allowJobs":{"type":"boolean","description":"Allow jobs to schedule to this node pool"},"onlyGpuJobs":{"type":"boolean","description":"Restrict job scheduling to jobs which have GPU resources configured. Only relevant for GPU node pools."},"allowServices":{"type":"boolean","description":"Allow services to schedule to this node pool"},"onlyGpuServices":{"type":"boolean","description":"Restrict service scheduling to services which have GPU resources configured. Only relevant for GPU node pools."},"allowAddons":{"type":"boolean","description":"Allow addons to schedule to this node pool"},"allowBuilds":{"type":"boolean","description":"Allow builds to schedule to this node pool"},"onlyGpuBuilds":{"type":"boolean","description":"Restrict build scheduling to builds which have GPU resources configured. Only relevant for GPU node pools."},"allowCeph":{"type":"boolean","description":"Allow the placement of Ceph pods"}},"additionalProperties":false,"description":"Define basic workload scheduling restrictions for this node pool"},"platform":{"type":"object","properties":{"architecture":{"type":"string","enum":["amd64","arm64"],"description":"Platform architecture of the underlying node type.","example":"amd64"}},"additionalProperties":false},"labels":{"type":"object","properties":{},"additionalProperties":false,"description":"Set of label keys and values that can be used for advanced scheduling in combination with resource tag scheduling rules."}},"required":["id","providerId"],"additionalProperties":false,"description":"Node pool configuration for BYOK clusters"},"minItems":1,"uniqueItems":true,"description":"An array of node pools for BYOK."}],"description":"An array of node pools for BYOC or BYOK."},"settings":{"type":"object","properties":{"builds":{"type":"object","properties":{"mode":{"type":"string","enum":["paas","internal","build-cluster"]},"plan":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"Plan to use for builds if they are run on the cluster","example":"nf-compute-200"},"clusterId":{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","description":"Cluster to use for scheduling builds"},"caching":{"type":"object","properties":{"allow":{"type":"boolean","description":"Whether to allow local disk based caching for builds."},"storageClassName":{"type":"string","description":"Storage class used by default for local disk based caching."}},"additionalProperties":false,"description":"Cache settings for builds"}},"additionalProperties":false},"registry":{"type":"object","properties":{"mode":{"type":"string","enum":["paas","self-hosted"]},"registryId":{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","description":"Credentials to use for storing of images.","example":"my-registry-credentials"}},"additionalProperties":false},"logging":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["paas"]}},"additionalProperties":false,"description":"Logging via PaaS."},{"type":"object","properties":{"mode":{"type":"string","enum":["loki"]},"loki":{"type":"object","properties":{"storageType":{"type":"string","enum":["s3"]},"s3BucketName":{"type":"string"},"s3AccessKey":{"type":"string"},"s3SecretKey":{"type":"string"},"s3Region":{"type":"string"}},"required":["storageType","s3BucketName","s3AccessKey","s3SecretKey","s3Region"],"additionalProperties":false}},"required":["mode"],"additionalProperties":false,"description":"Logging via Loki (S3 storage)."},{"type":"object","properties":{"mode":{"type":"string","enum":["loki"]},"loki":{"type":"object","properties":{"storageType":{"type":"string","enum":["gcs"]},"gcsBucketName":{"type":"string"},"gcpIntegrationId":{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$"}},"required":["storageType","gcsBucketName","gcpIntegrationId"],"additionalProperties":false}},"required":["mode"],"additionalProperties":false,"description":"Logging via Loki (GCS storage)."}],"description":"Logging settings"},"networking":{"type":"object","properties":{"overlayNetwork":{"type":"boolean","description":"Whether overlay networking is enabled for this cluster."},"overlayCIDR":{"type":"string","pattern":"^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\\/([0-9]|[1-2][0-9]|3[0-2]))$","description":"CIDR range for the overlay network."}},"additionalProperties":false},"vanityDomains":{"type":"object","properties":{"apps":{"type":"object","properties":{"zoneName":{"type":"string"},"integrationId":{"type":"string"}},"required":["zoneName","integrationId"],"additionalProperties":false},"customDomains":{"type":"object","properties":{"zoneName":{"type":"string"},"integrationId":{"type":"string"}},"required":["zoneName","integrationId"],"additionalProperties":false},"loadBalancers":{"type":"object","properties":{"zoneName":{"type":"string"},"integrationId":{"type":"string"}},"required":["zoneName","integrationId"],"additionalProperties":false}},"additionalProperties":false},"infrastructure":{"type":"object","properties":{"workloads":{"type":"object","properties":{"runtimeClass":{"type":"string","enum":["none","gvisor","kata-clh","kata-qemu"]}},"additionalProperties":false,"description":"DEPRECATED: This field will be removed in the near future."},"builds":{"type":"object","properties":{"runtimeClass":{"type":"string","enum":["none","gvisor","kata-clh","kata-qemu"]}},"additionalProperties":false,"description":"DEPRECATED: This field will be removed in the near future."},"sandboxing":{"type":"object","properties":{"installGvisor":{"type":"boolean"},"installMicroVm":{"type":"boolean"},"defaultSandbox":{"type":"object","properties":{"builds":{"type":"string","enum":["none","gvisor","kata-clh","kata-qemu"]},"jobs":{"type":"string","enum":["none","gvisor","kata-clh","kata-qemu"]},"services":{"type":"string","enum":["none","gvisor","kata-clh","kata-qemu"]},"addons":{"type":"string","enum":["none","gvisor","kata-clh","kata-qemu"]}},"additionalProperties":false}},"additionalProperties":false},"installKata":{"type":"boolean","description":"DEPRECATED: This field will be removed in the near future."},"installGvisor":{"type":"boolean","description":"DEPRECATED: This field will be removed in the near future."},"cleanupVolumes":{"type":"boolean","default":true},"cleanupSnapshots":{"type":"boolean","default":true},"cephStorageProvider":{"type":"object","properties":{"enabled":{"type":"boolean","default":false},"resources":{"type":"object","properties":{"cpu":{"type":"number","format":"float","minimum":1,"maximum":20,"description":"Configure the CPU resources per Ceph replica"},"memory":{"type":"number","format":"float","minimum":4096,"maximum":40960,"description":"Configure the memory resources per Ceph replica"},"storage":{"type":"number","format":"float","minimum":102400,"maximum":5242880,"description":"Configure the data disk size per Ceph replica"}},"additionalProperties":false},"enableMultiReadWriteStorage":{"type":"boolean","description":"Configure Ceph to be enable use of multi read write storage for persistent volumes on the cluster."},"enableSingleReadWriteStorage":{"type":"boolean","description":"Configure Ceph to be used as default storage class for single read write storage. This will replace the default storage of the cloud provider."},"enableErasureCoding":{"type":"boolean","description":"Configure Ceph to be set up with erasure coding. This will be less fault tolerant but more cost effective."},"enableTopologyAwareScheduling":{"type":"boolean","description":"Configure Ceph to be set up with topology aware scheduling, enforcing deployment across multiple zones."}},"additionalProperties":false}},"additionalProperties":false},"requestModifiers":{"type":"object","properties":{"services":{"type":"object","properties":{"cpu":{"type":"number","format":"float","minimum":0.2,"maximum":1,"example":0.5,"default":0.5},"memory":{"type":"number","format":"float","minimum":0.4,"maximum":1,"example":0.8,"default":0.8}},"required":["cpu","memory"],"additionalProperties":false,"description":"Request modifiers for services"},"jobs":{"type":"object","properties":{"cpu":{"type":"number","format":"float","minimum":0.2,"maximum":1,"example":0.5,"default":0.5},"memory":{"type":"number","format":"float","minimum":0.4,"maximum":1,"example":0.8,"default":0.8}},"required":["cpu","memory"],"additionalProperties":false,"description":"Request modifiers for jobs"},"builds":{"type":"object","properties":{"cpu":{"type":"number","format":"float","minimum":0.1,"maximum":1,"example":0.2,"default":0.2},"memory":{"type":"number","format":"float","minimum":0.1,"maximum":1,"example":0.5,"default":0.5}},"required":["cpu","memory"],"additionalProperties":false,"description":"Request modifiers for builds"},"addons":{"type":"object","properties":{"cpu":{"type":"number","format":"float","minimum":0.2,"maximum":1,"example":0.5,"default":0.5},"memory":{"type":"number","format":"float","minimum":0.4,"maximum":1,"example":0.8,"default":0.8}},"required":["cpu","memory"],"additionalProperties":false,"description":"Request modifiers for addons"}},"additionalProperties":false,"description":"Allows customising request modifier values."}},"additionalProperties":false},"restrictions":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Enable or disable BYOC restrictions for this entity"},"teams":{"type":"array","items":{"type":"object","properties":{"teamId":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":45,"description":"The ID of the team that has access to this BYOC cluster"}},"required":["teamId"]},"description":"List of teams that have access to this BYOC cluster","default":[]}},"required":["enabled"],"additionalProperties":false,"description":"BYOC restrictions configuration for controlling team access"},"gcp":{"type":"object","properties":{"networking":{"type":"object","properties":{"network":{"type":"string"},"subnetwork":{"type":"string"}},"additionalProperties":false},"enableAuthorizedIpRanges":{"type":"boolean"},"authorizedIpRanges":{"type":"array","items":{"type":"string","pattern":"^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\\/([0-9]|[1-2][0-9]|3[0-2]))$"}},"projectId":{"type":"string","pattern":"^[a-z][a-z0-9-]{4,28}[a-z0-9]$","description":"GCP Project ID"}},"additionalProperties":false,"description":"GCP specific data. Required when `provider` is `gcp`"},"aws":{"type":"object","properties":{"enablePublicAccessCidrs":{"type":"boolean"},"publicAccessCidrs":{"type":"array","items":{"type":"string","pattern":"^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\\/([0-9]|[1-2][0-9]|3[0-2]))$"}},"subnetConfiguration":{"type":"object","properties":{"mode":{"type":"string","enum":["default-subnets-for-azs","explicit-subnets"],"description":"The mode of the AWS subnet configuration"},"vpcId":{"type":"string","description":"Id of the VPC"},"subnets":{"type":"array","items":{"type":"string","example":"eu-west-1a"},"minItems":2,"description":"List of subnets the cluster should be created for. At least 2 must be specified."}},"required":["mode","subnets"],"additionalProperties":false},"vpcEgress":{"type":"boolean","description":"If egress traffic from the cluster should come from a single static egress IP."}},"additionalProperties":false,"description":"AWS specific data. Required when `provider` is `aws`."},"oci":{"type":"object","properties":{"vcnConfiguration":{"type":"object","properties":{"vcnId":{"type":"string"},"subnetIdForKubernetesApi":{"type":"string"},"subnetIdsForServiceLBs":{"type":"array","items":{"type":"string"}}},"required":["vcnId","subnetIdForKubernetesApi","subnetIdsForServiceLBs"],"additionalProperties":false}},"required":["vcnConfiguration"],"additionalProperties":false,"description":"OCI specific data. Required when `provider` is `oci`."},"azure":{"type":"object","properties":{"networking":{"type":"object","properties":{"vnetConfiguration":{"type":"object","properties":{"mode":{"type":"string","enum":["create-default","custom-vnet"],"description":"The vnet mode to use for this cluster. Use this to switch between creation of a new vnet per cluster or specifying a custom vnet."},"vnetId":{"type":"string","description":"Azure vnetId that should be used for this cluster. By default a new vnet will be created."}},"required":["mode"],"additionalProperties":false},"networkPluginMode":{"type":"string","enum":["overlay"],"description":"Optional setting to configure overlay mode on Azure."}},"additionalProperties":false},"enableAuthorizedIpRanges":{"type":"boolean"},"authorizedIpRanges":{"type":"array","items":{"type":"string","pattern":"^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\\/([0-9]|[1-2][0-9]|3[0-2]))$"}}},"additionalProperties":false,"description":"Azure specific data. Required when `provider` is `azure`."},"coreweave":{"type":"object","properties":{"zone":{"type":"string","description":"AZ of the cluster"},"network":{"type":"object","properties":{"networkMode":{"type":"string","enum":["create-default","custom"]},"vpcId":{"type":"string"},"customPrefixNames":{"type":"object","properties":{"podCidrName":{"type":"string"},"serviceCidrName":{"type":"string"},"internalLbCidrNames":{"type":"array","items":{"type":"string"},"minItems":1}},"required":["podCidrName","serviceCidrName","internalLbCidrNames"],"additionalProperties":false}},"required":["networkMode"],"additionalProperties":false,"description":"Network settings"}},"required":["zone"],"additionalProperties":false,"description":"CoreWeave specific data. Required when `provider` is `coreweave`."},"byok":{"type":"object","properties":{"nodePoolProviderIdLabel":{"type":"string"}},"required":["nodePoolProviderIdLabel"],"additionalProperties":false,"description":"BYOK specific data. Required when `provider` is `byok`."},"coordinates":{"type":"object","properties":{"latitude":{"type":"number","format":"float","minimum":-90,"maximum":90},"longitude":{"type":"number","format":"float","minimum":-180,"maximum":180}},"required":["latitude","longitude"],"additionalProperties":false,"description":"Geographic coordinates of the cluster. Optional, used for CDN geo-routing. Only applicable when `provider` is `byok`."}},"required":["name","provider","nodePools"],"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Account > Cloud > Clusters > Create","x-nf-supports-orgs":true,"x-nf-team-scoped":true,"x-nf-cli-command":["create","cloud","cluster"]},"v1-cloud-providers-clusters-post-team-scoped":{"operationId":"postCloudProvidersClusters","summary":"Create cluster","description":"Creates a new cluster.","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}}],"responses":{"200":{"description":"Details about the created cluster.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","description":"The ID of cluster","example":"gcp-cluster-1"},"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":20,"description":"The name of the cluster.","example":"GCP Cluster 1"},"entityType":{"type":"string","enum":["org","team"],"example":"team"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"The description of the cluster.","example":"This is a new cluster."},"provider":{"type":"string","enum":["aws","azure","civo","gcp","oci","cloudflare","coreweave","aiven","backblaze","akamai","byok"],"description":"Cloud provider to be used for the selected resource","example":"gcp"},"region":{"type":"string","description":"Region of the cluster. Can only be updated for BYOK clusters.","example":"europe-west2"},"status":{"type":"object","properties":{"state":{"type":"object","properties":{"state":{"type":"string","description":"Current state of the cluster.","example":"running"},"transitionTime":{"type":"string","format":"date-time","description":"Time of the last state transition."},"reason":{"type":"string","description":"The reason, given the cluster is in an error state."}},"required":["state"],"additionalProperties":false}},"additionalProperties":false},"kubernetesVersion":{"type":"string","description":"Deprecated: This field is no longer used, the version is now set by the platform.","example":"1.30"},"integrationId":{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","description":"Existing integration to use for this cluster.","example":"gcp-integration"},"storage":{"type":"object","properties":{"storageClasses":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"type":{"type":"string","enum":["storage-class","snapshot-class"]},"kubernetesName":{"type":"string"},"defaultSnapshotClass":{"type":"string"},"options":{"type":"object","properties":{"capabilities":{"type":"object","properties":{"expansion":{"type":"boolean","description":"Increasing volume size after provisioning."},"snapshot":{"type":"boolean","description":"Point in time snapshotting of volumes."}},"additionalProperties":false},"accessModes":{"type":"object","properties":{"ReadWriteOnce":{"type":"boolean","description":"Access mode where a volume is exclusively attached to a single pod at a time."},"ReadWriteMany":{"type":"boolean","description":"Access mode where a volume can be attached to multiple single pods at a time for read and write operations."}},"additionalProperties":false},"storageSize":{"type":"object","properties":{"minValidSize":{"type":"integer","minimum":1,"description":"Enforces a minimum storage size per addon or volume."},"maxValidSize":{"type":"integer","minimum":1,"description":"Enforces a maximum storage size per addon or volume."},"suggestedOptions":{"type":"array","items":{"type":"integer","minimum":1},"description":"Specific storage size options to suggest in the UI."}},"additionalProperties":false},"platform":{"type":"object","properties":{"supportedResources":{"type":"array","items":{"type":"string","enum":["addon","volume","build-cache"]}}},"additionalProperties":false}},"additionalProperties":false}},"required":["id","name","kubernetesName"],"additionalProperties":false},"uniqueItems":true},"snapshotClasses":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"kubernetesName":{"type":"string"}},"required":["id","name","kubernetesName"],"additionalProperties":false},"uniqueItems":true}},"additionalProperties":false},"nodePools":{"oneOf":[{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"(^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$)|(^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89ABab][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$)","minLength":3,"maxLength":63,"description":"ID of existing node pool. Must be passed when modifying existing node pools. Not relevant for new node pools","example":"6aa96121-0345-43ad-bade-af36d540c222"},"nodeType":{"type":"string","description":"Machine type to be used by the node pool.","example":"n2-standard-8"},"oci":{"type":"object","properties":{"ocpu":{"type":"integer","minimum":1},"memory":{"type":"integer","minimum":1}},"required":["ocpu","memory"],"additionalProperties":false,"description":"OCI instance specific settings. Must respect ratios as determined by the selected node type."},"gcp":{"type":"object","properties":{"enablePrivateNodes":{"type":"boolean","description":"Set this flag to disable public IP assignment for nodes in this node pool."}},"additionalProperties":false,"description":"GCP specific settings."},"azure":{"type":"object","properties":{"systemPool":{"type":"boolean","description":"When 'provider' is 'azure', at least one system node pool is required per cluster."},"enablePublicNodeIp":{"type":"boolean","description":"When 'provider' is 'azure', set this flag to use public node IPs."},"vnetSubnetId":{"type":"string","description":"ID of the vnet subnet to use."}},"additionalProperties":false,"description":"Azure specific settings."},"aws":{"type":"object","properties":{"launchTemplate":{"type":"object","properties":{"id":{"type":"string","description":"ID of the launch template to use."},"version":{"type":"integer","minimum":1,"description":"Version of the launch template that should be used."}},"required":["id","version"],"additionalProperties":false,"description":"Specify a launch template to use for this node pool. When using a launch template, the disk size selection on the node pool level will be ignored."}},"additionalProperties":false,"description":"AWS specific node pool settings."},"nodeCount":{"type":"integer","minimum":0,"maximum":250,"description":"Number of nodes to the node pool should be provisioned with.","example":3},"autoscaling":{"type":"object","properties":{"enabled":{"type":"boolean","example":true,"default":false},"min":{"type":"integer","minimum":0,"maximum":249,"example":0},"max":{"type":"integer","minimum":1,"maximum":250,"example":10}},"additionalProperties":false,"nullable":true,"description":"Auto scaling settings to use for the node pool. Requires that the cloud provider supports this feature."},"computeResources":{"type":"object","properties":{"gpu":{"type":"object","properties":{"type":{"type":"string","pattern":"[a-z0-9]","description":"GPU type associated with the node pool.","example":"h100"},"resources":{"type":"object","properties":{"memoryInfo":{"type":"object","properties":{"sizeInGiB":{"type":"number","format":"float","minimum":1,"description":"Memory amount of the GPU in Gib.","example":80}},"additionalProperties":false}},"additionalProperties":false},"count":{"type":"integer","minimum":1,"description":"Number of GPUs per node.","example":1},"timeslicing":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether or not to enable time-slicing on the GPU."},"numSlices":{"type":"number","format":"float","minimum":1,"description":"Sets the amount of slices per GPU, e.g. how many pods may be scheduled concurrently on each GPU."}},"additionalProperties":false,"description":"Time-slicing configuration object."}},"required":["type","resources","count"],"additionalProperties":false}},"additionalProperties":false},"preemptible":{"type":"boolean","description":"Configures node pool with preemptible / spot instances if enabled.","example":false,"default":false},"diskType":{"type":"string","description":"The disk type to use."},"diskSize":{"type":"integer","minimum":1,"description":"Disk size in GB","example":100},"availabilityZones":{"type":"array","items":{"type":"string"},"minItems":1,"maxItems":1,"description":"Zones in which the node pool should be provisioned."},"subnets":{"type":"array","items":{"type":"string"},"minItems":1,"maxItems":1,"description":"Subnets in which the node pool should be provisioned. Required if provider is `oci`."},"scheduling":{"type":"object","properties":{"allowJobs":{"type":"boolean","description":"Allow jobs to schedule to this node pool"},"onlyGpuJobs":{"type":"boolean","description":"Restrict job scheduling to jobs which have GPU resources configured. Only relevant for GPU node pools."},"allowServices":{"type":"boolean","description":"Allow services to schedule to this node pool"},"onlyGpuServices":{"type":"boolean","description":"Restrict service scheduling to services which have GPU resources configured. Only relevant for GPU node pools."},"allowAddons":{"type":"boolean","description":"Allow addons to schedule to this node pool"},"allowBuilds":{"type":"boolean","description":"Allow builds to schedule to this node pool"},"onlyGpuBuilds":{"type":"boolean","description":"Restrict build scheduling to builds which have GPU resources configured. Only relevant for GPU node pools."},"allowCeph":{"type":"boolean","description":"Allow the placement of Ceph pods"}},"additionalProperties":false,"description":"Define basic workload scheduling restrictions for this node pool"},"labels":{"type":"object","properties":{},"additionalProperties":false,"description":"Set of label keys and values that can be used for advanced scheduling in combination with resource tag scheduling rules."}},"required":["id","nodeType","nodeCount","diskSize"],"additionalProperties":false,"description":"Node pool configuration for BYOC clusters"},"minItems":1,"uniqueItems":true,"description":"An array of node pools for BYOC."},{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"(^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$)|(^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89ABab][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$)","minLength":3,"maxLength":63,"description":"ID of the node pool. Must be passed when modifying existing node pools. Not relevant for new node pools","example":"node-pool-1"},"providerId":{"type":"string","pattern":"(^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$)|(^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89ABab][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$)","minLength":3,"maxLength":63,"description":"ID which identifies kubernetes nodes as belonging to this pool.","example":"6aa96121-0345-43ad-bade-af36d540c222"},"computeResources":{"type":"object","properties":{"gpu":{"type":"object","properties":{"supported":{"type":"boolean","description":"Whether this node pool consists of GPU nodes ."},"type":{"type":"string","pattern":"[a-z0-9]","description":"GPU type associated with the node pool.","example":"h100"},"resources":{"type":"object","properties":{"memoryInfo":{"type":"object","properties":{"sizeInGiB":{"type":"number","format":"float","minimum":1,"description":"Memory amount of the GPU in Gib.","example":80}},"additionalProperties":false}},"additionalProperties":false},"mig":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether or not to enable Multi-Instance GPU (MIG)."},"partitions":{"type":"array","items":{"type":"string"},"description":"The partitions to configure on the GPU."}},"additionalProperties":false,"description":"Multi-Instance GPU (MIG). configuration object."},"timeslicing":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether or not to enable time-slicing on the GPU."},"numSlices":{"type":"number","format":"float","minimum":1,"description":"Sets the amount of slices per GPU, e.g. how many pods may be scheduled concurrently on each GPU."}},"additionalProperties":false,"description":"Time-slicing configuration object."},"count":{"type":"integer","minimum":1,"description":"Number of GPUs per node.","example":1}},"additionalProperties":false}},"additionalProperties":false},"defaultPool":{"type":"boolean","description":"Fallback pool to which nodes which do not match any defined node pool are assigned. Exactly one default pool is required."},"preemptible":{"type":"boolean","description":"Configures node pool with preemptible / spot instances if enabled.","example":false,"default":false},"scheduling":{"type":"object","properties":{"allowJobs":{"type":"boolean","description":"Allow jobs to schedule to this node pool"},"onlyGpuJobs":{"type":"boolean","description":"Restrict job scheduling to jobs which have GPU resources configured. Only relevant for GPU node pools."},"allowServices":{"type":"boolean","description":"Allow services to schedule to this node pool"},"onlyGpuServices":{"type":"boolean","description":"Restrict service scheduling to services which have GPU resources configured. Only relevant for GPU node pools."},"allowAddons":{"type":"boolean","description":"Allow addons to schedule to this node pool"},"allowBuilds":{"type":"boolean","description":"Allow builds to schedule to this node pool"},"onlyGpuBuilds":{"type":"boolean","description":"Restrict build scheduling to builds which have GPU resources configured. Only relevant for GPU node pools."},"allowCeph":{"type":"boolean","description":"Allow the placement of Ceph pods"}},"additionalProperties":false,"description":"Define basic workload scheduling restrictions for this node pool"},"platform":{"type":"object","properties":{"architecture":{"type":"string","enum":["amd64","arm64"],"description":"Platform architecture of the underlying node type.","example":"amd64"}},"additionalProperties":false},"labels":{"type":"object","properties":{},"additionalProperties":false,"description":"Set of label keys and values that can be used for advanced scheduling in combination with resource tag scheduling rules."}},"required":["id","providerId"],"additionalProperties":false,"description":"Node pool configuration for BYOK clusters"},"minItems":1,"uniqueItems":true,"description":"An array of node pools for BYOK."}],"description":"An array of node pools for BYOC or BYOK."},"settings":{"type":"object","properties":{"builds":{"type":"object","properties":{"mode":{"type":"string","enum":["paas","internal","build-cluster"]},"plan":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"Plan to use for builds if they are run on the cluster","example":"nf-compute-200"},"clusterId":{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","description":"Cluster to use for scheduling builds"},"caching":{"type":"object","properties":{"allow":{"type":"boolean","description":"Whether to allow local disk based caching for builds."},"storageClassName":{"type":"string","description":"Storage class used by default for local disk based caching."}},"additionalProperties":false,"description":"Cache settings for builds"}},"additionalProperties":false},"registry":{"type":"object","properties":{"mode":{"type":"string","enum":["paas","self-hosted"]},"registryId":{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","description":"Credentials to use for storing of images.","example":"my-registry-credentials"}},"additionalProperties":false},"logging":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["paas"]}},"additionalProperties":false,"description":"Logging via PaaS."},{"type":"object","properties":{"mode":{"type":"string","enum":["loki"]},"loki":{"type":"object","properties":{"storageType":{"type":"string","enum":["s3"]},"s3BucketName":{"type":"string"},"s3AccessKey":{"type":"string"},"s3SecretKey":{"type":"string"},"s3Region":{"type":"string"}},"required":["storageType","s3BucketName","s3AccessKey","s3SecretKey","s3Region"],"additionalProperties":false}},"required":["mode"],"additionalProperties":false,"description":"Logging via Loki (S3 storage)."},{"type":"object","properties":{"mode":{"type":"string","enum":["loki"]},"loki":{"type":"object","properties":{"storageType":{"type":"string","enum":["gcs"]},"gcsBucketName":{"type":"string"},"gcpIntegrationId":{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$"}},"required":["storageType","gcsBucketName","gcpIntegrationId"],"additionalProperties":false}},"required":["mode"],"additionalProperties":false,"description":"Logging via Loki (GCS storage)."}],"description":"Logging settings"},"networking":{"type":"object","properties":{"overlayNetwork":{"type":"boolean","description":"Whether overlay networking is enabled for this cluster."},"overlayCIDR":{"type":"string","pattern":"^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\\/([0-9]|[1-2][0-9]|3[0-2]))$","description":"CIDR range for the overlay network."}},"additionalProperties":false},"vanityDomains":{"type":"object","properties":{"apps":{"type":"object","properties":{"zoneName":{"type":"string"},"integrationId":{"type":"string"}},"required":["zoneName","integrationId"],"additionalProperties":false},"customDomains":{"type":"object","properties":{"zoneName":{"type":"string"},"integrationId":{"type":"string"}},"required":["zoneName","integrationId"],"additionalProperties":false},"loadBalancers":{"type":"object","properties":{"zoneName":{"type":"string"},"integrationId":{"type":"string"}},"required":["zoneName","integrationId"],"additionalProperties":false}},"additionalProperties":false},"infrastructure":{"type":"object","properties":{"workloads":{"type":"object","properties":{"runtimeClass":{"type":"string","enum":["none","gvisor","kata-clh","kata-qemu"]}},"additionalProperties":false,"description":"DEPRECATED: This field will be removed in the near future."},"builds":{"type":"object","properties":{"runtimeClass":{"type":"string","enum":["none","gvisor","kata-clh","kata-qemu"]}},"additionalProperties":false,"description":"DEPRECATED: This field will be removed in the near future."},"sandboxing":{"type":"object","properties":{"installGvisor":{"type":"boolean"},"installMicroVm":{"type":"boolean"},"defaultSandbox":{"type":"object","properties":{"builds":{"type":"string","enum":["none","gvisor","kata-clh","kata-qemu"]},"jobs":{"type":"string","enum":["none","gvisor","kata-clh","kata-qemu"]},"services":{"type":"string","enum":["none","gvisor","kata-clh","kata-qemu"]},"addons":{"type":"string","enum":["none","gvisor","kata-clh","kata-qemu"]}},"additionalProperties":false}},"additionalProperties":false},"installKata":{"type":"boolean","description":"DEPRECATED: This field will be removed in the near future."},"installGvisor":{"type":"boolean","description":"DEPRECATED: This field will be removed in the near future."},"cleanupVolumes":{"type":"boolean","default":true},"cleanupSnapshots":{"type":"boolean","default":true},"cephStorageProvider":{"type":"object","properties":{"enabled":{"type":"boolean","default":false},"resources":{"type":"object","properties":{"cpu":{"type":"number","format":"float","minimum":1,"maximum":20,"description":"Configure the CPU resources per Ceph replica"},"memory":{"type":"number","format":"float","minimum":4096,"maximum":40960,"description":"Configure the memory resources per Ceph replica"},"storage":{"type":"number","format":"float","minimum":102400,"maximum":5242880,"description":"Configure the data disk size per Ceph replica"}},"additionalProperties":false},"enableMultiReadWriteStorage":{"type":"boolean","description":"Configure Ceph to be enable use of multi read write storage for persistent volumes on the cluster."},"enableSingleReadWriteStorage":{"type":"boolean","description":"Configure Ceph to be used as default storage class for single read write storage. This will replace the default storage of the cloud provider."},"enableErasureCoding":{"type":"boolean","description":"Configure Ceph to be set up with erasure coding. This will be less fault tolerant but more cost effective."},"enableTopologyAwareScheduling":{"type":"boolean","description":"Configure Ceph to be set up with topology aware scheduling, enforcing deployment across multiple zones."}},"additionalProperties":false}},"additionalProperties":false},"requestModifiers":{"type":"object","properties":{"services":{"type":"object","properties":{"cpu":{"type":"number","format":"float","minimum":0.2,"maximum":1,"example":0.5,"default":0.5},"memory":{"type":"number","format":"float","minimum":0.4,"maximum":1,"example":0.8,"default":0.8}},"required":["cpu","memory"],"additionalProperties":false,"description":"Request modifiers for services"},"jobs":{"type":"object","properties":{"cpu":{"type":"number","format":"float","minimum":0.2,"maximum":1,"example":0.5,"default":0.5},"memory":{"type":"number","format":"float","minimum":0.4,"maximum":1,"example":0.8,"default":0.8}},"required":["cpu","memory"],"additionalProperties":false,"description":"Request modifiers for jobs"},"builds":{"type":"object","properties":{"cpu":{"type":"number","format":"float","minimum":0.1,"maximum":1,"example":0.2,"default":0.2},"memory":{"type":"number","format":"float","minimum":0.1,"maximum":1,"example":0.5,"default":0.5}},"required":["cpu","memory"],"additionalProperties":false,"description":"Request modifiers for builds"},"addons":{"type":"object","properties":{"cpu":{"type":"number","format":"float","minimum":0.2,"maximum":1,"example":0.5,"default":0.5},"memory":{"type":"number","format":"float","minimum":0.4,"maximum":1,"example":0.8,"default":0.8}},"required":["cpu","memory"],"additionalProperties":false,"description":"Request modifiers for addons"}},"additionalProperties":false,"description":"Allows customising request modifier values."}},"additionalProperties":false},"restrictions":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Enable or disable BYOC restrictions for this entity"},"teams":{"type":"array","items":{"type":"object","properties":{"teamId":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":45,"description":"The ID of the team that has access to this BYOC cluster"}},"required":["teamId"]},"description":"List of teams that have access to this BYOC cluster","default":[]}},"required":["enabled"],"additionalProperties":false,"description":"BYOC restrictions configuration for controlling team access"},"gcp":{"type":"object","properties":{"networking":{"type":"object","properties":{"network":{"type":"string"},"subnetwork":{"type":"string"}},"additionalProperties":false},"enableAuthorizedIpRanges":{"type":"boolean"},"authorizedIpRanges":{"type":"array","items":{"type":"string","pattern":"^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\\/([0-9]|[1-2][0-9]|3[0-2]))$"}},"projectId":{"type":"string","pattern":"^[a-z][a-z0-9-]{4,28}[a-z0-9]$","description":"GCP Project ID"}},"additionalProperties":false,"description":"GCP specific data. Required when `provider` is `gcp`"},"aws":{"type":"object","properties":{"enablePublicAccessCidrs":{"type":"boolean"},"publicAccessCidrs":{"type":"array","items":{"type":"string","pattern":"^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\\/([0-9]|[1-2][0-9]|3[0-2]))$"}},"subnetConfiguration":{"type":"object","properties":{"mode":{"type":"string","enum":["default-subnets-for-azs","explicit-subnets"],"description":"The mode of the AWS subnet configuration"},"vpcId":{"type":"string","description":"Id of the VPC"},"subnets":{"type":"array","items":{"type":"string","example":"eu-west-1a"},"minItems":2,"description":"List of subnets the cluster should be created for. At least 2 must be specified."}},"required":["mode","subnets"],"additionalProperties":false},"vpcEgress":{"type":"boolean","description":"If egress traffic from the cluster should come from a single static egress IP."}},"additionalProperties":false,"description":"AWS specific data. Required when `provider` is `aws`."},"oci":{"type":"object","properties":{"vcnConfiguration":{"type":"object","properties":{"vcnId":{"type":"string"},"subnetIdForKubernetesApi":{"type":"string"},"subnetIdsForServiceLBs":{"type":"array","items":{"type":"string"}}},"required":["vcnId","subnetIdForKubernetesApi","subnetIdsForServiceLBs"],"additionalProperties":false}},"required":["vcnConfiguration"],"additionalProperties":false,"description":"OCI specific data. Required when `provider` is `oci`."},"azure":{"type":"object","properties":{"networking":{"type":"object","properties":{"vnetConfiguration":{"type":"object","properties":{"mode":{"type":"string","enum":["create-default","custom-vnet"],"description":"The vnet mode to use for this cluster. Use this to switch between creation of a new vnet per cluster or specifying a custom vnet."},"vnetId":{"type":"string","description":"Azure vnetId that should be used for this cluster. By default a new vnet will be created."}},"required":["mode"],"additionalProperties":false},"networkPluginMode":{"type":"string","enum":["overlay"],"description":"Optional setting to configure overlay mode on Azure."}},"additionalProperties":false},"enableAuthorizedIpRanges":{"type":"boolean"},"authorizedIpRanges":{"type":"array","items":{"type":"string","pattern":"^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\\/([0-9]|[1-2][0-9]|3[0-2]))$"}}},"additionalProperties":false,"description":"Azure specific data. Required when `provider` is `azure`."},"coreweave":{"type":"object","properties":{"zone":{"type":"string","description":"AZ of the cluster"},"network":{"type":"object","properties":{"networkMode":{"type":"string","enum":["create-default","custom"]},"vpcId":{"type":"string"},"customPrefixNames":{"type":"object","properties":{"podCidrName":{"type":"string"},"serviceCidrName":{"type":"string"},"internalLbCidrNames":{"type":"array","items":{"type":"string"},"minItems":1}},"required":["podCidrName","serviceCidrName","internalLbCidrNames"],"additionalProperties":false}},"required":["networkMode"],"additionalProperties":false,"description":"Network settings"}},"required":["zone"],"additionalProperties":false,"description":"CoreWeave specific data. Required when `provider` is `coreweave`."},"byok":{"type":"object","properties":{"nodePoolProviderIdLabel":{"type":"string"}},"required":["nodePoolProviderIdLabel"],"additionalProperties":false,"description":"BYOK specific data. Required when `provider` is `byok`."},"coordinates":{"type":"object","properties":{"latitude":{"type":"number","format":"float","minimum":-90,"maximum":90},"longitude":{"type":"number","format":"float","minimum":-180,"maximum":180}},"required":["latitude","longitude"],"additionalProperties":false,"description":"Geographic coordinates of the cluster. Optional, used for CDN geo-routing. Only applicable when `provider` is `byok`."},"dns":{"type":"string","description":"Auto-generated dns identifier for this cluster.","example":"xxxxxxxxxx"},"updatedAt":{"type":"string","format":"date-time","description":"The time the cluster was last updated.","example":"2021-01-20T11:19:53.175Z"},"createdAt":{"type":"string","format":"date-time","description":"The time the cluster was created.","example":"2021-01-20T11:19:53.175Z"},"deletionRequested":{"type":"boolean","description":"Indicates if provider resource deletion has been requested.","example":false}},"required":["id","name","provider","nodePools","updatedAt","createdAt","deletionRequested"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Cloud Providers","team"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":20,"description":"The name of the cluster.","example":"GCP Cluster 1"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"The description of the cluster.","example":"This is a new cluster."},"provider":{"type":"string","enum":["aws","azure","civo","gcp","oci","cloudflare","coreweave","aiven","backblaze","akamai","byok"],"description":"Cloud provider to be used for the selected resource","example":"gcp"},"region":{"type":"string","description":"Region of the cluster. Can only be updated for BYOK clusters.","example":"europe-west2"},"kubernetesVersion":{"type":"string","description":"Deprecated: This field is no longer used, the version is now set by the platform.","example":"1.30"},"integrationId":{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","description":"Existing integration to use for this cluster.","example":"gcp-integration"},"storage":{"type":"object","properties":{"storageClasses":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"type":{"type":"string","enum":["storage-class","snapshot-class"]},"kubernetesName":{"type":"string"},"defaultSnapshotClass":{"type":"string"},"options":{"type":"object","properties":{"capabilities":{"type":"object","properties":{"expansion":{"type":"boolean","description":"Increasing volume size after provisioning."},"snapshot":{"type":"boolean","description":"Point in time snapshotting of volumes."}},"additionalProperties":false},"accessModes":{"type":"object","properties":{"ReadWriteOnce":{"type":"boolean","description":"Access mode where a volume is exclusively attached to a single pod at a time."},"ReadWriteMany":{"type":"boolean","description":"Access mode where a volume can be attached to multiple single pods at a time for read and write operations."}},"additionalProperties":false},"storageSize":{"type":"object","properties":{"minValidSize":{"type":"integer","minimum":1,"description":"Enforces a minimum storage size per addon or volume."},"maxValidSize":{"type":"integer","minimum":1,"description":"Enforces a maximum storage size per addon or volume."},"suggestedOptions":{"type":"array","items":{"type":"integer","minimum":1},"description":"Specific storage size options to suggest in the UI."}},"additionalProperties":false},"platform":{"type":"object","properties":{"supportedResources":{"type":"array","items":{"type":"string","enum":["addon","volume","build-cache"]}}},"additionalProperties":false}},"additionalProperties":false}},"required":["id","name","kubernetesName"],"additionalProperties":false},"uniqueItems":true},"snapshotClasses":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"kubernetesName":{"type":"string"}},"required":["id","name","kubernetesName"],"additionalProperties":false},"uniqueItems":true}},"additionalProperties":false},"nodePools":{"oneOf":[{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"(^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$)|(^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89ABab][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$)","minLength":3,"maxLength":63,"description":"ID of existing node pool. Must be passed when modifying existing node pools. Not relevant for new node pools","example":"6aa96121-0345-43ad-bade-af36d540c222"},"nodeType":{"type":"string","description":"Machine type to be used by the node pool.","example":"n2-standard-8"},"oci":{"type":"object","properties":{"ocpu":{"type":"integer","minimum":1},"memory":{"type":"integer","minimum":1}},"required":["ocpu","memory"],"additionalProperties":false,"description":"OCI instance specific settings. Must respect ratios as determined by the selected node type."},"gcp":{"type":"object","properties":{"enablePrivateNodes":{"type":"boolean","description":"Set this flag to disable public IP assignment for nodes in this node pool."}},"additionalProperties":false,"description":"GCP specific settings."},"azure":{"type":"object","properties":{"systemPool":{"type":"boolean","description":"When 'provider' is 'azure', at least one system node pool is required per cluster."},"enablePublicNodeIp":{"type":"boolean","description":"When 'provider' is 'azure', set this flag to use public node IPs."},"vnetSubnetId":{"type":"string","description":"ID of the vnet subnet to use."}},"additionalProperties":false,"description":"Azure specific settings."},"aws":{"type":"object","properties":{"launchTemplate":{"type":"object","properties":{"id":{"type":"string","description":"ID of the launch template to use."},"version":{"type":"integer","minimum":1,"description":"Version of the launch template that should be used."}},"required":["id","version"],"additionalProperties":false,"description":"Specify a launch template to use for this node pool. When using a launch template, the disk size selection on the node pool level will be ignored."}},"additionalProperties":false,"description":"AWS specific node pool settings."},"nodeCount":{"type":"integer","minimum":0,"maximum":250,"description":"Number of nodes to the node pool should be provisioned with.","example":3},"autoscaling":{"type":"object","properties":{"enabled":{"type":"boolean","example":true,"default":false},"min":{"type":"integer","minimum":0,"maximum":249,"example":0},"max":{"type":"integer","minimum":1,"maximum":250,"example":10}},"additionalProperties":false,"nullable":true,"description":"Auto scaling settings to use for the node pool. Requires that the cloud provider supports this feature."},"computeResources":{"type":"object","properties":{"gpu":{"type":"object","properties":{"timeslicing":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether or not to enable time-slicing on the GPU."},"numSlices":{"type":"number","format":"float","minimum":1,"description":"Sets the amount of slices per GPU, e.g. how many pods may be scheduled concurrently on each GPU."}},"additionalProperties":false,"description":"Time-slicing configuration object."}},"additionalProperties":false}},"additionalProperties":false},"preemptible":{"type":"boolean","description":"Configures node pool with preemptible / spot instances if enabled.","example":false,"default":false},"diskType":{"type":"string","description":"The disk type to use."},"diskSize":{"type":"integer","minimum":1,"description":"Disk size in GB","example":100},"availabilityZones":{"type":"array","items":{"type":"string"},"minItems":1,"maxItems":1,"description":"Zones in which the node pool should be provisioned."},"subnets":{"type":"array","items":{"type":"string"},"minItems":1,"maxItems":1,"description":"Subnets in which the node pool should be provisioned. Required if provider is `oci`."},"scheduling":{"type":"object","properties":{"allowJobs":{"type":"boolean","description":"Allow jobs to schedule to this node pool"},"onlyGpuJobs":{"type":"boolean","description":"Restrict job scheduling to jobs which have GPU resources configured. Only relevant for GPU node pools."},"allowServices":{"type":"boolean","description":"Allow services to schedule to this node pool"},"onlyGpuServices":{"type":"boolean","description":"Restrict service scheduling to services which have GPU resources configured. Only relevant for GPU node pools."},"allowAddons":{"type":"boolean","description":"Allow addons to schedule to this node pool"},"allowBuilds":{"type":"boolean","description":"Allow builds to schedule to this node pool"},"onlyGpuBuilds":{"type":"boolean","description":"Restrict build scheduling to builds which have GPU resources configured. Only relevant for GPU node pools."},"allowCeph":{"type":"boolean","description":"Allow the placement of Ceph pods"}},"additionalProperties":false,"description":"Define basic workload scheduling restrictions for this node pool"},"labels":{"type":"object","properties":{},"additionalProperties":false,"description":"Set of label keys and values that can be used for advanced scheduling in combination with resource tag scheduling rules."}},"required":["id","nodeType","nodeCount","diskSize"],"additionalProperties":false,"description":"Node pool configuration for BYOC clusters"},"minItems":1,"uniqueItems":true,"description":"An array of node pools for BYOC."},{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"(^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$)|(^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89ABab][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$)","minLength":3,"maxLength":63,"description":"ID of the node pool. Must be passed when modifying existing node pools. Not relevant for new node pools","example":"node-pool-1"},"providerId":{"type":"string","pattern":"(^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$)|(^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89ABab][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$)","minLength":3,"maxLength":63,"description":"ID which identifies kubernetes nodes as belonging to this pool.","example":"6aa96121-0345-43ad-bade-af36d540c222"},"computeResources":{"type":"object","properties":{"gpu":{"type":"object","properties":{"supported":{"type":"boolean","description":"Whether this node pool consists of GPU nodes ."},"type":{"type":"string","pattern":"[a-z0-9]","description":"GPU type associated with the node pool.","example":"h100"},"resources":{"type":"object","properties":{"memoryInfo":{"type":"object","properties":{"sizeInGiB":{"type":"number","format":"float","minimum":1,"description":"Memory amount of the GPU in Gib.","example":80}},"additionalProperties":false}},"additionalProperties":false},"mig":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether or not to enable Multi-Instance GPU (MIG)."},"partitions":{"type":"array","items":{"type":"string"},"description":"The partitions to configure on the GPU."}},"additionalProperties":false,"description":"Multi-Instance GPU (MIG). configuration object."},"timeslicing":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether or not to enable time-slicing on the GPU."},"numSlices":{"type":"number","format":"float","minimum":1,"description":"Sets the amount of slices per GPU, e.g. how many pods may be scheduled concurrently on each GPU."}},"additionalProperties":false,"description":"Time-slicing configuration object."},"count":{"type":"integer","minimum":1,"description":"Number of GPUs per node.","example":1}},"additionalProperties":false}},"additionalProperties":false},"defaultPool":{"type":"boolean","description":"Fallback pool to which nodes which do not match any defined node pool are assigned. Exactly one default pool is required."},"preemptible":{"type":"boolean","description":"Configures node pool with preemptible / spot instances if enabled.","example":false,"default":false},"scheduling":{"type":"object","properties":{"allowJobs":{"type":"boolean","description":"Allow jobs to schedule to this node pool"},"onlyGpuJobs":{"type":"boolean","description":"Restrict job scheduling to jobs which have GPU resources configured. Only relevant for GPU node pools."},"allowServices":{"type":"boolean","description":"Allow services to schedule to this node pool"},"onlyGpuServices":{"type":"boolean","description":"Restrict service scheduling to services which have GPU resources configured. Only relevant for GPU node pools."},"allowAddons":{"type":"boolean","description":"Allow addons to schedule to this node pool"},"allowBuilds":{"type":"boolean","description":"Allow builds to schedule to this node pool"},"onlyGpuBuilds":{"type":"boolean","description":"Restrict build scheduling to builds which have GPU resources configured. Only relevant for GPU node pools."},"allowCeph":{"type":"boolean","description":"Allow the placement of Ceph pods"}},"additionalProperties":false,"description":"Define basic workload scheduling restrictions for this node pool"},"platform":{"type":"object","properties":{"architecture":{"type":"string","enum":["amd64","arm64"],"description":"Platform architecture of the underlying node type.","example":"amd64"}},"additionalProperties":false},"labels":{"type":"object","properties":{},"additionalProperties":false,"description":"Set of label keys and values that can be used for advanced scheduling in combination with resource tag scheduling rules."}},"required":["id","providerId"],"additionalProperties":false,"description":"Node pool configuration for BYOK clusters"},"minItems":1,"uniqueItems":true,"description":"An array of node pools for BYOK."}],"description":"An array of node pools for BYOC or BYOK."},"settings":{"type":"object","properties":{"builds":{"type":"object","properties":{"mode":{"type":"string","enum":["paas","internal","build-cluster"]},"plan":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"Plan to use for builds if they are run on the cluster","example":"nf-compute-200"},"clusterId":{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","description":"Cluster to use for scheduling builds"},"caching":{"type":"object","properties":{"allow":{"type":"boolean","description":"Whether to allow local disk based caching for builds."},"storageClassName":{"type":"string","description":"Storage class used by default for local disk based caching."}},"additionalProperties":false,"description":"Cache settings for builds"}},"additionalProperties":false},"registry":{"type":"object","properties":{"mode":{"type":"string","enum":["paas","self-hosted"]},"registryId":{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","description":"Credentials to use for storing of images.","example":"my-registry-credentials"}},"additionalProperties":false},"logging":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["paas"]}},"additionalProperties":false,"description":"Logging via PaaS."},{"type":"object","properties":{"mode":{"type":"string","enum":["loki"]},"loki":{"type":"object","properties":{"storageType":{"type":"string","enum":["s3"]},"s3BucketName":{"type":"string"},"s3AccessKey":{"type":"string"},"s3SecretKey":{"type":"string"},"s3Region":{"type":"string"}},"required":["storageType","s3BucketName","s3AccessKey","s3SecretKey","s3Region"],"additionalProperties":false}},"required":["mode"],"additionalProperties":false,"description":"Logging via Loki (S3 storage)."},{"type":"object","properties":{"mode":{"type":"string","enum":["loki"]},"loki":{"type":"object","properties":{"storageType":{"type":"string","enum":["gcs"]},"gcsBucketName":{"type":"string"},"gcpIntegrationId":{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$"}},"required":["storageType","gcsBucketName","gcpIntegrationId"],"additionalProperties":false}},"required":["mode"],"additionalProperties":false,"description":"Logging via Loki (GCS storage)."}],"description":"Logging settings"},"networking":{"type":"object","properties":{"overlayNetwork":{"type":"boolean","description":"Whether overlay networking is enabled for this cluster."},"overlayCIDR":{"type":"string","pattern":"^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\\/([0-9]|[1-2][0-9]|3[0-2]))$","description":"CIDR range for the overlay network."}},"additionalProperties":false},"vanityDomains":{"type":"object","properties":{"apps":{"type":"object","properties":{"zoneName":{"type":"string"},"integrationId":{"type":"string"}},"required":["zoneName","integrationId"],"additionalProperties":false},"customDomains":{"type":"object","properties":{"zoneName":{"type":"string"},"integrationId":{"type":"string"}},"required":["zoneName","integrationId"],"additionalProperties":false},"loadBalancers":{"type":"object","properties":{"zoneName":{"type":"string"},"integrationId":{"type":"string"}},"required":["zoneName","integrationId"],"additionalProperties":false}},"additionalProperties":false},"infrastructure":{"type":"object","properties":{"workloads":{"type":"object","properties":{"runtimeClass":{"type":"string","enum":["none","gvisor","kata-clh","kata-qemu"]}},"additionalProperties":false,"description":"DEPRECATED: This field will be removed in the near future."},"builds":{"type":"object","properties":{"runtimeClass":{"type":"string","enum":["none","gvisor","kata-clh","kata-qemu"]}},"additionalProperties":false,"description":"DEPRECATED: This field will be removed in the near future."},"sandboxing":{"type":"object","properties":{"installGvisor":{"type":"boolean"},"installMicroVm":{"type":"boolean"},"defaultSandbox":{"type":"object","properties":{"builds":{"type":"string","enum":["none","gvisor","kata-clh","kata-qemu"]},"jobs":{"type":"string","enum":["none","gvisor","kata-clh","kata-qemu"]},"services":{"type":"string","enum":["none","gvisor","kata-clh","kata-qemu"]},"addons":{"type":"string","enum":["none","gvisor","kata-clh","kata-qemu"]}},"additionalProperties":false}},"additionalProperties":false},"installKata":{"type":"boolean","description":"DEPRECATED: This field will be removed in the near future."},"installGvisor":{"type":"boolean","description":"DEPRECATED: This field will be removed in the near future."},"cleanupVolumes":{"type":"boolean","default":true},"cleanupSnapshots":{"type":"boolean","default":true},"cephStorageProvider":{"type":"object","properties":{"enabled":{"type":"boolean","default":false},"resources":{"type":"object","properties":{"cpu":{"type":"number","format":"float","minimum":1,"maximum":20,"description":"Configure the CPU resources per Ceph replica"},"memory":{"type":"number","format":"float","minimum":4096,"maximum":40960,"description":"Configure the memory resources per Ceph replica"},"storage":{"type":"number","format":"float","minimum":102400,"maximum":5242880,"description":"Configure the data disk size per Ceph replica"}},"additionalProperties":false},"enableMultiReadWriteStorage":{"type":"boolean","description":"Configure Ceph to be enable use of multi read write storage for persistent volumes on the cluster."},"enableSingleReadWriteStorage":{"type":"boolean","description":"Configure Ceph to be used as default storage class for single read write storage. This will replace the default storage of the cloud provider."},"enableErasureCoding":{"type":"boolean","description":"Configure Ceph to be set up with erasure coding. This will be less fault tolerant but more cost effective."},"enableTopologyAwareScheduling":{"type":"boolean","description":"Configure Ceph to be set up with topology aware scheduling, enforcing deployment across multiple zones."}},"additionalProperties":false}},"additionalProperties":false},"requestModifiers":{"type":"object","properties":{"services":{"type":"object","properties":{"cpu":{"type":"number","format":"float","minimum":0.2,"maximum":1,"example":0.5,"default":0.5},"memory":{"type":"number","format":"float","minimum":0.4,"maximum":1,"example":0.8,"default":0.8}},"required":["cpu","memory"],"additionalProperties":false,"description":"Request modifiers for services"},"jobs":{"type":"object","properties":{"cpu":{"type":"number","format":"float","minimum":0.2,"maximum":1,"example":0.5,"default":0.5},"memory":{"type":"number","format":"float","minimum":0.4,"maximum":1,"example":0.8,"default":0.8}},"required":["cpu","memory"],"additionalProperties":false,"description":"Request modifiers for jobs"},"builds":{"type":"object","properties":{"cpu":{"type":"number","format":"float","minimum":0.1,"maximum":1,"example":0.2,"default":0.2},"memory":{"type":"number","format":"float","minimum":0.1,"maximum":1,"example":0.5,"default":0.5}},"required":["cpu","memory"],"additionalProperties":false,"description":"Request modifiers for builds"},"addons":{"type":"object","properties":{"cpu":{"type":"number","format":"float","minimum":0.2,"maximum":1,"example":0.5,"default":0.5},"memory":{"type":"number","format":"float","minimum":0.4,"maximum":1,"example":0.8,"default":0.8}},"required":["cpu","memory"],"additionalProperties":false,"description":"Request modifiers for addons"}},"additionalProperties":false,"description":"Allows customising request modifier values."}},"additionalProperties":false},"restrictions":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Enable or disable BYOC restrictions for this entity"},"teams":{"type":"array","items":{"type":"object","properties":{"teamId":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":45,"description":"The ID of the team that has access to this BYOC cluster"}},"required":["teamId"]},"description":"List of teams that have access to this BYOC cluster","default":[]}},"required":["enabled"],"additionalProperties":false,"description":"BYOC restrictions configuration for controlling team access"},"gcp":{"type":"object","properties":{"networking":{"type":"object","properties":{"network":{"type":"string"},"subnetwork":{"type":"string"}},"additionalProperties":false},"enableAuthorizedIpRanges":{"type":"boolean"},"authorizedIpRanges":{"type":"array","items":{"type":"string","pattern":"^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\\/([0-9]|[1-2][0-9]|3[0-2]))$"}},"projectId":{"type":"string","pattern":"^[a-z][a-z0-9-]{4,28}[a-z0-9]$","description":"GCP Project ID"}},"additionalProperties":false,"description":"GCP specific data. Required when `provider` is `gcp`"},"aws":{"type":"object","properties":{"enablePublicAccessCidrs":{"type":"boolean"},"publicAccessCidrs":{"type":"array","items":{"type":"string","pattern":"^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\\/([0-9]|[1-2][0-9]|3[0-2]))$"}},"subnetConfiguration":{"type":"object","properties":{"mode":{"type":"string","enum":["default-subnets-for-azs","explicit-subnets"],"description":"The mode of the AWS subnet configuration"},"vpcId":{"type":"string","description":"Id of the VPC"},"subnets":{"type":"array","items":{"type":"string","example":"eu-west-1a"},"minItems":2,"description":"List of subnets the cluster should be created for. At least 2 must be specified."}},"required":["mode","subnets"],"additionalProperties":false},"vpcEgress":{"type":"boolean","description":"If egress traffic from the cluster should come from a single static egress IP."}},"additionalProperties":false,"description":"AWS specific data. Required when `provider` is `aws`."},"oci":{"type":"object","properties":{"vcnConfiguration":{"type":"object","properties":{"vcnId":{"type":"string"},"subnetIdForKubernetesApi":{"type":"string"},"subnetIdsForServiceLBs":{"type":"array","items":{"type":"string"}}},"required":["vcnId","subnetIdForKubernetesApi","subnetIdsForServiceLBs"],"additionalProperties":false}},"required":["vcnConfiguration"],"additionalProperties":false,"description":"OCI specific data. Required when `provider` is `oci`."},"azure":{"type":"object","properties":{"networking":{"type":"object","properties":{"vnetConfiguration":{"type":"object","properties":{"mode":{"type":"string","enum":["create-default","custom-vnet"],"description":"The vnet mode to use for this cluster. Use this to switch between creation of a new vnet per cluster or specifying a custom vnet."},"vnetId":{"type":"string","description":"Azure vnetId that should be used for this cluster. By default a new vnet will be created."}},"required":["mode"],"additionalProperties":false},"networkPluginMode":{"type":"string","enum":["overlay"],"description":"Optional setting to configure overlay mode on Azure."}},"additionalProperties":false},"enableAuthorizedIpRanges":{"type":"boolean"},"authorizedIpRanges":{"type":"array","items":{"type":"string","pattern":"^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\\/([0-9]|[1-2][0-9]|3[0-2]))$"}}},"additionalProperties":false,"description":"Azure specific data. Required when `provider` is `azure`."},"coreweave":{"type":"object","properties":{"zone":{"type":"string","description":"AZ of the cluster"},"network":{"type":"object","properties":{"networkMode":{"type":"string","enum":["create-default","custom"]},"vpcId":{"type":"string"},"customPrefixNames":{"type":"object","properties":{"podCidrName":{"type":"string"},"serviceCidrName":{"type":"string"},"internalLbCidrNames":{"type":"array","items":{"type":"string"},"minItems":1}},"required":["podCidrName","serviceCidrName","internalLbCidrNames"],"additionalProperties":false}},"required":["networkMode"],"additionalProperties":false,"description":"Network settings"}},"required":["zone"],"additionalProperties":false,"description":"CoreWeave specific data. Required when `provider` is `coreweave`."},"byok":{"type":"object","properties":{"nodePoolProviderIdLabel":{"type":"string"}},"required":["nodePoolProviderIdLabel"],"additionalProperties":false,"description":"BYOK specific data. Required when `provider` is `byok`."},"coordinates":{"type":"object","properties":{"latitude":{"type":"number","format":"float","minimum":-90,"maximum":90},"longitude":{"type":"number","format":"float","minimum":-180,"maximum":180}},"required":["latitude","longitude"],"additionalProperties":false,"description":"Geographic coordinates of the cluster. Optional, used for CDN geo-routing. Only applicable when `provider` is `byok`."}},"required":["name","provider","nodePools"],"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Account > Cloud > Clusters > Create","x-nf-supports-orgs":true,"x-nf-team-scoped":true,"x-nf-cli-command":["create","cloud","cluster"]},"v1-cloud-providers-clusters-put":{"operationId":"putCloudProvidersClusters","summary":"Put cluster","description":"Creates or update a cluster.","parameters":[],"responses":{"200":{"description":"Details about the created or updated cluster.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","description":"The ID of cluster","example":"gcp-cluster-1"},"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":20,"description":"The name of the cluster.","example":"GCP Cluster 1"},"entityType":{"type":"string","enum":["org","team"],"example":"team"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"The description of the cluster.","example":"This is a new cluster."},"provider":{"type":"string","enum":["aws","azure","civo","gcp","oci","cloudflare","coreweave","aiven","backblaze","akamai","byok"],"description":"Cloud provider to be used for the selected resource","example":"gcp"},"region":{"type":"string","description":"Region of the cluster. Can only be updated for BYOK clusters.","example":"europe-west2"},"status":{"type":"object","properties":{"state":{"type":"object","properties":{"state":{"type":"string","description":"Current state of the cluster.","example":"running"},"transitionTime":{"type":"string","format":"date-time","description":"Time of the last state transition."},"reason":{"type":"string","description":"The reason, given the cluster is in an error state."}},"required":["state"],"additionalProperties":false}},"additionalProperties":false},"kubernetesVersion":{"type":"string","description":"Deprecated: This field is no longer used, the version is now set by the platform.","example":"1.30"},"integrationId":{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","description":"Existing integration to use for this cluster.","example":"gcp-integration"},"storage":{"type":"object","properties":{"storageClasses":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"type":{"type":"string","enum":["storage-class","snapshot-class"]},"kubernetesName":{"type":"string"},"defaultSnapshotClass":{"type":"string"},"options":{"type":"object","properties":{"capabilities":{"type":"object","properties":{"expansion":{"type":"boolean","description":"Increasing volume size after provisioning."},"snapshot":{"type":"boolean","description":"Point in time snapshotting of volumes."}},"additionalProperties":false},"accessModes":{"type":"object","properties":{"ReadWriteOnce":{"type":"boolean","description":"Access mode where a volume is exclusively attached to a single pod at a time."},"ReadWriteMany":{"type":"boolean","description":"Access mode where a volume can be attached to multiple single pods at a time for read and write operations."}},"additionalProperties":false},"storageSize":{"type":"object","properties":{"minValidSize":{"type":"integer","minimum":1,"description":"Enforces a minimum storage size per addon or volume."},"maxValidSize":{"type":"integer","minimum":1,"description":"Enforces a maximum storage size per addon or volume."},"suggestedOptions":{"type":"array","items":{"type":"integer","minimum":1},"description":"Specific storage size options to suggest in the UI."}},"additionalProperties":false},"platform":{"type":"object","properties":{"supportedResources":{"type":"array","items":{"type":"string","enum":["addon","volume","build-cache"]}}},"additionalProperties":false}},"additionalProperties":false}},"required":["id","name","kubernetesName"],"additionalProperties":false},"uniqueItems":true},"snapshotClasses":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"kubernetesName":{"type":"string"}},"required":["id","name","kubernetesName"],"additionalProperties":false},"uniqueItems":true}},"additionalProperties":false},"nodePools":{"oneOf":[{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"(^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$)|(^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89ABab][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$)","minLength":3,"maxLength":63,"description":"ID of existing node pool. Must be passed when modifying existing node pools. Not relevant for new node pools","example":"6aa96121-0345-43ad-bade-af36d540c222"},"nodeType":{"type":"string","description":"Machine type to be used by the node pool.","example":"n2-standard-8"},"oci":{"type":"object","properties":{"ocpu":{"type":"integer","minimum":1},"memory":{"type":"integer","minimum":1}},"required":["ocpu","memory"],"additionalProperties":false,"description":"OCI instance specific settings. Must respect ratios as determined by the selected node type."},"gcp":{"type":"object","properties":{"enablePrivateNodes":{"type":"boolean","description":"Set this flag to disable public IP assignment for nodes in this node pool."}},"additionalProperties":false,"description":"GCP specific settings."},"azure":{"type":"object","properties":{"systemPool":{"type":"boolean","description":"When 'provider' is 'azure', at least one system node pool is required per cluster."},"enablePublicNodeIp":{"type":"boolean","description":"When 'provider' is 'azure', set this flag to use public node IPs."},"vnetSubnetId":{"type":"string","description":"ID of the vnet subnet to use."}},"additionalProperties":false,"description":"Azure specific settings."},"aws":{"type":"object","properties":{"launchTemplate":{"type":"object","properties":{"id":{"type":"string","description":"ID of the launch template to use."},"version":{"type":"integer","minimum":1,"description":"Version of the launch template that should be used."}},"required":["id","version"],"additionalProperties":false,"description":"Specify a launch template to use for this node pool. When using a launch template, the disk size selection on the node pool level will be ignored."}},"additionalProperties":false,"description":"AWS specific node pool settings."},"nodeCount":{"type":"integer","minimum":0,"maximum":250,"description":"Number of nodes to the node pool should be provisioned with.","example":3},"autoscaling":{"type":"object","properties":{"enabled":{"type":"boolean","example":true,"default":false},"min":{"type":"integer","minimum":0,"maximum":249,"example":0},"max":{"type":"integer","minimum":1,"maximum":250,"example":10}},"additionalProperties":false,"nullable":true,"description":"Auto scaling settings to use for the node pool. Requires that the cloud provider supports this feature."},"computeResources":{"type":"object","properties":{"gpu":{"type":"object","properties":{"type":{"type":"string","pattern":"[a-z0-9]","description":"GPU type associated with the node pool.","example":"h100"},"resources":{"type":"object","properties":{"memoryInfo":{"type":"object","properties":{"sizeInGiB":{"type":"number","format":"float","minimum":1,"description":"Memory amount of the GPU in Gib.","example":80}},"additionalProperties":false}},"additionalProperties":false},"count":{"type":"integer","minimum":1,"description":"Number of GPUs per node.","example":1},"timeslicing":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether or not to enable time-slicing on the GPU."},"numSlices":{"type":"number","format":"float","minimum":1,"description":"Sets the amount of slices per GPU, e.g. how many pods may be scheduled concurrently on each GPU."}},"additionalProperties":false,"description":"Time-slicing configuration object."}},"required":["type","resources","count"],"additionalProperties":false}},"additionalProperties":false},"preemptible":{"type":"boolean","description":"Configures node pool with preemptible / spot instances if enabled.","example":false,"default":false},"diskType":{"type":"string","description":"The disk type to use."},"diskSize":{"type":"integer","minimum":1,"description":"Disk size in GB","example":100},"availabilityZones":{"type":"array","items":{"type":"string"},"minItems":1,"maxItems":1,"description":"Zones in which the node pool should be provisioned."},"subnets":{"type":"array","items":{"type":"string"},"minItems":1,"maxItems":1,"description":"Subnets in which the node pool should be provisioned. Required if provider is `oci`."},"scheduling":{"type":"object","properties":{"allowJobs":{"type":"boolean","description":"Allow jobs to schedule to this node pool"},"onlyGpuJobs":{"type":"boolean","description":"Restrict job scheduling to jobs which have GPU resources configured. Only relevant for GPU node pools."},"allowServices":{"type":"boolean","description":"Allow services to schedule to this node pool"},"onlyGpuServices":{"type":"boolean","description":"Restrict service scheduling to services which have GPU resources configured. Only relevant for GPU node pools."},"allowAddons":{"type":"boolean","description":"Allow addons to schedule to this node pool"},"allowBuilds":{"type":"boolean","description":"Allow builds to schedule to this node pool"},"onlyGpuBuilds":{"type":"boolean","description":"Restrict build scheduling to builds which have GPU resources configured. Only relevant for GPU node pools."},"allowCeph":{"type":"boolean","description":"Allow the placement of Ceph pods"}},"additionalProperties":false,"description":"Define basic workload scheduling restrictions for this node pool"},"labels":{"type":"object","properties":{},"additionalProperties":false,"description":"Set of label keys and values that can be used for advanced scheduling in combination with resource tag scheduling rules."}},"required":["id","nodeType","nodeCount","diskSize"],"additionalProperties":false,"description":"Node pool configuration for BYOC clusters"},"minItems":1,"uniqueItems":true,"description":"An array of node pools for BYOC."},{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"(^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$)|(^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89ABab][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$)","minLength":3,"maxLength":63,"description":"ID of the node pool. Must be passed when modifying existing node pools. Not relevant for new node pools","example":"node-pool-1"},"providerId":{"type":"string","pattern":"(^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$)|(^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89ABab][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$)","minLength":3,"maxLength":63,"description":"ID which identifies kubernetes nodes as belonging to this pool.","example":"6aa96121-0345-43ad-bade-af36d540c222"},"computeResources":{"type":"object","properties":{"gpu":{"type":"object","properties":{"supported":{"type":"boolean","description":"Whether this node pool consists of GPU nodes ."},"type":{"type":"string","pattern":"[a-z0-9]","description":"GPU type associated with the node pool.","example":"h100"},"resources":{"type":"object","properties":{"memoryInfo":{"type":"object","properties":{"sizeInGiB":{"type":"number","format":"float","minimum":1,"description":"Memory amount of the GPU in Gib.","example":80}},"additionalProperties":false}},"additionalProperties":false},"mig":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether or not to enable Multi-Instance GPU (MIG)."},"partitions":{"type":"array","items":{"type":"string"},"description":"The partitions to configure on the GPU."}},"additionalProperties":false,"description":"Multi-Instance GPU (MIG). configuration object."},"timeslicing":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether or not to enable time-slicing on the GPU."},"numSlices":{"type":"number","format":"float","minimum":1,"description":"Sets the amount of slices per GPU, e.g. how many pods may be scheduled concurrently on each GPU."}},"additionalProperties":false,"description":"Time-slicing configuration object."},"count":{"type":"integer","minimum":1,"description":"Number of GPUs per node.","example":1}},"additionalProperties":false}},"additionalProperties":false},"defaultPool":{"type":"boolean","description":"Fallback pool to which nodes which do not match any defined node pool are assigned. Exactly one default pool is required."},"preemptible":{"type":"boolean","description":"Configures node pool with preemptible / spot instances if enabled.","example":false,"default":false},"scheduling":{"type":"object","properties":{"allowJobs":{"type":"boolean","description":"Allow jobs to schedule to this node pool"},"onlyGpuJobs":{"type":"boolean","description":"Restrict job scheduling to jobs which have GPU resources configured. Only relevant for GPU node pools."},"allowServices":{"type":"boolean","description":"Allow services to schedule to this node pool"},"onlyGpuServices":{"type":"boolean","description":"Restrict service scheduling to services which have GPU resources configured. Only relevant for GPU node pools."},"allowAddons":{"type":"boolean","description":"Allow addons to schedule to this node pool"},"allowBuilds":{"type":"boolean","description":"Allow builds to schedule to this node pool"},"onlyGpuBuilds":{"type":"boolean","description":"Restrict build scheduling to builds which have GPU resources configured. Only relevant for GPU node pools."},"allowCeph":{"type":"boolean","description":"Allow the placement of Ceph pods"}},"additionalProperties":false,"description":"Define basic workload scheduling restrictions for this node pool"},"platform":{"type":"object","properties":{"architecture":{"type":"string","enum":["amd64","arm64"],"description":"Platform architecture of the underlying node type.","example":"amd64"}},"additionalProperties":false},"labels":{"type":"object","properties":{},"additionalProperties":false,"description":"Set of label keys and values that can be used for advanced scheduling in combination with resource tag scheduling rules."}},"required":["id","providerId"],"additionalProperties":false,"description":"Node pool configuration for BYOK clusters"},"minItems":1,"uniqueItems":true,"description":"An array of node pools for BYOK."}],"description":"An array of node pools for BYOC or BYOK."},"settings":{"type":"object","properties":{"builds":{"type":"object","properties":{"mode":{"type":"string","enum":["paas","internal","build-cluster"]},"plan":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"Plan to use for builds if they are run on the cluster","example":"nf-compute-200"},"clusterId":{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","description":"Cluster to use for scheduling builds"},"caching":{"type":"object","properties":{"allow":{"type":"boolean","description":"Whether to allow local disk based caching for builds."},"storageClassName":{"type":"string","description":"Storage class used by default for local disk based caching."}},"additionalProperties":false,"description":"Cache settings for builds"}},"additionalProperties":false},"registry":{"type":"object","properties":{"mode":{"type":"string","enum":["paas","self-hosted"]},"registryId":{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","description":"Credentials to use for storing of images.","example":"my-registry-credentials"}},"additionalProperties":false},"logging":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["paas"]}},"additionalProperties":false,"description":"Logging via PaaS."},{"type":"object","properties":{"mode":{"type":"string","enum":["loki"]},"loki":{"type":"object","properties":{"storageType":{"type":"string","enum":["s3"]},"s3BucketName":{"type":"string"},"s3AccessKey":{"type":"string"},"s3SecretKey":{"type":"string"},"s3Region":{"type":"string"}},"required":["storageType","s3BucketName","s3AccessKey","s3SecretKey","s3Region"],"additionalProperties":false}},"required":["mode"],"additionalProperties":false,"description":"Logging via Loki (S3 storage)."},{"type":"object","properties":{"mode":{"type":"string","enum":["loki"]},"loki":{"type":"object","properties":{"storageType":{"type":"string","enum":["gcs"]},"gcsBucketName":{"type":"string"},"gcpIntegrationId":{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$"}},"required":["storageType","gcsBucketName","gcpIntegrationId"],"additionalProperties":false}},"required":["mode"],"additionalProperties":false,"description":"Logging via Loki (GCS storage)."}],"description":"Logging settings"},"networking":{"type":"object","properties":{"overlayNetwork":{"type":"boolean","description":"Whether overlay networking is enabled for this cluster."},"overlayCIDR":{"type":"string","pattern":"^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\\/([0-9]|[1-2][0-9]|3[0-2]))$","description":"CIDR range for the overlay network."}},"additionalProperties":false},"vanityDomains":{"type":"object","properties":{"apps":{"type":"object","properties":{"zoneName":{"type":"string"},"integrationId":{"type":"string"}},"required":["zoneName","integrationId"],"additionalProperties":false},"customDomains":{"type":"object","properties":{"zoneName":{"type":"string"},"integrationId":{"type":"string"}},"required":["zoneName","integrationId"],"additionalProperties":false},"loadBalancers":{"type":"object","properties":{"zoneName":{"type":"string"},"integrationId":{"type":"string"}},"required":["zoneName","integrationId"],"additionalProperties":false}},"additionalProperties":false},"infrastructure":{"type":"object","properties":{"workloads":{"type":"object","properties":{"runtimeClass":{"type":"string","enum":["none","gvisor","kata-clh","kata-qemu"]}},"additionalProperties":false,"description":"DEPRECATED: This field will be removed in the near future."},"builds":{"type":"object","properties":{"runtimeClass":{"type":"string","enum":["none","gvisor","kata-clh","kata-qemu"]}},"additionalProperties":false,"description":"DEPRECATED: This field will be removed in the near future."},"sandboxing":{"type":"object","properties":{"installGvisor":{"type":"boolean"},"installMicroVm":{"type":"boolean"},"defaultSandbox":{"type":"object","properties":{"builds":{"type":"string","enum":["none","gvisor","kata-clh","kata-qemu"]},"jobs":{"type":"string","enum":["none","gvisor","kata-clh","kata-qemu"]},"services":{"type":"string","enum":["none","gvisor","kata-clh","kata-qemu"]},"addons":{"type":"string","enum":["none","gvisor","kata-clh","kata-qemu"]}},"additionalProperties":false}},"additionalProperties":false},"installKata":{"type":"boolean","description":"DEPRECATED: This field will be removed in the near future."},"installGvisor":{"type":"boolean","description":"DEPRECATED: This field will be removed in the near future."},"cleanupVolumes":{"type":"boolean","default":true},"cleanupSnapshots":{"type":"boolean","default":true},"cephStorageProvider":{"type":"object","properties":{"enabled":{"type":"boolean","default":false},"resources":{"type":"object","properties":{"cpu":{"type":"number","format":"float","minimum":1,"maximum":20,"description":"Configure the CPU resources per Ceph replica"},"memory":{"type":"number","format":"float","minimum":4096,"maximum":40960,"description":"Configure the memory resources per Ceph replica"},"storage":{"type":"number","format":"float","minimum":102400,"maximum":5242880,"description":"Configure the data disk size per Ceph replica"}},"additionalProperties":false},"enableMultiReadWriteStorage":{"type":"boolean","description":"Configure Ceph to be enable use of multi read write storage for persistent volumes on the cluster."},"enableSingleReadWriteStorage":{"type":"boolean","description":"Configure Ceph to be used as default storage class for single read write storage. This will replace the default storage of the cloud provider."},"enableErasureCoding":{"type":"boolean","description":"Configure Ceph to be set up with erasure coding. This will be less fault tolerant but more cost effective."},"enableTopologyAwareScheduling":{"type":"boolean","description":"Configure Ceph to be set up with topology aware scheduling, enforcing deployment across multiple zones."}},"additionalProperties":false}},"additionalProperties":false},"requestModifiers":{"type":"object","properties":{"services":{"type":"object","properties":{"cpu":{"type":"number","format":"float","minimum":0.2,"maximum":1,"example":0.5,"default":0.5},"memory":{"type":"number","format":"float","minimum":0.4,"maximum":1,"example":0.8,"default":0.8}},"required":["cpu","memory"],"additionalProperties":false,"description":"Request modifiers for services"},"jobs":{"type":"object","properties":{"cpu":{"type":"number","format":"float","minimum":0.2,"maximum":1,"example":0.5,"default":0.5},"memory":{"type":"number","format":"float","minimum":0.4,"maximum":1,"example":0.8,"default":0.8}},"required":["cpu","memory"],"additionalProperties":false,"description":"Request modifiers for jobs"},"builds":{"type":"object","properties":{"cpu":{"type":"number","format":"float","minimum":0.1,"maximum":1,"example":0.2,"default":0.2},"memory":{"type":"number","format":"float","minimum":0.1,"maximum":1,"example":0.5,"default":0.5}},"required":["cpu","memory"],"additionalProperties":false,"description":"Request modifiers for builds"},"addons":{"type":"object","properties":{"cpu":{"type":"number","format":"float","minimum":0.2,"maximum":1,"example":0.5,"default":0.5},"memory":{"type":"number","format":"float","minimum":0.4,"maximum":1,"example":0.8,"default":0.8}},"required":["cpu","memory"],"additionalProperties":false,"description":"Request modifiers for addons"}},"additionalProperties":false,"description":"Allows customising request modifier values."}},"additionalProperties":false},"restrictions":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Enable or disable BYOC restrictions for this entity"},"teams":{"type":"array","items":{"type":"object","properties":{"teamId":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":45,"description":"The ID of the team that has access to this BYOC cluster"}},"required":["teamId"]},"description":"List of teams that have access to this BYOC cluster","default":[]}},"required":["enabled"],"additionalProperties":false,"description":"BYOC restrictions configuration for controlling team access"},"gcp":{"type":"object","properties":{"networking":{"type":"object","properties":{"network":{"type":"string"},"subnetwork":{"type":"string"}},"additionalProperties":false},"enableAuthorizedIpRanges":{"type":"boolean"},"authorizedIpRanges":{"type":"array","items":{"type":"string","pattern":"^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\\/([0-9]|[1-2][0-9]|3[0-2]))$"}},"projectId":{"type":"string","pattern":"^[a-z][a-z0-9-]{4,28}[a-z0-9]$","description":"GCP Project ID"}},"additionalProperties":false,"description":"GCP specific data. Required when `provider` is `gcp`"},"aws":{"type":"object","properties":{"enablePublicAccessCidrs":{"type":"boolean"},"publicAccessCidrs":{"type":"array","items":{"type":"string","pattern":"^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\\/([0-9]|[1-2][0-9]|3[0-2]))$"}},"subnetConfiguration":{"type":"object","properties":{"mode":{"type":"string","enum":["default-subnets-for-azs","explicit-subnets"],"description":"The mode of the AWS subnet configuration"},"vpcId":{"type":"string","description":"Id of the VPC"},"subnets":{"type":"array","items":{"type":"string","example":"eu-west-1a"},"minItems":2,"description":"List of subnets the cluster should be created for. At least 2 must be specified."}},"required":["mode","subnets"],"additionalProperties":false},"vpcEgress":{"type":"boolean","description":"If egress traffic from the cluster should come from a single static egress IP."}},"additionalProperties":false,"description":"AWS specific data. Required when `provider` is `aws`."},"oci":{"type":"object","properties":{"vcnConfiguration":{"type":"object","properties":{"vcnId":{"type":"string"},"subnetIdForKubernetesApi":{"type":"string"},"subnetIdsForServiceLBs":{"type":"array","items":{"type":"string"}}},"required":["vcnId","subnetIdForKubernetesApi","subnetIdsForServiceLBs"],"additionalProperties":false}},"required":["vcnConfiguration"],"additionalProperties":false,"description":"OCI specific data. Required when `provider` is `oci`."},"azure":{"type":"object","properties":{"networking":{"type":"object","properties":{"vnetConfiguration":{"type":"object","properties":{"mode":{"type":"string","enum":["create-default","custom-vnet"],"description":"The vnet mode to use for this cluster. Use this to switch between creation of a new vnet per cluster or specifying a custom vnet."},"vnetId":{"type":"string","description":"Azure vnetId that should be used for this cluster. By default a new vnet will be created."}},"required":["mode"],"additionalProperties":false},"networkPluginMode":{"type":"string","enum":["overlay"],"description":"Optional setting to configure overlay mode on Azure."}},"additionalProperties":false},"enableAuthorizedIpRanges":{"type":"boolean"},"authorizedIpRanges":{"type":"array","items":{"type":"string","pattern":"^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\\/([0-9]|[1-2][0-9]|3[0-2]))$"}}},"additionalProperties":false,"description":"Azure specific data. Required when `provider` is `azure`."},"coreweave":{"type":"object","properties":{"zone":{"type":"string","description":"AZ of the cluster"},"network":{"type":"object","properties":{"networkMode":{"type":"string","enum":["create-default","custom"]},"vpcId":{"type":"string"},"customPrefixNames":{"type":"object","properties":{"podCidrName":{"type":"string"},"serviceCidrName":{"type":"string"},"internalLbCidrNames":{"type":"array","items":{"type":"string"},"minItems":1}},"required":["podCidrName","serviceCidrName","internalLbCidrNames"],"additionalProperties":false}},"required":["networkMode"],"additionalProperties":false,"description":"Network settings"}},"required":["zone"],"additionalProperties":false,"description":"CoreWeave specific data. Required when `provider` is `coreweave`."},"byok":{"type":"object","properties":{"nodePoolProviderIdLabel":{"type":"string"}},"required":["nodePoolProviderIdLabel"],"additionalProperties":false,"description":"BYOK specific data. Required when `provider` is `byok`."},"coordinates":{"type":"object","properties":{"latitude":{"type":"number","format":"float","minimum":-90,"maximum":90},"longitude":{"type":"number","format":"float","minimum":-180,"maximum":180}},"required":["latitude","longitude"],"additionalProperties":false,"description":"Geographic coordinates of the cluster. Optional, used for CDN geo-routing. Only applicable when `provider` is `byok`."},"dns":{"type":"string","description":"Auto-generated dns identifier for this cluster.","example":"xxxxxxxxxx"},"updatedAt":{"type":"string","format":"date-time","description":"The time the cluster was last updated.","example":"2021-01-20T11:19:53.175Z"},"createdAt":{"type":"string","format":"date-time","description":"The time the cluster was created.","example":"2021-01-20T11:19:53.175Z"},"deletionRequested":{"type":"boolean","description":"Indicates if provider resource deletion has been requested.","example":false}},"required":["id","name","provider","nodePools","updatedAt","createdAt","deletionRequested"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Cloud Providers"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":20,"description":"The name of the cluster.","example":"GCP Cluster 1"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"The description of the cluster.","example":"This is a new cluster."},"provider":{"type":"string","enum":["aws","azure","civo","gcp","oci","cloudflare","coreweave","aiven","backblaze","akamai","byok"],"description":"Cloud provider to be used for the selected resource","example":"gcp"},"region":{"type":"string","description":"Region of the cluster. Can only be updated for BYOK clusters.","example":"europe-west2"},"kubernetesVersion":{"type":"string","description":"Deprecated: This field is no longer used, the version is now set by the platform.","example":"1.30"},"integrationId":{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","description":"Existing integration to use for this cluster.","example":"gcp-integration"},"storage":{"type":"object","properties":{"storageClasses":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"type":{"type":"string","enum":["storage-class","snapshot-class"]},"kubernetesName":{"type":"string"},"defaultSnapshotClass":{"type":"string"},"options":{"type":"object","properties":{"capabilities":{"type":"object","properties":{"expansion":{"type":"boolean","description":"Increasing volume size after provisioning."},"snapshot":{"type":"boolean","description":"Point in time snapshotting of volumes."}},"additionalProperties":false},"accessModes":{"type":"object","properties":{"ReadWriteOnce":{"type":"boolean","description":"Access mode where a volume is exclusively attached to a single pod at a time."},"ReadWriteMany":{"type":"boolean","description":"Access mode where a volume can be attached to multiple single pods at a time for read and write operations."}},"additionalProperties":false},"storageSize":{"type":"object","properties":{"minValidSize":{"type":"integer","minimum":1,"description":"Enforces a minimum storage size per addon or volume."},"maxValidSize":{"type":"integer","minimum":1,"description":"Enforces a maximum storage size per addon or volume."},"suggestedOptions":{"type":"array","items":{"type":"integer","minimum":1},"description":"Specific storage size options to suggest in the UI."}},"additionalProperties":false},"platform":{"type":"object","properties":{"supportedResources":{"type":"array","items":{"type":"string","enum":["addon","volume","build-cache"]}}},"additionalProperties":false}},"additionalProperties":false}},"required":["id","name","kubernetesName"],"additionalProperties":false},"uniqueItems":true},"snapshotClasses":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"kubernetesName":{"type":"string"}},"required":["id","name","kubernetesName"],"additionalProperties":false},"uniqueItems":true}},"additionalProperties":false},"nodePools":{"oneOf":[{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"(^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$)|(^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89ABab][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$)","minLength":3,"maxLength":63,"description":"ID of existing node pool. Must be passed when modifying existing node pools. Not relevant for new node pools","example":"6aa96121-0345-43ad-bade-af36d540c222"},"nodeType":{"type":"string","description":"Machine type to be used by the node pool.","example":"n2-standard-8"},"oci":{"type":"object","properties":{"ocpu":{"type":"integer","minimum":1},"memory":{"type":"integer","minimum":1}},"required":["ocpu","memory"],"additionalProperties":false,"description":"OCI instance specific settings. Must respect ratios as determined by the selected node type."},"gcp":{"type":"object","properties":{"enablePrivateNodes":{"type":"boolean","description":"Set this flag to disable public IP assignment for nodes in this node pool."}},"additionalProperties":false,"description":"GCP specific settings."},"azure":{"type":"object","properties":{"systemPool":{"type":"boolean","description":"When 'provider' is 'azure', at least one system node pool is required per cluster."},"enablePublicNodeIp":{"type":"boolean","description":"When 'provider' is 'azure', set this flag to use public node IPs."},"vnetSubnetId":{"type":"string","description":"ID of the vnet subnet to use."}},"additionalProperties":false,"description":"Azure specific settings."},"aws":{"type":"object","properties":{"launchTemplate":{"type":"object","properties":{"id":{"type":"string","description":"ID of the launch template to use."},"version":{"type":"integer","minimum":1,"description":"Version of the launch template that should be used."}},"required":["id","version"],"additionalProperties":false,"description":"Specify a launch template to use for this node pool. When using a launch template, the disk size selection on the node pool level will be ignored."}},"additionalProperties":false,"description":"AWS specific node pool settings."},"nodeCount":{"type":"integer","minimum":0,"maximum":250,"description":"Number of nodes to the node pool should be provisioned with.","example":3},"autoscaling":{"type":"object","properties":{"enabled":{"type":"boolean","example":true,"default":false},"min":{"type":"integer","minimum":0,"maximum":249,"example":0},"max":{"type":"integer","minimum":1,"maximum":250,"example":10}},"additionalProperties":false,"nullable":true,"description":"Auto scaling settings to use for the node pool. Requires that the cloud provider supports this feature."},"computeResources":{"type":"object","properties":{"gpu":{"type":"object","properties":{"timeslicing":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether or not to enable time-slicing on the GPU."},"numSlices":{"type":"number","format":"float","minimum":1,"description":"Sets the amount of slices per GPU, e.g. how many pods may be scheduled concurrently on each GPU."}},"additionalProperties":false,"description":"Time-slicing configuration object."}},"additionalProperties":false}},"additionalProperties":false},"preemptible":{"type":"boolean","description":"Configures node pool with preemptible / spot instances if enabled.","example":false,"default":false},"diskType":{"type":"string","description":"The disk type to use."},"diskSize":{"type":"integer","minimum":1,"description":"Disk size in GB","example":100},"availabilityZones":{"type":"array","items":{"type":"string"},"minItems":1,"maxItems":1,"description":"Zones in which the node pool should be provisioned."},"subnets":{"type":"array","items":{"type":"string"},"minItems":1,"maxItems":1,"description":"Subnets in which the node pool should be provisioned. Required if provider is `oci`."},"scheduling":{"type":"object","properties":{"allowJobs":{"type":"boolean","description":"Allow jobs to schedule to this node pool"},"onlyGpuJobs":{"type":"boolean","description":"Restrict job scheduling to jobs which have GPU resources configured. Only relevant for GPU node pools."},"allowServices":{"type":"boolean","description":"Allow services to schedule to this node pool"},"onlyGpuServices":{"type":"boolean","description":"Restrict service scheduling to services which have GPU resources configured. Only relevant for GPU node pools."},"allowAddons":{"type":"boolean","description":"Allow addons to schedule to this node pool"},"allowBuilds":{"type":"boolean","description":"Allow builds to schedule to this node pool"},"onlyGpuBuilds":{"type":"boolean","description":"Restrict build scheduling to builds which have GPU resources configured. Only relevant for GPU node pools."},"allowCeph":{"type":"boolean","description":"Allow the placement of Ceph pods"}},"additionalProperties":false,"description":"Define basic workload scheduling restrictions for this node pool"},"labels":{"type":"object","properties":{},"additionalProperties":false,"description":"Set of label keys and values that can be used for advanced scheduling in combination with resource tag scheduling rules."}},"required":["id","nodeType","nodeCount","diskSize"],"additionalProperties":false,"description":"Node pool configuration for BYOC clusters"},"minItems":1,"uniqueItems":true,"description":"An array of node pools for BYOC."},{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"(^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$)|(^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89ABab][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$)","minLength":3,"maxLength":63,"description":"ID of the node pool. Must be passed when modifying existing node pools. Not relevant for new node pools","example":"node-pool-1"},"providerId":{"type":"string","pattern":"(^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$)|(^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89ABab][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$)","minLength":3,"maxLength":63,"description":"ID which identifies kubernetes nodes as belonging to this pool.","example":"6aa96121-0345-43ad-bade-af36d540c222"},"computeResources":{"type":"object","properties":{"gpu":{"type":"object","properties":{"supported":{"type":"boolean","description":"Whether this node pool consists of GPU nodes ."},"type":{"type":"string","pattern":"[a-z0-9]","description":"GPU type associated with the node pool.","example":"h100"},"resources":{"type":"object","properties":{"memoryInfo":{"type":"object","properties":{"sizeInGiB":{"type":"number","format":"float","minimum":1,"description":"Memory amount of the GPU in Gib.","example":80}},"additionalProperties":false}},"additionalProperties":false},"mig":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether or not to enable Multi-Instance GPU (MIG)."},"partitions":{"type":"array","items":{"type":"string"},"description":"The partitions to configure on the GPU."}},"additionalProperties":false,"description":"Multi-Instance GPU (MIG). configuration object."},"timeslicing":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether or not to enable time-slicing on the GPU."},"numSlices":{"type":"number","format":"float","minimum":1,"description":"Sets the amount of slices per GPU, e.g. how many pods may be scheduled concurrently on each GPU."}},"additionalProperties":false,"description":"Time-slicing configuration object."},"count":{"type":"integer","minimum":1,"description":"Number of GPUs per node.","example":1}},"additionalProperties":false}},"additionalProperties":false},"defaultPool":{"type":"boolean","description":"Fallback pool to which nodes which do not match any defined node pool are assigned. Exactly one default pool is required."},"preemptible":{"type":"boolean","description":"Configures node pool with preemptible / spot instances if enabled.","example":false,"default":false},"scheduling":{"type":"object","properties":{"allowJobs":{"type":"boolean","description":"Allow jobs to schedule to this node pool"},"onlyGpuJobs":{"type":"boolean","description":"Restrict job scheduling to jobs which have GPU resources configured. Only relevant for GPU node pools."},"allowServices":{"type":"boolean","description":"Allow services to schedule to this node pool"},"onlyGpuServices":{"type":"boolean","description":"Restrict service scheduling to services which have GPU resources configured. Only relevant for GPU node pools."},"allowAddons":{"type":"boolean","description":"Allow addons to schedule to this node pool"},"allowBuilds":{"type":"boolean","description":"Allow builds to schedule to this node pool"},"onlyGpuBuilds":{"type":"boolean","description":"Restrict build scheduling to builds which have GPU resources configured. Only relevant for GPU node pools."},"allowCeph":{"type":"boolean","description":"Allow the placement of Ceph pods"}},"additionalProperties":false,"description":"Define basic workload scheduling restrictions for this node pool"},"platform":{"type":"object","properties":{"architecture":{"type":"string","enum":["amd64","arm64"],"description":"Platform architecture of the underlying node type.","example":"amd64"}},"additionalProperties":false},"labels":{"type":"object","properties":{},"additionalProperties":false,"description":"Set of label keys and values that can be used for advanced scheduling in combination with resource tag scheduling rules."}},"required":["id","providerId"],"additionalProperties":false,"description":"Node pool configuration for BYOK clusters"},"minItems":1,"uniqueItems":true,"description":"An array of node pools for BYOK."}],"description":"An array of node pools for BYOC or BYOK."},"settings":{"type":"object","properties":{"builds":{"type":"object","properties":{"mode":{"type":"string","enum":["paas","internal","build-cluster"]},"plan":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"Plan to use for builds if they are run on the cluster","example":"nf-compute-200"},"clusterId":{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","description":"Cluster to use for scheduling builds"},"caching":{"type":"object","properties":{"allow":{"type":"boolean","description":"Whether to allow local disk based caching for builds."},"storageClassName":{"type":"string","description":"Storage class used by default for local disk based caching."}},"additionalProperties":false,"description":"Cache settings for builds"}},"additionalProperties":false},"registry":{"type":"object","properties":{"mode":{"type":"string","enum":["paas","self-hosted"]},"registryId":{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","description":"Credentials to use for storing of images.","example":"my-registry-credentials"}},"additionalProperties":false},"logging":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["paas"]}},"additionalProperties":false,"description":"Logging via PaaS."},{"type":"object","properties":{"mode":{"type":"string","enum":["loki"]},"loki":{"type":"object","properties":{"storageType":{"type":"string","enum":["s3"]},"s3BucketName":{"type":"string"},"s3AccessKey":{"type":"string"},"s3SecretKey":{"type":"string"},"s3Region":{"type":"string"}},"required":["storageType","s3BucketName","s3AccessKey","s3SecretKey","s3Region"],"additionalProperties":false}},"required":["mode"],"additionalProperties":false,"description":"Logging via Loki (S3 storage)."},{"type":"object","properties":{"mode":{"type":"string","enum":["loki"]},"loki":{"type":"object","properties":{"storageType":{"type":"string","enum":["gcs"]},"gcsBucketName":{"type":"string"},"gcpIntegrationId":{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$"}},"required":["storageType","gcsBucketName","gcpIntegrationId"],"additionalProperties":false}},"required":["mode"],"additionalProperties":false,"description":"Logging via Loki (GCS storage)."}],"description":"Logging settings"},"networking":{"type":"object","properties":{"overlayNetwork":{"type":"boolean","description":"Whether overlay networking is enabled for this cluster."},"overlayCIDR":{"type":"string","pattern":"^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\\/([0-9]|[1-2][0-9]|3[0-2]))$","description":"CIDR range for the overlay network."}},"additionalProperties":false},"vanityDomains":{"type":"object","properties":{"apps":{"type":"object","properties":{"zoneName":{"type":"string"},"integrationId":{"type":"string"}},"required":["zoneName","integrationId"],"additionalProperties":false},"customDomains":{"type":"object","properties":{"zoneName":{"type":"string"},"integrationId":{"type":"string"}},"required":["zoneName","integrationId"],"additionalProperties":false},"loadBalancers":{"type":"object","properties":{"zoneName":{"type":"string"},"integrationId":{"type":"string"}},"required":["zoneName","integrationId"],"additionalProperties":false}},"additionalProperties":false},"infrastructure":{"type":"object","properties":{"workloads":{"type":"object","properties":{"runtimeClass":{"type":"string","enum":["none","gvisor","kata-clh","kata-qemu"]}},"additionalProperties":false,"description":"DEPRECATED: This field will be removed in the near future."},"builds":{"type":"object","properties":{"runtimeClass":{"type":"string","enum":["none","gvisor","kata-clh","kata-qemu"]}},"additionalProperties":false,"description":"DEPRECATED: This field will be removed in the near future."},"sandboxing":{"type":"object","properties":{"installGvisor":{"type":"boolean"},"installMicroVm":{"type":"boolean"},"defaultSandbox":{"type":"object","properties":{"builds":{"type":"string","enum":["none","gvisor","kata-clh","kata-qemu"]},"jobs":{"type":"string","enum":["none","gvisor","kata-clh","kata-qemu"]},"services":{"type":"string","enum":["none","gvisor","kata-clh","kata-qemu"]},"addons":{"type":"string","enum":["none","gvisor","kata-clh","kata-qemu"]}},"additionalProperties":false}},"additionalProperties":false},"installKata":{"type":"boolean","description":"DEPRECATED: This field will be removed in the near future."},"installGvisor":{"type":"boolean","description":"DEPRECATED: This field will be removed in the near future."},"cleanupVolumes":{"type":"boolean","default":true},"cleanupSnapshots":{"type":"boolean","default":true},"cephStorageProvider":{"type":"object","properties":{"enabled":{"type":"boolean","default":false},"resources":{"type":"object","properties":{"cpu":{"type":"number","format":"float","minimum":1,"maximum":20,"description":"Configure the CPU resources per Ceph replica"},"memory":{"type":"number","format":"float","minimum":4096,"maximum":40960,"description":"Configure the memory resources per Ceph replica"},"storage":{"type":"number","format":"float","minimum":102400,"maximum":5242880,"description":"Configure the data disk size per Ceph replica"}},"additionalProperties":false},"enableMultiReadWriteStorage":{"type":"boolean","description":"Configure Ceph to be enable use of multi read write storage for persistent volumes on the cluster."},"enableSingleReadWriteStorage":{"type":"boolean","description":"Configure Ceph to be used as default storage class for single read write storage. This will replace the default storage of the cloud provider."},"enableErasureCoding":{"type":"boolean","description":"Configure Ceph to be set up with erasure coding. This will be less fault tolerant but more cost effective."},"enableTopologyAwareScheduling":{"type":"boolean","description":"Configure Ceph to be set up with topology aware scheduling, enforcing deployment across multiple zones."}},"additionalProperties":false}},"additionalProperties":false},"requestModifiers":{"type":"object","properties":{"services":{"type":"object","properties":{"cpu":{"type":"number","format":"float","minimum":0.2,"maximum":1,"example":0.5,"default":0.5},"memory":{"type":"number","format":"float","minimum":0.4,"maximum":1,"example":0.8,"default":0.8}},"required":["cpu","memory"],"additionalProperties":false,"description":"Request modifiers for services"},"jobs":{"type":"object","properties":{"cpu":{"type":"number","format":"float","minimum":0.2,"maximum":1,"example":0.5,"default":0.5},"memory":{"type":"number","format":"float","minimum":0.4,"maximum":1,"example":0.8,"default":0.8}},"required":["cpu","memory"],"additionalProperties":false,"description":"Request modifiers for jobs"},"builds":{"type":"object","properties":{"cpu":{"type":"number","format":"float","minimum":0.1,"maximum":1,"example":0.2,"default":0.2},"memory":{"type":"number","format":"float","minimum":0.1,"maximum":1,"example":0.5,"default":0.5}},"required":["cpu","memory"],"additionalProperties":false,"description":"Request modifiers for builds"},"addons":{"type":"object","properties":{"cpu":{"type":"number","format":"float","minimum":0.2,"maximum":1,"example":0.5,"default":0.5},"memory":{"type":"number","format":"float","minimum":0.4,"maximum":1,"example":0.8,"default":0.8}},"required":["cpu","memory"],"additionalProperties":false,"description":"Request modifiers for addons"}},"additionalProperties":false,"description":"Allows customising request modifier values."}},"additionalProperties":false},"restrictions":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Enable or disable BYOC restrictions for this entity"},"teams":{"type":"array","items":{"type":"object","properties":{"teamId":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":45,"description":"The ID of the team that has access to this BYOC cluster"}},"required":["teamId"]},"description":"List of teams that have access to this BYOC cluster","default":[]}},"required":["enabled"],"additionalProperties":false,"description":"BYOC restrictions configuration for controlling team access"},"gcp":{"type":"object","properties":{"networking":{"type":"object","properties":{"network":{"type":"string"},"subnetwork":{"type":"string"}},"additionalProperties":false},"enableAuthorizedIpRanges":{"type":"boolean"},"authorizedIpRanges":{"type":"array","items":{"type":"string","pattern":"^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\\/([0-9]|[1-2][0-9]|3[0-2]))$"}},"projectId":{"type":"string","pattern":"^[a-z][a-z0-9-]{4,28}[a-z0-9]$","description":"GCP Project ID"}},"additionalProperties":false,"description":"GCP specific data. Required when `provider` is `gcp`"},"aws":{"type":"object","properties":{"enablePublicAccessCidrs":{"type":"boolean"},"publicAccessCidrs":{"type":"array","items":{"type":"string","pattern":"^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\\/([0-9]|[1-2][0-9]|3[0-2]))$"}},"subnetConfiguration":{"type":"object","properties":{"mode":{"type":"string","enum":["default-subnets-for-azs","explicit-subnets"],"description":"The mode of the AWS subnet configuration"},"vpcId":{"type":"string","description":"Id of the VPC"},"subnets":{"type":"array","items":{"type":"string","example":"eu-west-1a"},"minItems":2,"description":"List of subnets the cluster should be created for. At least 2 must be specified."}},"required":["mode","subnets"],"additionalProperties":false},"vpcEgress":{"type":"boolean","description":"If egress traffic from the cluster should come from a single static egress IP."}},"additionalProperties":false,"description":"AWS specific data. Required when `provider` is `aws`."},"oci":{"type":"object","properties":{"vcnConfiguration":{"type":"object","properties":{"vcnId":{"type":"string"},"subnetIdForKubernetesApi":{"type":"string"},"subnetIdsForServiceLBs":{"type":"array","items":{"type":"string"}}},"required":["vcnId","subnetIdForKubernetesApi","subnetIdsForServiceLBs"],"additionalProperties":false}},"required":["vcnConfiguration"],"additionalProperties":false,"description":"OCI specific data. Required when `provider` is `oci`."},"azure":{"type":"object","properties":{"networking":{"type":"object","properties":{"vnetConfiguration":{"type":"object","properties":{"mode":{"type":"string","enum":["create-default","custom-vnet"],"description":"The vnet mode to use for this cluster. Use this to switch between creation of a new vnet per cluster or specifying a custom vnet."},"vnetId":{"type":"string","description":"Azure vnetId that should be used for this cluster. By default a new vnet will be created."}},"required":["mode"],"additionalProperties":false},"networkPluginMode":{"type":"string","enum":["overlay"],"description":"Optional setting to configure overlay mode on Azure."}},"additionalProperties":false},"enableAuthorizedIpRanges":{"type":"boolean"},"authorizedIpRanges":{"type":"array","items":{"type":"string","pattern":"^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\\/([0-9]|[1-2][0-9]|3[0-2]))$"}}},"additionalProperties":false,"description":"Azure specific data. Required when `provider` is `azure`."},"coreweave":{"type":"object","properties":{"zone":{"type":"string","description":"AZ of the cluster"},"network":{"type":"object","properties":{"networkMode":{"type":"string","enum":["create-default","custom"]},"vpcId":{"type":"string"},"customPrefixNames":{"type":"object","properties":{"podCidrName":{"type":"string"},"serviceCidrName":{"type":"string"},"internalLbCidrNames":{"type":"array","items":{"type":"string"},"minItems":1}},"required":["podCidrName","serviceCidrName","internalLbCidrNames"],"additionalProperties":false}},"required":["networkMode"],"additionalProperties":false,"description":"Network settings"}},"required":["zone"],"additionalProperties":false,"description":"CoreWeave specific data. Required when `provider` is `coreweave`."},"byok":{"type":"object","properties":{"nodePoolProviderIdLabel":{"type":"string"}},"required":["nodePoolProviderIdLabel"],"additionalProperties":false,"description":"BYOK specific data. Required when `provider` is `byok`."},"coordinates":{"type":"object","properties":{"latitude":{"type":"number","format":"float","minimum":-90,"maximum":90},"longitude":{"type":"number","format":"float","minimum":-180,"maximum":180}},"required":["latitude","longitude"],"additionalProperties":false,"description":"Geographic coordinates of the cluster. Optional, used for CDN geo-routing. Only applicable when `provider` is `byok`."}},"required":["name","provider","nodePools"],"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Account > Cloud > Clusters > Create","x-nf-supports-orgs":true,"x-nf-team-scoped":true,"x-nf-cli-command":["put","cloud","cluster"]},"v1-cloud-providers-clusters-put-team-scoped":{"operationId":"putCloudProvidersClusters","summary":"Put cluster","description":"Creates or update a cluster.","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}}],"responses":{"200":{"description":"Details about the created or updated cluster.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","description":"The ID of cluster","example":"gcp-cluster-1"},"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":20,"description":"The name of the cluster.","example":"GCP Cluster 1"},"entityType":{"type":"string","enum":["org","team"],"example":"team"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"The description of the cluster.","example":"This is a new cluster."},"provider":{"type":"string","enum":["aws","azure","civo","gcp","oci","cloudflare","coreweave","aiven","backblaze","akamai","byok"],"description":"Cloud provider to be used for the selected resource","example":"gcp"},"region":{"type":"string","description":"Region of the cluster. Can only be updated for BYOK clusters.","example":"europe-west2"},"status":{"type":"object","properties":{"state":{"type":"object","properties":{"state":{"type":"string","description":"Current state of the cluster.","example":"running"},"transitionTime":{"type":"string","format":"date-time","description":"Time of the last state transition."},"reason":{"type":"string","description":"The reason, given the cluster is in an error state."}},"required":["state"],"additionalProperties":false}},"additionalProperties":false},"kubernetesVersion":{"type":"string","description":"Deprecated: This field is no longer used, the version is now set by the platform.","example":"1.30"},"integrationId":{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","description":"Existing integration to use for this cluster.","example":"gcp-integration"},"storage":{"type":"object","properties":{"storageClasses":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"type":{"type":"string","enum":["storage-class","snapshot-class"]},"kubernetesName":{"type":"string"},"defaultSnapshotClass":{"type":"string"},"options":{"type":"object","properties":{"capabilities":{"type":"object","properties":{"expansion":{"type":"boolean","description":"Increasing volume size after provisioning."},"snapshot":{"type":"boolean","description":"Point in time snapshotting of volumes."}},"additionalProperties":false},"accessModes":{"type":"object","properties":{"ReadWriteOnce":{"type":"boolean","description":"Access mode where a volume is exclusively attached to a single pod at a time."},"ReadWriteMany":{"type":"boolean","description":"Access mode where a volume can be attached to multiple single pods at a time for read and write operations."}},"additionalProperties":false},"storageSize":{"type":"object","properties":{"minValidSize":{"type":"integer","minimum":1,"description":"Enforces a minimum storage size per addon or volume."},"maxValidSize":{"type":"integer","minimum":1,"description":"Enforces a maximum storage size per addon or volume."},"suggestedOptions":{"type":"array","items":{"type":"integer","minimum":1},"description":"Specific storage size options to suggest in the UI."}},"additionalProperties":false},"platform":{"type":"object","properties":{"supportedResources":{"type":"array","items":{"type":"string","enum":["addon","volume","build-cache"]}}},"additionalProperties":false}},"additionalProperties":false}},"required":["id","name","kubernetesName"],"additionalProperties":false},"uniqueItems":true},"snapshotClasses":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"kubernetesName":{"type":"string"}},"required":["id","name","kubernetesName"],"additionalProperties":false},"uniqueItems":true}},"additionalProperties":false},"nodePools":{"oneOf":[{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"(^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$)|(^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89ABab][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$)","minLength":3,"maxLength":63,"description":"ID of existing node pool. Must be passed when modifying existing node pools. Not relevant for new node pools","example":"6aa96121-0345-43ad-bade-af36d540c222"},"nodeType":{"type":"string","description":"Machine type to be used by the node pool.","example":"n2-standard-8"},"oci":{"type":"object","properties":{"ocpu":{"type":"integer","minimum":1},"memory":{"type":"integer","minimum":1}},"required":["ocpu","memory"],"additionalProperties":false,"description":"OCI instance specific settings. Must respect ratios as determined by the selected node type."},"gcp":{"type":"object","properties":{"enablePrivateNodes":{"type":"boolean","description":"Set this flag to disable public IP assignment for nodes in this node pool."}},"additionalProperties":false,"description":"GCP specific settings."},"azure":{"type":"object","properties":{"systemPool":{"type":"boolean","description":"When 'provider' is 'azure', at least one system node pool is required per cluster."},"enablePublicNodeIp":{"type":"boolean","description":"When 'provider' is 'azure', set this flag to use public node IPs."},"vnetSubnetId":{"type":"string","description":"ID of the vnet subnet to use."}},"additionalProperties":false,"description":"Azure specific settings."},"aws":{"type":"object","properties":{"launchTemplate":{"type":"object","properties":{"id":{"type":"string","description":"ID of the launch template to use."},"version":{"type":"integer","minimum":1,"description":"Version of the launch template that should be used."}},"required":["id","version"],"additionalProperties":false,"description":"Specify a launch template to use for this node pool. When using a launch template, the disk size selection on the node pool level will be ignored."}},"additionalProperties":false,"description":"AWS specific node pool settings."},"nodeCount":{"type":"integer","minimum":0,"maximum":250,"description":"Number of nodes to the node pool should be provisioned with.","example":3},"autoscaling":{"type":"object","properties":{"enabled":{"type":"boolean","example":true,"default":false},"min":{"type":"integer","minimum":0,"maximum":249,"example":0},"max":{"type":"integer","minimum":1,"maximum":250,"example":10}},"additionalProperties":false,"nullable":true,"description":"Auto scaling settings to use for the node pool. Requires that the cloud provider supports this feature."},"computeResources":{"type":"object","properties":{"gpu":{"type":"object","properties":{"type":{"type":"string","pattern":"[a-z0-9]","description":"GPU type associated with the node pool.","example":"h100"},"resources":{"type":"object","properties":{"memoryInfo":{"type":"object","properties":{"sizeInGiB":{"type":"number","format":"float","minimum":1,"description":"Memory amount of the GPU in Gib.","example":80}},"additionalProperties":false}},"additionalProperties":false},"count":{"type":"integer","minimum":1,"description":"Number of GPUs per node.","example":1},"timeslicing":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether or not to enable time-slicing on the GPU."},"numSlices":{"type":"number","format":"float","minimum":1,"description":"Sets the amount of slices per GPU, e.g. how many pods may be scheduled concurrently on each GPU."}},"additionalProperties":false,"description":"Time-slicing configuration object."}},"required":["type","resources","count"],"additionalProperties":false}},"additionalProperties":false},"preemptible":{"type":"boolean","description":"Configures node pool with preemptible / spot instances if enabled.","example":false,"default":false},"diskType":{"type":"string","description":"The disk type to use."},"diskSize":{"type":"integer","minimum":1,"description":"Disk size in GB","example":100},"availabilityZones":{"type":"array","items":{"type":"string"},"minItems":1,"maxItems":1,"description":"Zones in which the node pool should be provisioned."},"subnets":{"type":"array","items":{"type":"string"},"minItems":1,"maxItems":1,"description":"Subnets in which the node pool should be provisioned. Required if provider is `oci`."},"scheduling":{"type":"object","properties":{"allowJobs":{"type":"boolean","description":"Allow jobs to schedule to this node pool"},"onlyGpuJobs":{"type":"boolean","description":"Restrict job scheduling to jobs which have GPU resources configured. Only relevant for GPU node pools."},"allowServices":{"type":"boolean","description":"Allow services to schedule to this node pool"},"onlyGpuServices":{"type":"boolean","description":"Restrict service scheduling to services which have GPU resources configured. Only relevant for GPU node pools."},"allowAddons":{"type":"boolean","description":"Allow addons to schedule to this node pool"},"allowBuilds":{"type":"boolean","description":"Allow builds to schedule to this node pool"},"onlyGpuBuilds":{"type":"boolean","description":"Restrict build scheduling to builds which have GPU resources configured. Only relevant for GPU node pools."},"allowCeph":{"type":"boolean","description":"Allow the placement of Ceph pods"}},"additionalProperties":false,"description":"Define basic workload scheduling restrictions for this node pool"},"labels":{"type":"object","properties":{},"additionalProperties":false,"description":"Set of label keys and values that can be used for advanced scheduling in combination with resource tag scheduling rules."}},"required":["id","nodeType","nodeCount","diskSize"],"additionalProperties":false,"description":"Node pool configuration for BYOC clusters"},"minItems":1,"uniqueItems":true,"description":"An array of node pools for BYOC."},{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"(^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$)|(^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89ABab][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$)","minLength":3,"maxLength":63,"description":"ID of the node pool. Must be passed when modifying existing node pools. Not relevant for new node pools","example":"node-pool-1"},"providerId":{"type":"string","pattern":"(^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$)|(^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89ABab][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$)","minLength":3,"maxLength":63,"description":"ID which identifies kubernetes nodes as belonging to this pool.","example":"6aa96121-0345-43ad-bade-af36d540c222"},"computeResources":{"type":"object","properties":{"gpu":{"type":"object","properties":{"supported":{"type":"boolean","description":"Whether this node pool consists of GPU nodes ."},"type":{"type":"string","pattern":"[a-z0-9]","description":"GPU type associated with the node pool.","example":"h100"},"resources":{"type":"object","properties":{"memoryInfo":{"type":"object","properties":{"sizeInGiB":{"type":"number","format":"float","minimum":1,"description":"Memory amount of the GPU in Gib.","example":80}},"additionalProperties":false}},"additionalProperties":false},"mig":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether or not to enable Multi-Instance GPU (MIG)."},"partitions":{"type":"array","items":{"type":"string"},"description":"The partitions to configure on the GPU."}},"additionalProperties":false,"description":"Multi-Instance GPU (MIG). configuration object."},"timeslicing":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether or not to enable time-slicing on the GPU."},"numSlices":{"type":"number","format":"float","minimum":1,"description":"Sets the amount of slices per GPU, e.g. how many pods may be scheduled concurrently on each GPU."}},"additionalProperties":false,"description":"Time-slicing configuration object."},"count":{"type":"integer","minimum":1,"description":"Number of GPUs per node.","example":1}},"additionalProperties":false}},"additionalProperties":false},"defaultPool":{"type":"boolean","description":"Fallback pool to which nodes which do not match any defined node pool are assigned. Exactly one default pool is required."},"preemptible":{"type":"boolean","description":"Configures node pool with preemptible / spot instances if enabled.","example":false,"default":false},"scheduling":{"type":"object","properties":{"allowJobs":{"type":"boolean","description":"Allow jobs to schedule to this node pool"},"onlyGpuJobs":{"type":"boolean","description":"Restrict job scheduling to jobs which have GPU resources configured. Only relevant for GPU node pools."},"allowServices":{"type":"boolean","description":"Allow services to schedule to this node pool"},"onlyGpuServices":{"type":"boolean","description":"Restrict service scheduling to services which have GPU resources configured. Only relevant for GPU node pools."},"allowAddons":{"type":"boolean","description":"Allow addons to schedule to this node pool"},"allowBuilds":{"type":"boolean","description":"Allow builds to schedule to this node pool"},"onlyGpuBuilds":{"type":"boolean","description":"Restrict build scheduling to builds which have GPU resources configured. Only relevant for GPU node pools."},"allowCeph":{"type":"boolean","description":"Allow the placement of Ceph pods"}},"additionalProperties":false,"description":"Define basic workload scheduling restrictions for this node pool"},"platform":{"type":"object","properties":{"architecture":{"type":"string","enum":["amd64","arm64"],"description":"Platform architecture of the underlying node type.","example":"amd64"}},"additionalProperties":false},"labels":{"type":"object","properties":{},"additionalProperties":false,"description":"Set of label keys and values that can be used for advanced scheduling in combination with resource tag scheduling rules."}},"required":["id","providerId"],"additionalProperties":false,"description":"Node pool configuration for BYOK clusters"},"minItems":1,"uniqueItems":true,"description":"An array of node pools for BYOK."}],"description":"An array of node pools for BYOC or BYOK."},"settings":{"type":"object","properties":{"builds":{"type":"object","properties":{"mode":{"type":"string","enum":["paas","internal","build-cluster"]},"plan":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"Plan to use for builds if they are run on the cluster","example":"nf-compute-200"},"clusterId":{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","description":"Cluster to use for scheduling builds"},"caching":{"type":"object","properties":{"allow":{"type":"boolean","description":"Whether to allow local disk based caching for builds."},"storageClassName":{"type":"string","description":"Storage class used by default for local disk based caching."}},"additionalProperties":false,"description":"Cache settings for builds"}},"additionalProperties":false},"registry":{"type":"object","properties":{"mode":{"type":"string","enum":["paas","self-hosted"]},"registryId":{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","description":"Credentials to use for storing of images.","example":"my-registry-credentials"}},"additionalProperties":false},"logging":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["paas"]}},"additionalProperties":false,"description":"Logging via PaaS."},{"type":"object","properties":{"mode":{"type":"string","enum":["loki"]},"loki":{"type":"object","properties":{"storageType":{"type":"string","enum":["s3"]},"s3BucketName":{"type":"string"},"s3AccessKey":{"type":"string"},"s3SecretKey":{"type":"string"},"s3Region":{"type":"string"}},"required":["storageType","s3BucketName","s3AccessKey","s3SecretKey","s3Region"],"additionalProperties":false}},"required":["mode"],"additionalProperties":false,"description":"Logging via Loki (S3 storage)."},{"type":"object","properties":{"mode":{"type":"string","enum":["loki"]},"loki":{"type":"object","properties":{"storageType":{"type":"string","enum":["gcs"]},"gcsBucketName":{"type":"string"},"gcpIntegrationId":{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$"}},"required":["storageType","gcsBucketName","gcpIntegrationId"],"additionalProperties":false}},"required":["mode"],"additionalProperties":false,"description":"Logging via Loki (GCS storage)."}],"description":"Logging settings"},"networking":{"type":"object","properties":{"overlayNetwork":{"type":"boolean","description":"Whether overlay networking is enabled for this cluster."},"overlayCIDR":{"type":"string","pattern":"^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\\/([0-9]|[1-2][0-9]|3[0-2]))$","description":"CIDR range for the overlay network."}},"additionalProperties":false},"vanityDomains":{"type":"object","properties":{"apps":{"type":"object","properties":{"zoneName":{"type":"string"},"integrationId":{"type":"string"}},"required":["zoneName","integrationId"],"additionalProperties":false},"customDomains":{"type":"object","properties":{"zoneName":{"type":"string"},"integrationId":{"type":"string"}},"required":["zoneName","integrationId"],"additionalProperties":false},"loadBalancers":{"type":"object","properties":{"zoneName":{"type":"string"},"integrationId":{"type":"string"}},"required":["zoneName","integrationId"],"additionalProperties":false}},"additionalProperties":false},"infrastructure":{"type":"object","properties":{"workloads":{"type":"object","properties":{"runtimeClass":{"type":"string","enum":["none","gvisor","kata-clh","kata-qemu"]}},"additionalProperties":false,"description":"DEPRECATED: This field will be removed in the near future."},"builds":{"type":"object","properties":{"runtimeClass":{"type":"string","enum":["none","gvisor","kata-clh","kata-qemu"]}},"additionalProperties":false,"description":"DEPRECATED: This field will be removed in the near future."},"sandboxing":{"type":"object","properties":{"installGvisor":{"type":"boolean"},"installMicroVm":{"type":"boolean"},"defaultSandbox":{"type":"object","properties":{"builds":{"type":"string","enum":["none","gvisor","kata-clh","kata-qemu"]},"jobs":{"type":"string","enum":["none","gvisor","kata-clh","kata-qemu"]},"services":{"type":"string","enum":["none","gvisor","kata-clh","kata-qemu"]},"addons":{"type":"string","enum":["none","gvisor","kata-clh","kata-qemu"]}},"additionalProperties":false}},"additionalProperties":false},"installKata":{"type":"boolean","description":"DEPRECATED: This field will be removed in the near future."},"installGvisor":{"type":"boolean","description":"DEPRECATED: This field will be removed in the near future."},"cleanupVolumes":{"type":"boolean","default":true},"cleanupSnapshots":{"type":"boolean","default":true},"cephStorageProvider":{"type":"object","properties":{"enabled":{"type":"boolean","default":false},"resources":{"type":"object","properties":{"cpu":{"type":"number","format":"float","minimum":1,"maximum":20,"description":"Configure the CPU resources per Ceph replica"},"memory":{"type":"number","format":"float","minimum":4096,"maximum":40960,"description":"Configure the memory resources per Ceph replica"},"storage":{"type":"number","format":"float","minimum":102400,"maximum":5242880,"description":"Configure the data disk size per Ceph replica"}},"additionalProperties":false},"enableMultiReadWriteStorage":{"type":"boolean","description":"Configure Ceph to be enable use of multi read write storage for persistent volumes on the cluster."},"enableSingleReadWriteStorage":{"type":"boolean","description":"Configure Ceph to be used as default storage class for single read write storage. This will replace the default storage of the cloud provider."},"enableErasureCoding":{"type":"boolean","description":"Configure Ceph to be set up with erasure coding. This will be less fault tolerant but more cost effective."},"enableTopologyAwareScheduling":{"type":"boolean","description":"Configure Ceph to be set up with topology aware scheduling, enforcing deployment across multiple zones."}},"additionalProperties":false}},"additionalProperties":false},"requestModifiers":{"type":"object","properties":{"services":{"type":"object","properties":{"cpu":{"type":"number","format":"float","minimum":0.2,"maximum":1,"example":0.5,"default":0.5},"memory":{"type":"number","format":"float","minimum":0.4,"maximum":1,"example":0.8,"default":0.8}},"required":["cpu","memory"],"additionalProperties":false,"description":"Request modifiers for services"},"jobs":{"type":"object","properties":{"cpu":{"type":"number","format":"float","minimum":0.2,"maximum":1,"example":0.5,"default":0.5},"memory":{"type":"number","format":"float","minimum":0.4,"maximum":1,"example":0.8,"default":0.8}},"required":["cpu","memory"],"additionalProperties":false,"description":"Request modifiers for jobs"},"builds":{"type":"object","properties":{"cpu":{"type":"number","format":"float","minimum":0.1,"maximum":1,"example":0.2,"default":0.2},"memory":{"type":"number","format":"float","minimum":0.1,"maximum":1,"example":0.5,"default":0.5}},"required":["cpu","memory"],"additionalProperties":false,"description":"Request modifiers for builds"},"addons":{"type":"object","properties":{"cpu":{"type":"number","format":"float","minimum":0.2,"maximum":1,"example":0.5,"default":0.5},"memory":{"type":"number","format":"float","minimum":0.4,"maximum":1,"example":0.8,"default":0.8}},"required":["cpu","memory"],"additionalProperties":false,"description":"Request modifiers for addons"}},"additionalProperties":false,"description":"Allows customising request modifier values."}},"additionalProperties":false},"restrictions":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Enable or disable BYOC restrictions for this entity"},"teams":{"type":"array","items":{"type":"object","properties":{"teamId":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":45,"description":"The ID of the team that has access to this BYOC cluster"}},"required":["teamId"]},"description":"List of teams that have access to this BYOC cluster","default":[]}},"required":["enabled"],"additionalProperties":false,"description":"BYOC restrictions configuration for controlling team access"},"gcp":{"type":"object","properties":{"networking":{"type":"object","properties":{"network":{"type":"string"},"subnetwork":{"type":"string"}},"additionalProperties":false},"enableAuthorizedIpRanges":{"type":"boolean"},"authorizedIpRanges":{"type":"array","items":{"type":"string","pattern":"^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\\/([0-9]|[1-2][0-9]|3[0-2]))$"}},"projectId":{"type":"string","pattern":"^[a-z][a-z0-9-]{4,28}[a-z0-9]$","description":"GCP Project ID"}},"additionalProperties":false,"description":"GCP specific data. Required when `provider` is `gcp`"},"aws":{"type":"object","properties":{"enablePublicAccessCidrs":{"type":"boolean"},"publicAccessCidrs":{"type":"array","items":{"type":"string","pattern":"^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\\/([0-9]|[1-2][0-9]|3[0-2]))$"}},"subnetConfiguration":{"type":"object","properties":{"mode":{"type":"string","enum":["default-subnets-for-azs","explicit-subnets"],"description":"The mode of the AWS subnet configuration"},"vpcId":{"type":"string","description":"Id of the VPC"},"subnets":{"type":"array","items":{"type":"string","example":"eu-west-1a"},"minItems":2,"description":"List of subnets the cluster should be created for. At least 2 must be specified."}},"required":["mode","subnets"],"additionalProperties":false},"vpcEgress":{"type":"boolean","description":"If egress traffic from the cluster should come from a single static egress IP."}},"additionalProperties":false,"description":"AWS specific data. Required when `provider` is `aws`."},"oci":{"type":"object","properties":{"vcnConfiguration":{"type":"object","properties":{"vcnId":{"type":"string"},"subnetIdForKubernetesApi":{"type":"string"},"subnetIdsForServiceLBs":{"type":"array","items":{"type":"string"}}},"required":["vcnId","subnetIdForKubernetesApi","subnetIdsForServiceLBs"],"additionalProperties":false}},"required":["vcnConfiguration"],"additionalProperties":false,"description":"OCI specific data. Required when `provider` is `oci`."},"azure":{"type":"object","properties":{"networking":{"type":"object","properties":{"vnetConfiguration":{"type":"object","properties":{"mode":{"type":"string","enum":["create-default","custom-vnet"],"description":"The vnet mode to use for this cluster. Use this to switch between creation of a new vnet per cluster or specifying a custom vnet."},"vnetId":{"type":"string","description":"Azure vnetId that should be used for this cluster. By default a new vnet will be created."}},"required":["mode"],"additionalProperties":false},"networkPluginMode":{"type":"string","enum":["overlay"],"description":"Optional setting to configure overlay mode on Azure."}},"additionalProperties":false},"enableAuthorizedIpRanges":{"type":"boolean"},"authorizedIpRanges":{"type":"array","items":{"type":"string","pattern":"^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\\/([0-9]|[1-2][0-9]|3[0-2]))$"}}},"additionalProperties":false,"description":"Azure specific data. Required when `provider` is `azure`."},"coreweave":{"type":"object","properties":{"zone":{"type":"string","description":"AZ of the cluster"},"network":{"type":"object","properties":{"networkMode":{"type":"string","enum":["create-default","custom"]},"vpcId":{"type":"string"},"customPrefixNames":{"type":"object","properties":{"podCidrName":{"type":"string"},"serviceCidrName":{"type":"string"},"internalLbCidrNames":{"type":"array","items":{"type":"string"},"minItems":1}},"required":["podCidrName","serviceCidrName","internalLbCidrNames"],"additionalProperties":false}},"required":["networkMode"],"additionalProperties":false,"description":"Network settings"}},"required":["zone"],"additionalProperties":false,"description":"CoreWeave specific data. Required when `provider` is `coreweave`."},"byok":{"type":"object","properties":{"nodePoolProviderIdLabel":{"type":"string"}},"required":["nodePoolProviderIdLabel"],"additionalProperties":false,"description":"BYOK specific data. Required when `provider` is `byok`."},"coordinates":{"type":"object","properties":{"latitude":{"type":"number","format":"float","minimum":-90,"maximum":90},"longitude":{"type":"number","format":"float","minimum":-180,"maximum":180}},"required":["latitude","longitude"],"additionalProperties":false,"description":"Geographic coordinates of the cluster. Optional, used for CDN geo-routing. Only applicable when `provider` is `byok`."},"dns":{"type":"string","description":"Auto-generated dns identifier for this cluster.","example":"xxxxxxxxxx"},"updatedAt":{"type":"string","format":"date-time","description":"The time the cluster was last updated.","example":"2021-01-20T11:19:53.175Z"},"createdAt":{"type":"string","format":"date-time","description":"The time the cluster was created.","example":"2021-01-20T11:19:53.175Z"},"deletionRequested":{"type":"boolean","description":"Indicates if provider resource deletion has been requested.","example":false}},"required":["id","name","provider","nodePools","updatedAt","createdAt","deletionRequested"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Cloud Providers","team"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":20,"description":"The name of the cluster.","example":"GCP Cluster 1"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"The description of the cluster.","example":"This is a new cluster."},"provider":{"type":"string","enum":["aws","azure","civo","gcp","oci","cloudflare","coreweave","aiven","backblaze","akamai","byok"],"description":"Cloud provider to be used for the selected resource","example":"gcp"},"region":{"type":"string","description":"Region of the cluster. Can only be updated for BYOK clusters.","example":"europe-west2"},"kubernetesVersion":{"type":"string","description":"Deprecated: This field is no longer used, the version is now set by the platform.","example":"1.30"},"integrationId":{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","description":"Existing integration to use for this cluster.","example":"gcp-integration"},"storage":{"type":"object","properties":{"storageClasses":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"type":{"type":"string","enum":["storage-class","snapshot-class"]},"kubernetesName":{"type":"string"},"defaultSnapshotClass":{"type":"string"},"options":{"type":"object","properties":{"capabilities":{"type":"object","properties":{"expansion":{"type":"boolean","description":"Increasing volume size after provisioning."},"snapshot":{"type":"boolean","description":"Point in time snapshotting of volumes."}},"additionalProperties":false},"accessModes":{"type":"object","properties":{"ReadWriteOnce":{"type":"boolean","description":"Access mode where a volume is exclusively attached to a single pod at a time."},"ReadWriteMany":{"type":"boolean","description":"Access mode where a volume can be attached to multiple single pods at a time for read and write operations."}},"additionalProperties":false},"storageSize":{"type":"object","properties":{"minValidSize":{"type":"integer","minimum":1,"description":"Enforces a minimum storage size per addon or volume."},"maxValidSize":{"type":"integer","minimum":1,"description":"Enforces a maximum storage size per addon or volume."},"suggestedOptions":{"type":"array","items":{"type":"integer","minimum":1},"description":"Specific storage size options to suggest in the UI."}},"additionalProperties":false},"platform":{"type":"object","properties":{"supportedResources":{"type":"array","items":{"type":"string","enum":["addon","volume","build-cache"]}}},"additionalProperties":false}},"additionalProperties":false}},"required":["id","name","kubernetesName"],"additionalProperties":false},"uniqueItems":true},"snapshotClasses":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"kubernetesName":{"type":"string"}},"required":["id","name","kubernetesName"],"additionalProperties":false},"uniqueItems":true}},"additionalProperties":false},"nodePools":{"oneOf":[{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"(^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$)|(^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89ABab][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$)","minLength":3,"maxLength":63,"description":"ID of existing node pool. Must be passed when modifying existing node pools. Not relevant for new node pools","example":"6aa96121-0345-43ad-bade-af36d540c222"},"nodeType":{"type":"string","description":"Machine type to be used by the node pool.","example":"n2-standard-8"},"oci":{"type":"object","properties":{"ocpu":{"type":"integer","minimum":1},"memory":{"type":"integer","minimum":1}},"required":["ocpu","memory"],"additionalProperties":false,"description":"OCI instance specific settings. Must respect ratios as determined by the selected node type."},"gcp":{"type":"object","properties":{"enablePrivateNodes":{"type":"boolean","description":"Set this flag to disable public IP assignment for nodes in this node pool."}},"additionalProperties":false,"description":"GCP specific settings."},"azure":{"type":"object","properties":{"systemPool":{"type":"boolean","description":"When 'provider' is 'azure', at least one system node pool is required per cluster."},"enablePublicNodeIp":{"type":"boolean","description":"When 'provider' is 'azure', set this flag to use public node IPs."},"vnetSubnetId":{"type":"string","description":"ID of the vnet subnet to use."}},"additionalProperties":false,"description":"Azure specific settings."},"aws":{"type":"object","properties":{"launchTemplate":{"type":"object","properties":{"id":{"type":"string","description":"ID of the launch template to use."},"version":{"type":"integer","minimum":1,"description":"Version of the launch template that should be used."}},"required":["id","version"],"additionalProperties":false,"description":"Specify a launch template to use for this node pool. When using a launch template, the disk size selection on the node pool level will be ignored."}},"additionalProperties":false,"description":"AWS specific node pool settings."},"nodeCount":{"type":"integer","minimum":0,"maximum":250,"description":"Number of nodes to the node pool should be provisioned with.","example":3},"autoscaling":{"type":"object","properties":{"enabled":{"type":"boolean","example":true,"default":false},"min":{"type":"integer","minimum":0,"maximum":249,"example":0},"max":{"type":"integer","minimum":1,"maximum":250,"example":10}},"additionalProperties":false,"nullable":true,"description":"Auto scaling settings to use for the node pool. Requires that the cloud provider supports this feature."},"computeResources":{"type":"object","properties":{"gpu":{"type":"object","properties":{"timeslicing":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether or not to enable time-slicing on the GPU."},"numSlices":{"type":"number","format":"float","minimum":1,"description":"Sets the amount of slices per GPU, e.g. how many pods may be scheduled concurrently on each GPU."}},"additionalProperties":false,"description":"Time-slicing configuration object."}},"additionalProperties":false}},"additionalProperties":false},"preemptible":{"type":"boolean","description":"Configures node pool with preemptible / spot instances if enabled.","example":false,"default":false},"diskType":{"type":"string","description":"The disk type to use."},"diskSize":{"type":"integer","minimum":1,"description":"Disk size in GB","example":100},"availabilityZones":{"type":"array","items":{"type":"string"},"minItems":1,"maxItems":1,"description":"Zones in which the node pool should be provisioned."},"subnets":{"type":"array","items":{"type":"string"},"minItems":1,"maxItems":1,"description":"Subnets in which the node pool should be provisioned. Required if provider is `oci`."},"scheduling":{"type":"object","properties":{"allowJobs":{"type":"boolean","description":"Allow jobs to schedule to this node pool"},"onlyGpuJobs":{"type":"boolean","description":"Restrict job scheduling to jobs which have GPU resources configured. Only relevant for GPU node pools."},"allowServices":{"type":"boolean","description":"Allow services to schedule to this node pool"},"onlyGpuServices":{"type":"boolean","description":"Restrict service scheduling to services which have GPU resources configured. Only relevant for GPU node pools."},"allowAddons":{"type":"boolean","description":"Allow addons to schedule to this node pool"},"allowBuilds":{"type":"boolean","description":"Allow builds to schedule to this node pool"},"onlyGpuBuilds":{"type":"boolean","description":"Restrict build scheduling to builds which have GPU resources configured. Only relevant for GPU node pools."},"allowCeph":{"type":"boolean","description":"Allow the placement of Ceph pods"}},"additionalProperties":false,"description":"Define basic workload scheduling restrictions for this node pool"},"labels":{"type":"object","properties":{},"additionalProperties":false,"description":"Set of label keys and values that can be used for advanced scheduling in combination with resource tag scheduling rules."}},"required":["id","nodeType","nodeCount","diskSize"],"additionalProperties":false,"description":"Node pool configuration for BYOC clusters"},"minItems":1,"uniqueItems":true,"description":"An array of node pools for BYOC."},{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"(^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$)|(^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89ABab][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$)","minLength":3,"maxLength":63,"description":"ID of the node pool. Must be passed when modifying existing node pools. Not relevant for new node pools","example":"node-pool-1"},"providerId":{"type":"string","pattern":"(^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$)|(^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89ABab][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$)","minLength":3,"maxLength":63,"description":"ID which identifies kubernetes nodes as belonging to this pool.","example":"6aa96121-0345-43ad-bade-af36d540c222"},"computeResources":{"type":"object","properties":{"gpu":{"type":"object","properties":{"supported":{"type":"boolean","description":"Whether this node pool consists of GPU nodes ."},"type":{"type":"string","pattern":"[a-z0-9]","description":"GPU type associated with the node pool.","example":"h100"},"resources":{"type":"object","properties":{"memoryInfo":{"type":"object","properties":{"sizeInGiB":{"type":"number","format":"float","minimum":1,"description":"Memory amount of the GPU in Gib.","example":80}},"additionalProperties":false}},"additionalProperties":false},"mig":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether or not to enable Multi-Instance GPU (MIG)."},"partitions":{"type":"array","items":{"type":"string"},"description":"The partitions to configure on the GPU."}},"additionalProperties":false,"description":"Multi-Instance GPU (MIG). configuration object."},"timeslicing":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether or not to enable time-slicing on the GPU."},"numSlices":{"type":"number","format":"float","minimum":1,"description":"Sets the amount of slices per GPU, e.g. how many pods may be scheduled concurrently on each GPU."}},"additionalProperties":false,"description":"Time-slicing configuration object."},"count":{"type":"integer","minimum":1,"description":"Number of GPUs per node.","example":1}},"additionalProperties":false}},"additionalProperties":false},"defaultPool":{"type":"boolean","description":"Fallback pool to which nodes which do not match any defined node pool are assigned. Exactly one default pool is required."},"preemptible":{"type":"boolean","description":"Configures node pool with preemptible / spot instances if enabled.","example":false,"default":false},"scheduling":{"type":"object","properties":{"allowJobs":{"type":"boolean","description":"Allow jobs to schedule to this node pool"},"onlyGpuJobs":{"type":"boolean","description":"Restrict job scheduling to jobs which have GPU resources configured. Only relevant for GPU node pools."},"allowServices":{"type":"boolean","description":"Allow services to schedule to this node pool"},"onlyGpuServices":{"type":"boolean","description":"Restrict service scheduling to services which have GPU resources configured. Only relevant for GPU node pools."},"allowAddons":{"type":"boolean","description":"Allow addons to schedule to this node pool"},"allowBuilds":{"type":"boolean","description":"Allow builds to schedule to this node pool"},"onlyGpuBuilds":{"type":"boolean","description":"Restrict build scheduling to builds which have GPU resources configured. Only relevant for GPU node pools."},"allowCeph":{"type":"boolean","description":"Allow the placement of Ceph pods"}},"additionalProperties":false,"description":"Define basic workload scheduling restrictions for this node pool"},"platform":{"type":"object","properties":{"architecture":{"type":"string","enum":["amd64","arm64"],"description":"Platform architecture of the underlying node type.","example":"amd64"}},"additionalProperties":false},"labels":{"type":"object","properties":{},"additionalProperties":false,"description":"Set of label keys and values that can be used for advanced scheduling in combination with resource tag scheduling rules."}},"required":["id","providerId"],"additionalProperties":false,"description":"Node pool configuration for BYOK clusters"},"minItems":1,"uniqueItems":true,"description":"An array of node pools for BYOK."}],"description":"An array of node pools for BYOC or BYOK."},"settings":{"type":"object","properties":{"builds":{"type":"object","properties":{"mode":{"type":"string","enum":["paas","internal","build-cluster"]},"plan":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"Plan to use for builds if they are run on the cluster","example":"nf-compute-200"},"clusterId":{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","description":"Cluster to use for scheduling builds"},"caching":{"type":"object","properties":{"allow":{"type":"boolean","description":"Whether to allow local disk based caching for builds."},"storageClassName":{"type":"string","description":"Storage class used by default for local disk based caching."}},"additionalProperties":false,"description":"Cache settings for builds"}},"additionalProperties":false},"registry":{"type":"object","properties":{"mode":{"type":"string","enum":["paas","self-hosted"]},"registryId":{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","description":"Credentials to use for storing of images.","example":"my-registry-credentials"}},"additionalProperties":false},"logging":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["paas"]}},"additionalProperties":false,"description":"Logging via PaaS."},{"type":"object","properties":{"mode":{"type":"string","enum":["loki"]},"loki":{"type":"object","properties":{"storageType":{"type":"string","enum":["s3"]},"s3BucketName":{"type":"string"},"s3AccessKey":{"type":"string"},"s3SecretKey":{"type":"string"},"s3Region":{"type":"string"}},"required":["storageType","s3BucketName","s3AccessKey","s3SecretKey","s3Region"],"additionalProperties":false}},"required":["mode"],"additionalProperties":false,"description":"Logging via Loki (S3 storage)."},{"type":"object","properties":{"mode":{"type":"string","enum":["loki"]},"loki":{"type":"object","properties":{"storageType":{"type":"string","enum":["gcs"]},"gcsBucketName":{"type":"string"},"gcpIntegrationId":{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$"}},"required":["storageType","gcsBucketName","gcpIntegrationId"],"additionalProperties":false}},"required":["mode"],"additionalProperties":false,"description":"Logging via Loki (GCS storage)."}],"description":"Logging settings"},"networking":{"type":"object","properties":{"overlayNetwork":{"type":"boolean","description":"Whether overlay networking is enabled for this cluster."},"overlayCIDR":{"type":"string","pattern":"^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\\/([0-9]|[1-2][0-9]|3[0-2]))$","description":"CIDR range for the overlay network."}},"additionalProperties":false},"vanityDomains":{"type":"object","properties":{"apps":{"type":"object","properties":{"zoneName":{"type":"string"},"integrationId":{"type":"string"}},"required":["zoneName","integrationId"],"additionalProperties":false},"customDomains":{"type":"object","properties":{"zoneName":{"type":"string"},"integrationId":{"type":"string"}},"required":["zoneName","integrationId"],"additionalProperties":false},"loadBalancers":{"type":"object","properties":{"zoneName":{"type":"string"},"integrationId":{"type":"string"}},"required":["zoneName","integrationId"],"additionalProperties":false}},"additionalProperties":false},"infrastructure":{"type":"object","properties":{"workloads":{"type":"object","properties":{"runtimeClass":{"type":"string","enum":["none","gvisor","kata-clh","kata-qemu"]}},"additionalProperties":false,"description":"DEPRECATED: This field will be removed in the near future."},"builds":{"type":"object","properties":{"runtimeClass":{"type":"string","enum":["none","gvisor","kata-clh","kata-qemu"]}},"additionalProperties":false,"description":"DEPRECATED: This field will be removed in the near future."},"sandboxing":{"type":"object","properties":{"installGvisor":{"type":"boolean"},"installMicroVm":{"type":"boolean"},"defaultSandbox":{"type":"object","properties":{"builds":{"type":"string","enum":["none","gvisor","kata-clh","kata-qemu"]},"jobs":{"type":"string","enum":["none","gvisor","kata-clh","kata-qemu"]},"services":{"type":"string","enum":["none","gvisor","kata-clh","kata-qemu"]},"addons":{"type":"string","enum":["none","gvisor","kata-clh","kata-qemu"]}},"additionalProperties":false}},"additionalProperties":false},"installKata":{"type":"boolean","description":"DEPRECATED: This field will be removed in the near future."},"installGvisor":{"type":"boolean","description":"DEPRECATED: This field will be removed in the near future."},"cleanupVolumes":{"type":"boolean","default":true},"cleanupSnapshots":{"type":"boolean","default":true},"cephStorageProvider":{"type":"object","properties":{"enabled":{"type":"boolean","default":false},"resources":{"type":"object","properties":{"cpu":{"type":"number","format":"float","minimum":1,"maximum":20,"description":"Configure the CPU resources per Ceph replica"},"memory":{"type":"number","format":"float","minimum":4096,"maximum":40960,"description":"Configure the memory resources per Ceph replica"},"storage":{"type":"number","format":"float","minimum":102400,"maximum":5242880,"description":"Configure the data disk size per Ceph replica"}},"additionalProperties":false},"enableMultiReadWriteStorage":{"type":"boolean","description":"Configure Ceph to be enable use of multi read write storage for persistent volumes on the cluster."},"enableSingleReadWriteStorage":{"type":"boolean","description":"Configure Ceph to be used as default storage class for single read write storage. This will replace the default storage of the cloud provider."},"enableErasureCoding":{"type":"boolean","description":"Configure Ceph to be set up with erasure coding. This will be less fault tolerant but more cost effective."},"enableTopologyAwareScheduling":{"type":"boolean","description":"Configure Ceph to be set up with topology aware scheduling, enforcing deployment across multiple zones."}},"additionalProperties":false}},"additionalProperties":false},"requestModifiers":{"type":"object","properties":{"services":{"type":"object","properties":{"cpu":{"type":"number","format":"float","minimum":0.2,"maximum":1,"example":0.5,"default":0.5},"memory":{"type":"number","format":"float","minimum":0.4,"maximum":1,"example":0.8,"default":0.8}},"required":["cpu","memory"],"additionalProperties":false,"description":"Request modifiers for services"},"jobs":{"type":"object","properties":{"cpu":{"type":"number","format":"float","minimum":0.2,"maximum":1,"example":0.5,"default":0.5},"memory":{"type":"number","format":"float","minimum":0.4,"maximum":1,"example":0.8,"default":0.8}},"required":["cpu","memory"],"additionalProperties":false,"description":"Request modifiers for jobs"},"builds":{"type":"object","properties":{"cpu":{"type":"number","format":"float","minimum":0.1,"maximum":1,"example":0.2,"default":0.2},"memory":{"type":"number","format":"float","minimum":0.1,"maximum":1,"example":0.5,"default":0.5}},"required":["cpu","memory"],"additionalProperties":false,"description":"Request modifiers for builds"},"addons":{"type":"object","properties":{"cpu":{"type":"number","format":"float","minimum":0.2,"maximum":1,"example":0.5,"default":0.5},"memory":{"type":"number","format":"float","minimum":0.4,"maximum":1,"example":0.8,"default":0.8}},"required":["cpu","memory"],"additionalProperties":false,"description":"Request modifiers for addons"}},"additionalProperties":false,"description":"Allows customising request modifier values."}},"additionalProperties":false},"restrictions":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Enable or disable BYOC restrictions for this entity"},"teams":{"type":"array","items":{"type":"object","properties":{"teamId":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":45,"description":"The ID of the team that has access to this BYOC cluster"}},"required":["teamId"]},"description":"List of teams that have access to this BYOC cluster","default":[]}},"required":["enabled"],"additionalProperties":false,"description":"BYOC restrictions configuration for controlling team access"},"gcp":{"type":"object","properties":{"networking":{"type":"object","properties":{"network":{"type":"string"},"subnetwork":{"type":"string"}},"additionalProperties":false},"enableAuthorizedIpRanges":{"type":"boolean"},"authorizedIpRanges":{"type":"array","items":{"type":"string","pattern":"^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\\/([0-9]|[1-2][0-9]|3[0-2]))$"}},"projectId":{"type":"string","pattern":"^[a-z][a-z0-9-]{4,28}[a-z0-9]$","description":"GCP Project ID"}},"additionalProperties":false,"description":"GCP specific data. Required when `provider` is `gcp`"},"aws":{"type":"object","properties":{"enablePublicAccessCidrs":{"type":"boolean"},"publicAccessCidrs":{"type":"array","items":{"type":"string","pattern":"^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\\/([0-9]|[1-2][0-9]|3[0-2]))$"}},"subnetConfiguration":{"type":"object","properties":{"mode":{"type":"string","enum":["default-subnets-for-azs","explicit-subnets"],"description":"The mode of the AWS subnet configuration"},"vpcId":{"type":"string","description":"Id of the VPC"},"subnets":{"type":"array","items":{"type":"string","example":"eu-west-1a"},"minItems":2,"description":"List of subnets the cluster should be created for. At least 2 must be specified."}},"required":["mode","subnets"],"additionalProperties":false},"vpcEgress":{"type":"boolean","description":"If egress traffic from the cluster should come from a single static egress IP."}},"additionalProperties":false,"description":"AWS specific data. Required when `provider` is `aws`."},"oci":{"type":"object","properties":{"vcnConfiguration":{"type":"object","properties":{"vcnId":{"type":"string"},"subnetIdForKubernetesApi":{"type":"string"},"subnetIdsForServiceLBs":{"type":"array","items":{"type":"string"}}},"required":["vcnId","subnetIdForKubernetesApi","subnetIdsForServiceLBs"],"additionalProperties":false}},"required":["vcnConfiguration"],"additionalProperties":false,"description":"OCI specific data. Required when `provider` is `oci`."},"azure":{"type":"object","properties":{"networking":{"type":"object","properties":{"vnetConfiguration":{"type":"object","properties":{"mode":{"type":"string","enum":["create-default","custom-vnet"],"description":"The vnet mode to use for this cluster. Use this to switch between creation of a new vnet per cluster or specifying a custom vnet."},"vnetId":{"type":"string","description":"Azure vnetId that should be used for this cluster. By default a new vnet will be created."}},"required":["mode"],"additionalProperties":false},"networkPluginMode":{"type":"string","enum":["overlay"],"description":"Optional setting to configure overlay mode on Azure."}},"additionalProperties":false},"enableAuthorizedIpRanges":{"type":"boolean"},"authorizedIpRanges":{"type":"array","items":{"type":"string","pattern":"^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\\/([0-9]|[1-2][0-9]|3[0-2]))$"}}},"additionalProperties":false,"description":"Azure specific data. Required when `provider` is `azure`."},"coreweave":{"type":"object","properties":{"zone":{"type":"string","description":"AZ of the cluster"},"network":{"type":"object","properties":{"networkMode":{"type":"string","enum":["create-default","custom"]},"vpcId":{"type":"string"},"customPrefixNames":{"type":"object","properties":{"podCidrName":{"type":"string"},"serviceCidrName":{"type":"string"},"internalLbCidrNames":{"type":"array","items":{"type":"string"},"minItems":1}},"required":["podCidrName","serviceCidrName","internalLbCidrNames"],"additionalProperties":false}},"required":["networkMode"],"additionalProperties":false,"description":"Network settings"}},"required":["zone"],"additionalProperties":false,"description":"CoreWeave specific data. Required when `provider` is `coreweave`."},"byok":{"type":"object","properties":{"nodePoolProviderIdLabel":{"type":"string"}},"required":["nodePoolProviderIdLabel"],"additionalProperties":false,"description":"BYOK specific data. Required when `provider` is `byok`."},"coordinates":{"type":"object","properties":{"latitude":{"type":"number","format":"float","minimum":-90,"maximum":90},"longitude":{"type":"number","format":"float","minimum":-180,"maximum":180}},"required":["latitude","longitude"],"additionalProperties":false,"description":"Geographic coordinates of the cluster. Optional, used for CDN geo-routing. Only applicable when `provider` is `byok`."}},"required":["name","provider","nodePools"],"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Account > Cloud > Clusters > Create","x-nf-supports-orgs":true,"x-nf-team-scoped":true,"x-nf-cli-command":["put","cloud","cluster"]},"v1-cloud-providers-clusters--clusterId--get":{"operationId":"getCloudProvidersClustersClusterid","summary":"Get cluster","description":"Get information about the given cluster","parameters":[{"name":"clusterId","type":"string","required":true,"description":"ID of the cluster","example":"gcp-cluster-1","in":"path","schema":{"name":"clusterId","type":"string","required":true,"description":"ID of the cluster","example":"gcp-cluster-1","in":"path"}}],"responses":{"200":{"description":"Details about the given cluster.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","description":"The ID of cluster","example":"gcp-cluster-1"},"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":20,"description":"The name of the cluster.","example":"GCP Cluster 1"},"entityType":{"type":"string","enum":["org","team"],"example":"team"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"The description of the cluster.","example":"This is a new cluster."},"provider":{"type":"string","enum":["aws","azure","civo","gcp","oci","cloudflare","coreweave","aiven","backblaze","akamai","byok"],"description":"Cloud provider to be used for the selected resource","example":"gcp"},"region":{"type":"string","description":"Region of the cluster. Can only be updated for BYOK clusters.","example":"europe-west2"},"status":{"type":"object","properties":{"state":{"type":"object","properties":{"state":{"type":"string","description":"Current state of the cluster.","example":"running"},"transitionTime":{"type":"string","format":"date-time","description":"Time of the last state transition."},"reason":{"type":"string","description":"The reason, given the cluster is in an error state."}},"required":["state"],"additionalProperties":false}},"additionalProperties":false},"kubernetesVersion":{"type":"string","description":"Deprecated: This field is no longer used, the version is now set by the platform.","example":"1.30"},"integrationId":{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","description":"Existing integration to use for this cluster.","example":"gcp-integration"},"storage":{"type":"object","properties":{"storageClasses":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"type":{"type":"string","enum":["storage-class","snapshot-class"]},"kubernetesName":{"type":"string"},"defaultSnapshotClass":{"type":"string"},"options":{"type":"object","properties":{"capabilities":{"type":"object","properties":{"expansion":{"type":"boolean","description":"Increasing volume size after provisioning."},"snapshot":{"type":"boolean","description":"Point in time snapshotting of volumes."}},"additionalProperties":false},"accessModes":{"type":"object","properties":{"ReadWriteOnce":{"type":"boolean","description":"Access mode where a volume is exclusively attached to a single pod at a time."},"ReadWriteMany":{"type":"boolean","description":"Access mode where a volume can be attached to multiple single pods at a time for read and write operations."}},"additionalProperties":false},"storageSize":{"type":"object","properties":{"minValidSize":{"type":"integer","minimum":1,"description":"Enforces a minimum storage size per addon or volume."},"maxValidSize":{"type":"integer","minimum":1,"description":"Enforces a maximum storage size per addon or volume."},"suggestedOptions":{"type":"array","items":{"type":"integer","minimum":1},"description":"Specific storage size options to suggest in the UI."}},"additionalProperties":false},"platform":{"type":"object","properties":{"supportedResources":{"type":"array","items":{"type":"string","enum":["addon","volume","build-cache"]}}},"additionalProperties":false}},"additionalProperties":false}},"required":["id","name","kubernetesName"],"additionalProperties":false},"uniqueItems":true},"snapshotClasses":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"kubernetesName":{"type":"string"}},"required":["id","name","kubernetesName"],"additionalProperties":false},"uniqueItems":true}},"additionalProperties":false},"nodePools":{"oneOf":[{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"(^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$)|(^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89ABab][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$)","minLength":3,"maxLength":63,"description":"ID of existing node pool. Must be passed when modifying existing node pools. Not relevant for new node pools","example":"6aa96121-0345-43ad-bade-af36d540c222"},"nodeType":{"type":"string","description":"Machine type to be used by the node pool.","example":"n2-standard-8"},"oci":{"type":"object","properties":{"ocpu":{"type":"integer","minimum":1},"memory":{"type":"integer","minimum":1}},"required":["ocpu","memory"],"additionalProperties":false,"description":"OCI instance specific settings. Must respect ratios as determined by the selected node type."},"gcp":{"type":"object","properties":{"enablePrivateNodes":{"type":"boolean","description":"Set this flag to disable public IP assignment for nodes in this node pool."}},"additionalProperties":false,"description":"GCP specific settings."},"azure":{"type":"object","properties":{"systemPool":{"type":"boolean","description":"When 'provider' is 'azure', at least one system node pool is required per cluster."},"enablePublicNodeIp":{"type":"boolean","description":"When 'provider' is 'azure', set this flag to use public node IPs."},"vnetSubnetId":{"type":"string","description":"ID of the vnet subnet to use."}},"additionalProperties":false,"description":"Azure specific settings."},"aws":{"type":"object","properties":{"launchTemplate":{"type":"object","properties":{"id":{"type":"string","description":"ID of the launch template to use."},"version":{"type":"integer","minimum":1,"description":"Version of the launch template that should be used."}},"required":["id","version"],"additionalProperties":false,"description":"Specify a launch template to use for this node pool. When using a launch template, the disk size selection on the node pool level will be ignored."}},"additionalProperties":false,"description":"AWS specific node pool settings."},"nodeCount":{"type":"integer","minimum":0,"maximum":250,"description":"Number of nodes to the node pool should be provisioned with.","example":3},"autoscaling":{"type":"object","properties":{"enabled":{"type":"boolean","example":true,"default":false},"min":{"type":"integer","minimum":0,"maximum":249,"example":0},"max":{"type":"integer","minimum":1,"maximum":250,"example":10}},"additionalProperties":false,"nullable":true,"description":"Auto scaling settings to use for the node pool. Requires that the cloud provider supports this feature."},"computeResources":{"type":"object","properties":{"gpu":{"type":"object","properties":{"type":{"type":"string","pattern":"[a-z0-9]","description":"GPU type associated with the node pool.","example":"h100"},"resources":{"type":"object","properties":{"memoryInfo":{"type":"object","properties":{"sizeInGiB":{"type":"number","format":"float","minimum":1,"description":"Memory amount of the GPU in Gib.","example":80}},"additionalProperties":false}},"additionalProperties":false},"count":{"type":"integer","minimum":1,"description":"Number of GPUs per node.","example":1},"timeslicing":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether or not to enable time-slicing on the GPU."},"numSlices":{"type":"number","format":"float","minimum":1,"description":"Sets the amount of slices per GPU, e.g. how many pods may be scheduled concurrently on each GPU."}},"additionalProperties":false,"description":"Time-slicing configuration object."}},"required":["type","resources","count"],"additionalProperties":false}},"additionalProperties":false},"preemptible":{"type":"boolean","description":"Configures node pool with preemptible / spot instances if enabled.","example":false,"default":false},"diskType":{"type":"string","description":"The disk type to use."},"diskSize":{"type":"integer","minimum":1,"description":"Disk size in GB","example":100},"availabilityZones":{"type":"array","items":{"type":"string"},"minItems":1,"maxItems":1,"description":"Zones in which the node pool should be provisioned."},"subnets":{"type":"array","items":{"type":"string"},"minItems":1,"maxItems":1,"description":"Subnets in which the node pool should be provisioned. Required if provider is `oci`."},"scheduling":{"type":"object","properties":{"allowJobs":{"type":"boolean","description":"Allow jobs to schedule to this node pool"},"onlyGpuJobs":{"type":"boolean","description":"Restrict job scheduling to jobs which have GPU resources configured. Only relevant for GPU node pools."},"allowServices":{"type":"boolean","description":"Allow services to schedule to this node pool"},"onlyGpuServices":{"type":"boolean","description":"Restrict service scheduling to services which have GPU resources configured. Only relevant for GPU node pools."},"allowAddons":{"type":"boolean","description":"Allow addons to schedule to this node pool"},"allowBuilds":{"type":"boolean","description":"Allow builds to schedule to this node pool"},"onlyGpuBuilds":{"type":"boolean","description":"Restrict build scheduling to builds which have GPU resources configured. Only relevant for GPU node pools."},"allowCeph":{"type":"boolean","description":"Allow the placement of Ceph pods"}},"additionalProperties":false,"description":"Define basic workload scheduling restrictions for this node pool"},"labels":{"type":"object","properties":{},"additionalProperties":false,"description":"Set of label keys and values that can be used for advanced scheduling in combination with resource tag scheduling rules."}},"required":["id","nodeType","nodeCount","diskSize"],"additionalProperties":false,"description":"Node pool configuration for BYOC clusters"},"minItems":1,"uniqueItems":true,"description":"An array of node pools for BYOC."},{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"(^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$)|(^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89ABab][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$)","minLength":3,"maxLength":63,"description":"ID of the node pool. Must be passed when modifying existing node pools. Not relevant for new node pools","example":"node-pool-1"},"providerId":{"type":"string","pattern":"(^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$)|(^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89ABab][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$)","minLength":3,"maxLength":63,"description":"ID which identifies kubernetes nodes as belonging to this pool.","example":"6aa96121-0345-43ad-bade-af36d540c222"},"computeResources":{"type":"object","properties":{"gpu":{"type":"object","properties":{"supported":{"type":"boolean","description":"Whether this node pool consists of GPU nodes ."},"type":{"type":"string","pattern":"[a-z0-9]","description":"GPU type associated with the node pool.","example":"h100"},"resources":{"type":"object","properties":{"memoryInfo":{"type":"object","properties":{"sizeInGiB":{"type":"number","format":"float","minimum":1,"description":"Memory amount of the GPU in Gib.","example":80}},"additionalProperties":false}},"additionalProperties":false},"mig":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether or not to enable Multi-Instance GPU (MIG)."},"partitions":{"type":"array","items":{"type":"string"},"description":"The partitions to configure on the GPU."}},"additionalProperties":false,"description":"Multi-Instance GPU (MIG). configuration object."},"timeslicing":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether or not to enable time-slicing on the GPU."},"numSlices":{"type":"number","format":"float","minimum":1,"description":"Sets the amount of slices per GPU, e.g. how many pods may be scheduled concurrently on each GPU."}},"additionalProperties":false,"description":"Time-slicing configuration object."},"count":{"type":"integer","minimum":1,"description":"Number of GPUs per node.","example":1}},"additionalProperties":false}},"additionalProperties":false},"defaultPool":{"type":"boolean","description":"Fallback pool to which nodes which do not match any defined node pool are assigned. Exactly one default pool is required."},"preemptible":{"type":"boolean","description":"Configures node pool with preemptible / spot instances if enabled.","example":false,"default":false},"scheduling":{"type":"object","properties":{"allowJobs":{"type":"boolean","description":"Allow jobs to schedule to this node pool"},"onlyGpuJobs":{"type":"boolean","description":"Restrict job scheduling to jobs which have GPU resources configured. Only relevant for GPU node pools."},"allowServices":{"type":"boolean","description":"Allow services to schedule to this node pool"},"onlyGpuServices":{"type":"boolean","description":"Restrict service scheduling to services which have GPU resources configured. Only relevant for GPU node pools."},"allowAddons":{"type":"boolean","description":"Allow addons to schedule to this node pool"},"allowBuilds":{"type":"boolean","description":"Allow builds to schedule to this node pool"},"onlyGpuBuilds":{"type":"boolean","description":"Restrict build scheduling to builds which have GPU resources configured. Only relevant for GPU node pools."},"allowCeph":{"type":"boolean","description":"Allow the placement of Ceph pods"}},"additionalProperties":false,"description":"Define basic workload scheduling restrictions for this node pool"},"platform":{"type":"object","properties":{"architecture":{"type":"string","enum":["amd64","arm64"],"description":"Platform architecture of the underlying node type.","example":"amd64"}},"additionalProperties":false},"labels":{"type":"object","properties":{},"additionalProperties":false,"description":"Set of label keys and values that can be used for advanced scheduling in combination with resource tag scheduling rules."}},"required":["id","providerId"],"additionalProperties":false,"description":"Node pool configuration for BYOK clusters"},"minItems":1,"uniqueItems":true,"description":"An array of node pools for BYOK."}],"description":"An array of node pools for BYOC or BYOK."},"settings":{"type":"object","properties":{"builds":{"type":"object","properties":{"mode":{"type":"string","enum":["paas","internal","build-cluster"]},"plan":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"Plan to use for builds if they are run on the cluster","example":"nf-compute-200"},"clusterId":{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","description":"Cluster to use for scheduling builds"},"caching":{"type":"object","properties":{"allow":{"type":"boolean","description":"Whether to allow local disk based caching for builds."},"storageClassName":{"type":"string","description":"Storage class used by default for local disk based caching."}},"additionalProperties":false,"description":"Cache settings for builds"}},"additionalProperties":false},"registry":{"type":"object","properties":{"mode":{"type":"string","enum":["paas","self-hosted"]},"registryId":{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","description":"Credentials to use for storing of images.","example":"my-registry-credentials"}},"additionalProperties":false},"logging":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["paas"]}},"additionalProperties":false,"description":"Logging via PaaS."},{"type":"object","properties":{"mode":{"type":"string","enum":["loki"]},"loki":{"type":"object","properties":{"storageType":{"type":"string","enum":["s3"]},"s3BucketName":{"type":"string"},"s3AccessKey":{"type":"string"},"s3SecretKey":{"type":"string"},"s3Region":{"type":"string"}},"required":["storageType","s3BucketName","s3AccessKey","s3SecretKey","s3Region"],"additionalProperties":false}},"required":["mode"],"additionalProperties":false,"description":"Logging via Loki (S3 storage)."},{"type":"object","properties":{"mode":{"type":"string","enum":["loki"]},"loki":{"type":"object","properties":{"storageType":{"type":"string","enum":["gcs"]},"gcsBucketName":{"type":"string"},"gcpIntegrationId":{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$"}},"required":["storageType","gcsBucketName","gcpIntegrationId"],"additionalProperties":false}},"required":["mode"],"additionalProperties":false,"description":"Logging via Loki (GCS storage)."}],"description":"Logging settings"},"networking":{"type":"object","properties":{"overlayNetwork":{"type":"boolean","description":"Whether overlay networking is enabled for this cluster."},"overlayCIDR":{"type":"string","pattern":"^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\\/([0-9]|[1-2][0-9]|3[0-2]))$","description":"CIDR range for the overlay network."}},"additionalProperties":false},"vanityDomains":{"type":"object","properties":{"apps":{"type":"object","properties":{"zoneName":{"type":"string"},"integrationId":{"type":"string"}},"required":["zoneName","integrationId"],"additionalProperties":false},"customDomains":{"type":"object","properties":{"zoneName":{"type":"string"},"integrationId":{"type":"string"}},"required":["zoneName","integrationId"],"additionalProperties":false},"loadBalancers":{"type":"object","properties":{"zoneName":{"type":"string"},"integrationId":{"type":"string"}},"required":["zoneName","integrationId"],"additionalProperties":false}},"additionalProperties":false},"infrastructure":{"type":"object","properties":{"workloads":{"type":"object","properties":{"runtimeClass":{"type":"string","enum":["none","gvisor","kata-clh","kata-qemu"]}},"additionalProperties":false,"description":"DEPRECATED: This field will be removed in the near future."},"builds":{"type":"object","properties":{"runtimeClass":{"type":"string","enum":["none","gvisor","kata-clh","kata-qemu"]}},"additionalProperties":false,"description":"DEPRECATED: This field will be removed in the near future."},"sandboxing":{"type":"object","properties":{"installGvisor":{"type":"boolean"},"installMicroVm":{"type":"boolean"},"defaultSandbox":{"type":"object","properties":{"builds":{"type":"string","enum":["none","gvisor","kata-clh","kata-qemu"]},"jobs":{"type":"string","enum":["none","gvisor","kata-clh","kata-qemu"]},"services":{"type":"string","enum":["none","gvisor","kata-clh","kata-qemu"]},"addons":{"type":"string","enum":["none","gvisor","kata-clh","kata-qemu"]}},"additionalProperties":false}},"additionalProperties":false},"installKata":{"type":"boolean","description":"DEPRECATED: This field will be removed in the near future."},"installGvisor":{"type":"boolean","description":"DEPRECATED: This field will be removed in the near future."},"cleanupVolumes":{"type":"boolean","default":true},"cleanupSnapshots":{"type":"boolean","default":true},"cephStorageProvider":{"type":"object","properties":{"enabled":{"type":"boolean","default":false},"resources":{"type":"object","properties":{"cpu":{"type":"number","format":"float","minimum":1,"maximum":20,"description":"Configure the CPU resources per Ceph replica"},"memory":{"type":"number","format":"float","minimum":4096,"maximum":40960,"description":"Configure the memory resources per Ceph replica"},"storage":{"type":"number","format":"float","minimum":102400,"maximum":5242880,"description":"Configure the data disk size per Ceph replica"}},"additionalProperties":false},"enableMultiReadWriteStorage":{"type":"boolean","description":"Configure Ceph to be enable use of multi read write storage for persistent volumes on the cluster."},"enableSingleReadWriteStorage":{"type":"boolean","description":"Configure Ceph to be used as default storage class for single read write storage. This will replace the default storage of the cloud provider."},"enableErasureCoding":{"type":"boolean","description":"Configure Ceph to be set up with erasure coding. This will be less fault tolerant but more cost effective."},"enableTopologyAwareScheduling":{"type":"boolean","description":"Configure Ceph to be set up with topology aware scheduling, enforcing deployment across multiple zones."}},"additionalProperties":false}},"additionalProperties":false},"requestModifiers":{"type":"object","properties":{"services":{"type":"object","properties":{"cpu":{"type":"number","format":"float","minimum":0.2,"maximum":1,"example":0.5,"default":0.5},"memory":{"type":"number","format":"float","minimum":0.4,"maximum":1,"example":0.8,"default":0.8}},"required":["cpu","memory"],"additionalProperties":false,"description":"Request modifiers for services"},"jobs":{"type":"object","properties":{"cpu":{"type":"number","format":"float","minimum":0.2,"maximum":1,"example":0.5,"default":0.5},"memory":{"type":"number","format":"float","minimum":0.4,"maximum":1,"example":0.8,"default":0.8}},"required":["cpu","memory"],"additionalProperties":false,"description":"Request modifiers for jobs"},"builds":{"type":"object","properties":{"cpu":{"type":"number","format":"float","minimum":0.1,"maximum":1,"example":0.2,"default":0.2},"memory":{"type":"number","format":"float","minimum":0.1,"maximum":1,"example":0.5,"default":0.5}},"required":["cpu","memory"],"additionalProperties":false,"description":"Request modifiers for builds"},"addons":{"type":"object","properties":{"cpu":{"type":"number","format":"float","minimum":0.2,"maximum":1,"example":0.5,"default":0.5},"memory":{"type":"number","format":"float","minimum":0.4,"maximum":1,"example":0.8,"default":0.8}},"required":["cpu","memory"],"additionalProperties":false,"description":"Request modifiers for addons"}},"additionalProperties":false,"description":"Allows customising request modifier values."}},"additionalProperties":false},"restrictions":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Enable or disable BYOC restrictions for this entity"},"teams":{"type":"array","items":{"type":"object","properties":{"teamId":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":45,"description":"The ID of the team that has access to this BYOC cluster"}},"required":["teamId"]},"description":"List of teams that have access to this BYOC cluster","default":[]}},"required":["enabled"],"additionalProperties":false,"description":"BYOC restrictions configuration for controlling team access"},"gcp":{"type":"object","properties":{"networking":{"type":"object","properties":{"network":{"type":"string"},"subnetwork":{"type":"string"}},"additionalProperties":false},"enableAuthorizedIpRanges":{"type":"boolean"},"authorizedIpRanges":{"type":"array","items":{"type":"string","pattern":"^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\\/([0-9]|[1-2][0-9]|3[0-2]))$"}},"projectId":{"type":"string","pattern":"^[a-z][a-z0-9-]{4,28}[a-z0-9]$","description":"GCP Project ID"}},"additionalProperties":false,"description":"GCP specific data. Required when `provider` is `gcp`"},"aws":{"type":"object","properties":{"enablePublicAccessCidrs":{"type":"boolean"},"publicAccessCidrs":{"type":"array","items":{"type":"string","pattern":"^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\\/([0-9]|[1-2][0-9]|3[0-2]))$"}},"subnetConfiguration":{"type":"object","properties":{"mode":{"type":"string","enum":["default-subnets-for-azs","explicit-subnets"],"description":"The mode of the AWS subnet configuration"},"vpcId":{"type":"string","description":"Id of the VPC"},"subnets":{"type":"array","items":{"type":"string","example":"eu-west-1a"},"minItems":2,"description":"List of subnets the cluster should be created for. At least 2 must be specified."}},"required":["mode","subnets"],"additionalProperties":false},"vpcEgress":{"type":"boolean","description":"If egress traffic from the cluster should come from a single static egress IP."}},"additionalProperties":false,"description":"AWS specific data. Required when `provider` is `aws`."},"oci":{"type":"object","properties":{"vcnConfiguration":{"type":"object","properties":{"vcnId":{"type":"string"},"subnetIdForKubernetesApi":{"type":"string"},"subnetIdsForServiceLBs":{"type":"array","items":{"type":"string"}}},"required":["vcnId","subnetIdForKubernetesApi","subnetIdsForServiceLBs"],"additionalProperties":false}},"required":["vcnConfiguration"],"additionalProperties":false,"description":"OCI specific data. Required when `provider` is `oci`."},"azure":{"type":"object","properties":{"networking":{"type":"object","properties":{"vnetConfiguration":{"type":"object","properties":{"mode":{"type":"string","enum":["create-default","custom-vnet"],"description":"The vnet mode to use for this cluster. Use this to switch between creation of a new vnet per cluster or specifying a custom vnet."},"vnetId":{"type":"string","description":"Azure vnetId that should be used for this cluster. By default a new vnet will be created."}},"required":["mode"],"additionalProperties":false},"networkPluginMode":{"type":"string","enum":["overlay"],"description":"Optional setting to configure overlay mode on Azure."}},"additionalProperties":false},"enableAuthorizedIpRanges":{"type":"boolean"},"authorizedIpRanges":{"type":"array","items":{"type":"string","pattern":"^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\\/([0-9]|[1-2][0-9]|3[0-2]))$"}}},"additionalProperties":false,"description":"Azure specific data. Required when `provider` is `azure`."},"coreweave":{"type":"object","properties":{"zone":{"type":"string","description":"AZ of the cluster"},"network":{"type":"object","properties":{"networkMode":{"type":"string","enum":["create-default","custom"]},"vpcId":{"type":"string"},"customPrefixNames":{"type":"object","properties":{"podCidrName":{"type":"string"},"serviceCidrName":{"type":"string"},"internalLbCidrNames":{"type":"array","items":{"type":"string"},"minItems":1}},"required":["podCidrName","serviceCidrName","internalLbCidrNames"],"additionalProperties":false}},"required":["networkMode"],"additionalProperties":false,"description":"Network settings"}},"required":["zone"],"additionalProperties":false,"description":"CoreWeave specific data. Required when `provider` is `coreweave`."},"byok":{"type":"object","properties":{"nodePoolProviderIdLabel":{"type":"string"}},"required":["nodePoolProviderIdLabel"],"additionalProperties":false,"description":"BYOK specific data. Required when `provider` is `byok`."},"coordinates":{"type":"object","properties":{"latitude":{"type":"number","format":"float","minimum":-90,"maximum":90},"longitude":{"type":"number","format":"float","minimum":-180,"maximum":180}},"required":["latitude","longitude"],"additionalProperties":false,"description":"Geographic coordinates of the cluster. Optional, used for CDN geo-routing. Only applicable when `provider` is `byok`."},"dns":{"type":"string","description":"Auto-generated dns identifier for this cluster.","example":"xxxxxxxxxx"},"updatedAt":{"type":"string","format":"date-time","description":"The time the cluster was last updated.","example":"2021-01-20T11:19:53.175Z"},"createdAt":{"type":"string","format":"date-time","description":"The time the cluster was created.","example":"2021-01-20T11:19:53.175Z"},"deletionRequested":{"type":"boolean","description":"Indicates if provider resource deletion has been requested.","example":false}},"required":["id","name","provider","nodePools","updatedAt","createdAt","deletionRequested"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Cloud Providers","org"],"security":[],"x-nf-permission-required":"Account > Cloud > Clusters > Read","x-nf-supports-orgs":true,"x-nf-team-scoped":true,"x-nf-org-scoped":true,"x-nf-cli-command":["get","cloud","cluster"]},"v1-cloud-providers-clusters--clusterId--get-team-scoped":{"operationId":"getCloudProvidersClustersClusterid","summary":"Get cluster","description":"Get information about the given cluster","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"clusterId","type":"string","required":true,"description":"ID of the cluster","example":"gcp-cluster-1","in":"path","schema":{"name":"clusterId","type":"string","required":true,"description":"ID of the cluster","example":"gcp-cluster-1","in":"path"}}],"responses":{"200":{"description":"Details about the given cluster.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","description":"The ID of cluster","example":"gcp-cluster-1"},"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":20,"description":"The name of the cluster.","example":"GCP Cluster 1"},"entityType":{"type":"string","enum":["org","team"],"example":"team"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"The description of the cluster.","example":"This is a new cluster."},"provider":{"type":"string","enum":["aws","azure","civo","gcp","oci","cloudflare","coreweave","aiven","backblaze","akamai","byok"],"description":"Cloud provider to be used for the selected resource","example":"gcp"},"region":{"type":"string","description":"Region of the cluster. Can only be updated for BYOK clusters.","example":"europe-west2"},"status":{"type":"object","properties":{"state":{"type":"object","properties":{"state":{"type":"string","description":"Current state of the cluster.","example":"running"},"transitionTime":{"type":"string","format":"date-time","description":"Time of the last state transition."},"reason":{"type":"string","description":"The reason, given the cluster is in an error state."}},"required":["state"],"additionalProperties":false}},"additionalProperties":false},"kubernetesVersion":{"type":"string","description":"Deprecated: This field is no longer used, the version is now set by the platform.","example":"1.30"},"integrationId":{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","description":"Existing integration to use for this cluster.","example":"gcp-integration"},"storage":{"type":"object","properties":{"storageClasses":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"type":{"type":"string","enum":["storage-class","snapshot-class"]},"kubernetesName":{"type":"string"},"defaultSnapshotClass":{"type":"string"},"options":{"type":"object","properties":{"capabilities":{"type":"object","properties":{"expansion":{"type":"boolean","description":"Increasing volume size after provisioning."},"snapshot":{"type":"boolean","description":"Point in time snapshotting of volumes."}},"additionalProperties":false},"accessModes":{"type":"object","properties":{"ReadWriteOnce":{"type":"boolean","description":"Access mode where a volume is exclusively attached to a single pod at a time."},"ReadWriteMany":{"type":"boolean","description":"Access mode where a volume can be attached to multiple single pods at a time for read and write operations."}},"additionalProperties":false},"storageSize":{"type":"object","properties":{"minValidSize":{"type":"integer","minimum":1,"description":"Enforces a minimum storage size per addon or volume."},"maxValidSize":{"type":"integer","minimum":1,"description":"Enforces a maximum storage size per addon or volume."},"suggestedOptions":{"type":"array","items":{"type":"integer","minimum":1},"description":"Specific storage size options to suggest in the UI."}},"additionalProperties":false},"platform":{"type":"object","properties":{"supportedResources":{"type":"array","items":{"type":"string","enum":["addon","volume","build-cache"]}}},"additionalProperties":false}},"additionalProperties":false}},"required":["id","name","kubernetesName"],"additionalProperties":false},"uniqueItems":true},"snapshotClasses":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"kubernetesName":{"type":"string"}},"required":["id","name","kubernetesName"],"additionalProperties":false},"uniqueItems":true}},"additionalProperties":false},"nodePools":{"oneOf":[{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"(^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$)|(^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89ABab][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$)","minLength":3,"maxLength":63,"description":"ID of existing node pool. Must be passed when modifying existing node pools. Not relevant for new node pools","example":"6aa96121-0345-43ad-bade-af36d540c222"},"nodeType":{"type":"string","description":"Machine type to be used by the node pool.","example":"n2-standard-8"},"oci":{"type":"object","properties":{"ocpu":{"type":"integer","minimum":1},"memory":{"type":"integer","minimum":1}},"required":["ocpu","memory"],"additionalProperties":false,"description":"OCI instance specific settings. Must respect ratios as determined by the selected node type."},"gcp":{"type":"object","properties":{"enablePrivateNodes":{"type":"boolean","description":"Set this flag to disable public IP assignment for nodes in this node pool."}},"additionalProperties":false,"description":"GCP specific settings."},"azure":{"type":"object","properties":{"systemPool":{"type":"boolean","description":"When 'provider' is 'azure', at least one system node pool is required per cluster."},"enablePublicNodeIp":{"type":"boolean","description":"When 'provider' is 'azure', set this flag to use public node IPs."},"vnetSubnetId":{"type":"string","description":"ID of the vnet subnet to use."}},"additionalProperties":false,"description":"Azure specific settings."},"aws":{"type":"object","properties":{"launchTemplate":{"type":"object","properties":{"id":{"type":"string","description":"ID of the launch template to use."},"version":{"type":"integer","minimum":1,"description":"Version of the launch template that should be used."}},"required":["id","version"],"additionalProperties":false,"description":"Specify a launch template to use for this node pool. When using a launch template, the disk size selection on the node pool level will be ignored."}},"additionalProperties":false,"description":"AWS specific node pool settings."},"nodeCount":{"type":"integer","minimum":0,"maximum":250,"description":"Number of nodes to the node pool should be provisioned with.","example":3},"autoscaling":{"type":"object","properties":{"enabled":{"type":"boolean","example":true,"default":false},"min":{"type":"integer","minimum":0,"maximum":249,"example":0},"max":{"type":"integer","minimum":1,"maximum":250,"example":10}},"additionalProperties":false,"nullable":true,"description":"Auto scaling settings to use for the node pool. Requires that the cloud provider supports this feature."},"computeResources":{"type":"object","properties":{"gpu":{"type":"object","properties":{"type":{"type":"string","pattern":"[a-z0-9]","description":"GPU type associated with the node pool.","example":"h100"},"resources":{"type":"object","properties":{"memoryInfo":{"type":"object","properties":{"sizeInGiB":{"type":"number","format":"float","minimum":1,"description":"Memory amount of the GPU in Gib.","example":80}},"additionalProperties":false}},"additionalProperties":false},"count":{"type":"integer","minimum":1,"description":"Number of GPUs per node.","example":1},"timeslicing":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether or not to enable time-slicing on the GPU."},"numSlices":{"type":"number","format":"float","minimum":1,"description":"Sets the amount of slices per GPU, e.g. how many pods may be scheduled concurrently on each GPU."}},"additionalProperties":false,"description":"Time-slicing configuration object."}},"required":["type","resources","count"],"additionalProperties":false}},"additionalProperties":false},"preemptible":{"type":"boolean","description":"Configures node pool with preemptible / spot instances if enabled.","example":false,"default":false},"diskType":{"type":"string","description":"The disk type to use."},"diskSize":{"type":"integer","minimum":1,"description":"Disk size in GB","example":100},"availabilityZones":{"type":"array","items":{"type":"string"},"minItems":1,"maxItems":1,"description":"Zones in which the node pool should be provisioned."},"subnets":{"type":"array","items":{"type":"string"},"minItems":1,"maxItems":1,"description":"Subnets in which the node pool should be provisioned. Required if provider is `oci`."},"scheduling":{"type":"object","properties":{"allowJobs":{"type":"boolean","description":"Allow jobs to schedule to this node pool"},"onlyGpuJobs":{"type":"boolean","description":"Restrict job scheduling to jobs which have GPU resources configured. Only relevant for GPU node pools."},"allowServices":{"type":"boolean","description":"Allow services to schedule to this node pool"},"onlyGpuServices":{"type":"boolean","description":"Restrict service scheduling to services which have GPU resources configured. Only relevant for GPU node pools."},"allowAddons":{"type":"boolean","description":"Allow addons to schedule to this node pool"},"allowBuilds":{"type":"boolean","description":"Allow builds to schedule to this node pool"},"onlyGpuBuilds":{"type":"boolean","description":"Restrict build scheduling to builds which have GPU resources configured. Only relevant for GPU node pools."},"allowCeph":{"type":"boolean","description":"Allow the placement of Ceph pods"}},"additionalProperties":false,"description":"Define basic workload scheduling restrictions for this node pool"},"labels":{"type":"object","properties":{},"additionalProperties":false,"description":"Set of label keys and values that can be used for advanced scheduling in combination with resource tag scheduling rules."}},"required":["id","nodeType","nodeCount","diskSize"],"additionalProperties":false,"description":"Node pool configuration for BYOC clusters"},"minItems":1,"uniqueItems":true,"description":"An array of node pools for BYOC."},{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"(^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$)|(^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89ABab][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$)","minLength":3,"maxLength":63,"description":"ID of the node pool. Must be passed when modifying existing node pools. Not relevant for new node pools","example":"node-pool-1"},"providerId":{"type":"string","pattern":"(^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$)|(^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89ABab][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$)","minLength":3,"maxLength":63,"description":"ID which identifies kubernetes nodes as belonging to this pool.","example":"6aa96121-0345-43ad-bade-af36d540c222"},"computeResources":{"type":"object","properties":{"gpu":{"type":"object","properties":{"supported":{"type":"boolean","description":"Whether this node pool consists of GPU nodes ."},"type":{"type":"string","pattern":"[a-z0-9]","description":"GPU type associated with the node pool.","example":"h100"},"resources":{"type":"object","properties":{"memoryInfo":{"type":"object","properties":{"sizeInGiB":{"type":"number","format":"float","minimum":1,"description":"Memory amount of the GPU in Gib.","example":80}},"additionalProperties":false}},"additionalProperties":false},"mig":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether or not to enable Multi-Instance GPU (MIG)."},"partitions":{"type":"array","items":{"type":"string"},"description":"The partitions to configure on the GPU."}},"additionalProperties":false,"description":"Multi-Instance GPU (MIG). configuration object."},"timeslicing":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether or not to enable time-slicing on the GPU."},"numSlices":{"type":"number","format":"float","minimum":1,"description":"Sets the amount of slices per GPU, e.g. how many pods may be scheduled concurrently on each GPU."}},"additionalProperties":false,"description":"Time-slicing configuration object."},"count":{"type":"integer","minimum":1,"description":"Number of GPUs per node.","example":1}},"additionalProperties":false}},"additionalProperties":false},"defaultPool":{"type":"boolean","description":"Fallback pool to which nodes which do not match any defined node pool are assigned. Exactly one default pool is required."},"preemptible":{"type":"boolean","description":"Configures node pool with preemptible / spot instances if enabled.","example":false,"default":false},"scheduling":{"type":"object","properties":{"allowJobs":{"type":"boolean","description":"Allow jobs to schedule to this node pool"},"onlyGpuJobs":{"type":"boolean","description":"Restrict job scheduling to jobs which have GPU resources configured. Only relevant for GPU node pools."},"allowServices":{"type":"boolean","description":"Allow services to schedule to this node pool"},"onlyGpuServices":{"type":"boolean","description":"Restrict service scheduling to services which have GPU resources configured. Only relevant for GPU node pools."},"allowAddons":{"type":"boolean","description":"Allow addons to schedule to this node pool"},"allowBuilds":{"type":"boolean","description":"Allow builds to schedule to this node pool"},"onlyGpuBuilds":{"type":"boolean","description":"Restrict build scheduling to builds which have GPU resources configured. Only relevant for GPU node pools."},"allowCeph":{"type":"boolean","description":"Allow the placement of Ceph pods"}},"additionalProperties":false,"description":"Define basic workload scheduling restrictions for this node pool"},"platform":{"type":"object","properties":{"architecture":{"type":"string","enum":["amd64","arm64"],"description":"Platform architecture of the underlying node type.","example":"amd64"}},"additionalProperties":false},"labels":{"type":"object","properties":{},"additionalProperties":false,"description":"Set of label keys and values that can be used for advanced scheduling in combination with resource tag scheduling rules."}},"required":["id","providerId"],"additionalProperties":false,"description":"Node pool configuration for BYOK clusters"},"minItems":1,"uniqueItems":true,"description":"An array of node pools for BYOK."}],"description":"An array of node pools for BYOC or BYOK."},"settings":{"type":"object","properties":{"builds":{"type":"object","properties":{"mode":{"type":"string","enum":["paas","internal","build-cluster"]},"plan":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"Plan to use for builds if they are run on the cluster","example":"nf-compute-200"},"clusterId":{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","description":"Cluster to use for scheduling builds"},"caching":{"type":"object","properties":{"allow":{"type":"boolean","description":"Whether to allow local disk based caching for builds."},"storageClassName":{"type":"string","description":"Storage class used by default for local disk based caching."}},"additionalProperties":false,"description":"Cache settings for builds"}},"additionalProperties":false},"registry":{"type":"object","properties":{"mode":{"type":"string","enum":["paas","self-hosted"]},"registryId":{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","description":"Credentials to use for storing of images.","example":"my-registry-credentials"}},"additionalProperties":false},"logging":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["paas"]}},"additionalProperties":false,"description":"Logging via PaaS."},{"type":"object","properties":{"mode":{"type":"string","enum":["loki"]},"loki":{"type":"object","properties":{"storageType":{"type":"string","enum":["s3"]},"s3BucketName":{"type":"string"},"s3AccessKey":{"type":"string"},"s3SecretKey":{"type":"string"},"s3Region":{"type":"string"}},"required":["storageType","s3BucketName","s3AccessKey","s3SecretKey","s3Region"],"additionalProperties":false}},"required":["mode"],"additionalProperties":false,"description":"Logging via Loki (S3 storage)."},{"type":"object","properties":{"mode":{"type":"string","enum":["loki"]},"loki":{"type":"object","properties":{"storageType":{"type":"string","enum":["gcs"]},"gcsBucketName":{"type":"string"},"gcpIntegrationId":{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$"}},"required":["storageType","gcsBucketName","gcpIntegrationId"],"additionalProperties":false}},"required":["mode"],"additionalProperties":false,"description":"Logging via Loki (GCS storage)."}],"description":"Logging settings"},"networking":{"type":"object","properties":{"overlayNetwork":{"type":"boolean","description":"Whether overlay networking is enabled for this cluster."},"overlayCIDR":{"type":"string","pattern":"^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\\/([0-9]|[1-2][0-9]|3[0-2]))$","description":"CIDR range for the overlay network."}},"additionalProperties":false},"vanityDomains":{"type":"object","properties":{"apps":{"type":"object","properties":{"zoneName":{"type":"string"},"integrationId":{"type":"string"}},"required":["zoneName","integrationId"],"additionalProperties":false},"customDomains":{"type":"object","properties":{"zoneName":{"type":"string"},"integrationId":{"type":"string"}},"required":["zoneName","integrationId"],"additionalProperties":false},"loadBalancers":{"type":"object","properties":{"zoneName":{"type":"string"},"integrationId":{"type":"string"}},"required":["zoneName","integrationId"],"additionalProperties":false}},"additionalProperties":false},"infrastructure":{"type":"object","properties":{"workloads":{"type":"object","properties":{"runtimeClass":{"type":"string","enum":["none","gvisor","kata-clh","kata-qemu"]}},"additionalProperties":false,"description":"DEPRECATED: This field will be removed in the near future."},"builds":{"type":"object","properties":{"runtimeClass":{"type":"string","enum":["none","gvisor","kata-clh","kata-qemu"]}},"additionalProperties":false,"description":"DEPRECATED: This field will be removed in the near future."},"sandboxing":{"type":"object","properties":{"installGvisor":{"type":"boolean"},"installMicroVm":{"type":"boolean"},"defaultSandbox":{"type":"object","properties":{"builds":{"type":"string","enum":["none","gvisor","kata-clh","kata-qemu"]},"jobs":{"type":"string","enum":["none","gvisor","kata-clh","kata-qemu"]},"services":{"type":"string","enum":["none","gvisor","kata-clh","kata-qemu"]},"addons":{"type":"string","enum":["none","gvisor","kata-clh","kata-qemu"]}},"additionalProperties":false}},"additionalProperties":false},"installKata":{"type":"boolean","description":"DEPRECATED: This field will be removed in the near future."},"installGvisor":{"type":"boolean","description":"DEPRECATED: This field will be removed in the near future."},"cleanupVolumes":{"type":"boolean","default":true},"cleanupSnapshots":{"type":"boolean","default":true},"cephStorageProvider":{"type":"object","properties":{"enabled":{"type":"boolean","default":false},"resources":{"type":"object","properties":{"cpu":{"type":"number","format":"float","minimum":1,"maximum":20,"description":"Configure the CPU resources per Ceph replica"},"memory":{"type":"number","format":"float","minimum":4096,"maximum":40960,"description":"Configure the memory resources per Ceph replica"},"storage":{"type":"number","format":"float","minimum":102400,"maximum":5242880,"description":"Configure the data disk size per Ceph replica"}},"additionalProperties":false},"enableMultiReadWriteStorage":{"type":"boolean","description":"Configure Ceph to be enable use of multi read write storage for persistent volumes on the cluster."},"enableSingleReadWriteStorage":{"type":"boolean","description":"Configure Ceph to be used as default storage class for single read write storage. This will replace the default storage of the cloud provider."},"enableErasureCoding":{"type":"boolean","description":"Configure Ceph to be set up with erasure coding. This will be less fault tolerant but more cost effective."},"enableTopologyAwareScheduling":{"type":"boolean","description":"Configure Ceph to be set up with topology aware scheduling, enforcing deployment across multiple zones."}},"additionalProperties":false}},"additionalProperties":false},"requestModifiers":{"type":"object","properties":{"services":{"type":"object","properties":{"cpu":{"type":"number","format":"float","minimum":0.2,"maximum":1,"example":0.5,"default":0.5},"memory":{"type":"number","format":"float","minimum":0.4,"maximum":1,"example":0.8,"default":0.8}},"required":["cpu","memory"],"additionalProperties":false,"description":"Request modifiers for services"},"jobs":{"type":"object","properties":{"cpu":{"type":"number","format":"float","minimum":0.2,"maximum":1,"example":0.5,"default":0.5},"memory":{"type":"number","format":"float","minimum":0.4,"maximum":1,"example":0.8,"default":0.8}},"required":["cpu","memory"],"additionalProperties":false,"description":"Request modifiers for jobs"},"builds":{"type":"object","properties":{"cpu":{"type":"number","format":"float","minimum":0.1,"maximum":1,"example":0.2,"default":0.2},"memory":{"type":"number","format":"float","minimum":0.1,"maximum":1,"example":0.5,"default":0.5}},"required":["cpu","memory"],"additionalProperties":false,"description":"Request modifiers for builds"},"addons":{"type":"object","properties":{"cpu":{"type":"number","format":"float","minimum":0.2,"maximum":1,"example":0.5,"default":0.5},"memory":{"type":"number","format":"float","minimum":0.4,"maximum":1,"example":0.8,"default":0.8}},"required":["cpu","memory"],"additionalProperties":false,"description":"Request modifiers for addons"}},"additionalProperties":false,"description":"Allows customising request modifier values."}},"additionalProperties":false},"restrictions":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Enable or disable BYOC restrictions for this entity"},"teams":{"type":"array","items":{"type":"object","properties":{"teamId":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":45,"description":"The ID of the team that has access to this BYOC cluster"}},"required":["teamId"]},"description":"List of teams that have access to this BYOC cluster","default":[]}},"required":["enabled"],"additionalProperties":false,"description":"BYOC restrictions configuration for controlling team access"},"gcp":{"type":"object","properties":{"networking":{"type":"object","properties":{"network":{"type":"string"},"subnetwork":{"type":"string"}},"additionalProperties":false},"enableAuthorizedIpRanges":{"type":"boolean"},"authorizedIpRanges":{"type":"array","items":{"type":"string","pattern":"^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\\/([0-9]|[1-2][0-9]|3[0-2]))$"}},"projectId":{"type":"string","pattern":"^[a-z][a-z0-9-]{4,28}[a-z0-9]$","description":"GCP Project ID"}},"additionalProperties":false,"description":"GCP specific data. Required when `provider` is `gcp`"},"aws":{"type":"object","properties":{"enablePublicAccessCidrs":{"type":"boolean"},"publicAccessCidrs":{"type":"array","items":{"type":"string","pattern":"^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\\/([0-9]|[1-2][0-9]|3[0-2]))$"}},"subnetConfiguration":{"type":"object","properties":{"mode":{"type":"string","enum":["default-subnets-for-azs","explicit-subnets"],"description":"The mode of the AWS subnet configuration"},"vpcId":{"type":"string","description":"Id of the VPC"},"subnets":{"type":"array","items":{"type":"string","example":"eu-west-1a"},"minItems":2,"description":"List of subnets the cluster should be created for. At least 2 must be specified."}},"required":["mode","subnets"],"additionalProperties":false},"vpcEgress":{"type":"boolean","description":"If egress traffic from the cluster should come from a single static egress IP."}},"additionalProperties":false,"description":"AWS specific data. Required when `provider` is `aws`."},"oci":{"type":"object","properties":{"vcnConfiguration":{"type":"object","properties":{"vcnId":{"type":"string"},"subnetIdForKubernetesApi":{"type":"string"},"subnetIdsForServiceLBs":{"type":"array","items":{"type":"string"}}},"required":["vcnId","subnetIdForKubernetesApi","subnetIdsForServiceLBs"],"additionalProperties":false}},"required":["vcnConfiguration"],"additionalProperties":false,"description":"OCI specific data. Required when `provider` is `oci`."},"azure":{"type":"object","properties":{"networking":{"type":"object","properties":{"vnetConfiguration":{"type":"object","properties":{"mode":{"type":"string","enum":["create-default","custom-vnet"],"description":"The vnet mode to use for this cluster. Use this to switch between creation of a new vnet per cluster or specifying a custom vnet."},"vnetId":{"type":"string","description":"Azure vnetId that should be used for this cluster. By default a new vnet will be created."}},"required":["mode"],"additionalProperties":false},"networkPluginMode":{"type":"string","enum":["overlay"],"description":"Optional setting to configure overlay mode on Azure."}},"additionalProperties":false},"enableAuthorizedIpRanges":{"type":"boolean"},"authorizedIpRanges":{"type":"array","items":{"type":"string","pattern":"^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\\/([0-9]|[1-2][0-9]|3[0-2]))$"}}},"additionalProperties":false,"description":"Azure specific data. Required when `provider` is `azure`."},"coreweave":{"type":"object","properties":{"zone":{"type":"string","description":"AZ of the cluster"},"network":{"type":"object","properties":{"networkMode":{"type":"string","enum":["create-default","custom"]},"vpcId":{"type":"string"},"customPrefixNames":{"type":"object","properties":{"podCidrName":{"type":"string"},"serviceCidrName":{"type":"string"},"internalLbCidrNames":{"type":"array","items":{"type":"string"},"minItems":1}},"required":["podCidrName","serviceCidrName","internalLbCidrNames"],"additionalProperties":false}},"required":["networkMode"],"additionalProperties":false,"description":"Network settings"}},"required":["zone"],"additionalProperties":false,"description":"CoreWeave specific data. Required when `provider` is `coreweave`."},"byok":{"type":"object","properties":{"nodePoolProviderIdLabel":{"type":"string"}},"required":["nodePoolProviderIdLabel"],"additionalProperties":false,"description":"BYOK specific data. Required when `provider` is `byok`."},"coordinates":{"type":"object","properties":{"latitude":{"type":"number","format":"float","minimum":-90,"maximum":90},"longitude":{"type":"number","format":"float","minimum":-180,"maximum":180}},"required":["latitude","longitude"],"additionalProperties":false,"description":"Geographic coordinates of the cluster. Optional, used for CDN geo-routing. Only applicable when `provider` is `byok`."},"dns":{"type":"string","description":"Auto-generated dns identifier for this cluster.","example":"xxxxxxxxxx"},"updatedAt":{"type":"string","format":"date-time","description":"The time the cluster was last updated.","example":"2021-01-20T11:19:53.175Z"},"createdAt":{"type":"string","format":"date-time","description":"The time the cluster was created.","example":"2021-01-20T11:19:53.175Z"},"deletionRequested":{"type":"boolean","description":"Indicates if provider resource deletion has been requested.","example":false}},"required":["id","name","provider","nodePools","updatedAt","createdAt","deletionRequested"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Cloud Providers","team"],"security":[],"x-nf-permission-required":"Account > Cloud > Clusters > Read","x-nf-supports-orgs":true,"x-nf-team-scoped":true,"x-nf-org-scoped":true,"x-nf-cli-command":["get","cloud","cluster"]},"v1-cloud-providers-clusters--clusterId--patch":{"operationId":"patchCloudProvidersClustersClusterid","summary":"Patch cluster","description":"Updates a cluster.","parameters":[{"name":"clusterId","type":"string","required":true,"description":"ID of the cluster","example":"gcp-cluster-1","in":"path","schema":{"name":"clusterId","type":"string","required":true,"description":"ID of the cluster","example":"gcp-cluster-1","in":"path"}}],"responses":{"200":{"description":"Details about the updated cluster.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","description":"The ID of cluster","example":"gcp-cluster-1"},"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":20,"description":"The name of the cluster.","example":"GCP Cluster 1"},"entityType":{"type":"string","enum":["org","team"],"example":"team"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"The description of the cluster.","example":"This is a new cluster."},"provider":{"type":"string","enum":["aws","azure","civo","gcp","oci","cloudflare","coreweave","aiven","backblaze","akamai","byok"],"description":"Cloud provider to be used for the selected resource","example":"gcp"},"region":{"type":"string","description":"Region of the cluster. Can only be updated for BYOK clusters.","example":"europe-west2"},"status":{"type":"object","properties":{"state":{"type":"object","properties":{"state":{"type":"string","description":"Current state of the cluster.","example":"running"},"transitionTime":{"type":"string","format":"date-time","description":"Time of the last state transition."},"reason":{"type":"string","description":"The reason, given the cluster is in an error state."}},"required":["state"],"additionalProperties":false}},"additionalProperties":false},"kubernetesVersion":{"type":"string","description":"Deprecated: This field is no longer used, the version is now set by the platform.","example":"1.30"},"integrationId":{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","description":"Existing integration to use for this cluster.","example":"gcp-integration"},"storage":{"type":"object","properties":{"storageClasses":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"type":{"type":"string","enum":["storage-class","snapshot-class"]},"kubernetesName":{"type":"string"},"defaultSnapshotClass":{"type":"string"},"options":{"type":"object","properties":{"capabilities":{"type":"object","properties":{"expansion":{"type":"boolean","description":"Increasing volume size after provisioning."},"snapshot":{"type":"boolean","description":"Point in time snapshotting of volumes."}},"additionalProperties":false},"accessModes":{"type":"object","properties":{"ReadWriteOnce":{"type":"boolean","description":"Access mode where a volume is exclusively attached to a single pod at a time."},"ReadWriteMany":{"type":"boolean","description":"Access mode where a volume can be attached to multiple single pods at a time for read and write operations."}},"additionalProperties":false},"storageSize":{"type":"object","properties":{"minValidSize":{"type":"integer","minimum":1,"description":"Enforces a minimum storage size per addon or volume."},"maxValidSize":{"type":"integer","minimum":1,"description":"Enforces a maximum storage size per addon or volume."},"suggestedOptions":{"type":"array","items":{"type":"integer","minimum":1},"description":"Specific storage size options to suggest in the UI."}},"additionalProperties":false},"platform":{"type":"object","properties":{"supportedResources":{"type":"array","items":{"type":"string","enum":["addon","volume","build-cache"]}}},"additionalProperties":false}},"additionalProperties":false}},"required":["id","name","kubernetesName"],"additionalProperties":false},"uniqueItems":true},"snapshotClasses":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"kubernetesName":{"type":"string"}},"required":["id","name","kubernetesName"],"additionalProperties":false},"uniqueItems":true}},"additionalProperties":false},"nodePools":{"oneOf":[{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"(^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$)|(^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89ABab][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$)","minLength":3,"maxLength":63,"description":"ID of existing node pool. Must be passed when modifying existing node pools. Not relevant for new node pools","example":"6aa96121-0345-43ad-bade-af36d540c222"},"nodeType":{"type":"string","description":"Machine type to be used by the node pool.","example":"n2-standard-8"},"oci":{"type":"object","properties":{"ocpu":{"type":"integer","minimum":1},"memory":{"type":"integer","minimum":1}},"required":["ocpu","memory"],"additionalProperties":false,"description":"OCI instance specific settings. Must respect ratios as determined by the selected node type."},"gcp":{"type":"object","properties":{"enablePrivateNodes":{"type":"boolean","description":"Set this flag to disable public IP assignment for nodes in this node pool."}},"additionalProperties":false,"description":"GCP specific settings."},"azure":{"type":"object","properties":{"systemPool":{"type":"boolean","description":"When 'provider' is 'azure', at least one system node pool is required per cluster."},"enablePublicNodeIp":{"type":"boolean","description":"When 'provider' is 'azure', set this flag to use public node IPs."},"vnetSubnetId":{"type":"string","description":"ID of the vnet subnet to use."}},"additionalProperties":false,"description":"Azure specific settings."},"aws":{"type":"object","properties":{"launchTemplate":{"type":"object","properties":{"id":{"type":"string","description":"ID of the launch template to use."},"version":{"type":"integer","minimum":1,"description":"Version of the launch template that should be used."}},"required":["id","version"],"additionalProperties":false,"description":"Specify a launch template to use for this node pool. When using a launch template, the disk size selection on the node pool level will be ignored."}},"additionalProperties":false,"description":"AWS specific node pool settings."},"nodeCount":{"type":"integer","minimum":0,"maximum":250,"description":"Number of nodes to the node pool should be provisioned with.","example":3},"autoscaling":{"type":"object","properties":{"enabled":{"type":"boolean","example":true,"default":false},"min":{"type":"integer","minimum":0,"maximum":249,"example":0},"max":{"type":"integer","minimum":1,"maximum":250,"example":10}},"additionalProperties":false,"nullable":true,"description":"Auto scaling settings to use for the node pool. Requires that the cloud provider supports this feature."},"computeResources":{"type":"object","properties":{"gpu":{"type":"object","properties":{"type":{"type":"string","pattern":"[a-z0-9]","description":"GPU type associated with the node pool.","example":"h100"},"resources":{"type":"object","properties":{"memoryInfo":{"type":"object","properties":{"sizeInGiB":{"type":"number","format":"float","minimum":1,"description":"Memory amount of the GPU in Gib.","example":80}},"additionalProperties":false}},"additionalProperties":false},"count":{"type":"integer","minimum":1,"description":"Number of GPUs per node.","example":1},"timeslicing":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether or not to enable time-slicing on the GPU."},"numSlices":{"type":"number","format":"float","minimum":1,"description":"Sets the amount of slices per GPU, e.g. how many pods may be scheduled concurrently on each GPU."}},"additionalProperties":false,"description":"Time-slicing configuration object."}},"required":["type","resources","count"],"additionalProperties":false}},"additionalProperties":false},"preemptible":{"type":"boolean","description":"Configures node pool with preemptible / spot instances if enabled.","example":false,"default":false},"diskType":{"type":"string","description":"The disk type to use."},"diskSize":{"type":"integer","minimum":1,"description":"Disk size in GB","example":100},"availabilityZones":{"type":"array","items":{"type":"string"},"minItems":1,"maxItems":1,"description":"Zones in which the node pool should be provisioned."},"subnets":{"type":"array","items":{"type":"string"},"minItems":1,"maxItems":1,"description":"Subnets in which the node pool should be provisioned. Required if provider is `oci`."},"scheduling":{"type":"object","properties":{"allowJobs":{"type":"boolean","description":"Allow jobs to schedule to this node pool"},"onlyGpuJobs":{"type":"boolean","description":"Restrict job scheduling to jobs which have GPU resources configured. Only relevant for GPU node pools."},"allowServices":{"type":"boolean","description":"Allow services to schedule to this node pool"},"onlyGpuServices":{"type":"boolean","description":"Restrict service scheduling to services which have GPU resources configured. Only relevant for GPU node pools."},"allowAddons":{"type":"boolean","description":"Allow addons to schedule to this node pool"},"allowBuilds":{"type":"boolean","description":"Allow builds to schedule to this node pool"},"onlyGpuBuilds":{"type":"boolean","description":"Restrict build scheduling to builds which have GPU resources configured. Only relevant for GPU node pools."},"allowCeph":{"type":"boolean","description":"Allow the placement of Ceph pods"}},"additionalProperties":false,"description":"Define basic workload scheduling restrictions for this node pool"},"labels":{"type":"object","properties":{},"additionalProperties":false,"description":"Set of label keys and values that can be used for advanced scheduling in combination with resource tag scheduling rules."}},"required":["id","nodeType","nodeCount","diskSize"],"additionalProperties":false,"description":"Node pool configuration for BYOC clusters"},"minItems":1,"uniqueItems":true,"description":"An array of node pools for BYOC."},{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"(^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$)|(^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89ABab][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$)","minLength":3,"maxLength":63,"description":"ID of the node pool. Must be passed when modifying existing node pools. Not relevant for new node pools","example":"node-pool-1"},"providerId":{"type":"string","pattern":"(^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$)|(^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89ABab][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$)","minLength":3,"maxLength":63,"description":"ID which identifies kubernetes nodes as belonging to this pool.","example":"6aa96121-0345-43ad-bade-af36d540c222"},"computeResources":{"type":"object","properties":{"gpu":{"type":"object","properties":{"supported":{"type":"boolean","description":"Whether this node pool consists of GPU nodes ."},"type":{"type":"string","pattern":"[a-z0-9]","description":"GPU type associated with the node pool.","example":"h100"},"resources":{"type":"object","properties":{"memoryInfo":{"type":"object","properties":{"sizeInGiB":{"type":"number","format":"float","minimum":1,"description":"Memory amount of the GPU in Gib.","example":80}},"additionalProperties":false}},"additionalProperties":false},"mig":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether or not to enable Multi-Instance GPU (MIG)."},"partitions":{"type":"array","items":{"type":"string"},"description":"The partitions to configure on the GPU."}},"additionalProperties":false,"description":"Multi-Instance GPU (MIG). configuration object."},"timeslicing":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether or not to enable time-slicing on the GPU."},"numSlices":{"type":"number","format":"float","minimum":1,"description":"Sets the amount of slices per GPU, e.g. how many pods may be scheduled concurrently on each GPU."}},"additionalProperties":false,"description":"Time-slicing configuration object."},"count":{"type":"integer","minimum":1,"description":"Number of GPUs per node.","example":1}},"additionalProperties":false}},"additionalProperties":false},"defaultPool":{"type":"boolean","description":"Fallback pool to which nodes which do not match any defined node pool are assigned. Exactly one default pool is required."},"preemptible":{"type":"boolean","description":"Configures node pool with preemptible / spot instances if enabled.","example":false,"default":false},"scheduling":{"type":"object","properties":{"allowJobs":{"type":"boolean","description":"Allow jobs to schedule to this node pool"},"onlyGpuJobs":{"type":"boolean","description":"Restrict job scheduling to jobs which have GPU resources configured. Only relevant for GPU node pools."},"allowServices":{"type":"boolean","description":"Allow services to schedule to this node pool"},"onlyGpuServices":{"type":"boolean","description":"Restrict service scheduling to services which have GPU resources configured. Only relevant for GPU node pools."},"allowAddons":{"type":"boolean","description":"Allow addons to schedule to this node pool"},"allowBuilds":{"type":"boolean","description":"Allow builds to schedule to this node pool"},"onlyGpuBuilds":{"type":"boolean","description":"Restrict build scheduling to builds which have GPU resources configured. Only relevant for GPU node pools."},"allowCeph":{"type":"boolean","description":"Allow the placement of Ceph pods"}},"additionalProperties":false,"description":"Define basic workload scheduling restrictions for this node pool"},"platform":{"type":"object","properties":{"architecture":{"type":"string","enum":["amd64","arm64"],"description":"Platform architecture of the underlying node type.","example":"amd64"}},"additionalProperties":false},"labels":{"type":"object","properties":{},"additionalProperties":false,"description":"Set of label keys and values that can be used for advanced scheduling in combination with resource tag scheduling rules."}},"required":["id","providerId"],"additionalProperties":false,"description":"Node pool configuration for BYOK clusters"},"minItems":1,"uniqueItems":true,"description":"An array of node pools for BYOK."}],"description":"An array of node pools for BYOC or BYOK."},"settings":{"type":"object","properties":{"builds":{"type":"object","properties":{"mode":{"type":"string","enum":["paas","internal","build-cluster"]},"plan":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"Plan to use for builds if they are run on the cluster","example":"nf-compute-200"},"clusterId":{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","description":"Cluster to use for scheduling builds"},"caching":{"type":"object","properties":{"allow":{"type":"boolean","description":"Whether to allow local disk based caching for builds."},"storageClassName":{"type":"string","description":"Storage class used by default for local disk based caching."}},"additionalProperties":false,"description":"Cache settings for builds"}},"additionalProperties":false},"registry":{"type":"object","properties":{"mode":{"type":"string","enum":["paas","self-hosted"]},"registryId":{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","description":"Credentials to use for storing of images.","example":"my-registry-credentials"}},"additionalProperties":false},"logging":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["paas"]}},"additionalProperties":false,"description":"Logging via PaaS."},{"type":"object","properties":{"mode":{"type":"string","enum":["loki"]},"loki":{"type":"object","properties":{"storageType":{"type":"string","enum":["s3"]},"s3BucketName":{"type":"string"},"s3AccessKey":{"type":"string"},"s3SecretKey":{"type":"string"},"s3Region":{"type":"string"}},"required":["storageType","s3BucketName","s3AccessKey","s3SecretKey","s3Region"],"additionalProperties":false}},"required":["mode"],"additionalProperties":false,"description":"Logging via Loki (S3 storage)."},{"type":"object","properties":{"mode":{"type":"string","enum":["loki"]},"loki":{"type":"object","properties":{"storageType":{"type":"string","enum":["gcs"]},"gcsBucketName":{"type":"string"},"gcpIntegrationId":{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$"}},"required":["storageType","gcsBucketName","gcpIntegrationId"],"additionalProperties":false}},"required":["mode"],"additionalProperties":false,"description":"Logging via Loki (GCS storage)."}],"description":"Logging settings"},"networking":{"type":"object","properties":{"overlayNetwork":{"type":"boolean","description":"Whether overlay networking is enabled for this cluster."},"overlayCIDR":{"type":"string","pattern":"^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\\/([0-9]|[1-2][0-9]|3[0-2]))$","description":"CIDR range for the overlay network."}},"additionalProperties":false},"vanityDomains":{"type":"object","properties":{"apps":{"type":"object","properties":{"zoneName":{"type":"string"},"integrationId":{"type":"string"}},"required":["zoneName","integrationId"],"additionalProperties":false},"customDomains":{"type":"object","properties":{"zoneName":{"type":"string"},"integrationId":{"type":"string"}},"required":["zoneName","integrationId"],"additionalProperties":false},"loadBalancers":{"type":"object","properties":{"zoneName":{"type":"string"},"integrationId":{"type":"string"}},"required":["zoneName","integrationId"],"additionalProperties":false}},"additionalProperties":false},"infrastructure":{"type":"object","properties":{"workloads":{"type":"object","properties":{"runtimeClass":{"type":"string","enum":["none","gvisor","kata-clh","kata-qemu"]}},"additionalProperties":false,"description":"DEPRECATED: This field will be removed in the near future."},"builds":{"type":"object","properties":{"runtimeClass":{"type":"string","enum":["none","gvisor","kata-clh","kata-qemu"]}},"additionalProperties":false,"description":"DEPRECATED: This field will be removed in the near future."},"sandboxing":{"type":"object","properties":{"installGvisor":{"type":"boolean"},"installMicroVm":{"type":"boolean"},"defaultSandbox":{"type":"object","properties":{"builds":{"type":"string","enum":["none","gvisor","kata-clh","kata-qemu"]},"jobs":{"type":"string","enum":["none","gvisor","kata-clh","kata-qemu"]},"services":{"type":"string","enum":["none","gvisor","kata-clh","kata-qemu"]},"addons":{"type":"string","enum":["none","gvisor","kata-clh","kata-qemu"]}},"additionalProperties":false}},"additionalProperties":false},"installKata":{"type":"boolean","description":"DEPRECATED: This field will be removed in the near future."},"installGvisor":{"type":"boolean","description":"DEPRECATED: This field will be removed in the near future."},"cleanupVolumes":{"type":"boolean","default":true},"cleanupSnapshots":{"type":"boolean","default":true},"cephStorageProvider":{"type":"object","properties":{"enabled":{"type":"boolean","default":false},"resources":{"type":"object","properties":{"cpu":{"type":"number","format":"float","minimum":1,"maximum":20,"description":"Configure the CPU resources per Ceph replica"},"memory":{"type":"number","format":"float","minimum":4096,"maximum":40960,"description":"Configure the memory resources per Ceph replica"},"storage":{"type":"number","format":"float","minimum":102400,"maximum":5242880,"description":"Configure the data disk size per Ceph replica"}},"additionalProperties":false},"enableMultiReadWriteStorage":{"type":"boolean","description":"Configure Ceph to be enable use of multi read write storage for persistent volumes on the cluster."},"enableSingleReadWriteStorage":{"type":"boolean","description":"Configure Ceph to be used as default storage class for single read write storage. This will replace the default storage of the cloud provider."},"enableErasureCoding":{"type":"boolean","description":"Configure Ceph to be set up with erasure coding. This will be less fault tolerant but more cost effective."},"enableTopologyAwareScheduling":{"type":"boolean","description":"Configure Ceph to be set up with topology aware scheduling, enforcing deployment across multiple zones."}},"additionalProperties":false}},"additionalProperties":false},"requestModifiers":{"type":"object","properties":{"services":{"type":"object","properties":{"cpu":{"type":"number","format":"float","minimum":0.2,"maximum":1,"example":0.5,"default":0.5},"memory":{"type":"number","format":"float","minimum":0.4,"maximum":1,"example":0.8,"default":0.8}},"required":["cpu","memory"],"additionalProperties":false,"description":"Request modifiers for services"},"jobs":{"type":"object","properties":{"cpu":{"type":"number","format":"float","minimum":0.2,"maximum":1,"example":0.5,"default":0.5},"memory":{"type":"number","format":"float","minimum":0.4,"maximum":1,"example":0.8,"default":0.8}},"required":["cpu","memory"],"additionalProperties":false,"description":"Request modifiers for jobs"},"builds":{"type":"object","properties":{"cpu":{"type":"number","format":"float","minimum":0.1,"maximum":1,"example":0.2,"default":0.2},"memory":{"type":"number","format":"float","minimum":0.1,"maximum":1,"example":0.5,"default":0.5}},"required":["cpu","memory"],"additionalProperties":false,"description":"Request modifiers for builds"},"addons":{"type":"object","properties":{"cpu":{"type":"number","format":"float","minimum":0.2,"maximum":1,"example":0.5,"default":0.5},"memory":{"type":"number","format":"float","minimum":0.4,"maximum":1,"example":0.8,"default":0.8}},"required":["cpu","memory"],"additionalProperties":false,"description":"Request modifiers for addons"}},"additionalProperties":false,"description":"Allows customising request modifier values."}},"additionalProperties":false},"restrictions":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Enable or disable BYOC restrictions for this entity"},"teams":{"type":"array","items":{"type":"object","properties":{"teamId":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":45,"description":"The ID of the team that has access to this BYOC cluster"}},"required":["teamId"]},"description":"List of teams that have access to this BYOC cluster","default":[]}},"required":["enabled"],"additionalProperties":false,"description":"BYOC restrictions configuration for controlling team access"},"gcp":{"type":"object","properties":{"networking":{"type":"object","properties":{"network":{"type":"string"},"subnetwork":{"type":"string"}},"additionalProperties":false},"enableAuthorizedIpRanges":{"type":"boolean"},"authorizedIpRanges":{"type":"array","items":{"type":"string","pattern":"^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\\/([0-9]|[1-2][0-9]|3[0-2]))$"}},"projectId":{"type":"string","pattern":"^[a-z][a-z0-9-]{4,28}[a-z0-9]$","description":"GCP Project ID"}},"additionalProperties":false,"description":"GCP specific data. Required when `provider` is `gcp`"},"aws":{"type":"object","properties":{"enablePublicAccessCidrs":{"type":"boolean"},"publicAccessCidrs":{"type":"array","items":{"type":"string","pattern":"^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\\/([0-9]|[1-2][0-9]|3[0-2]))$"}},"subnetConfiguration":{"type":"object","properties":{"mode":{"type":"string","enum":["default-subnets-for-azs","explicit-subnets"],"description":"The mode of the AWS subnet configuration"},"vpcId":{"type":"string","description":"Id of the VPC"},"subnets":{"type":"array","items":{"type":"string","example":"eu-west-1a"},"minItems":2,"description":"List of subnets the cluster should be created for. At least 2 must be specified."}},"required":["mode","subnets"],"additionalProperties":false},"vpcEgress":{"type":"boolean","description":"If egress traffic from the cluster should come from a single static egress IP."}},"additionalProperties":false,"description":"AWS specific data. Required when `provider` is `aws`."},"oci":{"type":"object","properties":{"vcnConfiguration":{"type":"object","properties":{"vcnId":{"type":"string"},"subnetIdForKubernetesApi":{"type":"string"},"subnetIdsForServiceLBs":{"type":"array","items":{"type":"string"}}},"required":["vcnId","subnetIdForKubernetesApi","subnetIdsForServiceLBs"],"additionalProperties":false}},"required":["vcnConfiguration"],"additionalProperties":false,"description":"OCI specific data. Required when `provider` is `oci`."},"azure":{"type":"object","properties":{"networking":{"type":"object","properties":{"vnetConfiguration":{"type":"object","properties":{"mode":{"type":"string","enum":["create-default","custom-vnet"],"description":"The vnet mode to use for this cluster. Use this to switch between creation of a new vnet per cluster or specifying a custom vnet."},"vnetId":{"type":"string","description":"Azure vnetId that should be used for this cluster. By default a new vnet will be created."}},"required":["mode"],"additionalProperties":false},"networkPluginMode":{"type":"string","enum":["overlay"],"description":"Optional setting to configure overlay mode on Azure."}},"additionalProperties":false},"enableAuthorizedIpRanges":{"type":"boolean"},"authorizedIpRanges":{"type":"array","items":{"type":"string","pattern":"^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\\/([0-9]|[1-2][0-9]|3[0-2]))$"}}},"additionalProperties":false,"description":"Azure specific data. Required when `provider` is `azure`."},"coreweave":{"type":"object","properties":{"zone":{"type":"string","description":"AZ of the cluster"},"network":{"type":"object","properties":{"networkMode":{"type":"string","enum":["create-default","custom"]},"vpcId":{"type":"string"},"customPrefixNames":{"type":"object","properties":{"podCidrName":{"type":"string"},"serviceCidrName":{"type":"string"},"internalLbCidrNames":{"type":"array","items":{"type":"string"},"minItems":1}},"required":["podCidrName","serviceCidrName","internalLbCidrNames"],"additionalProperties":false}},"required":["networkMode"],"additionalProperties":false,"description":"Network settings"}},"required":["zone"],"additionalProperties":false,"description":"CoreWeave specific data. Required when `provider` is `coreweave`."},"byok":{"type":"object","properties":{"nodePoolProviderIdLabel":{"type":"string"}},"required":["nodePoolProviderIdLabel"],"additionalProperties":false,"description":"BYOK specific data. Required when `provider` is `byok`."},"coordinates":{"type":"object","properties":{"latitude":{"type":"number","format":"float","minimum":-90,"maximum":90},"longitude":{"type":"number","format":"float","minimum":-180,"maximum":180}},"required":["latitude","longitude"],"additionalProperties":false,"description":"Geographic coordinates of the cluster. Optional, used for CDN geo-routing. Only applicable when `provider` is `byok`."},"dns":{"type":"string","description":"Auto-generated dns identifier for this cluster.","example":"xxxxxxxxxx"},"updatedAt":{"type":"string","format":"date-time","description":"The time the cluster was last updated.","example":"2021-01-20T11:19:53.175Z"},"createdAt":{"type":"string","format":"date-time","description":"The time the cluster was created.","example":"2021-01-20T11:19:53.175Z"},"deletionRequested":{"type":"boolean","description":"Indicates if provider resource deletion has been requested.","example":false}},"required":["id","name","provider","nodePools","updatedAt","createdAt","deletionRequested"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Cloud Providers"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":20,"description":"The name of the cluster.","example":"GCP Cluster 1"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"The description of the cluster.","example":"This is a new cluster."},"region":{"type":"string","description":"Region of the cluster. Can only be updated for BYOK clusters.","example":"europe-west2"},"kubernetesVersion":{"type":"string","description":"Deprecated: This field is no longer used, the version is now set by the platform.","example":"1.30"},"nodePools":{"oneOf":[{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"(^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$)|(^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89ABab][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$)","minLength":3,"maxLength":63,"description":"ID of existing node pool. Must be passed when modifying existing node pools. Not relevant for new node pools","example":"6aa96121-0345-43ad-bade-af36d540c222"},"nodeType":{"type":"string","description":"Machine type to be used by the node pool.","example":"n2-standard-8"},"oci":{"type":"object","properties":{"ocpu":{"type":"integer","minimum":1},"memory":{"type":"integer","minimum":1}},"required":["ocpu","memory"],"additionalProperties":false,"description":"OCI instance specific settings. Must respect ratios as determined by the selected node type."},"gcp":{"type":"object","properties":{"enablePrivateNodes":{"type":"boolean","description":"Set this flag to disable public IP assignment for nodes in this node pool."}},"additionalProperties":false,"description":"GCP specific settings."},"azure":{"type":"object","properties":{"systemPool":{"type":"boolean","description":"When 'provider' is 'azure', at least one system node pool is required per cluster."},"enablePublicNodeIp":{"type":"boolean","description":"When 'provider' is 'azure', set this flag to use public node IPs."},"vnetSubnetId":{"type":"string","description":"ID of the vnet subnet to use."}},"additionalProperties":false,"description":"Azure specific settings."},"aws":{"type":"object","properties":{"launchTemplate":{"type":"object","properties":{"id":{"type":"string","description":"ID of the launch template to use."},"version":{"type":"integer","minimum":1,"description":"Version of the launch template that should be used."}},"required":["id","version"],"additionalProperties":false,"description":"Specify a launch template to use for this node pool. When using a launch template, the disk size selection on the node pool level will be ignored."}},"additionalProperties":false,"description":"AWS specific node pool settings."},"nodeCount":{"type":"integer","minimum":0,"maximum":250,"description":"Number of nodes to the node pool should be provisioned with.","example":3},"autoscaling":{"type":"object","properties":{"enabled":{"type":"boolean","example":true,"default":false},"min":{"type":"integer","minimum":0,"maximum":249,"example":0},"max":{"type":"integer","minimum":1,"maximum":250,"example":10}},"additionalProperties":false,"nullable":true,"description":"Auto scaling settings to use for the node pool. Requires that the cloud provider supports this feature."},"computeResources":{"type":"object","properties":{"gpu":{"type":"object","properties":{"timeslicing":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether or not to enable time-slicing on the GPU."},"numSlices":{"type":"number","format":"float","minimum":1,"description":"Sets the amount of slices per GPU, e.g. how many pods may be scheduled concurrently on each GPU."}},"additionalProperties":false,"description":"Time-slicing configuration object."}},"additionalProperties":false}},"additionalProperties":false},"preemptible":{"type":"boolean","description":"Configures node pool with preemptible / spot instances if enabled.","example":false,"default":false},"diskType":{"type":"string","description":"The disk type to use."},"diskSize":{"type":"integer","minimum":1,"description":"Disk size in GB","example":100},"availabilityZones":{"type":"array","items":{"type":"string"},"minItems":1,"maxItems":1,"description":"Zones in which the node pool should be provisioned."},"subnets":{"type":"array","items":{"type":"string"},"minItems":1,"maxItems":1,"description":"Subnets in which the node pool should be provisioned. Required if provider is `oci`."},"scheduling":{"type":"object","properties":{"allowJobs":{"type":"boolean","description":"Allow jobs to schedule to this node pool"},"onlyGpuJobs":{"type":"boolean","description":"Restrict job scheduling to jobs which have GPU resources configured. Only relevant for GPU node pools."},"allowServices":{"type":"boolean","description":"Allow services to schedule to this node pool"},"onlyGpuServices":{"type":"boolean","description":"Restrict service scheduling to services which have GPU resources configured. Only relevant for GPU node pools."},"allowAddons":{"type":"boolean","description":"Allow addons to schedule to this node pool"},"allowBuilds":{"type":"boolean","description":"Allow builds to schedule to this node pool"},"onlyGpuBuilds":{"type":"boolean","description":"Restrict build scheduling to builds which have GPU resources configured. Only relevant for GPU node pools."},"allowCeph":{"type":"boolean","description":"Allow the placement of Ceph pods"}},"additionalProperties":false,"description":"Define basic workload scheduling restrictions for this node pool"},"labels":{"type":"object","properties":{},"additionalProperties":false,"description":"Set of label keys and values that can be used for advanced scheduling in combination with resource tag scheduling rules."}},"required":["id","nodeType","nodeCount","diskSize"],"additionalProperties":false,"description":"Node pool configuration for BYOC clusters"},"minItems":1,"uniqueItems":true,"description":"An array of node pools for BYOC."},{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"(^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$)|(^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89ABab][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$)","minLength":3,"maxLength":63,"description":"ID of the node pool. Must be passed when modifying existing node pools. Not relevant for new node pools","example":"node-pool-1"},"providerId":{"type":"string","pattern":"(^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$)|(^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89ABab][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$)","minLength":3,"maxLength":63,"description":"ID which identifies kubernetes nodes as belonging to this pool.","example":"6aa96121-0345-43ad-bade-af36d540c222"},"computeResources":{"type":"object","properties":{"gpu":{"type":"object","properties":{"supported":{"type":"boolean","description":"Whether this node pool consists of GPU nodes ."},"type":{"type":"string","pattern":"[a-z0-9]","description":"GPU type associated with the node pool.","example":"h100"},"resources":{"type":"object","properties":{"memoryInfo":{"type":"object","properties":{"sizeInGiB":{"type":"number","format":"float","minimum":1,"description":"Memory amount of the GPU in Gib.","example":80}},"additionalProperties":false}},"additionalProperties":false},"mig":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether or not to enable Multi-Instance GPU (MIG)."},"partitions":{"type":"array","items":{"type":"string"},"description":"The partitions to configure on the GPU."}},"additionalProperties":false,"description":"Multi-Instance GPU (MIG). configuration object."},"timeslicing":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether or not to enable time-slicing on the GPU."},"numSlices":{"type":"number","format":"float","minimum":1,"description":"Sets the amount of slices per GPU, e.g. how many pods may be scheduled concurrently on each GPU."}},"additionalProperties":false,"description":"Time-slicing configuration object."},"count":{"type":"integer","minimum":1,"description":"Number of GPUs per node.","example":1}},"additionalProperties":false}},"additionalProperties":false},"defaultPool":{"type":"boolean","description":"Fallback pool to which nodes which do not match any defined node pool are assigned. Exactly one default pool is required."},"preemptible":{"type":"boolean","description":"Configures node pool with preemptible / spot instances if enabled.","example":false,"default":false},"scheduling":{"type":"object","properties":{"allowJobs":{"type":"boolean","description":"Allow jobs to schedule to this node pool"},"onlyGpuJobs":{"type":"boolean","description":"Restrict job scheduling to jobs which have GPU resources configured. Only relevant for GPU node pools."},"allowServices":{"type":"boolean","description":"Allow services to schedule to this node pool"},"onlyGpuServices":{"type":"boolean","description":"Restrict service scheduling to services which have GPU resources configured. Only relevant for GPU node pools."},"allowAddons":{"type":"boolean","description":"Allow addons to schedule to this node pool"},"allowBuilds":{"type":"boolean","description":"Allow builds to schedule to this node pool"},"onlyGpuBuilds":{"type":"boolean","description":"Restrict build scheduling to builds which have GPU resources configured. Only relevant for GPU node pools."},"allowCeph":{"type":"boolean","description":"Allow the placement of Ceph pods"}},"additionalProperties":false,"description":"Define basic workload scheduling restrictions for this node pool"},"platform":{"type":"object","properties":{"architecture":{"type":"string","enum":["amd64","arm64"],"description":"Platform architecture of the underlying node type.","example":"amd64"}},"additionalProperties":false},"labels":{"type":"object","properties":{},"additionalProperties":false,"description":"Set of label keys and values that can be used for advanced scheduling in combination with resource tag scheduling rules."}},"required":["id","providerId"],"additionalProperties":false,"description":"Node pool configuration for BYOK clusters"},"minItems":1,"uniqueItems":true,"description":"An array of node pools for BYOK."}],"description":"An array of node pools for BYOC or BYOK."},"settings":{"type":"object","properties":{"builds":{"type":"object","properties":{"mode":{"type":"string","enum":["paas","internal","build-cluster"]},"plan":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"Plan to use for builds if they are run on the cluster","example":"nf-compute-200"},"clusterId":{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","description":"Cluster to use for scheduling builds"},"caching":{"type":"object","properties":{"allow":{"type":"boolean","description":"Whether to allow local disk based caching for builds."},"storageClassName":{"type":"string","description":"Storage class used by default for local disk based caching."}},"additionalProperties":false,"description":"Cache settings for builds"}},"additionalProperties":false},"registry":{"type":"object","properties":{"mode":{"type":"string","enum":["paas","self-hosted"]},"registryId":{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","description":"Credentials to use for storing of images.","example":"my-registry-credentials"}},"additionalProperties":false},"logging":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["paas"]}},"additionalProperties":false,"description":"Logging via PaaS."},{"type":"object","properties":{"mode":{"type":"string","enum":["loki"]},"loki":{"type":"object","properties":{"storageType":{"type":"string","enum":["s3"]},"s3BucketName":{"type":"string"},"s3AccessKey":{"type":"string"},"s3SecretKey":{"type":"string"},"s3Region":{"type":"string"}},"required":["storageType","s3BucketName","s3AccessKey","s3SecretKey","s3Region"],"additionalProperties":false}},"required":["mode"],"additionalProperties":false,"description":"Logging via Loki (S3 storage)."},{"type":"object","properties":{"mode":{"type":"string","enum":["loki"]},"loki":{"type":"object","properties":{"storageType":{"type":"string","enum":["gcs"]},"gcsBucketName":{"type":"string"},"gcpIntegrationId":{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$"}},"required":["storageType","gcsBucketName","gcpIntegrationId"],"additionalProperties":false}},"required":["mode"],"additionalProperties":false,"description":"Logging via Loki (GCS storage)."}],"description":"Logging settings"},"networking":{"type":"object","properties":{"overlayNetwork":{"type":"boolean","description":"Whether overlay networking is enabled for this cluster."},"overlayCIDR":{"type":"string","pattern":"^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\\/([0-9]|[1-2][0-9]|3[0-2]))$","description":"CIDR range for the overlay network."}},"additionalProperties":false},"vanityDomains":{"type":"object","properties":{"apps":{"type":"object","properties":{"zoneName":{"type":"string"},"integrationId":{"type":"string"}},"required":["zoneName","integrationId"],"additionalProperties":false},"customDomains":{"type":"object","properties":{"zoneName":{"type":"string"},"integrationId":{"type":"string"}},"required":["zoneName","integrationId"],"additionalProperties":false},"loadBalancers":{"type":"object","properties":{"zoneName":{"type":"string"},"integrationId":{"type":"string"}},"required":["zoneName","integrationId"],"additionalProperties":false}},"additionalProperties":false},"infrastructure":{"type":"object","properties":{"workloads":{"type":"object","properties":{"runtimeClass":{"type":"string","enum":["none","gvisor","kata-clh","kata-qemu"]}},"additionalProperties":false,"description":"DEPRECATED: This field will be removed in the near future."},"builds":{"type":"object","properties":{"runtimeClass":{"type":"string","enum":["none","gvisor","kata-clh","kata-qemu"]}},"additionalProperties":false,"description":"DEPRECATED: This field will be removed in the near future."},"sandboxing":{"type":"object","properties":{"installGvisor":{"type":"boolean"},"installMicroVm":{"type":"boolean"},"defaultSandbox":{"type":"object","properties":{"builds":{"type":"string","enum":["none","gvisor","kata-clh","kata-qemu"]},"jobs":{"type":"string","enum":["none","gvisor","kata-clh","kata-qemu"]},"services":{"type":"string","enum":["none","gvisor","kata-clh","kata-qemu"]},"addons":{"type":"string","enum":["none","gvisor","kata-clh","kata-qemu"]}},"additionalProperties":false}},"additionalProperties":false},"installKata":{"type":"boolean","description":"DEPRECATED: This field will be removed in the near future."},"installGvisor":{"type":"boolean","description":"DEPRECATED: This field will be removed in the near future."},"cleanupVolumes":{"type":"boolean","default":true},"cleanupSnapshots":{"type":"boolean","default":true},"cephStorageProvider":{"type":"object","properties":{"enabled":{"type":"boolean","default":false},"resources":{"type":"object","properties":{"cpu":{"type":"number","format":"float","minimum":1,"maximum":20,"description":"Configure the CPU resources per Ceph replica"},"memory":{"type":"number","format":"float","minimum":4096,"maximum":40960,"description":"Configure the memory resources per Ceph replica"},"storage":{"type":"number","format":"float","minimum":102400,"maximum":5242880,"description":"Configure the data disk size per Ceph replica"}},"additionalProperties":false},"enableMultiReadWriteStorage":{"type":"boolean","description":"Configure Ceph to be enable use of multi read write storage for persistent volumes on the cluster."},"enableSingleReadWriteStorage":{"type":"boolean","description":"Configure Ceph to be used as default storage class for single read write storage. This will replace the default storage of the cloud provider."},"enableErasureCoding":{"type":"boolean","description":"Configure Ceph to be set up with erasure coding. This will be less fault tolerant but more cost effective."},"enableTopologyAwareScheduling":{"type":"boolean","description":"Configure Ceph to be set up with topology aware scheduling, enforcing deployment across multiple zones."}},"additionalProperties":false}},"additionalProperties":false},"requestModifiers":{"type":"object","properties":{"services":{"type":"object","properties":{"cpu":{"type":"number","format":"float","minimum":0.2,"maximum":1,"example":0.5,"default":0.5},"memory":{"type":"number","format":"float","minimum":0.4,"maximum":1,"example":0.8,"default":0.8}},"required":["cpu","memory"],"additionalProperties":false,"description":"Request modifiers for services"},"jobs":{"type":"object","properties":{"cpu":{"type":"number","format":"float","minimum":0.2,"maximum":1,"example":0.5,"default":0.5},"memory":{"type":"number","format":"float","minimum":0.4,"maximum":1,"example":0.8,"default":0.8}},"required":["cpu","memory"],"additionalProperties":false,"description":"Request modifiers for jobs"},"builds":{"type":"object","properties":{"cpu":{"type":"number","format":"float","minimum":0.1,"maximum":1,"example":0.2,"default":0.2},"memory":{"type":"number","format":"float","minimum":0.1,"maximum":1,"example":0.5,"default":0.5}},"required":["cpu","memory"],"additionalProperties":false,"description":"Request modifiers for builds"},"addons":{"type":"object","properties":{"cpu":{"type":"number","format":"float","minimum":0.2,"maximum":1,"example":0.5,"default":0.5},"memory":{"type":"number","format":"float","minimum":0.4,"maximum":1,"example":0.8,"default":0.8}},"required":["cpu","memory"],"additionalProperties":false,"description":"Request modifiers for addons"}},"additionalProperties":false,"description":"Allows customising request modifier values."}},"additionalProperties":false},"restrictions":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Enable or disable BYOC restrictions for this entity"},"teams":{"type":"array","items":{"type":"object","properties":{"teamId":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":45,"description":"The ID of the team that has access to this BYOC cluster"}},"required":["teamId"]},"description":"List of teams that have access to this BYOC cluster","default":[]}},"required":["enabled"],"additionalProperties":false,"description":"BYOC restrictions configuration for controlling team access"},"gcp":{"type":"object","properties":{"networking":{"type":"object","properties":{"network":{"type":"string"},"subnetwork":{"type":"string"}},"additionalProperties":false},"enableAuthorizedIpRanges":{"type":"boolean"},"authorizedIpRanges":{"type":"array","items":{"type":"string","pattern":"^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\\/([0-9]|[1-2][0-9]|3[0-2]))$"}},"projectId":{"type":"string","pattern":"^[a-z][a-z0-9-]{4,28}[a-z0-9]$","description":"GCP Project ID"}},"additionalProperties":false,"description":"GCP specific data. Required when `provider` is `gcp`"},"aws":{"type":"object","properties":{"enablePublicAccessCidrs":{"type":"boolean"},"publicAccessCidrs":{"type":"array","items":{"type":"string","pattern":"^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\\/([0-9]|[1-2][0-9]|3[0-2]))$"}},"subnetConfiguration":{"type":"object","properties":{"mode":{"type":"string","enum":["default-subnets-for-azs","explicit-subnets"],"description":"The mode of the AWS subnet configuration"},"vpcId":{"type":"string","description":"Id of the VPC"},"subnets":{"type":"array","items":{"type":"string","example":"eu-west-1a"},"minItems":2,"description":"List of subnets the cluster should be created for. At least 2 must be specified."}},"required":["mode","subnets"],"additionalProperties":false},"vpcEgress":{"type":"boolean","description":"If egress traffic from the cluster should come from a single static egress IP."}},"additionalProperties":false,"description":"AWS specific data. Required when `provider` is `aws`."},"azure":{"type":"object","properties":{"networking":{"type":"object","properties":{"vnetConfiguration":{"type":"object","properties":{"mode":{"type":"string","enum":["create-default","custom-vnet"],"description":"The vnet mode to use for this cluster. Use this to switch between creation of a new vnet per cluster or specifying a custom vnet."},"vnetId":{"type":"string","description":"Azure vnetId that should be used for this cluster. By default a new vnet will be created."}},"required":["mode"],"additionalProperties":false},"networkPluginMode":{"type":"string","enum":["overlay"],"description":"Optional setting to configure overlay mode on Azure."}},"additionalProperties":false},"enableAuthorizedIpRanges":{"type":"boolean"},"authorizedIpRanges":{"type":"array","items":{"type":"string","pattern":"^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\\/([0-9]|[1-2][0-9]|3[0-2]))$"}}},"additionalProperties":false,"description":"Azure specific data. Required when `provider` is `azure`."},"byok":{"type":"object","properties":{"nodePoolProviderIdLabel":{"type":"string"}},"required":["nodePoolProviderIdLabel"],"additionalProperties":false,"description":"BYOK specific data. Required when `provider` is `byok`."},"coordinates":{"type":"object","properties":{"latitude":{"type":"number","format":"float","minimum":-90,"maximum":90},"longitude":{"type":"number","format":"float","minimum":-180,"maximum":180}},"required":["latitude","longitude"],"additionalProperties":false,"description":"Geographic coordinates of the cluster. Optional, used for CDN geo-routing. Only applicable when `provider` is `byok`."}},"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Account > Cloud > Clusters > Update","x-nf-supports-orgs":true,"x-nf-team-scoped":true,"x-nf-cli-command":["patch","cloud","cluster"]},"v1-cloud-providers-clusters--clusterId--patch-team-scoped":{"operationId":"patchCloudProvidersClustersClusterid","summary":"Patch cluster","description":"Updates a cluster.","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"clusterId","type":"string","required":true,"description":"ID of the cluster","example":"gcp-cluster-1","in":"path","schema":{"name":"clusterId","type":"string","required":true,"description":"ID of the cluster","example":"gcp-cluster-1","in":"path"}}],"responses":{"200":{"description":"Details about the updated cluster.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","description":"The ID of cluster","example":"gcp-cluster-1"},"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":20,"description":"The name of the cluster.","example":"GCP Cluster 1"},"entityType":{"type":"string","enum":["org","team"],"example":"team"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"The description of the cluster.","example":"This is a new cluster."},"provider":{"type":"string","enum":["aws","azure","civo","gcp","oci","cloudflare","coreweave","aiven","backblaze","akamai","byok"],"description":"Cloud provider to be used for the selected resource","example":"gcp"},"region":{"type":"string","description":"Region of the cluster. Can only be updated for BYOK clusters.","example":"europe-west2"},"status":{"type":"object","properties":{"state":{"type":"object","properties":{"state":{"type":"string","description":"Current state of the cluster.","example":"running"},"transitionTime":{"type":"string","format":"date-time","description":"Time of the last state transition."},"reason":{"type":"string","description":"The reason, given the cluster is in an error state."}},"required":["state"],"additionalProperties":false}},"additionalProperties":false},"kubernetesVersion":{"type":"string","description":"Deprecated: This field is no longer used, the version is now set by the platform.","example":"1.30"},"integrationId":{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","description":"Existing integration to use for this cluster.","example":"gcp-integration"},"storage":{"type":"object","properties":{"storageClasses":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"type":{"type":"string","enum":["storage-class","snapshot-class"]},"kubernetesName":{"type":"string"},"defaultSnapshotClass":{"type":"string"},"options":{"type":"object","properties":{"capabilities":{"type":"object","properties":{"expansion":{"type":"boolean","description":"Increasing volume size after provisioning."},"snapshot":{"type":"boolean","description":"Point in time snapshotting of volumes."}},"additionalProperties":false},"accessModes":{"type":"object","properties":{"ReadWriteOnce":{"type":"boolean","description":"Access mode where a volume is exclusively attached to a single pod at a time."},"ReadWriteMany":{"type":"boolean","description":"Access mode where a volume can be attached to multiple single pods at a time for read and write operations."}},"additionalProperties":false},"storageSize":{"type":"object","properties":{"minValidSize":{"type":"integer","minimum":1,"description":"Enforces a minimum storage size per addon or volume."},"maxValidSize":{"type":"integer","minimum":1,"description":"Enforces a maximum storage size per addon or volume."},"suggestedOptions":{"type":"array","items":{"type":"integer","minimum":1},"description":"Specific storage size options to suggest in the UI."}},"additionalProperties":false},"platform":{"type":"object","properties":{"supportedResources":{"type":"array","items":{"type":"string","enum":["addon","volume","build-cache"]}}},"additionalProperties":false}},"additionalProperties":false}},"required":["id","name","kubernetesName"],"additionalProperties":false},"uniqueItems":true},"snapshotClasses":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"kubernetesName":{"type":"string"}},"required":["id","name","kubernetesName"],"additionalProperties":false},"uniqueItems":true}},"additionalProperties":false},"nodePools":{"oneOf":[{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"(^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$)|(^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89ABab][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$)","minLength":3,"maxLength":63,"description":"ID of existing node pool. Must be passed when modifying existing node pools. Not relevant for new node pools","example":"6aa96121-0345-43ad-bade-af36d540c222"},"nodeType":{"type":"string","description":"Machine type to be used by the node pool.","example":"n2-standard-8"},"oci":{"type":"object","properties":{"ocpu":{"type":"integer","minimum":1},"memory":{"type":"integer","minimum":1}},"required":["ocpu","memory"],"additionalProperties":false,"description":"OCI instance specific settings. Must respect ratios as determined by the selected node type."},"gcp":{"type":"object","properties":{"enablePrivateNodes":{"type":"boolean","description":"Set this flag to disable public IP assignment for nodes in this node pool."}},"additionalProperties":false,"description":"GCP specific settings."},"azure":{"type":"object","properties":{"systemPool":{"type":"boolean","description":"When 'provider' is 'azure', at least one system node pool is required per cluster."},"enablePublicNodeIp":{"type":"boolean","description":"When 'provider' is 'azure', set this flag to use public node IPs."},"vnetSubnetId":{"type":"string","description":"ID of the vnet subnet to use."}},"additionalProperties":false,"description":"Azure specific settings."},"aws":{"type":"object","properties":{"launchTemplate":{"type":"object","properties":{"id":{"type":"string","description":"ID of the launch template to use."},"version":{"type":"integer","minimum":1,"description":"Version of the launch template that should be used."}},"required":["id","version"],"additionalProperties":false,"description":"Specify a launch template to use for this node pool. When using a launch template, the disk size selection on the node pool level will be ignored."}},"additionalProperties":false,"description":"AWS specific node pool settings."},"nodeCount":{"type":"integer","minimum":0,"maximum":250,"description":"Number of nodes to the node pool should be provisioned with.","example":3},"autoscaling":{"type":"object","properties":{"enabled":{"type":"boolean","example":true,"default":false},"min":{"type":"integer","minimum":0,"maximum":249,"example":0},"max":{"type":"integer","minimum":1,"maximum":250,"example":10}},"additionalProperties":false,"nullable":true,"description":"Auto scaling settings to use for the node pool. Requires that the cloud provider supports this feature."},"computeResources":{"type":"object","properties":{"gpu":{"type":"object","properties":{"type":{"type":"string","pattern":"[a-z0-9]","description":"GPU type associated with the node pool.","example":"h100"},"resources":{"type":"object","properties":{"memoryInfo":{"type":"object","properties":{"sizeInGiB":{"type":"number","format":"float","minimum":1,"description":"Memory amount of the GPU in Gib.","example":80}},"additionalProperties":false}},"additionalProperties":false},"count":{"type":"integer","minimum":1,"description":"Number of GPUs per node.","example":1},"timeslicing":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether or not to enable time-slicing on the GPU."},"numSlices":{"type":"number","format":"float","minimum":1,"description":"Sets the amount of slices per GPU, e.g. how many pods may be scheduled concurrently on each GPU."}},"additionalProperties":false,"description":"Time-slicing configuration object."}},"required":["type","resources","count"],"additionalProperties":false}},"additionalProperties":false},"preemptible":{"type":"boolean","description":"Configures node pool with preemptible / spot instances if enabled.","example":false,"default":false},"diskType":{"type":"string","description":"The disk type to use."},"diskSize":{"type":"integer","minimum":1,"description":"Disk size in GB","example":100},"availabilityZones":{"type":"array","items":{"type":"string"},"minItems":1,"maxItems":1,"description":"Zones in which the node pool should be provisioned."},"subnets":{"type":"array","items":{"type":"string"},"minItems":1,"maxItems":1,"description":"Subnets in which the node pool should be provisioned. Required if provider is `oci`."},"scheduling":{"type":"object","properties":{"allowJobs":{"type":"boolean","description":"Allow jobs to schedule to this node pool"},"onlyGpuJobs":{"type":"boolean","description":"Restrict job scheduling to jobs which have GPU resources configured. Only relevant for GPU node pools."},"allowServices":{"type":"boolean","description":"Allow services to schedule to this node pool"},"onlyGpuServices":{"type":"boolean","description":"Restrict service scheduling to services which have GPU resources configured. Only relevant for GPU node pools."},"allowAddons":{"type":"boolean","description":"Allow addons to schedule to this node pool"},"allowBuilds":{"type":"boolean","description":"Allow builds to schedule to this node pool"},"onlyGpuBuilds":{"type":"boolean","description":"Restrict build scheduling to builds which have GPU resources configured. Only relevant for GPU node pools."},"allowCeph":{"type":"boolean","description":"Allow the placement of Ceph pods"}},"additionalProperties":false,"description":"Define basic workload scheduling restrictions for this node pool"},"labels":{"type":"object","properties":{},"additionalProperties":false,"description":"Set of label keys and values that can be used for advanced scheduling in combination with resource tag scheduling rules."}},"required":["id","nodeType","nodeCount","diskSize"],"additionalProperties":false,"description":"Node pool configuration for BYOC clusters"},"minItems":1,"uniqueItems":true,"description":"An array of node pools for BYOC."},{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"(^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$)|(^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89ABab][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$)","minLength":3,"maxLength":63,"description":"ID of the node pool. Must be passed when modifying existing node pools. Not relevant for new node pools","example":"node-pool-1"},"providerId":{"type":"string","pattern":"(^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$)|(^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89ABab][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$)","minLength":3,"maxLength":63,"description":"ID which identifies kubernetes nodes as belonging to this pool.","example":"6aa96121-0345-43ad-bade-af36d540c222"},"computeResources":{"type":"object","properties":{"gpu":{"type":"object","properties":{"supported":{"type":"boolean","description":"Whether this node pool consists of GPU nodes ."},"type":{"type":"string","pattern":"[a-z0-9]","description":"GPU type associated with the node pool.","example":"h100"},"resources":{"type":"object","properties":{"memoryInfo":{"type":"object","properties":{"sizeInGiB":{"type":"number","format":"float","minimum":1,"description":"Memory amount of the GPU in Gib.","example":80}},"additionalProperties":false}},"additionalProperties":false},"mig":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether or not to enable Multi-Instance GPU (MIG)."},"partitions":{"type":"array","items":{"type":"string"},"description":"The partitions to configure on the GPU."}},"additionalProperties":false,"description":"Multi-Instance GPU (MIG). configuration object."},"timeslicing":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether or not to enable time-slicing on the GPU."},"numSlices":{"type":"number","format":"float","minimum":1,"description":"Sets the amount of slices per GPU, e.g. how many pods may be scheduled concurrently on each GPU."}},"additionalProperties":false,"description":"Time-slicing configuration object."},"count":{"type":"integer","minimum":1,"description":"Number of GPUs per node.","example":1}},"additionalProperties":false}},"additionalProperties":false},"defaultPool":{"type":"boolean","description":"Fallback pool to which nodes which do not match any defined node pool are assigned. Exactly one default pool is required."},"preemptible":{"type":"boolean","description":"Configures node pool with preemptible / spot instances if enabled.","example":false,"default":false},"scheduling":{"type":"object","properties":{"allowJobs":{"type":"boolean","description":"Allow jobs to schedule to this node pool"},"onlyGpuJobs":{"type":"boolean","description":"Restrict job scheduling to jobs which have GPU resources configured. Only relevant for GPU node pools."},"allowServices":{"type":"boolean","description":"Allow services to schedule to this node pool"},"onlyGpuServices":{"type":"boolean","description":"Restrict service scheduling to services which have GPU resources configured. Only relevant for GPU node pools."},"allowAddons":{"type":"boolean","description":"Allow addons to schedule to this node pool"},"allowBuilds":{"type":"boolean","description":"Allow builds to schedule to this node pool"},"onlyGpuBuilds":{"type":"boolean","description":"Restrict build scheduling to builds which have GPU resources configured. Only relevant for GPU node pools."},"allowCeph":{"type":"boolean","description":"Allow the placement of Ceph pods"}},"additionalProperties":false,"description":"Define basic workload scheduling restrictions for this node pool"},"platform":{"type":"object","properties":{"architecture":{"type":"string","enum":["amd64","arm64"],"description":"Platform architecture of the underlying node type.","example":"amd64"}},"additionalProperties":false},"labels":{"type":"object","properties":{},"additionalProperties":false,"description":"Set of label keys and values that can be used for advanced scheduling in combination with resource tag scheduling rules."}},"required":["id","providerId"],"additionalProperties":false,"description":"Node pool configuration for BYOK clusters"},"minItems":1,"uniqueItems":true,"description":"An array of node pools for BYOK."}],"description":"An array of node pools for BYOC or BYOK."},"settings":{"type":"object","properties":{"builds":{"type":"object","properties":{"mode":{"type":"string","enum":["paas","internal","build-cluster"]},"plan":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"Plan to use for builds if they are run on the cluster","example":"nf-compute-200"},"clusterId":{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","description":"Cluster to use for scheduling builds"},"caching":{"type":"object","properties":{"allow":{"type":"boolean","description":"Whether to allow local disk based caching for builds."},"storageClassName":{"type":"string","description":"Storage class used by default for local disk based caching."}},"additionalProperties":false,"description":"Cache settings for builds"}},"additionalProperties":false},"registry":{"type":"object","properties":{"mode":{"type":"string","enum":["paas","self-hosted"]},"registryId":{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","description":"Credentials to use for storing of images.","example":"my-registry-credentials"}},"additionalProperties":false},"logging":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["paas"]}},"additionalProperties":false,"description":"Logging via PaaS."},{"type":"object","properties":{"mode":{"type":"string","enum":["loki"]},"loki":{"type":"object","properties":{"storageType":{"type":"string","enum":["s3"]},"s3BucketName":{"type":"string"},"s3AccessKey":{"type":"string"},"s3SecretKey":{"type":"string"},"s3Region":{"type":"string"}},"required":["storageType","s3BucketName","s3AccessKey","s3SecretKey","s3Region"],"additionalProperties":false}},"required":["mode"],"additionalProperties":false,"description":"Logging via Loki (S3 storage)."},{"type":"object","properties":{"mode":{"type":"string","enum":["loki"]},"loki":{"type":"object","properties":{"storageType":{"type":"string","enum":["gcs"]},"gcsBucketName":{"type":"string"},"gcpIntegrationId":{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$"}},"required":["storageType","gcsBucketName","gcpIntegrationId"],"additionalProperties":false}},"required":["mode"],"additionalProperties":false,"description":"Logging via Loki (GCS storage)."}],"description":"Logging settings"},"networking":{"type":"object","properties":{"overlayNetwork":{"type":"boolean","description":"Whether overlay networking is enabled for this cluster."},"overlayCIDR":{"type":"string","pattern":"^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\\/([0-9]|[1-2][0-9]|3[0-2]))$","description":"CIDR range for the overlay network."}},"additionalProperties":false},"vanityDomains":{"type":"object","properties":{"apps":{"type":"object","properties":{"zoneName":{"type":"string"},"integrationId":{"type":"string"}},"required":["zoneName","integrationId"],"additionalProperties":false},"customDomains":{"type":"object","properties":{"zoneName":{"type":"string"},"integrationId":{"type":"string"}},"required":["zoneName","integrationId"],"additionalProperties":false},"loadBalancers":{"type":"object","properties":{"zoneName":{"type":"string"},"integrationId":{"type":"string"}},"required":["zoneName","integrationId"],"additionalProperties":false}},"additionalProperties":false},"infrastructure":{"type":"object","properties":{"workloads":{"type":"object","properties":{"runtimeClass":{"type":"string","enum":["none","gvisor","kata-clh","kata-qemu"]}},"additionalProperties":false,"description":"DEPRECATED: This field will be removed in the near future."},"builds":{"type":"object","properties":{"runtimeClass":{"type":"string","enum":["none","gvisor","kata-clh","kata-qemu"]}},"additionalProperties":false,"description":"DEPRECATED: This field will be removed in the near future."},"sandboxing":{"type":"object","properties":{"installGvisor":{"type":"boolean"},"installMicroVm":{"type":"boolean"},"defaultSandbox":{"type":"object","properties":{"builds":{"type":"string","enum":["none","gvisor","kata-clh","kata-qemu"]},"jobs":{"type":"string","enum":["none","gvisor","kata-clh","kata-qemu"]},"services":{"type":"string","enum":["none","gvisor","kata-clh","kata-qemu"]},"addons":{"type":"string","enum":["none","gvisor","kata-clh","kata-qemu"]}},"additionalProperties":false}},"additionalProperties":false},"installKata":{"type":"boolean","description":"DEPRECATED: This field will be removed in the near future."},"installGvisor":{"type":"boolean","description":"DEPRECATED: This field will be removed in the near future."},"cleanupVolumes":{"type":"boolean","default":true},"cleanupSnapshots":{"type":"boolean","default":true},"cephStorageProvider":{"type":"object","properties":{"enabled":{"type":"boolean","default":false},"resources":{"type":"object","properties":{"cpu":{"type":"number","format":"float","minimum":1,"maximum":20,"description":"Configure the CPU resources per Ceph replica"},"memory":{"type":"number","format":"float","minimum":4096,"maximum":40960,"description":"Configure the memory resources per Ceph replica"},"storage":{"type":"number","format":"float","minimum":102400,"maximum":5242880,"description":"Configure the data disk size per Ceph replica"}},"additionalProperties":false},"enableMultiReadWriteStorage":{"type":"boolean","description":"Configure Ceph to be enable use of multi read write storage for persistent volumes on the cluster."},"enableSingleReadWriteStorage":{"type":"boolean","description":"Configure Ceph to be used as default storage class for single read write storage. This will replace the default storage of the cloud provider."},"enableErasureCoding":{"type":"boolean","description":"Configure Ceph to be set up with erasure coding. This will be less fault tolerant but more cost effective."},"enableTopologyAwareScheduling":{"type":"boolean","description":"Configure Ceph to be set up with topology aware scheduling, enforcing deployment across multiple zones."}},"additionalProperties":false}},"additionalProperties":false},"requestModifiers":{"type":"object","properties":{"services":{"type":"object","properties":{"cpu":{"type":"number","format":"float","minimum":0.2,"maximum":1,"example":0.5,"default":0.5},"memory":{"type":"number","format":"float","minimum":0.4,"maximum":1,"example":0.8,"default":0.8}},"required":["cpu","memory"],"additionalProperties":false,"description":"Request modifiers for services"},"jobs":{"type":"object","properties":{"cpu":{"type":"number","format":"float","minimum":0.2,"maximum":1,"example":0.5,"default":0.5},"memory":{"type":"number","format":"float","minimum":0.4,"maximum":1,"example":0.8,"default":0.8}},"required":["cpu","memory"],"additionalProperties":false,"description":"Request modifiers for jobs"},"builds":{"type":"object","properties":{"cpu":{"type":"number","format":"float","minimum":0.1,"maximum":1,"example":0.2,"default":0.2},"memory":{"type":"number","format":"float","minimum":0.1,"maximum":1,"example":0.5,"default":0.5}},"required":["cpu","memory"],"additionalProperties":false,"description":"Request modifiers for builds"},"addons":{"type":"object","properties":{"cpu":{"type":"number","format":"float","minimum":0.2,"maximum":1,"example":0.5,"default":0.5},"memory":{"type":"number","format":"float","minimum":0.4,"maximum":1,"example":0.8,"default":0.8}},"required":["cpu","memory"],"additionalProperties":false,"description":"Request modifiers for addons"}},"additionalProperties":false,"description":"Allows customising request modifier values."}},"additionalProperties":false},"restrictions":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Enable or disable BYOC restrictions for this entity"},"teams":{"type":"array","items":{"type":"object","properties":{"teamId":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":45,"description":"The ID of the team that has access to this BYOC cluster"}},"required":["teamId"]},"description":"List of teams that have access to this BYOC cluster","default":[]}},"required":["enabled"],"additionalProperties":false,"description":"BYOC restrictions configuration for controlling team access"},"gcp":{"type":"object","properties":{"networking":{"type":"object","properties":{"network":{"type":"string"},"subnetwork":{"type":"string"}},"additionalProperties":false},"enableAuthorizedIpRanges":{"type":"boolean"},"authorizedIpRanges":{"type":"array","items":{"type":"string","pattern":"^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\\/([0-9]|[1-2][0-9]|3[0-2]))$"}},"projectId":{"type":"string","pattern":"^[a-z][a-z0-9-]{4,28}[a-z0-9]$","description":"GCP Project ID"}},"additionalProperties":false,"description":"GCP specific data. Required when `provider` is `gcp`"},"aws":{"type":"object","properties":{"enablePublicAccessCidrs":{"type":"boolean"},"publicAccessCidrs":{"type":"array","items":{"type":"string","pattern":"^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\\/([0-9]|[1-2][0-9]|3[0-2]))$"}},"subnetConfiguration":{"type":"object","properties":{"mode":{"type":"string","enum":["default-subnets-for-azs","explicit-subnets"],"description":"The mode of the AWS subnet configuration"},"vpcId":{"type":"string","description":"Id of the VPC"},"subnets":{"type":"array","items":{"type":"string","example":"eu-west-1a"},"minItems":2,"description":"List of subnets the cluster should be created for. At least 2 must be specified."}},"required":["mode","subnets"],"additionalProperties":false},"vpcEgress":{"type":"boolean","description":"If egress traffic from the cluster should come from a single static egress IP."}},"additionalProperties":false,"description":"AWS specific data. Required when `provider` is `aws`."},"oci":{"type":"object","properties":{"vcnConfiguration":{"type":"object","properties":{"vcnId":{"type":"string"},"subnetIdForKubernetesApi":{"type":"string"},"subnetIdsForServiceLBs":{"type":"array","items":{"type":"string"}}},"required":["vcnId","subnetIdForKubernetesApi","subnetIdsForServiceLBs"],"additionalProperties":false}},"required":["vcnConfiguration"],"additionalProperties":false,"description":"OCI specific data. Required when `provider` is `oci`."},"azure":{"type":"object","properties":{"networking":{"type":"object","properties":{"vnetConfiguration":{"type":"object","properties":{"mode":{"type":"string","enum":["create-default","custom-vnet"],"description":"The vnet mode to use for this cluster. Use this to switch between creation of a new vnet per cluster or specifying a custom vnet."},"vnetId":{"type":"string","description":"Azure vnetId that should be used for this cluster. By default a new vnet will be created."}},"required":["mode"],"additionalProperties":false},"networkPluginMode":{"type":"string","enum":["overlay"],"description":"Optional setting to configure overlay mode on Azure."}},"additionalProperties":false},"enableAuthorizedIpRanges":{"type":"boolean"},"authorizedIpRanges":{"type":"array","items":{"type":"string","pattern":"^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\\/([0-9]|[1-2][0-9]|3[0-2]))$"}}},"additionalProperties":false,"description":"Azure specific data. Required when `provider` is `azure`."},"coreweave":{"type":"object","properties":{"zone":{"type":"string","description":"AZ of the cluster"},"network":{"type":"object","properties":{"networkMode":{"type":"string","enum":["create-default","custom"]},"vpcId":{"type":"string"},"customPrefixNames":{"type":"object","properties":{"podCidrName":{"type":"string"},"serviceCidrName":{"type":"string"},"internalLbCidrNames":{"type":"array","items":{"type":"string"},"minItems":1}},"required":["podCidrName","serviceCidrName","internalLbCidrNames"],"additionalProperties":false}},"required":["networkMode"],"additionalProperties":false,"description":"Network settings"}},"required":["zone"],"additionalProperties":false,"description":"CoreWeave specific data. Required when `provider` is `coreweave`."},"byok":{"type":"object","properties":{"nodePoolProviderIdLabel":{"type":"string"}},"required":["nodePoolProviderIdLabel"],"additionalProperties":false,"description":"BYOK specific data. Required when `provider` is `byok`."},"coordinates":{"type":"object","properties":{"latitude":{"type":"number","format":"float","minimum":-90,"maximum":90},"longitude":{"type":"number","format":"float","minimum":-180,"maximum":180}},"required":["latitude","longitude"],"additionalProperties":false,"description":"Geographic coordinates of the cluster. Optional, used for CDN geo-routing. Only applicable when `provider` is `byok`."},"dns":{"type":"string","description":"Auto-generated dns identifier for this cluster.","example":"xxxxxxxxxx"},"updatedAt":{"type":"string","format":"date-time","description":"The time the cluster was last updated.","example":"2021-01-20T11:19:53.175Z"},"createdAt":{"type":"string","format":"date-time","description":"The time the cluster was created.","example":"2021-01-20T11:19:53.175Z"},"deletionRequested":{"type":"boolean","description":"Indicates if provider resource deletion has been requested.","example":false}},"required":["id","name","provider","nodePools","updatedAt","createdAt","deletionRequested"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Cloud Providers","team"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":20,"description":"The name of the cluster.","example":"GCP Cluster 1"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"The description of the cluster.","example":"This is a new cluster."},"region":{"type":"string","description":"Region of the cluster. Can only be updated for BYOK clusters.","example":"europe-west2"},"kubernetesVersion":{"type":"string","description":"Deprecated: This field is no longer used, the version is now set by the platform.","example":"1.30"},"nodePools":{"oneOf":[{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"(^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$)|(^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89ABab][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$)","minLength":3,"maxLength":63,"description":"ID of existing node pool. Must be passed when modifying existing node pools. Not relevant for new node pools","example":"6aa96121-0345-43ad-bade-af36d540c222"},"nodeType":{"type":"string","description":"Machine type to be used by the node pool.","example":"n2-standard-8"},"oci":{"type":"object","properties":{"ocpu":{"type":"integer","minimum":1},"memory":{"type":"integer","minimum":1}},"required":["ocpu","memory"],"additionalProperties":false,"description":"OCI instance specific settings. Must respect ratios as determined by the selected node type."},"gcp":{"type":"object","properties":{"enablePrivateNodes":{"type":"boolean","description":"Set this flag to disable public IP assignment for nodes in this node pool."}},"additionalProperties":false,"description":"GCP specific settings."},"azure":{"type":"object","properties":{"systemPool":{"type":"boolean","description":"When 'provider' is 'azure', at least one system node pool is required per cluster."},"enablePublicNodeIp":{"type":"boolean","description":"When 'provider' is 'azure', set this flag to use public node IPs."},"vnetSubnetId":{"type":"string","description":"ID of the vnet subnet to use."}},"additionalProperties":false,"description":"Azure specific settings."},"aws":{"type":"object","properties":{"launchTemplate":{"type":"object","properties":{"id":{"type":"string","description":"ID of the launch template to use."},"version":{"type":"integer","minimum":1,"description":"Version of the launch template that should be used."}},"required":["id","version"],"additionalProperties":false,"description":"Specify a launch template to use for this node pool. When using a launch template, the disk size selection on the node pool level will be ignored."}},"additionalProperties":false,"description":"AWS specific node pool settings."},"nodeCount":{"type":"integer","minimum":0,"maximum":250,"description":"Number of nodes to the node pool should be provisioned with.","example":3},"autoscaling":{"type":"object","properties":{"enabled":{"type":"boolean","example":true,"default":false},"min":{"type":"integer","minimum":0,"maximum":249,"example":0},"max":{"type":"integer","minimum":1,"maximum":250,"example":10}},"additionalProperties":false,"nullable":true,"description":"Auto scaling settings to use for the node pool. Requires that the cloud provider supports this feature."},"computeResources":{"type":"object","properties":{"gpu":{"type":"object","properties":{"timeslicing":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether or not to enable time-slicing on the GPU."},"numSlices":{"type":"number","format":"float","minimum":1,"description":"Sets the amount of slices per GPU, e.g. how many pods may be scheduled concurrently on each GPU."}},"additionalProperties":false,"description":"Time-slicing configuration object."}},"additionalProperties":false}},"additionalProperties":false},"preemptible":{"type":"boolean","description":"Configures node pool with preemptible / spot instances if enabled.","example":false,"default":false},"diskType":{"type":"string","description":"The disk type to use."},"diskSize":{"type":"integer","minimum":1,"description":"Disk size in GB","example":100},"availabilityZones":{"type":"array","items":{"type":"string"},"minItems":1,"maxItems":1,"description":"Zones in which the node pool should be provisioned."},"subnets":{"type":"array","items":{"type":"string"},"minItems":1,"maxItems":1,"description":"Subnets in which the node pool should be provisioned. Required if provider is `oci`."},"scheduling":{"type":"object","properties":{"allowJobs":{"type":"boolean","description":"Allow jobs to schedule to this node pool"},"onlyGpuJobs":{"type":"boolean","description":"Restrict job scheduling to jobs which have GPU resources configured. Only relevant for GPU node pools."},"allowServices":{"type":"boolean","description":"Allow services to schedule to this node pool"},"onlyGpuServices":{"type":"boolean","description":"Restrict service scheduling to services which have GPU resources configured. Only relevant for GPU node pools."},"allowAddons":{"type":"boolean","description":"Allow addons to schedule to this node pool"},"allowBuilds":{"type":"boolean","description":"Allow builds to schedule to this node pool"},"onlyGpuBuilds":{"type":"boolean","description":"Restrict build scheduling to builds which have GPU resources configured. Only relevant for GPU node pools."},"allowCeph":{"type":"boolean","description":"Allow the placement of Ceph pods"}},"additionalProperties":false,"description":"Define basic workload scheduling restrictions for this node pool"},"labels":{"type":"object","properties":{},"additionalProperties":false,"description":"Set of label keys and values that can be used for advanced scheduling in combination with resource tag scheduling rules."}},"required":["id","nodeType","nodeCount","diskSize"],"additionalProperties":false,"description":"Node pool configuration for BYOC clusters"},"minItems":1,"uniqueItems":true,"description":"An array of node pools for BYOC."},{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"(^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$)|(^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89ABab][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$)","minLength":3,"maxLength":63,"description":"ID of the node pool. Must be passed when modifying existing node pools. Not relevant for new node pools","example":"node-pool-1"},"providerId":{"type":"string","pattern":"(^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$)|(^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89ABab][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$)","minLength":3,"maxLength":63,"description":"ID which identifies kubernetes nodes as belonging to this pool.","example":"6aa96121-0345-43ad-bade-af36d540c222"},"computeResources":{"type":"object","properties":{"gpu":{"type":"object","properties":{"supported":{"type":"boolean","description":"Whether this node pool consists of GPU nodes ."},"type":{"type":"string","pattern":"[a-z0-9]","description":"GPU type associated with the node pool.","example":"h100"},"resources":{"type":"object","properties":{"memoryInfo":{"type":"object","properties":{"sizeInGiB":{"type":"number","format":"float","minimum":1,"description":"Memory amount of the GPU in Gib.","example":80}},"additionalProperties":false}},"additionalProperties":false},"mig":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether or not to enable Multi-Instance GPU (MIG)."},"partitions":{"type":"array","items":{"type":"string"},"description":"The partitions to configure on the GPU."}},"additionalProperties":false,"description":"Multi-Instance GPU (MIG). configuration object."},"timeslicing":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether or not to enable time-slicing on the GPU."},"numSlices":{"type":"number","format":"float","minimum":1,"description":"Sets the amount of slices per GPU, e.g. how many pods may be scheduled concurrently on each GPU."}},"additionalProperties":false,"description":"Time-slicing configuration object."},"count":{"type":"integer","minimum":1,"description":"Number of GPUs per node.","example":1}},"additionalProperties":false}},"additionalProperties":false},"defaultPool":{"type":"boolean","description":"Fallback pool to which nodes which do not match any defined node pool are assigned. Exactly one default pool is required."},"preemptible":{"type":"boolean","description":"Configures node pool with preemptible / spot instances if enabled.","example":false,"default":false},"scheduling":{"type":"object","properties":{"allowJobs":{"type":"boolean","description":"Allow jobs to schedule to this node pool"},"onlyGpuJobs":{"type":"boolean","description":"Restrict job scheduling to jobs which have GPU resources configured. Only relevant for GPU node pools."},"allowServices":{"type":"boolean","description":"Allow services to schedule to this node pool"},"onlyGpuServices":{"type":"boolean","description":"Restrict service scheduling to services which have GPU resources configured. Only relevant for GPU node pools."},"allowAddons":{"type":"boolean","description":"Allow addons to schedule to this node pool"},"allowBuilds":{"type":"boolean","description":"Allow builds to schedule to this node pool"},"onlyGpuBuilds":{"type":"boolean","description":"Restrict build scheduling to builds which have GPU resources configured. Only relevant for GPU node pools."},"allowCeph":{"type":"boolean","description":"Allow the placement of Ceph pods"}},"additionalProperties":false,"description":"Define basic workload scheduling restrictions for this node pool"},"platform":{"type":"object","properties":{"architecture":{"type":"string","enum":["amd64","arm64"],"description":"Platform architecture of the underlying node type.","example":"amd64"}},"additionalProperties":false},"labels":{"type":"object","properties":{},"additionalProperties":false,"description":"Set of label keys and values that can be used for advanced scheduling in combination with resource tag scheduling rules."}},"required":["id","providerId"],"additionalProperties":false,"description":"Node pool configuration for BYOK clusters"},"minItems":1,"uniqueItems":true,"description":"An array of node pools for BYOK."}],"description":"An array of node pools for BYOC or BYOK."},"settings":{"type":"object","properties":{"builds":{"type":"object","properties":{"mode":{"type":"string","enum":["paas","internal","build-cluster"]},"plan":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"Plan to use for builds if they are run on the cluster","example":"nf-compute-200"},"clusterId":{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","description":"Cluster to use for scheduling builds"},"caching":{"type":"object","properties":{"allow":{"type":"boolean","description":"Whether to allow local disk based caching for builds."},"storageClassName":{"type":"string","description":"Storage class used by default for local disk based caching."}},"additionalProperties":false,"description":"Cache settings for builds"}},"additionalProperties":false},"registry":{"type":"object","properties":{"mode":{"type":"string","enum":["paas","self-hosted"]},"registryId":{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","description":"Credentials to use for storing of images.","example":"my-registry-credentials"}},"additionalProperties":false},"logging":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["paas"]}},"additionalProperties":false,"description":"Logging via PaaS."},{"type":"object","properties":{"mode":{"type":"string","enum":["loki"]},"loki":{"type":"object","properties":{"storageType":{"type":"string","enum":["s3"]},"s3BucketName":{"type":"string"},"s3AccessKey":{"type":"string"},"s3SecretKey":{"type":"string"},"s3Region":{"type":"string"}},"required":["storageType","s3BucketName","s3AccessKey","s3SecretKey","s3Region"],"additionalProperties":false}},"required":["mode"],"additionalProperties":false,"description":"Logging via Loki (S3 storage)."},{"type":"object","properties":{"mode":{"type":"string","enum":["loki"]},"loki":{"type":"object","properties":{"storageType":{"type":"string","enum":["gcs"]},"gcsBucketName":{"type":"string"},"gcpIntegrationId":{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$"}},"required":["storageType","gcsBucketName","gcpIntegrationId"],"additionalProperties":false}},"required":["mode"],"additionalProperties":false,"description":"Logging via Loki (GCS storage)."}],"description":"Logging settings"},"networking":{"type":"object","properties":{"overlayNetwork":{"type":"boolean","description":"Whether overlay networking is enabled for this cluster."},"overlayCIDR":{"type":"string","pattern":"^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\\/([0-9]|[1-2][0-9]|3[0-2]))$","description":"CIDR range for the overlay network."}},"additionalProperties":false},"vanityDomains":{"type":"object","properties":{"apps":{"type":"object","properties":{"zoneName":{"type":"string"},"integrationId":{"type":"string"}},"required":["zoneName","integrationId"],"additionalProperties":false},"customDomains":{"type":"object","properties":{"zoneName":{"type":"string"},"integrationId":{"type":"string"}},"required":["zoneName","integrationId"],"additionalProperties":false},"loadBalancers":{"type":"object","properties":{"zoneName":{"type":"string"},"integrationId":{"type":"string"}},"required":["zoneName","integrationId"],"additionalProperties":false}},"additionalProperties":false},"infrastructure":{"type":"object","properties":{"workloads":{"type":"object","properties":{"runtimeClass":{"type":"string","enum":["none","gvisor","kata-clh","kata-qemu"]}},"additionalProperties":false,"description":"DEPRECATED: This field will be removed in the near future."},"builds":{"type":"object","properties":{"runtimeClass":{"type":"string","enum":["none","gvisor","kata-clh","kata-qemu"]}},"additionalProperties":false,"description":"DEPRECATED: This field will be removed in the near future."},"sandboxing":{"type":"object","properties":{"installGvisor":{"type":"boolean"},"installMicroVm":{"type":"boolean"},"defaultSandbox":{"type":"object","properties":{"builds":{"type":"string","enum":["none","gvisor","kata-clh","kata-qemu"]},"jobs":{"type":"string","enum":["none","gvisor","kata-clh","kata-qemu"]},"services":{"type":"string","enum":["none","gvisor","kata-clh","kata-qemu"]},"addons":{"type":"string","enum":["none","gvisor","kata-clh","kata-qemu"]}},"additionalProperties":false}},"additionalProperties":false},"installKata":{"type":"boolean","description":"DEPRECATED: This field will be removed in the near future."},"installGvisor":{"type":"boolean","description":"DEPRECATED: This field will be removed in the near future."},"cleanupVolumes":{"type":"boolean","default":true},"cleanupSnapshots":{"type":"boolean","default":true},"cephStorageProvider":{"type":"object","properties":{"enabled":{"type":"boolean","default":false},"resources":{"type":"object","properties":{"cpu":{"type":"number","format":"float","minimum":1,"maximum":20,"description":"Configure the CPU resources per Ceph replica"},"memory":{"type":"number","format":"float","minimum":4096,"maximum":40960,"description":"Configure the memory resources per Ceph replica"},"storage":{"type":"number","format":"float","minimum":102400,"maximum":5242880,"description":"Configure the data disk size per Ceph replica"}},"additionalProperties":false},"enableMultiReadWriteStorage":{"type":"boolean","description":"Configure Ceph to be enable use of multi read write storage for persistent volumes on the cluster."},"enableSingleReadWriteStorage":{"type":"boolean","description":"Configure Ceph to be used as default storage class for single read write storage. This will replace the default storage of the cloud provider."},"enableErasureCoding":{"type":"boolean","description":"Configure Ceph to be set up with erasure coding. This will be less fault tolerant but more cost effective."},"enableTopologyAwareScheduling":{"type":"boolean","description":"Configure Ceph to be set up with topology aware scheduling, enforcing deployment across multiple zones."}},"additionalProperties":false}},"additionalProperties":false},"requestModifiers":{"type":"object","properties":{"services":{"type":"object","properties":{"cpu":{"type":"number","format":"float","minimum":0.2,"maximum":1,"example":0.5,"default":0.5},"memory":{"type":"number","format":"float","minimum":0.4,"maximum":1,"example":0.8,"default":0.8}},"required":["cpu","memory"],"additionalProperties":false,"description":"Request modifiers for services"},"jobs":{"type":"object","properties":{"cpu":{"type":"number","format":"float","minimum":0.2,"maximum":1,"example":0.5,"default":0.5},"memory":{"type":"number","format":"float","minimum":0.4,"maximum":1,"example":0.8,"default":0.8}},"required":["cpu","memory"],"additionalProperties":false,"description":"Request modifiers for jobs"},"builds":{"type":"object","properties":{"cpu":{"type":"number","format":"float","minimum":0.1,"maximum":1,"example":0.2,"default":0.2},"memory":{"type":"number","format":"float","minimum":0.1,"maximum":1,"example":0.5,"default":0.5}},"required":["cpu","memory"],"additionalProperties":false,"description":"Request modifiers for builds"},"addons":{"type":"object","properties":{"cpu":{"type":"number","format":"float","minimum":0.2,"maximum":1,"example":0.5,"default":0.5},"memory":{"type":"number","format":"float","minimum":0.4,"maximum":1,"example":0.8,"default":0.8}},"required":["cpu","memory"],"additionalProperties":false,"description":"Request modifiers for addons"}},"additionalProperties":false,"description":"Allows customising request modifier values."}},"additionalProperties":false},"restrictions":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Enable or disable BYOC restrictions for this entity"},"teams":{"type":"array","items":{"type":"object","properties":{"teamId":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":45,"description":"The ID of the team that has access to this BYOC cluster"}},"required":["teamId"]},"description":"List of teams that have access to this BYOC cluster","default":[]}},"required":["enabled"],"additionalProperties":false,"description":"BYOC restrictions configuration for controlling team access"},"gcp":{"type":"object","properties":{"networking":{"type":"object","properties":{"network":{"type":"string"},"subnetwork":{"type":"string"}},"additionalProperties":false},"enableAuthorizedIpRanges":{"type":"boolean"},"authorizedIpRanges":{"type":"array","items":{"type":"string","pattern":"^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\\/([0-9]|[1-2][0-9]|3[0-2]))$"}},"projectId":{"type":"string","pattern":"^[a-z][a-z0-9-]{4,28}[a-z0-9]$","description":"GCP Project ID"}},"additionalProperties":false,"description":"GCP specific data. Required when `provider` is `gcp`"},"aws":{"type":"object","properties":{"enablePublicAccessCidrs":{"type":"boolean"},"publicAccessCidrs":{"type":"array","items":{"type":"string","pattern":"^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\\/([0-9]|[1-2][0-9]|3[0-2]))$"}},"subnetConfiguration":{"type":"object","properties":{"mode":{"type":"string","enum":["default-subnets-for-azs","explicit-subnets"],"description":"The mode of the AWS subnet configuration"},"vpcId":{"type":"string","description":"Id of the VPC"},"subnets":{"type":"array","items":{"type":"string","example":"eu-west-1a"},"minItems":2,"description":"List of subnets the cluster should be created for. At least 2 must be specified."}},"required":["mode","subnets"],"additionalProperties":false},"vpcEgress":{"type":"boolean","description":"If egress traffic from the cluster should come from a single static egress IP."}},"additionalProperties":false,"description":"AWS specific data. Required when `provider` is `aws`."},"azure":{"type":"object","properties":{"networking":{"type":"object","properties":{"vnetConfiguration":{"type":"object","properties":{"mode":{"type":"string","enum":["create-default","custom-vnet"],"description":"The vnet mode to use for this cluster. Use this to switch between creation of a new vnet per cluster or specifying a custom vnet."},"vnetId":{"type":"string","description":"Azure vnetId that should be used for this cluster. By default a new vnet will be created."}},"required":["mode"],"additionalProperties":false},"networkPluginMode":{"type":"string","enum":["overlay"],"description":"Optional setting to configure overlay mode on Azure."}},"additionalProperties":false},"enableAuthorizedIpRanges":{"type":"boolean"},"authorizedIpRanges":{"type":"array","items":{"type":"string","pattern":"^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\\/([0-9]|[1-2][0-9]|3[0-2]))$"}}},"additionalProperties":false,"description":"Azure specific data. Required when `provider` is `azure`."},"byok":{"type":"object","properties":{"nodePoolProviderIdLabel":{"type":"string"}},"required":["nodePoolProviderIdLabel"],"additionalProperties":false,"description":"BYOK specific data. Required when `provider` is `byok`."},"coordinates":{"type":"object","properties":{"latitude":{"type":"number","format":"float","minimum":-90,"maximum":90},"longitude":{"type":"number","format":"float","minimum":-180,"maximum":180}},"required":["latitude","longitude"],"additionalProperties":false,"description":"Geographic coordinates of the cluster. Optional, used for CDN geo-routing. Only applicable when `provider` is `byok`."}},"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Account > Cloud > Clusters > Update","x-nf-supports-orgs":true,"x-nf-team-scoped":true,"x-nf-cli-command":["patch","cloud","cluster"]},"v1-cloud-providers-clusters--clusterId--delete":{"operationId":"deleteCloudProvidersClustersClusterid","summary":"Delete cluster","description":"Delete the given cluster. Fails if the cluster has associated projects.","parameters":[{"name":"clusterId","type":"string","required":true,"description":"ID of the cluster","example":"gcp-cluster-1","in":"path","schema":{"name":"clusterId","type":"string","required":true,"description":"ID of the cluster","example":"gcp-cluster-1","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}},"409":{"description":"The cluster couldn't be deleted as it has dependencies that have not been deleted"}},"tags":["Cloud Providers","org"],"security":[],"x-nf-permission-required":"Account > Cloud > Clusters > Delete","x-nf-supports-orgs":true,"x-nf-team-scoped":true,"x-nf-org-scoped":true,"x-nf-cli-command":["delete","cloud","cluster"]},"v1-cloud-providers-clusters--clusterId--delete-team-scoped":{"operationId":"deleteCloudProvidersClustersClusterid","summary":"Delete cluster","description":"Delete the given cluster. Fails if the cluster has associated projects.","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"clusterId","type":"string","required":true,"description":"ID of the cluster","example":"gcp-cluster-1","in":"path","schema":{"name":"clusterId","type":"string","required":true,"description":"ID of the cluster","example":"gcp-cluster-1","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}},"409":{"description":"The cluster couldn't be deleted as it has dependencies that have not been deleted"}},"tags":["Cloud Providers","team"],"security":[],"x-nf-permission-required":"Account > Cloud > Clusters > Delete","x-nf-supports-orgs":true,"x-nf-team-scoped":true,"x-nf-org-scoped":true,"x-nf-cli-command":["delete","cloud","cluster"]},"v1-cloud-providers-clusters--clusterId--nodes-get":{"operationId":"getCloudProvidersClustersClusteridNodes","summary":"List cluster nodes","description":"Get a list of nodes for the given cluster","parameters":[{"name":"clusterId","type":"string","required":true,"description":"ID of the cluster","example":"gcp-cluster-1","in":"path","schema":{"name":"clusterId","type":"string","required":true,"description":"ID of the cluster","example":"gcp-cluster-1","in":"path"}},{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query","schema":{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query"}},{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query","schema":{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query"}},{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query","schema":{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query"}},{"name":"status","type":"string","enum":["RUNNING","DELETED"],"description":"Filter the node list by state of the nodes.","example":"RUNNING","in":"query","schema":{"name":"status","type":"string","enum":["RUNNING","DELETED"],"description":"Filter the node list by state of the nodes.","example":"RUNNING","in":"query"}}],"responses":{"200":{"description":"List of nodes for the given cluster.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"nodes":{"type":"array","items":{"type":"object","properties":{"nodeId":{"type":"string","description":"The id of the node.","example":"87a11ea9-3493-40d3-9f50-280c1d7c77a3"},"nodeName":{"type":"string","description":"The name of the node.","example":"gke-nf-example-cluster-nf-951dfaf6-a70a-7697bc0d-n771"},"nodePool":{"type":"string","description":"The node pool the node is a part of.","example":"nf-951dfaf6-a70a-4550-bab6-b5364d5da20c"},"status":{"type":"string","description":"The status of the node.","example":"RUNNING"},"zone":{"type":"string","description":"The zone the node is running in.","example":"us-central1-c"},"region":{"type":"string","description":"The region the node is running in.","example":"us-central1"},"instanceType":{"type":"string","description":"The type of the node.","example":"n2-standard-4"},"createdAt":{"type":"string","format":"date-time","example":"2000-01-01T12:00:00.000Z"}},"additionalProperties":false,"description":"A node object."},"description":"An array of nodes."}},"required":["nodes"],"additionalProperties":false,"description":"Result data."},"pagination":{"type":"object","properties":{"hasNextPage":{"type":"boolean","description":"Is there another page of results available?","example":false},"cursor":{"type":"string","description":"The cursor to access the next page of results."},"count":{"type":"number","format":"float","description":"The number of results returned by this request.","example":1}},"required":["hasNextPage","count"],"additionalProperties":false,"description":"Data about the endpoint pagination."}},"required":["data","pagination"],"additionalProperties":false,"description":"Response object."}}},"tags":["Cloud Providers","org"],"security":[],"x-nf-permission-required":"Account > Cloud > Clusters > Read","x-nf-supports-orgs":true,"x-nf-team-scoped":true,"x-nf-org-scoped":true,"x-nf-cli-command":["list","cloud","cluster","nodes"]},"v1-cloud-providers-clusters--clusterId--nodes-get-team-scoped":{"operationId":"getCloudProvidersClustersClusteridNodes","summary":"List cluster nodes","description":"Get a list of nodes for the given cluster","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"clusterId","type":"string","required":true,"description":"ID of the cluster","example":"gcp-cluster-1","in":"path","schema":{"name":"clusterId","type":"string","required":true,"description":"ID of the cluster","example":"gcp-cluster-1","in":"path"}},{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query","schema":{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query"}},{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query","schema":{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query"}},{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query","schema":{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query"}},{"name":"status","type":"string","enum":["RUNNING","DELETED"],"description":"Filter the node list by state of the nodes.","example":"RUNNING","in":"query","schema":{"name":"status","type":"string","enum":["RUNNING","DELETED"],"description":"Filter the node list by state of the nodes.","example":"RUNNING","in":"query"}}],"responses":{"200":{"description":"List of nodes for the given cluster.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"nodes":{"type":"array","items":{"type":"object","properties":{"nodeId":{"type":"string","description":"The id of the node.","example":"87a11ea9-3493-40d3-9f50-280c1d7c77a3"},"nodeName":{"type":"string","description":"The name of the node.","example":"gke-nf-example-cluster-nf-951dfaf6-a70a-7697bc0d-n771"},"nodePool":{"type":"string","description":"The node pool the node is a part of.","example":"nf-951dfaf6-a70a-4550-bab6-b5364d5da20c"},"status":{"type":"string","description":"The status of the node.","example":"RUNNING"},"zone":{"type":"string","description":"The zone the node is running in.","example":"us-central1-c"},"region":{"type":"string","description":"The region the node is running in.","example":"us-central1"},"instanceType":{"type":"string","description":"The type of the node.","example":"n2-standard-4"},"createdAt":{"type":"string","format":"date-time","example":"2000-01-01T12:00:00.000Z"}},"additionalProperties":false,"description":"A node object."},"description":"An array of nodes."}},"required":["nodes"],"additionalProperties":false,"description":"Result data."},"pagination":{"type":"object","properties":{"hasNextPage":{"type":"boolean","description":"Is there another page of results available?","example":false},"cursor":{"type":"string","description":"The cursor to access the next page of results."},"count":{"type":"number","format":"float","description":"The number of results returned by this request.","example":1}},"required":["hasNextPage","count"],"additionalProperties":false,"description":"Data about the endpoint pagination."}},"required":["data","pagination"],"additionalProperties":false,"description":"Response object."}}},"tags":["Cloud Providers","team"],"security":[],"x-nf-permission-required":"Account > Cloud > Clusters > Read","x-nf-supports-orgs":true,"x-nf-team-scoped":true,"x-nf-org-scoped":true,"x-nf-cli-command":["list","cloud","cluster","nodes"]},"v1-cloud-providers-clusters--clusterId--nodes--nodeId--cordon-post":{"operationId":"postCloudProvidersClustersClusteridNodesNodeidCordon","summary":"Cordon cluster node","description":"Cordon a node on the cluster to prevent new pods from scheduling on it.","parameters":[{"name":"clusterId","type":"string","required":true,"description":"ID of the cluster","example":"gcp-cluster-1","in":"path","schema":{"name":"clusterId","type":"string","required":true,"description":"ID of the cluster","example":"gcp-cluster-1","in":"path"}},{"name":"nodeId","type":"string","required":true,"description":"ID of the node","example":"78861f8a-2fcf-4a3d-869c-434ec2e3f0c1","in":"path","schema":{"name":"nodeId","type":"string","required":true,"description":"ID of the node","example":"78861f8a-2fcf-4a3d-869c-434ec2e3f0c1","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Cloud Providers","org"],"security":[],"x-nf-permission-required":"Account > Cloud > Clusters > Update","x-nf-supports-orgs":true,"x-nf-team-scoped":true,"x-nf-org-scoped":true,"x-nf-cli-command":["cordon","cloud","cluster","node"]},"v1-cloud-providers-clusters--clusterId--nodes--nodeId--cordon-post-team-scoped":{"operationId":"postCloudProvidersClustersClusteridNodesNodeidCordon","summary":"Cordon cluster node","description":"Cordon a node on the cluster to prevent new pods from scheduling on it.","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"clusterId","type":"string","required":true,"description":"ID of the cluster","example":"gcp-cluster-1","in":"path","schema":{"name":"clusterId","type":"string","required":true,"description":"ID of the cluster","example":"gcp-cluster-1","in":"path"}},{"name":"nodeId","type":"string","required":true,"description":"ID of the node","example":"78861f8a-2fcf-4a3d-869c-434ec2e3f0c1","in":"path","schema":{"name":"nodeId","type":"string","required":true,"description":"ID of the node","example":"78861f8a-2fcf-4a3d-869c-434ec2e3f0c1","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Cloud Providers","team"],"security":[],"x-nf-permission-required":"Account > Cloud > Clusters > Update","x-nf-supports-orgs":true,"x-nf-team-scoped":true,"x-nf-org-scoped":true,"x-nf-cli-command":["cordon","cloud","cluster","node"]},"v1-cloud-providers-clusters--clusterId--nodes--nodeId--drain-post":{"operationId":"postCloudProvidersClustersClusteridNodesNodeidDrain","summary":"Drain cluster node","description":"Drain a node by evicting all running pods.","parameters":[{"name":"clusterId","type":"string","required":true,"description":"ID of the cluster","example":"gcp-cluster-1","in":"path","schema":{"name":"clusterId","type":"string","required":true,"description":"ID of the cluster","example":"gcp-cluster-1","in":"path"}},{"name":"nodeId","type":"string","required":true,"description":"ID of the node","example":"78861f8a-2fcf-4a3d-869c-434ec2e3f0c1","in":"path","schema":{"name":"nodeId","type":"string","required":true,"description":"ID of the node","example":"78861f8a-2fcf-4a3d-869c-434ec2e3f0c1","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Cloud Providers","org"],"security":[],"x-nf-permission-required":"Account > Cloud > Clusters > Update","x-nf-supports-orgs":true,"x-nf-team-scoped":true,"x-nf-org-scoped":true,"x-nf-cli-command":["drain","cloud","cluster","node"]},"v1-cloud-providers-clusters--clusterId--nodes--nodeId--drain-post-team-scoped":{"operationId":"postCloudProvidersClustersClusteridNodesNodeidDrain","summary":"Drain cluster node","description":"Drain a node by evicting all running pods.","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"clusterId","type":"string","required":true,"description":"ID of the cluster","example":"gcp-cluster-1","in":"path","schema":{"name":"clusterId","type":"string","required":true,"description":"ID of the cluster","example":"gcp-cluster-1","in":"path"}},{"name":"nodeId","type":"string","required":true,"description":"ID of the node","example":"78861f8a-2fcf-4a3d-869c-434ec2e3f0c1","in":"path","schema":{"name":"nodeId","type":"string","required":true,"description":"ID of the node","example":"78861f8a-2fcf-4a3d-869c-434ec2e3f0c1","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Cloud Providers","team"],"security":[],"x-nf-permission-required":"Account > Cloud > Clusters > Update","x-nf-supports-orgs":true,"x-nf-team-scoped":true,"x-nf-org-scoped":true,"x-nf-cli-command":["drain","cloud","cluster","node"]},"v1-cloud-providers-clusters--clusterId--nodes--nodeId--uncordon-post":{"operationId":"postCloudProvidersClustersClusteridNodesNodeidUncordon","summary":"Uncordon cluster node","description":"Uncordon a node on the cluster if it was previously cordoned.","parameters":[{"name":"clusterId","type":"string","required":true,"description":"ID of the cluster","example":"gcp-cluster-1","in":"path","schema":{"name":"clusterId","type":"string","required":true,"description":"ID of the cluster","example":"gcp-cluster-1","in":"path"}},{"name":"nodeId","type":"string","required":true,"description":"ID of the node","example":"78861f8a-2fcf-4a3d-869c-434ec2e3f0c1","in":"path","schema":{"name":"nodeId","type":"string","required":true,"description":"ID of the node","example":"78861f8a-2fcf-4a3d-869c-434ec2e3f0c1","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Cloud Providers","org"],"security":[],"x-nf-permission-required":"Account > Cloud > Clusters > Update","x-nf-supports-orgs":true,"x-nf-team-scoped":true,"x-nf-org-scoped":true,"x-nf-cli-command":["uncordon","cloud","cluster","node"]},"v1-cloud-providers-clusters--clusterId--nodes--nodeId--uncordon-post-team-scoped":{"operationId":"postCloudProvidersClustersClusteridNodesNodeidUncordon","summary":"Uncordon cluster node","description":"Uncordon a node on the cluster if it was previously cordoned.","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"clusterId","type":"string","required":true,"description":"ID of the cluster","example":"gcp-cluster-1","in":"path","schema":{"name":"clusterId","type":"string","required":true,"description":"ID of the cluster","example":"gcp-cluster-1","in":"path"}},{"name":"nodeId","type":"string","required":true,"description":"ID of the node","example":"78861f8a-2fcf-4a3d-869c-434ec2e3f0c1","in":"path","schema":{"name":"nodeId","type":"string","required":true,"description":"ID of the node","example":"78861f8a-2fcf-4a3d-869c-434ec2e3f0c1","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Cloud Providers","team"],"security":[],"x-nf-permission-required":"Account > Cloud > Clusters > Update","x-nf-supports-orgs":true,"x-nf-team-scoped":true,"x-nf-org-scoped":true,"x-nf-cli-command":["uncordon","cloud","cluster","node"]},"v1-cloud-providers-integrations-get":{"operationId":"getCloudProvidersIntegrations","summary":"List integrations","description":"Lists integrations for the authenticated user or team.","parameters":[{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query","schema":{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query"}},{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query","schema":{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query"}},{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query","schema":{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query"}}],"responses":{"200":{"description":"A list of integrations for the authenticated user","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"integrations":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The name of the cloud provider integration.","example":"Example Integration"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"The description of the integration.","example":"This is a new cloud provider integration."},"provider":{"type":"string","enum":["aws","azure","civo","gcp","oci","cloudflare","coreweave","aiven","backblaze","akamai","byok"],"description":"Cloud provider to be used for the selected resource","example":"gcp"},"features":{"type":"array","items":{"type":"string","enum":["byoc","byoc-static-egress","byoc-custom-launch-templates","byoc-custom-vpc","byoc-logs","cloudfront","route53","registry-pull","registry-push","opentofu","workload-identity"],"description":"The type of provider integration.","example":"byoc"},"default":["byoc"]},"restrictions":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Enable or disable BYOC restrictions for this entity"},"teams":{"type":"array","items":{"type":"object","properties":{"teamId":{"type":"string","description":"The ID of the team that has access to this BYOC cluster"}},"required":["teamId"]},"description":"List of teams that have access to this BYOC cluster","default":[]}},"required":["enabled"],"additionalProperties":false,"description":"BYOC restrictions configuration for controlling team access"},"aws":{"type":"object","properties":{"authenticationMode":{"type":"string","enum":["accessKey","crossAccountRole"],"description":"The provider authentication mode to use for this integration.","example":"accessKey"}},"additionalProperties":false,"description":"AWS specific data. Required when `provider` is `aws`."},"gcp":{"type":"object","properties":{"projectId":{"type":"string","description":"GCP Project ID"},"authenticationMode":{"type":"string","enum":["accessKey","crossAccountRole"],"description":"The provider authentication mode to use for this integration.","example":"accessKey"}},"required":["projectId"],"additionalProperties":false,"description":"GCP specific data. Required when `provider` is `gcp`."},"cloudflare":{"type":"object","properties":{"credentialType":{"type":"string","enum":["apiToken","originCAKey","globalApiKey"],"description":"The type of api key","example":"apiToken"}},"additionalProperties":false,"description":"Cloudflare specific data. Required when `provider` is `cloudflare`."},"id":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"ID of the integration","example":"example-integration"},"createdAt":{"type":"string","format":"date-time","description":"The time the integration was created.","example":"2021-01-20T11:19:53.175Z"}},"required":["name","provider","id","createdAt"],"additionalProperties":false,"description":"An integration object."},"description":"An array of integrations."}},"required":["integrations"],"additionalProperties":false,"description":"Result data."},"pagination":{"type":"object","properties":{"hasNextPage":{"type":"boolean","description":"Is there another page of results available?","example":false},"cursor":{"type":"string","description":"The cursor to access the next page of results."},"count":{"type":"number","format":"float","description":"The number of results returned by this request.","example":1}},"required":["hasNextPage","count"],"additionalProperties":false,"description":"Data about the endpoint pagination."}},"required":["data","pagination"],"additionalProperties":false,"description":"Response object."}}},"tags":["Cloud Providers","org"],"security":[],"x-nf-permission-required":"Account > Cloud > Integrations > Read","x-nf-supports-orgs":true,"x-nf-team-scoped":true,"x-nf-org-scoped":true,"x-nf-cli-command":["list","cloud","integrations"]},"v1-cloud-providers-integrations-get-team-scoped":{"operationId":"getCloudProvidersIntegrations","summary":"List integrations","description":"Lists integrations for the authenticated user or team.","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query","schema":{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query"}},{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query","schema":{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query"}},{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query","schema":{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query"}}],"responses":{"200":{"description":"A list of integrations for the authenticated user","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"integrations":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The name of the cloud provider integration.","example":"Example Integration"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"The description of the integration.","example":"This is a new cloud provider integration."},"provider":{"type":"string","enum":["aws","azure","civo","gcp","oci","cloudflare","coreweave","aiven","backblaze","akamai","byok"],"description":"Cloud provider to be used for the selected resource","example":"gcp"},"features":{"type":"array","items":{"type":"string","enum":["byoc","byoc-static-egress","byoc-custom-launch-templates","byoc-custom-vpc","byoc-logs","cloudfront","route53","registry-pull","registry-push","opentofu","workload-identity"],"description":"The type of provider integration.","example":"byoc"},"default":["byoc"]},"restrictions":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Enable or disable BYOC restrictions for this entity"},"teams":{"type":"array","items":{"type":"object","properties":{"teamId":{"type":"string","description":"The ID of the team that has access to this BYOC cluster"}},"required":["teamId"]},"description":"List of teams that have access to this BYOC cluster","default":[]}},"required":["enabled"],"additionalProperties":false,"description":"BYOC restrictions configuration for controlling team access"},"aws":{"type":"object","properties":{"authenticationMode":{"type":"string","enum":["accessKey","crossAccountRole"],"description":"The provider authentication mode to use for this integration.","example":"accessKey"}},"additionalProperties":false,"description":"AWS specific data. Required when `provider` is `aws`."},"gcp":{"type":"object","properties":{"projectId":{"type":"string","description":"GCP Project ID"},"authenticationMode":{"type":"string","enum":["accessKey","crossAccountRole"],"description":"The provider authentication mode to use for this integration.","example":"accessKey"}},"required":["projectId"],"additionalProperties":false,"description":"GCP specific data. Required when `provider` is `gcp`."},"cloudflare":{"type":"object","properties":{"credentialType":{"type":"string","enum":["apiToken","originCAKey","globalApiKey"],"description":"The type of api key","example":"apiToken"}},"additionalProperties":false,"description":"Cloudflare specific data. Required when `provider` is `cloudflare`."},"id":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"ID of the integration","example":"example-integration"},"createdAt":{"type":"string","format":"date-time","description":"The time the integration was created.","example":"2021-01-20T11:19:53.175Z"}},"required":["name","provider","id","createdAt"],"additionalProperties":false,"description":"An integration object."},"description":"An array of integrations."}},"required":["integrations"],"additionalProperties":false,"description":"Result data."},"pagination":{"type":"object","properties":{"hasNextPage":{"type":"boolean","description":"Is there another page of results available?","example":false},"cursor":{"type":"string","description":"The cursor to access the next page of results."},"count":{"type":"number","format":"float","description":"The number of results returned by this request.","example":1}},"required":["hasNextPage","count"],"additionalProperties":false,"description":"Data about the endpoint pagination."}},"required":["data","pagination"],"additionalProperties":false,"description":"Response object."}}},"tags":["Cloud Providers","team"],"security":[],"x-nf-permission-required":"Account > Cloud > Integrations > Read","x-nf-supports-orgs":true,"x-nf-team-scoped":true,"x-nf-org-scoped":true,"x-nf-cli-command":["list","cloud","integrations"]},"v1-cloud-providers-integrations-post":{"operationId":"postCloudProvidersIntegrations","summary":"Create integration","description":"Creates a new integration.","parameters":[],"responses":{"200":{"description":"Details about the created integration.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"ID of the integration","example":"example-integration"},"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The name of the cloud provider integration.","example":"Example Integration"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"The description of the integration.","example":"This is a new cloud provider integration."},"provider":{"type":"string","enum":["aws","azure","civo","gcp","oci","cloudflare","coreweave","aiven","backblaze","akamai","byok"],"description":"Cloud provider to be used for the selected resource","example":"gcp"},"features":{"type":"array","items":{"type":"string","enum":["byoc","byoc-static-egress","byoc-custom-launch-templates","byoc-custom-vpc","byoc-logs","cloudfront","route53","registry-pull","registry-push","opentofu","workload-identity"],"description":"The type of provider integration.","example":"byoc"},"default":["byoc"]},"restrictions":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Enable or disable BYOC restrictions for this entity"},"teams":{"type":"array","items":{"type":"object","properties":{"teamId":{"type":"string","description":"The ID of the team that has access to this BYOC cluster"}},"required":["teamId"]},"description":"List of teams that have access to this BYOC cluster","default":[]}},"required":["enabled"],"additionalProperties":false,"description":"BYOC restrictions configuration for controlling team access"},"credentials":{"type":"object","properties":{"keyfileJson":{"type":"string","description":"Contents of a GCP key file."},"accessKey":{"type":"string","description":"AWS access key."},"secretKey":{"type":"string","description":"AWS secret key."},"roleArn":{"type":"string","description":"AWS IAM role ARN."},"externalId":{"type":"string","description":"AWS shared secret (external id)."},"apiKey":{"type":"string","description":"API key."},"email":{"type":"string","format":"email","description":"Email address for Cloudflare global API key."},"tenantId":{"type":"string","description":"Directory (tenant) ID "},"clientId":{"type":"string","description":"Application (client) ID "},"objectId":{"type":"string","description":"Object ID"},"secret":{"type":"string","description":"Secret"},"subscriptionId":{"type":"string","description":"Azure Subscription ID"},"region":{"type":"string","description":"OCI Authentication Region"},"tenancyId":{"type":"string","description":"OCI Tenancy ID"},"userId":{"type":"string","description":"User ID"},"fingerprint":{"type":"string","description":"Fingerprint"},"privateKey":{"type":"string","description":"OCI Private Key"},"passphrase":{"type":"string","description":"Passphrase"},"compartmentId":{"type":"string","description":"OCI Compartment ID"},"kubeconfig":{"type":"string","description":"Kubeconfig"},"applicationKeyId":{"type":"string","description":"Backblaze Application Key ID"},"applicationKey":{"type":"string","description":"Backblaze Application Key"},"host":{"type":"string","description":"Akamai Host"},"accessToken":{"type":"string","description":"Akamai Access Token"},"clientToken":{"type":"string","description":"Akamai Client Token"},"clientSecret":{"type":"string","description":"Akamai Client Secret"}},"additionalProperties":false,"description":"Cloud provider credential input, required fields dependent on which provider is chosen."},"aws":{"type":"object","properties":{"authenticationMode":{"type":"string","enum":["accessKey","crossAccountRole"],"description":"The provider authentication mode to use for this integration.","example":"accessKey"}},"additionalProperties":false,"description":"AWS specific data. Required when `provider` is `aws`."},"gcp":{"type":"object","properties":{"projectId":{"type":"string","description":"GCP Project ID"},"authenticationMode":{"type":"string","enum":["accessKey","crossAccountRole"],"description":"The provider authentication mode to use for this integration.","example":"accessKey"},"serviceAccountEmail":{"type":"string","description":"Service account email that will be used for cross account access."}},"required":["projectId"],"additionalProperties":false,"description":"GCP specific data. Required when `provider` is `gcp`."},"cloudflare":{"type":"object","properties":{"credentialType":{"type":"string","enum":["apiToken","originCAKey","globalApiKey"],"description":"The type of api key","example":"apiToken"}},"additionalProperties":false,"description":"Cloudflare specific data. Required when `provider` is `cloudflare`."},"createdAt":{"type":"string","format":"date-time","description":"The time the integration was created.","example":"2021-01-20T11:19:53.175Z"}},"required":["id","name","provider","credentials","createdAt"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Cloud Providers"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The name of the cloud provider integration.","example":"Example Integration"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"The description of the integration.","example":"This is a new cloud provider integration."},"provider":{"type":"string","enum":["aws","azure","civo","gcp","oci","cloudflare","coreweave","aiven","backblaze","akamai","byok"],"description":"Cloud provider to be used for the selected resource","example":"gcp"},"features":{"type":"array","items":{"type":"string","enum":["byoc","byoc-static-egress","byoc-custom-launch-templates","byoc-custom-vpc","byoc-logs","cloudfront","route53","registry-pull","registry-push","opentofu","workload-identity"],"description":"The type of provider integration.","example":"byoc"},"default":["byoc"]},"restrictions":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Enable or disable BYOC restrictions for this entity"},"teams":{"type":"array","items":{"type":"object","properties":{"teamId":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":45,"description":"The ID of the team that has access to this BYOC cluster"}},"required":["teamId"]},"description":"List of teams that have access to this BYOC cluster","default":[]}},"required":["enabled"],"additionalProperties":false,"description":"BYOC restrictions configuration for controlling team access"},"credentials":{"type":"object","properties":{"keyfileJson":{"type":"string","description":"Contents of a GCP key file."},"accessKey":{"type":"string","description":"AWS access key."},"secretKey":{"type":"string","description":"AWS secret key."},"roleArn":{"type":"string","description":"AWS IAM role ARN."},"externalId":{"type":"string","description":"AWS shared secret (external id)."},"apiKey":{"type":"string","description":"API key."},"email":{"type":"string","format":"email","description":"Email address for Cloudflare global API key."},"tenantId":{"type":"string","description":"Directory (tenant) ID "},"clientId":{"type":"string","description":"Application (client) ID "},"objectId":{"type":"string","description":"Object ID"},"secret":{"type":"string","description":"Secret"},"subscriptionId":{"type":"string","description":"Azure Subscription ID"},"region":{"type":"string","description":"OCI Authentication Region"},"tenancyId":{"type":"string","description":"OCI Tenancy ID"},"userId":{"type":"string","description":"User ID"},"fingerprint":{"type":"string","description":"Fingerprint"},"privateKey":{"type":"string","description":"OCI Private Key"},"passphrase":{"type":"string","description":"Passphrase"},"compartmentId":{"type":"string","description":"OCI Compartment ID"},"kubeconfig":{"type":"string","description":"Kubeconfig"},"applicationKeyId":{"type":"string","description":"Backblaze Application Key ID"},"applicationKey":{"type":"string","description":"Backblaze Application Key"},"host":{"type":"string","description":"Akamai Host"},"accessToken":{"type":"string","description":"Akamai Access Token"},"clientToken":{"type":"string","description":"Akamai Client Token"},"clientSecret":{"type":"string","description":"Akamai Client Secret"}},"additionalProperties":false,"description":"Cloud provider credential input, required fields dependent on which provider is chosen."},"aws":{"type":"object","properties":{"authenticationMode":{"type":"string","enum":["accessKey","crossAccountRole"],"description":"The provider authentication mode to use for this integration.","example":"accessKey"}},"additionalProperties":false,"description":"AWS specific data. Required when `provider` is `aws`."},"gcp":{"type":"object","properties":{"projectId":{"type":"string","description":"GCP Project ID"},"authenticationMode":{"type":"string","enum":["accessKey","crossAccountRole"],"description":"The provider authentication mode to use for this integration.","example":"accessKey"}},"required":["projectId"],"additionalProperties":false,"description":"GCP specific data. Required when `provider` is `gcp`."},"cloudflare":{"type":"object","properties":{"credentialType":{"type":"string","enum":["apiToken","originCAKey","globalApiKey"],"description":"The type of api key","example":"apiToken"}},"additionalProperties":false,"description":"Cloudflare specific data. Required when `provider` is `cloudflare`."}},"required":["name","provider","credentials"],"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Account > Cloud > Integrations > Create","x-nf-supports-orgs":true,"x-nf-team-scoped":true,"x-nf-cli-command":["create","cloud","integration"]},"v1-cloud-providers-integrations-post-team-scoped":{"operationId":"postCloudProvidersIntegrations","summary":"Create integration","description":"Creates a new integration.","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}}],"responses":{"200":{"description":"Details about the created integration.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"ID of the integration","example":"example-integration"},"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The name of the cloud provider integration.","example":"Example Integration"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"The description of the integration.","example":"This is a new cloud provider integration."},"provider":{"type":"string","enum":["aws","azure","civo","gcp","oci","cloudflare","coreweave","aiven","backblaze","akamai","byok"],"description":"Cloud provider to be used for the selected resource","example":"gcp"},"features":{"type":"array","items":{"type":"string","enum":["byoc","byoc-static-egress","byoc-custom-launch-templates","byoc-custom-vpc","byoc-logs","cloudfront","route53","registry-pull","registry-push","opentofu","workload-identity"],"description":"The type of provider integration.","example":"byoc"},"default":["byoc"]},"restrictions":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Enable or disable BYOC restrictions for this entity"},"teams":{"type":"array","items":{"type":"object","properties":{"teamId":{"type":"string","description":"The ID of the team that has access to this BYOC cluster"}},"required":["teamId"]},"description":"List of teams that have access to this BYOC cluster","default":[]}},"required":["enabled"],"additionalProperties":false,"description":"BYOC restrictions configuration for controlling team access"},"credentials":{"type":"object","properties":{"keyfileJson":{"type":"string","description":"Contents of a GCP key file."},"accessKey":{"type":"string","description":"AWS access key."},"secretKey":{"type":"string","description":"AWS secret key."},"roleArn":{"type":"string","description":"AWS IAM role ARN."},"externalId":{"type":"string","description":"AWS shared secret (external id)."},"apiKey":{"type":"string","description":"API key."},"email":{"type":"string","format":"email","description":"Email address for Cloudflare global API key."},"tenantId":{"type":"string","description":"Directory (tenant) ID "},"clientId":{"type":"string","description":"Application (client) ID "},"objectId":{"type":"string","description":"Object ID"},"secret":{"type":"string","description":"Secret"},"subscriptionId":{"type":"string","description":"Azure Subscription ID"},"region":{"type":"string","description":"OCI Authentication Region"},"tenancyId":{"type":"string","description":"OCI Tenancy ID"},"userId":{"type":"string","description":"User ID"},"fingerprint":{"type":"string","description":"Fingerprint"},"privateKey":{"type":"string","description":"OCI Private Key"},"passphrase":{"type":"string","description":"Passphrase"},"compartmentId":{"type":"string","description":"OCI Compartment ID"},"kubeconfig":{"type":"string","description":"Kubeconfig"},"applicationKeyId":{"type":"string","description":"Backblaze Application Key ID"},"applicationKey":{"type":"string","description":"Backblaze Application Key"},"host":{"type":"string","description":"Akamai Host"},"accessToken":{"type":"string","description":"Akamai Access Token"},"clientToken":{"type":"string","description":"Akamai Client Token"},"clientSecret":{"type":"string","description":"Akamai Client Secret"}},"additionalProperties":false,"description":"Cloud provider credential input, required fields dependent on which provider is chosen."},"aws":{"type":"object","properties":{"authenticationMode":{"type":"string","enum":["accessKey","crossAccountRole"],"description":"The provider authentication mode to use for this integration.","example":"accessKey"}},"additionalProperties":false,"description":"AWS specific data. Required when `provider` is `aws`."},"gcp":{"type":"object","properties":{"projectId":{"type":"string","description":"GCP Project ID"},"authenticationMode":{"type":"string","enum":["accessKey","crossAccountRole"],"description":"The provider authentication mode to use for this integration.","example":"accessKey"},"serviceAccountEmail":{"type":"string","description":"Service account email that will be used for cross account access."}},"required":["projectId"],"additionalProperties":false,"description":"GCP specific data. Required when `provider` is `gcp`."},"cloudflare":{"type":"object","properties":{"credentialType":{"type":"string","enum":["apiToken","originCAKey","globalApiKey"],"description":"The type of api key","example":"apiToken"}},"additionalProperties":false,"description":"Cloudflare specific data. Required when `provider` is `cloudflare`."},"createdAt":{"type":"string","format":"date-time","description":"The time the integration was created.","example":"2021-01-20T11:19:53.175Z"}},"required":["id","name","provider","credentials","createdAt"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Cloud Providers","team"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The name of the cloud provider integration.","example":"Example Integration"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"The description of the integration.","example":"This is a new cloud provider integration."},"provider":{"type":"string","enum":["aws","azure","civo","gcp","oci","cloudflare","coreweave","aiven","backblaze","akamai","byok"],"description":"Cloud provider to be used for the selected resource","example":"gcp"},"features":{"type":"array","items":{"type":"string","enum":["byoc","byoc-static-egress","byoc-custom-launch-templates","byoc-custom-vpc","byoc-logs","cloudfront","route53","registry-pull","registry-push","opentofu","workload-identity"],"description":"The type of provider integration.","example":"byoc"},"default":["byoc"]},"restrictions":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Enable or disable BYOC restrictions for this entity"},"teams":{"type":"array","items":{"type":"object","properties":{"teamId":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":45,"description":"The ID of the team that has access to this BYOC cluster"}},"required":["teamId"]},"description":"List of teams that have access to this BYOC cluster","default":[]}},"required":["enabled"],"additionalProperties":false,"description":"BYOC restrictions configuration for controlling team access"},"credentials":{"type":"object","properties":{"keyfileJson":{"type":"string","description":"Contents of a GCP key file."},"accessKey":{"type":"string","description":"AWS access key."},"secretKey":{"type":"string","description":"AWS secret key."},"roleArn":{"type":"string","description":"AWS IAM role ARN."},"externalId":{"type":"string","description":"AWS shared secret (external id)."},"apiKey":{"type":"string","description":"API key."},"email":{"type":"string","format":"email","description":"Email address for Cloudflare global API key."},"tenantId":{"type":"string","description":"Directory (tenant) ID "},"clientId":{"type":"string","description":"Application (client) ID "},"objectId":{"type":"string","description":"Object ID"},"secret":{"type":"string","description":"Secret"},"subscriptionId":{"type":"string","description":"Azure Subscription ID"},"region":{"type":"string","description":"OCI Authentication Region"},"tenancyId":{"type":"string","description":"OCI Tenancy ID"},"userId":{"type":"string","description":"User ID"},"fingerprint":{"type":"string","description":"Fingerprint"},"privateKey":{"type":"string","description":"OCI Private Key"},"passphrase":{"type":"string","description":"Passphrase"},"compartmentId":{"type":"string","description":"OCI Compartment ID"},"kubeconfig":{"type":"string","description":"Kubeconfig"},"applicationKeyId":{"type":"string","description":"Backblaze Application Key ID"},"applicationKey":{"type":"string","description":"Backblaze Application Key"},"host":{"type":"string","description":"Akamai Host"},"accessToken":{"type":"string","description":"Akamai Access Token"},"clientToken":{"type":"string","description":"Akamai Client Token"},"clientSecret":{"type":"string","description":"Akamai Client Secret"}},"additionalProperties":false,"description":"Cloud provider credential input, required fields dependent on which provider is chosen."},"aws":{"type":"object","properties":{"authenticationMode":{"type":"string","enum":["accessKey","crossAccountRole"],"description":"The provider authentication mode to use for this integration.","example":"accessKey"}},"additionalProperties":false,"description":"AWS specific data. Required when `provider` is `aws`."},"gcp":{"type":"object","properties":{"projectId":{"type":"string","description":"GCP Project ID"},"authenticationMode":{"type":"string","enum":["accessKey","crossAccountRole"],"description":"The provider authentication mode to use for this integration.","example":"accessKey"}},"required":["projectId"],"additionalProperties":false,"description":"GCP specific data. Required when `provider` is `gcp`."},"cloudflare":{"type":"object","properties":{"credentialType":{"type":"string","enum":["apiToken","originCAKey","globalApiKey"],"description":"The type of api key","example":"apiToken"}},"additionalProperties":false,"description":"Cloudflare specific data. Required when `provider` is `cloudflare`."}},"required":["name","provider","credentials"],"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Account > Cloud > Integrations > Create","x-nf-supports-orgs":true,"x-nf-team-scoped":true,"x-nf-cli-command":["create","cloud","integration"]},"v1-cloud-providers-integrations-put":{"operationId":"putCloudProvidersIntegrations","summary":"Put integration","description":"Creates or updates a integration.","parameters":[{"name":"integrationId","type":"string","required":true,"description":"ID of the provider integration","example":"gcp-integration-1","in":"path","schema":{"name":"integrationId","type":"string","required":true,"description":"ID of the provider integration","example":"gcp-integration-1","in":"path"}}],"responses":{"200":{"description":"Details about the created or updated integration.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"ID of the integration","example":"example-integration"},"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The name of the cloud provider integration.","example":"Example Integration"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"The description of the integration.","example":"This is a new cloud provider integration."},"provider":{"type":"string","enum":["aws","azure","civo","gcp","oci","cloudflare","coreweave","aiven","backblaze","akamai","byok"],"description":"Cloud provider to be used for the selected resource","example":"gcp"},"features":{"type":"array","items":{"type":"string","enum":["byoc","byoc-static-egress","byoc-custom-launch-templates","byoc-custom-vpc","byoc-logs","cloudfront","route53","registry-pull","registry-push","opentofu","workload-identity"],"description":"The type of provider integration.","example":"byoc"},"default":["byoc"]},"restrictions":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Enable or disable BYOC restrictions for this entity"},"teams":{"type":"array","items":{"type":"object","properties":{"teamId":{"type":"string","description":"The ID of the team that has access to this BYOC cluster"}},"required":["teamId"]},"description":"List of teams that have access to this BYOC cluster","default":[]}},"required":["enabled"],"additionalProperties":false,"description":"BYOC restrictions configuration for controlling team access"},"credentials":{"type":"object","properties":{"keyfileJson":{"type":"string","description":"Contents of a GCP key file."},"accessKey":{"type":"string","description":"AWS access key."},"secretKey":{"type":"string","description":"AWS secret key."},"roleArn":{"type":"string","description":"AWS IAM role ARN."},"externalId":{"type":"string","description":"AWS shared secret (external id)."},"apiKey":{"type":"string","description":"API key."},"email":{"type":"string","format":"email","description":"Email address for Cloudflare global API key."},"tenantId":{"type":"string","description":"Directory (tenant) ID "},"clientId":{"type":"string","description":"Application (client) ID "},"objectId":{"type":"string","description":"Object ID"},"secret":{"type":"string","description":"Secret"},"subscriptionId":{"type":"string","description":"Azure Subscription ID"},"region":{"type":"string","description":"OCI Authentication Region"},"tenancyId":{"type":"string","description":"OCI Tenancy ID"},"userId":{"type":"string","description":"User ID"},"fingerprint":{"type":"string","description":"Fingerprint"},"privateKey":{"type":"string","description":"OCI Private Key"},"passphrase":{"type":"string","description":"Passphrase"},"compartmentId":{"type":"string","description":"OCI Compartment ID"},"kubeconfig":{"type":"string","description":"Kubeconfig"},"applicationKeyId":{"type":"string","description":"Backblaze Application Key ID"},"applicationKey":{"type":"string","description":"Backblaze Application Key"},"host":{"type":"string","description":"Akamai Host"},"accessToken":{"type":"string","description":"Akamai Access Token"},"clientToken":{"type":"string","description":"Akamai Client Token"},"clientSecret":{"type":"string","description":"Akamai Client Secret"}},"additionalProperties":false,"description":"Cloud provider credential input, required fields dependent on which provider is chosen."},"aws":{"type":"object","properties":{"authenticationMode":{"type":"string","enum":["accessKey","crossAccountRole"],"description":"The provider authentication mode to use for this integration.","example":"accessKey"}},"additionalProperties":false,"description":"AWS specific data. Required when `provider` is `aws`."},"gcp":{"type":"object","properties":{"projectId":{"type":"string","description":"GCP Project ID"},"authenticationMode":{"type":"string","enum":["accessKey","crossAccountRole"],"description":"The provider authentication mode to use for this integration.","example":"accessKey"},"serviceAccountEmail":{"type":"string","description":"Service account email that will be used for cross account access."}},"required":["projectId"],"additionalProperties":false,"description":"GCP specific data. Required when `provider` is `gcp`."},"cloudflare":{"type":"object","properties":{"credentialType":{"type":"string","enum":["apiToken","originCAKey","globalApiKey"],"description":"The type of api key","example":"apiToken"}},"additionalProperties":false,"description":"Cloudflare specific data. Required when `provider` is `cloudflare`."},"createdAt":{"type":"string","format":"date-time","description":"The time the integration was created.","example":"2021-01-20T11:19:53.175Z"}},"required":["id","name","provider","credentials","createdAt"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Cloud Providers"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The name of the cloud provider integration.","example":"Example Integration"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"The description of the integration.","example":"This is a new cloud provider integration."},"provider":{"type":"string","enum":["aws","azure","civo","gcp","oci","cloudflare","coreweave","aiven","backblaze","akamai","byok"],"description":"Cloud provider to be used for the selected resource","example":"gcp"},"features":{"type":"array","items":{"type":"string","enum":["byoc","byoc-static-egress","byoc-custom-launch-templates","byoc-custom-vpc","byoc-logs","cloudfront","route53","registry-pull","registry-push","opentofu","workload-identity"],"description":"The type of provider integration.","example":"byoc"},"default":["byoc"]},"restrictions":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Enable or disable BYOC restrictions for this entity"},"teams":{"type":"array","items":{"type":"object","properties":{"teamId":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":45,"description":"The ID of the team that has access to this BYOC cluster"}},"required":["teamId"]},"description":"List of teams that have access to this BYOC cluster","default":[]}},"required":["enabled"],"additionalProperties":false,"description":"BYOC restrictions configuration for controlling team access"},"credentials":{"type":"object","properties":{"keyfileJson":{"type":"string","description":"Contents of a GCP key file."},"accessKey":{"type":"string","description":"AWS access key."},"secretKey":{"type":"string","description":"AWS secret key."},"roleArn":{"type":"string","description":"AWS IAM role ARN."},"externalId":{"type":"string","description":"AWS shared secret (external id)."},"apiKey":{"type":"string","description":"API key."},"email":{"type":"string","format":"email","description":"Email address for Cloudflare global API key."},"tenantId":{"type":"string","description":"Directory (tenant) ID "},"clientId":{"type":"string","description":"Application (client) ID "},"objectId":{"type":"string","description":"Object ID"},"secret":{"type":"string","description":"Secret"},"subscriptionId":{"type":"string","description":"Azure Subscription ID"},"region":{"type":"string","description":"OCI Authentication Region"},"tenancyId":{"type":"string","description":"OCI Tenancy ID"},"userId":{"type":"string","description":"User ID"},"fingerprint":{"type":"string","description":"Fingerprint"},"privateKey":{"type":"string","description":"OCI Private Key"},"passphrase":{"type":"string","description":"Passphrase"},"compartmentId":{"type":"string","description":"OCI Compartment ID"},"kubeconfig":{"type":"string","description":"Kubeconfig"},"applicationKeyId":{"type":"string","description":"Backblaze Application Key ID"},"applicationKey":{"type":"string","description":"Backblaze Application Key"},"host":{"type":"string","description":"Akamai Host"},"accessToken":{"type":"string","description":"Akamai Access Token"},"clientToken":{"type":"string","description":"Akamai Client Token"},"clientSecret":{"type":"string","description":"Akamai Client Secret"}},"additionalProperties":false,"description":"Cloud provider credential input, required fields dependent on which provider is chosen."},"aws":{"type":"object","properties":{"authenticationMode":{"type":"string","enum":["accessKey","crossAccountRole"],"description":"The provider authentication mode to use for this integration.","example":"accessKey"}},"additionalProperties":false,"description":"AWS specific data. Required when `provider` is `aws`."},"gcp":{"type":"object","properties":{"projectId":{"type":"string","description":"GCP Project ID"},"authenticationMode":{"type":"string","enum":["accessKey","crossAccountRole"],"description":"The provider authentication mode to use for this integration.","example":"accessKey"}},"required":["projectId"],"additionalProperties":false,"description":"GCP specific data. Required when `provider` is `gcp`."},"cloudflare":{"type":"object","properties":{"credentialType":{"type":"string","enum":["apiToken","originCAKey","globalApiKey"],"description":"The type of api key","example":"apiToken"}},"additionalProperties":false,"description":"Cloudflare specific data. Required when `provider` is `cloudflare`."}},"required":["name","provider","credentials"],"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Account > Cloud > Integrations > Create","x-nf-supports-orgs":true,"x-nf-team-scoped":true,"x-nf-cli-command":["put","cloud","integration"]},"v1-cloud-providers-integrations-put-team-scoped":{"operationId":"putCloudProvidersIntegrations","summary":"Put integration","description":"Creates or updates a integration.","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"integrationId","type":"string","required":true,"description":"ID of the provider integration","example":"gcp-integration-1","in":"path","schema":{"name":"integrationId","type":"string","required":true,"description":"ID of the provider integration","example":"gcp-integration-1","in":"path"}}],"responses":{"200":{"description":"Details about the created or updated integration.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"ID of the integration","example":"example-integration"},"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The name of the cloud provider integration.","example":"Example Integration"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"The description of the integration.","example":"This is a new cloud provider integration."},"provider":{"type":"string","enum":["aws","azure","civo","gcp","oci","cloudflare","coreweave","aiven","backblaze","akamai","byok"],"description":"Cloud provider to be used for the selected resource","example":"gcp"},"features":{"type":"array","items":{"type":"string","enum":["byoc","byoc-static-egress","byoc-custom-launch-templates","byoc-custom-vpc","byoc-logs","cloudfront","route53","registry-pull","registry-push","opentofu","workload-identity"],"description":"The type of provider integration.","example":"byoc"},"default":["byoc"]},"restrictions":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Enable or disable BYOC restrictions for this entity"},"teams":{"type":"array","items":{"type":"object","properties":{"teamId":{"type":"string","description":"The ID of the team that has access to this BYOC cluster"}},"required":["teamId"]},"description":"List of teams that have access to this BYOC cluster","default":[]}},"required":["enabled"],"additionalProperties":false,"description":"BYOC restrictions configuration for controlling team access"},"credentials":{"type":"object","properties":{"keyfileJson":{"type":"string","description":"Contents of a GCP key file."},"accessKey":{"type":"string","description":"AWS access key."},"secretKey":{"type":"string","description":"AWS secret key."},"roleArn":{"type":"string","description":"AWS IAM role ARN."},"externalId":{"type":"string","description":"AWS shared secret (external id)."},"apiKey":{"type":"string","description":"API key."},"email":{"type":"string","format":"email","description":"Email address for Cloudflare global API key."},"tenantId":{"type":"string","description":"Directory (tenant) ID "},"clientId":{"type":"string","description":"Application (client) ID "},"objectId":{"type":"string","description":"Object ID"},"secret":{"type":"string","description":"Secret"},"subscriptionId":{"type":"string","description":"Azure Subscription ID"},"region":{"type":"string","description":"OCI Authentication Region"},"tenancyId":{"type":"string","description":"OCI Tenancy ID"},"userId":{"type":"string","description":"User ID"},"fingerprint":{"type":"string","description":"Fingerprint"},"privateKey":{"type":"string","description":"OCI Private Key"},"passphrase":{"type":"string","description":"Passphrase"},"compartmentId":{"type":"string","description":"OCI Compartment ID"},"kubeconfig":{"type":"string","description":"Kubeconfig"},"applicationKeyId":{"type":"string","description":"Backblaze Application Key ID"},"applicationKey":{"type":"string","description":"Backblaze Application Key"},"host":{"type":"string","description":"Akamai Host"},"accessToken":{"type":"string","description":"Akamai Access Token"},"clientToken":{"type":"string","description":"Akamai Client Token"},"clientSecret":{"type":"string","description":"Akamai Client Secret"}},"additionalProperties":false,"description":"Cloud provider credential input, required fields dependent on which provider is chosen."},"aws":{"type":"object","properties":{"authenticationMode":{"type":"string","enum":["accessKey","crossAccountRole"],"description":"The provider authentication mode to use for this integration.","example":"accessKey"}},"additionalProperties":false,"description":"AWS specific data. Required when `provider` is `aws`."},"gcp":{"type":"object","properties":{"projectId":{"type":"string","description":"GCP Project ID"},"authenticationMode":{"type":"string","enum":["accessKey","crossAccountRole"],"description":"The provider authentication mode to use for this integration.","example":"accessKey"},"serviceAccountEmail":{"type":"string","description":"Service account email that will be used for cross account access."}},"required":["projectId"],"additionalProperties":false,"description":"GCP specific data. Required when `provider` is `gcp`."},"cloudflare":{"type":"object","properties":{"credentialType":{"type":"string","enum":["apiToken","originCAKey","globalApiKey"],"description":"The type of api key","example":"apiToken"}},"additionalProperties":false,"description":"Cloudflare specific data. Required when `provider` is `cloudflare`."},"createdAt":{"type":"string","format":"date-time","description":"The time the integration was created.","example":"2021-01-20T11:19:53.175Z"}},"required":["id","name","provider","credentials","createdAt"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Cloud Providers","team"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The name of the cloud provider integration.","example":"Example Integration"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"The description of the integration.","example":"This is a new cloud provider integration."},"provider":{"type":"string","enum":["aws","azure","civo","gcp","oci","cloudflare","coreweave","aiven","backblaze","akamai","byok"],"description":"Cloud provider to be used for the selected resource","example":"gcp"},"features":{"type":"array","items":{"type":"string","enum":["byoc","byoc-static-egress","byoc-custom-launch-templates","byoc-custom-vpc","byoc-logs","cloudfront","route53","registry-pull","registry-push","opentofu","workload-identity"],"description":"The type of provider integration.","example":"byoc"},"default":["byoc"]},"restrictions":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Enable or disable BYOC restrictions for this entity"},"teams":{"type":"array","items":{"type":"object","properties":{"teamId":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":45,"description":"The ID of the team that has access to this BYOC cluster"}},"required":["teamId"]},"description":"List of teams that have access to this BYOC cluster","default":[]}},"required":["enabled"],"additionalProperties":false,"description":"BYOC restrictions configuration for controlling team access"},"credentials":{"type":"object","properties":{"keyfileJson":{"type":"string","description":"Contents of a GCP key file."},"accessKey":{"type":"string","description":"AWS access key."},"secretKey":{"type":"string","description":"AWS secret key."},"roleArn":{"type":"string","description":"AWS IAM role ARN."},"externalId":{"type":"string","description":"AWS shared secret (external id)."},"apiKey":{"type":"string","description":"API key."},"email":{"type":"string","format":"email","description":"Email address for Cloudflare global API key."},"tenantId":{"type":"string","description":"Directory (tenant) ID "},"clientId":{"type":"string","description":"Application (client) ID "},"objectId":{"type":"string","description":"Object ID"},"secret":{"type":"string","description":"Secret"},"subscriptionId":{"type":"string","description":"Azure Subscription ID"},"region":{"type":"string","description":"OCI Authentication Region"},"tenancyId":{"type":"string","description":"OCI Tenancy ID"},"userId":{"type":"string","description":"User ID"},"fingerprint":{"type":"string","description":"Fingerprint"},"privateKey":{"type":"string","description":"OCI Private Key"},"passphrase":{"type":"string","description":"Passphrase"},"compartmentId":{"type":"string","description":"OCI Compartment ID"},"kubeconfig":{"type":"string","description":"Kubeconfig"},"applicationKeyId":{"type":"string","description":"Backblaze Application Key ID"},"applicationKey":{"type":"string","description":"Backblaze Application Key"},"host":{"type":"string","description":"Akamai Host"},"accessToken":{"type":"string","description":"Akamai Access Token"},"clientToken":{"type":"string","description":"Akamai Client Token"},"clientSecret":{"type":"string","description":"Akamai Client Secret"}},"additionalProperties":false,"description":"Cloud provider credential input, required fields dependent on which provider is chosen."},"aws":{"type":"object","properties":{"authenticationMode":{"type":"string","enum":["accessKey","crossAccountRole"],"description":"The provider authentication mode to use for this integration.","example":"accessKey"}},"additionalProperties":false,"description":"AWS specific data. Required when `provider` is `aws`."},"gcp":{"type":"object","properties":{"projectId":{"type":"string","description":"GCP Project ID"},"authenticationMode":{"type":"string","enum":["accessKey","crossAccountRole"],"description":"The provider authentication mode to use for this integration.","example":"accessKey"}},"required":["projectId"],"additionalProperties":false,"description":"GCP specific data. Required when `provider` is `gcp`."},"cloudflare":{"type":"object","properties":{"credentialType":{"type":"string","enum":["apiToken","originCAKey","globalApiKey"],"description":"The type of api key","example":"apiToken"}},"additionalProperties":false,"description":"Cloudflare specific data. Required when `provider` is `cloudflare`."}},"required":["name","provider","credentials"],"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Account > Cloud > Integrations > Create","x-nf-supports-orgs":true,"x-nf-team-scoped":true,"x-nf-cli-command":["put","cloud","integration"]},"v1-cloud-providers-integrations--integrationId--get":{"operationId":"getCloudProvidersIntegrationsIntegrationid","summary":"Get integration","description":"Get information about the given integration","parameters":[{"name":"integrationId","type":"string","required":true,"description":"ID of the provider integration","example":"gcp-integration-1","in":"path","schema":{"name":"integrationId","type":"string","required":true,"description":"ID of the provider integration","example":"gcp-integration-1","in":"path"}}],"responses":{"200":{"description":"Details about the given integration.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"ID of the integration","example":"example-integration"},"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The name of the cloud provider integration.","example":"Example Integration"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"The description of the integration.","example":"This is a new cloud provider integration."},"provider":{"type":"string","enum":["aws","azure","civo","gcp","oci","cloudflare","coreweave","aiven","backblaze","akamai","byok"],"description":"Cloud provider to be used for the selected resource","example":"gcp"},"features":{"type":"array","items":{"type":"string","enum":["byoc","byoc-static-egress","byoc-custom-launch-templates","byoc-custom-vpc","byoc-logs","cloudfront","route53","registry-pull","registry-push","opentofu","workload-identity"],"description":"The type of provider integration.","example":"byoc"},"default":["byoc"]},"restrictions":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Enable or disable BYOC restrictions for this entity"},"teams":{"type":"array","items":{"type":"object","properties":{"teamId":{"type":"string","description":"The ID of the team that has access to this BYOC cluster"}},"required":["teamId"]},"description":"List of teams that have access to this BYOC cluster","default":[]}},"required":["enabled"],"additionalProperties":false,"description":"BYOC restrictions configuration for controlling team access"},"credentials":{"type":"object","properties":{"keyfileJson":{"type":"string","description":"Contents of a GCP key file."},"accessKey":{"type":"string","description":"AWS access key."},"secretKey":{"type":"string","description":"AWS secret key."},"roleArn":{"type":"string","description":"AWS IAM role ARN."},"externalId":{"type":"string","description":"AWS shared secret (external id)."},"apiKey":{"type":"string","description":"API key."},"email":{"type":"string","format":"email","description":"Email address for Cloudflare global API key."},"tenantId":{"type":"string","description":"Directory (tenant) ID "},"clientId":{"type":"string","description":"Application (client) ID "},"objectId":{"type":"string","description":"Object ID"},"secret":{"type":"string","description":"Secret"},"subscriptionId":{"type":"string","description":"Azure Subscription ID"},"region":{"type":"string","description":"OCI Authentication Region"},"tenancyId":{"type":"string","description":"OCI Tenancy ID"},"userId":{"type":"string","description":"User ID"},"fingerprint":{"type":"string","description":"Fingerprint"},"privateKey":{"type":"string","description":"OCI Private Key"},"passphrase":{"type":"string","description":"Passphrase"},"compartmentId":{"type":"string","description":"OCI Compartment ID"},"kubeconfig":{"type":"string","description":"Kubeconfig"},"applicationKeyId":{"type":"string","description":"Backblaze Application Key ID"},"applicationKey":{"type":"string","description":"Backblaze Application Key"},"host":{"type":"string","description":"Akamai Host"},"accessToken":{"type":"string","description":"Akamai Access Token"},"clientToken":{"type":"string","description":"Akamai Client Token"},"clientSecret":{"type":"string","description":"Akamai Client Secret"}},"additionalProperties":false,"description":"Cloud provider credential input, required fields dependent on which provider is chosen."},"aws":{"type":"object","properties":{"authenticationMode":{"type":"string","enum":["accessKey","crossAccountRole"],"description":"The provider authentication mode to use for this integration.","example":"accessKey"}},"additionalProperties":false,"description":"AWS specific data. Required when `provider` is `aws`."},"gcp":{"type":"object","properties":{"projectId":{"type":"string","description":"GCP Project ID"},"authenticationMode":{"type":"string","enum":["accessKey","crossAccountRole"],"description":"The provider authentication mode to use for this integration.","example":"accessKey"},"serviceAccountEmail":{"type":"string","description":"Service account email that will be used for cross account access."}},"required":["projectId"],"additionalProperties":false,"description":"GCP specific data. Required when `provider` is `gcp`."},"cloudflare":{"type":"object","properties":{"credentialType":{"type":"string","enum":["apiToken","originCAKey","globalApiKey"],"description":"The type of api key","example":"apiToken"}},"additionalProperties":false,"description":"Cloudflare specific data. Required when `provider` is `cloudflare`."},"createdAt":{"type":"string","format":"date-time","description":"The time the integration was created.","example":"2021-01-20T11:19:53.175Z"}},"required":["id","name","provider","credentials","createdAt"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Cloud Providers","org"],"security":[],"x-nf-permission-required":"Account > Cloud > Integrations > Read","x-nf-supports-orgs":true,"x-nf-team-scoped":true,"x-nf-org-scoped":true,"x-nf-cli-command":["get","cloud","integration"]},"v1-cloud-providers-integrations--integrationId--get-team-scoped":{"operationId":"getCloudProvidersIntegrationsIntegrationid","summary":"Get integration","description":"Get information about the given integration","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"integrationId","type":"string","required":true,"description":"ID of the provider integration","example":"gcp-integration-1","in":"path","schema":{"name":"integrationId","type":"string","required":true,"description":"ID of the provider integration","example":"gcp-integration-1","in":"path"}}],"responses":{"200":{"description":"Details about the given integration.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"ID of the integration","example":"example-integration"},"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The name of the cloud provider integration.","example":"Example Integration"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"The description of the integration.","example":"This is a new cloud provider integration."},"provider":{"type":"string","enum":["aws","azure","civo","gcp","oci","cloudflare","coreweave","aiven","backblaze","akamai","byok"],"description":"Cloud provider to be used for the selected resource","example":"gcp"},"features":{"type":"array","items":{"type":"string","enum":["byoc","byoc-static-egress","byoc-custom-launch-templates","byoc-custom-vpc","byoc-logs","cloudfront","route53","registry-pull","registry-push","opentofu","workload-identity"],"description":"The type of provider integration.","example":"byoc"},"default":["byoc"]},"restrictions":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Enable or disable BYOC restrictions for this entity"},"teams":{"type":"array","items":{"type":"object","properties":{"teamId":{"type":"string","description":"The ID of the team that has access to this BYOC cluster"}},"required":["teamId"]},"description":"List of teams that have access to this BYOC cluster","default":[]}},"required":["enabled"],"additionalProperties":false,"description":"BYOC restrictions configuration for controlling team access"},"credentials":{"type":"object","properties":{"keyfileJson":{"type":"string","description":"Contents of a GCP key file."},"accessKey":{"type":"string","description":"AWS access key."},"secretKey":{"type":"string","description":"AWS secret key."},"roleArn":{"type":"string","description":"AWS IAM role ARN."},"externalId":{"type":"string","description":"AWS shared secret (external id)."},"apiKey":{"type":"string","description":"API key."},"email":{"type":"string","format":"email","description":"Email address for Cloudflare global API key."},"tenantId":{"type":"string","description":"Directory (tenant) ID "},"clientId":{"type":"string","description":"Application (client) ID "},"objectId":{"type":"string","description":"Object ID"},"secret":{"type":"string","description":"Secret"},"subscriptionId":{"type":"string","description":"Azure Subscription ID"},"region":{"type":"string","description":"OCI Authentication Region"},"tenancyId":{"type":"string","description":"OCI Tenancy ID"},"userId":{"type":"string","description":"User ID"},"fingerprint":{"type":"string","description":"Fingerprint"},"privateKey":{"type":"string","description":"OCI Private Key"},"passphrase":{"type":"string","description":"Passphrase"},"compartmentId":{"type":"string","description":"OCI Compartment ID"},"kubeconfig":{"type":"string","description":"Kubeconfig"},"applicationKeyId":{"type":"string","description":"Backblaze Application Key ID"},"applicationKey":{"type":"string","description":"Backblaze Application Key"},"host":{"type":"string","description":"Akamai Host"},"accessToken":{"type":"string","description":"Akamai Access Token"},"clientToken":{"type":"string","description":"Akamai Client Token"},"clientSecret":{"type":"string","description":"Akamai Client Secret"}},"additionalProperties":false,"description":"Cloud provider credential input, required fields dependent on which provider is chosen."},"aws":{"type":"object","properties":{"authenticationMode":{"type":"string","enum":["accessKey","crossAccountRole"],"description":"The provider authentication mode to use for this integration.","example":"accessKey"}},"additionalProperties":false,"description":"AWS specific data. Required when `provider` is `aws`."},"gcp":{"type":"object","properties":{"projectId":{"type":"string","description":"GCP Project ID"},"authenticationMode":{"type":"string","enum":["accessKey","crossAccountRole"],"description":"The provider authentication mode to use for this integration.","example":"accessKey"},"serviceAccountEmail":{"type":"string","description":"Service account email that will be used for cross account access."}},"required":["projectId"],"additionalProperties":false,"description":"GCP specific data. Required when `provider` is `gcp`."},"cloudflare":{"type":"object","properties":{"credentialType":{"type":"string","enum":["apiToken","originCAKey","globalApiKey"],"description":"The type of api key","example":"apiToken"}},"additionalProperties":false,"description":"Cloudflare specific data. Required when `provider` is `cloudflare`."},"createdAt":{"type":"string","format":"date-time","description":"The time the integration was created.","example":"2021-01-20T11:19:53.175Z"}},"required":["id","name","provider","credentials","createdAt"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Cloud Providers","team"],"security":[],"x-nf-permission-required":"Account > Cloud > Integrations > Read","x-nf-supports-orgs":true,"x-nf-team-scoped":true,"x-nf-org-scoped":true,"x-nf-cli-command":["get","cloud","integration"]},"v1-cloud-providers-integrations--integrationId--patch":{"operationId":"patchCloudProvidersIntegrationsIntegrationid","summary":"Patch integration","description":"Updates a integration.","parameters":[{"name":"integrationId","type":"string","required":true,"description":"ID of the provider integration","example":"gcp-integration-1","in":"path","schema":{"name":"integrationId","type":"string","required":true,"description":"ID of the provider integration","example":"gcp-integration-1","in":"path"}}],"responses":{"200":{"description":"Details about the updated integration.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"ID of the integration","example":"example-integration"},"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The name of the cloud provider integration.","example":"Example Integration"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"The description of the integration.","example":"This is a new cloud provider integration."},"provider":{"type":"string","enum":["aws","azure","civo","gcp","oci","cloudflare","coreweave","aiven","backblaze","akamai","byok"],"description":"Cloud provider to be used for the selected resource","example":"gcp"},"features":{"type":"array","items":{"type":"string","enum":["byoc","byoc-static-egress","byoc-custom-launch-templates","byoc-custom-vpc","byoc-logs","cloudfront","route53","registry-pull","registry-push","opentofu","workload-identity"],"description":"The type of provider integration.","example":"byoc"},"default":["byoc"]},"restrictions":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Enable or disable BYOC restrictions for this entity"},"teams":{"type":"array","items":{"type":"object","properties":{"teamId":{"type":"string","description":"The ID of the team that has access to this BYOC cluster"}},"required":["teamId"]},"description":"List of teams that have access to this BYOC cluster","default":[]}},"required":["enabled"],"additionalProperties":false,"description":"BYOC restrictions configuration for controlling team access"},"credentials":{"type":"object","properties":{"keyfileJson":{"type":"string","description":"Contents of a GCP key file."},"accessKey":{"type":"string","description":"AWS access key."},"secretKey":{"type":"string","description":"AWS secret key."},"roleArn":{"type":"string","description":"AWS IAM role ARN."},"externalId":{"type":"string","description":"AWS shared secret (external id)."},"apiKey":{"type":"string","description":"API key."},"email":{"type":"string","format":"email","description":"Email address for Cloudflare global API key."},"tenantId":{"type":"string","description":"Directory (tenant) ID "},"clientId":{"type":"string","description":"Application (client) ID "},"objectId":{"type":"string","description":"Object ID"},"secret":{"type":"string","description":"Secret"},"subscriptionId":{"type":"string","description":"Azure Subscription ID"},"region":{"type":"string","description":"OCI Authentication Region"},"tenancyId":{"type":"string","description":"OCI Tenancy ID"},"userId":{"type":"string","description":"User ID"},"fingerprint":{"type":"string","description":"Fingerprint"},"privateKey":{"type":"string","description":"OCI Private Key"},"passphrase":{"type":"string","description":"Passphrase"},"compartmentId":{"type":"string","description":"OCI Compartment ID"},"kubeconfig":{"type":"string","description":"Kubeconfig"},"applicationKeyId":{"type":"string","description":"Backblaze Application Key ID"},"applicationKey":{"type":"string","description":"Backblaze Application Key"},"host":{"type":"string","description":"Akamai Host"},"accessToken":{"type":"string","description":"Akamai Access Token"},"clientToken":{"type":"string","description":"Akamai Client Token"},"clientSecret":{"type":"string","description":"Akamai Client Secret"}},"additionalProperties":false,"description":"Cloud provider credential input, required fields dependent on which provider is chosen."},"aws":{"type":"object","properties":{"authenticationMode":{"type":"string","enum":["accessKey","crossAccountRole"],"description":"The provider authentication mode to use for this integration.","example":"accessKey"}},"additionalProperties":false,"description":"AWS specific data. Required when `provider` is `aws`."},"gcp":{"type":"object","properties":{"projectId":{"type":"string","description":"GCP Project ID"},"authenticationMode":{"type":"string","enum":["accessKey","crossAccountRole"],"description":"The provider authentication mode to use for this integration.","example":"accessKey"},"serviceAccountEmail":{"type":"string","description":"Service account email that will be used for cross account access."}},"required":["projectId"],"additionalProperties":false,"description":"GCP specific data. Required when `provider` is `gcp`."},"cloudflare":{"type":"object","properties":{"credentialType":{"type":"string","enum":["apiToken","originCAKey","globalApiKey"],"description":"The type of api key","example":"apiToken"}},"additionalProperties":false,"description":"Cloudflare specific data. Required when `provider` is `cloudflare`."},"createdAt":{"type":"string","format":"date-time","description":"The time the integration was created.","example":"2021-01-20T11:19:53.175Z"}},"required":["id","name","provider","credentials","createdAt"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Cloud Providers"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"The description of the integration.","example":"This is a new cloud provider integration."},"features":{"type":"array","items":{"type":"string","enum":["byoc","byoc-static-egress","byoc-custom-launch-templates","byoc-custom-vpc","byoc-logs","cloudfront","route53","registry-pull","registry-push","opentofu","workload-identity"],"description":"The type of provider integration.","example":"byoc"}},"restrictions":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Enable or disable BYOC restrictions for this entity"},"teams":{"type":"array","items":{"type":"object","properties":{"teamId":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":45,"description":"The ID of the team that has access to this BYOC cluster"}},"required":["teamId"]},"description":"List of teams that have access to this BYOC cluster","default":[]}},"required":["enabled"],"additionalProperties":false,"description":"BYOC restrictions configuration for controlling team access"},"credentials":{"type":"object","properties":{"keyfileJson":{"type":"string","description":"Contents of a GCP key file."},"accessKey":{"type":"string","description":"AWS access key."},"secretKey":{"type":"string","description":"AWS secret key."},"roleArn":{"type":"string","description":"AWS IAM role ARN."},"externalId":{"type":"string","description":"AWS shared secret (external id)."},"apiKey":{"type":"string","description":"API key."},"email":{"type":"string","format":"email","description":"Email address for Cloudflare global API key."},"tenantId":{"type":"string","description":"Directory (tenant) ID "},"clientId":{"type":"string","description":"Application (client) ID "},"objectId":{"type":"string","description":"Object ID"},"secret":{"type":"string","description":"Secret"},"subscriptionId":{"type":"string","description":"Azure Subscription ID"},"region":{"type":"string","description":"OCI Authentication Region"},"tenancyId":{"type":"string","description":"OCI Tenancy ID"},"userId":{"type":"string","description":"User ID"},"fingerprint":{"type":"string","description":"Fingerprint"},"privateKey":{"type":"string","description":"OCI Private Key"},"passphrase":{"type":"string","description":"Passphrase"},"compartmentId":{"type":"string","description":"OCI Compartment ID"},"kubeconfig":{"type":"string","description":"Kubeconfig"},"applicationKeyId":{"type":"string","description":"Backblaze Application Key ID"},"applicationKey":{"type":"string","description":"Backblaze Application Key"},"host":{"type":"string","description":"Akamai Host"},"accessToken":{"type":"string","description":"Akamai Access Token"},"clientToken":{"type":"string","description":"Akamai Client Token"},"clientSecret":{"type":"string","description":"Akamai Client Secret"}},"additionalProperties":false,"description":"Cloud provider credential input, required fields dependent on which provider is chosen."}},"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Account > Cloud > Integrations > Update","x-nf-supports-orgs":true,"x-nf-team-scoped":true,"x-nf-cli-command":["patch","cloud","integration"]},"v1-cloud-providers-integrations--integrationId--patch-team-scoped":{"operationId":"patchCloudProvidersIntegrationsIntegrationid","summary":"Patch integration","description":"Updates a integration.","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"integrationId","type":"string","required":true,"description":"ID of the provider integration","example":"gcp-integration-1","in":"path","schema":{"name":"integrationId","type":"string","required":true,"description":"ID of the provider integration","example":"gcp-integration-1","in":"path"}}],"responses":{"200":{"description":"Details about the updated integration.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"ID of the integration","example":"example-integration"},"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The name of the cloud provider integration.","example":"Example Integration"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"The description of the integration.","example":"This is a new cloud provider integration."},"provider":{"type":"string","enum":["aws","azure","civo","gcp","oci","cloudflare","coreweave","aiven","backblaze","akamai","byok"],"description":"Cloud provider to be used for the selected resource","example":"gcp"},"features":{"type":"array","items":{"type":"string","enum":["byoc","byoc-static-egress","byoc-custom-launch-templates","byoc-custom-vpc","byoc-logs","cloudfront","route53","registry-pull","registry-push","opentofu","workload-identity"],"description":"The type of provider integration.","example":"byoc"},"default":["byoc"]},"restrictions":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Enable or disable BYOC restrictions for this entity"},"teams":{"type":"array","items":{"type":"object","properties":{"teamId":{"type":"string","description":"The ID of the team that has access to this BYOC cluster"}},"required":["teamId"]},"description":"List of teams that have access to this BYOC cluster","default":[]}},"required":["enabled"],"additionalProperties":false,"description":"BYOC restrictions configuration for controlling team access"},"credentials":{"type":"object","properties":{"keyfileJson":{"type":"string","description":"Contents of a GCP key file."},"accessKey":{"type":"string","description":"AWS access key."},"secretKey":{"type":"string","description":"AWS secret key."},"roleArn":{"type":"string","description":"AWS IAM role ARN."},"externalId":{"type":"string","description":"AWS shared secret (external id)."},"apiKey":{"type":"string","description":"API key."},"email":{"type":"string","format":"email","description":"Email address for Cloudflare global API key."},"tenantId":{"type":"string","description":"Directory (tenant) ID "},"clientId":{"type":"string","description":"Application (client) ID "},"objectId":{"type":"string","description":"Object ID"},"secret":{"type":"string","description":"Secret"},"subscriptionId":{"type":"string","description":"Azure Subscription ID"},"region":{"type":"string","description":"OCI Authentication Region"},"tenancyId":{"type":"string","description":"OCI Tenancy ID"},"userId":{"type":"string","description":"User ID"},"fingerprint":{"type":"string","description":"Fingerprint"},"privateKey":{"type":"string","description":"OCI Private Key"},"passphrase":{"type":"string","description":"Passphrase"},"compartmentId":{"type":"string","description":"OCI Compartment ID"},"kubeconfig":{"type":"string","description":"Kubeconfig"},"applicationKeyId":{"type":"string","description":"Backblaze Application Key ID"},"applicationKey":{"type":"string","description":"Backblaze Application Key"},"host":{"type":"string","description":"Akamai Host"},"accessToken":{"type":"string","description":"Akamai Access Token"},"clientToken":{"type":"string","description":"Akamai Client Token"},"clientSecret":{"type":"string","description":"Akamai Client Secret"}},"additionalProperties":false,"description":"Cloud provider credential input, required fields dependent on which provider is chosen."},"aws":{"type":"object","properties":{"authenticationMode":{"type":"string","enum":["accessKey","crossAccountRole"],"description":"The provider authentication mode to use for this integration.","example":"accessKey"}},"additionalProperties":false,"description":"AWS specific data. Required when `provider` is `aws`."},"gcp":{"type":"object","properties":{"projectId":{"type":"string","description":"GCP Project ID"},"authenticationMode":{"type":"string","enum":["accessKey","crossAccountRole"],"description":"The provider authentication mode to use for this integration.","example":"accessKey"},"serviceAccountEmail":{"type":"string","description":"Service account email that will be used for cross account access."}},"required":["projectId"],"additionalProperties":false,"description":"GCP specific data. Required when `provider` is `gcp`."},"cloudflare":{"type":"object","properties":{"credentialType":{"type":"string","enum":["apiToken","originCAKey","globalApiKey"],"description":"The type of api key","example":"apiToken"}},"additionalProperties":false,"description":"Cloudflare specific data. Required when `provider` is `cloudflare`."},"createdAt":{"type":"string","format":"date-time","description":"The time the integration was created.","example":"2021-01-20T11:19:53.175Z"}},"required":["id","name","provider","credentials","createdAt"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Cloud Providers","team"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"The description of the integration.","example":"This is a new cloud provider integration."},"features":{"type":"array","items":{"type":"string","enum":["byoc","byoc-static-egress","byoc-custom-launch-templates","byoc-custom-vpc","byoc-logs","cloudfront","route53","registry-pull","registry-push","opentofu","workload-identity"],"description":"The type of provider integration.","example":"byoc"}},"restrictions":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Enable or disable BYOC restrictions for this entity"},"teams":{"type":"array","items":{"type":"object","properties":{"teamId":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":45,"description":"The ID of the team that has access to this BYOC cluster"}},"required":["teamId"]},"description":"List of teams that have access to this BYOC cluster","default":[]}},"required":["enabled"],"additionalProperties":false,"description":"BYOC restrictions configuration for controlling team access"},"credentials":{"type":"object","properties":{"keyfileJson":{"type":"string","description":"Contents of a GCP key file."},"accessKey":{"type":"string","description":"AWS access key."},"secretKey":{"type":"string","description":"AWS secret key."},"roleArn":{"type":"string","description":"AWS IAM role ARN."},"externalId":{"type":"string","description":"AWS shared secret (external id)."},"apiKey":{"type":"string","description":"API key."},"email":{"type":"string","format":"email","description":"Email address for Cloudflare global API key."},"tenantId":{"type":"string","description":"Directory (tenant) ID "},"clientId":{"type":"string","description":"Application (client) ID "},"objectId":{"type":"string","description":"Object ID"},"secret":{"type":"string","description":"Secret"},"subscriptionId":{"type":"string","description":"Azure Subscription ID"},"region":{"type":"string","description":"OCI Authentication Region"},"tenancyId":{"type":"string","description":"OCI Tenancy ID"},"userId":{"type":"string","description":"User ID"},"fingerprint":{"type":"string","description":"Fingerprint"},"privateKey":{"type":"string","description":"OCI Private Key"},"passphrase":{"type":"string","description":"Passphrase"},"compartmentId":{"type":"string","description":"OCI Compartment ID"},"kubeconfig":{"type":"string","description":"Kubeconfig"},"applicationKeyId":{"type":"string","description":"Backblaze Application Key ID"},"applicationKey":{"type":"string","description":"Backblaze Application Key"},"host":{"type":"string","description":"Akamai Host"},"accessToken":{"type":"string","description":"Akamai Access Token"},"clientToken":{"type":"string","description":"Akamai Client Token"},"clientSecret":{"type":"string","description":"Akamai Client Secret"}},"additionalProperties":false,"description":"Cloud provider credential input, required fields dependent on which provider is chosen."}},"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Account > Cloud > Integrations > Update","x-nf-supports-orgs":true,"x-nf-team-scoped":true,"x-nf-cli-command":["patch","cloud","integration"]},"v1-cloud-providers-integrations--integrationId--delete":{"operationId":"deleteCloudProvidersIntegrationsIntegrationid","summary":"Delete integration","description":"Delete the given integration. Fails if the integration is associated with existing clusters.","parameters":[{"name":"integrationId","type":"string","required":true,"description":"ID of the provider integration","example":"gcp-integration-1","in":"path","schema":{"name":"integrationId","type":"string","required":true,"description":"ID of the provider integration","example":"gcp-integration-1","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}},"409":{"description":"The integration couldn't be deleted as it has dependencies that have not been deleted"}},"tags":["Cloud Providers","org"],"security":[],"x-nf-permission-required":"Account > Cloud > Integrations > Delete","x-nf-supports-orgs":true,"x-nf-team-scoped":true,"x-nf-org-scoped":true,"x-nf-cli-command":["delete","cloud","integration"]},"v1-cloud-providers-integrations--integrationId--delete-team-scoped":{"operationId":"deleteCloudProvidersIntegrationsIntegrationid","summary":"Delete integration","description":"Delete the given integration. Fails if the integration is associated with existing clusters.","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"integrationId","type":"string","required":true,"description":"ID of the provider integration","example":"gcp-integration-1","in":"path","schema":{"name":"integrationId","type":"string","required":true,"description":"ID of the provider integration","example":"gcp-integration-1","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}},"409":{"description":"The integration couldn't be deleted as it has dependencies that have not been deleted"}},"tags":["Cloud Providers","team"],"security":[],"x-nf-permission-required":"Account > Cloud > Integrations > Delete","x-nf-supports-orgs":true,"x-nf-team-scoped":true,"x-nf-org-scoped":true,"x-nf-cli-command":["delete","cloud","integration"]},"v1-dns-id-get":{"operationId":"getDnsId","summary":"Get DNS ID","description":"Returns the partially random string used when generating host names for the authenticated account.","parameters":[],"responses":{"200":{"description":"Data about the DNS ID.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"dns":{"type":"string","description":"The partially random string associated with the authenticated account, used for generating DNS entries.","example":"exam-1234"}},"required":["dns"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Miscellaneous"],"security":[],"x-nf-permission-required":"Project > Projects > Manage > Read","x-nf-team-scoped":true,"x-nf-cli-command":["get","dns-id"]},"v1-dns-id-get-team-scoped":{"operationId":"getDnsId","summary":"Get DNS ID","description":"Returns the partially random string used when generating host names for the authenticated account.","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}}],"responses":{"200":{"description":"Data about the DNS ID.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"dns":{"type":"string","description":"The partially random string associated with the authenticated account, used for generating DNS entries.","example":"exam-1234"}},"required":["dns"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Miscellaneous","team"],"security":[],"x-nf-permission-required":"Project > Projects > Manage > Read","x-nf-team-scoped":true,"x-nf-cli-command":["get","dns-id"]},"v1-domains-get":{"operationId":"getDomains","summary":"List domains","description":"Lists available domains","parameters":[{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query","schema":{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query"}},{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query","schema":{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query"}},{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query","schema":{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query"}}],"responses":{"200":{"description":"A list of domains registered to this account.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"domains":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"The domain name.","example":"example.com"},"status":{"type":"string","enum":["pending","verified"],"description":"The status of the domain verification.","example":"verified"},"hostname":{"type":"string","description":"The hostname to add to your domain's DNS records as a TXT record to verify the domain.","example":"nfverify1608026055"},"token":{"type":"string","description":"The token to add as the content of the TXT record to verify the domain.","example":"e596987b52855a4a773ef580ce2985d7746b37ce8b2a443d20fa27b913d8f57"}},"required":["name","status","hostname","token"],"additionalProperties":false,"description":"Details about a domain."},"description":"A list of domains registered to this account."}},"required":["domains"],"additionalProperties":false,"description":"Result data."},"pagination":{"type":"object","properties":{"hasNextPage":{"type":"boolean","description":"Is there another page of results available?","example":false},"cursor":{"type":"string","description":"The cursor to access the next page of results."},"count":{"type":"number","format":"float","description":"The number of results returned by this request.","example":1}},"required":["hasNextPage","count"],"additionalProperties":false,"description":"Data about the endpoint pagination."}},"required":["data","pagination"],"additionalProperties":false,"description":"Response object."}}},"tags":["Domains"],"security":[],"x-nf-permission-required":"Account > Domains > General > Read","x-nf-team-scoped":true,"x-nf-cli-command":["list","domains"]},"v1-domains-get-team-scoped":{"operationId":"getDomains","summary":"List domains","description":"Lists available domains","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query","schema":{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query"}},{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query","schema":{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query"}},{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query","schema":{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query"}}],"responses":{"200":{"description":"A list of domains registered to this account.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"domains":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"The domain name.","example":"example.com"},"status":{"type":"string","enum":["pending","verified"],"description":"The status of the domain verification.","example":"verified"},"hostname":{"type":"string","description":"The hostname to add to your domain's DNS records as a TXT record to verify the domain.","example":"nfverify1608026055"},"token":{"type":"string","description":"The token to add as the content of the TXT record to verify the domain.","example":"e596987b52855a4a773ef580ce2985d7746b37ce8b2a443d20fa27b913d8f57"}},"required":["name","status","hostname","token"],"additionalProperties":false,"description":"Details about a domain."},"description":"A list of domains registered to this account."}},"required":["domains"],"additionalProperties":false,"description":"Result data."},"pagination":{"type":"object","properties":{"hasNextPage":{"type":"boolean","description":"Is there another page of results available?","example":false},"cursor":{"type":"string","description":"The cursor to access the next page of results."},"count":{"type":"number","format":"float","description":"The number of results returned by this request.","example":1}},"required":["hasNextPage","count"],"additionalProperties":false,"description":"Data about the endpoint pagination."}},"required":["data","pagination"],"additionalProperties":false,"description":"Response object."}}},"tags":["Domains","team"],"security":[],"x-nf-permission-required":"Account > Domains > General > Read","x-nf-team-scoped":true,"x-nf-cli-command":["list","domains"]},"v1-domains-post":{"operationId":"postDomains","summary":"Create new domain","description":"Registers a new domain","parameters":[],"responses":{"200":{"description":"Details about the newly added domain.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"name":{"type":"string","description":"The domain name.","example":"example.com"},"status":{"type":"string","enum":["pending","verified"],"description":"The status of the domain verification.","example":"pending"},"hostname":{"type":"string","description":"The hostname to add to your domain's DNS records as a TXT record to verify the domain.","example":"nfverify1608026055"},"token":{"type":"string","description":"The token to add as the content of the TXT record to verify the domain.","example":"e596987b52855a4a773ef580ce2985d7746b37ce8b2a443d20fa27b913d8f57"},"redirect":{"type":"object","properties":{"mode":{"type":"string","description":"Domain redirect mode.","example":"default"},"target":{"type":"object","properties":{"record":{"type":"string","description":"Expected CNAME target of the wildcard redirect."}},"additionalProperties":false}},"required":["mode"],"additionalProperties":false,"description":"Configuration regarding the domain redirect set up."},"certificates":{"type":"object","properties":{"mode":{"type":"string","description":"Domain certificate mode.","example":"default"},"dcvRecord":{"type":"string","description":"DCV CNAME record used to provision wildcard certificates."},"dcvTarget":{"type":"object","properties":{"record":{"type":"string","description":"Expected CNAME target of the dcvRecord."}},"additionalProperties":false},"status":{"type":"object","properties":{"expiryDate":{"type":"string","format":"date-time","description":"Expiry date of the current certificate."}},"additionalProperties":false,"description":"Certificate status for wildcard domains."}},"required":["mode"],"additionalProperties":false,"description":"Configuration regarding the domain certificate set up."}},"required":["name","status"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}},"400":{"description":"The domain is not valid, possibly because it is too long."},"409":{"description":"The domain is already registered with this account."}},"tags":["Domains"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"domain":{"type":"string","pattern":"^((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+$","description":"The domain name to register.","example":"example.com"},"redirect":{"type":"object","properties":{"mode":{"type":"string","enum":["wildcard","default"],"description":"Domain redirect mode to be used.","example":"default","default":"default"},"region":{"type":"string","description":"Northflank PaaS region the wildcard redirect should be pointed at."},"cluster":{"type":"string","description":"BYOC cluster the wildcard redirect should be pointed at."}},"additionalProperties":false,"description":"Optional configuration regarding the domain redirect set up."},"options":{"type":"object","properties":{"autoVerify":{"type":"boolean","description":"The domain will be automatically verified on creation. Only configurable if the relevant feature flag is enabled for you account."}},"additionalProperties":false},"certificates":{"type":"object","properties":{"mode":{"type":"string","enum":["wildcard","wildcard-import","default"],"description":"Certificate provisioning mode to be used.","example":"default","default":"default"},"certificateInput":{"type":"object","properties":{"certificateInput":{"type":"object","properties":{"is":{"enum":["wildcard-import"]},"then":{"type":"object","properties":{"privateKey":{"type":"string","description":"Certificate private key."},"certificateChain":{"type":"string","description":"Certificate chain. May consist of one or more certificates."}},"required":["privateKey","certificateChain"],"additionalProperties":false}},"required":["then"],"additionalProperties":false,"description":"Certificate data - required when `mode` is set to `wildcard-import`"}},"additionalProperties":false}},"additionalProperties":false,"description":"Optional configuration regarding the domain certificate set up."}},"required":["domain"],"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Account > Domains > General > Create","x-nf-team-scoped":true,"x-nf-cli-command":["create","domain"]},"v1-domains-post-team-scoped":{"operationId":"postDomains","summary":"Create new domain","description":"Registers a new domain","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}}],"responses":{"200":{"description":"Details about the newly added domain.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"name":{"type":"string","description":"The domain name.","example":"example.com"},"status":{"type":"string","enum":["pending","verified"],"description":"The status of the domain verification.","example":"pending"},"hostname":{"type":"string","description":"The hostname to add to your domain's DNS records as a TXT record to verify the domain.","example":"nfverify1608026055"},"token":{"type":"string","description":"The token to add as the content of the TXT record to verify the domain.","example":"e596987b52855a4a773ef580ce2985d7746b37ce8b2a443d20fa27b913d8f57"},"redirect":{"type":"object","properties":{"mode":{"type":"string","description":"Domain redirect mode.","example":"default"},"target":{"type":"object","properties":{"record":{"type":"string","description":"Expected CNAME target of the wildcard redirect."}},"additionalProperties":false}},"required":["mode"],"additionalProperties":false,"description":"Configuration regarding the domain redirect set up."},"certificates":{"type":"object","properties":{"mode":{"type":"string","description":"Domain certificate mode.","example":"default"},"dcvRecord":{"type":"string","description":"DCV CNAME record used to provision wildcard certificates."},"dcvTarget":{"type":"object","properties":{"record":{"type":"string","description":"Expected CNAME target of the dcvRecord."}},"additionalProperties":false},"status":{"type":"object","properties":{"expiryDate":{"type":"string","format":"date-time","description":"Expiry date of the current certificate."}},"additionalProperties":false,"description":"Certificate status for wildcard domains."}},"required":["mode"],"additionalProperties":false,"description":"Configuration regarding the domain certificate set up."}},"required":["name","status"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}},"400":{"description":"The domain is not valid, possibly because it is too long."},"409":{"description":"The domain is already registered with this account."}},"tags":["Domains","team"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"domain":{"type":"string","pattern":"^((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+$","description":"The domain name to register.","example":"example.com"},"redirect":{"type":"object","properties":{"mode":{"type":"string","enum":["wildcard","default"],"description":"Domain redirect mode to be used.","example":"default","default":"default"},"region":{"type":"string","description":"Northflank PaaS region the wildcard redirect should be pointed at."},"cluster":{"type":"string","description":"BYOC cluster the wildcard redirect should be pointed at."}},"additionalProperties":false,"description":"Optional configuration regarding the domain redirect set up."},"options":{"type":"object","properties":{"autoVerify":{"type":"boolean","description":"The domain will be automatically verified on creation. Only configurable if the relevant feature flag is enabled for you account."}},"additionalProperties":false},"certificates":{"type":"object","properties":{"mode":{"type":"string","enum":["wildcard","wildcard-import","default"],"description":"Certificate provisioning mode to be used.","example":"default","default":"default"},"certificateInput":{"type":"object","properties":{"certificateInput":{"type":"object","properties":{"is":{"enum":["wildcard-import"]},"then":{"type":"object","properties":{"privateKey":{"type":"string","description":"Certificate private key."},"certificateChain":{"type":"string","description":"Certificate chain. May consist of one or more certificates."}},"required":["privateKey","certificateChain"],"additionalProperties":false}},"required":["then"],"additionalProperties":false,"description":"Certificate data - required when `mode` is set to `wildcard-import`"}},"additionalProperties":false}},"additionalProperties":false,"description":"Optional configuration regarding the domain certificate set up."}},"required":["domain"],"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Account > Domains > General > Create","x-nf-team-scoped":true,"x-nf-cli-command":["create","domain"]},"v1-domains--domain--get":{"operationId":"getDomainsDomain","summary":"Get domain","description":"Gets details about domain","parameters":[{"name":"domain","type":"string","required":true,"description":"Name of the domain","example":"example.com","in":"path","schema":{"name":"domain","type":"string","required":true,"description":"Name of the domain","example":"example.com","in":"path"}}],"responses":{"200":{"description":"Details about the given domain.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"name":{"type":"string","description":"The domain name.","example":"example.com"},"status":{"type":"string","enum":["pending","verified"],"description":"The status of the domain verification.","example":"pending"},"hostname":{"type":"string","description":"The hostname to add to your domain's DNS records as a TXT record to verify the domain.","example":"nfverify1608026055"},"token":{"type":"string","description":"The token to add as the content of the TXT record to verify the domain.","example":"e596987b52855a4a773ef580ce2985d7746b37ce8b2a443d20fa27b913d8f57"},"redirect":{"type":"object","properties":{"mode":{"type":"string","description":"Domain redirect mode.","example":"default"},"target":{"type":"object","properties":{"record":{"type":"string","description":"Expected CNAME target of the wildcard redirect."}},"additionalProperties":false}},"required":["mode"],"additionalProperties":false,"description":"Configuration regarding the domain redirect set up."},"certificates":{"type":"object","properties":{"mode":{"type":"string","description":"Domain certificate mode.","example":"default"},"dcvRecord":{"type":"string","description":"DCV CNAME record used to provision wildcard certificates."},"dcvTarget":{"type":"object","properties":{"record":{"type":"string","description":"Expected CNAME target of the dcvRecord."}},"additionalProperties":false},"status":{"type":"object","properties":{"expiryDate":{"type":"string","format":"date-time","description":"Expiry date of the current certificate."}},"additionalProperties":false,"description":"Certificate status for wildcard domains."}},"required":["mode"],"additionalProperties":false,"description":"Configuration regarding the domain certificate set up."},"subdomains":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"The subdomain added, or -default for the empty subdomain.","example":"app"},"fullName":{"type":"string","description":"The full domain including the subdomain.","example":"app.example.com"}},"required":["name","fullName"],"additionalProperties":false,"description":"Details about a subdomain."},"description":"A list of subdomains added to this domain."}},"required":["name","status","subdomains"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Domains"],"security":[],"x-nf-permission-required":"Account > Domains > General > Read","x-nf-team-scoped":true,"x-nf-cli-command":["get","domain"]},"v1-domains--domain--get-team-scoped":{"operationId":"getDomainsDomain","summary":"Get domain","description":"Gets details about domain","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"domain","type":"string","required":true,"description":"Name of the domain","example":"example.com","in":"path","schema":{"name":"domain","type":"string","required":true,"description":"Name of the domain","example":"example.com","in":"path"}}],"responses":{"200":{"description":"Details about the given domain.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"name":{"type":"string","description":"The domain name.","example":"example.com"},"status":{"type":"string","enum":["pending","verified"],"description":"The status of the domain verification.","example":"pending"},"hostname":{"type":"string","description":"The hostname to add to your domain's DNS records as a TXT record to verify the domain.","example":"nfverify1608026055"},"token":{"type":"string","description":"The token to add as the content of the TXT record to verify the domain.","example":"e596987b52855a4a773ef580ce2985d7746b37ce8b2a443d20fa27b913d8f57"},"redirect":{"type":"object","properties":{"mode":{"type":"string","description":"Domain redirect mode.","example":"default"},"target":{"type":"object","properties":{"record":{"type":"string","description":"Expected CNAME target of the wildcard redirect."}},"additionalProperties":false}},"required":["mode"],"additionalProperties":false,"description":"Configuration regarding the domain redirect set up."},"certificates":{"type":"object","properties":{"mode":{"type":"string","description":"Domain certificate mode.","example":"default"},"dcvRecord":{"type":"string","description":"DCV CNAME record used to provision wildcard certificates."},"dcvTarget":{"type":"object","properties":{"record":{"type":"string","description":"Expected CNAME target of the dcvRecord."}},"additionalProperties":false},"status":{"type":"object","properties":{"expiryDate":{"type":"string","format":"date-time","description":"Expiry date of the current certificate."}},"additionalProperties":false,"description":"Certificate status for wildcard domains."}},"required":["mode"],"additionalProperties":false,"description":"Configuration regarding the domain certificate set up."},"subdomains":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"The subdomain added, or -default for the empty subdomain.","example":"app"},"fullName":{"type":"string","description":"The full domain including the subdomain.","example":"app.example.com"}},"required":["name","fullName"],"additionalProperties":false,"description":"Details about a subdomain."},"description":"A list of subdomains added to this domain."}},"required":["name","status","subdomains"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Domains","team"],"security":[],"x-nf-permission-required":"Account > Domains > General > Read","x-nf-team-scoped":true,"x-nf-cli-command":["get","domain"]},"v1-domains--domain--delete":{"operationId":"deleteDomainsDomain","summary":"Delete domain","description":"Deletes a domain and each of its registered subdomains.","parameters":[{"name":"domain","type":"string","required":true,"description":"Name of the domain","example":"example.com","in":"path","schema":{"name":"domain","type":"string","required":true,"description":"Name of the domain","example":"example.com","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Domains"],"security":[],"x-nf-permission-required":"Account > Domains > General > Delete","x-nf-team-scoped":true,"x-nf-cli-command":["delete","domain"]},"v1-domains--domain--delete-team-scoped":{"operationId":"deleteDomainsDomain","summary":"Delete domain","description":"Deletes a domain and each of its registered subdomains.","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"domain","type":"string","required":true,"description":"Name of the domain","example":"example.com","in":"path","schema":{"name":"domain","type":"string","required":true,"description":"Name of the domain","example":"example.com","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Domains","team"],"security":[],"x-nf-permission-required":"Account > Domains > General > Delete","x-nf-team-scoped":true,"x-nf-cli-command":["delete","domain"]},"v1-domains--domain--certificate-get":{"operationId":"getDomainsDomainCertificate","summary":"Get domain certificate","description":"Retrieve certificate data for a domain to verify its contents.","parameters":[{"name":"domain","type":"string","required":true,"description":"Name of the domain","example":"example.com","in":"path","schema":{"name":"domain","type":"string","required":true,"description":"Name of the domain","example":"example.com","in":"path"}}],"responses":{"200":{"description":"Details about the domain certificate.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"certificateChain":{"type":"string","description":"Certificate chain. May consist of one or more certificates."},"certificate":{"type":"string","description":"Certificate extracted from the certificate chain."},"issuerCertificate":{"type":"string","description":"Issuer certificate extracted from the certificate chain."},"privateKey":{"type":"string","description":"Certificate private key."}},"required":["certificateChain","certificate","issuerCertificate","privateKey"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Domains"],"security":[],"x-nf-permission-required":"Account > Domains > General > Read","x-nf-team-scoped":true,"x-nf-cli-command":["get","domain-certificate"]},"v1-domains--domain--certificate-get-team-scoped":{"operationId":"getDomainsDomainCertificate","summary":"Get domain certificate","description":"Retrieve certificate data for a domain to verify its contents.","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"domain","type":"string","required":true,"description":"Name of the domain","example":"example.com","in":"path","schema":{"name":"domain","type":"string","required":true,"description":"Name of the domain","example":"example.com","in":"path"}}],"responses":{"200":{"description":"Details about the domain certificate.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"certificateChain":{"type":"string","description":"Certificate chain. May consist of one or more certificates."},"certificate":{"type":"string","description":"Certificate extracted from the certificate chain."},"issuerCertificate":{"type":"string","description":"Issuer certificate extracted from the certificate chain."},"privateKey":{"type":"string","description":"Certificate private key."}},"required":["certificateChain","certificate","issuerCertificate","privateKey"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Domains","team"],"security":[],"x-nf-permission-required":"Account > Domains > General > Read","x-nf-team-scoped":true,"x-nf-cli-command":["get","domain-certificate"]},"v1-domains--domain--import-post":{"operationId":"postDomainsDomainImport","summary":"Import domain certificate","description":"Import a certificate for the domain","parameters":[{"name":"domain","type":"string","required":true,"description":"Name of the domain","example":"example.com","in":"path","schema":{"name":"domain","type":"string","required":true,"description":"Name of the domain","example":"example.com","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}},"400":{"description":"Could not parse certificate."},"409":{"description":"Expiry date must be at least one month in the future."}},"tags":["Domains"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"certificate":{"type":"object","properties":{"privateKey":{"type":"string","description":"Certificate private key."},"certificateChain":{"type":"string","description":"Certificate chain. May consist of one or more certificates."}},"required":["privateKey","certificateChain"],"additionalProperties":false,"description":"Certificate to import."}},"required":["certificate"],"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Account > Domains > General > Update","x-nf-team-scoped":true,"x-nf-cli-command":["import","domain-certificate"]},"v1-domains--domain--import-post-team-scoped":{"operationId":"postDomainsDomainImport","summary":"Import domain certificate","description":"Import a certificate for the domain","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"domain","type":"string","required":true,"description":"Name of the domain","example":"example.com","in":"path","schema":{"name":"domain","type":"string","required":true,"description":"Name of the domain","example":"example.com","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}},"400":{"description":"Could not parse certificate."},"409":{"description":"Expiry date must be at least one month in the future."}},"tags":["Domains","team"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"certificate":{"type":"object","properties":{"privateKey":{"type":"string","description":"Certificate private key."},"certificateChain":{"type":"string","description":"Certificate chain. May consist of one or more certificates."}},"required":["privateKey","certificateChain"],"additionalProperties":false,"description":"Certificate to import."}},"required":["certificate"],"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Account > Domains > General > Update","x-nf-team-scoped":true,"x-nf-cli-command":["import","domain-certificate"]},"v1-domains--domain--subdomains-post":{"operationId":"postDomainsDomainSubdomains","summary":"Add subdomain","description":"Adds a new subdomain to the domain.","parameters":[{"name":"domain","type":"string","required":true,"description":"Name of the domain","example":"example.com","in":"path","schema":{"name":"domain","type":"string","required":true,"description":"Name of the domain","example":"example.com","in":"path"}}],"responses":{"200":{"description":"Details about the newly added subdomain.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"recordType":{"type":"string","description":"The record type to use for the DNS record to verify the subdomain - always CNAME for subdomains.","example":"CNAME"},"name":{"type":"string","description":"The subdomain.","example":"site"},"fullName":{"type":"string","description":"The full domain name with subdomain","example":"site.example.com"},"content":{"type":"string","description":"The content to set the DNS record to","example":"site.example.com.user-1234.dns.northflank.app"},"verified":{"type":"boolean","description":"Whether the subdomain has been verified successfully and can be used.","example":false}},"required":["recordType","name","fullName","content","verified"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}},"400":{"description":"The subdomain is not valid (possibly because it is too long) or the domain has not been verified."},"409":{"description":"The subdomain has already been added to this domain."}},"tags":["Domains"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"subdomain":{"type":"string","pattern":"^\\*|^@$|^([0-9a-z]([0-9a-z\\-]*[0-9a-z])?\\.)*[0-9a-z]([0-9a-z\\-]*[0-9a-z])?$","description":"A subdomain to be added.","example":"site"},"routingMode":{"type":"string","enum":["paths","geoRouting"],"description":"The routing mode for the subdomain. Determines how traffic is routed. Once set, this cannot be changed.","default":"paths"},"cdn":{"type":"object","properties":{"northflank":{"type":"object","properties":{"enabled":{"type":"boolean"}},"required":["enabled"],"additionalProperties":false}},"additionalProperties":false,"description":"Optional CDN configuration."},"options":{"type":"object","properties":{"tlsMode":{"type":"string","enum":["default","passthrough"],"description":"Desired TLS mode for the subdomain.","default":"default"},"minTlsProtocolVersion":{"type":"string","enum":["TLSV1_2","TLSV1_3"],"description":"Minimum TLS protocol version for the subdomain. Only applicable for non-wildcard subdomains."},"autoVerify":{"type":"boolean","description":"The domain will be automatically verified on creation. Only configurable if the relevant feature flag is enabled for you account."},"aliasDomains":{"type":"array","items":{"type":"string"},"description":"Alias domains which should be routable. Only configurable if the relevant feature flag is enabled for you account.","default":[]}},"additionalProperties":false,"description":"Optional advanced configuration for the subdomain."}},"required":["subdomain"],"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Account > Subdomains > General > Update","x-nf-team-scoped":true,"x-nf-cli-command":["add","domain","subdomain"]},"v1-domains--domain--subdomains-post-team-scoped":{"operationId":"postDomainsDomainSubdomains","summary":"Add subdomain","description":"Adds a new subdomain to the domain.","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"domain","type":"string","required":true,"description":"Name of the domain","example":"example.com","in":"path","schema":{"name":"domain","type":"string","required":true,"description":"Name of the domain","example":"example.com","in":"path"}}],"responses":{"200":{"description":"Details about the newly added subdomain.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"recordType":{"type":"string","description":"The record type to use for the DNS record to verify the subdomain - always CNAME for subdomains.","example":"CNAME"},"name":{"type":"string","description":"The subdomain.","example":"site"},"fullName":{"type":"string","description":"The full domain name with subdomain","example":"site.example.com"},"content":{"type":"string","description":"The content to set the DNS record to","example":"site.example.com.user-1234.dns.northflank.app"},"verified":{"type":"boolean","description":"Whether the subdomain has been verified successfully and can be used.","example":false}},"required":["recordType","name","fullName","content","verified"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}},"400":{"description":"The subdomain is not valid (possibly because it is too long) or the domain has not been verified."},"409":{"description":"The subdomain has already been added to this domain."}},"tags":["Domains","team"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"subdomain":{"type":"string","pattern":"^\\*|^@$|^([0-9a-z]([0-9a-z\\-]*[0-9a-z])?\\.)*[0-9a-z]([0-9a-z\\-]*[0-9a-z])?$","description":"A subdomain to be added.","example":"site"},"routingMode":{"type":"string","enum":["paths","geoRouting"],"description":"The routing mode for the subdomain. Determines how traffic is routed. Once set, this cannot be changed.","default":"paths"},"cdn":{"type":"object","properties":{"northflank":{"type":"object","properties":{"enabled":{"type":"boolean"}},"required":["enabled"],"additionalProperties":false}},"additionalProperties":false,"description":"Optional CDN configuration."},"options":{"type":"object","properties":{"tlsMode":{"type":"string","enum":["default","passthrough"],"description":"Desired TLS mode for the subdomain.","default":"default"},"minTlsProtocolVersion":{"type":"string","enum":["TLSV1_2","TLSV1_3"],"description":"Minimum TLS protocol version for the subdomain. Only applicable for non-wildcard subdomains."},"autoVerify":{"type":"boolean","description":"The domain will be automatically verified on creation. Only configurable if the relevant feature flag is enabled for you account."},"aliasDomains":{"type":"array","items":{"type":"string"},"description":"Alias domains which should be routable. Only configurable if the relevant feature flag is enabled for you account.","default":[]}},"additionalProperties":false,"description":"Optional advanced configuration for the subdomain."}},"required":["subdomain"],"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Account > Subdomains > General > Update","x-nf-team-scoped":true,"x-nf-cli-command":["add","domain","subdomain"]},"v1-domains--domain--subdomains-put":{"operationId":"putDomainsDomainSubdomains","summary":"Put subdomain","description":"Updates subdomain to the domain.","parameters":[{"name":"domain","type":"string","required":true,"description":"Name of the domain","example":"example.com","in":"path","schema":{"name":"domain","type":"string","required":true,"description":"Name of the domain","example":"example.com","in":"path"}}],"responses":{"200":{"description":"Details about the subdomain.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"recordType":{"type":"string","description":"The record type to use for the DNS record to verify the subdomain - always CNAME for subdomains.","example":"CNAME"},"name":{"type":"string","description":"The subdomain.","example":"site"},"fullName":{"type":"string","description":"The full domain name with subdomain","example":"site.example.com"},"content":{"type":"string","description":"The content to set the DNS record to","example":"site.example.com.user-1234.dns.northflank.app"},"verified":{"type":"boolean","description":"Whether the subdomain has been verified successfully and can be used.","example":false}},"required":["recordType","name","fullName","content","verified"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}},"400":{"description":"The provided subdomain is not valid (possibly because it is too long) or the domain has not been verified."},"409":{"description":"The provided subdomain has already been added to this domain."}},"tags":["Domains"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Subdomain prepended to the domain name","example":"site"},"options":{"type":"object","properties":{"tlsMode":{"type":"string","enum":["default","passthrough"],"description":"Desired TLS mode for the subdomain.","default":"default"},"minTlsProtocolVersion":{"type":"string","enum":["TLSV1_2","TLSV1_3"],"description":"Minimum TLS protocol version for the subdomain. Only applicable for non-wildcard subdomains."},"autoVerify":{"type":"boolean","description":"The domain will be automatically verified on creation. Only configurable if the relevant feature flag is enabled for you account."},"aliasDomains":{"type":"array","items":{"type":"string"},"description":"Alias domains which should be routable. Only configurable if the relevant feature flag is enabled for you account.","default":[]}},"additionalProperties":false,"description":"Optional advanced configuration for the subdomain."},"cdn":{"type":"object","properties":{"northflank":{"type":"object","properties":{"enabled":{"type":"boolean"},"options":{"type":"object","properties":{"service":{"type":"object","properties":{"forceTlsEnableHsts":{"type":"boolean","default":true},"hstsDuration":{"type":"number","format":"float","minimum":300,"description":"HSTS duration. Required when `forceTlsEnableHsts` is `true`.","default":31557600},"staleIfError":{"type":"boolean","default":true},"staleIfErrorTtl":{"type":"number","format":"float","minimum":0,"default":43200},"defaultTtl":{"type":"number","format":"float","minimum":0,"default":3600}},"additionalProperties":false},"logging":{"type":"object","properties":{"enabled":{"type":"boolean","default":true}},"additionalProperties":false},"http3":{"type":"object","properties":{"enabled":{"type":"boolean","default":false}},"additionalProperties":false},"websockets":{"type":"object","properties":{"enabled":{"type":"boolean"}},"additionalProperties":false},"compression":{"type":"object","properties":{"enabled":{"type":"boolean"},"mode":{"type":"string","enum":["gzip","brotli"],"description":"Compression options. Required when `enabled` is `true`."}},"additionalProperties":false},"vclSnippets":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39},"type":{"type":"string","enum":["init","recv","hash","hit","miss","pass","fetch","error","deliver","log","none"]},"dynamic":{"type":"string","enum":["0","1"]},"priority":{"type":"number","format":"float","minimum":0,"maximum":100},"content":{"type":"string"}},"required":["name","type","dynamic","priority","content"],"additionalProperties":false},"uniqueItems":true},"cacheSettings":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39},"action":{"type":"string","enum":["pass","cache","restart"]},"cacheCondition":{"type":"string"},"staleTtl":{"type":"number","format":"float","minimum":0},"ttl":{"type":"number","format":"float","minimum":0}},"required":["name","staleTtl","ttl"],"additionalProperties":false},"uniqueItems":true}},"additionalProperties":false}},"additionalProperties":false}},"additionalProperties":false}},"required":["name"],"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Account > Subdomains > General > Update","x-nf-team-scoped":true,"x-nf-cli-command":["put","domain","subdomain"]},"v1-domains--domain--subdomains-put-team-scoped":{"operationId":"putDomainsDomainSubdomains","summary":"Put subdomain","description":"Updates subdomain to the domain.","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"domain","type":"string","required":true,"description":"Name of the domain","example":"example.com","in":"path","schema":{"name":"domain","type":"string","required":true,"description":"Name of the domain","example":"example.com","in":"path"}}],"responses":{"200":{"description":"Details about the subdomain.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"recordType":{"type":"string","description":"The record type to use for the DNS record to verify the subdomain - always CNAME for subdomains.","example":"CNAME"},"name":{"type":"string","description":"The subdomain.","example":"site"},"fullName":{"type":"string","description":"The full domain name with subdomain","example":"site.example.com"},"content":{"type":"string","description":"The content to set the DNS record to","example":"site.example.com.user-1234.dns.northflank.app"},"verified":{"type":"boolean","description":"Whether the subdomain has been verified successfully and can be used.","example":false}},"required":["recordType","name","fullName","content","verified"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}},"400":{"description":"The provided subdomain is not valid (possibly because it is too long) or the domain has not been verified."},"409":{"description":"The provided subdomain has already been added to this domain."}},"tags":["Domains","team"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Subdomain prepended to the domain name","example":"site"},"options":{"type":"object","properties":{"tlsMode":{"type":"string","enum":["default","passthrough"],"description":"Desired TLS mode for the subdomain.","default":"default"},"minTlsProtocolVersion":{"type":"string","enum":["TLSV1_2","TLSV1_3"],"description":"Minimum TLS protocol version for the subdomain. Only applicable for non-wildcard subdomains."},"autoVerify":{"type":"boolean","description":"The domain will be automatically verified on creation. Only configurable if the relevant feature flag is enabled for you account."},"aliasDomains":{"type":"array","items":{"type":"string"},"description":"Alias domains which should be routable. Only configurable if the relevant feature flag is enabled for you account.","default":[]}},"additionalProperties":false,"description":"Optional advanced configuration for the subdomain."},"cdn":{"type":"object","properties":{"northflank":{"type":"object","properties":{"enabled":{"type":"boolean"},"options":{"type":"object","properties":{"service":{"type":"object","properties":{"forceTlsEnableHsts":{"type":"boolean","default":true},"hstsDuration":{"type":"number","format":"float","minimum":300,"description":"HSTS duration. Required when `forceTlsEnableHsts` is `true`.","default":31557600},"staleIfError":{"type":"boolean","default":true},"staleIfErrorTtl":{"type":"number","format":"float","minimum":0,"default":43200},"defaultTtl":{"type":"number","format":"float","minimum":0,"default":3600}},"additionalProperties":false},"logging":{"type":"object","properties":{"enabled":{"type":"boolean","default":true}},"additionalProperties":false},"http3":{"type":"object","properties":{"enabled":{"type":"boolean","default":false}},"additionalProperties":false},"websockets":{"type":"object","properties":{"enabled":{"type":"boolean"}},"additionalProperties":false},"compression":{"type":"object","properties":{"enabled":{"type":"boolean"},"mode":{"type":"string","enum":["gzip","brotli"],"description":"Compression options. Required when `enabled` is `true`."}},"additionalProperties":false},"vclSnippets":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39},"type":{"type":"string","enum":["init","recv","hash","hit","miss","pass","fetch","error","deliver","log","none"]},"dynamic":{"type":"string","enum":["0","1"]},"priority":{"type":"number","format":"float","minimum":0,"maximum":100},"content":{"type":"string"}},"required":["name","type","dynamic","priority","content"],"additionalProperties":false},"uniqueItems":true},"cacheSettings":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39},"action":{"type":"string","enum":["pass","cache","restart"]},"cacheCondition":{"type":"string"},"staleTtl":{"type":"number","format":"float","minimum":0},"ttl":{"type":"number","format":"float","minimum":0}},"required":["name","staleTtl","ttl"],"additionalProperties":false},"uniqueItems":true}},"additionalProperties":false}},"additionalProperties":false}},"additionalProperties":false}},"required":["name"],"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Account > Subdomains > General > Update","x-nf-team-scoped":true,"x-nf-cli-command":["put","domain","subdomain"]},"v1-domains--domain--subdomains--subdomain--get":{"operationId":"getDomainsDomainSubdomainsSubdomain","summary":"Get subdomain","description":"Gets details about the given subdomain","parameters":[{"name":"domain","type":"string","required":true,"description":"Name of the domain","example":"example.com","in":"path","schema":{"name":"domain","type":"string","required":true,"description":"Name of the domain","example":"example.com","in":"path"}},{"name":"subdomain","type":"string","required":true,"description":"Name of the subdomain","example":"app","in":"path","schema":{"name":"subdomain","type":"string","required":true,"description":"Name of the subdomain","example":"app","in":"path"}}],"responses":{"200":{"description":"Details about the subdomain.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"recordType":{"type":"string","description":"The record type to use for the DNS record to verify the subdomain - always CNAME for subdomains.","example":"CNAME"},"name":{"type":"string","description":"The subdomain.","example":"site"},"fullName":{"type":"string","description":"The full domain name with subdomain","example":"site.example.com"},"content":{"type":"string","description":"The content to set the DNS record to","example":"site.example.com.user-1234.dns.northflank.app"},"verified":{"type":"boolean","description":"Whether the subdomain has been verified successfully and can be used.","example":true},"certificate":{"type":"object","properties":{"inProgress":{"type":"boolean","description":"Whether a certificate is in the process of being generated"},"expiryDate":{"type":"string","format":"date-time","description":"Expiry date of the current certificate"},"refreshDare":{"type":"string","format":"date-time","description":"Refresh date of the current certificate"}},"additionalProperties":false},"cdn":{"type":"object","properties":{"northflank":{"type":"object","properties":{"enabled":{"type":"boolean"},"status":{"type":"string"},"options":{"type":"object","properties":{"service":{"type":"object","properties":{"forceTlsEnableHsts":{"type":"boolean","default":true},"hstsDuration":{"type":"number","format":"float","minimum":300,"description":"HSTS duration. Required when `forceTlsEnableHsts` is `true`.","default":31557600},"staleIfError":{"type":"boolean","default":true},"staleIfErrorTtl":{"type":"number","format":"float","minimum":0,"default":43200},"defaultTtl":{"type":"number","format":"float","minimum":0,"default":3600}},"additionalProperties":false},"logging":{"type":"object","properties":{"enabled":{"type":"boolean","default":true}},"additionalProperties":false},"http3":{"type":"object","properties":{"enabled":{"type":"boolean","default":false}},"additionalProperties":false},"websockets":{"type":"object","properties":{"enabled":{"type":"boolean"}},"additionalProperties":false},"compression":{"type":"object","properties":{"enabled":{"type":"boolean"},"mode":{"type":"string","enum":["gzip","brotli"],"description":"Compression options. Required when `enabled` is `true`."}},"additionalProperties":false},"vclSnippets":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39},"type":{"type":"string","enum":["init","recv","hash","hit","miss","pass","fetch","error","deliver","log","none"]},"dynamic":{"type":"string","enum":["0","1"]},"priority":{"type":"number","format":"float","minimum":0,"maximum":100},"content":{"type":"string"}},"required":["name","type","dynamic","priority","content"],"additionalProperties":false},"uniqueItems":true},"cacheSettings":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39},"action":{"type":"string","enum":["pass","cache","restart"]},"cacheCondition":{"type":"string"},"staleTtl":{"type":"number","format":"float","minimum":0},"ttl":{"type":"number","format":"float","minimum":0}},"required":["name","staleTtl","ttl"],"additionalProperties":false},"uniqueItems":true}},"additionalProperties":false},"deployedAt":{"type":"string","format":"date-time"}},"additionalProperties":false}},"additionalProperties":false}},"required":["recordType","name","fullName","content","verified"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Domains"],"security":[],"x-nf-permission-required":"Account > Subdomains > General > Read","x-nf-team-scoped":true,"x-nf-cli-command":["get","subdomain"]},"v1-domains--domain--subdomains--subdomain--get-team-scoped":{"operationId":"getDomainsDomainSubdomainsSubdomain","summary":"Get subdomain","description":"Gets details about the given subdomain","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"domain","type":"string","required":true,"description":"Name of the domain","example":"example.com","in":"path","schema":{"name":"domain","type":"string","required":true,"description":"Name of the domain","example":"example.com","in":"path"}},{"name":"subdomain","type":"string","required":true,"description":"Name of the subdomain","example":"app","in":"path","schema":{"name":"subdomain","type":"string","required":true,"description":"Name of the subdomain","example":"app","in":"path"}}],"responses":{"200":{"description":"Details about the subdomain.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"recordType":{"type":"string","description":"The record type to use for the DNS record to verify the subdomain - always CNAME for subdomains.","example":"CNAME"},"name":{"type":"string","description":"The subdomain.","example":"site"},"fullName":{"type":"string","description":"The full domain name with subdomain","example":"site.example.com"},"content":{"type":"string","description":"The content to set the DNS record to","example":"site.example.com.user-1234.dns.northflank.app"},"verified":{"type":"boolean","description":"Whether the subdomain has been verified successfully and can be used.","example":true},"certificate":{"type":"object","properties":{"inProgress":{"type":"boolean","description":"Whether a certificate is in the process of being generated"},"expiryDate":{"type":"string","format":"date-time","description":"Expiry date of the current certificate"},"refreshDare":{"type":"string","format":"date-time","description":"Refresh date of the current certificate"}},"additionalProperties":false},"cdn":{"type":"object","properties":{"northflank":{"type":"object","properties":{"enabled":{"type":"boolean"},"status":{"type":"string"},"options":{"type":"object","properties":{"service":{"type":"object","properties":{"forceTlsEnableHsts":{"type":"boolean","default":true},"hstsDuration":{"type":"number","format":"float","minimum":300,"description":"HSTS duration. Required when `forceTlsEnableHsts` is `true`.","default":31557600},"staleIfError":{"type":"boolean","default":true},"staleIfErrorTtl":{"type":"number","format":"float","minimum":0,"default":43200},"defaultTtl":{"type":"number","format":"float","minimum":0,"default":3600}},"additionalProperties":false},"logging":{"type":"object","properties":{"enabled":{"type":"boolean","default":true}},"additionalProperties":false},"http3":{"type":"object","properties":{"enabled":{"type":"boolean","default":false}},"additionalProperties":false},"websockets":{"type":"object","properties":{"enabled":{"type":"boolean"}},"additionalProperties":false},"compression":{"type":"object","properties":{"enabled":{"type":"boolean"},"mode":{"type":"string","enum":["gzip","brotli"],"description":"Compression options. Required when `enabled` is `true`."}},"additionalProperties":false},"vclSnippets":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39},"type":{"type":"string","enum":["init","recv","hash","hit","miss","pass","fetch","error","deliver","log","none"]},"dynamic":{"type":"string","enum":["0","1"]},"priority":{"type":"number","format":"float","minimum":0,"maximum":100},"content":{"type":"string"}},"required":["name","type","dynamic","priority","content"],"additionalProperties":false},"uniqueItems":true},"cacheSettings":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39},"action":{"type":"string","enum":["pass","cache","restart"]},"cacheCondition":{"type":"string"},"staleTtl":{"type":"number","format":"float","minimum":0},"ttl":{"type":"number","format":"float","minimum":0}},"required":["name","staleTtl","ttl"],"additionalProperties":false},"uniqueItems":true}},"additionalProperties":false},"deployedAt":{"type":"string","format":"date-time"}},"additionalProperties":false}},"additionalProperties":false}},"required":["recordType","name","fullName","content","verified"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Domains","team"],"security":[],"x-nf-permission-required":"Account > Subdomains > General > Read","x-nf-team-scoped":true,"x-nf-cli-command":["get","subdomain"]},"v1-domains--domain--subdomains--subdomain--delete":{"operationId":"deleteDomainsDomainSubdomainsSubdomain","summary":"Delete subdomain","description":"Removes a subdomain from a domain.","parameters":[{"name":"domain","type":"string","required":true,"description":"Name of the domain","example":"example.com","in":"path","schema":{"name":"domain","type":"string","required":true,"description":"Name of the domain","example":"example.com","in":"path"}},{"name":"subdomain","type":"string","required":true,"description":"Name of the subdomain","example":"app","in":"path","schema":{"name":"subdomain","type":"string","required":true,"description":"Name of the subdomain","example":"app","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}},"400":{"description":"The default (empty) subdomain cannot be deleted."},"404":{"description":"The subdomain does not exist."}},"tags":["Domains"],"security":[],"x-nf-permission-required":"Account > Subdomains > General > Update","x-nf-team-scoped":true,"x-nf-cli-command":["delete","subdomain"]},"v1-domains--domain--subdomains--subdomain--delete-team-scoped":{"operationId":"deleteDomainsDomainSubdomainsSubdomain","summary":"Delete subdomain","description":"Removes a subdomain from a domain.","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"domain","type":"string","required":true,"description":"Name of the domain","example":"example.com","in":"path","schema":{"name":"domain","type":"string","required":true,"description":"Name of the domain","example":"example.com","in":"path"}},{"name":"subdomain","type":"string","required":true,"description":"Name of the subdomain","example":"app","in":"path","schema":{"name":"subdomain","type":"string","required":true,"description":"Name of the subdomain","example":"app","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}},"400":{"description":"The default (empty) subdomain cannot be deleted."},"404":{"description":"The subdomain does not exist."}},"tags":["Domains","team"],"security":[],"x-nf-permission-required":"Account > Subdomains > General > Update","x-nf-team-scoped":true,"x-nf-cli-command":["delete","subdomain"]},"v1-domains--domain--subdomains--subdomain--assign-post":{"operationId":"postDomainsDomainSubdomainsSubdomainAssign","summary":"Assign service to subdomain","description":"Assigns a service port to the given subdomain","parameters":[{"name":"domain","type":"string","required":true,"description":"Name of the domain","example":"example.com","in":"path","schema":{"name":"domain","type":"string","required":true,"description":"Name of the domain","example":"example.com","in":"path"}},{"name":"subdomain","type":"string","required":true,"description":"Name of the subdomain","example":"app","in":"path","schema":{"name":"subdomain","type":"string","required":true,"description":"Name of the subdomain","example":"app","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Domains"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"serviceId":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The ID of the service to assign the subdomain to.","example":"example-service"},"projectId":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The ID of the project the service belongs to.","example":"default-project"},"portName":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":1,"maxLength":8,"description":"The name of the port that will be assigned to the subdomain.","example":"p01"}},"required":["serviceId","projectId","portName"],"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Account > Subdomains > General > Update","x-nf-team-scoped":true,"x-nf-cli-command":["assign","subdomain","service"]},"v1-domains--domain--subdomains--subdomain--assign-post-team-scoped":{"operationId":"postDomainsDomainSubdomainsSubdomainAssign","summary":"Assign service to subdomain","description":"Assigns a service port to the given subdomain","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"domain","type":"string","required":true,"description":"Name of the domain","example":"example.com","in":"path","schema":{"name":"domain","type":"string","required":true,"description":"Name of the domain","example":"example.com","in":"path"}},{"name":"subdomain","type":"string","required":true,"description":"Name of the subdomain","example":"app","in":"path","schema":{"name":"subdomain","type":"string","required":true,"description":"Name of the subdomain","example":"app","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Domains","team"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"serviceId":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The ID of the service to assign the subdomain to.","example":"example-service"},"projectId":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The ID of the project the service belongs to.","example":"default-project"},"portName":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":1,"maxLength":8,"description":"The name of the port that will be assigned to the subdomain.","example":"p01"}},"required":["serviceId","projectId","portName"],"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Account > Subdomains > General > Update","x-nf-team-scoped":true,"x-nf-cli-command":["assign","subdomain","service"]},"v1-domains--domain--subdomains--subdomain--assign-delete":{"operationId":"deleteDomainsDomainSubdomainsSubdomainAssign","summary":"Unassign subdomain","description":"Removes a subdomain from its assigned service","parameters":[{"name":"domain","type":"string","required":true,"description":"Name of the domain","example":"example.com","in":"path","schema":{"name":"domain","type":"string","required":true,"description":"Name of the domain","example":"example.com","in":"path"}},{"name":"subdomain","type":"string","required":true,"description":"Name of the subdomain","example":"app","in":"path","schema":{"name":"subdomain","type":"string","required":true,"description":"Name of the subdomain","example":"app","in":"path"}},{"name":"unassignPaths","type":"boolean","description":"Unassign all associated subdomain paths from their respective services.","in":"query","schema":{"name":"unassignPaths","type":"boolean","description":"Unassign all associated subdomain paths from their respective services.","in":"query"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Domains"],"security":[],"x-nf-permission-required":"Account > Subdomains > General > Update","x-nf-team-scoped":true,"x-nf-cli-command":["unassign","subdomain"]},"v1-domains--domain--subdomains--subdomain--assign-delete-team-scoped":{"operationId":"deleteDomainsDomainSubdomainsSubdomainAssign","summary":"Unassign subdomain","description":"Removes a subdomain from its assigned service","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"domain","type":"string","required":true,"description":"Name of the domain","example":"example.com","in":"path","schema":{"name":"domain","type":"string","required":true,"description":"Name of the domain","example":"example.com","in":"path"}},{"name":"subdomain","type":"string","required":true,"description":"Name of the subdomain","example":"app","in":"path","schema":{"name":"subdomain","type":"string","required":true,"description":"Name of the subdomain","example":"app","in":"path"}},{"name":"unassignPaths","type":"boolean","description":"Unassign all associated subdomain paths from their respective services.","in":"query","schema":{"name":"unassignPaths","type":"boolean","description":"Unassign all associated subdomain paths from their respective services.","in":"query"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Domains","team"],"security":[],"x-nf-permission-required":"Account > Subdomains > General > Update","x-nf-team-scoped":true,"x-nf-cli-command":["unassign","subdomain"]},"v1-domains--domain--subdomains--subdomain--cdn-disable-post":{"operationId":"postDomainsDomainSubdomainsSubdomainCdnDisable","summary":"Remove CDN from a subdomain","description":"Removes the CDN integration from the given subdomain","parameters":[{"name":"domain","type":"string","required":true,"description":"Name of the domain","example":"example.com","in":"path","schema":{"name":"domain","type":"string","required":true,"description":"Name of the domain","example":"example.com","in":"path"}},{"name":"subdomain","type":"string","required":true,"description":"Name of the subdomain","example":"app","in":"path","schema":{"name":"subdomain","type":"string","required":true,"description":"Name of the subdomain","example":"app","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Domains"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"provider":{"type":"string","description":"Provider for which the CDN on the subdomain should be disabled.","example":"northflank"}},"required":["provider"],"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Account > Subdomains > General > Update","x-nf-team-scoped":true,"x-nf-cli-command":["disable","subdomain","cdn"]},"v1-domains--domain--subdomains--subdomain--cdn-disable-post-team-scoped":{"operationId":"postDomainsDomainSubdomainsSubdomainCdnDisable","summary":"Remove CDN from a subdomain","description":"Removes the CDN integration from the given subdomain","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"domain","type":"string","required":true,"description":"Name of the domain","example":"example.com","in":"path","schema":{"name":"domain","type":"string","required":true,"description":"Name of the domain","example":"example.com","in":"path"}},{"name":"subdomain","type":"string","required":true,"description":"Name of the subdomain","example":"app","in":"path","schema":{"name":"subdomain","type":"string","required":true,"description":"Name of the subdomain","example":"app","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Domains","team"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"provider":{"type":"string","description":"Provider for which the CDN on the subdomain should be disabled.","example":"northflank"}},"required":["provider"],"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Account > Subdomains > General > Update","x-nf-team-scoped":true,"x-nf-cli-command":["disable","subdomain","cdn"]},"v1-domains--domain--subdomains--subdomain--cdn-enable-post":{"operationId":"postDomainsDomainSubdomainsSubdomainCdnEnable","summary":"Enable CDN on a subdomain","description":"Enables a CDN integration on the given subdomain","parameters":[{"name":"domain","type":"string","required":true,"description":"Name of the domain","example":"example.com","in":"path","schema":{"name":"domain","type":"string","required":true,"description":"Name of the domain","example":"example.com","in":"path"}},{"name":"subdomain","type":"string","required":true,"description":"Name of the subdomain","example":"app","in":"path","schema":{"name":"subdomain","type":"string","required":true,"description":"Name of the subdomain","example":"app","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Domains"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"provider":{"type":"string","description":"Provider for which a CDN on the subdomain should be enabled.","example":"northflank"},"options":{"oneOf":[{"type":"object","properties":{"service":{"type":"object","properties":{"forceTlsEnableHsts":{"type":"boolean","default":true},"hstsDuration":{"type":"number","format":"float","minimum":300,"description":"HSTS duration. Required when `forceTlsEnableHsts` is `true`.","default":31557600},"staleIfError":{"type":"boolean","default":true},"staleIfErrorTtl":{"type":"number","format":"float","minimum":0,"default":43200},"defaultTtl":{"type":"number","format":"float","minimum":0,"default":3600}},"additionalProperties":false},"logging":{"type":"object","properties":{"enabled":{"type":"boolean","default":true}},"additionalProperties":false},"http3":{"type":"object","properties":{"enabled":{"type":"boolean","default":false}},"additionalProperties":false},"websockets":{"type":"object","properties":{"enabled":{"type":"boolean"}},"additionalProperties":false},"compression":{"type":"object","properties":{"enabled":{"type":"boolean"},"mode":{"type":"string","enum":["gzip","brotli"],"description":"Compression options. Required when `enabled` is `true`."}},"additionalProperties":false},"vclSnippets":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39},"type":{"type":"string","enum":["init","recv","hash","hit","miss","pass","fetch","error","deliver","log","none"]},"dynamic":{"type":"string","enum":["0","1"]},"priority":{"type":"number","format":"float","minimum":0,"maximum":100},"content":{"type":"string"}},"required":["name","type","dynamic","priority","content"],"additionalProperties":false},"uniqueItems":true},"cacheSettings":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39},"action":{"type":"string","enum":["pass","cache","restart"]},"cacheCondition":{"type":"string"},"staleTtl":{"type":"number","format":"float","minimum":0},"ttl":{"type":"number","format":"float","minimum":0}},"required":["name","staleTtl","ttl"],"additionalProperties":false},"uniqueItems":true}},"additionalProperties":false}]}},"required":["provider"],"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Account > Subdomains > General > Update","x-nf-team-scoped":true,"x-nf-cli-command":["enable","subdomain","cdn"]},"v1-domains--domain--subdomains--subdomain--cdn-enable-post-team-scoped":{"operationId":"postDomainsDomainSubdomainsSubdomainCdnEnable","summary":"Enable CDN on a subdomain","description":"Enables a CDN integration on the given subdomain","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"domain","type":"string","required":true,"description":"Name of the domain","example":"example.com","in":"path","schema":{"name":"domain","type":"string","required":true,"description":"Name of the domain","example":"example.com","in":"path"}},{"name":"subdomain","type":"string","required":true,"description":"Name of the subdomain","example":"app","in":"path","schema":{"name":"subdomain","type":"string","required":true,"description":"Name of the subdomain","example":"app","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Domains","team"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"provider":{"type":"string","description":"Provider for which a CDN on the subdomain should be enabled.","example":"northflank"},"options":{"oneOf":[{"type":"object","properties":{"service":{"type":"object","properties":{"forceTlsEnableHsts":{"type":"boolean","default":true},"hstsDuration":{"type":"number","format":"float","minimum":300,"description":"HSTS duration. Required when `forceTlsEnableHsts` is `true`.","default":31557600},"staleIfError":{"type":"boolean","default":true},"staleIfErrorTtl":{"type":"number","format":"float","minimum":0,"default":43200},"defaultTtl":{"type":"number","format":"float","minimum":0,"default":3600}},"additionalProperties":false},"logging":{"type":"object","properties":{"enabled":{"type":"boolean","default":true}},"additionalProperties":false},"http3":{"type":"object","properties":{"enabled":{"type":"boolean","default":false}},"additionalProperties":false},"websockets":{"type":"object","properties":{"enabled":{"type":"boolean"}},"additionalProperties":false},"compression":{"type":"object","properties":{"enabled":{"type":"boolean"},"mode":{"type":"string","enum":["gzip","brotli"],"description":"Compression options. Required when `enabled` is `true`."}},"additionalProperties":false},"vclSnippets":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39},"type":{"type":"string","enum":["init","recv","hash","hit","miss","pass","fetch","error","deliver","log","none"]},"dynamic":{"type":"string","enum":["0","1"]},"priority":{"type":"number","format":"float","minimum":0,"maximum":100},"content":{"type":"string"}},"required":["name","type","dynamic","priority","content"],"additionalProperties":false},"uniqueItems":true},"cacheSettings":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39},"action":{"type":"string","enum":["pass","cache","restart"]},"cacheCondition":{"type":"string"},"staleTtl":{"type":"number","format":"float","minimum":0},"ttl":{"type":"number","format":"float","minimum":0}},"required":["name","staleTtl","ttl"],"additionalProperties":false},"uniqueItems":true}},"additionalProperties":false}]}},"required":["provider"],"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Account > Subdomains > General > Update","x-nf-team-scoped":true,"x-nf-cli-command":["enable","subdomain","cdn"]},"v1-domains--domain--subdomains--subdomain--paths-post":{"operationId":"postDomainsDomainSubdomainsSubdomainPaths","summary":"Add subdomain path","description":"Adds a new path to the subdomain.","parameters":[{"name":"domain","type":"string","required":true,"description":"Name of the domain","example":"example.com","in":"path","schema":{"name":"domain","type":"string","required":true,"description":"Name of the domain","example":"example.com","in":"path"}},{"name":"subdomain","type":"string","required":true,"description":"Name of the subdomain","example":"app","in":"path","schema":{"name":"subdomain","type":"string","required":true,"description":"Name of the subdomain","example":"app","in":"path"}}],"responses":{"200":{"description":"Details about the newly added path.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"mode":{"type":"string","enum":["prefix","exact","regex"],"description":"Mode of the path, determining how the URI will be interpreted.","example":"prefix"},"uri":{"type":"string","description":"URI of the subdomain path. Interpreted according to the selected path mode","example":"/"},"options":{"type":"object","properties":{"priority":{"type":"integer","minimum":0,"maximum":100,"description":"In case of uri conflicts, the route with the higher priority will take precedence","example":0},"ignoreUriCase":{"type":"boolean","description":"Allows case insensitive matching for 'prefix' and 'exact' modes"},"rewrite":{"oneOf":[{"type":"object","properties":{"uri":{"type":"string","pattern":"^\\/([_a-zA-Z0-9-&?=.]*)((\\/[_a-zA-Z0-9-&?=.]+)*(\\/)?)?$"}},"required":["uri"],"additionalProperties":false,"description":"Rewrite with URI"},{"type":"object","properties":{"regex":{"type":"object","properties":{"match":{"type":"string","description":"Regex match for the given path"},"rewrite":{"type":"string","description":"Regex rewrite for the given matched path"}},"required":["match","rewrite"],"additionalProperties":false}},"additionalProperties":false,"description":"Rewrite with regex"}],"description":"Settings determining if a path should be rewritten. Either a uri or regex have to be specified."},"timeout":{"type":"string","pattern":"^[1-9][0-9]*(s|ms)$","description":"Customised request timeout for the given path. By default no timeout is set."},"headers":{"type":"object","properties":{"request":{"type":"object","properties":{"set":{"type":"object","properties":{},"additionalProperties":false},"add":{"type":"object","properties":{},"additionalProperties":false},"remove":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9_\\-%$+]+$"}}},"additionalProperties":false},"response":{"type":"object","properties":{"set":{"type":"object","properties":{},"additionalProperties":false},"add":{"type":"object","properties":{},"additionalProperties":false},"remove":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9_\\-%$+]+$"}}},"additionalProperties":false}},"additionalProperties":false,"description":"Settings allowing addition, re-write and removal of request as well as response headers."},"corsPolicy":{"type":"object","properties":{"enabled":{"type":"boolean"},"allowOrigins":{"type":"array","items":{"type":"object","properties":{"mode":{"type":"string","enum":["prefix","exact","regex"],"description":"Mode of the path, determining how the URI will be interpreted.","example":"prefix"},"origin":{"type":"string","description":"Origin definition.","example":"https://example.com"}},"required":["mode"],"additionalProperties":false}},"allowMethods":{"type":"array","items":{"type":"string","enum":["GET","POST","PUT","PATCH","DELETE","OPTIONS","TRACE","CONNECT","HEAD"]}},"allowCredentials":{"type":"boolean"},"allowHeaders":{"type":"array","items":{"type":"string"}},"maxAge":{"type":"string","pattern":"^[1-9][0-9]*(s|m|h)$"}},"required":["enabled"],"additionalProperties":false,"description":"Settings allowing for customization of CORS policies."},"retries":{"type":"object","properties":{"enabled":{"type":"boolean"},"attempts":{"type":"integer","minimum":1,"maximum":3},"perTryTimeout":{"type":"string","pattern":"^[1-9][0-9]*(s|ms)$","description":"Timeout per attempt. By default uses the path level timeout."},"retryOn":{"type":"array","items":{"type":"string","enum":["5xx","gateway-error","reset","connect-failure","envoy-ratelimited","retriable-4xx","refused-stream","retriable-status-codes","retriable-headers","cancelled","deadline-exceeded","internal","resource-exhausted","unavailable"]},"uniqueItems":true,"description":"Configure the cases in which the retry should be triggered."}},"required":["enabled","attempts"],"additionalProperties":false,"description":"Settings allowing for customization of retries."}},"additionalProperties":false},"name":{"type":"string","description":"The full URL including subdomain and path URI."},"createdAt":{"type":"string","format":"date-time","description":"time of creation"}},"required":["mode","uri"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}},"409":{"description":"The path has already been added to this subdomain."}},"tags":["Domains"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"mode":{"type":"string","enum":["prefix","exact","regex"],"description":"Mode of the path, determining how the URI will be interpreted.","example":"prefix"},"uri":{"type":"string","description":"URI of the subdomain path. Interpreted according to the selected path mode","example":"/"},"options":{"type":"object","properties":{"priority":{"type":"integer","minimum":0,"maximum":100,"description":"In case of uri conflicts, the route with the higher priority will take precedence","example":0},"ignoreUriCase":{"type":"boolean","description":"Allows case insensitive matching for 'prefix' and 'exact' modes"},"rewrite":{"oneOf":[{"type":"object","properties":{"uri":{"type":"string","pattern":"^\\/([_a-zA-Z0-9-&?=.]*)((\\/[_a-zA-Z0-9-&?=.]+)*(\\/)?)?$"}},"required":["uri"],"additionalProperties":false,"description":"Rewrite with URI"},{"type":"object","properties":{"regex":{"type":"object","properties":{"match":{"type":"string","description":"Regex match for the given path"},"rewrite":{"type":"string","description":"Regex rewrite for the given matched path"}},"required":["match","rewrite"],"additionalProperties":false}},"additionalProperties":false,"description":"Rewrite with regex"}],"description":"Settings determining if a path should be rewritten. Either a uri or regex have to be specified."},"timeout":{"type":"string","pattern":"^[1-9][0-9]*(s|ms)$","description":"Customised request timeout for the given path. By default no timeout is set."},"headers":{"type":"object","properties":{"request":{"type":"object","properties":{"set":{"type":"object","properties":{},"additionalProperties":false},"add":{"type":"object","properties":{},"additionalProperties":false},"remove":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9_\\-%$+]+$"}}},"additionalProperties":false},"response":{"type":"object","properties":{"set":{"type":"object","properties":{},"additionalProperties":false},"add":{"type":"object","properties":{},"additionalProperties":false},"remove":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9_\\-%$+]+$"}}},"additionalProperties":false}},"additionalProperties":false,"description":"Settings allowing addition, re-write and removal of request as well as response headers."},"corsPolicy":{"type":"object","properties":{"enabled":{"type":"boolean"},"allowOrigins":{"type":"array","items":{"type":"object","properties":{"mode":{"type":"string","enum":["prefix","exact","regex"],"description":"Mode of the path, determining how the URI will be interpreted.","example":"prefix"},"origin":{"type":"string","description":"Origin definition.","example":"https://example.com"}},"required":["mode"],"additionalProperties":false}},"allowMethods":{"type":"array","items":{"type":"string","enum":["GET","POST","PUT","PATCH","DELETE","OPTIONS","TRACE","CONNECT","HEAD"]}},"allowCredentials":{"type":"boolean"},"allowHeaders":{"type":"array","items":{"type":"string"}},"maxAge":{"type":"string","pattern":"^[1-9][0-9]*(s|m|h)$"}},"required":["enabled"],"additionalProperties":false,"description":"Settings allowing for customization of CORS policies."},"retries":{"type":"object","properties":{"enabled":{"type":"boolean"},"attempts":{"type":"integer","minimum":1,"maximum":3},"perTryTimeout":{"type":"string","pattern":"^[1-9][0-9]*(s|ms)$","description":"Timeout per attempt. By default uses the path level timeout."},"retryOn":{"type":"array","items":{"type":"string","enum":["5xx","gateway-error","reset","connect-failure","envoy-ratelimited","retriable-4xx","refused-stream","retriable-status-codes","retriable-headers","cancelled","deadline-exceeded","internal","resource-exhausted","unavailable"]},"uniqueItems":true,"description":"Configure the cases in which the retry should be triggered."}},"required":["enabled","attempts"],"additionalProperties":false,"description":"Settings allowing for customization of retries."}},"additionalProperties":false}},"required":["mode","uri"],"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Account > SubdomainPaths > General > Create","x-nf-team-scoped":true,"x-nf-cli-command":["add","subdomain","path"]},"v1-domains--domain--subdomains--subdomain--paths-post-team-scoped":{"operationId":"postDomainsDomainSubdomainsSubdomainPaths","summary":"Add subdomain path","description":"Adds a new path to the subdomain.","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"domain","type":"string","required":true,"description":"Name of the domain","example":"example.com","in":"path","schema":{"name":"domain","type":"string","required":true,"description":"Name of the domain","example":"example.com","in":"path"}},{"name":"subdomain","type":"string","required":true,"description":"Name of the subdomain","example":"app","in":"path","schema":{"name":"subdomain","type":"string","required":true,"description":"Name of the subdomain","example":"app","in":"path"}}],"responses":{"200":{"description":"Details about the newly added path.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"mode":{"type":"string","enum":["prefix","exact","regex"],"description":"Mode of the path, determining how the URI will be interpreted.","example":"prefix"},"uri":{"type":"string","description":"URI of the subdomain path. Interpreted according to the selected path mode","example":"/"},"options":{"type":"object","properties":{"priority":{"type":"integer","minimum":0,"maximum":100,"description":"In case of uri conflicts, the route with the higher priority will take precedence","example":0},"ignoreUriCase":{"type":"boolean","description":"Allows case insensitive matching for 'prefix' and 'exact' modes"},"rewrite":{"oneOf":[{"type":"object","properties":{"uri":{"type":"string","pattern":"^\\/([_a-zA-Z0-9-&?=.]*)((\\/[_a-zA-Z0-9-&?=.]+)*(\\/)?)?$"}},"required":["uri"],"additionalProperties":false,"description":"Rewrite with URI"},{"type":"object","properties":{"regex":{"type":"object","properties":{"match":{"type":"string","description":"Regex match for the given path"},"rewrite":{"type":"string","description":"Regex rewrite for the given matched path"}},"required":["match","rewrite"],"additionalProperties":false}},"additionalProperties":false,"description":"Rewrite with regex"}],"description":"Settings determining if a path should be rewritten. Either a uri or regex have to be specified."},"timeout":{"type":"string","pattern":"^[1-9][0-9]*(s|ms)$","description":"Customised request timeout for the given path. By default no timeout is set."},"headers":{"type":"object","properties":{"request":{"type":"object","properties":{"set":{"type":"object","properties":{},"additionalProperties":false},"add":{"type":"object","properties":{},"additionalProperties":false},"remove":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9_\\-%$+]+$"}}},"additionalProperties":false},"response":{"type":"object","properties":{"set":{"type":"object","properties":{},"additionalProperties":false},"add":{"type":"object","properties":{},"additionalProperties":false},"remove":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9_\\-%$+]+$"}}},"additionalProperties":false}},"additionalProperties":false,"description":"Settings allowing addition, re-write and removal of request as well as response headers."},"corsPolicy":{"type":"object","properties":{"enabled":{"type":"boolean"},"allowOrigins":{"type":"array","items":{"type":"object","properties":{"mode":{"type":"string","enum":["prefix","exact","regex"],"description":"Mode of the path, determining how the URI will be interpreted.","example":"prefix"},"origin":{"type":"string","description":"Origin definition.","example":"https://example.com"}},"required":["mode"],"additionalProperties":false}},"allowMethods":{"type":"array","items":{"type":"string","enum":["GET","POST","PUT","PATCH","DELETE","OPTIONS","TRACE","CONNECT","HEAD"]}},"allowCredentials":{"type":"boolean"},"allowHeaders":{"type":"array","items":{"type":"string"}},"maxAge":{"type":"string","pattern":"^[1-9][0-9]*(s|m|h)$"}},"required":["enabled"],"additionalProperties":false,"description":"Settings allowing for customization of CORS policies."},"retries":{"type":"object","properties":{"enabled":{"type":"boolean"},"attempts":{"type":"integer","minimum":1,"maximum":3},"perTryTimeout":{"type":"string","pattern":"^[1-9][0-9]*(s|ms)$","description":"Timeout per attempt. By default uses the path level timeout."},"retryOn":{"type":"array","items":{"type":"string","enum":["5xx","gateway-error","reset","connect-failure","envoy-ratelimited","retriable-4xx","refused-stream","retriable-status-codes","retriable-headers","cancelled","deadline-exceeded","internal","resource-exhausted","unavailable"]},"uniqueItems":true,"description":"Configure the cases in which the retry should be triggered."}},"required":["enabled","attempts"],"additionalProperties":false,"description":"Settings allowing for customization of retries."}},"additionalProperties":false},"name":{"type":"string","description":"The full URL including subdomain and path URI."},"createdAt":{"type":"string","format":"date-time","description":"time of creation"}},"required":["mode","uri"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}},"409":{"description":"The path has already been added to this subdomain."}},"tags":["Domains","team"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"mode":{"type":"string","enum":["prefix","exact","regex"],"description":"Mode of the path, determining how the URI will be interpreted.","example":"prefix"},"uri":{"type":"string","description":"URI of the subdomain path. Interpreted according to the selected path mode","example":"/"},"options":{"type":"object","properties":{"priority":{"type":"integer","minimum":0,"maximum":100,"description":"In case of uri conflicts, the route with the higher priority will take precedence","example":0},"ignoreUriCase":{"type":"boolean","description":"Allows case insensitive matching for 'prefix' and 'exact' modes"},"rewrite":{"oneOf":[{"type":"object","properties":{"uri":{"type":"string","pattern":"^\\/([_a-zA-Z0-9-&?=.]*)((\\/[_a-zA-Z0-9-&?=.]+)*(\\/)?)?$"}},"required":["uri"],"additionalProperties":false,"description":"Rewrite with URI"},{"type":"object","properties":{"regex":{"type":"object","properties":{"match":{"type":"string","description":"Regex match for the given path"},"rewrite":{"type":"string","description":"Regex rewrite for the given matched path"}},"required":["match","rewrite"],"additionalProperties":false}},"additionalProperties":false,"description":"Rewrite with regex"}],"description":"Settings determining if a path should be rewritten. Either a uri or regex have to be specified."},"timeout":{"type":"string","pattern":"^[1-9][0-9]*(s|ms)$","description":"Customised request timeout for the given path. By default no timeout is set."},"headers":{"type":"object","properties":{"request":{"type":"object","properties":{"set":{"type":"object","properties":{},"additionalProperties":false},"add":{"type":"object","properties":{},"additionalProperties":false},"remove":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9_\\-%$+]+$"}}},"additionalProperties":false},"response":{"type":"object","properties":{"set":{"type":"object","properties":{},"additionalProperties":false},"add":{"type":"object","properties":{},"additionalProperties":false},"remove":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9_\\-%$+]+$"}}},"additionalProperties":false}},"additionalProperties":false,"description":"Settings allowing addition, re-write and removal of request as well as response headers."},"corsPolicy":{"type":"object","properties":{"enabled":{"type":"boolean"},"allowOrigins":{"type":"array","items":{"type":"object","properties":{"mode":{"type":"string","enum":["prefix","exact","regex"],"description":"Mode of the path, determining how the URI will be interpreted.","example":"prefix"},"origin":{"type":"string","description":"Origin definition.","example":"https://example.com"}},"required":["mode"],"additionalProperties":false}},"allowMethods":{"type":"array","items":{"type":"string","enum":["GET","POST","PUT","PATCH","DELETE","OPTIONS","TRACE","CONNECT","HEAD"]}},"allowCredentials":{"type":"boolean"},"allowHeaders":{"type":"array","items":{"type":"string"}},"maxAge":{"type":"string","pattern":"^[1-9][0-9]*(s|m|h)$"}},"required":["enabled"],"additionalProperties":false,"description":"Settings allowing for customization of CORS policies."},"retries":{"type":"object","properties":{"enabled":{"type":"boolean"},"attempts":{"type":"integer","minimum":1,"maximum":3},"perTryTimeout":{"type":"string","pattern":"^[1-9][0-9]*(s|ms)$","description":"Timeout per attempt. By default uses the path level timeout."},"retryOn":{"type":"array","items":{"type":"string","enum":["5xx","gateway-error","reset","connect-failure","envoy-ratelimited","retriable-4xx","refused-stream","retriable-status-codes","retriable-headers","cancelled","deadline-exceeded","internal","resource-exhausted","unavailable"]},"uniqueItems":true,"description":"Configure the cases in which the retry should be triggered."}},"required":["enabled","attempts"],"additionalProperties":false,"description":"Settings allowing for customization of retries."}},"additionalProperties":false}},"required":["mode","uri"],"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Account > SubdomainPaths > General > Create","x-nf-team-scoped":true,"x-nf-cli-command":["add","subdomain","path"]},"v1-domains--domain--subdomains--subdomain--paths-get":{"operationId":"getDomainsDomainSubdomainsSubdomainPaths","summary":"List subdomain paths","description":"List paths for a given subdomain.","parameters":[{"name":"domain","type":"string","required":true,"description":"Name of the domain","example":"example.com","in":"path","schema":{"name":"domain","type":"string","required":true,"description":"Name of the domain","example":"example.com","in":"path"}},{"name":"subdomain","type":"string","required":true,"description":"Name of the subdomain","example":"app","in":"path","schema":{"name":"subdomain","type":"string","required":true,"description":"Name of the subdomain","example":"app","in":"path"}}],"responses":{"200":{"description":"A list of paths for the given subdomain.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"paths":{"type":"array","items":{"type":"object","properties":{"subdomain":{"type":"string","pattern":"^\\*|^@$|^([0-9a-z]([0-9a-z\\-]*[0-9a-z])?\\.)*[0-9a-z]([0-9a-z\\-]*[0-9a-z])?$","description":"The domain the path should be created for.","example":"site.example.com"},"mode":{"type":"string","enum":["prefix","exact","regex"],"description":"Mode of the path, determining how the URI will be interpreted.","example":"prefix"},"uri":{"type":"string","description":"URI of the subdomain path. Interpreted according to the selected path mode","example":"/"},"options":{"type":"object","properties":{"priority":{"type":"integer","minimum":0,"maximum":100,"description":"In case of uri conflicts, the route with the higher priority will take precedence","example":0},"ignoreUriCase":{"type":"boolean","description":"Allows case insensitive matching for 'prefix' and 'exact' modes"},"rewrite":{"oneOf":[{"type":"object","properties":{"uri":{"type":"string","pattern":"^\\/([_a-zA-Z0-9-&?=.]*)((\\/[_a-zA-Z0-9-&?=.]+)*(\\/)?)?$"}},"required":["uri"],"additionalProperties":false,"description":"Rewrite with URI"},{"type":"object","properties":{"regex":{"type":"object","properties":{"match":{"type":"string","description":"Regex match for the given path"},"rewrite":{"type":"string","description":"Regex rewrite for the given matched path"}},"required":["match","rewrite"],"additionalProperties":false}},"additionalProperties":false,"description":"Rewrite with regex"}],"description":"Settings determining if a path should be rewritten. Either a uri or regex have to be specified."},"timeout":{"type":"string","pattern":"^[1-9][0-9]*(s|ms)$","description":"Customised request timeout for the given path. By default no timeout is set."},"headers":{"type":"object","properties":{"request":{"type":"object","properties":{"set":{"type":"object","properties":{},"additionalProperties":false},"add":{"type":"object","properties":{},"additionalProperties":false},"remove":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9_\\-%$+]+$"}}},"additionalProperties":false},"response":{"type":"object","properties":{"set":{"type":"object","properties":{},"additionalProperties":false},"add":{"type":"object","properties":{},"additionalProperties":false},"remove":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9_\\-%$+]+$"}}},"additionalProperties":false}},"additionalProperties":false,"description":"Settings allowing addition, re-write and removal of request as well as response headers."},"corsPolicy":{"type":"object","properties":{"enabled":{"type":"boolean"},"allowOrigins":{"type":"array","items":{"type":"object","properties":{"mode":{"type":"string","enum":["prefix","exact","regex"],"description":"Mode of the path, determining how the URI will be interpreted.","example":"prefix"},"origin":{"type":"string","description":"Origin definition.","example":"https://example.com"}},"required":["mode"],"additionalProperties":false}},"allowMethods":{"type":"array","items":{"type":"string","enum":["GET","POST","PUT","PATCH","DELETE","OPTIONS","TRACE","CONNECT","HEAD"]}},"allowCredentials":{"type":"boolean"},"allowHeaders":{"type":"array","items":{"type":"string"}},"maxAge":{"type":"string","pattern":"^[1-9][0-9]*(s|m|h)$"}},"required":["enabled"],"additionalProperties":false,"description":"Settings allowing for customization of CORS policies."},"retries":{"type":"object","properties":{"enabled":{"type":"boolean"},"attempts":{"type":"integer","minimum":1,"maximum":3},"perTryTimeout":{"type":"string","pattern":"^[1-9][0-9]*(s|ms)$","description":"Timeout per attempt. By default uses the path level timeout."},"retryOn":{"type":"array","items":{"type":"string","enum":["5xx","gateway-error","reset","connect-failure","envoy-ratelimited","retriable-4xx","refused-stream","retriable-status-codes","retriable-headers","cancelled","deadline-exceeded","internal","resource-exhausted","unavailable"]},"uniqueItems":true,"description":"Configure the cases in which the retry should be triggered."}},"required":["enabled","attempts"],"additionalProperties":false,"description":"Settings allowing for customization of retries."}},"additionalProperties":false},"name":{"type":"string","description":"The full URL including subdomain and path URI."},"createdAt":{"type":"string","format":"date-time","description":"time of creation"}},"required":["subdomain","mode","uri"],"additionalProperties":false,"description":"Details about a subdomain path."},"description":"A list of paths created for the given subdomain."}},"required":["paths"],"additionalProperties":false,"description":"Result data."},"pagination":{"type":"object","properties":{"hasNextPage":{"type":"boolean","description":"Is there another page of results available?","example":false},"cursor":{"type":"string","description":"The cursor to access the next page of results."},"count":{"type":"number","format":"float","description":"The number of results returned by this request.","example":1}},"required":["hasNextPage","count"],"additionalProperties":false,"description":"Data about the endpoint pagination."}},"required":["data","pagination"],"additionalProperties":false,"description":"Response object."}}},"tags":["Domains"],"security":[],"x-nf-permission-required":"Account > SubdomainPaths > General > Read","x-nf-team-scoped":true,"x-nf-cli-command":["list","subdomain","path"]},"v1-domains--domain--subdomains--subdomain--paths-get-team-scoped":{"operationId":"getDomainsDomainSubdomainsSubdomainPaths","summary":"List subdomain paths","description":"List paths for a given subdomain.","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"domain","type":"string","required":true,"description":"Name of the domain","example":"example.com","in":"path","schema":{"name":"domain","type":"string","required":true,"description":"Name of the domain","example":"example.com","in":"path"}},{"name":"subdomain","type":"string","required":true,"description":"Name of the subdomain","example":"app","in":"path","schema":{"name":"subdomain","type":"string","required":true,"description":"Name of the subdomain","example":"app","in":"path"}}],"responses":{"200":{"description":"A list of paths for the given subdomain.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"paths":{"type":"array","items":{"type":"object","properties":{"subdomain":{"type":"string","pattern":"^\\*|^@$|^([0-9a-z]([0-9a-z\\-]*[0-9a-z])?\\.)*[0-9a-z]([0-9a-z\\-]*[0-9a-z])?$","description":"The domain the path should be created for.","example":"site.example.com"},"mode":{"type":"string","enum":["prefix","exact","regex"],"description":"Mode of the path, determining how the URI will be interpreted.","example":"prefix"},"uri":{"type":"string","description":"URI of the subdomain path. Interpreted according to the selected path mode","example":"/"},"options":{"type":"object","properties":{"priority":{"type":"integer","minimum":0,"maximum":100,"description":"In case of uri conflicts, the route with the higher priority will take precedence","example":0},"ignoreUriCase":{"type":"boolean","description":"Allows case insensitive matching for 'prefix' and 'exact' modes"},"rewrite":{"oneOf":[{"type":"object","properties":{"uri":{"type":"string","pattern":"^\\/([_a-zA-Z0-9-&?=.]*)((\\/[_a-zA-Z0-9-&?=.]+)*(\\/)?)?$"}},"required":["uri"],"additionalProperties":false,"description":"Rewrite with URI"},{"type":"object","properties":{"regex":{"type":"object","properties":{"match":{"type":"string","description":"Regex match for the given path"},"rewrite":{"type":"string","description":"Regex rewrite for the given matched path"}},"required":["match","rewrite"],"additionalProperties":false}},"additionalProperties":false,"description":"Rewrite with regex"}],"description":"Settings determining if a path should be rewritten. Either a uri or regex have to be specified."},"timeout":{"type":"string","pattern":"^[1-9][0-9]*(s|ms)$","description":"Customised request timeout for the given path. By default no timeout is set."},"headers":{"type":"object","properties":{"request":{"type":"object","properties":{"set":{"type":"object","properties":{},"additionalProperties":false},"add":{"type":"object","properties":{},"additionalProperties":false},"remove":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9_\\-%$+]+$"}}},"additionalProperties":false},"response":{"type":"object","properties":{"set":{"type":"object","properties":{},"additionalProperties":false},"add":{"type":"object","properties":{},"additionalProperties":false},"remove":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9_\\-%$+]+$"}}},"additionalProperties":false}},"additionalProperties":false,"description":"Settings allowing addition, re-write and removal of request as well as response headers."},"corsPolicy":{"type":"object","properties":{"enabled":{"type":"boolean"},"allowOrigins":{"type":"array","items":{"type":"object","properties":{"mode":{"type":"string","enum":["prefix","exact","regex"],"description":"Mode of the path, determining how the URI will be interpreted.","example":"prefix"},"origin":{"type":"string","description":"Origin definition.","example":"https://example.com"}},"required":["mode"],"additionalProperties":false}},"allowMethods":{"type":"array","items":{"type":"string","enum":["GET","POST","PUT","PATCH","DELETE","OPTIONS","TRACE","CONNECT","HEAD"]}},"allowCredentials":{"type":"boolean"},"allowHeaders":{"type":"array","items":{"type":"string"}},"maxAge":{"type":"string","pattern":"^[1-9][0-9]*(s|m|h)$"}},"required":["enabled"],"additionalProperties":false,"description":"Settings allowing for customization of CORS policies."},"retries":{"type":"object","properties":{"enabled":{"type":"boolean"},"attempts":{"type":"integer","minimum":1,"maximum":3},"perTryTimeout":{"type":"string","pattern":"^[1-9][0-9]*(s|ms)$","description":"Timeout per attempt. By default uses the path level timeout."},"retryOn":{"type":"array","items":{"type":"string","enum":["5xx","gateway-error","reset","connect-failure","envoy-ratelimited","retriable-4xx","refused-stream","retriable-status-codes","retriable-headers","cancelled","deadline-exceeded","internal","resource-exhausted","unavailable"]},"uniqueItems":true,"description":"Configure the cases in which the retry should be triggered."}},"required":["enabled","attempts"],"additionalProperties":false,"description":"Settings allowing for customization of retries."}},"additionalProperties":false},"name":{"type":"string","description":"The full URL including subdomain and path URI."},"createdAt":{"type":"string","format":"date-time","description":"time of creation"}},"required":["subdomain","mode","uri"],"additionalProperties":false,"description":"Details about a subdomain path."},"description":"A list of paths created for the given subdomain."}},"required":["paths"],"additionalProperties":false,"description":"Result data."},"pagination":{"type":"object","properties":{"hasNextPage":{"type":"boolean","description":"Is there another page of results available?","example":false},"cursor":{"type":"string","description":"The cursor to access the next page of results."},"count":{"type":"number","format":"float","description":"The number of results returned by this request.","example":1}},"required":["hasNextPage","count"],"additionalProperties":false,"description":"Data about the endpoint pagination."}},"required":["data","pagination"],"additionalProperties":false,"description":"Response object."}}},"tags":["Domains","team"],"security":[],"x-nf-permission-required":"Account > SubdomainPaths > General > Read","x-nf-team-scoped":true,"x-nf-cli-command":["list","subdomain","path"]},"v1-domains--domain--subdomains--subdomain--paths--subdomainPath--get":{"operationId":"getDomainsDomainSubdomainsSubdomainPathsSubdomainpath","summary":"Get subdomain path","description":"Get subdomain path details.","parameters":[{"name":"domain","type":"string","required":true,"description":"Name of the domain","example":"example.com","in":"path","schema":{"name":"domain","type":"string","required":true,"description":"Name of the domain","example":"example.com","in":"path"}},{"name":"subdomain","type":"string","required":true,"description":"Name of the subdomain","example":"app","in":"path","schema":{"name":"subdomain","type":"string","required":true,"description":"Name of the subdomain","example":"app","in":"path"}},{"name":"subdomainPath","type":"string","required":true,"description":"Name of the path","example":"/","in":"path","schema":{"name":"subdomainPath","type":"string","required":true,"description":"Name of the path","example":"/","in":"path"}}],"responses":{"200":{"description":"Details about subdomain path.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"mode":{"type":"string","enum":["prefix","exact","regex"],"description":"Mode of the path, determining how the URI will be interpreted.","example":"prefix"},"uri":{"type":"string","description":"URI of the subdomain path. Interpreted according to the selected path mode","example":"/"},"options":{"type":"object","properties":{"priority":{"type":"integer","minimum":0,"maximum":100,"description":"In case of uri conflicts, the route with the higher priority will take precedence","example":0},"ignoreUriCase":{"type":"boolean","description":"Allows case insensitive matching for 'prefix' and 'exact' modes"},"rewrite":{"oneOf":[{"type":"object","properties":{"uri":{"type":"string","pattern":"^\\/([_a-zA-Z0-9-&?=.]*)((\\/[_a-zA-Z0-9-&?=.]+)*(\\/)?)?$"}},"required":["uri"],"additionalProperties":false,"description":"Rewrite with URI"},{"type":"object","properties":{"regex":{"type":"object","properties":{"match":{"type":"string","description":"Regex match for the given path"},"rewrite":{"type":"string","description":"Regex rewrite for the given matched path"}},"required":["match","rewrite"],"additionalProperties":false}},"additionalProperties":false,"description":"Rewrite with regex"}],"description":"Settings determining if a path should be rewritten. Either a uri or regex have to be specified."},"timeout":{"type":"string","pattern":"^[1-9][0-9]*(s|ms)$","description":"Customised request timeout for the given path. By default no timeout is set."},"headers":{"type":"object","properties":{"request":{"type":"object","properties":{"set":{"type":"object","properties":{},"additionalProperties":false},"add":{"type":"object","properties":{},"additionalProperties":false},"remove":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9_\\-%$+]+$"}}},"additionalProperties":false},"response":{"type":"object","properties":{"set":{"type":"object","properties":{},"additionalProperties":false},"add":{"type":"object","properties":{},"additionalProperties":false},"remove":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9_\\-%$+]+$"}}},"additionalProperties":false}},"additionalProperties":false,"description":"Settings allowing addition, re-write and removal of request as well as response headers."},"corsPolicy":{"type":"object","properties":{"enabled":{"type":"boolean"},"allowOrigins":{"type":"array","items":{"type":"object","properties":{"mode":{"type":"string","enum":["prefix","exact","regex"],"description":"Mode of the path, determining how the URI will be interpreted.","example":"prefix"},"origin":{"type":"string","description":"Origin definition.","example":"https://example.com"}},"required":["mode"],"additionalProperties":false}},"allowMethods":{"type":"array","items":{"type":"string","enum":["GET","POST","PUT","PATCH","DELETE","OPTIONS","TRACE","CONNECT","HEAD"]}},"allowCredentials":{"type":"boolean"},"allowHeaders":{"type":"array","items":{"type":"string"}},"maxAge":{"type":"string","pattern":"^[1-9][0-9]*(s|m|h)$"}},"required":["enabled"],"additionalProperties":false,"description":"Settings allowing for customization of CORS policies."},"retries":{"type":"object","properties":{"enabled":{"type":"boolean"},"attempts":{"type":"integer","minimum":1,"maximum":3},"perTryTimeout":{"type":"string","pattern":"^[1-9][0-9]*(s|ms)$","description":"Timeout per attempt. By default uses the path level timeout."},"retryOn":{"type":"array","items":{"type":"string","enum":["5xx","gateway-error","reset","connect-failure","envoy-ratelimited","retriable-4xx","refused-stream","retriable-status-codes","retriable-headers","cancelled","deadline-exceeded","internal","resource-exhausted","unavailable"]},"uniqueItems":true,"description":"Configure the cases in which the retry should be triggered."}},"required":["enabled","attempts"],"additionalProperties":false,"description":"Settings allowing for customization of retries."}},"additionalProperties":false},"name":{"type":"string","description":"The full URL including subdomain and path URI."},"createdAt":{"type":"string","format":"date-time","description":"time of creation"},"assignment":{"type":"object","properties":{"project":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The ID of the service to assign the subdomain path to.","example":"default-project"},"service":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The ID of the project the service belongs to.","example":"example-service"},"port":{"type":"string","description":"The name of the port that will be assigned to the subdomain path.","example":"p01"}},"required":["project","service","port"],"additionalProperties":false,"description":"Data about the subdomain path assignment."}},"required":["mode","uri"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}},"404":{"description":"Path not found."}},"tags":["Domains"],"security":[],"x-nf-permission-required":"Account > SubdomainPaths > General > Read","x-nf-team-scoped":true,"x-nf-cli-command":["get","subdomain","path"]},"v1-domains--domain--subdomains--subdomain--paths--subdomainPath--get-team-scoped":{"operationId":"getDomainsDomainSubdomainsSubdomainPathsSubdomainpath","summary":"Get subdomain path","description":"Get subdomain path details.","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"domain","type":"string","required":true,"description":"Name of the domain","example":"example.com","in":"path","schema":{"name":"domain","type":"string","required":true,"description":"Name of the domain","example":"example.com","in":"path"}},{"name":"subdomain","type":"string","required":true,"description":"Name of the subdomain","example":"app","in":"path","schema":{"name":"subdomain","type":"string","required":true,"description":"Name of the subdomain","example":"app","in":"path"}},{"name":"subdomainPath","type":"string","required":true,"description":"Name of the path","example":"/","in":"path","schema":{"name":"subdomainPath","type":"string","required":true,"description":"Name of the path","example":"/","in":"path"}}],"responses":{"200":{"description":"Details about subdomain path.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"mode":{"type":"string","enum":["prefix","exact","regex"],"description":"Mode of the path, determining how the URI will be interpreted.","example":"prefix"},"uri":{"type":"string","description":"URI of the subdomain path. Interpreted according to the selected path mode","example":"/"},"options":{"type":"object","properties":{"priority":{"type":"integer","minimum":0,"maximum":100,"description":"In case of uri conflicts, the route with the higher priority will take precedence","example":0},"ignoreUriCase":{"type":"boolean","description":"Allows case insensitive matching for 'prefix' and 'exact' modes"},"rewrite":{"oneOf":[{"type":"object","properties":{"uri":{"type":"string","pattern":"^\\/([_a-zA-Z0-9-&?=.]*)((\\/[_a-zA-Z0-9-&?=.]+)*(\\/)?)?$"}},"required":["uri"],"additionalProperties":false,"description":"Rewrite with URI"},{"type":"object","properties":{"regex":{"type":"object","properties":{"match":{"type":"string","description":"Regex match for the given path"},"rewrite":{"type":"string","description":"Regex rewrite for the given matched path"}},"required":["match","rewrite"],"additionalProperties":false}},"additionalProperties":false,"description":"Rewrite with regex"}],"description":"Settings determining if a path should be rewritten. Either a uri or regex have to be specified."},"timeout":{"type":"string","pattern":"^[1-9][0-9]*(s|ms)$","description":"Customised request timeout for the given path. By default no timeout is set."},"headers":{"type":"object","properties":{"request":{"type":"object","properties":{"set":{"type":"object","properties":{},"additionalProperties":false},"add":{"type":"object","properties":{},"additionalProperties":false},"remove":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9_\\-%$+]+$"}}},"additionalProperties":false},"response":{"type":"object","properties":{"set":{"type":"object","properties":{},"additionalProperties":false},"add":{"type":"object","properties":{},"additionalProperties":false},"remove":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9_\\-%$+]+$"}}},"additionalProperties":false}},"additionalProperties":false,"description":"Settings allowing addition, re-write and removal of request as well as response headers."},"corsPolicy":{"type":"object","properties":{"enabled":{"type":"boolean"},"allowOrigins":{"type":"array","items":{"type":"object","properties":{"mode":{"type":"string","enum":["prefix","exact","regex"],"description":"Mode of the path, determining how the URI will be interpreted.","example":"prefix"},"origin":{"type":"string","description":"Origin definition.","example":"https://example.com"}},"required":["mode"],"additionalProperties":false}},"allowMethods":{"type":"array","items":{"type":"string","enum":["GET","POST","PUT","PATCH","DELETE","OPTIONS","TRACE","CONNECT","HEAD"]}},"allowCredentials":{"type":"boolean"},"allowHeaders":{"type":"array","items":{"type":"string"}},"maxAge":{"type":"string","pattern":"^[1-9][0-9]*(s|m|h)$"}},"required":["enabled"],"additionalProperties":false,"description":"Settings allowing for customization of CORS policies."},"retries":{"type":"object","properties":{"enabled":{"type":"boolean"},"attempts":{"type":"integer","minimum":1,"maximum":3},"perTryTimeout":{"type":"string","pattern":"^[1-9][0-9]*(s|ms)$","description":"Timeout per attempt. By default uses the path level timeout."},"retryOn":{"type":"array","items":{"type":"string","enum":["5xx","gateway-error","reset","connect-failure","envoy-ratelimited","retriable-4xx","refused-stream","retriable-status-codes","retriable-headers","cancelled","deadline-exceeded","internal","resource-exhausted","unavailable"]},"uniqueItems":true,"description":"Configure the cases in which the retry should be triggered."}},"required":["enabled","attempts"],"additionalProperties":false,"description":"Settings allowing for customization of retries."}},"additionalProperties":false},"name":{"type":"string","description":"The full URL including subdomain and path URI."},"createdAt":{"type":"string","format":"date-time","description":"time of creation"},"assignment":{"type":"object","properties":{"project":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The ID of the service to assign the subdomain path to.","example":"default-project"},"service":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The ID of the project the service belongs to.","example":"example-service"},"port":{"type":"string","description":"The name of the port that will be assigned to the subdomain path.","example":"p01"}},"required":["project","service","port"],"additionalProperties":false,"description":"Data about the subdomain path assignment."}},"required":["mode","uri"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}},"404":{"description":"Path not found."}},"tags":["Domains","team"],"security":[],"x-nf-permission-required":"Account > SubdomainPaths > General > Read","x-nf-team-scoped":true,"x-nf-cli-command":["get","subdomain","path"]},"v1-domains--domain--subdomains--subdomain--paths--subdomainPath--delete":{"operationId":"deleteDomainsDomainSubdomainsSubdomainPathsSubdomainpath","summary":"Delete subdomain path","description":"Delete a path.","parameters":[{"name":"domain","type":"string","required":true,"description":"Name of the domain","example":"example.com","in":"path","schema":{"name":"domain","type":"string","required":true,"description":"Name of the domain","example":"example.com","in":"path"}},{"name":"subdomain","type":"string","required":true,"description":"Name of the subdomain","example":"app","in":"path","schema":{"name":"subdomain","type":"string","required":true,"description":"Name of the subdomain","example":"app","in":"path"}},{"name":"subdomainPath","type":"string","required":true,"description":"Name of the path","example":"/","in":"path","schema":{"name":"subdomainPath","type":"string","required":true,"description":"Name of the path","example":"/","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Domains"],"security":[],"x-nf-permission-required":"Account > SubdomainPaths > General > Update","x-nf-team-scoped":true,"x-nf-cli-command":["delete","subdomain","path"]},"v1-domains--domain--subdomains--subdomain--paths--subdomainPath--delete-team-scoped":{"operationId":"deleteDomainsDomainSubdomainsSubdomainPathsSubdomainpath","summary":"Delete subdomain path","description":"Delete a path.","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"domain","type":"string","required":true,"description":"Name of the domain","example":"example.com","in":"path","schema":{"name":"domain","type":"string","required":true,"description":"Name of the domain","example":"example.com","in":"path"}},{"name":"subdomain","type":"string","required":true,"description":"Name of the subdomain","example":"app","in":"path","schema":{"name":"subdomain","type":"string","required":true,"description":"Name of the subdomain","example":"app","in":"path"}},{"name":"subdomainPath","type":"string","required":true,"description":"Name of the path","example":"/","in":"path","schema":{"name":"subdomainPath","type":"string","required":true,"description":"Name of the path","example":"/","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Domains","team"],"security":[],"x-nf-permission-required":"Account > SubdomainPaths > General > Update","x-nf-team-scoped":true,"x-nf-cli-command":["delete","subdomain","path"]},"v1-domains--domain--subdomains--subdomain--paths--subdomainPath--post":{"operationId":"postDomainsDomainSubdomainsSubdomainPathsSubdomainpath","summary":"Update subdomain path","description":"Update a subdomain path.","parameters":[{"name":"domain","type":"string","required":true,"description":"Name of the domain","example":"example.com","in":"path","schema":{"name":"domain","type":"string","required":true,"description":"Name of the domain","example":"example.com","in":"path"}},{"name":"subdomain","type":"string","required":true,"description":"Name of the subdomain","example":"app","in":"path","schema":{"name":"subdomain","type":"string","required":true,"description":"Name of the subdomain","example":"app","in":"path"}},{"name":"subdomainPath","type":"string","required":true,"description":"Name of the path","example":"/","in":"path","schema":{"name":"subdomainPath","type":"string","required":true,"description":"Name of the path","example":"/","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Domains"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"options":{"type":"object","properties":{"priority":{"type":"integer","minimum":0,"maximum":100,"description":"In case of uri conflicts, the route with the higher priority will take precedence","example":0},"ignoreUriCase":{"type":"boolean","description":"Allows case insensitive matching for 'prefix' and 'exact' modes"},"rewrite":{"oneOf":[{"type":"object","properties":{"uri":{"type":"string","pattern":"^\\/([_a-zA-Z0-9-&?=.]*)((\\/[_a-zA-Z0-9-&?=.]+)*(\\/)?)?$"}},"required":["uri"],"additionalProperties":false,"description":"Rewrite with URI"},{"type":"object","properties":{"regex":{"type":"object","properties":{"match":{"type":"string","description":"Regex match for the given path"},"rewrite":{"type":"string","description":"Regex rewrite for the given matched path"}},"required":["match","rewrite"],"additionalProperties":false}},"additionalProperties":false,"description":"Rewrite with regex"}],"description":"Settings determining if a path should be rewritten. Either a uri or regex have to be specified."},"timeout":{"type":"string","pattern":"^[1-9][0-9]*(s|ms)$","description":"Customised request timeout for the given path. By default no timeout is set."},"headers":{"type":"object","properties":{"request":{"type":"object","properties":{"set":{"type":"object","properties":{},"additionalProperties":false},"add":{"type":"object","properties":{},"additionalProperties":false},"remove":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9_\\-%$+]+$"}}},"additionalProperties":false},"response":{"type":"object","properties":{"set":{"type":"object","properties":{},"additionalProperties":false},"add":{"type":"object","properties":{},"additionalProperties":false},"remove":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9_\\-%$+]+$"}}},"additionalProperties":false}},"additionalProperties":false,"description":"Settings allowing addition, re-write and removal of request as well as response headers."},"corsPolicy":{"type":"object","properties":{"enabled":{"type":"boolean"},"allowOrigins":{"type":"array","items":{"type":"object","properties":{"mode":{"type":"string","enum":["prefix","exact","regex"],"description":"Mode of the path, determining how the URI will be interpreted.","example":"prefix"},"origin":{"type":"string","description":"Origin definition.","example":"https://example.com"}},"required":["mode"],"additionalProperties":false}},"allowMethods":{"type":"array","items":{"type":"string","enum":["GET","POST","PUT","PATCH","DELETE","OPTIONS","TRACE","CONNECT","HEAD"]}},"allowCredentials":{"type":"boolean"},"allowHeaders":{"type":"array","items":{"type":"string"}},"maxAge":{"type":"string","pattern":"^[1-9][0-9]*(s|m|h)$"}},"required":["enabled"],"additionalProperties":false,"description":"Settings allowing for customization of CORS policies."},"retries":{"type":"object","properties":{"enabled":{"type":"boolean"},"attempts":{"type":"integer","minimum":1,"maximum":3},"perTryTimeout":{"type":"string","pattern":"^[1-9][0-9]*(s|ms)$","description":"Timeout per attempt. By default uses the path level timeout."},"retryOn":{"type":"array","items":{"type":"string","enum":["5xx","gateway-error","reset","connect-failure","envoy-ratelimited","retriable-4xx","refused-stream","retriable-status-codes","retriable-headers","cancelled","deadline-exceeded","internal","resource-exhausted","unavailable"]},"uniqueItems":true,"description":"Configure the cases in which the retry should be triggered."}},"required":["enabled","attempts"],"additionalProperties":false,"description":"Settings allowing for customization of retries."}},"additionalProperties":false}},"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Account > SubdomainPaths > General > Update","x-nf-team-scoped":true,"x-nf-cli-command":["update","subdomain","path"]},"v1-domains--domain--subdomains--subdomain--paths--subdomainPath--post-team-scoped":{"operationId":"postDomainsDomainSubdomainsSubdomainPathsSubdomainpath","summary":"Update subdomain path","description":"Update a subdomain path.","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"domain","type":"string","required":true,"description":"Name of the domain","example":"example.com","in":"path","schema":{"name":"domain","type":"string","required":true,"description":"Name of the domain","example":"example.com","in":"path"}},{"name":"subdomain","type":"string","required":true,"description":"Name of the subdomain","example":"app","in":"path","schema":{"name":"subdomain","type":"string","required":true,"description":"Name of the subdomain","example":"app","in":"path"}},{"name":"subdomainPath","type":"string","required":true,"description":"Name of the path","example":"/","in":"path","schema":{"name":"subdomainPath","type":"string","required":true,"description":"Name of the path","example":"/","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Domains","team"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"options":{"type":"object","properties":{"priority":{"type":"integer","minimum":0,"maximum":100,"description":"In case of uri conflicts, the route with the higher priority will take precedence","example":0},"ignoreUriCase":{"type":"boolean","description":"Allows case insensitive matching for 'prefix' and 'exact' modes"},"rewrite":{"oneOf":[{"type":"object","properties":{"uri":{"type":"string","pattern":"^\\/([_a-zA-Z0-9-&?=.]*)((\\/[_a-zA-Z0-9-&?=.]+)*(\\/)?)?$"}},"required":["uri"],"additionalProperties":false,"description":"Rewrite with URI"},{"type":"object","properties":{"regex":{"type":"object","properties":{"match":{"type":"string","description":"Regex match for the given path"},"rewrite":{"type":"string","description":"Regex rewrite for the given matched path"}},"required":["match","rewrite"],"additionalProperties":false}},"additionalProperties":false,"description":"Rewrite with regex"}],"description":"Settings determining if a path should be rewritten. Either a uri or regex have to be specified."},"timeout":{"type":"string","pattern":"^[1-9][0-9]*(s|ms)$","description":"Customised request timeout for the given path. By default no timeout is set."},"headers":{"type":"object","properties":{"request":{"type":"object","properties":{"set":{"type":"object","properties":{},"additionalProperties":false},"add":{"type":"object","properties":{},"additionalProperties":false},"remove":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9_\\-%$+]+$"}}},"additionalProperties":false},"response":{"type":"object","properties":{"set":{"type":"object","properties":{},"additionalProperties":false},"add":{"type":"object","properties":{},"additionalProperties":false},"remove":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9_\\-%$+]+$"}}},"additionalProperties":false}},"additionalProperties":false,"description":"Settings allowing addition, re-write and removal of request as well as response headers."},"corsPolicy":{"type":"object","properties":{"enabled":{"type":"boolean"},"allowOrigins":{"type":"array","items":{"type":"object","properties":{"mode":{"type":"string","enum":["prefix","exact","regex"],"description":"Mode of the path, determining how the URI will be interpreted.","example":"prefix"},"origin":{"type":"string","description":"Origin definition.","example":"https://example.com"}},"required":["mode"],"additionalProperties":false}},"allowMethods":{"type":"array","items":{"type":"string","enum":["GET","POST","PUT","PATCH","DELETE","OPTIONS","TRACE","CONNECT","HEAD"]}},"allowCredentials":{"type":"boolean"},"allowHeaders":{"type":"array","items":{"type":"string"}},"maxAge":{"type":"string","pattern":"^[1-9][0-9]*(s|m|h)$"}},"required":["enabled"],"additionalProperties":false,"description":"Settings allowing for customization of CORS policies."},"retries":{"type":"object","properties":{"enabled":{"type":"boolean"},"attempts":{"type":"integer","minimum":1,"maximum":3},"perTryTimeout":{"type":"string","pattern":"^[1-9][0-9]*(s|ms)$","description":"Timeout per attempt. By default uses the path level timeout."},"retryOn":{"type":"array","items":{"type":"string","enum":["5xx","gateway-error","reset","connect-failure","envoy-ratelimited","retriable-4xx","refused-stream","retriable-status-codes","retriable-headers","cancelled","deadline-exceeded","internal","resource-exhausted","unavailable"]},"uniqueItems":true,"description":"Configure the cases in which the retry should be triggered."}},"required":["enabled","attempts"],"additionalProperties":false,"description":"Settings allowing for customization of retries."}},"additionalProperties":false}},"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Account > SubdomainPaths > General > Update","x-nf-team-scoped":true,"x-nf-cli-command":["update","subdomain","path"]},"v1-domains--domain--subdomains--subdomain--paths--subdomainPath--assign-post":{"operationId":"postDomainsDomainSubdomainsSubdomainPathsSubdomainpathAssign","summary":"Assign subdomain path","description":"Assign a subdomain path to a port.","parameters":[{"name":"domain","type":"string","required":true,"description":"Name of the domain","example":"example.com","in":"path","schema":{"name":"domain","type":"string","required":true,"description":"Name of the domain","example":"example.com","in":"path"}},{"name":"subdomain","type":"string","required":true,"description":"Name of the subdomain","example":"app","in":"path","schema":{"name":"subdomain","type":"string","required":true,"description":"Name of the subdomain","example":"app","in":"path"}},{"name":"subdomainPath","type":"string","required":true,"description":"Name of the path","example":"/","in":"path","schema":{"name":"subdomainPath","type":"string","required":true,"description":"Name of the path","example":"/","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Domains"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"assignment":{"type":"object","properties":{"project":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The ID of the service to assign the subdomain path to.","example":"default-project"},"service":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The ID of the project the service belongs to.","example":"example-service"},"port":{"type":"string","description":"The name of the port that will be assigned to the subdomain path.","example":"p01"}},"required":["project","service","port"],"additionalProperties":false,"description":"Data about the subdomain path assignment."}},"required":["assignment"],"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Account > SubdomainPaths > General > Update","x-nf-team-scoped":true,"x-nf-cli-command":["assign","subdomain","path"]},"v1-domains--domain--subdomains--subdomain--paths--subdomainPath--assign-post-team-scoped":{"operationId":"postDomainsDomainSubdomainsSubdomainPathsSubdomainpathAssign","summary":"Assign subdomain path","description":"Assign a subdomain path to a port.","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"domain","type":"string","required":true,"description":"Name of the domain","example":"example.com","in":"path","schema":{"name":"domain","type":"string","required":true,"description":"Name of the domain","example":"example.com","in":"path"}},{"name":"subdomain","type":"string","required":true,"description":"Name of the subdomain","example":"app","in":"path","schema":{"name":"subdomain","type":"string","required":true,"description":"Name of the subdomain","example":"app","in":"path"}},{"name":"subdomainPath","type":"string","required":true,"description":"Name of the path","example":"/","in":"path","schema":{"name":"subdomainPath","type":"string","required":true,"description":"Name of the path","example":"/","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Domains","team"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"assignment":{"type":"object","properties":{"project":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The ID of the service to assign the subdomain path to.","example":"default-project"},"service":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The ID of the project the service belongs to.","example":"example-service"},"port":{"type":"string","description":"The name of the port that will be assigned to the subdomain path.","example":"p01"}},"required":["project","service","port"],"additionalProperties":false,"description":"Data about the subdomain path assignment."}},"required":["assignment"],"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Account > SubdomainPaths > General > Update","x-nf-team-scoped":true,"x-nf-cli-command":["assign","subdomain","path"]},"v1-domains--domain--subdomains--subdomain--paths--subdomainPath--assign-delete":{"operationId":"deleteDomainsDomainSubdomainsSubdomainPathsSubdomainpathAssign","summary":"Unassign subdomain path","description":"Unassign a subdomain path to a port.","parameters":[{"name":"domain","type":"string","required":true,"description":"Name of the domain","example":"example.com","in":"path","schema":{"name":"domain","type":"string","required":true,"description":"Name of the domain","example":"example.com","in":"path"}},{"name":"subdomain","type":"string","required":true,"description":"Name of the subdomain","example":"app","in":"path","schema":{"name":"subdomain","type":"string","required":true,"description":"Name of the subdomain","example":"app","in":"path"}},{"name":"subdomainPath","type":"string","required":true,"description":"Name of the path","example":"/","in":"path","schema":{"name":"subdomainPath","type":"string","required":true,"description":"Name of the path","example":"/","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Domains"],"security":[],"x-nf-permission-required":"Account > SubdomainPaths > General > Update","x-nf-team-scoped":true,"x-nf-cli-command":["unassign","subdomain","path"]},"v1-domains--domain--subdomains--subdomain--paths--subdomainPath--assign-delete-team-scoped":{"operationId":"deleteDomainsDomainSubdomainsSubdomainPathsSubdomainpathAssign","summary":"Unassign subdomain path","description":"Unassign a subdomain path to a port.","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"domain","type":"string","required":true,"description":"Name of the domain","example":"example.com","in":"path","schema":{"name":"domain","type":"string","required":true,"description":"Name of the domain","example":"example.com","in":"path"}},{"name":"subdomain","type":"string","required":true,"description":"Name of the subdomain","example":"app","in":"path","schema":{"name":"subdomain","type":"string","required":true,"description":"Name of the subdomain","example":"app","in":"path"}},{"name":"subdomainPath","type":"string","required":true,"description":"Name of the path","example":"/","in":"path","schema":{"name":"subdomainPath","type":"string","required":true,"description":"Name of the path","example":"/","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Domains","team"],"security":[],"x-nf-permission-required":"Account > SubdomainPaths > General > Update","x-nf-team-scoped":true,"x-nf-cli-command":["unassign","subdomain","path"]},"v1-domains--domain--subdomains--subdomain--verify-post":{"operationId":"postDomainsDomainSubdomainsSubdomainVerify","summary":"Verify subdomain","description":"Gets details about the given subdomain","parameters":[{"name":"domain","type":"string","required":true,"description":"Name of the domain","example":"example.com","in":"path","schema":{"name":"domain","type":"string","required":true,"description":"Name of the domain","example":"example.com","in":"path"}},{"name":"subdomain","type":"string","required":true,"description":"Name of the subdomain","example":"app","in":"path","schema":{"name":"subdomain","type":"string","required":true,"description":"Name of the subdomain","example":"app","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}},"400":{"description":"Failed to verify the subdomain."}},"tags":["Domains"],"security":[],"x-nf-permission-required":"Account > Subdomains > General > Update","x-nf-team-scoped":true,"x-nf-cli-command":["verify","subdomain"]},"v1-domains--domain--subdomains--subdomain--verify-post-team-scoped":{"operationId":"postDomainsDomainSubdomainsSubdomainVerify","summary":"Verify subdomain","description":"Gets details about the given subdomain","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"domain","type":"string","required":true,"description":"Name of the domain","example":"example.com","in":"path","schema":{"name":"domain","type":"string","required":true,"description":"Name of the domain","example":"example.com","in":"path"}},{"name":"subdomain","type":"string","required":true,"description":"Name of the subdomain","example":"app","in":"path","schema":{"name":"subdomain","type":"string","required":true,"description":"Name of the subdomain","example":"app","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}},"400":{"description":"Failed to verify the subdomain."}},"tags":["Domains","team"],"security":[],"x-nf-permission-required":"Account > Subdomains > General > Update","x-nf-team-scoped":true,"x-nf-cli-command":["verify","subdomain"]},"v1-domains--domain--verify-post":{"operationId":"postDomainsDomainVerify","summary":"Verify domain","description":"Attempts to verify the domain","parameters":[{"name":"domain","type":"string","required":true,"description":"Name of the domain","example":"example.com","in":"path","schema":{"name":"domain","type":"string","required":true,"description":"Name of the domain","example":"example.com","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}},"400":{"description":"Failed to verify the domain."}},"tags":["Domains"],"security":[],"x-nf-permission-required":"Account > Domains > General > Create","x-nf-team-scoped":true,"x-nf-cli-command":["verify","domain"]},"v1-domains--domain--verify-post-team-scoped":{"operationId":"postDomainsDomainVerify","summary":"Verify domain","description":"Attempts to verify the domain","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"domain","type":"string","required":true,"description":"Name of the domain","example":"example.com","in":"path","schema":{"name":"domain","type":"string","required":true,"description":"Name of the domain","example":"example.com","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}},"400":{"description":"Failed to verify the domain."}},"tags":["Domains","team"],"security":[],"x-nf-permission-required":"Account > Domains > General > Create","x-nf-team-scoped":true,"x-nf-cli-command":["verify","domain"]},"v1-egress-ips-get":{"operationId":"getEgressIps","summary":"List egress IPs","description":"Gets a list of egress IPs belonging to the team","parameters":[{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query","schema":{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query"}},{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query","schema":{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query"}},{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query","schema":{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query"}}],"responses":{"200":{"description":"A list of egress IPs belonging to the team.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"egressIps":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The name of the egress IP.","example":"my-egress-ip"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"The description of the egress IP.","example":"This is a new egress IP."},"spec":{"type":"object","properties":{"provisioningMode":{"type":"string","enum":["shared","dedicated"],"description":"Provisioning mode for the egress IP: shared (uses pre-provisioned infrastructure) or dedicated","example":"shared"},"region":{"type":"string","pattern":"^[A-Za-z0-9]+(-[A-Za-z0-9]+)*$","description":"Target region name","example":"europe-west"},"mode":{"type":"string","enum":["include","exclude"],"description":"Mode: include (only these projects/resources use this egress IP) or exclude (all except these use this egress IP)","example":"include","default":"include"},"rules":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Project internal ID"},"restrictions":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether restrictions scoping the rule to specific resources should be applied."},"resources":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["service","job"],"description":"Resource type"},"id":{"type":"string","description":"Resource internal ID"}},"required":["type","id"],"additionalProperties":false},"description":"Resources the rule should be restricted to "}},"required":["enabled"],"additionalProperties":false,"description":"Rule restrictions"}},"required":["id","restrictions"],"additionalProperties":false,"description":"Egress IP rule"},"description":"Egress IP rules - array of projects the rule applies to","default":[]}},"required":["provisioningMode","region"],"additionalProperties":false,"description":"Egress IP specification"},"id":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"ID of the egress IP","example":"my-egress-ip"},"createdAt":{"type":"string","format":"date-time","description":"The time the egress IP was created.","example":"2021-01-20T11:19:53.175Z"},"updatedAt":{"type":"string","format":"date-time","description":"The time the egress IP was last updated.","example":"2021-01-20T11:19:53.175Z"}},"required":["name","spec","id","createdAt","updatedAt"],"additionalProperties":false,"description":"An egress IP object."},"description":"An array of egress IPs."}},"required":["egressIps"],"additionalProperties":false,"description":"Result data."},"pagination":{"type":"object","properties":{"hasNextPage":{"type":"boolean","description":"Is there another page of results available?","example":false},"cursor":{"type":"string","description":"The cursor to access the next page of results."},"count":{"type":"number","format":"float","description":"The number of results returned by this request.","example":1}},"required":["hasNextPage","count"],"additionalProperties":false,"description":"Data about the endpoint pagination."}},"required":["data","pagination"],"additionalProperties":false,"description":"Response object."}}},"tags":["Egress IPs"],"security":[],"x-nf-permission-required":"Account > EgressIps > General > Read","x-nf-team-scoped":true,"x-nf-cli-command":["list","egress-ips"]},"v1-egress-ips-get-team-scoped":{"operationId":"getEgressIps","summary":"List egress IPs","description":"Gets a list of egress IPs belonging to the team","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query","schema":{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query"}},{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query","schema":{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query"}},{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query","schema":{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query"}}],"responses":{"200":{"description":"A list of egress IPs belonging to the team.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"egressIps":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The name of the egress IP.","example":"my-egress-ip"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"The description of the egress IP.","example":"This is a new egress IP."},"spec":{"type":"object","properties":{"provisioningMode":{"type":"string","enum":["shared","dedicated"],"description":"Provisioning mode for the egress IP: shared (uses pre-provisioned infrastructure) or dedicated","example":"shared"},"region":{"type":"string","pattern":"^[A-Za-z0-9]+(-[A-Za-z0-9]+)*$","description":"Target region name","example":"europe-west"},"mode":{"type":"string","enum":["include","exclude"],"description":"Mode: include (only these projects/resources use this egress IP) or exclude (all except these use this egress IP)","example":"include","default":"include"},"rules":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Project internal ID"},"restrictions":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether restrictions scoping the rule to specific resources should be applied."},"resources":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["service","job"],"description":"Resource type"},"id":{"type":"string","description":"Resource internal ID"}},"required":["type","id"],"additionalProperties":false},"description":"Resources the rule should be restricted to "}},"required":["enabled"],"additionalProperties":false,"description":"Rule restrictions"}},"required":["id","restrictions"],"additionalProperties":false,"description":"Egress IP rule"},"description":"Egress IP rules - array of projects the rule applies to","default":[]}},"required":["provisioningMode","region"],"additionalProperties":false,"description":"Egress IP specification"},"id":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"ID of the egress IP","example":"my-egress-ip"},"createdAt":{"type":"string","format":"date-time","description":"The time the egress IP was created.","example":"2021-01-20T11:19:53.175Z"},"updatedAt":{"type":"string","format":"date-time","description":"The time the egress IP was last updated.","example":"2021-01-20T11:19:53.175Z"}},"required":["name","spec","id","createdAt","updatedAt"],"additionalProperties":false,"description":"An egress IP object."},"description":"An array of egress IPs."}},"required":["egressIps"],"additionalProperties":false,"description":"Result data."},"pagination":{"type":"object","properties":{"hasNextPage":{"type":"boolean","description":"Is there another page of results available?","example":false},"cursor":{"type":"string","description":"The cursor to access the next page of results."},"count":{"type":"number","format":"float","description":"The number of results returned by this request.","example":1}},"required":["hasNextPage","count"],"additionalProperties":false,"description":"Data about the endpoint pagination."}},"required":["data","pagination"],"additionalProperties":false,"description":"Response object."}}},"tags":["Egress IPs","team"],"security":[],"x-nf-permission-required":"Account > EgressIps > General > Read","x-nf-team-scoped":true,"x-nf-cli-command":["list","egress-ips"]},"v1-egress-ips-post":{"operationId":"postEgressIps","summary":"Create egress IP","description":"Creates a new egress IP","parameters":[],"responses":{"200":{"description":"Details about the newly created egress IP.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"ID of the egress IP","example":"my-egress-ip"},"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The name of the egress IP.","example":"my-egress-ip"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"The description of the egress IP.","example":"This is a new egress IP."},"spec":{"type":"object","properties":{"provisioningMode":{"type":"string","enum":["shared","dedicated"],"description":"Provisioning mode for the egress IP: shared (uses pre-provisioned infrastructure) or dedicated","example":"shared"},"region":{"type":"string","pattern":"^[A-Za-z0-9]+(-[A-Za-z0-9]+)*$","description":"Target region name","example":"europe-west"},"mode":{"type":"string","enum":["include","exclude"],"description":"Mode: include (only these projects/resources use this egress IP) or exclude (all except these use this egress IP)","example":"include","default":"include"},"rules":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Project internal ID"},"restrictions":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether restrictions scoping the rule to specific resources should be applied."},"resources":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["service","job"],"description":"Resource type"},"id":{"type":"string","description":"Resource internal ID"}},"required":["type","id"],"additionalProperties":false},"description":"Resources the rule should be restricted to "}},"required":["enabled"],"additionalProperties":false,"description":"Rule restrictions"}},"required":["id","restrictions"],"additionalProperties":false,"description":"Egress IP rule"},"description":"Egress IP rules - array of projects the rule applies to","default":[]}},"required":["provisioningMode","region"],"additionalProperties":false,"description":"Egress IP specification"},"state":{"type":"object","properties":{"ipAddress":{"type":"string","description":"Assigned public IP address","example":"34.105.225.71"},"status":{"type":"string","enum":["staging","loading","active","error","deleting","deleted"],"description":"Current status of the egress IP","example":"active"},"lastTransitionTime":{"type":"string","format":"date-time","description":"Time of the last status transition"}},"required":["status","lastTransitionTime"],"additionalProperties":false},"createdAt":{"type":"string","format":"date-time","description":"The time the egress IP was created.","example":"2021-01-20T11:19:53.175Z"},"updatedAt":{"type":"string","format":"date-time","description":"The time the egress IP was last updated.","example":"2021-01-20T11:19:53.175Z"}},"required":["id","name","spec","createdAt","updatedAt"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Egress IPs"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The name of the egress IP.","example":"my-egress-ip"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"The description of the egress IP.","example":"This is a new egress IP."},"spec":{"type":"object","properties":{"provisioningMode":{"type":"string","enum":["shared","dedicated"],"description":"Provisioning mode for the egress IP: shared (uses pre-provisioned infrastructure) or dedicated","example":"shared"},"region":{"type":"string","pattern":"^[A-Za-z0-9]+(-[A-Za-z0-9]+)*$","description":"Target region name","example":"europe-west"},"mode":{"type":"string","enum":["include","exclude"],"description":"Mode: include (only these projects/resources use this egress IP) or exclude (all except these use this egress IP)","example":"include","default":"include"},"rules":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Project internal ID"},"restrictions":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether restrictions scoping the rule to specific resources should be applied."},"resources":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["service","job"],"description":"Resource type"},"id":{"type":"string","description":"Resource internal ID"}},"required":["type","id"],"additionalProperties":false},"description":"Resources the rule should be restricted to "}},"required":["enabled"],"additionalProperties":false,"description":"Rule restrictions"}},"required":["id","restrictions"],"additionalProperties":false,"description":"Egress IP rule"},"description":"Egress IP rules - array of projects the rule applies to","default":[]}},"required":["provisioningMode","region"],"additionalProperties":false,"description":"Egress IP specification"}},"required":["name","spec"],"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Account > EgressIps > General > Create","x-nf-team-scoped":true,"x-nf-cli-command":["create","egress-ip"]},"v1-egress-ips-post-team-scoped":{"operationId":"postEgressIps","summary":"Create egress IP","description":"Creates a new egress IP","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}}],"responses":{"200":{"description":"Details about the newly created egress IP.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"ID of the egress IP","example":"my-egress-ip"},"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The name of the egress IP.","example":"my-egress-ip"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"The description of the egress IP.","example":"This is a new egress IP."},"spec":{"type":"object","properties":{"provisioningMode":{"type":"string","enum":["shared","dedicated"],"description":"Provisioning mode for the egress IP: shared (uses pre-provisioned infrastructure) or dedicated","example":"shared"},"region":{"type":"string","pattern":"^[A-Za-z0-9]+(-[A-Za-z0-9]+)*$","description":"Target region name","example":"europe-west"},"mode":{"type":"string","enum":["include","exclude"],"description":"Mode: include (only these projects/resources use this egress IP) or exclude (all except these use this egress IP)","example":"include","default":"include"},"rules":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Project internal ID"},"restrictions":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether restrictions scoping the rule to specific resources should be applied."},"resources":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["service","job"],"description":"Resource type"},"id":{"type":"string","description":"Resource internal ID"}},"required":["type","id"],"additionalProperties":false},"description":"Resources the rule should be restricted to "}},"required":["enabled"],"additionalProperties":false,"description":"Rule restrictions"}},"required":["id","restrictions"],"additionalProperties":false,"description":"Egress IP rule"},"description":"Egress IP rules - array of projects the rule applies to","default":[]}},"required":["provisioningMode","region"],"additionalProperties":false,"description":"Egress IP specification"},"state":{"type":"object","properties":{"ipAddress":{"type":"string","description":"Assigned public IP address","example":"34.105.225.71"},"status":{"type":"string","enum":["staging","loading","active","error","deleting","deleted"],"description":"Current status of the egress IP","example":"active"},"lastTransitionTime":{"type":"string","format":"date-time","description":"Time of the last status transition"}},"required":["status","lastTransitionTime"],"additionalProperties":false},"createdAt":{"type":"string","format":"date-time","description":"The time the egress IP was created.","example":"2021-01-20T11:19:53.175Z"},"updatedAt":{"type":"string","format":"date-time","description":"The time the egress IP was last updated.","example":"2021-01-20T11:19:53.175Z"}},"required":["id","name","spec","createdAt","updatedAt"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Egress IPs","team"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The name of the egress IP.","example":"my-egress-ip"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"The description of the egress IP.","example":"This is a new egress IP."},"spec":{"type":"object","properties":{"provisioningMode":{"type":"string","enum":["shared","dedicated"],"description":"Provisioning mode for the egress IP: shared (uses pre-provisioned infrastructure) or dedicated","example":"shared"},"region":{"type":"string","pattern":"^[A-Za-z0-9]+(-[A-Za-z0-9]+)*$","description":"Target region name","example":"europe-west"},"mode":{"type":"string","enum":["include","exclude"],"description":"Mode: include (only these projects/resources use this egress IP) or exclude (all except these use this egress IP)","example":"include","default":"include"},"rules":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Project internal ID"},"restrictions":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether restrictions scoping the rule to specific resources should be applied."},"resources":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["service","job"],"description":"Resource type"},"id":{"type":"string","description":"Resource internal ID"}},"required":["type","id"],"additionalProperties":false},"description":"Resources the rule should be restricted to "}},"required":["enabled"],"additionalProperties":false,"description":"Rule restrictions"}},"required":["id","restrictions"],"additionalProperties":false,"description":"Egress IP rule"},"description":"Egress IP rules - array of projects the rule applies to","default":[]}},"required":["provisioningMode","region"],"additionalProperties":false,"description":"Egress IP specification"}},"required":["name","spec"],"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Account > EgressIps > General > Create","x-nf-team-scoped":true,"x-nf-cli-command":["create","egress-ip"]},"v1-egress-ips-put":{"operationId":"putEgressIps","summary":"Put egress IP","description":"Creates or updates an egress IP","parameters":[],"responses":{"200":{"description":"Details about the created or updated egress IP.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"ID of the egress IP","example":"my-egress-ip"},"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The name of the egress IP.","example":"my-egress-ip"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"The description of the egress IP.","example":"This is a new egress IP."},"spec":{"type":"object","properties":{"provisioningMode":{"type":"string","enum":["shared","dedicated"],"description":"Provisioning mode for the egress IP: shared (uses pre-provisioned infrastructure) or dedicated","example":"shared"},"region":{"type":"string","pattern":"^[A-Za-z0-9]+(-[A-Za-z0-9]+)*$","description":"Target region name","example":"europe-west"},"mode":{"type":"string","enum":["include","exclude"],"description":"Mode: include (only these projects/resources use this egress IP) or exclude (all except these use this egress IP)","example":"include","default":"include"},"rules":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Project internal ID"},"restrictions":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether restrictions scoping the rule to specific resources should be applied."},"resources":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["service","job"],"description":"Resource type"},"id":{"type":"string","description":"Resource internal ID"}},"required":["type","id"],"additionalProperties":false},"description":"Resources the rule should be restricted to "}},"required":["enabled"],"additionalProperties":false,"description":"Rule restrictions"}},"required":["id","restrictions"],"additionalProperties":false,"description":"Egress IP rule"},"description":"Egress IP rules - array of projects the rule applies to","default":[]}},"required":["provisioningMode","region"],"additionalProperties":false,"description":"Egress IP specification"},"state":{"type":"object","properties":{"ipAddress":{"type":"string","description":"Assigned public IP address","example":"34.105.225.71"},"status":{"type":"string","enum":["staging","loading","active","error","deleting","deleted"],"description":"Current status of the egress IP","example":"active"},"lastTransitionTime":{"type":"string","format":"date-time","description":"Time of the last status transition"}},"required":["status","lastTransitionTime"],"additionalProperties":false},"createdAt":{"type":"string","format":"date-time","description":"The time the egress IP was created.","example":"2021-01-20T11:19:53.175Z"},"updatedAt":{"type":"string","format":"date-time","description":"The time the egress IP was last updated.","example":"2021-01-20T11:19:53.175Z"}},"required":["id","name","spec","createdAt","updatedAt"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Egress IPs"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The name of the egress IP.","example":"my-egress-ip"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"The description of the egress IP.","example":"This is a new egress IP."},"spec":{"type":"object","properties":{"provisioningMode":{"type":"string","enum":["shared","dedicated"],"description":"Provisioning mode for the egress IP: shared (uses pre-provisioned infrastructure) or dedicated","example":"shared"},"region":{"type":"string","pattern":"^[A-Za-z0-9]+(-[A-Za-z0-9]+)*$","description":"Target region name","example":"europe-west"},"mode":{"type":"string","enum":["include","exclude"],"description":"Mode: include (only these projects/resources use this egress IP) or exclude (all except these use this egress IP)","example":"include","default":"include"},"rules":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Project internal ID"},"restrictions":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether restrictions scoping the rule to specific resources should be applied."},"resources":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["service","job"],"description":"Resource type"},"id":{"type":"string","description":"Resource internal ID"}},"required":["type","id"],"additionalProperties":false},"description":"Resources the rule should be restricted to "}},"required":["enabled"],"additionalProperties":false,"description":"Rule restrictions"}},"required":["id","restrictions"],"additionalProperties":false,"description":"Egress IP rule"},"description":"Egress IP rules - array of projects the rule applies to","default":[]}},"required":["provisioningMode","region"],"additionalProperties":false,"description":"Egress IP specification"}},"required":["name","spec"],"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Account > EgressIps > General > Create","x-nf-team-scoped":true,"x-nf-cli-command":["put","egress-ip"]},"v1-egress-ips-put-team-scoped":{"operationId":"putEgressIps","summary":"Put egress IP","description":"Creates or updates an egress IP","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}}],"responses":{"200":{"description":"Details about the created or updated egress IP.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"ID of the egress IP","example":"my-egress-ip"},"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The name of the egress IP.","example":"my-egress-ip"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"The description of the egress IP.","example":"This is a new egress IP."},"spec":{"type":"object","properties":{"provisioningMode":{"type":"string","enum":["shared","dedicated"],"description":"Provisioning mode for the egress IP: shared (uses pre-provisioned infrastructure) or dedicated","example":"shared"},"region":{"type":"string","pattern":"^[A-Za-z0-9]+(-[A-Za-z0-9]+)*$","description":"Target region name","example":"europe-west"},"mode":{"type":"string","enum":["include","exclude"],"description":"Mode: include (only these projects/resources use this egress IP) or exclude (all except these use this egress IP)","example":"include","default":"include"},"rules":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Project internal ID"},"restrictions":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether restrictions scoping the rule to specific resources should be applied."},"resources":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["service","job"],"description":"Resource type"},"id":{"type":"string","description":"Resource internal ID"}},"required":["type","id"],"additionalProperties":false},"description":"Resources the rule should be restricted to "}},"required":["enabled"],"additionalProperties":false,"description":"Rule restrictions"}},"required":["id","restrictions"],"additionalProperties":false,"description":"Egress IP rule"},"description":"Egress IP rules - array of projects the rule applies to","default":[]}},"required":["provisioningMode","region"],"additionalProperties":false,"description":"Egress IP specification"},"state":{"type":"object","properties":{"ipAddress":{"type":"string","description":"Assigned public IP address","example":"34.105.225.71"},"status":{"type":"string","enum":["staging","loading","active","error","deleting","deleted"],"description":"Current status of the egress IP","example":"active"},"lastTransitionTime":{"type":"string","format":"date-time","description":"Time of the last status transition"}},"required":["status","lastTransitionTime"],"additionalProperties":false},"createdAt":{"type":"string","format":"date-time","description":"The time the egress IP was created.","example":"2021-01-20T11:19:53.175Z"},"updatedAt":{"type":"string","format":"date-time","description":"The time the egress IP was last updated.","example":"2021-01-20T11:19:53.175Z"}},"required":["id","name","spec","createdAt","updatedAt"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Egress IPs","team"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The name of the egress IP.","example":"my-egress-ip"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"The description of the egress IP.","example":"This is a new egress IP."},"spec":{"type":"object","properties":{"provisioningMode":{"type":"string","enum":["shared","dedicated"],"description":"Provisioning mode for the egress IP: shared (uses pre-provisioned infrastructure) or dedicated","example":"shared"},"region":{"type":"string","pattern":"^[A-Za-z0-9]+(-[A-Za-z0-9]+)*$","description":"Target region name","example":"europe-west"},"mode":{"type":"string","enum":["include","exclude"],"description":"Mode: include (only these projects/resources use this egress IP) or exclude (all except these use this egress IP)","example":"include","default":"include"},"rules":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Project internal ID"},"restrictions":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether restrictions scoping the rule to specific resources should be applied."},"resources":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["service","job"],"description":"Resource type"},"id":{"type":"string","description":"Resource internal ID"}},"required":["type","id"],"additionalProperties":false},"description":"Resources the rule should be restricted to "}},"required":["enabled"],"additionalProperties":false,"description":"Rule restrictions"}},"required":["id","restrictions"],"additionalProperties":false,"description":"Egress IP rule"},"description":"Egress IP rules - array of projects the rule applies to","default":[]}},"required":["provisioningMode","region"],"additionalProperties":false,"description":"Egress IP specification"}},"required":["name","spec"],"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Account > EgressIps > General > Create","x-nf-team-scoped":true,"x-nf-cli-command":["put","egress-ip"]},"v1-egress-ips--egressIpId--get":{"operationId":"getEgressIpsEgressipid","summary":"Get egress IP","description":"Gets information about the given egress IP","parameters":[{"name":"egressIpId","type":"string","required":true,"description":"ID of the egress IP","example":"my-egress-ip","in":"path","schema":{"name":"egressIpId","type":"string","required":true,"description":"ID of the egress IP","example":"my-egress-ip","in":"path"}}],"responses":{"200":{"description":"Details about the egress IP.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"ID of the egress IP","example":"my-egress-ip"},"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The name of the egress IP.","example":"my-egress-ip"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"The description of the egress IP.","example":"This is a new egress IP."},"spec":{"type":"object","properties":{"provisioningMode":{"type":"string","enum":["shared","dedicated"],"description":"Provisioning mode for the egress IP: shared (uses pre-provisioned infrastructure) or dedicated","example":"shared"},"region":{"type":"string","pattern":"^[A-Za-z0-9]+(-[A-Za-z0-9]+)*$","description":"Target region name","example":"europe-west"},"mode":{"type":"string","enum":["include","exclude"],"description":"Mode: include (only these projects/resources use this egress IP) or exclude (all except these use this egress IP)","example":"include","default":"include"},"rules":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Project internal ID"},"restrictions":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether restrictions scoping the rule to specific resources should be applied."},"resources":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["service","job"],"description":"Resource type"},"id":{"type":"string","description":"Resource internal ID"}},"required":["type","id"],"additionalProperties":false},"description":"Resources the rule should be restricted to "}},"required":["enabled"],"additionalProperties":false,"description":"Rule restrictions"}},"required":["id","restrictions"],"additionalProperties":false,"description":"Egress IP rule"},"description":"Egress IP rules - array of projects the rule applies to","default":[]}},"required":["provisioningMode","region"],"additionalProperties":false,"description":"Egress IP specification"},"state":{"type":"object","properties":{"ipAddress":{"type":"string","description":"Assigned public IP address","example":"34.105.225.71"},"status":{"type":"string","enum":["staging","loading","active","error","deleting","deleted"],"description":"Current status of the egress IP","example":"active"},"lastTransitionTime":{"type":"string","format":"date-time","description":"Time of the last status transition"}},"required":["status","lastTransitionTime"],"additionalProperties":false},"createdAt":{"type":"string","format":"date-time","description":"The time the egress IP was created.","example":"2021-01-20T11:19:53.175Z"},"updatedAt":{"type":"string","format":"date-time","description":"The time the egress IP was last updated.","example":"2021-01-20T11:19:53.175Z"}},"required":["id","name","spec","createdAt","updatedAt"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Egress IPs"],"security":[],"x-nf-permission-required":"Account > EgressIps > General > Read","x-nf-team-scoped":true,"x-nf-cli-command":["get","egress-ip"]},"v1-egress-ips--egressIpId--get-team-scoped":{"operationId":"getEgressIpsEgressipid","summary":"Get egress IP","description":"Gets information about the given egress IP","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"egressIpId","type":"string","required":true,"description":"ID of the egress IP","example":"my-egress-ip","in":"path","schema":{"name":"egressIpId","type":"string","required":true,"description":"ID of the egress IP","example":"my-egress-ip","in":"path"}}],"responses":{"200":{"description":"Details about the egress IP.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"ID of the egress IP","example":"my-egress-ip"},"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The name of the egress IP.","example":"my-egress-ip"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"The description of the egress IP.","example":"This is a new egress IP."},"spec":{"type":"object","properties":{"provisioningMode":{"type":"string","enum":["shared","dedicated"],"description":"Provisioning mode for the egress IP: shared (uses pre-provisioned infrastructure) or dedicated","example":"shared"},"region":{"type":"string","pattern":"^[A-Za-z0-9]+(-[A-Za-z0-9]+)*$","description":"Target region name","example":"europe-west"},"mode":{"type":"string","enum":["include","exclude"],"description":"Mode: include (only these projects/resources use this egress IP) or exclude (all except these use this egress IP)","example":"include","default":"include"},"rules":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Project internal ID"},"restrictions":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether restrictions scoping the rule to specific resources should be applied."},"resources":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["service","job"],"description":"Resource type"},"id":{"type":"string","description":"Resource internal ID"}},"required":["type","id"],"additionalProperties":false},"description":"Resources the rule should be restricted to "}},"required":["enabled"],"additionalProperties":false,"description":"Rule restrictions"}},"required":["id","restrictions"],"additionalProperties":false,"description":"Egress IP rule"},"description":"Egress IP rules - array of projects the rule applies to","default":[]}},"required":["provisioningMode","region"],"additionalProperties":false,"description":"Egress IP specification"},"state":{"type":"object","properties":{"ipAddress":{"type":"string","description":"Assigned public IP address","example":"34.105.225.71"},"status":{"type":"string","enum":["staging","loading","active","error","deleting","deleted"],"description":"Current status of the egress IP","example":"active"},"lastTransitionTime":{"type":"string","format":"date-time","description":"Time of the last status transition"}},"required":["status","lastTransitionTime"],"additionalProperties":false},"createdAt":{"type":"string","format":"date-time","description":"The time the egress IP was created.","example":"2021-01-20T11:19:53.175Z"},"updatedAt":{"type":"string","format":"date-time","description":"The time the egress IP was last updated.","example":"2021-01-20T11:19:53.175Z"}},"required":["id","name","spec","createdAt","updatedAt"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Egress IPs","team"],"security":[],"x-nf-permission-required":"Account > EgressIps > General > Read","x-nf-team-scoped":true,"x-nf-cli-command":["get","egress-ip"]},"v1-egress-ips--egressIpId--patch":{"operationId":"patchEgressIpsEgressipid","summary":"Patch egress IP","description":"Updates an egress IP","parameters":[{"name":"egressIpId","type":"string","required":true,"description":"ID of the egress IP","example":"my-egress-ip","in":"path","schema":{"name":"egressIpId","type":"string","required":true,"description":"ID of the egress IP","example":"my-egress-ip","in":"path"}}],"responses":{"200":{"description":"Details about the updated egress IP.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"ID of the egress IP","example":"my-egress-ip"},"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The name of the egress IP.","example":"my-egress-ip"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"The description of the egress IP.","example":"This is a new egress IP."},"spec":{"type":"object","properties":{"provisioningMode":{"type":"string","enum":["shared","dedicated"],"description":"Provisioning mode for the egress IP: shared (uses pre-provisioned infrastructure) or dedicated","example":"shared"},"region":{"type":"string","pattern":"^[A-Za-z0-9]+(-[A-Za-z0-9]+)*$","description":"Target region name","example":"europe-west"},"mode":{"type":"string","enum":["include","exclude"],"description":"Mode: include (only these projects/resources use this egress IP) or exclude (all except these use this egress IP)","example":"include","default":"include"},"rules":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Project internal ID"},"restrictions":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether restrictions scoping the rule to specific resources should be applied."},"resources":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["service","job"],"description":"Resource type"},"id":{"type":"string","description":"Resource internal ID"}},"required":["type","id"],"additionalProperties":false},"description":"Resources the rule should be restricted to "}},"required":["enabled"],"additionalProperties":false,"description":"Rule restrictions"}},"required":["id","restrictions"],"additionalProperties":false,"description":"Egress IP rule"},"description":"Egress IP rules - array of projects the rule applies to","default":[]}},"required":["provisioningMode","region"],"additionalProperties":false,"description":"Egress IP specification"},"state":{"type":"object","properties":{"ipAddress":{"type":"string","description":"Assigned public IP address","example":"34.105.225.71"},"status":{"type":"string","enum":["staging","loading","active","error","deleting","deleted"],"description":"Current status of the egress IP","example":"active"},"lastTransitionTime":{"type":"string","format":"date-time","description":"Time of the last status transition"}},"required":["status","lastTransitionTime"],"additionalProperties":false},"createdAt":{"type":"string","format":"date-time","description":"The time the egress IP was created.","example":"2021-01-20T11:19:53.175Z"},"updatedAt":{"type":"string","format":"date-time","description":"The time the egress IP was last updated.","example":"2021-01-20T11:19:53.175Z"}},"required":["id","name","spec","createdAt","updatedAt"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Egress IPs"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The name of the egress IP.","example":"my-egress-ip"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"The description of the egress IP.","example":"This is a new egress IP."},"spec":{"type":"object","properties":{"provisioningMode":{"type":"string","enum":["shared","dedicated"],"description":"Provisioning mode for the egress IP: shared (uses pre-provisioned infrastructure) or dedicated","example":"shared"},"region":{"type":"string","pattern":"^[A-Za-z0-9]+(-[A-Za-z0-9]+)*$","description":"Target region name","example":"europe-west"},"mode":{"type":"string","enum":["include","exclude"],"description":"Mode: include (only these projects/resources use this egress IP) or exclude (all except these use this egress IP)","example":"include","default":"include"},"rules":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Project internal ID"},"restrictions":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether restrictions scoping the rule to specific resources should be applied."},"resources":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["service","job"],"description":"Resource type"},"id":{"type":"string","description":"Resource internal ID"}},"required":["type","id"],"additionalProperties":false},"description":"Resources the rule should be restricted to "}},"required":["enabled"],"additionalProperties":false,"description":"Rule restrictions"}},"required":["id","restrictions"],"additionalProperties":false,"description":"Egress IP rule"},"description":"Egress IP rules - array of projects the rule applies to","default":[]}},"required":["provisioningMode","region"],"additionalProperties":false,"description":"Egress IP specification"}},"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Account > EgressIps > General > Update","x-nf-team-scoped":true,"x-nf-cli-command":["patch","egress-ip"]},"v1-egress-ips--egressIpId--patch-team-scoped":{"operationId":"patchEgressIpsEgressipid","summary":"Patch egress IP","description":"Updates an egress IP","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"egressIpId","type":"string","required":true,"description":"ID of the egress IP","example":"my-egress-ip","in":"path","schema":{"name":"egressIpId","type":"string","required":true,"description":"ID of the egress IP","example":"my-egress-ip","in":"path"}}],"responses":{"200":{"description":"Details about the updated egress IP.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"ID of the egress IP","example":"my-egress-ip"},"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The name of the egress IP.","example":"my-egress-ip"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"The description of the egress IP.","example":"This is a new egress IP."},"spec":{"type":"object","properties":{"provisioningMode":{"type":"string","enum":["shared","dedicated"],"description":"Provisioning mode for the egress IP: shared (uses pre-provisioned infrastructure) or dedicated","example":"shared"},"region":{"type":"string","pattern":"^[A-Za-z0-9]+(-[A-Za-z0-9]+)*$","description":"Target region name","example":"europe-west"},"mode":{"type":"string","enum":["include","exclude"],"description":"Mode: include (only these projects/resources use this egress IP) or exclude (all except these use this egress IP)","example":"include","default":"include"},"rules":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Project internal ID"},"restrictions":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether restrictions scoping the rule to specific resources should be applied."},"resources":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["service","job"],"description":"Resource type"},"id":{"type":"string","description":"Resource internal ID"}},"required":["type","id"],"additionalProperties":false},"description":"Resources the rule should be restricted to "}},"required":["enabled"],"additionalProperties":false,"description":"Rule restrictions"}},"required":["id","restrictions"],"additionalProperties":false,"description":"Egress IP rule"},"description":"Egress IP rules - array of projects the rule applies to","default":[]}},"required":["provisioningMode","region"],"additionalProperties":false,"description":"Egress IP specification"},"state":{"type":"object","properties":{"ipAddress":{"type":"string","description":"Assigned public IP address","example":"34.105.225.71"},"status":{"type":"string","enum":["staging","loading","active","error","deleting","deleted"],"description":"Current status of the egress IP","example":"active"},"lastTransitionTime":{"type":"string","format":"date-time","description":"Time of the last status transition"}},"required":["status","lastTransitionTime"],"additionalProperties":false},"createdAt":{"type":"string","format":"date-time","description":"The time the egress IP was created.","example":"2021-01-20T11:19:53.175Z"},"updatedAt":{"type":"string","format":"date-time","description":"The time the egress IP was last updated.","example":"2021-01-20T11:19:53.175Z"}},"required":["id","name","spec","createdAt","updatedAt"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Egress IPs","team"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The name of the egress IP.","example":"my-egress-ip"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"The description of the egress IP.","example":"This is a new egress IP."},"spec":{"type":"object","properties":{"provisioningMode":{"type":"string","enum":["shared","dedicated"],"description":"Provisioning mode for the egress IP: shared (uses pre-provisioned infrastructure) or dedicated","example":"shared"},"region":{"type":"string","pattern":"^[A-Za-z0-9]+(-[A-Za-z0-9]+)*$","description":"Target region name","example":"europe-west"},"mode":{"type":"string","enum":["include","exclude"],"description":"Mode: include (only these projects/resources use this egress IP) or exclude (all except these use this egress IP)","example":"include","default":"include"},"rules":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Project internal ID"},"restrictions":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether restrictions scoping the rule to specific resources should be applied."},"resources":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["service","job"],"description":"Resource type"},"id":{"type":"string","description":"Resource internal ID"}},"required":["type","id"],"additionalProperties":false},"description":"Resources the rule should be restricted to "}},"required":["enabled"],"additionalProperties":false,"description":"Rule restrictions"}},"required":["id","restrictions"],"additionalProperties":false,"description":"Egress IP rule"},"description":"Egress IP rules - array of projects the rule applies to","default":[]}},"required":["provisioningMode","region"],"additionalProperties":false,"description":"Egress IP specification"}},"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Account > EgressIps > General > Update","x-nf-team-scoped":true,"x-nf-cli-command":["patch","egress-ip"]},"v1-egress-ips--egressIpId--delete":{"operationId":"deleteEgressIpsEgressipid","summary":"Delete egress IP","description":"Deletes the given egress IP.","parameters":[{"name":"egressIpId","type":"string","required":true,"description":"ID of the egress IP","example":"my-egress-ip","in":"path","schema":{"name":"egressIpId","type":"string","required":true,"description":"ID of the egress IP","example":"my-egress-ip","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Egress IPs"],"security":[],"x-nf-permission-required":"Account > EgressIps > General > Delete","x-nf-team-scoped":true,"x-nf-cli-command":["delete","egress-ip"]},"v1-egress-ips--egressIpId--delete-team-scoped":{"operationId":"deleteEgressIpsEgressipid","summary":"Delete egress IP","description":"Deletes the given egress IP.","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"egressIpId","type":"string","required":true,"description":"ID of the egress IP","example":"my-egress-ip","in":"path","schema":{"name":"egressIpId","type":"string","required":true,"description":"ID of the egress IP","example":"my-egress-ip","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Egress IPs","team"],"security":[],"x-nf-permission-required":"Account > EgressIps > General > Delete","x-nf-team-scoped":true,"x-nf-cli-command":["delete","egress-ip"]},"v1-gradual-rollout-strategies-post":{"operationId":"postGradualRolloutStrategies","summary":"Create gradual rollout strategy","description":"Creates a new gradual rollout strategy.","parameters":[],"responses":{"200":{"description":"Details about the created gradual rollout strategy.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","description":"Identifier for the gradual rollout strategy","example":"example-identifier"},"name":{"type":"string","description":"Name of the gradual rollout strategy","example":"example-name"},"type":{"type":"string","enum":["canary"],"description":"Type of the gradual rollout strategy","example":"canary"},"options":{"type":"object","properties":{"triggers":{"type":"object","properties":{"releaseFromTemplate":{"type":"boolean","nullable":true},"releaseFromReleaseFlow":{"type":"boolean","nullable":true},"releaseFromCD":{"type":"boolean","nullable":true},"releaseFromUI":{"type":"boolean","nullable":true},"releaseFromApi":{"type":"boolean","nullable":true}},"additionalProperties":false},"blockDeploymentOnActiveRollout":{"type":"boolean","nullable":true}},"additionalProperties":false},"details":{"type":"object","properties":{"canaryStrategy":{"type":"string","enum":["percentage","header"]},"config":{"oneOf":[{"type":"object","properties":{"canaryPercentage":{"type":"integer","minimum":0,"maximum":100},"stablePercentage":{"type":"integer","minimum":0,"maximum":100}},"required":["canaryPercentage","stablePercentage"],"additionalProperties":false,"x-required":true},{"type":"object","properties":{"headerName":{"type":"string","minLength":1},"headerValue":{"type":"string","minLength":1}},"required":["headerName","headerValue"],"additionalProperties":false,"x-required":true}]}},"required":["canaryStrategy"],"additionalProperties":false}},"required":["id","name","type","details"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Rollout Strategies"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Display name for the gradual rollout strategy","example":"my-canary-rollout"},"type":{"type":"string","enum":["canary"],"description":"Type of the gradual rollout strategy","example":"canary"},"options":{"type":"object","properties":{"triggers":{"type":"object","properties":{"releaseFromTemplate":{"type":"boolean","nullable":true,"description":"Automatically trigger the rollout strategy when a release is initiated from a template","example":true},"releaseFromReleaseFlow":{"type":"boolean","nullable":true,"description":"Automatically trigger the rollout strategy when a release is initiated from a release flow","example":true},"releaseFromCD":{"type":"boolean","nullable":true,"description":"Automatically trigger the rollout strategy when a release is initiated from a CD pipeline","example":true},"releaseFromUI":{"type":"boolean","nullable":true,"description":"Automatically trigger the rollout strategy when a release is initiated from the UI","example":true},"releaseFromApi":{"type":"boolean","nullable":true,"description":"Automatically trigger the rollout strategy when a release is initiated via the API","example":true}},"additionalProperties":false,"description":"Conditions under which a new release will automatically initiate as a gradual rollout"},"blockDeploymentOnActiveRollout":{"type":"boolean","nullable":true,"description":"When enabled, new deployments are blocked while a rollout is in progress","example":true}},"additionalProperties":false},"details":{"oneOf":[{"type":"object","properties":{"canaryStrategy":{"type":"string","enum":["percentage","header"],"description":"Strategy used to split traffic between stable and canary deployments","example":"percentage"},"config":{"oneOf":[{"type":"object","properties":{"canaryPercentage":{"type":"integer","minimum":0,"maximum":100,"description":"Percentage of traffic to route to the canary deployment","example":20},"stablePercentage":{"type":"integer","minimum":0,"maximum":100,"description":"Percentage of traffic to route to the stable deployment","example":80}},"required":["canaryPercentage","stablePercentage"],"additionalProperties":false,"description":"Configuration for the selected canary strategy","x-required":true},{"type":"object","properties":{"canaryHeader":{"type":"object","properties":{"headerName":{"type":"string","minLength":1,"description":"HTTP header name used to identify requests that should be routed to the target deployment","example":"x-canary"},"headerValue":{"type":"string","minLength":1,"description":"HTTP header value that routes matching requests to the target deployment","example":"true"}},"required":["headerName","headerValue"],"additionalProperties":false,"description":"Header configuration that will route traffic to the canary deployment"},"stableHeader":{"type":"object","properties":{"headerName":{"type":"string","minLength":1,"description":"HTTP header name used to identify requests that should be routed to the target deployment","example":"x-canary"},"headerValue":{"type":"string","minLength":1,"description":"HTTP header value that routes matching requests to the target deployment","example":"true"}},"required":["headerName","headerValue"],"additionalProperties":false,"description":"Header configuration that will route traffic to the stable deployment"}},"required":["canaryHeader","stableHeader"],"additionalProperties":false,"description":"Configuration for the selected canary strategy","x-required":true}],"description":"Configuration for the selected canary strategy"}},"required":["canaryStrategy","config"],"additionalProperties":false,"description":"Strategy-specific configuration details","x-required":true}],"description":"Strategy-specific configuration details"}},"required":["type","details"],"additionalProperties":false,"description":"Gradual rollout strategy specification"}}},"required":true},"x-nf-permission-required":"Account > GradualRollouts > General > Create","x-nf-team-scoped":true,"x-nf-cli-command":["create","gradual-rollout-strategy"]},"v1-gradual-rollout-strategies-post-team-scoped":{"operationId":"postGradualRolloutStrategies","summary":"Create gradual rollout strategy","description":"Creates a new gradual rollout strategy.","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}}],"responses":{"200":{"description":"Details about the created gradual rollout strategy.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","description":"Identifier for the gradual rollout strategy","example":"example-identifier"},"name":{"type":"string","description":"Name of the gradual rollout strategy","example":"example-name"},"type":{"type":"string","enum":["canary"],"description":"Type of the gradual rollout strategy","example":"canary"},"options":{"type":"object","properties":{"triggers":{"type":"object","properties":{"releaseFromTemplate":{"type":"boolean","nullable":true},"releaseFromReleaseFlow":{"type":"boolean","nullable":true},"releaseFromCD":{"type":"boolean","nullable":true},"releaseFromUI":{"type":"boolean","nullable":true},"releaseFromApi":{"type":"boolean","nullable":true}},"additionalProperties":false},"blockDeploymentOnActiveRollout":{"type":"boolean","nullable":true}},"additionalProperties":false},"details":{"type":"object","properties":{"canaryStrategy":{"type":"string","enum":["percentage","header"]},"config":{"oneOf":[{"type":"object","properties":{"canaryPercentage":{"type":"integer","minimum":0,"maximum":100},"stablePercentage":{"type":"integer","minimum":0,"maximum":100}},"required":["canaryPercentage","stablePercentage"],"additionalProperties":false,"x-required":true},{"type":"object","properties":{"headerName":{"type":"string","minLength":1},"headerValue":{"type":"string","minLength":1}},"required":["headerName","headerValue"],"additionalProperties":false,"x-required":true}]}},"required":["canaryStrategy"],"additionalProperties":false}},"required":["id","name","type","details"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Rollout Strategies","team"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Display name for the gradual rollout strategy","example":"my-canary-rollout"},"type":{"type":"string","enum":["canary"],"description":"Type of the gradual rollout strategy","example":"canary"},"options":{"type":"object","properties":{"triggers":{"type":"object","properties":{"releaseFromTemplate":{"type":"boolean","nullable":true,"description":"Automatically trigger the rollout strategy when a release is initiated from a template","example":true},"releaseFromReleaseFlow":{"type":"boolean","nullable":true,"description":"Automatically trigger the rollout strategy when a release is initiated from a release flow","example":true},"releaseFromCD":{"type":"boolean","nullable":true,"description":"Automatically trigger the rollout strategy when a release is initiated from a CD pipeline","example":true},"releaseFromUI":{"type":"boolean","nullable":true,"description":"Automatically trigger the rollout strategy when a release is initiated from the UI","example":true},"releaseFromApi":{"type":"boolean","nullable":true,"description":"Automatically trigger the rollout strategy when a release is initiated via the API","example":true}},"additionalProperties":false,"description":"Conditions under which a new release will automatically initiate as a gradual rollout"},"blockDeploymentOnActiveRollout":{"type":"boolean","nullable":true,"description":"When enabled, new deployments are blocked while a rollout is in progress","example":true}},"additionalProperties":false},"details":{"oneOf":[{"type":"object","properties":{"canaryStrategy":{"type":"string","enum":["percentage","header"],"description":"Strategy used to split traffic between stable and canary deployments","example":"percentage"},"config":{"oneOf":[{"type":"object","properties":{"canaryPercentage":{"type":"integer","minimum":0,"maximum":100,"description":"Percentage of traffic to route to the canary deployment","example":20},"stablePercentage":{"type":"integer","minimum":0,"maximum":100,"description":"Percentage of traffic to route to the stable deployment","example":80}},"required":["canaryPercentage","stablePercentage"],"additionalProperties":false,"description":"Configuration for the selected canary strategy","x-required":true},{"type":"object","properties":{"canaryHeader":{"type":"object","properties":{"headerName":{"type":"string","minLength":1,"description":"HTTP header name used to identify requests that should be routed to the target deployment","example":"x-canary"},"headerValue":{"type":"string","minLength":1,"description":"HTTP header value that routes matching requests to the target deployment","example":"true"}},"required":["headerName","headerValue"],"additionalProperties":false,"description":"Header configuration that will route traffic to the canary deployment"},"stableHeader":{"type":"object","properties":{"headerName":{"type":"string","minLength":1,"description":"HTTP header name used to identify requests that should be routed to the target deployment","example":"x-canary"},"headerValue":{"type":"string","minLength":1,"description":"HTTP header value that routes matching requests to the target deployment","example":"true"}},"required":["headerName","headerValue"],"additionalProperties":false,"description":"Header configuration that will route traffic to the stable deployment"}},"required":["canaryHeader","stableHeader"],"additionalProperties":false,"description":"Configuration for the selected canary strategy","x-required":true}],"description":"Configuration for the selected canary strategy"}},"required":["canaryStrategy","config"],"additionalProperties":false,"description":"Strategy-specific configuration details","x-required":true}],"description":"Strategy-specific configuration details"}},"required":["type","details"],"additionalProperties":false,"description":"Gradual rollout strategy specification"}}},"required":true},"x-nf-permission-required":"Account > GradualRollouts > General > Create","x-nf-team-scoped":true,"x-nf-cli-command":["create","gradual-rollout-strategy"]},"v1-gradual-rollout-strategies-put":{"operationId":"putGradualRolloutStrategies","summary":"Create or update gradual rollout strategy","description":"Creates or updates a gradual rollout strategy.","parameters":[],"responses":{"200":{"description":"Details about the created or updated project.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","description":"Identifier for the gradual rollout strategy","example":"example-identifier"},"name":{"type":"string","description":"Name of the gradual rollout strategy","example":"example-name"},"type":{"type":"string","enum":["canary"],"description":"Type of the gradual rollout strategy","example":"canary"},"options":{"type":"object","properties":{"triggers":{"type":"object","properties":{"releaseFromTemplate":{"type":"boolean","nullable":true},"releaseFromReleaseFlow":{"type":"boolean","nullable":true},"releaseFromCD":{"type":"boolean","nullable":true},"releaseFromUI":{"type":"boolean","nullable":true},"releaseFromApi":{"type":"boolean","nullable":true}},"additionalProperties":false},"blockDeploymentOnActiveRollout":{"type":"boolean","nullable":true}},"additionalProperties":false},"details":{"type":"object","properties":{"canaryStrategy":{"type":"string","enum":["percentage","header"]},"config":{"oneOf":[{"type":"object","properties":{"canaryPercentage":{"type":"integer","minimum":0,"maximum":100},"stablePercentage":{"type":"integer","minimum":0,"maximum":100}},"required":["canaryPercentage","stablePercentage"],"additionalProperties":false,"x-required":true},{"type":"object","properties":{"headerName":{"type":"string","minLength":1},"headerValue":{"type":"string","minLength":1}},"required":["headerName","headerValue"],"additionalProperties":false,"x-required":true}]}},"required":["canaryStrategy"],"additionalProperties":false}},"required":["id","name","type","details"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Rollout Strategies"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Display name for the gradual rollout strategy","example":"my-canary-rollout"},"type":{"type":"string","enum":["canary"],"description":"Type of the gradual rollout strategy","example":"canary"},"options":{"type":"object","properties":{"triggers":{"type":"object","properties":{"releaseFromTemplate":{"type":"boolean","nullable":true,"description":"Automatically trigger the rollout strategy when a release is initiated from a template","example":true},"releaseFromReleaseFlow":{"type":"boolean","nullable":true,"description":"Automatically trigger the rollout strategy when a release is initiated from a release flow","example":true},"releaseFromCD":{"type":"boolean","nullable":true,"description":"Automatically trigger the rollout strategy when a release is initiated from a CD pipeline","example":true},"releaseFromUI":{"type":"boolean","nullable":true,"description":"Automatically trigger the rollout strategy when a release is initiated from the UI","example":true},"releaseFromApi":{"type":"boolean","nullable":true,"description":"Automatically trigger the rollout strategy when a release is initiated via the API","example":true}},"additionalProperties":false,"description":"Conditions under which a new release will automatically initiate as a gradual rollout"},"blockDeploymentOnActiveRollout":{"type":"boolean","nullable":true,"description":"When enabled, new deployments are blocked while a rollout is in progress","example":true}},"additionalProperties":false},"details":{"oneOf":[{"type":"object","properties":{"canaryStrategy":{"type":"string","enum":["percentage","header"],"description":"Strategy used to split traffic between stable and canary deployments","example":"percentage"},"config":{"oneOf":[{"type":"object","properties":{"canaryPercentage":{"type":"integer","minimum":0,"maximum":100,"description":"Percentage of traffic to route to the canary deployment","example":20},"stablePercentage":{"type":"integer","minimum":0,"maximum":100,"description":"Percentage of traffic to route to the stable deployment","example":80}},"required":["canaryPercentage","stablePercentage"],"additionalProperties":false,"description":"Configuration for the selected canary strategy","x-required":true},{"type":"object","properties":{"canaryHeader":{"type":"object","properties":{"headerName":{"type":"string","minLength":1,"description":"HTTP header name used to identify requests that should be routed to the target deployment","example":"x-canary"},"headerValue":{"type":"string","minLength":1,"description":"HTTP header value that routes matching requests to the target deployment","example":"true"}},"required":["headerName","headerValue"],"additionalProperties":false,"description":"Header configuration that will route traffic to the canary deployment"},"stableHeader":{"type":"object","properties":{"headerName":{"type":"string","minLength":1,"description":"HTTP header name used to identify requests that should be routed to the target deployment","example":"x-canary"},"headerValue":{"type":"string","minLength":1,"description":"HTTP header value that routes matching requests to the target deployment","example":"true"}},"required":["headerName","headerValue"],"additionalProperties":false,"description":"Header configuration that will route traffic to the stable deployment"}},"required":["canaryHeader","stableHeader"],"additionalProperties":false,"description":"Configuration for the selected canary strategy","x-required":true}],"description":"Configuration for the selected canary strategy"}},"required":["canaryStrategy","config"],"additionalProperties":false,"description":"Strategy-specific configuration details","x-required":true}],"description":"Strategy-specific configuration details"}},"required":["type","details"],"additionalProperties":false,"description":"Gradual rollout strategy specification"}}},"required":true},"x-nf-permission-required":"Account > GradualRollouts > General > Create","x-nf-team-scoped":true,"x-nf-cli-command":["put","gradual-rollout-strategy"]},"v1-gradual-rollout-strategies-put-team-scoped":{"operationId":"putGradualRolloutStrategies","summary":"Create or update gradual rollout strategy","description":"Creates or updates a gradual rollout strategy.","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}}],"responses":{"200":{"description":"Details about the created or updated project.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","description":"Identifier for the gradual rollout strategy","example":"example-identifier"},"name":{"type":"string","description":"Name of the gradual rollout strategy","example":"example-name"},"type":{"type":"string","enum":["canary"],"description":"Type of the gradual rollout strategy","example":"canary"},"options":{"type":"object","properties":{"triggers":{"type":"object","properties":{"releaseFromTemplate":{"type":"boolean","nullable":true},"releaseFromReleaseFlow":{"type":"boolean","nullable":true},"releaseFromCD":{"type":"boolean","nullable":true},"releaseFromUI":{"type":"boolean","nullable":true},"releaseFromApi":{"type":"boolean","nullable":true}},"additionalProperties":false},"blockDeploymentOnActiveRollout":{"type":"boolean","nullable":true}},"additionalProperties":false},"details":{"type":"object","properties":{"canaryStrategy":{"type":"string","enum":["percentage","header"]},"config":{"oneOf":[{"type":"object","properties":{"canaryPercentage":{"type":"integer","minimum":0,"maximum":100},"stablePercentage":{"type":"integer","minimum":0,"maximum":100}},"required":["canaryPercentage","stablePercentage"],"additionalProperties":false,"x-required":true},{"type":"object","properties":{"headerName":{"type":"string","minLength":1},"headerValue":{"type":"string","minLength":1}},"required":["headerName","headerValue"],"additionalProperties":false,"x-required":true}]}},"required":["canaryStrategy"],"additionalProperties":false}},"required":["id","name","type","details"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Rollout Strategies","team"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Display name for the gradual rollout strategy","example":"my-canary-rollout"},"type":{"type":"string","enum":["canary"],"description":"Type of the gradual rollout strategy","example":"canary"},"options":{"type":"object","properties":{"triggers":{"type":"object","properties":{"releaseFromTemplate":{"type":"boolean","nullable":true,"description":"Automatically trigger the rollout strategy when a release is initiated from a template","example":true},"releaseFromReleaseFlow":{"type":"boolean","nullable":true,"description":"Automatically trigger the rollout strategy when a release is initiated from a release flow","example":true},"releaseFromCD":{"type":"boolean","nullable":true,"description":"Automatically trigger the rollout strategy when a release is initiated from a CD pipeline","example":true},"releaseFromUI":{"type":"boolean","nullable":true,"description":"Automatically trigger the rollout strategy when a release is initiated from the UI","example":true},"releaseFromApi":{"type":"boolean","nullable":true,"description":"Automatically trigger the rollout strategy when a release is initiated via the API","example":true}},"additionalProperties":false,"description":"Conditions under which a new release will automatically initiate as a gradual rollout"},"blockDeploymentOnActiveRollout":{"type":"boolean","nullable":true,"description":"When enabled, new deployments are blocked while a rollout is in progress","example":true}},"additionalProperties":false},"details":{"oneOf":[{"type":"object","properties":{"canaryStrategy":{"type":"string","enum":["percentage","header"],"description":"Strategy used to split traffic between stable and canary deployments","example":"percentage"},"config":{"oneOf":[{"type":"object","properties":{"canaryPercentage":{"type":"integer","minimum":0,"maximum":100,"description":"Percentage of traffic to route to the canary deployment","example":20},"stablePercentage":{"type":"integer","minimum":0,"maximum":100,"description":"Percentage of traffic to route to the stable deployment","example":80}},"required":["canaryPercentage","stablePercentage"],"additionalProperties":false,"description":"Configuration for the selected canary strategy","x-required":true},{"type":"object","properties":{"canaryHeader":{"type":"object","properties":{"headerName":{"type":"string","minLength":1,"description":"HTTP header name used to identify requests that should be routed to the target deployment","example":"x-canary"},"headerValue":{"type":"string","minLength":1,"description":"HTTP header value that routes matching requests to the target deployment","example":"true"}},"required":["headerName","headerValue"],"additionalProperties":false,"description":"Header configuration that will route traffic to the canary deployment"},"stableHeader":{"type":"object","properties":{"headerName":{"type":"string","minLength":1,"description":"HTTP header name used to identify requests that should be routed to the target deployment","example":"x-canary"},"headerValue":{"type":"string","minLength":1,"description":"HTTP header value that routes matching requests to the target deployment","example":"true"}},"required":["headerName","headerValue"],"additionalProperties":false,"description":"Header configuration that will route traffic to the stable deployment"}},"required":["canaryHeader","stableHeader"],"additionalProperties":false,"description":"Configuration for the selected canary strategy","x-required":true}],"description":"Configuration for the selected canary strategy"}},"required":["canaryStrategy","config"],"additionalProperties":false,"description":"Strategy-specific configuration details","x-required":true}],"description":"Strategy-specific configuration details"}},"required":["type","details"],"additionalProperties":false,"description":"Gradual rollout strategy specification"}}},"required":true},"x-nf-permission-required":"Account > GradualRollouts > General > Create","x-nf-team-scoped":true,"x-nf-cli-command":["put","gradual-rollout-strategy"]},"v1-gradual-rollout-strategies--gradualRolloutStrategyId--patch":{"operationId":"patchGradualRolloutStrategiesGradualrolloutstrategyid","summary":"Update gradual rollout strategy","description":"Updates a gradual rollout strategy.","parameters":[{"name":"gradualRolloutStrategyId","type":"string","required":true,"description":"ID of the gradual rollout strategy","example":"example-gradual-rollout-strategy","in":"path","schema":{"name":"gradualRolloutStrategyId","type":"string","required":true,"description":"ID of the gradual rollout strategy","example":"example-gradual-rollout-strategy","in":"path"}}],"responses":{"200":{"description":"Details about the updated project.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","description":"Identifier for the gradual rollout strategy","example":"example-identifier"},"name":{"type":"string","description":"Name of the gradual rollout strategy","example":"example-name"},"type":{"type":"string","enum":["canary"],"description":"Type of the gradual rollout strategy","example":"canary"},"options":{"type":"object","properties":{"triggers":{"type":"object","properties":{"releaseFromTemplate":{"type":"boolean","nullable":true},"releaseFromReleaseFlow":{"type":"boolean","nullable":true},"releaseFromCD":{"type":"boolean","nullable":true},"releaseFromUI":{"type":"boolean","nullable":true},"releaseFromApi":{"type":"boolean","nullable":true}},"additionalProperties":false},"blockDeploymentOnActiveRollout":{"type":"boolean","nullable":true}},"additionalProperties":false},"details":{"type":"object","properties":{"canaryStrategy":{"type":"string","enum":["percentage","header"]},"config":{"oneOf":[{"type":"object","properties":{"canaryPercentage":{"type":"integer","minimum":0,"maximum":100},"stablePercentage":{"type":"integer","minimum":0,"maximum":100}},"required":["canaryPercentage","stablePercentage"],"additionalProperties":false,"x-required":true},{"type":"object","properties":{"headerName":{"type":"string","minLength":1},"headerValue":{"type":"string","minLength":1}},"required":["headerName","headerValue"],"additionalProperties":false,"x-required":true}]}},"required":["canaryStrategy"],"additionalProperties":false}},"required":["id","name","type","details"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Rollout Strategies"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Display name for the gradual rollout strategy","example":"my-canary-rollout"},"type":{"type":"string","enum":["canary"],"description":"Type of the gradual rollout strategy","example":"canary"},"options":{"type":"object","properties":{"triggers":{"type":"object","properties":{"releaseFromTemplate":{"type":"boolean","nullable":true,"description":"Automatically trigger the rollout strategy when a release is initiated from a template","example":true},"releaseFromReleaseFlow":{"type":"boolean","nullable":true,"description":"Automatically trigger the rollout strategy when a release is initiated from a release flow","example":true},"releaseFromCD":{"type":"boolean","nullable":true,"description":"Automatically trigger the rollout strategy when a release is initiated from a CD pipeline","example":true},"releaseFromUI":{"type":"boolean","nullable":true,"description":"Automatically trigger the rollout strategy when a release is initiated from the UI","example":true},"releaseFromApi":{"type":"boolean","nullable":true,"description":"Automatically trigger the rollout strategy when a release is initiated via the API","example":true}},"additionalProperties":false,"description":"Conditions under which a new release will automatically initiate as a gradual rollout"},"blockDeploymentOnActiveRollout":{"type":"boolean","nullable":true,"description":"When enabled, new deployments are blocked while a rollout is in progress","example":true}},"additionalProperties":false},"details":{"oneOf":[{"type":"object","properties":{"canaryStrategy":{"type":"string","enum":["percentage","header"],"description":"Strategy used to split traffic between stable and canary deployments","example":"percentage"},"config":{"oneOf":[{"type":"object","properties":{"canaryPercentage":{"type":"integer","minimum":0,"maximum":100,"description":"Percentage of traffic to route to the canary deployment","example":20},"stablePercentage":{"type":"integer","minimum":0,"maximum":100,"description":"Percentage of traffic to route to the stable deployment","example":80}},"required":["canaryPercentage","stablePercentage"],"additionalProperties":false,"description":"Configuration for the selected canary strategy","x-required":true},{"type":"object","properties":{"canaryHeader":{"type":"object","properties":{"headerName":{"type":"string","minLength":1,"description":"HTTP header name used to identify requests that should be routed to the target deployment","example":"x-canary"},"headerValue":{"type":"string","minLength":1,"description":"HTTP header value that routes matching requests to the target deployment","example":"true"}},"required":["headerName","headerValue"],"additionalProperties":false,"description":"Header configuration that will route traffic to the canary deployment"},"stableHeader":{"type":"object","properties":{"headerName":{"type":"string","minLength":1,"description":"HTTP header name used to identify requests that should be routed to the target deployment","example":"x-canary"},"headerValue":{"type":"string","minLength":1,"description":"HTTP header value that routes matching requests to the target deployment","example":"true"}},"required":["headerName","headerValue"],"additionalProperties":false,"description":"Header configuration that will route traffic to the stable deployment"}},"required":["canaryHeader","stableHeader"],"additionalProperties":false,"description":"Configuration for the selected canary strategy","x-required":true}],"description":"Configuration for the selected canary strategy"}},"required":["canaryStrategy","config"],"additionalProperties":false,"description":"Strategy-specific configuration details","x-required":true}],"description":"Strategy-specific configuration details"}},"required":["type","details"],"additionalProperties":false,"description":"Gradual rollout strategy specification"}}},"required":true},"x-nf-permission-required":"Account > GradualRollouts > General > Update","x-nf-team-scoped":true,"x-nf-cli-command":["patch","gradual-rollout-strategy"]},"v1-gradual-rollout-strategies--gradualRolloutStrategyId--patch-team-scoped":{"operationId":"patchGradualRolloutStrategiesGradualrolloutstrategyid","summary":"Update gradual rollout strategy","description":"Updates a gradual rollout strategy.","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"gradualRolloutStrategyId","type":"string","required":true,"description":"ID of the gradual rollout strategy","example":"example-gradual-rollout-strategy","in":"path","schema":{"name":"gradualRolloutStrategyId","type":"string","required":true,"description":"ID of the gradual rollout strategy","example":"example-gradual-rollout-strategy","in":"path"}}],"responses":{"200":{"description":"Details about the updated project.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","description":"Identifier for the gradual rollout strategy","example":"example-identifier"},"name":{"type":"string","description":"Name of the gradual rollout strategy","example":"example-name"},"type":{"type":"string","enum":["canary"],"description":"Type of the gradual rollout strategy","example":"canary"},"options":{"type":"object","properties":{"triggers":{"type":"object","properties":{"releaseFromTemplate":{"type":"boolean","nullable":true},"releaseFromReleaseFlow":{"type":"boolean","nullable":true},"releaseFromCD":{"type":"boolean","nullable":true},"releaseFromUI":{"type":"boolean","nullable":true},"releaseFromApi":{"type":"boolean","nullable":true}},"additionalProperties":false},"blockDeploymentOnActiveRollout":{"type":"boolean","nullable":true}},"additionalProperties":false},"details":{"type":"object","properties":{"canaryStrategy":{"type":"string","enum":["percentage","header"]},"config":{"oneOf":[{"type":"object","properties":{"canaryPercentage":{"type":"integer","minimum":0,"maximum":100},"stablePercentage":{"type":"integer","minimum":0,"maximum":100}},"required":["canaryPercentage","stablePercentage"],"additionalProperties":false,"x-required":true},{"type":"object","properties":{"headerName":{"type":"string","minLength":1},"headerValue":{"type":"string","minLength":1}},"required":["headerName","headerValue"],"additionalProperties":false,"x-required":true}]}},"required":["canaryStrategy"],"additionalProperties":false}},"required":["id","name","type","details"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Rollout Strategies","team"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Display name for the gradual rollout strategy","example":"my-canary-rollout"},"type":{"type":"string","enum":["canary"],"description":"Type of the gradual rollout strategy","example":"canary"},"options":{"type":"object","properties":{"triggers":{"type":"object","properties":{"releaseFromTemplate":{"type":"boolean","nullable":true,"description":"Automatically trigger the rollout strategy when a release is initiated from a template","example":true},"releaseFromReleaseFlow":{"type":"boolean","nullable":true,"description":"Automatically trigger the rollout strategy when a release is initiated from a release flow","example":true},"releaseFromCD":{"type":"boolean","nullable":true,"description":"Automatically trigger the rollout strategy when a release is initiated from a CD pipeline","example":true},"releaseFromUI":{"type":"boolean","nullable":true,"description":"Automatically trigger the rollout strategy when a release is initiated from the UI","example":true},"releaseFromApi":{"type":"boolean","nullable":true,"description":"Automatically trigger the rollout strategy when a release is initiated via the API","example":true}},"additionalProperties":false,"description":"Conditions under which a new release will automatically initiate as a gradual rollout"},"blockDeploymentOnActiveRollout":{"type":"boolean","nullable":true,"description":"When enabled, new deployments are blocked while a rollout is in progress","example":true}},"additionalProperties":false},"details":{"oneOf":[{"type":"object","properties":{"canaryStrategy":{"type":"string","enum":["percentage","header"],"description":"Strategy used to split traffic between stable and canary deployments","example":"percentage"},"config":{"oneOf":[{"type":"object","properties":{"canaryPercentage":{"type":"integer","minimum":0,"maximum":100,"description":"Percentage of traffic to route to the canary deployment","example":20},"stablePercentage":{"type":"integer","minimum":0,"maximum":100,"description":"Percentage of traffic to route to the stable deployment","example":80}},"required":["canaryPercentage","stablePercentage"],"additionalProperties":false,"description":"Configuration for the selected canary strategy","x-required":true},{"type":"object","properties":{"canaryHeader":{"type":"object","properties":{"headerName":{"type":"string","minLength":1,"description":"HTTP header name used to identify requests that should be routed to the target deployment","example":"x-canary"},"headerValue":{"type":"string","minLength":1,"description":"HTTP header value that routes matching requests to the target deployment","example":"true"}},"required":["headerName","headerValue"],"additionalProperties":false,"description":"Header configuration that will route traffic to the canary deployment"},"stableHeader":{"type":"object","properties":{"headerName":{"type":"string","minLength":1,"description":"HTTP header name used to identify requests that should be routed to the target deployment","example":"x-canary"},"headerValue":{"type":"string","minLength":1,"description":"HTTP header value that routes matching requests to the target deployment","example":"true"}},"required":["headerName","headerValue"],"additionalProperties":false,"description":"Header configuration that will route traffic to the stable deployment"}},"required":["canaryHeader","stableHeader"],"additionalProperties":false,"description":"Configuration for the selected canary strategy","x-required":true}],"description":"Configuration for the selected canary strategy"}},"required":["canaryStrategy","config"],"additionalProperties":false,"description":"Strategy-specific configuration details","x-required":true}],"description":"Strategy-specific configuration details"}},"required":["type","details"],"additionalProperties":false,"description":"Gradual rollout strategy specification"}}},"required":true},"x-nf-permission-required":"Account > GradualRollouts > General > Update","x-nf-team-scoped":true,"x-nf-cli-command":["patch","gradual-rollout-strategy"]},"v1-gradual-rollout-strategies--gradualRolloutStrategyId--delete":{"operationId":"deleteGradualRolloutStrategiesGradualrolloutstrategyid","summary":"Delete gradual rollout strategy","description":"Deletes a gradual rollout strategy.","parameters":[{"name":"gradualRolloutStrategyId","type":"string","required":true,"description":"ID of the gradual rollout strategy","example":"example-gradual-rollout-strategy","in":"path","schema":{"name":"gradualRolloutStrategyId","type":"string","required":true,"description":"ID of the gradual rollout strategy","example":"example-gradual-rollout-strategy","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Rollout Strategies"],"security":[],"x-nf-permission-required":"Account > GradualRollouts > General > Delete","x-nf-team-scoped":true,"x-nf-cli-command":["delete","gradual-rollout-strategy"]},"v1-gradual-rollout-strategies--gradualRolloutStrategyId--delete-team-scoped":{"operationId":"deleteGradualRolloutStrategiesGradualrolloutstrategyid","summary":"Delete gradual rollout strategy","description":"Deletes a gradual rollout strategy.","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"gradualRolloutStrategyId","type":"string","required":true,"description":"ID of the gradual rollout strategy","example":"example-gradual-rollout-strategy","in":"path","schema":{"name":"gradualRolloutStrategyId","type":"string","required":true,"description":"ID of the gradual rollout strategy","example":"example-gradual-rollout-strategy","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Rollout Strategies","team"],"security":[],"x-nf-permission-required":"Account > GradualRollouts > General > Delete","x-nf-team-scoped":true,"x-nf-cli-command":["delete","gradual-rollout-strategy"]},"v1-integrations-log-sinks-get":{"operationId":"getIntegrationsLogSinks","summary":"List log sinks","description":"Gets a list of log sinks added to this account.","parameters":[{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query","schema":{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query"}},{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query","schema":{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query"}},{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query","schema":{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query"}}],"responses":{"200":{"description":"The list of log sinks.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"logSinks":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Name of the log sink.","example":"example-log-sink"},"id":{"type":"string","description":"Identifier for the Log Sink","example":"example-project"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"Description of the log sink.","example":"This is an example log sink."},"restricted":{"type":"boolean","description":"If `true`, only logs from the projects in `projects` will be sent to the log sink.","example":true},"projects":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The ID of a project.","example":"default-project"},"description":"If `restricted` is `true`, only logs from these projects will be sent to the log sink."},"status":{"type":"string","enum":["paused","running","failing","creating"],"description":"Current status of the log sink"},"options":{"type":"object","properties":{"useCustomLabels":{"type":"boolean","description":"If `true`, we will do additional parsing on your JSON formatted log lines and your extract custom labels","example":true},"forwardCdnLogs":{"type":"boolean","description":"Forward CDN logs from your workloads","example":true},"forwardIngressLogs":{"type":"boolean","description":"Forward ingress logs from your workloads","example":true},"forwardMeshLogs":{"type":"boolean","description":"Forward mesh logs from your workloads","example":true}},"additionalProperties":false},"sinkType":{"type":"string","enum":["loki","datadog_logs","papertrail","http","aws_s3","logdna","coralogix","betterStack","honeycomb","logzio","solarWinds","axiom","newRelic"],"description":"The type of the log sink.","examples":["http","loki"]},"createdAt":{"type":"string","format":"date-time","description":"Timestamp of when the log sink was created.","example":"2022-06-14 15:10:42.842Z"},"updatedAt":{"type":"string","format":"date-time","description":"Timestamp of when the log sink was last updated.","example":"2022-06-14 15:10:42.842Z"}},"required":["name","id","restricted","projects","status","sinkType","createdAt","updatedAt"],"additionalProperties":false,"description":"A log sink object."},"description":"An array of log sinks added to this account."}},"required":["logSinks"],"additionalProperties":false,"description":"Result data."},"pagination":{"type":"object","properties":{"hasNextPage":{"type":"boolean","description":"Is there another page of results available?","example":false},"cursor":{"type":"string","description":"The cursor to access the next page of results."},"count":{"type":"number","format":"float","description":"The number of results returned by this request.","example":1}},"required":["hasNextPage","count"],"additionalProperties":false,"description":"Data about the endpoint pagination."}},"required":["data","pagination"],"additionalProperties":false,"description":"Response object."}}},"tags":["Integrations"],"security":[],"x-nf-permission-required":"Account > Sinks > General > Read","x-nf-team-scoped":true,"x-nf-cli-command":["list","log-sinks"]},"v1-integrations-log-sinks-get-team-scoped":{"operationId":"getIntegrationsLogSinks","summary":"List log sinks","description":"Gets a list of log sinks added to this account.","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query","schema":{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query"}},{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query","schema":{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query"}},{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query","schema":{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query"}}],"responses":{"200":{"description":"The list of log sinks.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"logSinks":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Name of the log sink.","example":"example-log-sink"},"id":{"type":"string","description":"Identifier for the Log Sink","example":"example-project"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"Description of the log sink.","example":"This is an example log sink."},"restricted":{"type":"boolean","description":"If `true`, only logs from the projects in `projects` will be sent to the log sink.","example":true},"projects":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The ID of a project.","example":"default-project"},"description":"If `restricted` is `true`, only logs from these projects will be sent to the log sink."},"status":{"type":"string","enum":["paused","running","failing","creating"],"description":"Current status of the log sink"},"options":{"type":"object","properties":{"useCustomLabels":{"type":"boolean","description":"If `true`, we will do additional parsing on your JSON formatted log lines and your extract custom labels","example":true},"forwardCdnLogs":{"type":"boolean","description":"Forward CDN logs from your workloads","example":true},"forwardIngressLogs":{"type":"boolean","description":"Forward ingress logs from your workloads","example":true},"forwardMeshLogs":{"type":"boolean","description":"Forward mesh logs from your workloads","example":true}},"additionalProperties":false},"sinkType":{"type":"string","enum":["loki","datadog_logs","papertrail","http","aws_s3","logdna","coralogix","betterStack","honeycomb","logzio","solarWinds","axiom","newRelic"],"description":"The type of the log sink.","examples":["http","loki"]},"createdAt":{"type":"string","format":"date-time","description":"Timestamp of when the log sink was created.","example":"2022-06-14 15:10:42.842Z"},"updatedAt":{"type":"string","format":"date-time","description":"Timestamp of when the log sink was last updated.","example":"2022-06-14 15:10:42.842Z"}},"required":["name","id","restricted","projects","status","sinkType","createdAt","updatedAt"],"additionalProperties":false,"description":"A log sink object."},"description":"An array of log sinks added to this account."}},"required":["logSinks"],"additionalProperties":false,"description":"Result data."},"pagination":{"type":"object","properties":{"hasNextPage":{"type":"boolean","description":"Is there another page of results available?","example":false},"cursor":{"type":"string","description":"The cursor to access the next page of results."},"count":{"type":"number","format":"float","description":"The number of results returned by this request.","example":1}},"required":["hasNextPage","count"],"additionalProperties":false,"description":"Data about the endpoint pagination."}},"required":["data","pagination"],"additionalProperties":false,"description":"Response object."}}},"tags":["Integrations","team"],"security":[],"x-nf-permission-required":"Account > Sinks > General > Read","x-nf-team-scoped":true,"x-nf-cli-command":["list","log-sinks"]},"v1-integrations-log-sinks-post":{"operationId":"postIntegrationsLogSinks","summary":"Create log sink","description":"Creates a new log sink.","parameters":[],"responses":{"200":{"description":"Details about a log sink.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the new log sink.","example":"example-log-sink"}},"required":["id"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Integrations"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"name":{"type":"string","description":"Name of the log sink.","example":"example-log-sink"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"Description of the log sink.","example":"This is an example log sink."},"restricted":{"type":"boolean","description":"If `true`, only logs from the projects in `projects` will be sent to the log sink.","example":true,"default":false},"projects":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The ID of a project.","example":"default-project"},"description":"If `restricted` is `true`, only logs from these projects will be sent to the log sink.","default":[]},"restrictions":{"type":"object","properties":{"tags":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether restriction by tag should be enabled.","example":false},"items":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"matchCondition":{"type":"string","enum":["and","or"],"description":"If all or any of the tags must be present on the target for it to match the condition.","example":"or"}},"additionalProperties":false,"description":"Configuration of tag restriction settings."}},"additionalProperties":false,"description":"Configuration of restrictions."},"options":{"type":"object","properties":{"useCustomLabels":{"type":"boolean","description":"If `true`, we will do additional parsing on your JSON formatted log lines and your extract custom labels","example":true},"forwardCdnLogs":{"type":"boolean","description":"Forward CDN logs from your workloads","example":true},"forwardIngressLogs":{"type":"boolean","description":"Forward ingress logs from your workloads","example":true},"forwardMeshLogs":{"type":"boolean","description":"Forward mesh logs from your workloads","example":true}},"additionalProperties":false},"sinkType":{"type":"string","enum":["loki"],"description":"The type of the log sink.","example":"loki"},"sinkData":{"type":"object","properties":{"endpoint":{"type":"string","description":"The endpoint of the Loki log sink.","example":"https://logs.example.com"},"encoding":{"type":"object","properties":{"codec":{"type":"string","enum":["text","json"],"description":"Codec to encode logs in","example":"json"}},"required":["codec"],"additionalProperties":false,"description":"Encoding options"},"auth":{"type":"object","properties":{"strategy":{"type":"string","enum":["basic"],"description":"The authentication strategy.","example":"basic"},"user":{"type":"string","description":"The username for the log sink.","example":"admin"},"password":{"type":"string","description":"The password for the log sink.","example":"password1234"}},"additionalProperties":false,"description":"Object containing authentication data for the log sink."}},"required":["endpoint"],"additionalProperties":false,"description":"Details about the Loki log sink."}},"required":["name","sinkType","sinkData"],"additionalProperties":false,"description":"Create a log sink using Loki"},{"type":"object","properties":{"name":{"type":"string","description":"Name of the log sink.","example":"example-log-sink"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"Description of the log sink.","example":"This is an example log sink."},"restricted":{"type":"boolean","description":"If `true`, only logs from the projects in `projects` will be sent to the log sink.","example":true,"default":false},"projects":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The ID of a project.","example":"default-project"},"description":"If `restricted` is `true`, only logs from these projects will be sent to the log sink.","default":[]},"restrictions":{"type":"object","properties":{"tags":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether restriction by tag should be enabled.","example":false},"items":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"matchCondition":{"type":"string","enum":["and","or"],"description":"If all or any of the tags must be present on the target for it to match the condition.","example":"or"}},"additionalProperties":false,"description":"Configuration of tag restriction settings."}},"additionalProperties":false,"description":"Configuration of restrictions."},"options":{"type":"object","properties":{"useCustomLabels":{"type":"boolean","description":"If `true`, we will do additional parsing on your JSON formatted log lines and your extract custom labels","example":true},"forwardCdnLogs":{"type":"boolean","description":"Forward CDN logs from your workloads","example":true},"forwardIngressLogs":{"type":"boolean","description":"Forward ingress logs from your workloads","example":true},"forwardMeshLogs":{"type":"boolean","description":"Forward mesh logs from your workloads","example":true}},"additionalProperties":false},"sinkType":{"type":"string","enum":["datadog_logs"],"description":"The type of the log sink.","example":"datadog_logs"},"sinkData":{"type":"object","properties":{"default_api_key":{"type":"string","description":"The Datadog API key.","example":"abcdef12345678900000000000000000"},"region":{"type":"string","enum":["eu","us","us3","us5"],"description":"The Datadog region.","example":"eu"}},"required":["default_api_key","region"],"additionalProperties":false,"description":"Details about the Datadog log sink."}},"required":["name","sinkType","sinkData"],"additionalProperties":false,"description":"Create a log sink using Datadog"},{"type":"object","properties":{"name":{"type":"string","description":"Name of the log sink.","example":"example-log-sink"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"Description of the log sink.","example":"This is an example log sink."},"restricted":{"type":"boolean","description":"If `true`, only logs from the projects in `projects` will be sent to the log sink.","example":true,"default":false},"projects":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The ID of a project.","example":"default-project"},"description":"If `restricted` is `true`, only logs from these projects will be sent to the log sink.","default":[]},"restrictions":{"type":"object","properties":{"tags":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether restriction by tag should be enabled.","example":false},"items":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"matchCondition":{"type":"string","enum":["and","or"],"description":"If all or any of the tags must be present on the target for it to match the condition.","example":"or"}},"additionalProperties":false,"description":"Configuration of tag restriction settings."}},"additionalProperties":false,"description":"Configuration of restrictions."},"options":{"type":"object","properties":{"useCustomLabels":{"type":"boolean","description":"If `true`, we will do additional parsing on your JSON formatted log lines and your extract custom labels","example":true},"forwardCdnLogs":{"type":"boolean","description":"Forward CDN logs from your workloads","example":true},"forwardIngressLogs":{"type":"boolean","description":"Forward ingress logs from your workloads","example":true},"forwardMeshLogs":{"type":"boolean","description":"Forward mesh logs from your workloads","example":true}},"additionalProperties":false},"sinkType":{"type":"string","enum":["papertrail"],"description":"The type of the log sink.","example":"papertrail"},"sinkData":{"oneOf":[{"type":"object","properties":{"authenticationStrategy":{"type":"string","enum":["port"],"description":"The authentication strategy.","example":"port"},"host":{"type":"string","description":"The host for the Papertrail log destination.","example":"logs1.papertrailapp.com:"},"port":{"type":"number","format":"float","description":"The port for the Papertrail log destination.","example":8000}},"required":["authenticationStrategy","host","port"],"additionalProperties":false,"description":"Authenticate with a host/port"},{"type":"object","properties":{"authenticationStrategy":{"type":"string","enum":["token"],"description":"The authentication strategy.","example":"token"},"uri":{"type":"string","description":"The uri for the Papertrail log destination.","example":"https://logs.collector.solarwinds.com/v1/log"},"token":{"type":"string","description":"The HTTP Token for the Papertrail log destination.","example":"123abcdefghijklmnopqrstuvwxy"}},"required":["authenticationStrategy","uri","token"],"additionalProperties":false,"description":"Authenticate with a token."}],"description":"Papertrail Sink Schema."}},"required":["name","sinkType","sinkData"],"additionalProperties":false,"description":"Create a log sink using Papertrail"},{"type":"object","properties":{"name":{"type":"string","description":"Name of the log sink.","example":"example-log-sink"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"Description of the log sink.","example":"This is an example log sink."},"restricted":{"type":"boolean","description":"If `true`, only logs from the projects in `projects` will be sent to the log sink.","example":true,"default":false},"projects":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The ID of a project.","example":"default-project"},"description":"If `restricted` is `true`, only logs from these projects will be sent to the log sink.","default":[]},"restrictions":{"type":"object","properties":{"tags":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether restriction by tag should be enabled.","example":false},"items":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"matchCondition":{"type":"string","enum":["and","or"],"description":"If all or any of the tags must be present on the target for it to match the condition.","example":"or"}},"additionalProperties":false,"description":"Configuration of tag restriction settings."}},"additionalProperties":false,"description":"Configuration of restrictions."},"options":{"type":"object","properties":{"useCustomLabels":{"type":"boolean","description":"If `true`, we will do additional parsing on your JSON formatted log lines and your extract custom labels","example":true},"forwardCdnLogs":{"type":"boolean","description":"Forward CDN logs from your workloads","example":true},"forwardIngressLogs":{"type":"boolean","description":"Forward ingress logs from your workloads","example":true},"forwardMeshLogs":{"type":"boolean","description":"Forward mesh logs from your workloads","example":true}},"additionalProperties":false},"sinkType":{"type":"string","enum":["aws_s3"],"description":"The type of the log sink.","example":"aws_s3"},"sinkData":{"type":"object","properties":{"endpoint":{"type":"string","description":"Endpoint for the AWS S3 or compatible API bucket.","example":"my.bucket.com"},"region":{"type":"string","enum":["eu-west-1","eu-west-2","eu-west-3","eu-central-1","eu-south-1","eu-north-1","us-west-1","us-west-2","us-east-1","us-east2"],"description":"Region of the S3 bucket.","example":"eu-west-2"},"auth":{"type":"object","properties":{"accessKeyId":{"type":"string","description":"Access key id for the bucket.","example":"PMSACIHNUIASDBWQDS"},"secretAccessKey":{"type":"string","description":"Secret access key for the bucket.","example":"HA1PLMNOEAEYUHAJQMSDUJQS"}},"required":["accessKeyId","secretAccessKey"],"additionalProperties":false,"description":"Authentication object."},"bucket":{"type":"string","description":"Name of the S3 Bucket.","example":"northflank-logs"},"compression":{"type":"string","enum":["gzip","none"],"description":"Log file compression method.","example":"gzip"}},"required":["endpoint","region","bucket","compression"],"additionalProperties":false,"description":"Details about the AWS S3 log sink."}},"required":["name","sinkType","sinkData"],"additionalProperties":false,"description":"Create a log sink using AWS S3"},{"type":"object","properties":{"name":{"type":"string","description":"Name of the log sink.","example":"example-log-sink"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"Description of the log sink.","example":"This is an example log sink."},"restricted":{"type":"boolean","description":"If `true`, only logs from the projects in `projects` will be sent to the log sink.","example":true,"default":false},"projects":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The ID of a project.","example":"default-project"},"description":"If `restricted` is `true`, only logs from these projects will be sent to the log sink.","default":[]},"restrictions":{"type":"object","properties":{"tags":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether restriction by tag should be enabled.","example":false},"items":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"matchCondition":{"type":"string","enum":["and","or"],"description":"If all or any of the tags must be present on the target for it to match the condition.","example":"or"}},"additionalProperties":false,"description":"Configuration of tag restriction settings."}},"additionalProperties":false,"description":"Configuration of restrictions."},"options":{"type":"object","properties":{"useCustomLabels":{"type":"boolean","description":"If `true`, we will do additional parsing on your JSON formatted log lines and your extract custom labels","example":true},"forwardCdnLogs":{"type":"boolean","description":"Forward CDN logs from your workloads","example":true},"forwardIngressLogs":{"type":"boolean","description":"Forward ingress logs from your workloads","example":true},"forwardMeshLogs":{"type":"boolean","description":"Forward mesh logs from your workloads","example":true}},"additionalProperties":false},"sinkType":{"type":"string","enum":["http"],"description":"The type of the log sink.","example":"http"},"sinkData":{"type":"object","properties":{"uri":{"type":"string","description":"Uri to send logs to.","example":"my.log-collector.com"},"encoding":{"type":"object","properties":{"codec":{"type":"string","enum":["text","json"],"description":"Codec to encode logs in","example":"json"}},"required":["codec"],"additionalProperties":false,"description":"Encoding options"},"batch":{"type":"object","properties":{"maxEvents":{"type":"number","format":"float","description":"The max number of events in a batch before sending","example":"10","default":"20"},"maxBytes":{"type":"number","format":"float","description":"The max size of a batch in bytes before sending","example":"1e+7"}},"additionalProperties":false},"auth":{"oneOf":[{"type":"object","properties":{"strategy":{"type":"string","enum":["none"],"description":"No authentication strategy","example":"none"}},"required":["strategy"],"additionalProperties":false,"description":"No authentication strategy"},{"type":"object","properties":{"strategy":{"type":"string","enum":["basic"],"description":"Basic HTTP authentication strategy.","example":"basic"},"user":{"type":"string","description":"Username for basic http authentication.","example":"my-user"},"password":{"type":"string","description":"Password for basic http authentication.","example":"secret-password"}},"required":["strategy","password"],"additionalProperties":false,"description":"Authenticate with a basic http strategy."},{"type":"object","properties":{"strategy":{"type":"string","enum":["bearer"],"description":"Bearer token authentication strategy.","example":"bearer"},"token":{"type":"string","description":"Token for bearer token authentication.","example":"my-token"}},"required":["strategy"],"additionalProperties":false,"description":"Authenticate with a bearer token strategy."}],"description":"Auth information."},"framing":{"type":"object","properties":{"method":{"type":"string","enum":["none","newline","length"],"default":"none"}},"additionalProperties":false}},"required":["uri","encoding","auth"],"additionalProperties":false,"description":"Details about the HTTP log sink.","default":{"method":"none"}}},"required":["name","sinkType","sinkData"],"additionalProperties":false,"description":"Create a log sink using HTTP"},{"type":"object","properties":{"name":{"type":"string","description":"Name of the log sink.","example":"example-log-sink"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"Description of the log sink.","example":"This is an example log sink."},"restricted":{"type":"boolean","description":"If `true`, only logs from the projects in `projects` will be sent to the log sink.","example":true,"default":false},"projects":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The ID of a project.","example":"default-project"},"description":"If `restricted` is `true`, only logs from these projects will be sent to the log sink.","default":[]},"restrictions":{"type":"object","properties":{"tags":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether restriction by tag should be enabled.","example":false},"items":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"matchCondition":{"type":"string","enum":["and","or"],"description":"If all or any of the tags must be present on the target for it to match the condition.","example":"or"}},"additionalProperties":false,"description":"Configuration of tag restriction settings."}},"additionalProperties":false,"description":"Configuration of restrictions."},"options":{"type":"object","properties":{"useCustomLabels":{"type":"boolean","description":"If `true`, we will do additional parsing on your JSON formatted log lines and your extract custom labels","example":true},"forwardCdnLogs":{"type":"boolean","description":"Forward CDN logs from your workloads","example":true},"forwardIngressLogs":{"type":"boolean","description":"Forward ingress logs from your workloads","example":true},"forwardMeshLogs":{"type":"boolean","description":"Forward mesh logs from your workloads","example":true}},"additionalProperties":false},"sinkType":{"type":"string","enum":["logdna"],"description":"The type of the log sink.","example":"logdna"},"sinkData":{"type":"object","properties":{"api_key":{"type":"string","description":"Ingestion Key","example":"b1dd3feb585asd1a3e9edpo9kmn5e590hg9"}},"required":["api_key"],"additionalProperties":false,"description":"Details about the LogDNA log sink."}},"required":["name","sinkType","sinkData"],"additionalProperties":false,"description":"Create a log sink using LogDNA"},{"type":"object","properties":{"name":{"type":"string","description":"Name of the log sink.","example":"example-log-sink"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"Description of the log sink.","example":"This is an example log sink."},"restricted":{"type":"boolean","description":"If `true`, only logs from the projects in `projects` will be sent to the log sink.","example":true,"default":false},"projects":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The ID of a project.","example":"default-project"},"description":"If `restricted` is `true`, only logs from these projects will be sent to the log sink.","default":[]},"restrictions":{"type":"object","properties":{"tags":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether restriction by tag should be enabled.","example":false},"items":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"matchCondition":{"type":"string","enum":["and","or"],"description":"If all or any of the tags must be present on the target for it to match the condition.","example":"or"}},"additionalProperties":false,"description":"Configuration of tag restriction settings."}},"additionalProperties":false,"description":"Configuration of restrictions."},"options":{"type":"object","properties":{"useCustomLabels":{"type":"boolean","description":"If `true`, we will do additional parsing on your JSON formatted log lines and your extract custom labels","example":true},"forwardCdnLogs":{"type":"boolean","description":"Forward CDN logs from your workloads","example":true},"forwardIngressLogs":{"type":"boolean","description":"Forward ingress logs from your workloads","example":true},"forwardMeshLogs":{"type":"boolean","description":"Forward mesh logs from your workloads","example":true}},"additionalProperties":false},"sinkType":{"type":"string","enum":["betterStack"],"description":"The type of the log sink.","example":"betterStack"},"sinkData":{"type":"object","properties":{"token":{"type":"string","description":"Better Stack Source Token","example":"vhnqrLygVQ5GnSQUTZamKvAq"},"uri":{"type":"string","description":"Better stack ingestion host","example":"abc123.eu-nbg-2.betterstackdata.com"}},"required":["token","uri"],"additionalProperties":false,"description":"Details about the Better Stack log sink."}},"required":["name","sinkType","sinkData"],"additionalProperties":false,"description":"Create a log sink using Better Stack"},{"type":"object","properties":{"name":{"type":"string","description":"Name of the log sink.","example":"example-log-sink"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"Description of the log sink.","example":"This is an example log sink."},"restricted":{"type":"boolean","description":"If `true`, only logs from the projects in `projects` will be sent to the log sink.","example":true,"default":false},"projects":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The ID of a project.","example":"default-project"},"description":"If `restricted` is `true`, only logs from these projects will be sent to the log sink.","default":[]},"restrictions":{"type":"object","properties":{"tags":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether restriction by tag should be enabled.","example":false},"items":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"matchCondition":{"type":"string","enum":["and","or"],"description":"If all or any of the tags must be present on the target for it to match the condition.","example":"or"}},"additionalProperties":false,"description":"Configuration of tag restriction settings."}},"additionalProperties":false,"description":"Configuration of restrictions."},"options":{"type":"object","properties":{"useCustomLabels":{"type":"boolean","description":"If `true`, we will do additional parsing on your JSON formatted log lines and your extract custom labels","example":true},"forwardCdnLogs":{"type":"boolean","description":"Forward CDN logs from your workloads","example":true},"forwardIngressLogs":{"type":"boolean","description":"Forward ingress logs from your workloads","example":true},"forwardMeshLogs":{"type":"boolean","description":"Forward mesh logs from your workloads","example":true}},"additionalProperties":false},"sinkType":{"type":"string","enum":["honeycomb"],"description":"The type of the log sink.","example":"honeycomb"},"sinkData":{"type":"object","properties":{"api_key":{"type":"string","description":"Honeycomb API Key","example":"b1dd3feb585asd1a3e9"},"dataset":{"type":"string","description":"Name of the dataset","example":"staging-logs"}},"required":["api_key","dataset"],"additionalProperties":false,"description":"Details about the Honeycomb log sink."}},"required":["name","sinkType","sinkData"],"additionalProperties":false,"description":"Create a log sink using Honeycomb"},{"type":"object","properties":{"name":{"type":"string","description":"Name of the log sink.","example":"example-log-sink"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"Description of the log sink.","example":"This is an example log sink."},"restricted":{"type":"boolean","description":"If `true`, only logs from the projects in `projects` will be sent to the log sink.","example":true,"default":false},"projects":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The ID of a project.","example":"default-project"},"description":"If `restricted` is `true`, only logs from these projects will be sent to the log sink.","default":[]},"restrictions":{"type":"object","properties":{"tags":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether restriction by tag should be enabled.","example":false},"items":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"matchCondition":{"type":"string","enum":["and","or"],"description":"If all or any of the tags must be present on the target for it to match the condition.","example":"or"}},"additionalProperties":false,"description":"Configuration of tag restriction settings."}},"additionalProperties":false,"description":"Configuration of restrictions."},"options":{"type":"object","properties":{"useCustomLabels":{"type":"boolean","description":"If `true`, we will do additional parsing on your JSON formatted log lines and your extract custom labels","example":true},"forwardCdnLogs":{"type":"boolean","description":"Forward CDN logs from your workloads","example":true},"forwardIngressLogs":{"type":"boolean","description":"Forward ingress logs from your workloads","example":true},"forwardMeshLogs":{"type":"boolean","description":"Forward mesh logs from your workloads","example":true}},"additionalProperties":false},"sinkType":{"type":"string","enum":["logzio"],"description":"The type of the log sink.","example":"logzio"},"sinkData":{"type":"object","properties":{"region":{"type":"string","enum":["eu","uk","us","ca","au","nl","wa"],"description":"Your Logzio region code","example":"eu"},"token":{"type":"string","description":"The Log Shipping Token of the account you want to ship to","example":"sNFijNFgNFoNFrMsNFbNFObNFcgNFqoa"}},"required":["region","token"],"additionalProperties":false,"description":"Details about the Logz.io log sink."}},"required":["name","sinkType","sinkData"],"additionalProperties":false,"description":"Create a log sink using Logz.io"},{"type":"object","properties":{"name":{"type":"string","description":"Name of the log sink.","example":"example-log-sink"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"Description of the log sink.","example":"This is an example log sink."},"restricted":{"type":"boolean","description":"If `true`, only logs from the projects in `projects` will be sent to the log sink.","example":true,"default":false},"projects":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The ID of a project.","example":"default-project"},"description":"If `restricted` is `true`, only logs from these projects will be sent to the log sink.","default":[]},"restrictions":{"type":"object","properties":{"tags":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether restriction by tag should be enabled.","example":false},"items":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"matchCondition":{"type":"string","enum":["and","or"],"description":"If all or any of the tags must be present on the target for it to match the condition.","example":"or"}},"additionalProperties":false,"description":"Configuration of tag restriction settings."}},"additionalProperties":false,"description":"Configuration of restrictions."},"options":{"type":"object","properties":{"useCustomLabels":{"type":"boolean","description":"If `true`, we will do additional parsing on your JSON formatted log lines and your extract custom labels","example":true},"forwardCdnLogs":{"type":"boolean","description":"Forward CDN logs from your workloads","example":true},"forwardIngressLogs":{"type":"boolean","description":"Forward ingress logs from your workloads","example":true},"forwardMeshLogs":{"type":"boolean","description":"Forward mesh logs from your workloads","example":true}},"additionalProperties":false},"sinkType":{"type":"string","enum":["solarWinds"],"description":"The type of the log sink.","example":"solarWinds"},"sinkData":{"type":"object","properties":{"api_key":{"type":"string","description":"Solar Winds API Key","example":"Tr8BIEmYx1fuM3_XRMwU3xXEFnD20p9NFkRIu1COrDqMCM4g86qWZgVdgs1Y7mzWtFMI0Zc"},"encoding":{"type":"object","properties":{"codec":{"type":"string","enum":["text","json"],"description":"Codec to encode logs in","example":"json"}},"required":["codec"],"additionalProperties":false},"endpointType":{"type":"string","enum":["unitary","bulk"],"description":"Solar Winds endpoint type"}},"required":["api_key","endpointType"],"additionalProperties":false,"description":"Details about the Solar Winds log sink."}},"required":["name","sinkType","sinkData"],"additionalProperties":false,"description":"Create a log sink using Solar Winds"},{"type":"object","properties":{"name":{"type":"string","description":"Name of the log sink.","example":"example-log-sink"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"Description of the log sink.","example":"This is an example log sink."},"restricted":{"type":"boolean","description":"If `true`, only logs from the projects in `projects` will be sent to the log sink.","example":true,"default":false},"projects":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The ID of a project.","example":"default-project"},"description":"If `restricted` is `true`, only logs from these projects will be sent to the log sink.","default":[]},"restrictions":{"type":"object","properties":{"tags":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether restriction by tag should be enabled.","example":false},"items":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"matchCondition":{"type":"string","enum":["and","or"],"description":"If all or any of the tags must be present on the target for it to match the condition.","example":"or"}},"additionalProperties":false,"description":"Configuration of tag restriction settings."}},"additionalProperties":false,"description":"Configuration of restrictions."},"options":{"type":"object","properties":{"useCustomLabels":{"type":"boolean","description":"If `true`, we will do additional parsing on your JSON formatted log lines and your extract custom labels","example":true},"forwardCdnLogs":{"type":"boolean","description":"Forward CDN logs from your workloads","example":true},"forwardIngressLogs":{"type":"boolean","description":"Forward ingress logs from your workloads","example":true},"forwardMeshLogs":{"type":"boolean","description":"Forward mesh logs from your workloads","example":true}},"additionalProperties":false},"sinkType":{"type":"string","enum":["axiom"],"description":"The type of the log sink.","example":"axiom"},"sinkData":{"type":"object","properties":{"dataset":{"type":"string","description":"Name of the data","example":"staging"},"token":{"type":"string","description":"Axiom API/Personal token","example":"b1dd3feb585asd1a3e9edpo9kmn5e590hg9"},"tokenType":{"type":"string","enum":["personal","api"],"description":"Using a personal token","example":"api"},"orgId":{"type":"string","description":"The ID of the organisation, required if using a personal token"},"url":{"type":"string","description":"The Axiom url to use. Only change if self hosting axiom.","default":"https://api.axiom.co"}},"required":["dataset","token","tokenType"],"additionalProperties":false,"description":"Details about the Axiom log sink."}},"required":["name","sinkType","sinkData"],"additionalProperties":false,"description":"Create a log sink using Axiom"},{"type":"object","properties":{"name":{"type":"string","description":"Name of the log sink.","example":"example-log-sink"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"Description of the log sink.","example":"This is an example log sink."},"restricted":{"type":"boolean","description":"If `true`, only logs from the projects in `projects` will be sent to the log sink.","example":true,"default":false},"projects":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The ID of a project.","example":"default-project"},"description":"If `restricted` is `true`, only logs from these projects will be sent to the log sink.","default":[]},"restrictions":{"type":"object","properties":{"tags":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether restriction by tag should be enabled.","example":false},"items":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"matchCondition":{"type":"string","enum":["and","or"],"description":"If all or any of the tags must be present on the target for it to match the condition.","example":"or"}},"additionalProperties":false,"description":"Configuration of tag restriction settings."}},"additionalProperties":false,"description":"Configuration of restrictions."},"options":{"type":"object","properties":{"useCustomLabels":{"type":"boolean","description":"If `true`, we will do additional parsing on your JSON formatted log lines and your extract custom labels","example":true},"forwardCdnLogs":{"type":"boolean","description":"Forward CDN logs from your workloads","example":true},"forwardIngressLogs":{"type":"boolean","description":"Forward ingress logs from your workloads","example":true},"forwardMeshLogs":{"type":"boolean","description":"Forward mesh logs from your workloads","example":true}},"additionalProperties":false},"sinkType":{"type":"string","enum":["newRelic"],"description":"The type of the log sink.","example":"newRelic"},"sinkData":{"type":"object","properties":{"accountId":{"type":"string","description":"New Relic Account ID","example":"b1dd3feb585asd1a3e9"},"licenseKey":{"type":"string","description":"New Relic License Key","example":"b1dd3feb585asd1a3e9"},"region":{"type":"string","enum":["eu","us"],"example":"eu"}},"required":["accountId","licenseKey","region"],"additionalProperties":false,"description":"Details about the New Relic log sink."}},"required":["name","sinkType","sinkData"],"additionalProperties":false,"description":"Create a log sink using New Relic"}],"description":"Create a log sink"}}},"required":true},"x-nf-permission-required":"Account > Sinks > General > Create","x-nf-team-scoped":true,"x-nf-cli-command":["create","log-sink"]},"v1-integrations-log-sinks-post-team-scoped":{"operationId":"postIntegrationsLogSinks","summary":"Create log sink","description":"Creates a new log sink.","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}}],"responses":{"200":{"description":"Details about a log sink.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the new log sink.","example":"example-log-sink"}},"required":["id"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Integrations","team"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"name":{"type":"string","description":"Name of the log sink.","example":"example-log-sink"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"Description of the log sink.","example":"This is an example log sink."},"restricted":{"type":"boolean","description":"If `true`, only logs from the projects in `projects` will be sent to the log sink.","example":true,"default":false},"projects":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The ID of a project.","example":"default-project"},"description":"If `restricted` is `true`, only logs from these projects will be sent to the log sink.","default":[]},"restrictions":{"type":"object","properties":{"tags":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether restriction by tag should be enabled.","example":false},"items":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"matchCondition":{"type":"string","enum":["and","or"],"description":"If all or any of the tags must be present on the target for it to match the condition.","example":"or"}},"additionalProperties":false,"description":"Configuration of tag restriction settings."}},"additionalProperties":false,"description":"Configuration of restrictions."},"options":{"type":"object","properties":{"useCustomLabels":{"type":"boolean","description":"If `true`, we will do additional parsing on your JSON formatted log lines and your extract custom labels","example":true},"forwardCdnLogs":{"type":"boolean","description":"Forward CDN logs from your workloads","example":true},"forwardIngressLogs":{"type":"boolean","description":"Forward ingress logs from your workloads","example":true},"forwardMeshLogs":{"type":"boolean","description":"Forward mesh logs from your workloads","example":true}},"additionalProperties":false},"sinkType":{"type":"string","enum":["loki"],"description":"The type of the log sink.","example":"loki"},"sinkData":{"type":"object","properties":{"endpoint":{"type":"string","description":"The endpoint of the Loki log sink.","example":"https://logs.example.com"},"encoding":{"type":"object","properties":{"codec":{"type":"string","enum":["text","json"],"description":"Codec to encode logs in","example":"json"}},"required":["codec"],"additionalProperties":false,"description":"Encoding options"},"auth":{"type":"object","properties":{"strategy":{"type":"string","enum":["basic"],"description":"The authentication strategy.","example":"basic"},"user":{"type":"string","description":"The username for the log sink.","example":"admin"},"password":{"type":"string","description":"The password for the log sink.","example":"password1234"}},"additionalProperties":false,"description":"Object containing authentication data for the log sink."}},"required":["endpoint"],"additionalProperties":false,"description":"Details about the Loki log sink."}},"required":["name","sinkType","sinkData"],"additionalProperties":false,"description":"Create a log sink using Loki"},{"type":"object","properties":{"name":{"type":"string","description":"Name of the log sink.","example":"example-log-sink"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"Description of the log sink.","example":"This is an example log sink."},"restricted":{"type":"boolean","description":"If `true`, only logs from the projects in `projects` will be sent to the log sink.","example":true,"default":false},"projects":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The ID of a project.","example":"default-project"},"description":"If `restricted` is `true`, only logs from these projects will be sent to the log sink.","default":[]},"restrictions":{"type":"object","properties":{"tags":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether restriction by tag should be enabled.","example":false},"items":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"matchCondition":{"type":"string","enum":["and","or"],"description":"If all or any of the tags must be present on the target for it to match the condition.","example":"or"}},"additionalProperties":false,"description":"Configuration of tag restriction settings."}},"additionalProperties":false,"description":"Configuration of restrictions."},"options":{"type":"object","properties":{"useCustomLabels":{"type":"boolean","description":"If `true`, we will do additional parsing on your JSON formatted log lines and your extract custom labels","example":true},"forwardCdnLogs":{"type":"boolean","description":"Forward CDN logs from your workloads","example":true},"forwardIngressLogs":{"type":"boolean","description":"Forward ingress logs from your workloads","example":true},"forwardMeshLogs":{"type":"boolean","description":"Forward mesh logs from your workloads","example":true}},"additionalProperties":false},"sinkType":{"type":"string","enum":["datadog_logs"],"description":"The type of the log sink.","example":"datadog_logs"},"sinkData":{"type":"object","properties":{"default_api_key":{"type":"string","description":"The Datadog API key.","example":"abcdef12345678900000000000000000"},"region":{"type":"string","enum":["eu","us","us3","us5"],"description":"The Datadog region.","example":"eu"}},"required":["default_api_key","region"],"additionalProperties":false,"description":"Details about the Datadog log sink."}},"required":["name","sinkType","sinkData"],"additionalProperties":false,"description":"Create a log sink using Datadog"},{"type":"object","properties":{"name":{"type":"string","description":"Name of the log sink.","example":"example-log-sink"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"Description of the log sink.","example":"This is an example log sink."},"restricted":{"type":"boolean","description":"If `true`, only logs from the projects in `projects` will be sent to the log sink.","example":true,"default":false},"projects":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The ID of a project.","example":"default-project"},"description":"If `restricted` is `true`, only logs from these projects will be sent to the log sink.","default":[]},"restrictions":{"type":"object","properties":{"tags":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether restriction by tag should be enabled.","example":false},"items":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"matchCondition":{"type":"string","enum":["and","or"],"description":"If all or any of the tags must be present on the target for it to match the condition.","example":"or"}},"additionalProperties":false,"description":"Configuration of tag restriction settings."}},"additionalProperties":false,"description":"Configuration of restrictions."},"options":{"type":"object","properties":{"useCustomLabels":{"type":"boolean","description":"If `true`, we will do additional parsing on your JSON formatted log lines and your extract custom labels","example":true},"forwardCdnLogs":{"type":"boolean","description":"Forward CDN logs from your workloads","example":true},"forwardIngressLogs":{"type":"boolean","description":"Forward ingress logs from your workloads","example":true},"forwardMeshLogs":{"type":"boolean","description":"Forward mesh logs from your workloads","example":true}},"additionalProperties":false},"sinkType":{"type":"string","enum":["papertrail"],"description":"The type of the log sink.","example":"papertrail"},"sinkData":{"oneOf":[{"type":"object","properties":{"authenticationStrategy":{"type":"string","enum":["port"],"description":"The authentication strategy.","example":"port"},"host":{"type":"string","description":"The host for the Papertrail log destination.","example":"logs1.papertrailapp.com:"},"port":{"type":"number","format":"float","description":"The port for the Papertrail log destination.","example":8000}},"required":["authenticationStrategy","host","port"],"additionalProperties":false,"description":"Authenticate with a host/port"},{"type":"object","properties":{"authenticationStrategy":{"type":"string","enum":["token"],"description":"The authentication strategy.","example":"token"},"uri":{"type":"string","description":"The uri for the Papertrail log destination.","example":"https://logs.collector.solarwinds.com/v1/log"},"token":{"type":"string","description":"The HTTP Token for the Papertrail log destination.","example":"123abcdefghijklmnopqrstuvwxy"}},"required":["authenticationStrategy","uri","token"],"additionalProperties":false,"description":"Authenticate with a token."}],"description":"Papertrail Sink Schema."}},"required":["name","sinkType","sinkData"],"additionalProperties":false,"description":"Create a log sink using Papertrail"},{"type":"object","properties":{"name":{"type":"string","description":"Name of the log sink.","example":"example-log-sink"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"Description of the log sink.","example":"This is an example log sink."},"restricted":{"type":"boolean","description":"If `true`, only logs from the projects in `projects` will be sent to the log sink.","example":true,"default":false},"projects":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The ID of a project.","example":"default-project"},"description":"If `restricted` is `true`, only logs from these projects will be sent to the log sink.","default":[]},"restrictions":{"type":"object","properties":{"tags":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether restriction by tag should be enabled.","example":false},"items":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"matchCondition":{"type":"string","enum":["and","or"],"description":"If all or any of the tags must be present on the target for it to match the condition.","example":"or"}},"additionalProperties":false,"description":"Configuration of tag restriction settings."}},"additionalProperties":false,"description":"Configuration of restrictions."},"options":{"type":"object","properties":{"useCustomLabels":{"type":"boolean","description":"If `true`, we will do additional parsing on your JSON formatted log lines and your extract custom labels","example":true},"forwardCdnLogs":{"type":"boolean","description":"Forward CDN logs from your workloads","example":true},"forwardIngressLogs":{"type":"boolean","description":"Forward ingress logs from your workloads","example":true},"forwardMeshLogs":{"type":"boolean","description":"Forward mesh logs from your workloads","example":true}},"additionalProperties":false},"sinkType":{"type":"string","enum":["aws_s3"],"description":"The type of the log sink.","example":"aws_s3"},"sinkData":{"type":"object","properties":{"endpoint":{"type":"string","description":"Endpoint for the AWS S3 or compatible API bucket.","example":"my.bucket.com"},"region":{"type":"string","enum":["eu-west-1","eu-west-2","eu-west-3","eu-central-1","eu-south-1","eu-north-1","us-west-1","us-west-2","us-east-1","us-east2"],"description":"Region of the S3 bucket.","example":"eu-west-2"},"auth":{"type":"object","properties":{"accessKeyId":{"type":"string","description":"Access key id for the bucket.","example":"PMSACIHNUIASDBWQDS"},"secretAccessKey":{"type":"string","description":"Secret access key for the bucket.","example":"HA1PLMNOEAEYUHAJQMSDUJQS"}},"required":["accessKeyId","secretAccessKey"],"additionalProperties":false,"description":"Authentication object."},"bucket":{"type":"string","description":"Name of the S3 Bucket.","example":"northflank-logs"},"compression":{"type":"string","enum":["gzip","none"],"description":"Log file compression method.","example":"gzip"}},"required":["endpoint","region","bucket","compression"],"additionalProperties":false,"description":"Details about the AWS S3 log sink."}},"required":["name","sinkType","sinkData"],"additionalProperties":false,"description":"Create a log sink using AWS S3"},{"type":"object","properties":{"name":{"type":"string","description":"Name of the log sink.","example":"example-log-sink"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"Description of the log sink.","example":"This is an example log sink."},"restricted":{"type":"boolean","description":"If `true`, only logs from the projects in `projects` will be sent to the log sink.","example":true,"default":false},"projects":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The ID of a project.","example":"default-project"},"description":"If `restricted` is `true`, only logs from these projects will be sent to the log sink.","default":[]},"restrictions":{"type":"object","properties":{"tags":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether restriction by tag should be enabled.","example":false},"items":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"matchCondition":{"type":"string","enum":["and","or"],"description":"If all or any of the tags must be present on the target for it to match the condition.","example":"or"}},"additionalProperties":false,"description":"Configuration of tag restriction settings."}},"additionalProperties":false,"description":"Configuration of restrictions."},"options":{"type":"object","properties":{"useCustomLabels":{"type":"boolean","description":"If `true`, we will do additional parsing on your JSON formatted log lines and your extract custom labels","example":true},"forwardCdnLogs":{"type":"boolean","description":"Forward CDN logs from your workloads","example":true},"forwardIngressLogs":{"type":"boolean","description":"Forward ingress logs from your workloads","example":true},"forwardMeshLogs":{"type":"boolean","description":"Forward mesh logs from your workloads","example":true}},"additionalProperties":false},"sinkType":{"type":"string","enum":["http"],"description":"The type of the log sink.","example":"http"},"sinkData":{"type":"object","properties":{"uri":{"type":"string","description":"Uri to send logs to.","example":"my.log-collector.com"},"encoding":{"type":"object","properties":{"codec":{"type":"string","enum":["text","json"],"description":"Codec to encode logs in","example":"json"}},"required":["codec"],"additionalProperties":false,"description":"Encoding options"},"batch":{"type":"object","properties":{"maxEvents":{"type":"number","format":"float","description":"The max number of events in a batch before sending","example":"10","default":"20"},"maxBytes":{"type":"number","format":"float","description":"The max size of a batch in bytes before sending","example":"1e+7"}},"additionalProperties":false},"auth":{"oneOf":[{"type":"object","properties":{"strategy":{"type":"string","enum":["none"],"description":"No authentication strategy","example":"none"}},"required":["strategy"],"additionalProperties":false,"description":"No authentication strategy"},{"type":"object","properties":{"strategy":{"type":"string","enum":["basic"],"description":"Basic HTTP authentication strategy.","example":"basic"},"user":{"type":"string","description":"Username for basic http authentication.","example":"my-user"},"password":{"type":"string","description":"Password for basic http authentication.","example":"secret-password"}},"required":["strategy","password"],"additionalProperties":false,"description":"Authenticate with a basic http strategy."},{"type":"object","properties":{"strategy":{"type":"string","enum":["bearer"],"description":"Bearer token authentication strategy.","example":"bearer"},"token":{"type":"string","description":"Token for bearer token authentication.","example":"my-token"}},"required":["strategy"],"additionalProperties":false,"description":"Authenticate with a bearer token strategy."}],"description":"Auth information."},"framing":{"type":"object","properties":{"method":{"type":"string","enum":["none","newline","length"],"default":"none"}},"additionalProperties":false}},"required":["uri","encoding","auth"],"additionalProperties":false,"description":"Details about the HTTP log sink.","default":{"method":"none"}}},"required":["name","sinkType","sinkData"],"additionalProperties":false,"description":"Create a log sink using HTTP"},{"type":"object","properties":{"name":{"type":"string","description":"Name of the log sink.","example":"example-log-sink"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"Description of the log sink.","example":"This is an example log sink."},"restricted":{"type":"boolean","description":"If `true`, only logs from the projects in `projects` will be sent to the log sink.","example":true,"default":false},"projects":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The ID of a project.","example":"default-project"},"description":"If `restricted` is `true`, only logs from these projects will be sent to the log sink.","default":[]},"restrictions":{"type":"object","properties":{"tags":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether restriction by tag should be enabled.","example":false},"items":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"matchCondition":{"type":"string","enum":["and","or"],"description":"If all or any of the tags must be present on the target for it to match the condition.","example":"or"}},"additionalProperties":false,"description":"Configuration of tag restriction settings."}},"additionalProperties":false,"description":"Configuration of restrictions."},"options":{"type":"object","properties":{"useCustomLabels":{"type":"boolean","description":"If `true`, we will do additional parsing on your JSON formatted log lines and your extract custom labels","example":true},"forwardCdnLogs":{"type":"boolean","description":"Forward CDN logs from your workloads","example":true},"forwardIngressLogs":{"type":"boolean","description":"Forward ingress logs from your workloads","example":true},"forwardMeshLogs":{"type":"boolean","description":"Forward mesh logs from your workloads","example":true}},"additionalProperties":false},"sinkType":{"type":"string","enum":["logdna"],"description":"The type of the log sink.","example":"logdna"},"sinkData":{"type":"object","properties":{"api_key":{"type":"string","description":"Ingestion Key","example":"b1dd3feb585asd1a3e9edpo9kmn5e590hg9"}},"required":["api_key"],"additionalProperties":false,"description":"Details about the LogDNA log sink."}},"required":["name","sinkType","sinkData"],"additionalProperties":false,"description":"Create a log sink using LogDNA"},{"type":"object","properties":{"name":{"type":"string","description":"Name of the log sink.","example":"example-log-sink"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"Description of the log sink.","example":"This is an example log sink."},"restricted":{"type":"boolean","description":"If `true`, only logs from the projects in `projects` will be sent to the log sink.","example":true,"default":false},"projects":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The ID of a project.","example":"default-project"},"description":"If `restricted` is `true`, only logs from these projects will be sent to the log sink.","default":[]},"restrictions":{"type":"object","properties":{"tags":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether restriction by tag should be enabled.","example":false},"items":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"matchCondition":{"type":"string","enum":["and","or"],"description":"If all or any of the tags must be present on the target for it to match the condition.","example":"or"}},"additionalProperties":false,"description":"Configuration of tag restriction settings."}},"additionalProperties":false,"description":"Configuration of restrictions."},"options":{"type":"object","properties":{"useCustomLabels":{"type":"boolean","description":"If `true`, we will do additional parsing on your JSON formatted log lines and your extract custom labels","example":true},"forwardCdnLogs":{"type":"boolean","description":"Forward CDN logs from your workloads","example":true},"forwardIngressLogs":{"type":"boolean","description":"Forward ingress logs from your workloads","example":true},"forwardMeshLogs":{"type":"boolean","description":"Forward mesh logs from your workloads","example":true}},"additionalProperties":false},"sinkType":{"type":"string","enum":["betterStack"],"description":"The type of the log sink.","example":"betterStack"},"sinkData":{"type":"object","properties":{"token":{"type":"string","description":"Better Stack Source Token","example":"vhnqrLygVQ5GnSQUTZamKvAq"},"uri":{"type":"string","description":"Better stack ingestion host","example":"abc123.eu-nbg-2.betterstackdata.com"}},"required":["token","uri"],"additionalProperties":false,"description":"Details about the Better Stack log sink."}},"required":["name","sinkType","sinkData"],"additionalProperties":false,"description":"Create a log sink using Better Stack"},{"type":"object","properties":{"name":{"type":"string","description":"Name of the log sink.","example":"example-log-sink"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"Description of the log sink.","example":"This is an example log sink."},"restricted":{"type":"boolean","description":"If `true`, only logs from the projects in `projects` will be sent to the log sink.","example":true,"default":false},"projects":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The ID of a project.","example":"default-project"},"description":"If `restricted` is `true`, only logs from these projects will be sent to the log sink.","default":[]},"restrictions":{"type":"object","properties":{"tags":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether restriction by tag should be enabled.","example":false},"items":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"matchCondition":{"type":"string","enum":["and","or"],"description":"If all or any of the tags must be present on the target for it to match the condition.","example":"or"}},"additionalProperties":false,"description":"Configuration of tag restriction settings."}},"additionalProperties":false,"description":"Configuration of restrictions."},"options":{"type":"object","properties":{"useCustomLabels":{"type":"boolean","description":"If `true`, we will do additional parsing on your JSON formatted log lines and your extract custom labels","example":true},"forwardCdnLogs":{"type":"boolean","description":"Forward CDN logs from your workloads","example":true},"forwardIngressLogs":{"type":"boolean","description":"Forward ingress logs from your workloads","example":true},"forwardMeshLogs":{"type":"boolean","description":"Forward mesh logs from your workloads","example":true}},"additionalProperties":false},"sinkType":{"type":"string","enum":["honeycomb"],"description":"The type of the log sink.","example":"honeycomb"},"sinkData":{"type":"object","properties":{"api_key":{"type":"string","description":"Honeycomb API Key","example":"b1dd3feb585asd1a3e9"},"dataset":{"type":"string","description":"Name of the dataset","example":"staging-logs"}},"required":["api_key","dataset"],"additionalProperties":false,"description":"Details about the Honeycomb log sink."}},"required":["name","sinkType","sinkData"],"additionalProperties":false,"description":"Create a log sink using Honeycomb"},{"type":"object","properties":{"name":{"type":"string","description":"Name of the log sink.","example":"example-log-sink"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"Description of the log sink.","example":"This is an example log sink."},"restricted":{"type":"boolean","description":"If `true`, only logs from the projects in `projects` will be sent to the log sink.","example":true,"default":false},"projects":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The ID of a project.","example":"default-project"},"description":"If `restricted` is `true`, only logs from these projects will be sent to the log sink.","default":[]},"restrictions":{"type":"object","properties":{"tags":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether restriction by tag should be enabled.","example":false},"items":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"matchCondition":{"type":"string","enum":["and","or"],"description":"If all or any of the tags must be present on the target for it to match the condition.","example":"or"}},"additionalProperties":false,"description":"Configuration of tag restriction settings."}},"additionalProperties":false,"description":"Configuration of restrictions."},"options":{"type":"object","properties":{"useCustomLabels":{"type":"boolean","description":"If `true`, we will do additional parsing on your JSON formatted log lines and your extract custom labels","example":true},"forwardCdnLogs":{"type":"boolean","description":"Forward CDN logs from your workloads","example":true},"forwardIngressLogs":{"type":"boolean","description":"Forward ingress logs from your workloads","example":true},"forwardMeshLogs":{"type":"boolean","description":"Forward mesh logs from your workloads","example":true}},"additionalProperties":false},"sinkType":{"type":"string","enum":["logzio"],"description":"The type of the log sink.","example":"logzio"},"sinkData":{"type":"object","properties":{"region":{"type":"string","enum":["eu","uk","us","ca","au","nl","wa"],"description":"Your Logzio region code","example":"eu"},"token":{"type":"string","description":"The Log Shipping Token of the account you want to ship to","example":"sNFijNFgNFoNFrMsNFbNFObNFcgNFqoa"}},"required":["region","token"],"additionalProperties":false,"description":"Details about the Logz.io log sink."}},"required":["name","sinkType","sinkData"],"additionalProperties":false,"description":"Create a log sink using Logz.io"},{"type":"object","properties":{"name":{"type":"string","description":"Name of the log sink.","example":"example-log-sink"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"Description of the log sink.","example":"This is an example log sink."},"restricted":{"type":"boolean","description":"If `true`, only logs from the projects in `projects` will be sent to the log sink.","example":true,"default":false},"projects":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The ID of a project.","example":"default-project"},"description":"If `restricted` is `true`, only logs from these projects will be sent to the log sink.","default":[]},"restrictions":{"type":"object","properties":{"tags":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether restriction by tag should be enabled.","example":false},"items":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"matchCondition":{"type":"string","enum":["and","or"],"description":"If all or any of the tags must be present on the target for it to match the condition.","example":"or"}},"additionalProperties":false,"description":"Configuration of tag restriction settings."}},"additionalProperties":false,"description":"Configuration of restrictions."},"options":{"type":"object","properties":{"useCustomLabels":{"type":"boolean","description":"If `true`, we will do additional parsing on your JSON formatted log lines and your extract custom labels","example":true},"forwardCdnLogs":{"type":"boolean","description":"Forward CDN logs from your workloads","example":true},"forwardIngressLogs":{"type":"boolean","description":"Forward ingress logs from your workloads","example":true},"forwardMeshLogs":{"type":"boolean","description":"Forward mesh logs from your workloads","example":true}},"additionalProperties":false},"sinkType":{"type":"string","enum":["solarWinds"],"description":"The type of the log sink.","example":"solarWinds"},"sinkData":{"type":"object","properties":{"api_key":{"type":"string","description":"Solar Winds API Key","example":"Tr8BIEmYx1fuM3_XRMwU3xXEFnD20p9NFkRIu1COrDqMCM4g86qWZgVdgs1Y7mzWtFMI0Zc"},"encoding":{"type":"object","properties":{"codec":{"type":"string","enum":["text","json"],"description":"Codec to encode logs in","example":"json"}},"required":["codec"],"additionalProperties":false},"endpointType":{"type":"string","enum":["unitary","bulk"],"description":"Solar Winds endpoint type"}},"required":["api_key","endpointType"],"additionalProperties":false,"description":"Details about the Solar Winds log sink."}},"required":["name","sinkType","sinkData"],"additionalProperties":false,"description":"Create a log sink using Solar Winds"},{"type":"object","properties":{"name":{"type":"string","description":"Name of the log sink.","example":"example-log-sink"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"Description of the log sink.","example":"This is an example log sink."},"restricted":{"type":"boolean","description":"If `true`, only logs from the projects in `projects` will be sent to the log sink.","example":true,"default":false},"projects":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The ID of a project.","example":"default-project"},"description":"If `restricted` is `true`, only logs from these projects will be sent to the log sink.","default":[]},"restrictions":{"type":"object","properties":{"tags":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether restriction by tag should be enabled.","example":false},"items":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"matchCondition":{"type":"string","enum":["and","or"],"description":"If all or any of the tags must be present on the target for it to match the condition.","example":"or"}},"additionalProperties":false,"description":"Configuration of tag restriction settings."}},"additionalProperties":false,"description":"Configuration of restrictions."},"options":{"type":"object","properties":{"useCustomLabels":{"type":"boolean","description":"If `true`, we will do additional parsing on your JSON formatted log lines and your extract custom labels","example":true},"forwardCdnLogs":{"type":"boolean","description":"Forward CDN logs from your workloads","example":true},"forwardIngressLogs":{"type":"boolean","description":"Forward ingress logs from your workloads","example":true},"forwardMeshLogs":{"type":"boolean","description":"Forward mesh logs from your workloads","example":true}},"additionalProperties":false},"sinkType":{"type":"string","enum":["axiom"],"description":"The type of the log sink.","example":"axiom"},"sinkData":{"type":"object","properties":{"dataset":{"type":"string","description":"Name of the data","example":"staging"},"token":{"type":"string","description":"Axiom API/Personal token","example":"b1dd3feb585asd1a3e9edpo9kmn5e590hg9"},"tokenType":{"type":"string","enum":["personal","api"],"description":"Using a personal token","example":"api"},"orgId":{"type":"string","description":"The ID of the organisation, required if using a personal token"},"url":{"type":"string","description":"The Axiom url to use. Only change if self hosting axiom.","default":"https://api.axiom.co"}},"required":["dataset","token","tokenType"],"additionalProperties":false,"description":"Details about the Axiom log sink."}},"required":["name","sinkType","sinkData"],"additionalProperties":false,"description":"Create a log sink using Axiom"},{"type":"object","properties":{"name":{"type":"string","description":"Name of the log sink.","example":"example-log-sink"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"Description of the log sink.","example":"This is an example log sink."},"restricted":{"type":"boolean","description":"If `true`, only logs from the projects in `projects` will be sent to the log sink.","example":true,"default":false},"projects":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The ID of a project.","example":"default-project"},"description":"If `restricted` is `true`, only logs from these projects will be sent to the log sink.","default":[]},"restrictions":{"type":"object","properties":{"tags":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether restriction by tag should be enabled.","example":false},"items":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"matchCondition":{"type":"string","enum":["and","or"],"description":"If all or any of the tags must be present on the target for it to match the condition.","example":"or"}},"additionalProperties":false,"description":"Configuration of tag restriction settings."}},"additionalProperties":false,"description":"Configuration of restrictions."},"options":{"type":"object","properties":{"useCustomLabels":{"type":"boolean","description":"If `true`, we will do additional parsing on your JSON formatted log lines and your extract custom labels","example":true},"forwardCdnLogs":{"type":"boolean","description":"Forward CDN logs from your workloads","example":true},"forwardIngressLogs":{"type":"boolean","description":"Forward ingress logs from your workloads","example":true},"forwardMeshLogs":{"type":"boolean","description":"Forward mesh logs from your workloads","example":true}},"additionalProperties":false},"sinkType":{"type":"string","enum":["newRelic"],"description":"The type of the log sink.","example":"newRelic"},"sinkData":{"type":"object","properties":{"accountId":{"type":"string","description":"New Relic Account ID","example":"b1dd3feb585asd1a3e9"},"licenseKey":{"type":"string","description":"New Relic License Key","example":"b1dd3feb585asd1a3e9"},"region":{"type":"string","enum":["eu","us"],"example":"eu"}},"required":["accountId","licenseKey","region"],"additionalProperties":false,"description":"Details about the New Relic log sink."}},"required":["name","sinkType","sinkData"],"additionalProperties":false,"description":"Create a log sink using New Relic"}],"description":"Create a log sink"}}},"required":true},"x-nf-permission-required":"Account > Sinks > General > Create","x-nf-team-scoped":true,"x-nf-cli-command":["create","log-sink"]},"v1-integrations-log-sinks--logSinkId--get":{"operationId":"getIntegrationsLogSinksLogsinkid","summary":"Get log sink details","description":"Gets details about a given log sink.","parameters":[{"name":"logSinkId","type":"string","required":true,"description":"ID of the log sink","example":"example-log-sink","in":"path","schema":{"name":"logSinkId","type":"string","required":true,"description":"ID of the log sink","example":"example-log-sink","in":"path"}}],"responses":{"200":{"description":"Details about a log sink.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"name":{"type":"string","description":"Name of the log sink.","example":"example-log-sink"},"id":{"type":"string","description":"Identifier for the Log Sink","example":"example-project"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"Description of the log sink.","example":"This is an example log sink."},"restricted":{"type":"boolean","description":"If `true`, only logs from the projects in `projects` will be sent to the log sink.","example":true},"projects":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The ID of a project.","example":"default-project"},"description":"If `restricted` is `true`, only logs from these projects will be sent to the log sink."},"status":{"type":"string","enum":["paused","running","failing","creating"],"description":"Current status of the log sink"},"options":{"type":"object","properties":{"useCustomLabels":{"type":"boolean","description":"If `true`, we will do additional parsing on your JSON formatted log lines and your extract custom labels","example":true},"forwardCdnLogs":{"type":"boolean","description":"Forward CDN logs from your workloads","example":true},"forwardIngressLogs":{"type":"boolean","description":"Forward ingress logs from your workloads","example":true},"forwardMeshLogs":{"type":"boolean","description":"Forward mesh logs from your workloads","example":true}},"additionalProperties":false},"sinkType":{"type":"string","enum":["loki","datadog_logs","papertrail","http","aws_s3","logdna","coralogix","betterStack","honeycomb","logzio","solarWinds","axiom","newRelic"],"description":"The type of the log sink.","examples":["http","loki"]},"createdAt":{"type":"string","format":"date-time","description":"Timestamp of when the log sink was created.","example":"2022-06-14 15:10:42.842Z"},"updatedAt":{"type":"string","format":"date-time","description":"Timestamp of when the log sink was last updated.","example":"2022-06-14 15:10:42.842Z"},"sinkData":{"oneOf":[{"type":"object","properties":{"endpoint":{"type":"string","description":"The endpoint of the Loki log sink.","example":"https://logs.example.com"},"encoding":{"type":"object","properties":{"codec":{"type":"string","enum":["text","json"],"description":"Codec to encode logs in","example":"json"}},"required":["codec"],"additionalProperties":false,"description":"Encoding options"},"auth":{"type":"object","properties":{"strategy":{"type":"string","enum":["basic"],"description":"The authentication strategy.","example":"basic"},"user":{"type":"string","description":"The username for the log sink.","example":"admin"},"password":{"type":"string","description":"The password for the log sink.","example":"password1234"}},"additionalProperties":false,"description":"Object containing authentication data for the log sink."}},"required":["endpoint"],"additionalProperties":false,"description":"Details about the Loki log sink.","x-required":true},{"type":"object","properties":{"default_api_key":{"type":"string","description":"The Datadog API key.","example":"abcdef12345678900000000000000000"},"region":{"type":"string","enum":["eu","us","us3","us5"],"description":"The Datadog region.","example":"eu"}},"required":["default_api_key","region"],"additionalProperties":false,"description":"Details about the Datadog log sink.","x-required":true},{"oneOf":[{"type":"object","properties":{"authenticationStrategy":{"type":"string","enum":["port"],"description":"The authentication strategy.","example":"port"},"host":{"type":"string","description":"The host for the Papertrail log destination.","example":"logs1.papertrailapp.com:"},"port":{"type":"number","format":"float","description":"The port for the Papertrail log destination.","example":8000}},"required":["authenticationStrategy","host","port"],"additionalProperties":false,"description":"Authenticate with a host/port"},{"type":"object","properties":{"authenticationStrategy":{"type":"string","enum":["token"],"description":"The authentication strategy.","example":"token"},"uri":{"type":"string","description":"The uri for the Papertrail log destination.","example":"https://logs.collector.solarwinds.com/v1/log"},"token":{"type":"string","description":"The HTTP Token for the Papertrail log destination.","example":"123abcdefghijklmnopqrstuvwxy"}},"required":["authenticationStrategy","uri","token"],"additionalProperties":false,"description":"Authenticate with a token."}],"description":"Papertrail Sink Schema.","x-required":true},{"type":"object","properties":{"endpoint":{"type":"string","description":"Endpoint for the AWS S3 or compatible API bucket.","example":"my.bucket.com"},"region":{"type":"string","enum":["eu-west-1","eu-west-2","eu-west-3","eu-central-1","eu-south-1","eu-north-1","us-west-1","us-west-2","us-east-1","us-east2"],"description":"Region of the S3 bucket.","example":"eu-west-2"},"auth":{"type":"object","properties":{"accessKeyId":{"type":"string","description":"Access key id for the bucket.","example":"PMSACIHNUIASDBWQDS"},"secretAccessKey":{"type":"string","description":"Secret access key for the bucket.","example":"HA1PLMNOEAEYUHAJQMSDUJQS"}},"required":["accessKeyId","secretAccessKey"],"additionalProperties":false,"description":"Authentication object."},"bucket":{"type":"string","description":"Name of the S3 Bucket.","example":"northflank-logs"},"compression":{"type":"string","enum":["gzip","none"],"description":"Log file compression method.","example":"gzip"}},"required":["endpoint","region","bucket","compression"],"additionalProperties":false,"description":"Details about the AWS S3 log sink.","x-required":true},{"type":"object","properties":{"uri":{"type":"string","description":"Uri to send logs to.","example":"my.log-collector.com"},"encoding":{"type":"object","properties":{"codec":{"type":"string","enum":["text","json"],"description":"Codec to encode logs in","example":"json"}},"required":["codec"],"additionalProperties":false,"description":"Encoding options"},"batch":{"type":"object","properties":{"maxEvents":{"type":"number","format":"float","description":"The max number of events in a batch before sending","example":"10","default":"20"},"maxBytes":{"type":"number","format":"float","description":"The max size of a batch in bytes before sending","example":"1e+7"}},"additionalProperties":false},"auth":{"oneOf":[{"type":"object","properties":{"strategy":{"type":"string","enum":["none"],"description":"No authentication strategy","example":"none"}},"required":["strategy"],"additionalProperties":false,"description":"No authentication strategy"},{"type":"object","properties":{"strategy":{"type":"string","enum":["basic"],"description":"Basic HTTP authentication strategy.","example":"basic"},"user":{"type":"string","description":"Username for basic http authentication.","example":"my-user"},"password":{"type":"string","description":"Password for basic http authentication.","example":"secret-password"}},"required":["strategy","password"],"additionalProperties":false,"description":"Authenticate with a basic http strategy."},{"type":"object","properties":{"strategy":{"type":"string","enum":["bearer"],"description":"Bearer token authentication strategy.","example":"bearer"},"token":{"type":"string","description":"Token for bearer token authentication.","example":"my-token"}},"required":["strategy"],"additionalProperties":false,"description":"Authenticate with a bearer token strategy."}],"description":"Auth information."},"framing":{"type":"object","properties":{"method":{"type":"string","enum":["none","newline","length"],"default":"none"}},"additionalProperties":false}},"required":["uri","encoding","auth"],"additionalProperties":false,"description":"Details about the HTTP log sink.","default":{"method":"none"},"x-required":true},{"type":"object","properties":{"api_key":{"type":"string","description":"Ingestion Key","example":"b1dd3feb585asd1a3e9edpo9kmn5e590hg9"}},"required":["api_key"],"additionalProperties":false,"description":"Details about the LogDNA log sink.","x-required":true},{"type":"object","properties":{"token":{"type":"string","description":"Better Stack Source Token","example":"vhnqrLygVQ5GnSQUTZamKvAq"},"uri":{"type":"string","description":"Better stack ingestion host","example":"abc123.eu-nbg-2.betterstackdata.com"}},"required":["token","uri"],"additionalProperties":false,"description":"Details about the Better Stack log sink.","x-required":true},{"type":"object","properties":{"api_key":{"type":"string","description":"Honeycomb API Key","example":"b1dd3feb585asd1a3e9"},"dataset":{"type":"string","description":"Name of the dataset","example":"staging-logs"}},"required":["api_key","dataset"],"additionalProperties":false,"description":"Details about the Honeycomb log sink.","x-required":true},{"type":"object","properties":{"region":{"type":"string","enum":["eu","uk","us","ca","au","nl","wa"],"description":"Your Logzio region code","example":"eu"},"token":{"type":"string","description":"The Log Shipping Token of the account you want to ship to","example":"sNFijNFgNFoNFrMsNFbNFObNFcgNFqoa"}},"required":["region","token"],"additionalProperties":false,"description":"Details about the Logz.io log sink.","x-required":true},{"type":"object","properties":{"api_key":{"type":"string","description":"Solar Winds API Key","example":"Tr8BIEmYx1fuM3_XRMwU3xXEFnD20p9NFkRIu1COrDqMCM4g86qWZgVdgs1Y7mzWtFMI0Zc"},"encoding":{"type":"object","properties":{"codec":{"type":"string","enum":["text","json"],"description":"Codec to encode logs in","example":"json"}},"required":["codec"],"additionalProperties":false},"endpointType":{"type":"string","enum":["unitary","bulk"],"description":"Solar Winds endpoint type"}},"required":["api_key","endpointType"],"additionalProperties":false,"description":"Details about the Solar Winds log sink.","x-required":true},{"type":"object","properties":{"dataset":{"type":"string","description":"Name of the data","example":"staging"},"token":{"type":"string","description":"Axiom API/Personal token","example":"b1dd3feb585asd1a3e9edpo9kmn5e590hg9"},"tokenType":{"type":"string","enum":["personal","api"],"description":"Using a personal token","example":"api"},"orgId":{"type":"string","description":"The ID of the organisation, required if using a personal token"},"url":{"type":"string","description":"The Axiom url to use. Only change if self hosting axiom.","default":"https://api.axiom.co"}},"required":["dataset","token","tokenType"],"additionalProperties":false,"description":"Details about the Axiom log sink.","x-required":true},{"type":"object","properties":{"accountId":{"type":"string","description":"New Relic Account ID","example":"b1dd3feb585asd1a3e9"},"licenseKey":{"type":"string","description":"New Relic License Key","example":"b1dd3feb585asd1a3e9"},"region":{"type":"string","enum":["eu","us"],"example":"eu"}},"required":["accountId","licenseKey","region"],"additionalProperties":false,"description":"Details about the New Relic log sink.","x-required":true}],"description":"Data about the log sink."}},"required":["name","id","restricted","projects","status","sinkType","createdAt","updatedAt"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Integrations"],"security":[],"x-nf-permission-required":"Account > Sinks > General > Read","x-nf-team-scoped":true,"x-nf-cli-command":["get","log-sink"]},"v1-integrations-log-sinks--logSinkId--get-team-scoped":{"operationId":"getIntegrationsLogSinksLogsinkid","summary":"Get log sink details","description":"Gets details about a given log sink.","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"logSinkId","type":"string","required":true,"description":"ID of the log sink","example":"example-log-sink","in":"path","schema":{"name":"logSinkId","type":"string","required":true,"description":"ID of the log sink","example":"example-log-sink","in":"path"}}],"responses":{"200":{"description":"Details about a log sink.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"name":{"type":"string","description":"Name of the log sink.","example":"example-log-sink"},"id":{"type":"string","description":"Identifier for the Log Sink","example":"example-project"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"Description of the log sink.","example":"This is an example log sink."},"restricted":{"type":"boolean","description":"If `true`, only logs from the projects in `projects` will be sent to the log sink.","example":true},"projects":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The ID of a project.","example":"default-project"},"description":"If `restricted` is `true`, only logs from these projects will be sent to the log sink."},"status":{"type":"string","enum":["paused","running","failing","creating"],"description":"Current status of the log sink"},"options":{"type":"object","properties":{"useCustomLabels":{"type":"boolean","description":"If `true`, we will do additional parsing on your JSON formatted log lines and your extract custom labels","example":true},"forwardCdnLogs":{"type":"boolean","description":"Forward CDN logs from your workloads","example":true},"forwardIngressLogs":{"type":"boolean","description":"Forward ingress logs from your workloads","example":true},"forwardMeshLogs":{"type":"boolean","description":"Forward mesh logs from your workloads","example":true}},"additionalProperties":false},"sinkType":{"type":"string","enum":["loki","datadog_logs","papertrail","http","aws_s3","logdna","coralogix","betterStack","honeycomb","logzio","solarWinds","axiom","newRelic"],"description":"The type of the log sink.","examples":["http","loki"]},"createdAt":{"type":"string","format":"date-time","description":"Timestamp of when the log sink was created.","example":"2022-06-14 15:10:42.842Z"},"updatedAt":{"type":"string","format":"date-time","description":"Timestamp of when the log sink was last updated.","example":"2022-06-14 15:10:42.842Z"},"sinkData":{"oneOf":[{"type":"object","properties":{"endpoint":{"type":"string","description":"The endpoint of the Loki log sink.","example":"https://logs.example.com"},"encoding":{"type":"object","properties":{"codec":{"type":"string","enum":["text","json"],"description":"Codec to encode logs in","example":"json"}},"required":["codec"],"additionalProperties":false,"description":"Encoding options"},"auth":{"type":"object","properties":{"strategy":{"type":"string","enum":["basic"],"description":"The authentication strategy.","example":"basic"},"user":{"type":"string","description":"The username for the log sink.","example":"admin"},"password":{"type":"string","description":"The password for the log sink.","example":"password1234"}},"additionalProperties":false,"description":"Object containing authentication data for the log sink."}},"required":["endpoint"],"additionalProperties":false,"description":"Details about the Loki log sink.","x-required":true},{"type":"object","properties":{"default_api_key":{"type":"string","description":"The Datadog API key.","example":"abcdef12345678900000000000000000"},"region":{"type":"string","enum":["eu","us","us3","us5"],"description":"The Datadog region.","example":"eu"}},"required":["default_api_key","region"],"additionalProperties":false,"description":"Details about the Datadog log sink.","x-required":true},{"oneOf":[{"type":"object","properties":{"authenticationStrategy":{"type":"string","enum":["port"],"description":"The authentication strategy.","example":"port"},"host":{"type":"string","description":"The host for the Papertrail log destination.","example":"logs1.papertrailapp.com:"},"port":{"type":"number","format":"float","description":"The port for the Papertrail log destination.","example":8000}},"required":["authenticationStrategy","host","port"],"additionalProperties":false,"description":"Authenticate with a host/port"},{"type":"object","properties":{"authenticationStrategy":{"type":"string","enum":["token"],"description":"The authentication strategy.","example":"token"},"uri":{"type":"string","description":"The uri for the Papertrail log destination.","example":"https://logs.collector.solarwinds.com/v1/log"},"token":{"type":"string","description":"The HTTP Token for the Papertrail log destination.","example":"123abcdefghijklmnopqrstuvwxy"}},"required":["authenticationStrategy","uri","token"],"additionalProperties":false,"description":"Authenticate with a token."}],"description":"Papertrail Sink Schema.","x-required":true},{"type":"object","properties":{"endpoint":{"type":"string","description":"Endpoint for the AWS S3 or compatible API bucket.","example":"my.bucket.com"},"region":{"type":"string","enum":["eu-west-1","eu-west-2","eu-west-3","eu-central-1","eu-south-1","eu-north-1","us-west-1","us-west-2","us-east-1","us-east2"],"description":"Region of the S3 bucket.","example":"eu-west-2"},"auth":{"type":"object","properties":{"accessKeyId":{"type":"string","description":"Access key id for the bucket.","example":"PMSACIHNUIASDBWQDS"},"secretAccessKey":{"type":"string","description":"Secret access key for the bucket.","example":"HA1PLMNOEAEYUHAJQMSDUJQS"}},"required":["accessKeyId","secretAccessKey"],"additionalProperties":false,"description":"Authentication object."},"bucket":{"type":"string","description":"Name of the S3 Bucket.","example":"northflank-logs"},"compression":{"type":"string","enum":["gzip","none"],"description":"Log file compression method.","example":"gzip"}},"required":["endpoint","region","bucket","compression"],"additionalProperties":false,"description":"Details about the AWS S3 log sink.","x-required":true},{"type":"object","properties":{"uri":{"type":"string","description":"Uri to send logs to.","example":"my.log-collector.com"},"encoding":{"type":"object","properties":{"codec":{"type":"string","enum":["text","json"],"description":"Codec to encode logs in","example":"json"}},"required":["codec"],"additionalProperties":false,"description":"Encoding options"},"batch":{"type":"object","properties":{"maxEvents":{"type":"number","format":"float","description":"The max number of events in a batch before sending","example":"10","default":"20"},"maxBytes":{"type":"number","format":"float","description":"The max size of a batch in bytes before sending","example":"1e+7"}},"additionalProperties":false},"auth":{"oneOf":[{"type":"object","properties":{"strategy":{"type":"string","enum":["none"],"description":"No authentication strategy","example":"none"}},"required":["strategy"],"additionalProperties":false,"description":"No authentication strategy"},{"type":"object","properties":{"strategy":{"type":"string","enum":["basic"],"description":"Basic HTTP authentication strategy.","example":"basic"},"user":{"type":"string","description":"Username for basic http authentication.","example":"my-user"},"password":{"type":"string","description":"Password for basic http authentication.","example":"secret-password"}},"required":["strategy","password"],"additionalProperties":false,"description":"Authenticate with a basic http strategy."},{"type":"object","properties":{"strategy":{"type":"string","enum":["bearer"],"description":"Bearer token authentication strategy.","example":"bearer"},"token":{"type":"string","description":"Token for bearer token authentication.","example":"my-token"}},"required":["strategy"],"additionalProperties":false,"description":"Authenticate with a bearer token strategy."}],"description":"Auth information."},"framing":{"type":"object","properties":{"method":{"type":"string","enum":["none","newline","length"],"default":"none"}},"additionalProperties":false}},"required":["uri","encoding","auth"],"additionalProperties":false,"description":"Details about the HTTP log sink.","default":{"method":"none"},"x-required":true},{"type":"object","properties":{"api_key":{"type":"string","description":"Ingestion Key","example":"b1dd3feb585asd1a3e9edpo9kmn5e590hg9"}},"required":["api_key"],"additionalProperties":false,"description":"Details about the LogDNA log sink.","x-required":true},{"type":"object","properties":{"token":{"type":"string","description":"Better Stack Source Token","example":"vhnqrLygVQ5GnSQUTZamKvAq"},"uri":{"type":"string","description":"Better stack ingestion host","example":"abc123.eu-nbg-2.betterstackdata.com"}},"required":["token","uri"],"additionalProperties":false,"description":"Details about the Better Stack log sink.","x-required":true},{"type":"object","properties":{"api_key":{"type":"string","description":"Honeycomb API Key","example":"b1dd3feb585asd1a3e9"},"dataset":{"type":"string","description":"Name of the dataset","example":"staging-logs"}},"required":["api_key","dataset"],"additionalProperties":false,"description":"Details about the Honeycomb log sink.","x-required":true},{"type":"object","properties":{"region":{"type":"string","enum":["eu","uk","us","ca","au","nl","wa"],"description":"Your Logzio region code","example":"eu"},"token":{"type":"string","description":"The Log Shipping Token of the account you want to ship to","example":"sNFijNFgNFoNFrMsNFbNFObNFcgNFqoa"}},"required":["region","token"],"additionalProperties":false,"description":"Details about the Logz.io log sink.","x-required":true},{"type":"object","properties":{"api_key":{"type":"string","description":"Solar Winds API Key","example":"Tr8BIEmYx1fuM3_XRMwU3xXEFnD20p9NFkRIu1COrDqMCM4g86qWZgVdgs1Y7mzWtFMI0Zc"},"encoding":{"type":"object","properties":{"codec":{"type":"string","enum":["text","json"],"description":"Codec to encode logs in","example":"json"}},"required":["codec"],"additionalProperties":false},"endpointType":{"type":"string","enum":["unitary","bulk"],"description":"Solar Winds endpoint type"}},"required":["api_key","endpointType"],"additionalProperties":false,"description":"Details about the Solar Winds log sink.","x-required":true},{"type":"object","properties":{"dataset":{"type":"string","description":"Name of the data","example":"staging"},"token":{"type":"string","description":"Axiom API/Personal token","example":"b1dd3feb585asd1a3e9edpo9kmn5e590hg9"},"tokenType":{"type":"string","enum":["personal","api"],"description":"Using a personal token","example":"api"},"orgId":{"type":"string","description":"The ID of the organisation, required if using a personal token"},"url":{"type":"string","description":"The Axiom url to use. Only change if self hosting axiom.","default":"https://api.axiom.co"}},"required":["dataset","token","tokenType"],"additionalProperties":false,"description":"Details about the Axiom log sink.","x-required":true},{"type":"object","properties":{"accountId":{"type":"string","description":"New Relic Account ID","example":"b1dd3feb585asd1a3e9"},"licenseKey":{"type":"string","description":"New Relic License Key","example":"b1dd3feb585asd1a3e9"},"region":{"type":"string","enum":["eu","us"],"example":"eu"}},"required":["accountId","licenseKey","region"],"additionalProperties":false,"description":"Details about the New Relic log sink.","x-required":true}],"description":"Data about the log sink."}},"required":["name","id","restricted","projects","status","sinkType","createdAt","updatedAt"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Integrations","team"],"security":[],"x-nf-permission-required":"Account > Sinks > General > Read","x-nf-team-scoped":true,"x-nf-cli-command":["get","log-sink"]},"v1-integrations-log-sinks--logSinkId--delete":{"operationId":"deleteIntegrationsLogSinksLogsinkid","summary":"Delete log sink","description":"Deletes a log sink.","parameters":[{"name":"logSinkId","type":"string","required":true,"description":"ID of the log sink","example":"example-log-sink","in":"path","schema":{"name":"logSinkId","type":"string","required":true,"description":"ID of the log sink","example":"example-log-sink","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Integrations"],"security":[],"x-nf-permission-required":"Account > Sinks > General > Delete","x-nf-team-scoped":true,"x-nf-cli-command":["delete","log-sink"]},"v1-integrations-log-sinks--logSinkId--delete-team-scoped":{"operationId":"deleteIntegrationsLogSinksLogsinkid","summary":"Delete log sink","description":"Deletes a log sink.","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"logSinkId","type":"string","required":true,"description":"ID of the log sink","example":"example-log-sink","in":"path","schema":{"name":"logSinkId","type":"string","required":true,"description":"ID of the log sink","example":"example-log-sink","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Integrations","team"],"security":[],"x-nf-permission-required":"Account > Sinks > General > Delete","x-nf-team-scoped":true,"x-nf-cli-command":["delete","log-sink"]},"v1-integrations-log-sinks--logSinkId--pause-post":{"operationId":"postIntegrationsLogSinksLogsinkidPause","summary":"Pause log sink","description":"Pauses a given log sink.","parameters":[{"name":"logSinkId","type":"string","required":true,"description":"ID of the log sink","example":"example-log-sink","in":"path","schema":{"name":"logSinkId","type":"string","required":true,"description":"ID of the log sink","example":"example-log-sink","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Integrations"],"security":[],"x-nf-permission-required":"Account > Sinks > General > Update","x-nf-team-scoped":true,"x-nf-cli-command":["pause","log-sink"]},"v1-integrations-log-sinks--logSinkId--pause-post-team-scoped":{"operationId":"postIntegrationsLogSinksLogsinkidPause","summary":"Pause log sink","description":"Pauses a given log sink.","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"logSinkId","type":"string","required":true,"description":"ID of the log sink","example":"example-log-sink","in":"path","schema":{"name":"logSinkId","type":"string","required":true,"description":"ID of the log sink","example":"example-log-sink","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Integrations","team"],"security":[],"x-nf-permission-required":"Account > Sinks > General > Update","x-nf-team-scoped":true,"x-nf-cli-command":["pause","log-sink"]},"v1-integrations-log-sinks--logSinkId--resume-post":{"operationId":"postIntegrationsLogSinksLogsinkidResume","summary":"Resume log sink","description":"Resumes a paused log sink.","parameters":[{"name":"logSinkId","type":"string","required":true,"description":"ID of the log sink","example":"example-log-sink","in":"path","schema":{"name":"logSinkId","type":"string","required":true,"description":"ID of the log sink","example":"example-log-sink","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Integrations"],"security":[],"x-nf-permission-required":"Account > Sinks > General > Update","x-nf-team-scoped":true,"x-nf-cli-command":["resume","log-sink"]},"v1-integrations-log-sinks--logSinkId--resume-post-team-scoped":{"operationId":"postIntegrationsLogSinksLogsinkidResume","summary":"Resume log sink","description":"Resumes a paused log sink.","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"logSinkId","type":"string","required":true,"description":"ID of the log sink","example":"example-log-sink","in":"path","schema":{"name":"logSinkId","type":"string","required":true,"description":"ID of the log sink","example":"example-log-sink","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Integrations","team"],"security":[],"x-nf-permission-required":"Account > Sinks > General > Update","x-nf-team-scoped":true,"x-nf-cli-command":["resume","log-sink"]},"v1-integrations-log-sinks--logSinkId--settings-post":{"operationId":"postIntegrationsLogSinksLogsinkidSettings","summary":"Update log sink","description":"Updates the settings for a log sink.","parameters":[{"name":"logSinkId","type":"string","required":true,"description":"ID of the log sink","example":"example-log-sink","in":"path","schema":{"name":"logSinkId","type":"string","required":true,"description":"ID of the log sink","example":"example-log-sink","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Integrations"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"restricted":{"type":"boolean","description":"If `true`, only logs from the projects in `projects` will be sent to the log sink.","example":true},"projects":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The ID of a project.","example":"default-project"},"description":"If `restricted` is `true`, only logs from these projects will be sent to the log sink."},"options":{"type":"object","properties":{"useCustomLabels":{"type":"boolean","description":"If `true`, we will do additional parsing on your JSON formatted log lines and your extract custom labels","example":true},"forwardCdnLogs":{"type":"boolean","description":"Forward CDN logs from your workloads","example":true},"forwardIngressLogs":{"type":"boolean","description":"Forward ingress logs from your workloads","example":true},"forwardMeshLogs":{"type":"boolean","description":"Forward mesh logs from your workloads","example":true}},"additionalProperties":false},"resumeLogSink":{"type":"boolean","description":"If `true`, and the log sink is currently paused, the log sink will be resumed after updating.","example":false,"default":false},"sinkType":{"type":"string","enum":["loki","datadog_logs","papertrail","http","aws_s3","logdna","coralogix","betterStack","honeycomb","logzio","solarWinds","axiom","newRelic"],"description":"The type of log sink to target","example":"http"},"sinkData":{"type":"object","properties":{"endpoint":{"type":"string","description":"The endpoint of the Loki log sink.","example":"https://logs.example.com"},"auth":{"type":"object","properties":{"strategy":{"type":"string","enum":["basic"],"description":"The authentication method.","example":"basic"},"user":{"type":"string","description":"The username for the log sink.","example":"admin"},"password":{"type":"string","description":"The password for the log sink.","example":"password1234"}},"additionalProperties":false,"description":"Object containing authentication data for the log sink."}},"additionalProperties":false,"description":"Details about the Loki log sink."}},"required":["sinkType","sinkData"],"additionalProperties":false,"description":"Update a log sink using Loki"},{"type":"object","properties":{"restricted":{"type":"boolean","description":"If `true`, only logs from the projects in `projects` will be sent to the log sink.","example":true},"projects":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The ID of a project.","example":"default-project"},"description":"If `restricted` is `true`, only logs from these projects will be sent to the log sink."},"options":{"type":"object","properties":{"useCustomLabels":{"type":"boolean","description":"If `true`, we will do additional parsing on your JSON formatted log lines and your extract custom labels","example":true},"forwardCdnLogs":{"type":"boolean","description":"Forward CDN logs from your workloads","example":true},"forwardIngressLogs":{"type":"boolean","description":"Forward ingress logs from your workloads","example":true},"forwardMeshLogs":{"type":"boolean","description":"Forward mesh logs from your workloads","example":true}},"additionalProperties":false},"resumeLogSink":{"type":"boolean","description":"If `true`, and the log sink is currently paused, the log sink will be resumed after updating.","example":false,"default":false},"sinkType":{"type":"string","enum":["loki","datadog_logs","papertrail","http","aws_s3","logdna","coralogix","betterStack","honeycomb","logzio","solarWinds","axiom","newRelic"],"description":"The type of log sink to target","example":"http"},"sinkData":{"type":"object","properties":{"default_api_key":{"type":"string","description":"The Datadog API key.","example":"abcdef12345678900000000000000000"},"region":{"type":"string","enum":["eu","us","us3","us5"],"description":"The Datadog region.","example":"eu"}},"additionalProperties":false,"description":"Details about the Datadog log sink."}},"required":["sinkType","sinkData"],"additionalProperties":false,"description":"Update a log sink using Datadog"},{"type":"object","properties":{"restricted":{"type":"boolean","description":"If `true`, only logs from the projects in `projects` will be sent to the log sink.","example":true},"projects":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The ID of a project.","example":"default-project"},"description":"If `restricted` is `true`, only logs from these projects will be sent to the log sink."},"options":{"type":"object","properties":{"useCustomLabels":{"type":"boolean","description":"If `true`, we will do additional parsing on your JSON formatted log lines and your extract custom labels","example":true},"forwardCdnLogs":{"type":"boolean","description":"Forward CDN logs from your workloads","example":true},"forwardIngressLogs":{"type":"boolean","description":"Forward ingress logs from your workloads","example":true},"forwardMeshLogs":{"type":"boolean","description":"Forward mesh logs from your workloads","example":true}},"additionalProperties":false},"resumeLogSink":{"type":"boolean","description":"If `true`, and the log sink is currently paused, the log sink will be resumed after updating.","example":false,"default":false},"sinkType":{"type":"string","enum":["loki","datadog_logs","papertrail","http","aws_s3","logdna","coralogix","betterStack","honeycomb","logzio","solarWinds","axiom","newRelic"],"description":"The type of log sink to target","example":"http"},"sinkData":{"oneOf":[{"type":"object","properties":{"authenticationStrategy":{"type":"string","enum":["port"],"description":"The authentication strategy.","example":"port"},"host":{"type":"string","description":"The host for the Papertrail log destination.","example":"logs1.papertrailapp.com:"},"port":{"type":"number","format":"float","description":"The port for the Papertrail log destination.","example":8000}},"additionalProperties":false,"description":"Authenticate with a host/port"},{"type":"object","properties":{"authenticationStrategy":{"type":"string","enum":["token"],"description":"The authentication strategy.","example":"token"},"uri":{"type":"string","description":"The uri for the Papertrail log destination.","example":"https://logs.collector.solarwinds.com/v1/log"},"token":{"type":"string","description":"The HTTP Token for the Papertrail log destination.","example":"123abcdefghijklmnopqrstuvwxy"}},"additionalProperties":false,"description":"Authenticate with a token."}],"description":"Papertrail Sink Schema."}},"required":["sinkType","sinkData"],"additionalProperties":false,"description":"Update a log sink using Papertrail"},{"type":"object","properties":{"restricted":{"type":"boolean","description":"If `true`, only logs from the projects in `projects` will be sent to the log sink.","example":true},"projects":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The ID of a project.","example":"default-project"},"description":"If `restricted` is `true`, only logs from these projects will be sent to the log sink."},"options":{"type":"object","properties":{"useCustomLabels":{"type":"boolean","description":"If `true`, we will do additional parsing on your JSON formatted log lines and your extract custom labels","example":true},"forwardCdnLogs":{"type":"boolean","description":"Forward CDN logs from your workloads","example":true},"forwardIngressLogs":{"type":"boolean","description":"Forward ingress logs from your workloads","example":true},"forwardMeshLogs":{"type":"boolean","description":"Forward mesh logs from your workloads","example":true}},"additionalProperties":false},"resumeLogSink":{"type":"boolean","description":"If `true`, and the log sink is currently paused, the log sink will be resumed after updating.","example":false,"default":false},"sinkType":{"type":"string","enum":["loki","datadog_logs","papertrail","http","aws_s3","logdna","coralogix","betterStack","honeycomb","logzio","solarWinds","axiom","newRelic"],"description":"The type of log sink to target","example":"http"},"sinkData":{"type":"object","properties":{"uri":{"type":"string","description":"Uri to send logs to.","example":"my.log-collector.com"},"encoding":{"type":"object","properties":{"codec":{"type":"string","enum":["text","json"],"description":"Codec to encode logs in","example":"json"}},"additionalProperties":false,"description":"Encoding options"},"batch":{"type":"object","properties":{"maxEvents":{"type":"number","format":"float","description":"The max number of events in a batch before sending","example":"10","default":"20"},"maxBytes":{"type":"number","format":"float","description":"The max size of a batch in bytes before sending","example":"1e+7"}},"additionalProperties":false},"auth":{"oneOf":[{"type":"object","properties":{"strategy":{"type":"string","enum":["none"],"description":"No authentication strategy","example":"none"}},"additionalProperties":false,"description":"No authentication strategy"},{"type":"object","properties":{"strategy":{"type":"string","enum":["basic"],"description":"Basic HTTP authentication strategy.","example":"basic"},"user":{"type":"string","description":"Username for basic http authentication.","example":"my-user"},"password":{"type":"string","description":"Password for basic http authentication.","example":"secret-password"}},"additionalProperties":false,"description":"Authenticate with a basic http strategy."},{"type":"object","properties":{"strategy":{"type":"string","enum":["bearer"],"description":"Bearer token authentication strategy.","example":"bearer"},"token":{"type":"string","description":"Token for bearer token authentication.","example":"my-token"}},"additionalProperties":false,"description":"Authenticate with a bearer token strategy."}],"description":"Auth information."},"framing":{"type":"object","properties":{"method":{"type":"string","enum":["none","newline","length"],"default":"none"}},"additionalProperties":false}},"required":["uri","encoding","auth"],"additionalProperties":false,"description":"Details about the HTTP log sink.","default":{"method":"none"}}},"required":["sinkType","sinkData"],"additionalProperties":false,"description":"Update a log sink using HTTP"},{"type":"object","properties":{"restricted":{"type":"boolean","description":"If `true`, only logs from the projects in `projects` will be sent to the log sink.","example":true},"projects":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The ID of a project.","example":"default-project"},"description":"If `restricted` is `true`, only logs from these projects will be sent to the log sink."},"options":{"type":"object","properties":{"useCustomLabels":{"type":"boolean","description":"If `true`, we will do additional parsing on your JSON formatted log lines and your extract custom labels","example":true},"forwardCdnLogs":{"type":"boolean","description":"Forward CDN logs from your workloads","example":true},"forwardIngressLogs":{"type":"boolean","description":"Forward ingress logs from your workloads","example":true},"forwardMeshLogs":{"type":"boolean","description":"Forward mesh logs from your workloads","example":true}},"additionalProperties":false},"resumeLogSink":{"type":"boolean","description":"If `true`, and the log sink is currently paused, the log sink will be resumed after updating.","example":false,"default":false},"sinkType":{"type":"string","enum":["loki","datadog_logs","papertrail","http","aws_s3","logdna","coralogix","betterStack","honeycomb","logzio","solarWinds","axiom","newRelic"],"description":"The type of log sink to target","example":"http"},"sinkData":{"type":"object","properties":{"endpoint":{"type":"string","description":"Endpoint for the AWS S3 or compatible API bucket.","example":"my.bucket.com"},"region":{"type":"string","enum":["eu-west-1","eu-west-2","eu-west-3","eu-central-1","eu-south-1","eu-north-1","us-west-1","us-west-2","us-east-1","us-east2"],"description":"Region of the S3 bucket.","example":"eu-west-2"},"auth":{"type":"object","properties":{"accessKeyId":{"type":"string","description":"Access key id for the bucket.","example":"PMSACIHNUIASDBWQDS"},"secretAccessKey":{"type":"string","description":"Secret access key for the bucket.","example":"HA1PLMNOEAEYUHAJQMSDUJQS"}},"additionalProperties":false,"description":"Authentication object."},"bucket":{"type":"string","description":"Name of the S3 Bucket.","example":"northflank-logs"},"compression":{"type":"string","enum":["gzip","none"],"description":"Log file compression method.","example":"gzip"}},"additionalProperties":false,"description":"Details about the AWS S3 log sink."}},"required":["sinkType","sinkData"],"additionalProperties":false,"description":"Update a log sink using AWS S3"},{"type":"object","properties":{"restricted":{"type":"boolean","description":"If `true`, only logs from the projects in `projects` will be sent to the log sink.","example":true},"projects":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The ID of a project.","example":"default-project"},"description":"If `restricted` is `true`, only logs from these projects will be sent to the log sink."},"options":{"type":"object","properties":{"useCustomLabels":{"type":"boolean","description":"If `true`, we will do additional parsing on your JSON formatted log lines and your extract custom labels","example":true},"forwardCdnLogs":{"type":"boolean","description":"Forward CDN logs from your workloads","example":true},"forwardIngressLogs":{"type":"boolean","description":"Forward ingress logs from your workloads","example":true},"forwardMeshLogs":{"type":"boolean","description":"Forward mesh logs from your workloads","example":true}},"additionalProperties":false},"resumeLogSink":{"type":"boolean","description":"If `true`, and the log sink is currently paused, the log sink will be resumed after updating.","example":false,"default":false},"sinkType":{"type":"string","enum":["loki","datadog_logs","papertrail","http","aws_s3","logdna","coralogix","betterStack","honeycomb","logzio","solarWinds","axiom","newRelic"],"description":"The type of log sink to target","example":"http"},"sinkData":{"type":"object","properties":{"token":{"type":"string","description":"Better Stack Source Token","example":"vhnqrLygVQ5GnSQUTZamKvAq"},"uri":{"type":"string","description":"Better stack ingestion host","example":"abc123.eu-nbg-2.betterstackdata.com"}},"additionalProperties":false,"description":"Details about the Better Stack log sink."}},"required":["sinkType","sinkData"],"additionalProperties":false,"description":"Update a log sink using Better Stack"},{"type":"object","properties":{"restricted":{"type":"boolean","description":"If `true`, only logs from the projects in `projects` will be sent to the log sink.","example":true},"projects":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The ID of a project.","example":"default-project"},"description":"If `restricted` is `true`, only logs from these projects will be sent to the log sink."},"options":{"type":"object","properties":{"useCustomLabels":{"type":"boolean","description":"If `true`, we will do additional parsing on your JSON formatted log lines and your extract custom labels","example":true},"forwardCdnLogs":{"type":"boolean","description":"Forward CDN logs from your workloads","example":true},"forwardIngressLogs":{"type":"boolean","description":"Forward ingress logs from your workloads","example":true},"forwardMeshLogs":{"type":"boolean","description":"Forward mesh logs from your workloads","example":true}},"additionalProperties":false},"resumeLogSink":{"type":"boolean","description":"If `true`, and the log sink is currently paused, the log sink will be resumed after updating.","example":false,"default":false},"sinkType":{"type":"string","enum":["loki","datadog_logs","papertrail","http","aws_s3","logdna","coralogix","betterStack","honeycomb","logzio","solarWinds","axiom","newRelic"],"description":"The type of log sink to target","example":"http"},"sinkData":{"type":"object","properties":{"api_key":{"type":"string","description":"Ingestion Key","example":"b1dd3feb585asd1a3e9edpo9kmn5e590hg9"}},"additionalProperties":false,"description":"Details about the LogDNA log sink."}},"required":["sinkType","sinkData"],"additionalProperties":false,"description":"Update a log sink using LogDNA"},{"type":"object","properties":{"restricted":{"type":"boolean","description":"If `true`, only logs from the projects in `projects` will be sent to the log sink.","example":true},"projects":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The ID of a project.","example":"default-project"},"description":"If `restricted` is `true`, only logs from these projects will be sent to the log sink."},"options":{"type":"object","properties":{"useCustomLabels":{"type":"boolean","description":"If `true`, we will do additional parsing on your JSON formatted log lines and your extract custom labels","example":true},"forwardCdnLogs":{"type":"boolean","description":"Forward CDN logs from your workloads","example":true},"forwardIngressLogs":{"type":"boolean","description":"Forward ingress logs from your workloads","example":true},"forwardMeshLogs":{"type":"boolean","description":"Forward mesh logs from your workloads","example":true}},"additionalProperties":false},"resumeLogSink":{"type":"boolean","description":"If `true`, and the log sink is currently paused, the log sink will be resumed after updating.","example":false,"default":false},"sinkType":{"type":"string","enum":["loki","datadog_logs","papertrail","http","aws_s3","logdna","coralogix","betterStack","honeycomb","logzio","solarWinds","axiom","newRelic"],"description":"The type of log sink to target","example":"http"},"sinkData":{"type":"object","properties":{"region":{"type":"string","enum":["eu","uk","us","ca","au","nl","wa"],"description":"Your Logzio region code","example":"eu"},"token":{"type":"string","description":"The Log Shipping Token of the account you want to ship to","example":"sNFijNFgNFoNFrMsNFbNFObNFcgNFqoa"}},"additionalProperties":false,"description":"Details about the Logz.io log sink."}},"required":["sinkType","sinkData"],"additionalProperties":false,"description":"Update a log sink using Logz.io"},{"type":"object","properties":{"restricted":{"type":"boolean","description":"If `true`, only logs from the projects in `projects` will be sent to the log sink.","example":true},"projects":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The ID of a project.","example":"default-project"},"description":"If `restricted` is `true`, only logs from these projects will be sent to the log sink."},"options":{"type":"object","properties":{"useCustomLabels":{"type":"boolean","description":"If `true`, we will do additional parsing on your JSON formatted log lines and your extract custom labels","example":true},"forwardCdnLogs":{"type":"boolean","description":"Forward CDN logs from your workloads","example":true},"forwardIngressLogs":{"type":"boolean","description":"Forward ingress logs from your workloads","example":true},"forwardMeshLogs":{"type":"boolean","description":"Forward mesh logs from your workloads","example":true}},"additionalProperties":false},"resumeLogSink":{"type":"boolean","description":"If `true`, and the log sink is currently paused, the log sink will be resumed after updating.","example":false,"default":false},"sinkType":{"type":"string","enum":["loki","datadog_logs","papertrail","http","aws_s3","logdna","coralogix","betterStack","honeycomb","logzio","solarWinds","axiom","newRelic"],"description":"The type of log sink to target","example":"http"},"sinkData":{"type":"object","properties":{"api_key":{"type":"string","description":"Solar Winds API Key","example":"Tr8BIEmYx1fuM3_XRMwU3xXEFnD20p9NFkRIu1COrDqMCM4g86qWZgVdgs1Y7mzWtFMI0Zc"},"encoding":{"type":"object","properties":{"codec":{"type":"string","enum":["text","json"],"description":"Codec to encode logs in","example":"json"}},"additionalProperties":false},"endpointType":{"type":"string","enum":["unitary","bulk"],"description":"Solar Winds endpoint type"}},"additionalProperties":false,"description":"Details about the Solar Winds log sink."}},"required":["sinkType","sinkData"],"additionalProperties":false,"description":"Update a log sink using Solar Winds"},{"type":"object","properties":{"restricted":{"type":"boolean","description":"If `true`, only logs from the projects in `projects` will be sent to the log sink.","example":true},"projects":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The ID of a project.","example":"default-project"},"description":"If `restricted` is `true`, only logs from these projects will be sent to the log sink."},"options":{"type":"object","properties":{"useCustomLabels":{"type":"boolean","description":"If `true`, we will do additional parsing on your JSON formatted log lines and your extract custom labels","example":true},"forwardCdnLogs":{"type":"boolean","description":"Forward CDN logs from your workloads","example":true},"forwardIngressLogs":{"type":"boolean","description":"Forward ingress logs from your workloads","example":true},"forwardMeshLogs":{"type":"boolean","description":"Forward mesh logs from your workloads","example":true}},"additionalProperties":false},"resumeLogSink":{"type":"boolean","description":"If `true`, and the log sink is currently paused, the log sink will be resumed after updating.","example":false,"default":false},"sinkType":{"type":"string","enum":["loki","datadog_logs","papertrail","http","aws_s3","logdna","coralogix","betterStack","honeycomb","logzio","solarWinds","axiom","newRelic"],"description":"The type of log sink to target","example":"http"},"sinkData":{"type":"object","properties":{"api_key":{"type":"string","description":"Honeycomb API Key","example":"b1dd3feb585asd1a3e9"},"dataset":{"type":"string","description":"Name of the dataset","example":"staging-logs"}},"additionalProperties":false,"description":"Details about the Honeycomb log sink."}},"required":["sinkType","sinkData"],"additionalProperties":false,"description":"Update a log sink using Honeycomb"},{"type":"object","properties":{"restricted":{"type":"boolean","description":"If `true`, only logs from the projects in `projects` will be sent to the log sink.","example":true},"projects":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The ID of a project.","example":"default-project"},"description":"If `restricted` is `true`, only logs from these projects will be sent to the log sink."},"options":{"type":"object","properties":{"useCustomLabels":{"type":"boolean","description":"If `true`, we will do additional parsing on your JSON formatted log lines and your extract custom labels","example":true},"forwardCdnLogs":{"type":"boolean","description":"Forward CDN logs from your workloads","example":true},"forwardIngressLogs":{"type":"boolean","description":"Forward ingress logs from your workloads","example":true},"forwardMeshLogs":{"type":"boolean","description":"Forward mesh logs from your workloads","example":true}},"additionalProperties":false},"resumeLogSink":{"type":"boolean","description":"If `true`, and the log sink is currently paused, the log sink will be resumed after updating.","example":false,"default":false},"sinkType":{"type":"string","enum":["loki","datadog_logs","papertrail","http","aws_s3","logdna","coralogix","betterStack","honeycomb","logzio","solarWinds","axiom","newRelic"],"description":"The type of log sink to target","example":"http"},"sinkData":{"type":"object","properties":{"dataset":{"type":"string","description":"Name of the data","example":"staging"},"token":{"type":"string","description":"Axiom API/Personal token","example":"b1dd3feb585asd1a3e9edpo9kmn5e590hg9"},"tokenType":{"type":"string","enum":["personal","api"],"description":"Using a personal token","example":"api"},"orgId":{"type":"string","description":"The ID of the organisation, required if using a personal token"},"url":{"type":"string","description":"The Axiom url to use. Only change if self hosting axiom.","default":"https://api.axiom.co"}},"required":["dataset"],"additionalProperties":false,"description":"Details about the Axiom log sink."}},"required":["sinkType","sinkData"],"additionalProperties":false,"description":"Update a log sink using Axiom"},{"type":"object","properties":{"restricted":{"type":"boolean","description":"If `true`, only logs from the projects in `projects` will be sent to the log sink.","example":true},"projects":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The ID of a project.","example":"default-project"},"description":"If `restricted` is `true`, only logs from these projects will be sent to the log sink."},"options":{"type":"object","properties":{"useCustomLabels":{"type":"boolean","description":"If `true`, we will do additional parsing on your JSON formatted log lines and your extract custom labels","example":true},"forwardCdnLogs":{"type":"boolean","description":"Forward CDN logs from your workloads","example":true},"forwardIngressLogs":{"type":"boolean","description":"Forward ingress logs from your workloads","example":true},"forwardMeshLogs":{"type":"boolean","description":"Forward mesh logs from your workloads","example":true}},"additionalProperties":false},"resumeLogSink":{"type":"boolean","description":"If `true`, and the log sink is currently paused, the log sink will be resumed after updating.","example":false,"default":false},"sinkType":{"type":"string","enum":["loki","datadog_logs","papertrail","http","aws_s3","logdna","coralogix","betterStack","honeycomb","logzio","solarWinds","axiom","newRelic"],"description":"The type of log sink to target","example":"http"},"sinkData":{"type":"object","properties":{"accountId":{"type":"string","description":"New Relic Account ID","example":"b1dd3feb585asd1a3e9"},"licenseKey":{"type":"string","description":"New Relic License Key","example":"b1dd3feb585asd1a3e9"},"region":{"type":"string","enum":["eu","us"],"example":"eu"}},"additionalProperties":false,"description":"Details about the New Relic log sink."}},"required":["sinkType","sinkData"],"additionalProperties":false,"description":"Update a log sink using New Relic"}],"description":"Update a log sink"}}},"required":true},"x-nf-permission-required":"Account > Sinks > General > Update","x-nf-team-scoped":true,"x-nf-cli-command":["update","log-sink"]},"v1-integrations-log-sinks--logSinkId--settings-post-team-scoped":{"operationId":"postIntegrationsLogSinksLogsinkidSettings","summary":"Update log sink","description":"Updates the settings for a log sink.","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"logSinkId","type":"string","required":true,"description":"ID of the log sink","example":"example-log-sink","in":"path","schema":{"name":"logSinkId","type":"string","required":true,"description":"ID of the log sink","example":"example-log-sink","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Integrations","team"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"restricted":{"type":"boolean","description":"If `true`, only logs from the projects in `projects` will be sent to the log sink.","example":true},"projects":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The ID of a project.","example":"default-project"},"description":"If `restricted` is `true`, only logs from these projects will be sent to the log sink."},"options":{"type":"object","properties":{"useCustomLabels":{"type":"boolean","description":"If `true`, we will do additional parsing on your JSON formatted log lines and your extract custom labels","example":true},"forwardCdnLogs":{"type":"boolean","description":"Forward CDN logs from your workloads","example":true},"forwardIngressLogs":{"type":"boolean","description":"Forward ingress logs from your workloads","example":true},"forwardMeshLogs":{"type":"boolean","description":"Forward mesh logs from your workloads","example":true}},"additionalProperties":false},"resumeLogSink":{"type":"boolean","description":"If `true`, and the log sink is currently paused, the log sink will be resumed after updating.","example":false,"default":false},"sinkType":{"type":"string","enum":["loki","datadog_logs","papertrail","http","aws_s3","logdna","coralogix","betterStack","honeycomb","logzio","solarWinds","axiom","newRelic"],"description":"The type of log sink to target","example":"http"},"sinkData":{"type":"object","properties":{"endpoint":{"type":"string","description":"The endpoint of the Loki log sink.","example":"https://logs.example.com"},"auth":{"type":"object","properties":{"strategy":{"type":"string","enum":["basic"],"description":"The authentication method.","example":"basic"},"user":{"type":"string","description":"The username for the log sink.","example":"admin"},"password":{"type":"string","description":"The password for the log sink.","example":"password1234"}},"additionalProperties":false,"description":"Object containing authentication data for the log sink."}},"additionalProperties":false,"description":"Details about the Loki log sink."}},"required":["sinkType","sinkData"],"additionalProperties":false,"description":"Update a log sink using Loki"},{"type":"object","properties":{"restricted":{"type":"boolean","description":"If `true`, only logs from the projects in `projects` will be sent to the log sink.","example":true},"projects":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The ID of a project.","example":"default-project"},"description":"If `restricted` is `true`, only logs from these projects will be sent to the log sink."},"options":{"type":"object","properties":{"useCustomLabels":{"type":"boolean","description":"If `true`, we will do additional parsing on your JSON formatted log lines and your extract custom labels","example":true},"forwardCdnLogs":{"type":"boolean","description":"Forward CDN logs from your workloads","example":true},"forwardIngressLogs":{"type":"boolean","description":"Forward ingress logs from your workloads","example":true},"forwardMeshLogs":{"type":"boolean","description":"Forward mesh logs from your workloads","example":true}},"additionalProperties":false},"resumeLogSink":{"type":"boolean","description":"If `true`, and the log sink is currently paused, the log sink will be resumed after updating.","example":false,"default":false},"sinkType":{"type":"string","enum":["loki","datadog_logs","papertrail","http","aws_s3","logdna","coralogix","betterStack","honeycomb","logzio","solarWinds","axiom","newRelic"],"description":"The type of log sink to target","example":"http"},"sinkData":{"type":"object","properties":{"default_api_key":{"type":"string","description":"The Datadog API key.","example":"abcdef12345678900000000000000000"},"region":{"type":"string","enum":["eu","us","us3","us5"],"description":"The Datadog region.","example":"eu"}},"additionalProperties":false,"description":"Details about the Datadog log sink."}},"required":["sinkType","sinkData"],"additionalProperties":false,"description":"Update a log sink using Datadog"},{"type":"object","properties":{"restricted":{"type":"boolean","description":"If `true`, only logs from the projects in `projects` will be sent to the log sink.","example":true},"projects":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The ID of a project.","example":"default-project"},"description":"If `restricted` is `true`, only logs from these projects will be sent to the log sink."},"options":{"type":"object","properties":{"useCustomLabels":{"type":"boolean","description":"If `true`, we will do additional parsing on your JSON formatted log lines and your extract custom labels","example":true},"forwardCdnLogs":{"type":"boolean","description":"Forward CDN logs from your workloads","example":true},"forwardIngressLogs":{"type":"boolean","description":"Forward ingress logs from your workloads","example":true},"forwardMeshLogs":{"type":"boolean","description":"Forward mesh logs from your workloads","example":true}},"additionalProperties":false},"resumeLogSink":{"type":"boolean","description":"If `true`, and the log sink is currently paused, the log sink will be resumed after updating.","example":false,"default":false},"sinkType":{"type":"string","enum":["loki","datadog_logs","papertrail","http","aws_s3","logdna","coralogix","betterStack","honeycomb","logzio","solarWinds","axiom","newRelic"],"description":"The type of log sink to target","example":"http"},"sinkData":{"oneOf":[{"type":"object","properties":{"authenticationStrategy":{"type":"string","enum":["port"],"description":"The authentication strategy.","example":"port"},"host":{"type":"string","description":"The host for the Papertrail log destination.","example":"logs1.papertrailapp.com:"},"port":{"type":"number","format":"float","description":"The port for the Papertrail log destination.","example":8000}},"additionalProperties":false,"description":"Authenticate with a host/port"},{"type":"object","properties":{"authenticationStrategy":{"type":"string","enum":["token"],"description":"The authentication strategy.","example":"token"},"uri":{"type":"string","description":"The uri for the Papertrail log destination.","example":"https://logs.collector.solarwinds.com/v1/log"},"token":{"type":"string","description":"The HTTP Token for the Papertrail log destination.","example":"123abcdefghijklmnopqrstuvwxy"}},"additionalProperties":false,"description":"Authenticate with a token."}],"description":"Papertrail Sink Schema."}},"required":["sinkType","sinkData"],"additionalProperties":false,"description":"Update a log sink using Papertrail"},{"type":"object","properties":{"restricted":{"type":"boolean","description":"If `true`, only logs from the projects in `projects` will be sent to the log sink.","example":true},"projects":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The ID of a project.","example":"default-project"},"description":"If `restricted` is `true`, only logs from these projects will be sent to the log sink."},"options":{"type":"object","properties":{"useCustomLabels":{"type":"boolean","description":"If `true`, we will do additional parsing on your JSON formatted log lines and your extract custom labels","example":true},"forwardCdnLogs":{"type":"boolean","description":"Forward CDN logs from your workloads","example":true},"forwardIngressLogs":{"type":"boolean","description":"Forward ingress logs from your workloads","example":true},"forwardMeshLogs":{"type":"boolean","description":"Forward mesh logs from your workloads","example":true}},"additionalProperties":false},"resumeLogSink":{"type":"boolean","description":"If `true`, and the log sink is currently paused, the log sink will be resumed after updating.","example":false,"default":false},"sinkType":{"type":"string","enum":["loki","datadog_logs","papertrail","http","aws_s3","logdna","coralogix","betterStack","honeycomb","logzio","solarWinds","axiom","newRelic"],"description":"The type of log sink to target","example":"http"},"sinkData":{"type":"object","properties":{"uri":{"type":"string","description":"Uri to send logs to.","example":"my.log-collector.com"},"encoding":{"type":"object","properties":{"codec":{"type":"string","enum":["text","json"],"description":"Codec to encode logs in","example":"json"}},"additionalProperties":false,"description":"Encoding options"},"batch":{"type":"object","properties":{"maxEvents":{"type":"number","format":"float","description":"The max number of events in a batch before sending","example":"10","default":"20"},"maxBytes":{"type":"number","format":"float","description":"The max size of a batch in bytes before sending","example":"1e+7"}},"additionalProperties":false},"auth":{"oneOf":[{"type":"object","properties":{"strategy":{"type":"string","enum":["none"],"description":"No authentication strategy","example":"none"}},"additionalProperties":false,"description":"No authentication strategy"},{"type":"object","properties":{"strategy":{"type":"string","enum":["basic"],"description":"Basic HTTP authentication strategy.","example":"basic"},"user":{"type":"string","description":"Username for basic http authentication.","example":"my-user"},"password":{"type":"string","description":"Password for basic http authentication.","example":"secret-password"}},"additionalProperties":false,"description":"Authenticate with a basic http strategy."},{"type":"object","properties":{"strategy":{"type":"string","enum":["bearer"],"description":"Bearer token authentication strategy.","example":"bearer"},"token":{"type":"string","description":"Token for bearer token authentication.","example":"my-token"}},"additionalProperties":false,"description":"Authenticate with a bearer token strategy."}],"description":"Auth information."},"framing":{"type":"object","properties":{"method":{"type":"string","enum":["none","newline","length"],"default":"none"}},"additionalProperties":false}},"required":["uri","encoding","auth"],"additionalProperties":false,"description":"Details about the HTTP log sink.","default":{"method":"none"}}},"required":["sinkType","sinkData"],"additionalProperties":false,"description":"Update a log sink using HTTP"},{"type":"object","properties":{"restricted":{"type":"boolean","description":"If `true`, only logs from the projects in `projects` will be sent to the log sink.","example":true},"projects":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The ID of a project.","example":"default-project"},"description":"If `restricted` is `true`, only logs from these projects will be sent to the log sink."},"options":{"type":"object","properties":{"useCustomLabels":{"type":"boolean","description":"If `true`, we will do additional parsing on your JSON formatted log lines and your extract custom labels","example":true},"forwardCdnLogs":{"type":"boolean","description":"Forward CDN logs from your workloads","example":true},"forwardIngressLogs":{"type":"boolean","description":"Forward ingress logs from your workloads","example":true},"forwardMeshLogs":{"type":"boolean","description":"Forward mesh logs from your workloads","example":true}},"additionalProperties":false},"resumeLogSink":{"type":"boolean","description":"If `true`, and the log sink is currently paused, the log sink will be resumed after updating.","example":false,"default":false},"sinkType":{"type":"string","enum":["loki","datadog_logs","papertrail","http","aws_s3","logdna","coralogix","betterStack","honeycomb","logzio","solarWinds","axiom","newRelic"],"description":"The type of log sink to target","example":"http"},"sinkData":{"type":"object","properties":{"endpoint":{"type":"string","description":"Endpoint for the AWS S3 or compatible API bucket.","example":"my.bucket.com"},"region":{"type":"string","enum":["eu-west-1","eu-west-2","eu-west-3","eu-central-1","eu-south-1","eu-north-1","us-west-1","us-west-2","us-east-1","us-east2"],"description":"Region of the S3 bucket.","example":"eu-west-2"},"auth":{"type":"object","properties":{"accessKeyId":{"type":"string","description":"Access key id for the bucket.","example":"PMSACIHNUIASDBWQDS"},"secretAccessKey":{"type":"string","description":"Secret access key for the bucket.","example":"HA1PLMNOEAEYUHAJQMSDUJQS"}},"additionalProperties":false,"description":"Authentication object."},"bucket":{"type":"string","description":"Name of the S3 Bucket.","example":"northflank-logs"},"compression":{"type":"string","enum":["gzip","none"],"description":"Log file compression method.","example":"gzip"}},"additionalProperties":false,"description":"Details about the AWS S3 log sink."}},"required":["sinkType","sinkData"],"additionalProperties":false,"description":"Update a log sink using AWS S3"},{"type":"object","properties":{"restricted":{"type":"boolean","description":"If `true`, only logs from the projects in `projects` will be sent to the log sink.","example":true},"projects":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The ID of a project.","example":"default-project"},"description":"If `restricted` is `true`, only logs from these projects will be sent to the log sink."},"options":{"type":"object","properties":{"useCustomLabels":{"type":"boolean","description":"If `true`, we will do additional parsing on your JSON formatted log lines and your extract custom labels","example":true},"forwardCdnLogs":{"type":"boolean","description":"Forward CDN logs from your workloads","example":true},"forwardIngressLogs":{"type":"boolean","description":"Forward ingress logs from your workloads","example":true},"forwardMeshLogs":{"type":"boolean","description":"Forward mesh logs from your workloads","example":true}},"additionalProperties":false},"resumeLogSink":{"type":"boolean","description":"If `true`, and the log sink is currently paused, the log sink will be resumed after updating.","example":false,"default":false},"sinkType":{"type":"string","enum":["loki","datadog_logs","papertrail","http","aws_s3","logdna","coralogix","betterStack","honeycomb","logzio","solarWinds","axiom","newRelic"],"description":"The type of log sink to target","example":"http"},"sinkData":{"type":"object","properties":{"token":{"type":"string","description":"Better Stack Source Token","example":"vhnqrLygVQ5GnSQUTZamKvAq"},"uri":{"type":"string","description":"Better stack ingestion host","example":"abc123.eu-nbg-2.betterstackdata.com"}},"additionalProperties":false,"description":"Details about the Better Stack log sink."}},"required":["sinkType","sinkData"],"additionalProperties":false,"description":"Update a log sink using Better Stack"},{"type":"object","properties":{"restricted":{"type":"boolean","description":"If `true`, only logs from the projects in `projects` will be sent to the log sink.","example":true},"projects":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The ID of a project.","example":"default-project"},"description":"If `restricted` is `true`, only logs from these projects will be sent to the log sink."},"options":{"type":"object","properties":{"useCustomLabels":{"type":"boolean","description":"If `true`, we will do additional parsing on your JSON formatted log lines and your extract custom labels","example":true},"forwardCdnLogs":{"type":"boolean","description":"Forward CDN logs from your workloads","example":true},"forwardIngressLogs":{"type":"boolean","description":"Forward ingress logs from your workloads","example":true},"forwardMeshLogs":{"type":"boolean","description":"Forward mesh logs from your workloads","example":true}},"additionalProperties":false},"resumeLogSink":{"type":"boolean","description":"If `true`, and the log sink is currently paused, the log sink will be resumed after updating.","example":false,"default":false},"sinkType":{"type":"string","enum":["loki","datadog_logs","papertrail","http","aws_s3","logdna","coralogix","betterStack","honeycomb","logzio","solarWinds","axiom","newRelic"],"description":"The type of log sink to target","example":"http"},"sinkData":{"type":"object","properties":{"api_key":{"type":"string","description":"Ingestion Key","example":"b1dd3feb585asd1a3e9edpo9kmn5e590hg9"}},"additionalProperties":false,"description":"Details about the LogDNA log sink."}},"required":["sinkType","sinkData"],"additionalProperties":false,"description":"Update a log sink using LogDNA"},{"type":"object","properties":{"restricted":{"type":"boolean","description":"If `true`, only logs from the projects in `projects` will be sent to the log sink.","example":true},"projects":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The ID of a project.","example":"default-project"},"description":"If `restricted` is `true`, only logs from these projects will be sent to the log sink."},"options":{"type":"object","properties":{"useCustomLabels":{"type":"boolean","description":"If `true`, we will do additional parsing on your JSON formatted log lines and your extract custom labels","example":true},"forwardCdnLogs":{"type":"boolean","description":"Forward CDN logs from your workloads","example":true},"forwardIngressLogs":{"type":"boolean","description":"Forward ingress logs from your workloads","example":true},"forwardMeshLogs":{"type":"boolean","description":"Forward mesh logs from your workloads","example":true}},"additionalProperties":false},"resumeLogSink":{"type":"boolean","description":"If `true`, and the log sink is currently paused, the log sink will be resumed after updating.","example":false,"default":false},"sinkType":{"type":"string","enum":["loki","datadog_logs","papertrail","http","aws_s3","logdna","coralogix","betterStack","honeycomb","logzio","solarWinds","axiom","newRelic"],"description":"The type of log sink to target","example":"http"},"sinkData":{"type":"object","properties":{"region":{"type":"string","enum":["eu","uk","us","ca","au","nl","wa"],"description":"Your Logzio region code","example":"eu"},"token":{"type":"string","description":"The Log Shipping Token of the account you want to ship to","example":"sNFijNFgNFoNFrMsNFbNFObNFcgNFqoa"}},"additionalProperties":false,"description":"Details about the Logz.io log sink."}},"required":["sinkType","sinkData"],"additionalProperties":false,"description":"Update a log sink using Logz.io"},{"type":"object","properties":{"restricted":{"type":"boolean","description":"If `true`, only logs from the projects in `projects` will be sent to the log sink.","example":true},"projects":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The ID of a project.","example":"default-project"},"description":"If `restricted` is `true`, only logs from these projects will be sent to the log sink."},"options":{"type":"object","properties":{"useCustomLabels":{"type":"boolean","description":"If `true`, we will do additional parsing on your JSON formatted log lines and your extract custom labels","example":true},"forwardCdnLogs":{"type":"boolean","description":"Forward CDN logs from your workloads","example":true},"forwardIngressLogs":{"type":"boolean","description":"Forward ingress logs from your workloads","example":true},"forwardMeshLogs":{"type":"boolean","description":"Forward mesh logs from your workloads","example":true}},"additionalProperties":false},"resumeLogSink":{"type":"boolean","description":"If `true`, and the log sink is currently paused, the log sink will be resumed after updating.","example":false,"default":false},"sinkType":{"type":"string","enum":["loki","datadog_logs","papertrail","http","aws_s3","logdna","coralogix","betterStack","honeycomb","logzio","solarWinds","axiom","newRelic"],"description":"The type of log sink to target","example":"http"},"sinkData":{"type":"object","properties":{"api_key":{"type":"string","description":"Solar Winds API Key","example":"Tr8BIEmYx1fuM3_XRMwU3xXEFnD20p9NFkRIu1COrDqMCM4g86qWZgVdgs1Y7mzWtFMI0Zc"},"encoding":{"type":"object","properties":{"codec":{"type":"string","enum":["text","json"],"description":"Codec to encode logs in","example":"json"}},"additionalProperties":false},"endpointType":{"type":"string","enum":["unitary","bulk"],"description":"Solar Winds endpoint type"}},"additionalProperties":false,"description":"Details about the Solar Winds log sink."}},"required":["sinkType","sinkData"],"additionalProperties":false,"description":"Update a log sink using Solar Winds"},{"type":"object","properties":{"restricted":{"type":"boolean","description":"If `true`, only logs from the projects in `projects` will be sent to the log sink.","example":true},"projects":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The ID of a project.","example":"default-project"},"description":"If `restricted` is `true`, only logs from these projects will be sent to the log sink."},"options":{"type":"object","properties":{"useCustomLabels":{"type":"boolean","description":"If `true`, we will do additional parsing on your JSON formatted log lines and your extract custom labels","example":true},"forwardCdnLogs":{"type":"boolean","description":"Forward CDN logs from your workloads","example":true},"forwardIngressLogs":{"type":"boolean","description":"Forward ingress logs from your workloads","example":true},"forwardMeshLogs":{"type":"boolean","description":"Forward mesh logs from your workloads","example":true}},"additionalProperties":false},"resumeLogSink":{"type":"boolean","description":"If `true`, and the log sink is currently paused, the log sink will be resumed after updating.","example":false,"default":false},"sinkType":{"type":"string","enum":["loki","datadog_logs","papertrail","http","aws_s3","logdna","coralogix","betterStack","honeycomb","logzio","solarWinds","axiom","newRelic"],"description":"The type of log sink to target","example":"http"},"sinkData":{"type":"object","properties":{"api_key":{"type":"string","description":"Honeycomb API Key","example":"b1dd3feb585asd1a3e9"},"dataset":{"type":"string","description":"Name of the dataset","example":"staging-logs"}},"additionalProperties":false,"description":"Details about the Honeycomb log sink."}},"required":["sinkType","sinkData"],"additionalProperties":false,"description":"Update a log sink using Honeycomb"},{"type":"object","properties":{"restricted":{"type":"boolean","description":"If `true`, only logs from the projects in `projects` will be sent to the log sink.","example":true},"projects":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The ID of a project.","example":"default-project"},"description":"If `restricted` is `true`, only logs from these projects will be sent to the log sink."},"options":{"type":"object","properties":{"useCustomLabels":{"type":"boolean","description":"If `true`, we will do additional parsing on your JSON formatted log lines and your extract custom labels","example":true},"forwardCdnLogs":{"type":"boolean","description":"Forward CDN logs from your workloads","example":true},"forwardIngressLogs":{"type":"boolean","description":"Forward ingress logs from your workloads","example":true},"forwardMeshLogs":{"type":"boolean","description":"Forward mesh logs from your workloads","example":true}},"additionalProperties":false},"resumeLogSink":{"type":"boolean","description":"If `true`, and the log sink is currently paused, the log sink will be resumed after updating.","example":false,"default":false},"sinkType":{"type":"string","enum":["loki","datadog_logs","papertrail","http","aws_s3","logdna","coralogix","betterStack","honeycomb","logzio","solarWinds","axiom","newRelic"],"description":"The type of log sink to target","example":"http"},"sinkData":{"type":"object","properties":{"dataset":{"type":"string","description":"Name of the data","example":"staging"},"token":{"type":"string","description":"Axiom API/Personal token","example":"b1dd3feb585asd1a3e9edpo9kmn5e590hg9"},"tokenType":{"type":"string","enum":["personal","api"],"description":"Using a personal token","example":"api"},"orgId":{"type":"string","description":"The ID of the organisation, required if using a personal token"},"url":{"type":"string","description":"The Axiom url to use. Only change if self hosting axiom.","default":"https://api.axiom.co"}},"required":["dataset"],"additionalProperties":false,"description":"Details about the Axiom log sink."}},"required":["sinkType","sinkData"],"additionalProperties":false,"description":"Update a log sink using Axiom"},{"type":"object","properties":{"restricted":{"type":"boolean","description":"If `true`, only logs from the projects in `projects` will be sent to the log sink.","example":true},"projects":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The ID of a project.","example":"default-project"},"description":"If `restricted` is `true`, only logs from these projects will be sent to the log sink."},"options":{"type":"object","properties":{"useCustomLabels":{"type":"boolean","description":"If `true`, we will do additional parsing on your JSON formatted log lines and your extract custom labels","example":true},"forwardCdnLogs":{"type":"boolean","description":"Forward CDN logs from your workloads","example":true},"forwardIngressLogs":{"type":"boolean","description":"Forward ingress logs from your workloads","example":true},"forwardMeshLogs":{"type":"boolean","description":"Forward mesh logs from your workloads","example":true}},"additionalProperties":false},"resumeLogSink":{"type":"boolean","description":"If `true`, and the log sink is currently paused, the log sink will be resumed after updating.","example":false,"default":false},"sinkType":{"type":"string","enum":["loki","datadog_logs","papertrail","http","aws_s3","logdna","coralogix","betterStack","honeycomb","logzio","solarWinds","axiom","newRelic"],"description":"The type of log sink to target","example":"http"},"sinkData":{"type":"object","properties":{"accountId":{"type":"string","description":"New Relic Account ID","example":"b1dd3feb585asd1a3e9"},"licenseKey":{"type":"string","description":"New Relic License Key","example":"b1dd3feb585asd1a3e9"},"region":{"type":"string","enum":["eu","us"],"example":"eu"}},"additionalProperties":false,"description":"Details about the New Relic log sink."}},"required":["sinkType","sinkData"],"additionalProperties":false,"description":"Update a log sink using New Relic"}],"description":"Update a log sink"}}},"required":true},"x-nf-permission-required":"Account > Sinks > General > Update","x-nf-team-scoped":true,"x-nf-cli-command":["update","log-sink"]},"v1-integrations-notifications-get":{"operationId":"getIntegrationsNotifications","summary":"List notification integrations","description":"Lists notification integrations for the authenticated user or team.","parameters":[{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query","schema":{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query"}},{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query","schema":{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query"}},{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query","schema":{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query"}}],"responses":{"200":{"description":"A list of notification integrations for the authenticated user or team","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"notificationIntegrations":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The name of the notification integration.","example":"Example Notification"},"id":{"type":"string","description":"The ID of the notification integration.","example":"example-notification"},"type":{"type":"string","enum":["RAW_WEBHOOK","SLACK","DISCORD","TEAMS","TEAMS_WORKFLOWS"],"description":"The provider to send webhooks to. `RAW_WEBHOOK` allows you to send webhooks to a url of your choice, or you can choose a specific provider.","example":"RAW_WEBHOOK"},"webhook":{"type":"string","description":"The URL where webhooks will be sent.","example":"https://example.com/webhooks"},"status":{"type":"object","properties":{"disabled":{"type":"boolean","description":"Is the webhook currently disabled?","example":false},"reason":{"type":"boolean","description":"Why the webhook was disabled."}},"additionalProperties":false,"description":"Information on the current webhook status."},"createdAt":{"type":"string","format":"date-time","description":"Creation date","example":"2023-09-12T16:39:44.166Z\""},"updatedAt":{"type":"string","format":"date-time","description":"Last update date","example":"2023-09-12T16:39:44.166Z\""}},"required":["name","id","type","webhook","createdAt","updatedAt"],"additionalProperties":false},"description":"An array of notification integrations on the account."}},"required":["notificationIntegrations"],"additionalProperties":false,"description":"Result data."},"pagination":{"type":"object","properties":{"hasNextPage":{"type":"boolean","description":"Is there another page of results available?","example":false},"cursor":{"type":"string","description":"The cursor to access the next page of results."},"count":{"type":"number","format":"float","description":"The number of results returned by this request.","example":1}},"required":["hasNextPage","count"],"additionalProperties":false,"description":"Data about the endpoint pagination."}},"required":["data","pagination"],"additionalProperties":false,"description":"Response object."}}},"tags":["Integrations"],"security":[],"x-nf-permission-required":"Account > Team > Notifications > Read","x-nf-team-scoped":true,"x-nf-cli-command":["list","notifications"]},"v1-integrations-notifications-get-team-scoped":{"operationId":"getIntegrationsNotifications","summary":"List notification integrations","description":"Lists notification integrations for the authenticated user or team.","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query","schema":{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query"}},{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query","schema":{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query"}},{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query","schema":{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query"}}],"responses":{"200":{"description":"A list of notification integrations for the authenticated user or team","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"notificationIntegrations":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The name of the notification integration.","example":"Example Notification"},"id":{"type":"string","description":"The ID of the notification integration.","example":"example-notification"},"type":{"type":"string","enum":["RAW_WEBHOOK","SLACK","DISCORD","TEAMS","TEAMS_WORKFLOWS"],"description":"The provider to send webhooks to. `RAW_WEBHOOK` allows you to send webhooks to a url of your choice, or you can choose a specific provider.","example":"RAW_WEBHOOK"},"webhook":{"type":"string","description":"The URL where webhooks will be sent.","example":"https://example.com/webhooks"},"status":{"type":"object","properties":{"disabled":{"type":"boolean","description":"Is the webhook currently disabled?","example":false},"reason":{"type":"boolean","description":"Why the webhook was disabled."}},"additionalProperties":false,"description":"Information on the current webhook status."},"createdAt":{"type":"string","format":"date-time","description":"Creation date","example":"2023-09-12T16:39:44.166Z\""},"updatedAt":{"type":"string","format":"date-time","description":"Last update date","example":"2023-09-12T16:39:44.166Z\""}},"required":["name","id","type","webhook","createdAt","updatedAt"],"additionalProperties":false},"description":"An array of notification integrations on the account."}},"required":["notificationIntegrations"],"additionalProperties":false,"description":"Result data."},"pagination":{"type":"object","properties":{"hasNextPage":{"type":"boolean","description":"Is there another page of results available?","example":false},"cursor":{"type":"string","description":"The cursor to access the next page of results."},"count":{"type":"number","format":"float","description":"The number of results returned by this request.","example":1}},"required":["hasNextPage","count"],"additionalProperties":false,"description":"Data about the endpoint pagination."}},"required":["data","pagination"],"additionalProperties":false,"description":"Response object."}}},"tags":["Integrations","team"],"security":[],"x-nf-permission-required":"Account > Team > Notifications > Read","x-nf-team-scoped":true,"x-nf-cli-command":["list","notifications"]},"v1-integrations-notifications-post":{"operationId":"postIntegrationsNotifications","summary":"Create notification integration","description":"Create a new notification integration.","parameters":[{"name":"notificationId","type":"string","required":true,"description":"ID of the notification integration","example":"example-notification-id","in":"path","schema":{"name":"notificationId","type":"string","required":true,"description":"ID of the notification integration","example":"example-notification-id","in":"path"}}],"responses":{"200":{"description":"Details of a notification integration","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The name of the notification integration.","example":"Example Notification"},"id":{"type":"string","description":"The ID of the notification integration.","example":"example-notification"},"type":{"type":"string","enum":["RAW_WEBHOOK","SLACK","DISCORD","TEAMS","TEAMS_WORKFLOWS"],"description":"The provider to send webhooks to. `RAW_WEBHOOK` allows you to send webhooks to a url of your choice, or you can choose a specific provider.","example":"RAW_WEBHOOK"},"webhook":{"type":"string","description":"The URL where webhooks will be sent.","example":"https://example.com/webhooks"},"createdAt":{"type":"string","format":"date-time","description":"Creation date","example":"2023-09-12T16:39:44.166Z\""},"updatedAt":{"type":"string","format":"date-time","description":"Last update date","example":"2023-09-12T16:39:44.166Z\""},"status":{"type":"object","properties":{"disabled":{"type":"boolean","description":"Is the webhook currently disabled?","example":false},"reason":{"type":"boolean","description":"Why the webhook was disabled."},"timeOfFirstFailedRequest":{"type":"string","format":"date-time","description":"The timestamp of the first failed webhook request."},"numberOfFailedRequests":{"type":"number","format":"float","description":"The number of failed webhook requests."}},"additionalProperties":false},"restricted":{"type":"boolean","description":"Should notifications be sent only for specific projects?","example":true},"projects":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9-]+$","example":"default-project"},"description":"An array of projects that notifications will be sent for."},"events":{"type":"object","properties":{"trigger:service:autoscaling:event":{"type":"boolean","example":true},"trigger:service:deployment:status-update":{"type":"boolean","example":true},"trigger:project:tailscale-regen-failure":{"type":"boolean","example":true},"trigger:addon-backup:start":{"type":"boolean","example":true},"trigger:addon-backup:success":{"type":"boolean","example":true},"trigger:addon-backup:failure":{"type":"boolean","example":true},"trigger:addon-backup:abort":{"type":"boolean","example":true},"trigger:build:start":{"type":"boolean","example":true},"trigger:build:success":{"type":"boolean","example":true},"trigger:build:failure":{"type":"boolean","example":true},"trigger:build:abort":{"type":"boolean","example":true},"trigger:job-run:start":{"type":"boolean","example":true},"trigger:job-run:success":{"type":"boolean","example":true},"trigger:job-run:failure":{"type":"boolean","example":true},"trigger:job-run:abort":{"type":"boolean","example":true},"trigger:job-run:terminate":{"type":"boolean","example":true},"trigger:release-flow-template-run:start":{"type":"boolean","example":true},"trigger:release-flow-template-run:update":{"type":"boolean","example":true},"trigger:release-flow-template-run:success":{"type":"boolean","example":true},"trigger:release-flow-template-run:failure":{"type":"boolean","example":true},"trigger:release-flow-template-run:aborted":{"type":"boolean","example":true},"trigger:template-run:queued":{"type":"boolean","example":true},"trigger:template-run:start":{"type":"boolean","example":true},"trigger:template-run:update":{"type":"boolean","example":true},"trigger:template-run:success":{"type":"boolean","example":true},"trigger:template-run:failure":{"type":"boolean","example":true},"trigger:resource:certificate-success":{"type":"boolean","example":true},"trigger:resource:certificate-final-failure":{"type":"boolean","example":true},"trigger:cdn:action-success":{"type":"boolean","example":true},"trigger:cdn:action-failure":{"type":"boolean","example":true},"trigger:cdn:action-delay":{"type":"boolean","example":true},"trigger:log-sink:paused":{"type":"boolean","example":true},"trigger:billing:billing-alert-exceeded":{"type":"boolean","example":true},"trigger:billing:invoice-payment-action-required":{"type":"boolean","example":true},"trigger:billing:invoice-payment-failed":{"type":"boolean","example":true},"trigger:billing:invoice-paid":{"type":"boolean","example":true},"trigger:billing:invoice-carried-over":{"type":"boolean","example":true},"trigger:infrastructure:service:container-crash":{"type":"boolean","example":true},"trigger:infrastructure:service:container-eviction":{"type":"boolean","example":true},"trigger:infrastructure:build:container-eviction":{"type":"boolean","example":true},"trigger:infrastructure:addon:container-crash":{"type":"boolean","example":true},"trigger:infrastructure:addon:container-eviction":{"type":"boolean","example":true},"trigger:infrastructure:job:container-crash":{"type":"boolean","example":true},"trigger:infrastructure:job:container-eviction":{"type":"boolean","example":true},"trigger:infrastructure:build:container-cpuSpike90":{"type":"boolean","example":true},"trigger:infrastructure:build:container-cpuSustained90":{"type":"boolean","example":true},"trigger:infrastructure:service:container-cpuSpike90":{"type":"boolean","example":true},"trigger:infrastructure:service:container-cpuSustained90":{"type":"boolean","example":true},"trigger:infrastructure:job:container-cpuSpike90":{"type":"boolean","example":true},"trigger:infrastructure:job:container-cpuSustained90":{"type":"boolean","example":true},"trigger:infrastructure:addon:container-cpuSpike90":{"type":"boolean","example":true},"trigger:infrastructure:addon:container-cpuSustained90":{"type":"boolean","example":true},"trigger:infrastructure:build:container-memorySpike90":{"type":"boolean","example":true},"trigger:infrastructure:build:container-memorySustained90":{"type":"boolean","example":true},"trigger:infrastructure:service:container-memorySpike90":{"type":"boolean","example":true},"trigger:infrastructure:service:container-memorySustained90":{"type":"boolean","example":true},"trigger:infrastructure:job:container-memorySpike90":{"type":"boolean","example":true},"trigger:infrastructure:job:container-memorySustained90":{"type":"boolean","example":true},"trigger:infrastructure:addon-volume:usage-75-exceeded":{"type":"boolean","example":true},"trigger:infrastructure:addon-volume:usage-90-exceeded":{"type":"boolean","example":true},"trigger:infrastructure:platform-volume:usage-75-exceeded":{"type":"boolean","example":true},"trigger:infrastructure:platform-volume:usage-90-exceeded":{"type":"boolean","example":true},"trigger:infrastructure:byoc:cluster:error":{"type":"boolean","example":true},"trigger:infrastructure:byoc:node-pool:error":{"type":"boolean","example":true},"trigger:infrastructure:byoc:scheduling:error":{"type":"boolean","example":true},"trigger:infrastructure:byoc:volume:error":{"type":"boolean","example":true},"trigger:infrastructure:byoc:volume:attach":{"type":"boolean","example":true}},"additionalProperties":false,"description":"Which events should notifications be sent for?"}},"required":["name","id","type","webhook","createdAt","updatedAt","restricted","projects","events"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Integrations"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The name of the notification integration.","example":"Example Notification"},"type":{"type":"string","enum":["RAW_WEBHOOK","DISCORD","TEAMS","TEAMS_WORKFLOWS"],"description":"The provider to send webhooks to. `RAW_WEBHOOK` allows you to send webhooks to a url of your choice, or you can choose a specific provider.","example":"RAW_WEBHOOK"},"webhook":{"type":"string","description":"The URL where webhooks will be sent.","example":"https://example.com/webhooks"},"secret":{"type":"string","description":"An optional secret that will be sent in the webhook header for verification. Supports `RAW_WEBHOOK` only."},"restricted":{"type":"boolean","description":"Should notifications be sent only for specific projects?","example":true,"default":false},"restrictions":{"type":"object","properties":{"tags":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether restriction by tag should be enabled.","example":false},"items":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"matchCondition":{"type":"string","enum":["and","or"],"description":"If all or any of the tags must be present on the target for it to match the condition.","example":"or"}},"additionalProperties":false,"description":"Configuration of tag restriction settings."}},"additionalProperties":false,"description":"Configuration of restrictions."},"projects":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9-]+$","example":"default-project"},"description":"An array of projects that notifications will be sent for.","default":[]},"events":{"type":"object","properties":{"trigger:service:autoscaling:event":{"type":"boolean","example":true},"trigger:service:deployment:status-update":{"type":"boolean","example":true},"trigger:project:tailscale-regen-failure":{"type":"boolean","example":true},"trigger:addon-backup:start":{"type":"boolean","example":true},"trigger:addon-backup:success":{"type":"boolean","example":true},"trigger:addon-backup:failure":{"type":"boolean","example":true},"trigger:addon-backup:abort":{"type":"boolean","example":true},"trigger:build:start":{"type":"boolean","example":true},"trigger:build:success":{"type":"boolean","example":true},"trigger:build:failure":{"type":"boolean","example":true},"trigger:build:abort":{"type":"boolean","example":true},"trigger:job-run:start":{"type":"boolean","example":true},"trigger:job-run:success":{"type":"boolean","example":true},"trigger:job-run:failure":{"type":"boolean","example":true},"trigger:job-run:abort":{"type":"boolean","example":true},"trigger:job-run:terminate":{"type":"boolean","example":true},"trigger:release-flow-template-run:start":{"type":"boolean","example":true},"trigger:release-flow-template-run:update":{"type":"boolean","example":true},"trigger:release-flow-template-run:success":{"type":"boolean","example":true},"trigger:release-flow-template-run:failure":{"type":"boolean","example":true},"trigger:release-flow-template-run:aborted":{"type":"boolean","example":true},"trigger:template-run:queued":{"type":"boolean","example":true},"trigger:template-run:start":{"type":"boolean","example":true},"trigger:template-run:update":{"type":"boolean","example":true},"trigger:template-run:success":{"type":"boolean","example":true},"trigger:template-run:failure":{"type":"boolean","example":true},"trigger:resource:certificate-success":{"type":"boolean","example":true},"trigger:resource:certificate-final-failure":{"type":"boolean","example":true},"trigger:cdn:action-success":{"type":"boolean","example":true},"trigger:cdn:action-failure":{"type":"boolean","example":true},"trigger:cdn:action-delay":{"type":"boolean","example":true},"trigger:log-sink:paused":{"type":"boolean","example":true},"trigger:billing:billing-alert-exceeded":{"type":"boolean","example":true},"trigger:billing:invoice-payment-action-required":{"type":"boolean","example":true},"trigger:billing:invoice-payment-failed":{"type":"boolean","example":true},"trigger:billing:invoice-paid":{"type":"boolean","example":true},"trigger:billing:invoice-carried-over":{"type":"boolean","example":true},"trigger:infrastructure:service:container-crash":{"type":"boolean","example":true},"trigger:infrastructure:service:container-eviction":{"type":"boolean","example":true},"trigger:infrastructure:build:container-eviction":{"type":"boolean","example":true},"trigger:infrastructure:addon:container-crash":{"type":"boolean","example":true},"trigger:infrastructure:addon:container-eviction":{"type":"boolean","example":true},"trigger:infrastructure:job:container-crash":{"type":"boolean","example":true},"trigger:infrastructure:job:container-eviction":{"type":"boolean","example":true},"trigger:infrastructure:build:container-cpuSpike90":{"type":"boolean","example":true},"trigger:infrastructure:build:container-cpuSustained90":{"type":"boolean","example":true},"trigger:infrastructure:service:container-cpuSpike90":{"type":"boolean","example":true},"trigger:infrastructure:service:container-cpuSustained90":{"type":"boolean","example":true},"trigger:infrastructure:job:container-cpuSpike90":{"type":"boolean","example":true},"trigger:infrastructure:job:container-cpuSustained90":{"type":"boolean","example":true},"trigger:infrastructure:addon:container-cpuSpike90":{"type":"boolean","example":true},"trigger:infrastructure:addon:container-cpuSustained90":{"type":"boolean","example":true},"trigger:infrastructure:build:container-memorySpike90":{"type":"boolean","example":true},"trigger:infrastructure:build:container-memorySustained90":{"type":"boolean","example":true},"trigger:infrastructure:service:container-memorySpike90":{"type":"boolean","example":true},"trigger:infrastructure:service:container-memorySustained90":{"type":"boolean","example":true},"trigger:infrastructure:job:container-memorySpike90":{"type":"boolean","example":true},"trigger:infrastructure:job:container-memorySustained90":{"type":"boolean","example":true},"trigger:infrastructure:addon-volume:usage-75-exceeded":{"type":"boolean","example":true},"trigger:infrastructure:addon-volume:usage-90-exceeded":{"type":"boolean","example":true},"trigger:infrastructure:platform-volume:usage-75-exceeded":{"type":"boolean","example":true},"trigger:infrastructure:platform-volume:usage-90-exceeded":{"type":"boolean","example":true},"trigger:infrastructure:byoc:cluster:error":{"type":"boolean","example":true},"trigger:infrastructure:byoc:node-pool:error":{"type":"boolean","example":true},"trigger:infrastructure:byoc:scheduling:error":{"type":"boolean","example":true},"trigger:infrastructure:byoc:volume:error":{"type":"boolean","example":true},"trigger:infrastructure:byoc:volume:attach":{"type":"boolean","example":true}},"additionalProperties":false,"description":"Which events should notifications be sent for?"}},"required":["name","type","webhook","events"],"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Account > Team > Notifications > Manage","x-nf-team-scoped":true,"x-nf-cli-command":["create","notification"]},"v1-integrations-notifications-post-team-scoped":{"operationId":"postIntegrationsNotifications","summary":"Create notification integration","description":"Create a new notification integration.","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"notificationId","type":"string","required":true,"description":"ID of the notification integration","example":"example-notification-id","in":"path","schema":{"name":"notificationId","type":"string","required":true,"description":"ID of the notification integration","example":"example-notification-id","in":"path"}}],"responses":{"200":{"description":"Details of a notification integration","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The name of the notification integration.","example":"Example Notification"},"id":{"type":"string","description":"The ID of the notification integration.","example":"example-notification"},"type":{"type":"string","enum":["RAW_WEBHOOK","SLACK","DISCORD","TEAMS","TEAMS_WORKFLOWS"],"description":"The provider to send webhooks to. `RAW_WEBHOOK` allows you to send webhooks to a url of your choice, or you can choose a specific provider.","example":"RAW_WEBHOOK"},"webhook":{"type":"string","description":"The URL where webhooks will be sent.","example":"https://example.com/webhooks"},"createdAt":{"type":"string","format":"date-time","description":"Creation date","example":"2023-09-12T16:39:44.166Z\""},"updatedAt":{"type":"string","format":"date-time","description":"Last update date","example":"2023-09-12T16:39:44.166Z\""},"status":{"type":"object","properties":{"disabled":{"type":"boolean","description":"Is the webhook currently disabled?","example":false},"reason":{"type":"boolean","description":"Why the webhook was disabled."},"timeOfFirstFailedRequest":{"type":"string","format":"date-time","description":"The timestamp of the first failed webhook request."},"numberOfFailedRequests":{"type":"number","format":"float","description":"The number of failed webhook requests."}},"additionalProperties":false},"restricted":{"type":"boolean","description":"Should notifications be sent only for specific projects?","example":true},"projects":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9-]+$","example":"default-project"},"description":"An array of projects that notifications will be sent for."},"events":{"type":"object","properties":{"trigger:service:autoscaling:event":{"type":"boolean","example":true},"trigger:service:deployment:status-update":{"type":"boolean","example":true},"trigger:project:tailscale-regen-failure":{"type":"boolean","example":true},"trigger:addon-backup:start":{"type":"boolean","example":true},"trigger:addon-backup:success":{"type":"boolean","example":true},"trigger:addon-backup:failure":{"type":"boolean","example":true},"trigger:addon-backup:abort":{"type":"boolean","example":true},"trigger:build:start":{"type":"boolean","example":true},"trigger:build:success":{"type":"boolean","example":true},"trigger:build:failure":{"type":"boolean","example":true},"trigger:build:abort":{"type":"boolean","example":true},"trigger:job-run:start":{"type":"boolean","example":true},"trigger:job-run:success":{"type":"boolean","example":true},"trigger:job-run:failure":{"type":"boolean","example":true},"trigger:job-run:abort":{"type":"boolean","example":true},"trigger:job-run:terminate":{"type":"boolean","example":true},"trigger:release-flow-template-run:start":{"type":"boolean","example":true},"trigger:release-flow-template-run:update":{"type":"boolean","example":true},"trigger:release-flow-template-run:success":{"type":"boolean","example":true},"trigger:release-flow-template-run:failure":{"type":"boolean","example":true},"trigger:release-flow-template-run:aborted":{"type":"boolean","example":true},"trigger:template-run:queued":{"type":"boolean","example":true},"trigger:template-run:start":{"type":"boolean","example":true},"trigger:template-run:update":{"type":"boolean","example":true},"trigger:template-run:success":{"type":"boolean","example":true},"trigger:template-run:failure":{"type":"boolean","example":true},"trigger:resource:certificate-success":{"type":"boolean","example":true},"trigger:resource:certificate-final-failure":{"type":"boolean","example":true},"trigger:cdn:action-success":{"type":"boolean","example":true},"trigger:cdn:action-failure":{"type":"boolean","example":true},"trigger:cdn:action-delay":{"type":"boolean","example":true},"trigger:log-sink:paused":{"type":"boolean","example":true},"trigger:billing:billing-alert-exceeded":{"type":"boolean","example":true},"trigger:billing:invoice-payment-action-required":{"type":"boolean","example":true},"trigger:billing:invoice-payment-failed":{"type":"boolean","example":true},"trigger:billing:invoice-paid":{"type":"boolean","example":true},"trigger:billing:invoice-carried-over":{"type":"boolean","example":true},"trigger:infrastructure:service:container-crash":{"type":"boolean","example":true},"trigger:infrastructure:service:container-eviction":{"type":"boolean","example":true},"trigger:infrastructure:build:container-eviction":{"type":"boolean","example":true},"trigger:infrastructure:addon:container-crash":{"type":"boolean","example":true},"trigger:infrastructure:addon:container-eviction":{"type":"boolean","example":true},"trigger:infrastructure:job:container-crash":{"type":"boolean","example":true},"trigger:infrastructure:job:container-eviction":{"type":"boolean","example":true},"trigger:infrastructure:build:container-cpuSpike90":{"type":"boolean","example":true},"trigger:infrastructure:build:container-cpuSustained90":{"type":"boolean","example":true},"trigger:infrastructure:service:container-cpuSpike90":{"type":"boolean","example":true},"trigger:infrastructure:service:container-cpuSustained90":{"type":"boolean","example":true},"trigger:infrastructure:job:container-cpuSpike90":{"type":"boolean","example":true},"trigger:infrastructure:job:container-cpuSustained90":{"type":"boolean","example":true},"trigger:infrastructure:addon:container-cpuSpike90":{"type":"boolean","example":true},"trigger:infrastructure:addon:container-cpuSustained90":{"type":"boolean","example":true},"trigger:infrastructure:build:container-memorySpike90":{"type":"boolean","example":true},"trigger:infrastructure:build:container-memorySustained90":{"type":"boolean","example":true},"trigger:infrastructure:service:container-memorySpike90":{"type":"boolean","example":true},"trigger:infrastructure:service:container-memorySustained90":{"type":"boolean","example":true},"trigger:infrastructure:job:container-memorySpike90":{"type":"boolean","example":true},"trigger:infrastructure:job:container-memorySustained90":{"type":"boolean","example":true},"trigger:infrastructure:addon-volume:usage-75-exceeded":{"type":"boolean","example":true},"trigger:infrastructure:addon-volume:usage-90-exceeded":{"type":"boolean","example":true},"trigger:infrastructure:platform-volume:usage-75-exceeded":{"type":"boolean","example":true},"trigger:infrastructure:platform-volume:usage-90-exceeded":{"type":"boolean","example":true},"trigger:infrastructure:byoc:cluster:error":{"type":"boolean","example":true},"trigger:infrastructure:byoc:node-pool:error":{"type":"boolean","example":true},"trigger:infrastructure:byoc:scheduling:error":{"type":"boolean","example":true},"trigger:infrastructure:byoc:volume:error":{"type":"boolean","example":true},"trigger:infrastructure:byoc:volume:attach":{"type":"boolean","example":true}},"additionalProperties":false,"description":"Which events should notifications be sent for?"}},"required":["name","id","type","webhook","createdAt","updatedAt","restricted","projects","events"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Integrations","team"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The name of the notification integration.","example":"Example Notification"},"type":{"type":"string","enum":["RAW_WEBHOOK","DISCORD","TEAMS","TEAMS_WORKFLOWS"],"description":"The provider to send webhooks to. `RAW_WEBHOOK` allows you to send webhooks to a url of your choice, or you can choose a specific provider.","example":"RAW_WEBHOOK"},"webhook":{"type":"string","description":"The URL where webhooks will be sent.","example":"https://example.com/webhooks"},"secret":{"type":"string","description":"An optional secret that will be sent in the webhook header for verification. Supports `RAW_WEBHOOK` only."},"restricted":{"type":"boolean","description":"Should notifications be sent only for specific projects?","example":true,"default":false},"restrictions":{"type":"object","properties":{"tags":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether restriction by tag should be enabled.","example":false},"items":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"matchCondition":{"type":"string","enum":["and","or"],"description":"If all or any of the tags must be present on the target for it to match the condition.","example":"or"}},"additionalProperties":false,"description":"Configuration of tag restriction settings."}},"additionalProperties":false,"description":"Configuration of restrictions."},"projects":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9-]+$","example":"default-project"},"description":"An array of projects that notifications will be sent for.","default":[]},"events":{"type":"object","properties":{"trigger:service:autoscaling:event":{"type":"boolean","example":true},"trigger:service:deployment:status-update":{"type":"boolean","example":true},"trigger:project:tailscale-regen-failure":{"type":"boolean","example":true},"trigger:addon-backup:start":{"type":"boolean","example":true},"trigger:addon-backup:success":{"type":"boolean","example":true},"trigger:addon-backup:failure":{"type":"boolean","example":true},"trigger:addon-backup:abort":{"type":"boolean","example":true},"trigger:build:start":{"type":"boolean","example":true},"trigger:build:success":{"type":"boolean","example":true},"trigger:build:failure":{"type":"boolean","example":true},"trigger:build:abort":{"type":"boolean","example":true},"trigger:job-run:start":{"type":"boolean","example":true},"trigger:job-run:success":{"type":"boolean","example":true},"trigger:job-run:failure":{"type":"boolean","example":true},"trigger:job-run:abort":{"type":"boolean","example":true},"trigger:job-run:terminate":{"type":"boolean","example":true},"trigger:release-flow-template-run:start":{"type":"boolean","example":true},"trigger:release-flow-template-run:update":{"type":"boolean","example":true},"trigger:release-flow-template-run:success":{"type":"boolean","example":true},"trigger:release-flow-template-run:failure":{"type":"boolean","example":true},"trigger:release-flow-template-run:aborted":{"type":"boolean","example":true},"trigger:template-run:queued":{"type":"boolean","example":true},"trigger:template-run:start":{"type":"boolean","example":true},"trigger:template-run:update":{"type":"boolean","example":true},"trigger:template-run:success":{"type":"boolean","example":true},"trigger:template-run:failure":{"type":"boolean","example":true},"trigger:resource:certificate-success":{"type":"boolean","example":true},"trigger:resource:certificate-final-failure":{"type":"boolean","example":true},"trigger:cdn:action-success":{"type":"boolean","example":true},"trigger:cdn:action-failure":{"type":"boolean","example":true},"trigger:cdn:action-delay":{"type":"boolean","example":true},"trigger:log-sink:paused":{"type":"boolean","example":true},"trigger:billing:billing-alert-exceeded":{"type":"boolean","example":true},"trigger:billing:invoice-payment-action-required":{"type":"boolean","example":true},"trigger:billing:invoice-payment-failed":{"type":"boolean","example":true},"trigger:billing:invoice-paid":{"type":"boolean","example":true},"trigger:billing:invoice-carried-over":{"type":"boolean","example":true},"trigger:infrastructure:service:container-crash":{"type":"boolean","example":true},"trigger:infrastructure:service:container-eviction":{"type":"boolean","example":true},"trigger:infrastructure:build:container-eviction":{"type":"boolean","example":true},"trigger:infrastructure:addon:container-crash":{"type":"boolean","example":true},"trigger:infrastructure:addon:container-eviction":{"type":"boolean","example":true},"trigger:infrastructure:job:container-crash":{"type":"boolean","example":true},"trigger:infrastructure:job:container-eviction":{"type":"boolean","example":true},"trigger:infrastructure:build:container-cpuSpike90":{"type":"boolean","example":true},"trigger:infrastructure:build:container-cpuSustained90":{"type":"boolean","example":true},"trigger:infrastructure:service:container-cpuSpike90":{"type":"boolean","example":true},"trigger:infrastructure:service:container-cpuSustained90":{"type":"boolean","example":true},"trigger:infrastructure:job:container-cpuSpike90":{"type":"boolean","example":true},"trigger:infrastructure:job:container-cpuSustained90":{"type":"boolean","example":true},"trigger:infrastructure:addon:container-cpuSpike90":{"type":"boolean","example":true},"trigger:infrastructure:addon:container-cpuSustained90":{"type":"boolean","example":true},"trigger:infrastructure:build:container-memorySpike90":{"type":"boolean","example":true},"trigger:infrastructure:build:container-memorySustained90":{"type":"boolean","example":true},"trigger:infrastructure:service:container-memorySpike90":{"type":"boolean","example":true},"trigger:infrastructure:service:container-memorySustained90":{"type":"boolean","example":true},"trigger:infrastructure:job:container-memorySpike90":{"type":"boolean","example":true},"trigger:infrastructure:job:container-memorySustained90":{"type":"boolean","example":true},"trigger:infrastructure:addon-volume:usage-75-exceeded":{"type":"boolean","example":true},"trigger:infrastructure:addon-volume:usage-90-exceeded":{"type":"boolean","example":true},"trigger:infrastructure:platform-volume:usage-75-exceeded":{"type":"boolean","example":true},"trigger:infrastructure:platform-volume:usage-90-exceeded":{"type":"boolean","example":true},"trigger:infrastructure:byoc:cluster:error":{"type":"boolean","example":true},"trigger:infrastructure:byoc:node-pool:error":{"type":"boolean","example":true},"trigger:infrastructure:byoc:scheduling:error":{"type":"boolean","example":true},"trigger:infrastructure:byoc:volume:error":{"type":"boolean","example":true},"trigger:infrastructure:byoc:volume:attach":{"type":"boolean","example":true}},"additionalProperties":false,"description":"Which events should notifications be sent for?"}},"required":["name","type","webhook","events"],"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Account > Team > Notifications > Manage","x-nf-team-scoped":true,"x-nf-cli-command":["create","notification"]},"v1-integrations-notifications--notificationId--get":{"operationId":"getIntegrationsNotificationsNotificationid","summary":"Get notification integration","description":"Get details about a notification integration.","parameters":[{"name":"notificationId","type":"string","required":true,"description":"ID of the notification integration","example":"example-notification-id","in":"path","schema":{"name":"notificationId","type":"string","required":true,"description":"ID of the notification integration","example":"example-notification-id","in":"path"}}],"responses":{"200":{"description":"Details of a notification integration","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The name of the notification integration.","example":"Example Notification"},"id":{"type":"string","description":"The ID of the notification integration.","example":"example-notification"},"type":{"type":"string","enum":["RAW_WEBHOOK","SLACK","DISCORD","TEAMS","TEAMS_WORKFLOWS"],"description":"The provider to send webhooks to. `RAW_WEBHOOK` allows you to send webhooks to a url of your choice, or you can choose a specific provider.","example":"RAW_WEBHOOK"},"webhook":{"type":"string","description":"The URL where webhooks will be sent.","example":"https://example.com/webhooks"},"createdAt":{"type":"string","format":"date-time","description":"Creation date","example":"2023-09-12T16:39:44.166Z\""},"updatedAt":{"type":"string","format":"date-time","description":"Last update date","example":"2023-09-12T16:39:44.166Z\""},"status":{"type":"object","properties":{"disabled":{"type":"boolean","description":"Is the webhook currently disabled?","example":false},"reason":{"type":"boolean","description":"Why the webhook was disabled."},"timeOfFirstFailedRequest":{"type":"string","format":"date-time","description":"The timestamp of the first failed webhook request."},"numberOfFailedRequests":{"type":"number","format":"float","description":"The number of failed webhook requests."}},"additionalProperties":false},"restricted":{"type":"boolean","description":"Should notifications be sent only for specific projects?","example":true},"projects":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9-]+$","example":"default-project"},"description":"An array of projects that notifications will be sent for."},"events":{"type":"object","properties":{"trigger:service:autoscaling:event":{"type":"boolean","example":true},"trigger:service:deployment:status-update":{"type":"boolean","example":true},"trigger:project:tailscale-regen-failure":{"type":"boolean","example":true},"trigger:addon-backup:start":{"type":"boolean","example":true},"trigger:addon-backup:success":{"type":"boolean","example":true},"trigger:addon-backup:failure":{"type":"boolean","example":true},"trigger:addon-backup:abort":{"type":"boolean","example":true},"trigger:build:start":{"type":"boolean","example":true},"trigger:build:success":{"type":"boolean","example":true},"trigger:build:failure":{"type":"boolean","example":true},"trigger:build:abort":{"type":"boolean","example":true},"trigger:job-run:start":{"type":"boolean","example":true},"trigger:job-run:success":{"type":"boolean","example":true},"trigger:job-run:failure":{"type":"boolean","example":true},"trigger:job-run:abort":{"type":"boolean","example":true},"trigger:job-run:terminate":{"type":"boolean","example":true},"trigger:release-flow-template-run:start":{"type":"boolean","example":true},"trigger:release-flow-template-run:update":{"type":"boolean","example":true},"trigger:release-flow-template-run:success":{"type":"boolean","example":true},"trigger:release-flow-template-run:failure":{"type":"boolean","example":true},"trigger:release-flow-template-run:aborted":{"type":"boolean","example":true},"trigger:template-run:queued":{"type":"boolean","example":true},"trigger:template-run:start":{"type":"boolean","example":true},"trigger:template-run:update":{"type":"boolean","example":true},"trigger:template-run:success":{"type":"boolean","example":true},"trigger:template-run:failure":{"type":"boolean","example":true},"trigger:resource:certificate-success":{"type":"boolean","example":true},"trigger:resource:certificate-final-failure":{"type":"boolean","example":true},"trigger:cdn:action-success":{"type":"boolean","example":true},"trigger:cdn:action-failure":{"type":"boolean","example":true},"trigger:cdn:action-delay":{"type":"boolean","example":true},"trigger:log-sink:paused":{"type":"boolean","example":true},"trigger:billing:billing-alert-exceeded":{"type":"boolean","example":true},"trigger:billing:invoice-payment-action-required":{"type":"boolean","example":true},"trigger:billing:invoice-payment-failed":{"type":"boolean","example":true},"trigger:billing:invoice-paid":{"type":"boolean","example":true},"trigger:billing:invoice-carried-over":{"type":"boolean","example":true},"trigger:infrastructure:service:container-crash":{"type":"boolean","example":true},"trigger:infrastructure:service:container-eviction":{"type":"boolean","example":true},"trigger:infrastructure:build:container-eviction":{"type":"boolean","example":true},"trigger:infrastructure:addon:container-crash":{"type":"boolean","example":true},"trigger:infrastructure:addon:container-eviction":{"type":"boolean","example":true},"trigger:infrastructure:job:container-crash":{"type":"boolean","example":true},"trigger:infrastructure:job:container-eviction":{"type":"boolean","example":true},"trigger:infrastructure:build:container-cpuSpike90":{"type":"boolean","example":true},"trigger:infrastructure:build:container-cpuSustained90":{"type":"boolean","example":true},"trigger:infrastructure:service:container-cpuSpike90":{"type":"boolean","example":true},"trigger:infrastructure:service:container-cpuSustained90":{"type":"boolean","example":true},"trigger:infrastructure:job:container-cpuSpike90":{"type":"boolean","example":true},"trigger:infrastructure:job:container-cpuSustained90":{"type":"boolean","example":true},"trigger:infrastructure:addon:container-cpuSpike90":{"type":"boolean","example":true},"trigger:infrastructure:addon:container-cpuSustained90":{"type":"boolean","example":true},"trigger:infrastructure:build:container-memorySpike90":{"type":"boolean","example":true},"trigger:infrastructure:build:container-memorySustained90":{"type":"boolean","example":true},"trigger:infrastructure:service:container-memorySpike90":{"type":"boolean","example":true},"trigger:infrastructure:service:container-memorySustained90":{"type":"boolean","example":true},"trigger:infrastructure:job:container-memorySpike90":{"type":"boolean","example":true},"trigger:infrastructure:job:container-memorySustained90":{"type":"boolean","example":true},"trigger:infrastructure:addon-volume:usage-75-exceeded":{"type":"boolean","example":true},"trigger:infrastructure:addon-volume:usage-90-exceeded":{"type":"boolean","example":true},"trigger:infrastructure:platform-volume:usage-75-exceeded":{"type":"boolean","example":true},"trigger:infrastructure:platform-volume:usage-90-exceeded":{"type":"boolean","example":true},"trigger:infrastructure:byoc:cluster:error":{"type":"boolean","example":true},"trigger:infrastructure:byoc:node-pool:error":{"type":"boolean","example":true},"trigger:infrastructure:byoc:scheduling:error":{"type":"boolean","example":true},"trigger:infrastructure:byoc:volume:error":{"type":"boolean","example":true},"trigger:infrastructure:byoc:volume:attach":{"type":"boolean","example":true}},"additionalProperties":false,"description":"Which events should notifications be sent for?"}},"required":["name","id","type","webhook","createdAt","updatedAt","restricted","projects","events"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Integrations"],"security":[],"x-nf-permission-required":"Account > Team > Notifications > Read","x-nf-team-scoped":true,"x-nf-cli-command":["get","notification"]},"v1-integrations-notifications--notificationId--get-team-scoped":{"operationId":"getIntegrationsNotificationsNotificationid","summary":"Get notification integration","description":"Get details about a notification integration.","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"notificationId","type":"string","required":true,"description":"ID of the notification integration","example":"example-notification-id","in":"path","schema":{"name":"notificationId","type":"string","required":true,"description":"ID of the notification integration","example":"example-notification-id","in":"path"}}],"responses":{"200":{"description":"Details of a notification integration","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The name of the notification integration.","example":"Example Notification"},"id":{"type":"string","description":"The ID of the notification integration.","example":"example-notification"},"type":{"type":"string","enum":["RAW_WEBHOOK","SLACK","DISCORD","TEAMS","TEAMS_WORKFLOWS"],"description":"The provider to send webhooks to. `RAW_WEBHOOK` allows you to send webhooks to a url of your choice, or you can choose a specific provider.","example":"RAW_WEBHOOK"},"webhook":{"type":"string","description":"The URL where webhooks will be sent.","example":"https://example.com/webhooks"},"createdAt":{"type":"string","format":"date-time","description":"Creation date","example":"2023-09-12T16:39:44.166Z\""},"updatedAt":{"type":"string","format":"date-time","description":"Last update date","example":"2023-09-12T16:39:44.166Z\""},"status":{"type":"object","properties":{"disabled":{"type":"boolean","description":"Is the webhook currently disabled?","example":false},"reason":{"type":"boolean","description":"Why the webhook was disabled."},"timeOfFirstFailedRequest":{"type":"string","format":"date-time","description":"The timestamp of the first failed webhook request."},"numberOfFailedRequests":{"type":"number","format":"float","description":"The number of failed webhook requests."}},"additionalProperties":false},"restricted":{"type":"boolean","description":"Should notifications be sent only for specific projects?","example":true},"projects":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9-]+$","example":"default-project"},"description":"An array of projects that notifications will be sent for."},"events":{"type":"object","properties":{"trigger:service:autoscaling:event":{"type":"boolean","example":true},"trigger:service:deployment:status-update":{"type":"boolean","example":true},"trigger:project:tailscale-regen-failure":{"type":"boolean","example":true},"trigger:addon-backup:start":{"type":"boolean","example":true},"trigger:addon-backup:success":{"type":"boolean","example":true},"trigger:addon-backup:failure":{"type":"boolean","example":true},"trigger:addon-backup:abort":{"type":"boolean","example":true},"trigger:build:start":{"type":"boolean","example":true},"trigger:build:success":{"type":"boolean","example":true},"trigger:build:failure":{"type":"boolean","example":true},"trigger:build:abort":{"type":"boolean","example":true},"trigger:job-run:start":{"type":"boolean","example":true},"trigger:job-run:success":{"type":"boolean","example":true},"trigger:job-run:failure":{"type":"boolean","example":true},"trigger:job-run:abort":{"type":"boolean","example":true},"trigger:job-run:terminate":{"type":"boolean","example":true},"trigger:release-flow-template-run:start":{"type":"boolean","example":true},"trigger:release-flow-template-run:update":{"type":"boolean","example":true},"trigger:release-flow-template-run:success":{"type":"boolean","example":true},"trigger:release-flow-template-run:failure":{"type":"boolean","example":true},"trigger:release-flow-template-run:aborted":{"type":"boolean","example":true},"trigger:template-run:queued":{"type":"boolean","example":true},"trigger:template-run:start":{"type":"boolean","example":true},"trigger:template-run:update":{"type":"boolean","example":true},"trigger:template-run:success":{"type":"boolean","example":true},"trigger:template-run:failure":{"type":"boolean","example":true},"trigger:resource:certificate-success":{"type":"boolean","example":true},"trigger:resource:certificate-final-failure":{"type":"boolean","example":true},"trigger:cdn:action-success":{"type":"boolean","example":true},"trigger:cdn:action-failure":{"type":"boolean","example":true},"trigger:cdn:action-delay":{"type":"boolean","example":true},"trigger:log-sink:paused":{"type":"boolean","example":true},"trigger:billing:billing-alert-exceeded":{"type":"boolean","example":true},"trigger:billing:invoice-payment-action-required":{"type":"boolean","example":true},"trigger:billing:invoice-payment-failed":{"type":"boolean","example":true},"trigger:billing:invoice-paid":{"type":"boolean","example":true},"trigger:billing:invoice-carried-over":{"type":"boolean","example":true},"trigger:infrastructure:service:container-crash":{"type":"boolean","example":true},"trigger:infrastructure:service:container-eviction":{"type":"boolean","example":true},"trigger:infrastructure:build:container-eviction":{"type":"boolean","example":true},"trigger:infrastructure:addon:container-crash":{"type":"boolean","example":true},"trigger:infrastructure:addon:container-eviction":{"type":"boolean","example":true},"trigger:infrastructure:job:container-crash":{"type":"boolean","example":true},"trigger:infrastructure:job:container-eviction":{"type":"boolean","example":true},"trigger:infrastructure:build:container-cpuSpike90":{"type":"boolean","example":true},"trigger:infrastructure:build:container-cpuSustained90":{"type":"boolean","example":true},"trigger:infrastructure:service:container-cpuSpike90":{"type":"boolean","example":true},"trigger:infrastructure:service:container-cpuSustained90":{"type":"boolean","example":true},"trigger:infrastructure:job:container-cpuSpike90":{"type":"boolean","example":true},"trigger:infrastructure:job:container-cpuSustained90":{"type":"boolean","example":true},"trigger:infrastructure:addon:container-cpuSpike90":{"type":"boolean","example":true},"trigger:infrastructure:addon:container-cpuSustained90":{"type":"boolean","example":true},"trigger:infrastructure:build:container-memorySpike90":{"type":"boolean","example":true},"trigger:infrastructure:build:container-memorySustained90":{"type":"boolean","example":true},"trigger:infrastructure:service:container-memorySpike90":{"type":"boolean","example":true},"trigger:infrastructure:service:container-memorySustained90":{"type":"boolean","example":true},"trigger:infrastructure:job:container-memorySpike90":{"type":"boolean","example":true},"trigger:infrastructure:job:container-memorySustained90":{"type":"boolean","example":true},"trigger:infrastructure:addon-volume:usage-75-exceeded":{"type":"boolean","example":true},"trigger:infrastructure:addon-volume:usage-90-exceeded":{"type":"boolean","example":true},"trigger:infrastructure:platform-volume:usage-75-exceeded":{"type":"boolean","example":true},"trigger:infrastructure:platform-volume:usage-90-exceeded":{"type":"boolean","example":true},"trigger:infrastructure:byoc:cluster:error":{"type":"boolean","example":true},"trigger:infrastructure:byoc:node-pool:error":{"type":"boolean","example":true},"trigger:infrastructure:byoc:scheduling:error":{"type":"boolean","example":true},"trigger:infrastructure:byoc:volume:error":{"type":"boolean","example":true},"trigger:infrastructure:byoc:volume:attach":{"type":"boolean","example":true}},"additionalProperties":false,"description":"Which events should notifications be sent for?"}},"required":["name","id","type","webhook","createdAt","updatedAt","restricted","projects","events"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Integrations","team"],"security":[],"x-nf-permission-required":"Account > Team > Notifications > Read","x-nf-team-scoped":true,"x-nf-cli-command":["get","notification"]},"v1-integrations-notifications--notificationId--post":{"operationId":"postIntegrationsNotificationsNotificationid","summary":"Update notification integration","description":"Updates a notification integration","parameters":[{"name":"notificationId","type":"string","required":true,"description":"ID of the notification integration","example":"example-notification-id","in":"path","schema":{"name":"notificationId","type":"string","required":true,"description":"ID of the notification integration","example":"example-notification-id","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Integrations"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The name of the notification integration.","example":"Example Notification"},"webhook":{"type":"string","description":"The URL where webhooks will be sent.","example":"https://example.com/webhooks"},"secret":{"type":"string","description":"An optional secret that will be sent in the webhook header for verification. Supports `RAW_WEBHOOK` only."},"restricted":{"type":"boolean","description":"Should notifications be sent only for specific projects?","example":true},"projects":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9-]+$","example":"default-project"},"description":"An array of projects that notifications will be sent for."},"restrictions":{"type":"object","properties":{"tags":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether restriction by tag should be enabled.","example":false},"items":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"matchCondition":{"type":"string","enum":["and","or"],"description":"If all or any of the tags must be present on the target for it to match the condition.","example":"or"}},"additionalProperties":false,"description":"Configuration of tag restriction settings."}},"additionalProperties":false,"description":"Configuration of restrictions."},"events":{"type":"object","properties":{"trigger:service:autoscaling:event":{"type":"boolean","example":true},"trigger:service:deployment:status-update":{"type":"boolean","example":true},"trigger:project:tailscale-regen-failure":{"type":"boolean","example":true},"trigger:addon-backup:start":{"type":"boolean","example":true},"trigger:addon-backup:success":{"type":"boolean","example":true},"trigger:addon-backup:failure":{"type":"boolean","example":true},"trigger:addon-backup:abort":{"type":"boolean","example":true},"trigger:build:start":{"type":"boolean","example":true},"trigger:build:success":{"type":"boolean","example":true},"trigger:build:failure":{"type":"boolean","example":true},"trigger:build:abort":{"type":"boolean","example":true},"trigger:job-run:start":{"type":"boolean","example":true},"trigger:job-run:success":{"type":"boolean","example":true},"trigger:job-run:failure":{"type":"boolean","example":true},"trigger:job-run:abort":{"type":"boolean","example":true},"trigger:job-run:terminate":{"type":"boolean","example":true},"trigger:release-flow-template-run:start":{"type":"boolean","example":true},"trigger:release-flow-template-run:update":{"type":"boolean","example":true},"trigger:release-flow-template-run:success":{"type":"boolean","example":true},"trigger:release-flow-template-run:failure":{"type":"boolean","example":true},"trigger:release-flow-template-run:aborted":{"type":"boolean","example":true},"trigger:template-run:queued":{"type":"boolean","example":true},"trigger:template-run:start":{"type":"boolean","example":true},"trigger:template-run:update":{"type":"boolean","example":true},"trigger:template-run:success":{"type":"boolean","example":true},"trigger:template-run:failure":{"type":"boolean","example":true},"trigger:resource:certificate-success":{"type":"boolean","example":true},"trigger:resource:certificate-final-failure":{"type":"boolean","example":true},"trigger:cdn:action-success":{"type":"boolean","example":true},"trigger:cdn:action-failure":{"type":"boolean","example":true},"trigger:cdn:action-delay":{"type":"boolean","example":true},"trigger:log-sink:paused":{"type":"boolean","example":true},"trigger:billing:billing-alert-exceeded":{"type":"boolean","example":true},"trigger:billing:invoice-payment-action-required":{"type":"boolean","example":true},"trigger:billing:invoice-payment-failed":{"type":"boolean","example":true},"trigger:billing:invoice-paid":{"type":"boolean","example":true},"trigger:billing:invoice-carried-over":{"type":"boolean","example":true},"trigger:infrastructure:service:container-crash":{"type":"boolean","example":true},"trigger:infrastructure:service:container-eviction":{"type":"boolean","example":true},"trigger:infrastructure:build:container-eviction":{"type":"boolean","example":true},"trigger:infrastructure:addon:container-crash":{"type":"boolean","example":true},"trigger:infrastructure:addon:container-eviction":{"type":"boolean","example":true},"trigger:infrastructure:job:container-crash":{"type":"boolean","example":true},"trigger:infrastructure:job:container-eviction":{"type":"boolean","example":true},"trigger:infrastructure:build:container-cpuSpike90":{"type":"boolean","example":true},"trigger:infrastructure:build:container-cpuSustained90":{"type":"boolean","example":true},"trigger:infrastructure:service:container-cpuSpike90":{"type":"boolean","example":true},"trigger:infrastructure:service:container-cpuSustained90":{"type":"boolean","example":true},"trigger:infrastructure:job:container-cpuSpike90":{"type":"boolean","example":true},"trigger:infrastructure:job:container-cpuSustained90":{"type":"boolean","example":true},"trigger:infrastructure:addon:container-cpuSpike90":{"type":"boolean","example":true},"trigger:infrastructure:addon:container-cpuSustained90":{"type":"boolean","example":true},"trigger:infrastructure:build:container-memorySpike90":{"type":"boolean","example":true},"trigger:infrastructure:build:container-memorySustained90":{"type":"boolean","example":true},"trigger:infrastructure:service:container-memorySpike90":{"type":"boolean","example":true},"trigger:infrastructure:service:container-memorySustained90":{"type":"boolean","example":true},"trigger:infrastructure:job:container-memorySpike90":{"type":"boolean","example":true},"trigger:infrastructure:job:container-memorySustained90":{"type":"boolean","example":true},"trigger:infrastructure:addon-volume:usage-75-exceeded":{"type":"boolean","example":true},"trigger:infrastructure:addon-volume:usage-90-exceeded":{"type":"boolean","example":true},"trigger:infrastructure:platform-volume:usage-75-exceeded":{"type":"boolean","example":true},"trigger:infrastructure:platform-volume:usage-90-exceeded":{"type":"boolean","example":true},"trigger:infrastructure:byoc:cluster:error":{"type":"boolean","example":true},"trigger:infrastructure:byoc:node-pool:error":{"type":"boolean","example":true},"trigger:infrastructure:byoc:scheduling:error":{"type":"boolean","example":true},"trigger:infrastructure:byoc:volume:error":{"type":"boolean","example":true},"trigger:infrastructure:byoc:volume:attach":{"type":"boolean","example":true}},"additionalProperties":false,"description":"Which events should notifications be sent for?"}},"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Account > Team > Notifications > Manage","x-nf-team-scoped":true,"x-nf-cli-command":["update","notification"]},"v1-integrations-notifications--notificationId--post-team-scoped":{"operationId":"postIntegrationsNotificationsNotificationid","summary":"Update notification integration","description":"Updates a notification integration","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"notificationId","type":"string","required":true,"description":"ID of the notification integration","example":"example-notification-id","in":"path","schema":{"name":"notificationId","type":"string","required":true,"description":"ID of the notification integration","example":"example-notification-id","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Integrations","team"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The name of the notification integration.","example":"Example Notification"},"webhook":{"type":"string","description":"The URL where webhooks will be sent.","example":"https://example.com/webhooks"},"secret":{"type":"string","description":"An optional secret that will be sent in the webhook header for verification. Supports `RAW_WEBHOOK` only."},"restricted":{"type":"boolean","description":"Should notifications be sent only for specific projects?","example":true},"projects":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9-]+$","example":"default-project"},"description":"An array of projects that notifications will be sent for."},"restrictions":{"type":"object","properties":{"tags":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether restriction by tag should be enabled.","example":false},"items":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"matchCondition":{"type":"string","enum":["and","or"],"description":"If all or any of the tags must be present on the target for it to match the condition.","example":"or"}},"additionalProperties":false,"description":"Configuration of tag restriction settings."}},"additionalProperties":false,"description":"Configuration of restrictions."},"events":{"type":"object","properties":{"trigger:service:autoscaling:event":{"type":"boolean","example":true},"trigger:service:deployment:status-update":{"type":"boolean","example":true},"trigger:project:tailscale-regen-failure":{"type":"boolean","example":true},"trigger:addon-backup:start":{"type":"boolean","example":true},"trigger:addon-backup:success":{"type":"boolean","example":true},"trigger:addon-backup:failure":{"type":"boolean","example":true},"trigger:addon-backup:abort":{"type":"boolean","example":true},"trigger:build:start":{"type":"boolean","example":true},"trigger:build:success":{"type":"boolean","example":true},"trigger:build:failure":{"type":"boolean","example":true},"trigger:build:abort":{"type":"boolean","example":true},"trigger:job-run:start":{"type":"boolean","example":true},"trigger:job-run:success":{"type":"boolean","example":true},"trigger:job-run:failure":{"type":"boolean","example":true},"trigger:job-run:abort":{"type":"boolean","example":true},"trigger:job-run:terminate":{"type":"boolean","example":true},"trigger:release-flow-template-run:start":{"type":"boolean","example":true},"trigger:release-flow-template-run:update":{"type":"boolean","example":true},"trigger:release-flow-template-run:success":{"type":"boolean","example":true},"trigger:release-flow-template-run:failure":{"type":"boolean","example":true},"trigger:release-flow-template-run:aborted":{"type":"boolean","example":true},"trigger:template-run:queued":{"type":"boolean","example":true},"trigger:template-run:start":{"type":"boolean","example":true},"trigger:template-run:update":{"type":"boolean","example":true},"trigger:template-run:success":{"type":"boolean","example":true},"trigger:template-run:failure":{"type":"boolean","example":true},"trigger:resource:certificate-success":{"type":"boolean","example":true},"trigger:resource:certificate-final-failure":{"type":"boolean","example":true},"trigger:cdn:action-success":{"type":"boolean","example":true},"trigger:cdn:action-failure":{"type":"boolean","example":true},"trigger:cdn:action-delay":{"type":"boolean","example":true},"trigger:log-sink:paused":{"type":"boolean","example":true},"trigger:billing:billing-alert-exceeded":{"type":"boolean","example":true},"trigger:billing:invoice-payment-action-required":{"type":"boolean","example":true},"trigger:billing:invoice-payment-failed":{"type":"boolean","example":true},"trigger:billing:invoice-paid":{"type":"boolean","example":true},"trigger:billing:invoice-carried-over":{"type":"boolean","example":true},"trigger:infrastructure:service:container-crash":{"type":"boolean","example":true},"trigger:infrastructure:service:container-eviction":{"type":"boolean","example":true},"trigger:infrastructure:build:container-eviction":{"type":"boolean","example":true},"trigger:infrastructure:addon:container-crash":{"type":"boolean","example":true},"trigger:infrastructure:addon:container-eviction":{"type":"boolean","example":true},"trigger:infrastructure:job:container-crash":{"type":"boolean","example":true},"trigger:infrastructure:job:container-eviction":{"type":"boolean","example":true},"trigger:infrastructure:build:container-cpuSpike90":{"type":"boolean","example":true},"trigger:infrastructure:build:container-cpuSustained90":{"type":"boolean","example":true},"trigger:infrastructure:service:container-cpuSpike90":{"type":"boolean","example":true},"trigger:infrastructure:service:container-cpuSustained90":{"type":"boolean","example":true},"trigger:infrastructure:job:container-cpuSpike90":{"type":"boolean","example":true},"trigger:infrastructure:job:container-cpuSustained90":{"type":"boolean","example":true},"trigger:infrastructure:addon:container-cpuSpike90":{"type":"boolean","example":true},"trigger:infrastructure:addon:container-cpuSustained90":{"type":"boolean","example":true},"trigger:infrastructure:build:container-memorySpike90":{"type":"boolean","example":true},"trigger:infrastructure:build:container-memorySustained90":{"type":"boolean","example":true},"trigger:infrastructure:service:container-memorySpike90":{"type":"boolean","example":true},"trigger:infrastructure:service:container-memorySustained90":{"type":"boolean","example":true},"trigger:infrastructure:job:container-memorySpike90":{"type":"boolean","example":true},"trigger:infrastructure:job:container-memorySustained90":{"type":"boolean","example":true},"trigger:infrastructure:addon-volume:usage-75-exceeded":{"type":"boolean","example":true},"trigger:infrastructure:addon-volume:usage-90-exceeded":{"type":"boolean","example":true},"trigger:infrastructure:platform-volume:usage-75-exceeded":{"type":"boolean","example":true},"trigger:infrastructure:platform-volume:usage-90-exceeded":{"type":"boolean","example":true},"trigger:infrastructure:byoc:cluster:error":{"type":"boolean","example":true},"trigger:infrastructure:byoc:node-pool:error":{"type":"boolean","example":true},"trigger:infrastructure:byoc:scheduling:error":{"type":"boolean","example":true},"trigger:infrastructure:byoc:volume:error":{"type":"boolean","example":true},"trigger:infrastructure:byoc:volume:attach":{"type":"boolean","example":true}},"additionalProperties":false,"description":"Which events should notifications be sent for?"}},"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Account > Team > Notifications > Manage","x-nf-team-scoped":true,"x-nf-cli-command":["update","notification"]},"v1-integrations-notifications--notificationId--delete":{"operationId":"deleteIntegrationsNotificationsNotificationid","summary":"Delete notification integration","description":"Deletes a notification integration","parameters":[{"name":"notificationId","type":"string","required":true,"description":"ID of the notification integration","example":"example-notification-id","in":"path","schema":{"name":"notificationId","type":"string","required":true,"description":"ID of the notification integration","example":"example-notification-id","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Integrations"],"security":[],"x-nf-permission-required":"Account > Team > Notifications > Manage","x-nf-team-scoped":true,"x-nf-cli-command":["delete","notification"]},"v1-integrations-notifications--notificationId--delete-team-scoped":{"operationId":"deleteIntegrationsNotificationsNotificationid","summary":"Delete notification integration","description":"Deletes a notification integration","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"notificationId","type":"string","required":true,"description":"ID of the notification integration","example":"example-notification-id","in":"path","schema":{"name":"notificationId","type":"string","required":true,"description":"ID of the notification integration","example":"example-notification-id","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Integrations","team"],"security":[],"x-nf-permission-required":"Account > Team > Notifications > Manage","x-nf-team-scoped":true,"x-nf-cli-command":["delete","notification"]},"v1-integrations-registries-get":{"operationId":"getIntegrationsRegistries","summary":"List registries","description":"Lists the container registry credentials saved to this account. Does not display secrets.","parameters":[{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query","schema":{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query"}},{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query","schema":{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query"}},{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query","schema":{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query"}}],"responses":{"200":{"description":"A list of registry credentials saved to this account.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"credentials":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"ID of the docker credentials","example":"example-credentials"},"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The name of the docker credentials.","example":"Example Docker Credentials"},"provider":{"type":"string","enum":["acr","ecr","gar","dockerhub","dhi","github","gitlab","custom","legacy"],"description":"The provider of the docker registry."},"registryUrl":{"type":"string","description":"The URL of the docker registry."},"aws":{"type":"object","properties":{"region":{"type":"string","description":"The region of the docker registry."}},"additionalProperties":false},"gcp":{"type":"object","properties":{"projectId":{"type":"string","description":"The project ID of the GCP docker registry."}},"additionalProperties":false},"azure":{"type":"object","properties":{"resourceGroup":{"type":"string","description":"The resource group of the Azure docker registry."}},"additionalProperties":false},"integrationId":{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","description":"Integration to use for this registry."},"credentials":{"type":"object","properties":{"scope":{"type":"object","properties":{"pull":{"type":"boolean","description":"Whether the credentials can pull images."},"push":{"type":"boolean","description":"Whether the credentials can push images."}},"additionalProperties":false}},"required":["scope"],"additionalProperties":false},"updatedAt":{"type":"string","format":"date-time","description":"time of update"},"createdAt":{"type":"string","format":"date-time","description":"time of creation"}},"required":["id","name","provider"],"additionalProperties":false},"description":"An array of registry credential information."}},"required":["credentials"],"additionalProperties":false,"description":"Result data."},"pagination":{"type":"object","properties":{"hasNextPage":{"type":"boolean","description":"Is there another page of results available?","example":false},"cursor":{"type":"string","description":"The cursor to access the next page of results."},"count":{"type":"number","format":"float","description":"The number of results returned by this request.","example":1}},"required":["hasNextPage","count"],"additionalProperties":false,"description":"Data about the endpoint pagination."}},"required":["data","pagination"],"additionalProperties":false,"description":"Response object."}}},"tags":["Integrations"],"security":[],"x-nf-permission-required":"Account > Credentials > General > Read","x-nf-team-scoped":true,"x-nf-cli-command":["list","registry-credentials"]},"v1-integrations-registries-get-team-scoped":{"operationId":"getIntegrationsRegistries","summary":"List registries","description":"Lists the container registry credentials saved to this account. Does not display secrets.","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query","schema":{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query"}},{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query","schema":{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query"}},{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query","schema":{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query"}}],"responses":{"200":{"description":"A list of registry credentials saved to this account.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"credentials":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"ID of the docker credentials","example":"example-credentials"},"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The name of the docker credentials.","example":"Example Docker Credentials"},"provider":{"type":"string","enum":["acr","ecr","gar","dockerhub","dhi","github","gitlab","custom","legacy"],"description":"The provider of the docker registry."},"registryUrl":{"type":"string","description":"The URL of the docker registry."},"aws":{"type":"object","properties":{"region":{"type":"string","description":"The region of the docker registry."}},"additionalProperties":false},"gcp":{"type":"object","properties":{"projectId":{"type":"string","description":"The project ID of the GCP docker registry."}},"additionalProperties":false},"azure":{"type":"object","properties":{"resourceGroup":{"type":"string","description":"The resource group of the Azure docker registry."}},"additionalProperties":false},"integrationId":{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","description":"Integration to use for this registry."},"credentials":{"type":"object","properties":{"scope":{"type":"object","properties":{"pull":{"type":"boolean","description":"Whether the credentials can pull images."},"push":{"type":"boolean","description":"Whether the credentials can push images."}},"additionalProperties":false}},"required":["scope"],"additionalProperties":false},"updatedAt":{"type":"string","format":"date-time","description":"time of update"},"createdAt":{"type":"string","format":"date-time","description":"time of creation"}},"required":["id","name","provider"],"additionalProperties":false},"description":"An array of registry credential information."}},"required":["credentials"],"additionalProperties":false,"description":"Result data."},"pagination":{"type":"object","properties":{"hasNextPage":{"type":"boolean","description":"Is there another page of results available?","example":false},"cursor":{"type":"string","description":"The cursor to access the next page of results."},"count":{"type":"number","format":"float","description":"The number of results returned by this request.","example":1}},"required":["hasNextPage","count"],"additionalProperties":false,"description":"Data about the endpoint pagination."}},"required":["data","pagination"],"additionalProperties":false,"description":"Response object."}}},"tags":["Integrations","team"],"security":[],"x-nf-permission-required":"Account > Credentials > General > Read","x-nf-team-scoped":true,"x-nf-cli-command":["list","registry-credentials"]},"v1-integrations-registries-post":{"operationId":"postIntegrationsRegistries","summary":"Add registry","description":"Adds a new set of container registry credentials to this account.","parameters":[],"responses":{"200":{"description":"Data about the newly created credentials.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"ID of the docker credentials","example":"example-credentials"},"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The name of the docker credentials.","example":"Example Docker Credentials"},"provider":{"type":"string","enum":["acr","ecr","gar","dockerhub","dhi","github","gitlab","custom","legacy"],"description":"The provider of the docker registry."},"registryUrl":{"type":"string","description":"The URL of the docker registry."},"aws":{"type":"object","properties":{"region":{"type":"string","description":"The region of the docker registry."}},"additionalProperties":false},"gcp":{"type":"object","properties":{"projectId":{"type":"string","description":"The project ID of the GCP docker registry."}},"additionalProperties":false},"azure":{"type":"object","properties":{"resourceGroup":{"type":"string","description":"The resource group of the Azure docker registry."}},"additionalProperties":false},"integrationId":{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","description":"Integration to use for this registry."},"credentials":{"type":"object","properties":{"username":{"type":"string","description":"Username for the docker registry. Required when `integrationId` is provided."},"password":{"type":"string","description":"Password for the docker registry. Required when `integrationId` is provided."},"scope":{"type":"object","properties":{"pull":{"type":"boolean","description":"Whether the credentials can pull images."},"push":{"type":"boolean","description":"Whether the credentials can push images."}},"additionalProperties":false}},"required":["scope"],"additionalProperties":false},"restrictions":{"type":"object","properties":{"restricted":{"type":"boolean","description":"Whether access to this credential is restricted."},"projects":{"type":"array","items":{"type":"string"},"description":"List of projects that have access to this credential."}},"required":["restricted"],"additionalProperties":false},"updatedAt":{"type":"string","format":"date-time","description":"time of update"},"createdAt":{"type":"string","format":"date-time","description":"time of creation"}},"required":["id","name","provider"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Integrations"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The name of the docker credentials.","example":"Example Docker Credentials"},"provider":{"type":"string","enum":["acr","ecr","gar","dockerhub","dhi","github","gitlab","custom","legacy"],"description":"The provider of the docker registry."},"registryUrl":{"type":"string","description":"The URL of the docker registry."},"aws":{"type":"object","properties":{"region":{"type":"string","description":"The region of the docker registry."}},"additionalProperties":false},"gcp":{"type":"object","properties":{"projectId":{"type":"string","description":"The project ID of the GCP docker registry."}},"additionalProperties":false},"azure":{"type":"object","properties":{"resourceGroup":{"type":"string","description":"The resource group of the Azure docker registry."}},"additionalProperties":false},"integrationId":{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","description":"Integration to use for this registry."},"credentials":{"type":"object","properties":{"username":{"type":"string","description":"Username for the docker registry. Required when `integrationId` is provided."},"password":{"type":"string","description":"Password for the docker registry. Required when `integrationId` is provided."},"scope":{"type":"object","properties":{"pull":{"type":"boolean","description":"Whether the credentials can pull images."},"push":{"type":"boolean","description":"Whether the credentials can push images."}},"additionalProperties":false}},"required":["scope"],"additionalProperties":false},"restrictions":{"type":"object","properties":{"restricted":{"type":"boolean","description":"Whether access to this credential is restricted."},"projects":{"type":"array","items":{"type":"string"},"description":"List of projects that have access to this credential."}},"required":["restricted"],"additionalProperties":false},"updatedAt":{"type":"string","format":"date-time","description":"time of update"},"createdAt":{"type":"string","format":"date-time","description":"time of creation"}},"required":["name","provider"],"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Account > Credentials > General > Create","x-nf-team-scoped":true,"x-nf-cli-command":["add","registry-credentials"]},"v1-integrations-registries-post-team-scoped":{"operationId":"postIntegrationsRegistries","summary":"Add registry","description":"Adds a new set of container registry credentials to this account.","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}}],"responses":{"200":{"description":"Data about the newly created credentials.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"ID of the docker credentials","example":"example-credentials"},"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The name of the docker credentials.","example":"Example Docker Credentials"},"provider":{"type":"string","enum":["acr","ecr","gar","dockerhub","dhi","github","gitlab","custom","legacy"],"description":"The provider of the docker registry."},"registryUrl":{"type":"string","description":"The URL of the docker registry."},"aws":{"type":"object","properties":{"region":{"type":"string","description":"The region of the docker registry."}},"additionalProperties":false},"gcp":{"type":"object","properties":{"projectId":{"type":"string","description":"The project ID of the GCP docker registry."}},"additionalProperties":false},"azure":{"type":"object","properties":{"resourceGroup":{"type":"string","description":"The resource group of the Azure docker registry."}},"additionalProperties":false},"integrationId":{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","description":"Integration to use for this registry."},"credentials":{"type":"object","properties":{"username":{"type":"string","description":"Username for the docker registry. Required when `integrationId` is provided."},"password":{"type":"string","description":"Password for the docker registry. Required when `integrationId` is provided."},"scope":{"type":"object","properties":{"pull":{"type":"boolean","description":"Whether the credentials can pull images."},"push":{"type":"boolean","description":"Whether the credentials can push images."}},"additionalProperties":false}},"required":["scope"],"additionalProperties":false},"restrictions":{"type":"object","properties":{"restricted":{"type":"boolean","description":"Whether access to this credential is restricted."},"projects":{"type":"array","items":{"type":"string"},"description":"List of projects that have access to this credential."}},"required":["restricted"],"additionalProperties":false},"updatedAt":{"type":"string","format":"date-time","description":"time of update"},"createdAt":{"type":"string","format":"date-time","description":"time of creation"}},"required":["id","name","provider"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Integrations","team"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The name of the docker credentials.","example":"Example Docker Credentials"},"provider":{"type":"string","enum":["acr","ecr","gar","dockerhub","dhi","github","gitlab","custom","legacy"],"description":"The provider of the docker registry."},"registryUrl":{"type":"string","description":"The URL of the docker registry."},"aws":{"type":"object","properties":{"region":{"type":"string","description":"The region of the docker registry."}},"additionalProperties":false},"gcp":{"type":"object","properties":{"projectId":{"type":"string","description":"The project ID of the GCP docker registry."}},"additionalProperties":false},"azure":{"type":"object","properties":{"resourceGroup":{"type":"string","description":"The resource group of the Azure docker registry."}},"additionalProperties":false},"integrationId":{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","description":"Integration to use for this registry."},"credentials":{"type":"object","properties":{"username":{"type":"string","description":"Username for the docker registry. Required when `integrationId` is provided."},"password":{"type":"string","description":"Password for the docker registry. Required when `integrationId` is provided."},"scope":{"type":"object","properties":{"pull":{"type":"boolean","description":"Whether the credentials can pull images."},"push":{"type":"boolean","description":"Whether the credentials can push images."}},"additionalProperties":false}},"required":["scope"],"additionalProperties":false},"restrictions":{"type":"object","properties":{"restricted":{"type":"boolean","description":"Whether access to this credential is restricted."},"projects":{"type":"array","items":{"type":"string"},"description":"List of projects that have access to this credential."}},"required":["restricted"],"additionalProperties":false},"updatedAt":{"type":"string","format":"date-time","description":"time of update"},"createdAt":{"type":"string","format":"date-time","description":"time of creation"}},"required":["name","provider"],"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Account > Credentials > General > Create","x-nf-team-scoped":true,"x-nf-cli-command":["add","registry-credentials"]},"v1-integrations-registries--credentialId--get":{"operationId":"getIntegrationsRegistriesCredentialid","summary":"Get registry","description":"Views a set of registry credential data.","parameters":[{"name":"credentialId","type":"string","required":true,"description":"ID of the registry credential","example":"example-credentials","in":"path","schema":{"name":"credentialId","type":"string","required":true,"description":"ID of the registry credential","example":"example-credentials","in":"path"}}],"responses":{"200":{"description":"Data about the registry credentials.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"ID of the docker credentials","example":"example-credentials"},"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The name of the docker credentials.","example":"Example Docker Credentials"},"provider":{"type":"string","enum":["acr","ecr","gar","dockerhub","dhi","github","gitlab","custom","legacy"],"description":"The provider of the docker registry."},"registryUrl":{"type":"string","description":"The URL of the docker registry."},"aws":{"type":"object","properties":{"region":{"type":"string","description":"The region of the docker registry."}},"additionalProperties":false},"gcp":{"type":"object","properties":{"projectId":{"type":"string","description":"The project ID of the GCP docker registry."}},"additionalProperties":false},"azure":{"type":"object","properties":{"resourceGroup":{"type":"string","description":"The resource group of the Azure docker registry."}},"additionalProperties":false},"integrationId":{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","description":"Integration to use for this registry."},"credentials":{"type":"object","properties":{"username":{"type":"string","description":"Username for the docker registry. Required when `integrationId` is provided."},"password":{"type":"string","description":"Password for the docker registry. Required when `integrationId` is provided."},"scope":{"type":"object","properties":{"pull":{"type":"boolean","description":"Whether the credentials can pull images."},"push":{"type":"boolean","description":"Whether the credentials can push images."}},"additionalProperties":false}},"required":["scope"],"additionalProperties":false},"restrictions":{"type":"object","properties":{"restricted":{"type":"boolean","description":"Whether access to this credential is restricted."},"projects":{"type":"array","items":{"type":"string"},"description":"List of projects that have access to this credential."}},"required":["restricted"],"additionalProperties":false},"updatedAt":{"type":"string","format":"date-time","description":"time of update"},"createdAt":{"type":"string","format":"date-time","description":"time of creation"}},"required":["id","name","provider"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Integrations"],"security":[],"x-nf-permission-required":"Account > Credentials > General > Read Encrypted","x-nf-team-scoped":true,"x-nf-cli-command":["get","registry-credentials"]},"v1-integrations-registries--credentialId--get-team-scoped":{"operationId":"getIntegrationsRegistriesCredentialid","summary":"Get registry","description":"Views a set of registry credential data.","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"credentialId","type":"string","required":true,"description":"ID of the registry credential","example":"example-credentials","in":"path","schema":{"name":"credentialId","type":"string","required":true,"description":"ID of the registry credential","example":"example-credentials","in":"path"}}],"responses":{"200":{"description":"Data about the registry credentials.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"ID of the docker credentials","example":"example-credentials"},"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The name of the docker credentials.","example":"Example Docker Credentials"},"provider":{"type":"string","enum":["acr","ecr","gar","dockerhub","dhi","github","gitlab","custom","legacy"],"description":"The provider of the docker registry."},"registryUrl":{"type":"string","description":"The URL of the docker registry."},"aws":{"type":"object","properties":{"region":{"type":"string","description":"The region of the docker registry."}},"additionalProperties":false},"gcp":{"type":"object","properties":{"projectId":{"type":"string","description":"The project ID of the GCP docker registry."}},"additionalProperties":false},"azure":{"type":"object","properties":{"resourceGroup":{"type":"string","description":"The resource group of the Azure docker registry."}},"additionalProperties":false},"integrationId":{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","description":"Integration to use for this registry."},"credentials":{"type":"object","properties":{"username":{"type":"string","description":"Username for the docker registry. Required when `integrationId` is provided."},"password":{"type":"string","description":"Password for the docker registry. Required when `integrationId` is provided."},"scope":{"type":"object","properties":{"pull":{"type":"boolean","description":"Whether the credentials can pull images."},"push":{"type":"boolean","description":"Whether the credentials can push images."}},"additionalProperties":false}},"required":["scope"],"additionalProperties":false},"restrictions":{"type":"object","properties":{"restricted":{"type":"boolean","description":"Whether access to this credential is restricted."},"projects":{"type":"array","items":{"type":"string"},"description":"List of projects that have access to this credential."}},"required":["restricted"],"additionalProperties":false},"updatedAt":{"type":"string","format":"date-time","description":"time of update"},"createdAt":{"type":"string","format":"date-time","description":"time of creation"}},"required":["id","name","provider"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Integrations","team"],"security":[],"x-nf-permission-required":"Account > Credentials > General > Read Encrypted","x-nf-team-scoped":true,"x-nf-cli-command":["get","registry-credentials"]},"v1-integrations-registries--credentialId--patch":{"operationId":"patchIntegrationsRegistriesCredentialid","summary":"Update registry","description":"Updates a set of registry credential data.","parameters":[{"name":"credentialId","type":"string","required":true,"description":"ID of the registry credential","example":"example-credentials","in":"path","schema":{"name":"credentialId","type":"string","required":true,"description":"ID of the registry credential","example":"example-credentials","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Integrations"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"credentials":{"type":"object","properties":{"username":{"type":"string","description":"Username for the docker registry. Required when `integrationId` is provided."},"password":{"type":"string","description":"Password for the docker registry. Required when `integrationId` is provided."},"scope":{"type":"object","properties":{"pull":{"type":"boolean","description":"Whether the credentials can pull images."},"push":{"type":"boolean","description":"Whether the credentials can push images."}},"additionalProperties":false}},"required":["scope"],"additionalProperties":false},"restrictions":{"type":"object","properties":{"restricted":{"type":"boolean","description":"Whether access to this credential is restricted."},"projects":{"type":"array","items":{"type":"string"},"description":"List of projects that have access to this credential."}},"required":["restricted"],"additionalProperties":false},"updatedAt":{"type":"string","format":"date-time","description":"time of update"},"createdAt":{"type":"string","format":"date-time","description":"time of creation"}},"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Account > Credentials > General > Update","x-nf-team-scoped":true,"x-nf-cli-command":["update","registry-credentials"]},"v1-integrations-registries--credentialId--patch-team-scoped":{"operationId":"patchIntegrationsRegistriesCredentialid","summary":"Update registry","description":"Updates a set of registry credential data.","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"credentialId","type":"string","required":true,"description":"ID of the registry credential","example":"example-credentials","in":"path","schema":{"name":"credentialId","type":"string","required":true,"description":"ID of the registry credential","example":"example-credentials","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Integrations","team"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"credentials":{"type":"object","properties":{"username":{"type":"string","description":"Username for the docker registry. Required when `integrationId` is provided."},"password":{"type":"string","description":"Password for the docker registry. Required when `integrationId` is provided."},"scope":{"type":"object","properties":{"pull":{"type":"boolean","description":"Whether the credentials can pull images."},"push":{"type":"boolean","description":"Whether the credentials can push images."}},"additionalProperties":false}},"required":["scope"],"additionalProperties":false},"restrictions":{"type":"object","properties":{"restricted":{"type":"boolean","description":"Whether access to this credential is restricted."},"projects":{"type":"array","items":{"type":"string"},"description":"List of projects that have access to this credential."}},"required":["restricted"],"additionalProperties":false},"updatedAt":{"type":"string","format":"date-time","description":"time of update"},"createdAt":{"type":"string","format":"date-time","description":"time of creation"}},"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Account > Credentials > General > Update","x-nf-team-scoped":true,"x-nf-cli-command":["update","registry-credentials"]},"v1-integrations-registries--credentialId--delete":{"operationId":"deleteIntegrationsRegistriesCredentialid","summary":"Delete registry","description":"Deletes a set of registry credential data.","parameters":[{"name":"credentialId","type":"string","required":true,"description":"ID of the registry credential","example":"example-credentials","in":"path","schema":{"name":"credentialId","type":"string","required":true,"description":"ID of the registry credential","example":"example-credentials","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Integrations"],"security":[],"x-nf-permission-required":"Account > Credentials > General > Delete","x-nf-team-scoped":true,"x-nf-cli-command":["delete","registry-credentials"]},"v1-integrations-registries--credentialId--delete-team-scoped":{"operationId":"deleteIntegrationsRegistriesCredentialid","summary":"Delete registry","description":"Deletes a set of registry credential data.","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"credentialId","type":"string","required":true,"description":"ID of the registry credential","example":"example-credentials","in":"path","schema":{"name":"credentialId","type":"string","required":true,"description":"ID of the registry credential","example":"example-credentials","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Integrations","team"],"security":[],"x-nf-permission-required":"Account > Credentials > General > Delete","x-nf-team-scoped":true,"x-nf-cli-command":["delete","registry-credentials"]},"v1-integrations-ssh-identities-get":{"operationId":"getIntegrationsSshIdentities","summary":"List SSH identities","description":"Lists the SSH identities saved to this account. Does not display SSH public keys.","parameters":[{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query","schema":{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query"}},{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query","schema":{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query"}},{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query","schema":{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query"}}],"responses":{"200":{"description":"A list of SSH identities saved to this account.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"identities":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"ID of the ssh identity","example":"example-identity"},"name":{"type":"string","pattern":"^[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"example":"Example SSH Identity"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200},"sshPublicKeys":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string","description":"The SSH public key.","example":"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQ..."}},"required":["key"],"additionalProperties":false},"minItems":1,"description":"A list of SSH public keys.","example":[{"key":"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQ..."}]},"restrictions":{"type":"object","properties":{"projects":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether restriction by project should be enabled.","example":false},"items":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined projects.","default":[]}},"additionalProperties":false,"description":"Configuration of project restriction settings."},"tags":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether restriction by tag should be enabled.","example":false},"items":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"matchCondition":{"type":"string","enum":["and","or"],"description":"If all or any of the tags must be present on the target for it to match the condition.","example":"or"}},"additionalProperties":false,"description":"Configuration of tag restriction settings."}},"additionalProperties":false,"description":"Configuration of restrictions."},"updatedAt":{"type":"string","format":"date-time","description":"time of update"},"createdAt":{"type":"string","format":"date-time","description":"time of creation"}},"required":["id","name"],"additionalProperties":false,"description":"An array of SSH Identities"}}},"additionalProperties":false,"description":"Result data."},"pagination":{"type":"object","properties":{"hasNextPage":{"type":"boolean","description":"Is there another page of results available?","example":false},"cursor":{"type":"string","description":"The cursor to access the next page of results."},"count":{"type":"number","format":"float","description":"The number of results returned by this request.","example":1}},"required":["hasNextPage","count"],"additionalProperties":false,"description":"Data about the endpoint pagination."}},"required":["data","pagination"],"additionalProperties":false,"description":"Response object."}}},"tags":["Integrations"],"security":[],"x-nf-permission-required":"Account > Ssh > General > Read","x-nf-team-scoped":true,"x-nf-cli-command":["list","ssh-identities"]},"v1-integrations-ssh-identities-get-team-scoped":{"operationId":"getIntegrationsSshIdentities","summary":"List SSH identities","description":"Lists the SSH identities saved to this account. Does not display SSH public keys.","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query","schema":{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query"}},{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query","schema":{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query"}},{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query","schema":{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query"}}],"responses":{"200":{"description":"A list of SSH identities saved to this account.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"identities":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"ID of the ssh identity","example":"example-identity"},"name":{"type":"string","pattern":"^[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"example":"Example SSH Identity"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200},"sshPublicKeys":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string","description":"The SSH public key.","example":"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQ..."}},"required":["key"],"additionalProperties":false},"minItems":1,"description":"A list of SSH public keys.","example":[{"key":"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQ..."}]},"restrictions":{"type":"object","properties":{"projects":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether restriction by project should be enabled.","example":false},"items":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined projects.","default":[]}},"additionalProperties":false,"description":"Configuration of project restriction settings."},"tags":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether restriction by tag should be enabled.","example":false},"items":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"matchCondition":{"type":"string","enum":["and","or"],"description":"If all or any of the tags must be present on the target for it to match the condition.","example":"or"}},"additionalProperties":false,"description":"Configuration of tag restriction settings."}},"additionalProperties":false,"description":"Configuration of restrictions."},"updatedAt":{"type":"string","format":"date-time","description":"time of update"},"createdAt":{"type":"string","format":"date-time","description":"time of creation"}},"required":["id","name"],"additionalProperties":false,"description":"An array of SSH Identities"}}},"additionalProperties":false,"description":"Result data."},"pagination":{"type":"object","properties":{"hasNextPage":{"type":"boolean","description":"Is there another page of results available?","example":false},"cursor":{"type":"string","description":"The cursor to access the next page of results."},"count":{"type":"number","format":"float","description":"The number of results returned by this request.","example":1}},"required":["hasNextPage","count"],"additionalProperties":false,"description":"Data about the endpoint pagination."}},"required":["data","pagination"],"additionalProperties":false,"description":"Response object."}}},"tags":["Integrations","team"],"security":[],"x-nf-permission-required":"Account > Ssh > General > Read","x-nf-team-scoped":true,"x-nf-cli-command":["list","ssh-identities"]},"v1-integrations-ssh-identities-post":{"operationId":"postIntegrationsSshIdentities","summary":"Add SSH identity","description":"Adds a new SSH identity to this account.","parameters":[],"responses":{"200":{"description":"Data about the newly created SSH identity.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"ID of the ssh identity","example":"example-identity"},"name":{"type":"string","pattern":"^[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"example":"Example SSH Identity"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200},"sshPublicKeys":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string","description":"The SSH public key.","example":"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQ..."}},"required":["key"],"additionalProperties":false},"minItems":1,"description":"A list of SSH public keys.","example":[{"key":"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQ..."}]},"restrictions":{"type":"object","properties":{"projects":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether restriction by project should be enabled.","example":false},"items":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined projects.","default":[]}},"additionalProperties":false,"description":"Configuration of project restriction settings."},"tags":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether restriction by tag should be enabled.","example":false},"items":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"matchCondition":{"type":"string","enum":["and","or"],"description":"If all or any of the tags must be present on the target for it to match the condition.","example":"or"}},"additionalProperties":false,"description":"Configuration of tag restriction settings."}},"additionalProperties":false,"description":"Configuration of restrictions."},"updatedAt":{"type":"string","format":"date-time","description":"time of update"},"createdAt":{"type":"string","format":"date-time","description":"time of creation"}},"required":["id","name"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Integrations"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"example":"Example SSH Identity"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200},"sshPublicKeys":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string","description":"The SSH public key.","example":"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQ..."}},"required":["key"],"additionalProperties":false},"minItems":1,"description":"A list of SSH public keys.","example":[{"key":"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQ..."}]},"restrictions":{"type":"object","properties":{"projects":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether restriction by project should be enabled.","example":false},"items":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined projects.","default":[]}},"additionalProperties":false,"description":"Configuration of project restriction settings."},"tags":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether restriction by tag should be enabled.","example":false},"items":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"matchCondition":{"type":"string","enum":["and","or"],"description":"If all or any of the tags must be present on the target for it to match the condition.","example":"or"}},"additionalProperties":false,"description":"Configuration of tag restriction settings."}},"additionalProperties":false,"description":"Configuration of restrictions."},"updatedAt":{"type":"string","format":"date-time","description":"time of update"},"createdAt":{"type":"string","format":"date-time","description":"time of creation"}},"required":["name"],"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Account > Ssh > General > Create","x-nf-team-scoped":true,"x-nf-cli-command":["add","ssh-identities"]},"v1-integrations-ssh-identities-post-team-scoped":{"operationId":"postIntegrationsSshIdentities","summary":"Add SSH identity","description":"Adds a new SSH identity to this account.","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}}],"responses":{"200":{"description":"Data about the newly created SSH identity.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"ID of the ssh identity","example":"example-identity"},"name":{"type":"string","pattern":"^[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"example":"Example SSH Identity"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200},"sshPublicKeys":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string","description":"The SSH public key.","example":"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQ..."}},"required":["key"],"additionalProperties":false},"minItems":1,"description":"A list of SSH public keys.","example":[{"key":"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQ..."}]},"restrictions":{"type":"object","properties":{"projects":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether restriction by project should be enabled.","example":false},"items":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined projects.","default":[]}},"additionalProperties":false,"description":"Configuration of project restriction settings."},"tags":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether restriction by tag should be enabled.","example":false},"items":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"matchCondition":{"type":"string","enum":["and","or"],"description":"If all or any of the tags must be present on the target for it to match the condition.","example":"or"}},"additionalProperties":false,"description":"Configuration of tag restriction settings."}},"additionalProperties":false,"description":"Configuration of restrictions."},"updatedAt":{"type":"string","format":"date-time","description":"time of update"},"createdAt":{"type":"string","format":"date-time","description":"time of creation"}},"required":["id","name"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Integrations","team"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"example":"Example SSH Identity"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200},"sshPublicKeys":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string","description":"The SSH public key.","example":"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQ..."}},"required":["key"],"additionalProperties":false},"minItems":1,"description":"A list of SSH public keys.","example":[{"key":"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQ..."}]},"restrictions":{"type":"object","properties":{"projects":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether restriction by project should be enabled.","example":false},"items":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined projects.","default":[]}},"additionalProperties":false,"description":"Configuration of project restriction settings."},"tags":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether restriction by tag should be enabled.","example":false},"items":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"matchCondition":{"type":"string","enum":["and","or"],"description":"If all or any of the tags must be present on the target for it to match the condition.","example":"or"}},"additionalProperties":false,"description":"Configuration of tag restriction settings."}},"additionalProperties":false,"description":"Configuration of restrictions."},"updatedAt":{"type":"string","format":"date-time","description":"time of update"},"createdAt":{"type":"string","format":"date-time","description":"time of creation"}},"required":["name"],"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Account > Ssh > General > Create","x-nf-team-scoped":true,"x-nf-cli-command":["add","ssh-identities"]},"v1-integrations-ssh-identities--identityId--get":{"operationId":"getIntegrationsSshIdentitiesIdentityid","summary":"Get SSH identity","description":"Views SSH identity data including public keys.","parameters":[{"name":"identityId","type":"string","required":true,"description":"ID of the SSH identity","example":"example-ssh-identity","in":"path","schema":{"name":"identityId","type":"string","required":true,"description":"ID of the SSH identity","example":"example-ssh-identity","in":"path"}}],"responses":{"200":{"description":"Data about the SSH identity.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"ID of the ssh identity","example":"example-identity"},"name":{"type":"string","pattern":"^[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"example":"Example SSH Identity"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200},"sshPublicKeys":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string","description":"The SSH public key.","example":"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQ..."}},"required":["key"],"additionalProperties":false},"minItems":1,"description":"A list of SSH public keys.","example":[{"key":"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQ..."}]},"restrictions":{"type":"object","properties":{"projects":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether restriction by project should be enabled.","example":false},"items":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined projects.","default":[]}},"additionalProperties":false,"description":"Configuration of project restriction settings."},"tags":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether restriction by tag should be enabled.","example":false},"items":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"matchCondition":{"type":"string","enum":["and","or"],"description":"If all or any of the tags must be present on the target for it to match the condition.","example":"or"}},"additionalProperties":false,"description":"Configuration of tag restriction settings."}},"additionalProperties":false,"description":"Configuration of restrictions."},"updatedAt":{"type":"string","format":"date-time","description":"time of update"},"createdAt":{"type":"string","format":"date-time","description":"time of creation"}},"required":["id","name"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Integrations"],"security":[],"x-nf-permission-required":"Account > Ssh > General > Read","x-nf-team-scoped":true,"x-nf-cli-command":["get","ssh-identities"]},"v1-integrations-ssh-identities--identityId--get-team-scoped":{"operationId":"getIntegrationsSshIdentitiesIdentityid","summary":"Get SSH identity","description":"Views SSH identity data including public keys.","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"identityId","type":"string","required":true,"description":"ID of the SSH identity","example":"example-ssh-identity","in":"path","schema":{"name":"identityId","type":"string","required":true,"description":"ID of the SSH identity","example":"example-ssh-identity","in":"path"}}],"responses":{"200":{"description":"Data about the SSH identity.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"ID of the ssh identity","example":"example-identity"},"name":{"type":"string","pattern":"^[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"example":"Example SSH Identity"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200},"sshPublicKeys":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string","description":"The SSH public key.","example":"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQ..."}},"required":["key"],"additionalProperties":false},"minItems":1,"description":"A list of SSH public keys.","example":[{"key":"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQ..."}]},"restrictions":{"type":"object","properties":{"projects":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether restriction by project should be enabled.","example":false},"items":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined projects.","default":[]}},"additionalProperties":false,"description":"Configuration of project restriction settings."},"tags":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether restriction by tag should be enabled.","example":false},"items":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"matchCondition":{"type":"string","enum":["and","or"],"description":"If all or any of the tags must be present on the target for it to match the condition.","example":"or"}},"additionalProperties":false,"description":"Configuration of tag restriction settings."}},"additionalProperties":false,"description":"Configuration of restrictions."},"updatedAt":{"type":"string","format":"date-time","description":"time of update"},"createdAt":{"type":"string","format":"date-time","description":"time of creation"}},"required":["id","name"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Integrations","team"],"security":[],"x-nf-permission-required":"Account > Ssh > General > Read","x-nf-team-scoped":true,"x-nf-cli-command":["get","ssh-identities"]},"v1-integrations-ssh-identities--identityId--put":{"operationId":"putIntegrationsSshIdentitiesIdentityid","summary":"Create or update SSH identity","description":"Creates or updates SSH identity data.","parameters":[{"name":"identityId","type":"string","required":true,"description":"ID of the SSH identity","example":"example-ssh-identity","in":"path","schema":{"name":"identityId","type":"string","required":true,"description":"ID of the SSH identity","example":"example-ssh-identity","in":"path"}}],"responses":{"200":{"description":"Data about the SSH identity.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"ID of the ssh identity","example":"example-identity"},"name":{"type":"string","pattern":"^[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"example":"Example SSH Identity"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200},"sshPublicKeys":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string","description":"The SSH public key.","example":"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQ..."}},"required":["key"],"additionalProperties":false},"minItems":1,"description":"A list of SSH public keys.","example":[{"key":"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQ..."}]},"restrictions":{"type":"object","properties":{"projects":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether restriction by project should be enabled.","example":false},"items":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined projects.","default":[]}},"additionalProperties":false,"description":"Configuration of project restriction settings."},"tags":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether restriction by tag should be enabled.","example":false},"items":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"matchCondition":{"type":"string","enum":["and","or"],"description":"If all or any of the tags must be present on the target for it to match the condition.","example":"or"}},"additionalProperties":false,"description":"Configuration of tag restriction settings."}},"additionalProperties":false,"description":"Configuration of restrictions."},"updatedAt":{"type":"string","format":"date-time","description":"time of update"},"createdAt":{"type":"string","format":"date-time","description":"time of creation"}},"required":["id","name"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Integrations"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"example":"Example SSH Identity"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200},"sshPublicKeys":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string","description":"The SSH public key.","example":"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQ..."}},"required":["key"],"additionalProperties":false},"minItems":1,"description":"A list of SSH public keys.","example":[{"key":"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQ..."}]},"restrictions":{"type":"object","properties":{"projects":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether restriction by project should be enabled.","example":false},"items":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined projects.","default":[]}},"additionalProperties":false,"description":"Configuration of project restriction settings."},"tags":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether restriction by tag should be enabled.","example":false},"items":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"matchCondition":{"type":"string","enum":["and","or"],"description":"If all or any of the tags must be present on the target for it to match the condition.","example":"or"}},"additionalProperties":false,"description":"Configuration of tag restriction settings."}},"additionalProperties":false,"description":"Configuration of restrictions."},"updatedAt":{"type":"string","format":"date-time","description":"time of update"},"createdAt":{"type":"string","format":"date-time","description":"time of creation"}},"required":["name"],"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Account > Ssh > General > Update","x-nf-team-scoped":true,"x-nf-cli-command":["put","ssh-identities"]},"v1-integrations-ssh-identities--identityId--put-team-scoped":{"operationId":"putIntegrationsSshIdentitiesIdentityid","summary":"Create or update SSH identity","description":"Creates or updates SSH identity data.","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"identityId","type":"string","required":true,"description":"ID of the SSH identity","example":"example-ssh-identity","in":"path","schema":{"name":"identityId","type":"string","required":true,"description":"ID of the SSH identity","example":"example-ssh-identity","in":"path"}}],"responses":{"200":{"description":"Data about the SSH identity.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"ID of the ssh identity","example":"example-identity"},"name":{"type":"string","pattern":"^[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"example":"Example SSH Identity"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200},"sshPublicKeys":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string","description":"The SSH public key.","example":"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQ..."}},"required":["key"],"additionalProperties":false},"minItems":1,"description":"A list of SSH public keys.","example":[{"key":"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQ..."}]},"restrictions":{"type":"object","properties":{"projects":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether restriction by project should be enabled.","example":false},"items":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined projects.","default":[]}},"additionalProperties":false,"description":"Configuration of project restriction settings."},"tags":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether restriction by tag should be enabled.","example":false},"items":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"matchCondition":{"type":"string","enum":["and","or"],"description":"If all or any of the tags must be present on the target for it to match the condition.","example":"or"}},"additionalProperties":false,"description":"Configuration of tag restriction settings."}},"additionalProperties":false,"description":"Configuration of restrictions."},"updatedAt":{"type":"string","format":"date-time","description":"time of update"},"createdAt":{"type":"string","format":"date-time","description":"time of creation"}},"required":["id","name"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Integrations","team"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"example":"Example SSH Identity"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200},"sshPublicKeys":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string","description":"The SSH public key.","example":"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQ..."}},"required":["key"],"additionalProperties":false},"minItems":1,"description":"A list of SSH public keys.","example":[{"key":"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQ..."}]},"restrictions":{"type":"object","properties":{"projects":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether restriction by project should be enabled.","example":false},"items":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined projects.","default":[]}},"additionalProperties":false,"description":"Configuration of project restriction settings."},"tags":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether restriction by tag should be enabled.","example":false},"items":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"matchCondition":{"type":"string","enum":["and","or"],"description":"If all or any of the tags must be present on the target for it to match the condition.","example":"or"}},"additionalProperties":false,"description":"Configuration of tag restriction settings."}},"additionalProperties":false,"description":"Configuration of restrictions."},"updatedAt":{"type":"string","format":"date-time","description":"time of update"},"createdAt":{"type":"string","format":"date-time","description":"time of creation"}},"required":["name"],"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Account > Ssh > General > Update","x-nf-team-scoped":true,"x-nf-cli-command":["put","ssh-identities"]},"v1-integrations-ssh-identities--identityId--patch":{"operationId":"patchIntegrationsSshIdentitiesIdentityid","summary":"Update SSH identity","description":"Updates SSH identity data.","parameters":[{"name":"identityId","type":"string","required":true,"description":"ID of the SSH identity","example":"example-ssh-identity","in":"path","schema":{"name":"identityId","type":"string","required":true,"description":"ID of the SSH identity","example":"example-ssh-identity","in":"path"}}],"responses":{"200":{"description":"Data about the SSH identity.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"ID of the ssh identity","example":"example-identity"},"name":{"type":"string","pattern":"^[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"example":"Example SSH Identity"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200},"sshPublicKeys":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string","description":"The SSH public key.","example":"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQ..."}},"required":["key"],"additionalProperties":false},"minItems":1,"description":"A list of SSH public keys.","example":[{"key":"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQ..."}]},"restrictions":{"type":"object","properties":{"projects":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether restriction by project should be enabled.","example":false},"items":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined projects.","default":[]}},"additionalProperties":false,"description":"Configuration of project restriction settings."},"tags":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether restriction by tag should be enabled.","example":false},"items":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"matchCondition":{"type":"string","enum":["and","or"],"description":"If all or any of the tags must be present on the target for it to match the condition.","example":"or"}},"additionalProperties":false,"description":"Configuration of tag restriction settings."}},"additionalProperties":false,"description":"Configuration of restrictions."},"updatedAt":{"type":"string","format":"date-time","description":"time of update"},"createdAt":{"type":"string","format":"date-time","description":"time of creation"}},"required":["id","name"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Integrations"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200},"sshPublicKeys":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string","description":"The SSH public key.","example":"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQ..."}},"required":["key"],"additionalProperties":false},"minItems":1,"description":"A list of SSH public keys.","example":[{"key":"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQ..."}]},"restrictions":{"type":"object","properties":{"projects":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether restriction by project should be enabled.","example":false},"items":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined projects."}},"additionalProperties":false},"tags":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether restriction by tag should be enabled.","example":false},"items":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"matchCondition":{"type":"string","enum":["and","or"],"description":"If all or any of the tags must be present on the target for it to match the condition.","example":"or"}},"additionalProperties":false}},"additionalProperties":false},"updatedAt":{"type":"string","format":"date-time","description":"time of update"},"createdAt":{"type":"string","format":"date-time","description":"time of creation"}},"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Account > Ssh > General > Update","x-nf-team-scoped":true,"x-nf-cli-command":["update","ssh-identities"]},"v1-integrations-ssh-identities--identityId--patch-team-scoped":{"operationId":"patchIntegrationsSshIdentitiesIdentityid","summary":"Update SSH identity","description":"Updates SSH identity data.","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"identityId","type":"string","required":true,"description":"ID of the SSH identity","example":"example-ssh-identity","in":"path","schema":{"name":"identityId","type":"string","required":true,"description":"ID of the SSH identity","example":"example-ssh-identity","in":"path"}}],"responses":{"200":{"description":"Data about the SSH identity.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"ID of the ssh identity","example":"example-identity"},"name":{"type":"string","pattern":"^[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"example":"Example SSH Identity"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200},"sshPublicKeys":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string","description":"The SSH public key.","example":"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQ..."}},"required":["key"],"additionalProperties":false},"minItems":1,"description":"A list of SSH public keys.","example":[{"key":"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQ..."}]},"restrictions":{"type":"object","properties":{"projects":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether restriction by project should be enabled.","example":false},"items":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined projects.","default":[]}},"additionalProperties":false,"description":"Configuration of project restriction settings."},"tags":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether restriction by tag should be enabled.","example":false},"items":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"matchCondition":{"type":"string","enum":["and","or"],"description":"If all or any of the tags must be present on the target for it to match the condition.","example":"or"}},"additionalProperties":false,"description":"Configuration of tag restriction settings."}},"additionalProperties":false,"description":"Configuration of restrictions."},"updatedAt":{"type":"string","format":"date-time","description":"time of update"},"createdAt":{"type":"string","format":"date-time","description":"time of creation"}},"required":["id","name"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Integrations","team"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200},"sshPublicKeys":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string","description":"The SSH public key.","example":"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQ..."}},"required":["key"],"additionalProperties":false},"minItems":1,"description":"A list of SSH public keys.","example":[{"key":"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQ..."}]},"restrictions":{"type":"object","properties":{"projects":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether restriction by project should be enabled.","example":false},"items":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined projects."}},"additionalProperties":false},"tags":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether restriction by tag should be enabled.","example":false},"items":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"matchCondition":{"type":"string","enum":["and","or"],"description":"If all or any of the tags must be present on the target for it to match the condition.","example":"or"}},"additionalProperties":false}},"additionalProperties":false},"updatedAt":{"type":"string","format":"date-time","description":"time of update"},"createdAt":{"type":"string","format":"date-time","description":"time of creation"}},"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Account > Ssh > General > Update","x-nf-team-scoped":true,"x-nf-cli-command":["update","ssh-identities"]},"v1-integrations-ssh-identities--identityId--delete":{"operationId":"deleteIntegrationsSshIdentitiesIdentityid","summary":"Delete SSH identity","description":"Deletes an SSH identity.","parameters":[{"name":"identityId","type":"string","required":true,"description":"ID of the SSH identity","example":"example-ssh-identity","in":"path","schema":{"name":"identityId","type":"string","required":true,"description":"ID of the SSH identity","example":"example-ssh-identity","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Integrations"],"security":[],"x-nf-permission-required":"Account > Ssh > General > Delete","x-nf-team-scoped":true,"x-nf-cli-command":["delete","ssh-identities"]},"v1-integrations-ssh-identities--identityId--delete-team-scoped":{"operationId":"deleteIntegrationsSshIdentitiesIdentityid","summary":"Delete SSH identity","description":"Deletes an SSH identity.","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"identityId","type":"string","required":true,"description":"ID of the SSH identity","example":"example-ssh-identity","in":"path","schema":{"name":"identityId","type":"string","required":true,"description":"ID of the SSH identity","example":"example-ssh-identity","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Integrations","team"],"security":[],"x-nf-permission-required":"Account > Ssh > General > Delete","x-nf-team-scoped":true,"x-nf-cli-command":["delete","ssh-identities"]},"v1-integrations-vcs-get":{"operationId":"getIntegrationsVcs","summary":"List VCS providers","description":"Lists linked version control providers","parameters":[],"responses":{"200":{"description":"Details about the version control providers available for use.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"vcsAccountLinks":{"type":"array","items":{"type":"object","properties":{"vcsService":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The type of version control provider the account is linked to.","example":"self-hosted"},"email":{"type":"string","description":"The email of the account linked with this provider.","example":"email@example.com"},"login":{"type":"string","description":"The username of the account linked with this provider.","example":"vcs-user"},"name":{"type":"string","description":"The name of the version control provider. Only returned for self-hosted links.","example":"Self-hosted VCS"},"vcsUrl":{"type":"string","description":"The url of the version control provider. Only returned for self-hosted links.","example":"https://git.example.com"},"vcsType":{"type":"string","enum":["gitlab-ee","github-ghe"],"description":"The type of the self-hosted vcs provider. Only returned for self-hosted links.","example":"gitlab-ee"},"internalId":{"type":"string","description":"The ID of the self-hosted vcs provider. Only returned for self-hosted links.","example":"example-team/self-hosted-vcs"},"entityName":{"type":"string","description":"The name of the team the self-hosted vcs belongs to. Only returned for self-hosted links.","example":"Example Team"}},"required":["vcsService","email","login"],"additionalProperties":false,"description":"Details about the linked version control account."},"description":"The version control accounts linked to this Northflank account."}},"required":["vcsAccountLinks"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Integrations"],"security":[],"x-nf-permission-required":"Account > Git > General > Read","x-nf-team-scoped":true,"x-nf-cli-command":["list","vcs"]},"v1-integrations-vcs-get-team-scoped":{"operationId":"getIntegrationsVcs","summary":"List VCS providers","description":"Lists linked version control providers","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}}],"responses":{"200":{"description":"Details about the version control providers available for use.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"vcsAccountLinks":{"type":"array","items":{"type":"object","properties":{"vcsService":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The type of version control provider the account is linked to.","example":"self-hosted"},"email":{"type":"string","description":"The email of the account linked with this provider.","example":"email@example.com"},"login":{"type":"string","description":"The username of the account linked with this provider.","example":"vcs-user"},"name":{"type":"string","description":"The name of the version control provider. Only returned for self-hosted links.","example":"Self-hosted VCS"},"vcsUrl":{"type":"string","description":"The url of the version control provider. Only returned for self-hosted links.","example":"https://git.example.com"},"vcsType":{"type":"string","enum":["gitlab-ee","github-ghe"],"description":"The type of the self-hosted vcs provider. Only returned for self-hosted links.","example":"gitlab-ee"},"internalId":{"type":"string","description":"The ID of the self-hosted vcs provider. Only returned for self-hosted links.","example":"example-team/self-hosted-vcs"},"entityName":{"type":"string","description":"The name of the team the self-hosted vcs belongs to. Only returned for self-hosted links.","example":"Example Team"}},"required":["vcsService","email","login"],"additionalProperties":false,"description":"Details about the linked version control account."},"description":"The version control accounts linked to this Northflank account."}},"required":["vcsAccountLinks"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Integrations","team"],"security":[],"x-nf-permission-required":"Account > Git > General > Read","x-nf-team-scoped":true,"x-nf-cli-command":["list","vcs"]},"v1-integrations-vcs-custom--customVCSId--token--vcsLinkId--post":{"operationId":"postIntegrationsVcsCustomCustomvcsidTokenVcslinkid","summary":"Generate VCS token","description":"Generate a token for a specific VCS link.","parameters":[{"name":"customVCSId","type":"string","required":true,"description":"ID of the custom VCS","example":"cdb3d41f-0dd8-49ad-92d5-7544c98c490b","in":"path","schema":{"name":"customVCSId","type":"string","required":true,"description":"ID of the custom VCS","example":"cdb3d41f-0dd8-49ad-92d5-7544c98c490b","in":"path"}},{"name":"vcsLinkId","type":"string","required":true,"description":"ID of the version control link","example":"63ebb6ce2ccc6c7affdbf253","in":"path","schema":{"name":"vcsLinkId","type":"string","required":true,"description":"ID of the version control link","example":"63ebb6ce2ccc6c7affdbf253","in":"path"}},{"name":"force_refresh","type":"boolean","in":"query","schema":{"name":"force_refresh","type":"boolean","in":"query"}}],"responses":{"200":{"description":"A version control access token for the provided link.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"vcsService":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"VCS provider the token belongs to.","example":"github"},"installationId":{"type":"integer","description":"Installation ID of the GitHub installation the token belongs to (GitHub only)","example":1234567},"installationToken":{"type":"string","description":"Installation token (GitHub only).","example":"ghs_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"},"token":{"type":"string","description":"OAuth token.","example":"ghu_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"}},"required":["vcsService","token"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Integrations"],"security":[],"x-nf-permission-required":"Account > Git > Tokens > Read","x-nf-team-scoped":true,"x-nf-cli-command":["create","custom-vcs","token"]},"v1-integrations-vcs-custom--customVCSId--token--vcsLinkId--post-team-scoped":{"operationId":"postIntegrationsVcsCustomCustomvcsidTokenVcslinkid","summary":"Generate VCS token","description":"Generate a token for a specific VCS link.","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"customVCSId","type":"string","required":true,"description":"ID of the custom VCS","example":"cdb3d41f-0dd8-49ad-92d5-7544c98c490b","in":"path","schema":{"name":"customVCSId","type":"string","required":true,"description":"ID of the custom VCS","example":"cdb3d41f-0dd8-49ad-92d5-7544c98c490b","in":"path"}},{"name":"vcsLinkId","type":"string","required":true,"description":"ID of the version control link","example":"63ebb6ce2ccc6c7affdbf253","in":"path","schema":{"name":"vcsLinkId","type":"string","required":true,"description":"ID of the version control link","example":"63ebb6ce2ccc6c7affdbf253","in":"path"}},{"name":"force_refresh","type":"boolean","in":"query","schema":{"name":"force_refresh","type":"boolean","in":"query"}}],"responses":{"200":{"description":"A version control access token for the provided link.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"vcsService":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"VCS provider the token belongs to.","example":"github"},"installationId":{"type":"integer","description":"Installation ID of the GitHub installation the token belongs to (GitHub only)","example":1234567},"installationToken":{"type":"string","description":"Installation token (GitHub only).","example":"ghs_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"},"token":{"type":"string","description":"OAuth token.","example":"ghu_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"}},"required":["vcsService","token"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Integrations","team"],"security":[],"x-nf-permission-required":"Account > Git > Tokens > Read","x-nf-team-scoped":true,"x-nf-cli-command":["create","custom-vcs","token"]},"v1-integrations-vcs-repos-get":{"operationId":"getIntegrationsVcsRepos","summary":"List repositories","description":"Gets a list of repositories accessible to this account","parameters":[{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query","schema":{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query"}},{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query","schema":{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query"}},{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query","schema":{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query"}},{"name":"vcs_service","type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"If provided, only returns repositories belonging to this version control provider.","example":"github","in":"query","schema":{"name":"vcs_service","type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"If provided, only returns repositories belonging to this version control provider.","example":"github","in":"query"}},{"name":"self_hosted_vcs_id","type":"string","description":"If provided, only returns repositories belonging to this self-hosted version control provider.","in":"query","schema":{"name":"self_hosted_vcs_id","type":"string","description":"If provided, only returns repositories belonging to this self-hosted version control provider.","in":"query"}},{"name":"account_login","type":"string","description":"If provided, only returns repositories that can be accessed by the linked version control account with this name.","example":"example-user","in":"query","schema":{"name":"account_login","type":"string","description":"If provided, only returns repositories that can be accessed by the linked version control account with this name.","example":"example-user","in":"query"}},{"name":"vcs_link_id","type":"string","minLength":24,"maxLength":24,"description":"If provided, only returns repositories belong to that VCS link.","in":"query","schema":{"name":"vcs_link_id","type":"string","minLength":24,"maxLength":24,"description":"If provided, only returns repositories belong to that VCS link.","in":"query"}}],"responses":{"200":{"description":"The list of repos.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"repos":{"type":"array","items":{"type":"object","properties":{"vcsService":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"Version control provider of the repository.","example":"github"},"selfHostedVcsId":{"type":"string","description":"If `vcsService` is `self-hosted`, the ID of the self-hosted provider."},"id":{"type":"string","description":"The ID of the repository from the version control provider. This is always returned from the Northflank API as a string for consistency across providers. This value is the numerical ID of a GitHub repository, the numerical ID of a GitLab project, or the UUID of a Bitbucket repository.","example":"123456789"},"name":{"type":"string","description":"The name of the repository.","example":"gatsby-with-northflank"},"full_name":{"type":"string","description":"The full name of the repository.","example":"northflank/gatsby-with-northflank"},"url":{"type":"string","description":"The url of the repository.","example":"https://github.com/northflank/gatsby-with-northflank"},"owner":{"type":"object","properties":{"login":{"type":"string","description":"The login of the repository owner.","example":"northflank"}},"required":["login"],"additionalProperties":false,"description":"Details about the repository owner."},"accountLogin":{"type":"string","description":"The login of the linked version control account that can access this repository.","example":"example-user"}},"required":["vcsService","id","name","full_name","url","owner","accountLogin"],"additionalProperties":false,"description":"Details about an accessible repository."},"description":"A list of accessible repositories."}},"additionalProperties":false,"description":"Result data."},"pagination":{"type":"object","properties":{"hasNextPage":{"type":"boolean","description":"Is there another page of results available?","example":false},"cursor":{"type":"string","description":"The cursor to access the next page of results."},"count":{"type":"number","format":"float","description":"The number of results returned by this request.","example":1}},"required":["hasNextPage","count"],"additionalProperties":false,"description":"Data about the endpoint pagination."}},"required":["data","pagination"],"additionalProperties":false,"description":"Response object."}}},"tags":["Integrations"],"security":[],"x-nf-permission-required":"Account > Git > General > Read","x-nf-team-scoped":true,"x-nf-cli-command":["list","repos"]},"v1-integrations-vcs-repos-get-team-scoped":{"operationId":"getIntegrationsVcsRepos","summary":"List repositories","description":"Gets a list of repositories accessible to this account","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query","schema":{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query"}},{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query","schema":{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query"}},{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query","schema":{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query"}},{"name":"vcs_service","type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"If provided, only returns repositories belonging to this version control provider.","example":"github","in":"query","schema":{"name":"vcs_service","type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"If provided, only returns repositories belonging to this version control provider.","example":"github","in":"query"}},{"name":"self_hosted_vcs_id","type":"string","description":"If provided, only returns repositories belonging to this self-hosted version control provider.","in":"query","schema":{"name":"self_hosted_vcs_id","type":"string","description":"If provided, only returns repositories belonging to this self-hosted version control provider.","in":"query"}},{"name":"account_login","type":"string","description":"If provided, only returns repositories that can be accessed by the linked version control account with this name.","example":"example-user","in":"query","schema":{"name":"account_login","type":"string","description":"If provided, only returns repositories that can be accessed by the linked version control account with this name.","example":"example-user","in":"query"}},{"name":"vcs_link_id","type":"string","minLength":24,"maxLength":24,"description":"If provided, only returns repositories belong to that VCS link.","in":"query","schema":{"name":"vcs_link_id","type":"string","minLength":24,"maxLength":24,"description":"If provided, only returns repositories belong to that VCS link.","in":"query"}}],"responses":{"200":{"description":"The list of repos.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"repos":{"type":"array","items":{"type":"object","properties":{"vcsService":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"Version control provider of the repository.","example":"github"},"selfHostedVcsId":{"type":"string","description":"If `vcsService` is `self-hosted`, the ID of the self-hosted provider."},"id":{"type":"string","description":"The ID of the repository from the version control provider. This is always returned from the Northflank API as a string for consistency across providers. This value is the numerical ID of a GitHub repository, the numerical ID of a GitLab project, or the UUID of a Bitbucket repository.","example":"123456789"},"name":{"type":"string","description":"The name of the repository.","example":"gatsby-with-northflank"},"full_name":{"type":"string","description":"The full name of the repository.","example":"northflank/gatsby-with-northflank"},"url":{"type":"string","description":"The url of the repository.","example":"https://github.com/northflank/gatsby-with-northflank"},"owner":{"type":"object","properties":{"login":{"type":"string","description":"The login of the repository owner.","example":"northflank"}},"required":["login"],"additionalProperties":false,"description":"Details about the repository owner."},"accountLogin":{"type":"string","description":"The login of the linked version control account that can access this repository.","example":"example-user"}},"required":["vcsService","id","name","full_name","url","owner","accountLogin"],"additionalProperties":false,"description":"Details about an accessible repository."},"description":"A list of accessible repositories."}},"additionalProperties":false,"description":"Result data."},"pagination":{"type":"object","properties":{"hasNextPage":{"type":"boolean","description":"Is there another page of results available?","example":false},"cursor":{"type":"string","description":"The cursor to access the next page of results."},"count":{"type":"number","format":"float","description":"The number of results returned by this request.","example":1}},"required":["hasNextPage","count"],"additionalProperties":false,"description":"Data about the endpoint pagination."}},"required":["data","pagination"],"additionalProperties":false,"description":"Response object."}}},"tags":["Integrations","team"],"security":[],"x-nf-permission-required":"Account > Git > General > Read","x-nf-team-scoped":true,"x-nf-cli-command":["list","repos"]},"v1-integrations-vcs-repos--vcsService---repositoryOwner---repositoryName--branches-get":{"operationId":"getIntegrationsVcsReposVcsserviceRepositoryownerRepositorynameBranches","summary":"List branches","description":"Gets a list of branches for the repo","parameters":[{"name":"vcsService","type":"string","required":true,"description":"Version control provider of the repository","example":"github","in":"path","schema":{"name":"vcsService","type":"string","required":true,"description":"Version control provider of the repository","example":"github","in":"path"}},{"name":"repositoryOwner","type":"string","required":true,"description":"Name of the owner of the repository","example":"northflank-examples","in":"path","schema":{"name":"repositoryOwner","type":"string","required":true,"description":"Name of the owner of the repository","example":"northflank-examples","in":"path"}},{"name":"repositoryName","type":"string","required":true,"description":"Name of the repository","example":"next-js-example","in":"path","schema":{"name":"repositoryName","type":"string","required":true,"description":"Name of the repository","example":"next-js-example","in":"path"}},{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query","schema":{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query"}},{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query","schema":{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query"}},{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query","schema":{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query"}},{"name":"vcs_link_id","type":"string","minLength":24,"maxLength":24,"description":"If provided, uses the given VCS link to access the repository's data.","in":"query","schema":{"name":"vcs_link_id","type":"string","minLength":24,"maxLength":24,"description":"If provided, uses the given VCS link to access the repository's data.","in":"query"}}],"responses":{"200":{"description":"The list of branches.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"branches":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Name of the branch.","example":"main"},"id":{"type":"string","example":"MDM6UmVmMzA0MDU5MzM0OnJlZnMvaGVhZHMvbWFpbg="},"commit":{"type":"object","properties":{"sha":{"type":"string","description":"SHA identifier of the commit.","example":"f8aca180e989be62cba71db629d2ede05f2d10c4"},"author":{"type":"object","properties":{"login":{"type":"string","description":"The login of the commit author.","example":"northflank"}},"required":["login"],"additionalProperties":false,"description":"Details about the commit author."},"message":{"type":"string","description":"Commit message of the commit.","example":"Initial commit"},"date":{"type":"string","format":"date-time","description":"Timestamp of the commit.","example":"2021-09-17T14:04:39.000Z"}},"required":["sha","author"],"additionalProperties":false,"description":"Details about the most recent commit on the branch."}},"required":["name","id","commit"],"additionalProperties":false,"description":"Details about a branch."},"description":"A list of branches for this repository."}},"additionalProperties":false,"description":"Result data."},"pagination":{"type":"object","properties":{"hasNextPage":{"type":"boolean","description":"Is there another page of results available?","example":false},"cursor":{"type":"string","description":"The cursor to access the next page of results."},"count":{"type":"number","format":"float","description":"The number of results returned by this request.","example":1}},"required":["hasNextPage","count"],"additionalProperties":false,"description":"Data about the endpoint pagination."}},"required":["data","pagination"],"additionalProperties":false,"description":"Response object."}}},"tags":["Integrations"],"security":[],"x-nf-permission-required":"Account > Git > General > Read","x-nf-team-scoped":true,"x-nf-cli-command":["list","branches"]},"v1-integrations-vcs-repos--vcsService---repositoryOwner---repositoryName--branches-get-team-scoped":{"operationId":"getIntegrationsVcsReposVcsserviceRepositoryownerRepositorynameBranches","summary":"List branches","description":"Gets a list of branches for the repo","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"vcsService","type":"string","required":true,"description":"Version control provider of the repository","example":"github","in":"path","schema":{"name":"vcsService","type":"string","required":true,"description":"Version control provider of the repository","example":"github","in":"path"}},{"name":"repositoryOwner","type":"string","required":true,"description":"Name of the owner of the repository","example":"northflank-examples","in":"path","schema":{"name":"repositoryOwner","type":"string","required":true,"description":"Name of the owner of the repository","example":"northflank-examples","in":"path"}},{"name":"repositoryName","type":"string","required":true,"description":"Name of the repository","example":"next-js-example","in":"path","schema":{"name":"repositoryName","type":"string","required":true,"description":"Name of the repository","example":"next-js-example","in":"path"}},{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query","schema":{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query"}},{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query","schema":{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query"}},{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query","schema":{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query"}},{"name":"vcs_link_id","type":"string","minLength":24,"maxLength":24,"description":"If provided, uses the given VCS link to access the repository's data.","in":"query","schema":{"name":"vcs_link_id","type":"string","minLength":24,"maxLength":24,"description":"If provided, uses the given VCS link to access the repository's data.","in":"query"}}],"responses":{"200":{"description":"The list of branches.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"branches":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Name of the branch.","example":"main"},"id":{"type":"string","example":"MDM6UmVmMzA0MDU5MzM0OnJlZnMvaGVhZHMvbWFpbg="},"commit":{"type":"object","properties":{"sha":{"type":"string","description":"SHA identifier of the commit.","example":"f8aca180e989be62cba71db629d2ede05f2d10c4"},"author":{"type":"object","properties":{"login":{"type":"string","description":"The login of the commit author.","example":"northflank"}},"required":["login"],"additionalProperties":false,"description":"Details about the commit author."},"message":{"type":"string","description":"Commit message of the commit.","example":"Initial commit"},"date":{"type":"string","format":"date-time","description":"Timestamp of the commit.","example":"2021-09-17T14:04:39.000Z"}},"required":["sha","author"],"additionalProperties":false,"description":"Details about the most recent commit on the branch."}},"required":["name","id","commit"],"additionalProperties":false,"description":"Details about a branch."},"description":"A list of branches for this repository."}},"additionalProperties":false,"description":"Result data."},"pagination":{"type":"object","properties":{"hasNextPage":{"type":"boolean","description":"Is there another page of results available?","example":false},"cursor":{"type":"string","description":"The cursor to access the next page of results."},"count":{"type":"number","format":"float","description":"The number of results returned by this request.","example":1}},"required":["hasNextPage","count"],"additionalProperties":false,"description":"Data about the endpoint pagination."}},"required":["data","pagination"],"additionalProperties":false,"description":"Response object."}}},"tags":["Integrations","team"],"security":[],"x-nf-permission-required":"Account > Git > General > Read","x-nf-team-scoped":true,"x-nf-cli-command":["list","branches"]},"v1-load-balancers-get":{"operationId":"getLoadBalancers","summary":"List load balancers","description":"Gets a list of load balancers belonging to the team","parameters":[{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query","schema":{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query"}},{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query","schema":{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query"}},{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query","schema":{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query"}}],"responses":{"200":{"description":"A list of load balancers belonging to the team.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"loadBalancers":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The name of the load balancer.","example":"my-load-balancer"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"The description of the load balancer.","example":"This is a new load balancer."},"spec":{"type":"object","properties":{"type":{"type":"string","enum":["tcp","udp"],"description":"Protocol type for the load balancer","example":"tcp"},"target":{"type":"object","properties":{"type":{"type":"string","enum":["region","cluster"],"description":"Target type for the load balancer","example":"region"},"targetId":{"oneOf":[{"type":"string","pattern":"^[A-Za-z0-9]+(-[A-Za-z0-9]+)*$","description":"Target region name","example":"europe-west","x-required":true},{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","description":"Target cluster internal ID","example":"my-cluster","x-required":true}],"description":"Id of the loadbalancer target"}},"required":["type"],"additionalProperties":false},"ports":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^port-\\d+$","description":"Unique port identifier","example":"port-80"},"port":{"type":"string","description":"Port number or range (single port, multiple comma-separated, or range with dash)","examples":["80","80,443,8000-9000"]},"backends":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^[a-zA-Z0-9-]+\\/[a-zA-Z0-9-]+$","description":"Backend reference in format {projectId}/{nfObjectId}","example":"my-project/my-service"},"type":{"type":"string","enum":["service","addon"],"description":"Backend type (service or addon)","example":"service"},"port":{"type":"integer","minimum":1,"maximum":65535,"description":"Backend port number","example":3000},"weight":{"type":"integer","minimum":1,"maximum":100,"description":"Traffic weight for this backend","example":1,"default":1}},"required":["id","type","port"],"additionalProperties":false},"minItems":1,"description":"Backend services or addons for this port"}},"required":["id","port","backends"],"additionalProperties":false},"minItems":1,"description":"Port configurations for the load balancer"}},"required":["type","target","ports"],"additionalProperties":false,"description":"Load balancer specification"},"id":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"ID of the load balancer","example":"my-load-balancer"},"createdAt":{"type":"string","format":"date-time","description":"The time the load balancer was created.","example":"2021-01-20T11:19:53.175Z"},"updatedAt":{"type":"string","format":"date-time","description":"The time the load balancer was last updated.","example":"2021-01-20T11:19:53.175Z"}},"required":["name","spec","id","createdAt","updatedAt"],"additionalProperties":false,"description":"A load balancer object."},"description":"An array of load balancers."}},"required":["loadBalancers"],"additionalProperties":false,"description":"Result data."},"pagination":{"type":"object","properties":{"hasNextPage":{"type":"boolean","description":"Is there another page of results available?","example":false},"cursor":{"type":"string","description":"The cursor to access the next page of results."},"count":{"type":"number","format":"float","description":"The number of results returned by this request.","example":1}},"required":["hasNextPage","count"],"additionalProperties":false,"description":"Data about the endpoint pagination."}},"required":["data","pagination"],"additionalProperties":false,"description":"Response object."}}},"tags":["Load Balancers"],"security":[],"x-nf-permission-required":"Account > LoadBalancers > General > Read","x-nf-team-scoped":true,"x-nf-cli-command":["list","load-balancers"]},"v1-load-balancers-get-team-scoped":{"operationId":"getLoadBalancers","summary":"List load balancers","description":"Gets a list of load balancers belonging to the team","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query","schema":{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query"}},{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query","schema":{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query"}},{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query","schema":{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query"}}],"responses":{"200":{"description":"A list of load balancers belonging to the team.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"loadBalancers":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The name of the load balancer.","example":"my-load-balancer"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"The description of the load balancer.","example":"This is a new load balancer."},"spec":{"type":"object","properties":{"type":{"type":"string","enum":["tcp","udp"],"description":"Protocol type for the load balancer","example":"tcp"},"target":{"type":"object","properties":{"type":{"type":"string","enum":["region","cluster"],"description":"Target type for the load balancer","example":"region"},"targetId":{"oneOf":[{"type":"string","pattern":"^[A-Za-z0-9]+(-[A-Za-z0-9]+)*$","description":"Target region name","example":"europe-west","x-required":true},{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","description":"Target cluster internal ID","example":"my-cluster","x-required":true}],"description":"Id of the loadbalancer target"}},"required":["type"],"additionalProperties":false},"ports":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^port-\\d+$","description":"Unique port identifier","example":"port-80"},"port":{"type":"string","description":"Port number or range (single port, multiple comma-separated, or range with dash)","examples":["80","80,443,8000-9000"]},"backends":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^[a-zA-Z0-9-]+\\/[a-zA-Z0-9-]+$","description":"Backend reference in format {projectId}/{nfObjectId}","example":"my-project/my-service"},"type":{"type":"string","enum":["service","addon"],"description":"Backend type (service or addon)","example":"service"},"port":{"type":"integer","minimum":1,"maximum":65535,"description":"Backend port number","example":3000},"weight":{"type":"integer","minimum":1,"maximum":100,"description":"Traffic weight for this backend","example":1,"default":1}},"required":["id","type","port"],"additionalProperties":false},"minItems":1,"description":"Backend services or addons for this port"}},"required":["id","port","backends"],"additionalProperties":false},"minItems":1,"description":"Port configurations for the load balancer"}},"required":["type","target","ports"],"additionalProperties":false,"description":"Load balancer specification"},"id":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"ID of the load balancer","example":"my-load-balancer"},"createdAt":{"type":"string","format":"date-time","description":"The time the load balancer was created.","example":"2021-01-20T11:19:53.175Z"},"updatedAt":{"type":"string","format":"date-time","description":"The time the load balancer was last updated.","example":"2021-01-20T11:19:53.175Z"}},"required":["name","spec","id","createdAt","updatedAt"],"additionalProperties":false,"description":"A load balancer object."},"description":"An array of load balancers."}},"required":["loadBalancers"],"additionalProperties":false,"description":"Result data."},"pagination":{"type":"object","properties":{"hasNextPage":{"type":"boolean","description":"Is there another page of results available?","example":false},"cursor":{"type":"string","description":"The cursor to access the next page of results."},"count":{"type":"number","format":"float","description":"The number of results returned by this request.","example":1}},"required":["hasNextPage","count"],"additionalProperties":false,"description":"Data about the endpoint pagination."}},"required":["data","pagination"],"additionalProperties":false,"description":"Response object."}}},"tags":["Load Balancers","team"],"security":[],"x-nf-permission-required":"Account > LoadBalancers > General > Read","x-nf-team-scoped":true,"x-nf-cli-command":["list","load-balancers"]},"v1-load-balancers-post":{"operationId":"postLoadBalancers","summary":"Create load balancer","description":"Creates a new load balancer","parameters":[],"responses":{"200":{"description":"Details about the newly created load balancer.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"ID of the load balancer","example":"my-load-balancer"},"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The name of the load balancer.","example":"my-load-balancer"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"The description of the load balancer.","example":"This is a new load balancer."},"spec":{"type":"object","properties":{"type":{"type":"string","enum":["tcp","udp"],"description":"Protocol type for the load balancer","example":"tcp"},"target":{"type":"object","properties":{"type":{"type":"string","enum":["region","cluster"],"description":"Target type for the load balancer","example":"region"},"targetId":{"oneOf":[{"type":"string","pattern":"^[A-Za-z0-9]+(-[A-Za-z0-9]+)*$","description":"Target region name","example":"europe-west","x-required":true},{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","description":"Target cluster internal ID","example":"my-cluster","x-required":true}],"description":"Id of the loadbalancer target"}},"required":["type"],"additionalProperties":false},"ports":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^port-\\d+$","description":"Unique port identifier","example":"port-80"},"port":{"type":"string","description":"Port number or range (single port, multiple comma-separated, or range with dash)","examples":["80","80,443,8000-9000"]},"backends":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^[a-zA-Z0-9-]+\\/[a-zA-Z0-9-]+$","description":"Backend reference in format {projectId}/{nfObjectId}","example":"my-project/my-service"},"type":{"type":"string","enum":["service","addon"],"description":"Backend type (service or addon)","example":"service"},"port":{"type":"integer","minimum":1,"maximum":65535,"description":"Backend port number","example":3000},"weight":{"type":"integer","minimum":1,"maximum":100,"description":"Traffic weight for this backend","example":1,"default":1}},"required":["id","type","port"],"additionalProperties":false},"minItems":1,"description":"Backend services or addons for this port"}},"required":["id","port","backends"],"additionalProperties":false},"minItems":1,"description":"Port configurations for the load balancer"}},"required":["type","target","ports"],"additionalProperties":false,"description":"Load balancer specification"},"state":{"type":"object","properties":{"endpoints":{"type":"array","items":{"type":"string"},"description":"Public IP addresses (endpoints) of the load balancer","example":["203.0.113.1"]},"status":{"type":"string","enum":["pending","provisioning","provisioned","error","deleting","deleted"],"description":"Current status of the load balancer","example":"provisioned"},"lastTransitionTime":{"type":"string","format":"date-time","description":"Time of the last status transition"}},"required":["status","lastTransitionTime"],"additionalProperties":false},"createdAt":{"type":"string","format":"date-time","description":"The time the load balancer was created.","example":"2021-01-20T11:19:53.175Z"},"updatedAt":{"type":"string","format":"date-time","description":"The time the load balancer was last updated.","example":"2021-01-20T11:19:53.175Z"}},"required":["id","name","spec","createdAt","updatedAt"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Load Balancers"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The name of the load balancer.","example":"my-load-balancer"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"The description of the load balancer.","example":"This is a new load balancer."},"spec":{"type":"object","properties":{"type":{"type":"string","enum":["tcp","udp"],"description":"Protocol type for the load balancer","example":"tcp"},"target":{"type":"object","properties":{"type":{"type":"string","enum":["region","cluster"],"description":"Target type for the load balancer","example":"region"},"targetId":{"oneOf":[{"type":"string","pattern":"^[A-Za-z0-9]+(-[A-Za-z0-9]+)*$","description":"Target region name","example":"europe-west","x-required":true},{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","description":"Target cluster internal ID","example":"my-cluster","x-required":true}],"description":"Id of the loadbalancer target"}},"required":["type"],"additionalProperties":false},"ports":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^port-\\d+$","description":"Unique port identifier","example":"port-80"},"port":{"type":"string","description":"Port number or range (single port, multiple comma-separated, or range with dash)","examples":["80","80,443,8000-9000"]},"backends":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^[a-zA-Z0-9-]+\\/[a-zA-Z0-9-]+$","description":"Backend reference in format {projectId}/{nfObjectId}","example":"my-project/my-service"},"type":{"type":"string","enum":["service","addon"],"description":"Backend type (service or addon)","example":"service"},"port":{"type":"integer","minimum":1,"maximum":65535,"description":"Backend port number","example":3000},"weight":{"type":"integer","minimum":1,"maximum":100,"description":"Traffic weight for this backend","example":1,"default":1}},"required":["id","type","port"],"additionalProperties":false},"minItems":1,"description":"Backend services or addons for this port"}},"required":["id","port","backends"],"additionalProperties":false},"minItems":1,"description":"Port configurations for the load balancer"}},"required":["type","target","ports"],"additionalProperties":false,"description":"Load balancer specification"}},"required":["name","spec"],"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Account > LoadBalancers > General > Create","x-nf-team-scoped":true,"x-nf-cli-command":["create","load-balancer"]},"v1-load-balancers-post-team-scoped":{"operationId":"postLoadBalancers","summary":"Create load balancer","description":"Creates a new load balancer","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}}],"responses":{"200":{"description":"Details about the newly created load balancer.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"ID of the load balancer","example":"my-load-balancer"},"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The name of the load balancer.","example":"my-load-balancer"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"The description of the load balancer.","example":"This is a new load balancer."},"spec":{"type":"object","properties":{"type":{"type":"string","enum":["tcp","udp"],"description":"Protocol type for the load balancer","example":"tcp"},"target":{"type":"object","properties":{"type":{"type":"string","enum":["region","cluster"],"description":"Target type for the load balancer","example":"region"},"targetId":{"oneOf":[{"type":"string","pattern":"^[A-Za-z0-9]+(-[A-Za-z0-9]+)*$","description":"Target region name","example":"europe-west","x-required":true},{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","description":"Target cluster internal ID","example":"my-cluster","x-required":true}],"description":"Id of the loadbalancer target"}},"required":["type"],"additionalProperties":false},"ports":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^port-\\d+$","description":"Unique port identifier","example":"port-80"},"port":{"type":"string","description":"Port number or range (single port, multiple comma-separated, or range with dash)","examples":["80","80,443,8000-9000"]},"backends":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^[a-zA-Z0-9-]+\\/[a-zA-Z0-9-]+$","description":"Backend reference in format {projectId}/{nfObjectId}","example":"my-project/my-service"},"type":{"type":"string","enum":["service","addon"],"description":"Backend type (service or addon)","example":"service"},"port":{"type":"integer","minimum":1,"maximum":65535,"description":"Backend port number","example":3000},"weight":{"type":"integer","minimum":1,"maximum":100,"description":"Traffic weight for this backend","example":1,"default":1}},"required":["id","type","port"],"additionalProperties":false},"minItems":1,"description":"Backend services or addons for this port"}},"required":["id","port","backends"],"additionalProperties":false},"minItems":1,"description":"Port configurations for the load balancer"}},"required":["type","target","ports"],"additionalProperties":false,"description":"Load balancer specification"},"state":{"type":"object","properties":{"endpoints":{"type":"array","items":{"type":"string"},"description":"Public IP addresses (endpoints) of the load balancer","example":["203.0.113.1"]},"status":{"type":"string","enum":["pending","provisioning","provisioned","error","deleting","deleted"],"description":"Current status of the load balancer","example":"provisioned"},"lastTransitionTime":{"type":"string","format":"date-time","description":"Time of the last status transition"}},"required":["status","lastTransitionTime"],"additionalProperties":false},"createdAt":{"type":"string","format":"date-time","description":"The time the load balancer was created.","example":"2021-01-20T11:19:53.175Z"},"updatedAt":{"type":"string","format":"date-time","description":"The time the load balancer was last updated.","example":"2021-01-20T11:19:53.175Z"}},"required":["id","name","spec","createdAt","updatedAt"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Load Balancers","team"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The name of the load balancer.","example":"my-load-balancer"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"The description of the load balancer.","example":"This is a new load balancer."},"spec":{"type":"object","properties":{"type":{"type":"string","enum":["tcp","udp"],"description":"Protocol type for the load balancer","example":"tcp"},"target":{"type":"object","properties":{"type":{"type":"string","enum":["region","cluster"],"description":"Target type for the load balancer","example":"region"},"targetId":{"oneOf":[{"type":"string","pattern":"^[A-Za-z0-9]+(-[A-Za-z0-9]+)*$","description":"Target region name","example":"europe-west","x-required":true},{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","description":"Target cluster internal ID","example":"my-cluster","x-required":true}],"description":"Id of the loadbalancer target"}},"required":["type"],"additionalProperties":false},"ports":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^port-\\d+$","description":"Unique port identifier","example":"port-80"},"port":{"type":"string","description":"Port number or range (single port, multiple comma-separated, or range with dash)","examples":["80","80,443,8000-9000"]},"backends":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^[a-zA-Z0-9-]+\\/[a-zA-Z0-9-]+$","description":"Backend reference in format {projectId}/{nfObjectId}","example":"my-project/my-service"},"type":{"type":"string","enum":["service","addon"],"description":"Backend type (service or addon)","example":"service"},"port":{"type":"integer","minimum":1,"maximum":65535,"description":"Backend port number","example":3000},"weight":{"type":"integer","minimum":1,"maximum":100,"description":"Traffic weight for this backend","example":1,"default":1}},"required":["id","type","port"],"additionalProperties":false},"minItems":1,"description":"Backend services or addons for this port"}},"required":["id","port","backends"],"additionalProperties":false},"minItems":1,"description":"Port configurations for the load balancer"}},"required":["type","target","ports"],"additionalProperties":false,"description":"Load balancer specification"}},"required":["name","spec"],"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Account > LoadBalancers > General > Create","x-nf-team-scoped":true,"x-nf-cli-command":["create","load-balancer"]},"v1-load-balancers-put":{"operationId":"putLoadBalancers","summary":"Put load balancer","description":"Creates or updates a load balancer","parameters":[],"responses":{"200":{"description":"Details about the created or updated load balancer.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"ID of the load balancer","example":"my-load-balancer"},"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The name of the load balancer.","example":"my-load-balancer"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"The description of the load balancer.","example":"This is a new load balancer."},"spec":{"type":"object","properties":{"type":{"type":"string","enum":["tcp","udp"],"description":"Protocol type for the load balancer","example":"tcp"},"target":{"type":"object","properties":{"type":{"type":"string","enum":["region","cluster"],"description":"Target type for the load balancer","example":"region"},"targetId":{"oneOf":[{"type":"string","pattern":"^[A-Za-z0-9]+(-[A-Za-z0-9]+)*$","description":"Target region name","example":"europe-west","x-required":true},{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","description":"Target cluster internal ID","example":"my-cluster","x-required":true}],"description":"Id of the loadbalancer target"}},"required":["type"],"additionalProperties":false},"ports":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^port-\\d+$","description":"Unique port identifier","example":"port-80"},"port":{"type":"string","description":"Port number or range (single port, multiple comma-separated, or range with dash)","examples":["80","80,443,8000-9000"]},"backends":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^[a-zA-Z0-9-]+\\/[a-zA-Z0-9-]+$","description":"Backend reference in format {projectId}/{nfObjectId}","example":"my-project/my-service"},"type":{"type":"string","enum":["service","addon"],"description":"Backend type (service or addon)","example":"service"},"port":{"type":"integer","minimum":1,"maximum":65535,"description":"Backend port number","example":3000},"weight":{"type":"integer","minimum":1,"maximum":100,"description":"Traffic weight for this backend","example":1,"default":1}},"required":["id","type","port"],"additionalProperties":false},"minItems":1,"description":"Backend services or addons for this port"}},"required":["id","port","backends"],"additionalProperties":false},"minItems":1,"description":"Port configurations for the load balancer"}},"required":["type","target","ports"],"additionalProperties":false,"description":"Load balancer specification"},"state":{"type":"object","properties":{"endpoints":{"type":"array","items":{"type":"string"},"description":"Public IP addresses (endpoints) of the load balancer","example":["203.0.113.1"]},"status":{"type":"string","enum":["pending","provisioning","provisioned","error","deleting","deleted"],"description":"Current status of the load balancer","example":"provisioned"},"lastTransitionTime":{"type":"string","format":"date-time","description":"Time of the last status transition"}},"required":["status","lastTransitionTime"],"additionalProperties":false},"createdAt":{"type":"string","format":"date-time","description":"The time the load balancer was created.","example":"2021-01-20T11:19:53.175Z"},"updatedAt":{"type":"string","format":"date-time","description":"The time the load balancer was last updated.","example":"2021-01-20T11:19:53.175Z"}},"required":["id","name","spec","createdAt","updatedAt"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Load Balancers"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The name of the load balancer.","example":"my-load-balancer"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"The description of the load balancer.","example":"This is a new load balancer."},"spec":{"type":"object","properties":{"type":{"type":"string","enum":["tcp","udp"],"description":"Protocol type for the load balancer","example":"tcp"},"target":{"type":"object","properties":{"type":{"type":"string","enum":["region","cluster"],"description":"Target type for the load balancer","example":"region"},"targetId":{"oneOf":[{"type":"string","pattern":"^[A-Za-z0-9]+(-[A-Za-z0-9]+)*$","description":"Target region name","example":"europe-west","x-required":true},{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","description":"Target cluster internal ID","example":"my-cluster","x-required":true}],"description":"Id of the loadbalancer target"}},"required":["type"],"additionalProperties":false},"ports":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^port-\\d+$","description":"Unique port identifier","example":"port-80"},"port":{"type":"string","description":"Port number or range (single port, multiple comma-separated, or range with dash)","examples":["80","80,443,8000-9000"]},"backends":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^[a-zA-Z0-9-]+\\/[a-zA-Z0-9-]+$","description":"Backend reference in format {projectId}/{nfObjectId}","example":"my-project/my-service"},"type":{"type":"string","enum":["service","addon"],"description":"Backend type (service or addon)","example":"service"},"port":{"type":"integer","minimum":1,"maximum":65535,"description":"Backend port number","example":3000},"weight":{"type":"integer","minimum":1,"maximum":100,"description":"Traffic weight for this backend","example":1,"default":1}},"required":["id","type","port"],"additionalProperties":false},"minItems":1,"description":"Backend services or addons for this port"}},"required":["id","port","backends"],"additionalProperties":false},"minItems":1,"description":"Port configurations for the load balancer"}},"required":["type","target","ports"],"additionalProperties":false,"description":"Load balancer specification"}},"required":["name","spec"],"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Account > LoadBalancers > General > Create","x-nf-team-scoped":true,"x-nf-cli-command":["put","load-balancer"]},"v1-load-balancers-put-team-scoped":{"operationId":"putLoadBalancers","summary":"Put load balancer","description":"Creates or updates a load balancer","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}}],"responses":{"200":{"description":"Details about the created or updated load balancer.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"ID of the load balancer","example":"my-load-balancer"},"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The name of the load balancer.","example":"my-load-balancer"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"The description of the load balancer.","example":"This is a new load balancer."},"spec":{"type":"object","properties":{"type":{"type":"string","enum":["tcp","udp"],"description":"Protocol type for the load balancer","example":"tcp"},"target":{"type":"object","properties":{"type":{"type":"string","enum":["region","cluster"],"description":"Target type for the load balancer","example":"region"},"targetId":{"oneOf":[{"type":"string","pattern":"^[A-Za-z0-9]+(-[A-Za-z0-9]+)*$","description":"Target region name","example":"europe-west","x-required":true},{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","description":"Target cluster internal ID","example":"my-cluster","x-required":true}],"description":"Id of the loadbalancer target"}},"required":["type"],"additionalProperties":false},"ports":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^port-\\d+$","description":"Unique port identifier","example":"port-80"},"port":{"type":"string","description":"Port number or range (single port, multiple comma-separated, or range with dash)","examples":["80","80,443,8000-9000"]},"backends":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^[a-zA-Z0-9-]+\\/[a-zA-Z0-9-]+$","description":"Backend reference in format {projectId}/{nfObjectId}","example":"my-project/my-service"},"type":{"type":"string","enum":["service","addon"],"description":"Backend type (service or addon)","example":"service"},"port":{"type":"integer","minimum":1,"maximum":65535,"description":"Backend port number","example":3000},"weight":{"type":"integer","minimum":1,"maximum":100,"description":"Traffic weight for this backend","example":1,"default":1}},"required":["id","type","port"],"additionalProperties":false},"minItems":1,"description":"Backend services or addons for this port"}},"required":["id","port","backends"],"additionalProperties":false},"minItems":1,"description":"Port configurations for the load balancer"}},"required":["type","target","ports"],"additionalProperties":false,"description":"Load balancer specification"},"state":{"type":"object","properties":{"endpoints":{"type":"array","items":{"type":"string"},"description":"Public IP addresses (endpoints) of the load balancer","example":["203.0.113.1"]},"status":{"type":"string","enum":["pending","provisioning","provisioned","error","deleting","deleted"],"description":"Current status of the load balancer","example":"provisioned"},"lastTransitionTime":{"type":"string","format":"date-time","description":"Time of the last status transition"}},"required":["status","lastTransitionTime"],"additionalProperties":false},"createdAt":{"type":"string","format":"date-time","description":"The time the load balancer was created.","example":"2021-01-20T11:19:53.175Z"},"updatedAt":{"type":"string","format":"date-time","description":"The time the load balancer was last updated.","example":"2021-01-20T11:19:53.175Z"}},"required":["id","name","spec","createdAt","updatedAt"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Load Balancers","team"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The name of the load balancer.","example":"my-load-balancer"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"The description of the load balancer.","example":"This is a new load balancer."},"spec":{"type":"object","properties":{"type":{"type":"string","enum":["tcp","udp"],"description":"Protocol type for the load balancer","example":"tcp"},"target":{"type":"object","properties":{"type":{"type":"string","enum":["region","cluster"],"description":"Target type for the load balancer","example":"region"},"targetId":{"oneOf":[{"type":"string","pattern":"^[A-Za-z0-9]+(-[A-Za-z0-9]+)*$","description":"Target region name","example":"europe-west","x-required":true},{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","description":"Target cluster internal ID","example":"my-cluster","x-required":true}],"description":"Id of the loadbalancer target"}},"required":["type"],"additionalProperties":false},"ports":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^port-\\d+$","description":"Unique port identifier","example":"port-80"},"port":{"type":"string","description":"Port number or range (single port, multiple comma-separated, or range with dash)","examples":["80","80,443,8000-9000"]},"backends":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^[a-zA-Z0-9-]+\\/[a-zA-Z0-9-]+$","description":"Backend reference in format {projectId}/{nfObjectId}","example":"my-project/my-service"},"type":{"type":"string","enum":["service","addon"],"description":"Backend type (service or addon)","example":"service"},"port":{"type":"integer","minimum":1,"maximum":65535,"description":"Backend port number","example":3000},"weight":{"type":"integer","minimum":1,"maximum":100,"description":"Traffic weight for this backend","example":1,"default":1}},"required":["id","type","port"],"additionalProperties":false},"minItems":1,"description":"Backend services or addons for this port"}},"required":["id","port","backends"],"additionalProperties":false},"minItems":1,"description":"Port configurations for the load balancer"}},"required":["type","target","ports"],"additionalProperties":false,"description":"Load balancer specification"}},"required":["name","spec"],"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Account > LoadBalancers > General > Create","x-nf-team-scoped":true,"x-nf-cli-command":["put","load-balancer"]},"v1-load-balancers--loadBalancerId--get":{"operationId":"getLoadBalancersLoadbalancerid","summary":"Get load balancer","description":"Gets information about the given load balancer","parameters":[{"name":"loadBalancerId","type":"string","required":true,"description":"ID of the load balancer","example":"my-load-balancer","in":"path","schema":{"name":"loadBalancerId","type":"string","required":true,"description":"ID of the load balancer","example":"my-load-balancer","in":"path"}}],"responses":{"200":{"description":"Details about the load balancer.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"ID of the load balancer","example":"my-load-balancer"},"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The name of the load balancer.","example":"my-load-balancer"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"The description of the load balancer.","example":"This is a new load balancer."},"spec":{"type":"object","properties":{"type":{"type":"string","enum":["tcp","udp"],"description":"Protocol type for the load balancer","example":"tcp"},"target":{"type":"object","properties":{"type":{"type":"string","enum":["region","cluster"],"description":"Target type for the load balancer","example":"region"},"targetId":{"oneOf":[{"type":"string","pattern":"^[A-Za-z0-9]+(-[A-Za-z0-9]+)*$","description":"Target region name","example":"europe-west","x-required":true},{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","description":"Target cluster internal ID","example":"my-cluster","x-required":true}],"description":"Id of the loadbalancer target"}},"required":["type"],"additionalProperties":false},"ports":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^port-\\d+$","description":"Unique port identifier","example":"port-80"},"port":{"type":"string","description":"Port number or range (single port, multiple comma-separated, or range with dash)","examples":["80","80,443,8000-9000"]},"backends":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^[a-zA-Z0-9-]+\\/[a-zA-Z0-9-]+$","description":"Backend reference in format {projectId}/{nfObjectId}","example":"my-project/my-service"},"type":{"type":"string","enum":["service","addon"],"description":"Backend type (service or addon)","example":"service"},"port":{"type":"integer","minimum":1,"maximum":65535,"description":"Backend port number","example":3000},"weight":{"type":"integer","minimum":1,"maximum":100,"description":"Traffic weight for this backend","example":1,"default":1}},"required":["id","type","port"],"additionalProperties":false},"minItems":1,"description":"Backend services or addons for this port"}},"required":["id","port","backends"],"additionalProperties":false},"minItems":1,"description":"Port configurations for the load balancer"}},"required":["type","target","ports"],"additionalProperties":false,"description":"Load balancer specification"},"state":{"type":"object","properties":{"endpoints":{"type":"array","items":{"type":"string"},"description":"Public IP addresses (endpoints) of the load balancer","example":["203.0.113.1"]},"status":{"type":"string","enum":["pending","provisioning","provisioned","error","deleting","deleted"],"description":"Current status of the load balancer","example":"provisioned"},"lastTransitionTime":{"type":"string","format":"date-time","description":"Time of the last status transition"}},"required":["status","lastTransitionTime"],"additionalProperties":false},"createdAt":{"type":"string","format":"date-time","description":"The time the load balancer was created.","example":"2021-01-20T11:19:53.175Z"},"updatedAt":{"type":"string","format":"date-time","description":"The time the load balancer was last updated.","example":"2021-01-20T11:19:53.175Z"}},"required":["id","name","spec","createdAt","updatedAt"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Load Balancers"],"security":[],"x-nf-permission-required":"Account > LoadBalancers > General > Read","x-nf-team-scoped":true,"x-nf-cli-command":["get","load-balancer"]},"v1-load-balancers--loadBalancerId--get-team-scoped":{"operationId":"getLoadBalancersLoadbalancerid","summary":"Get load balancer","description":"Gets information about the given load balancer","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"loadBalancerId","type":"string","required":true,"description":"ID of the load balancer","example":"my-load-balancer","in":"path","schema":{"name":"loadBalancerId","type":"string","required":true,"description":"ID of the load balancer","example":"my-load-balancer","in":"path"}}],"responses":{"200":{"description":"Details about the load balancer.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"ID of the load balancer","example":"my-load-balancer"},"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The name of the load balancer.","example":"my-load-balancer"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"The description of the load balancer.","example":"This is a new load balancer."},"spec":{"type":"object","properties":{"type":{"type":"string","enum":["tcp","udp"],"description":"Protocol type for the load balancer","example":"tcp"},"target":{"type":"object","properties":{"type":{"type":"string","enum":["region","cluster"],"description":"Target type for the load balancer","example":"region"},"targetId":{"oneOf":[{"type":"string","pattern":"^[A-Za-z0-9]+(-[A-Za-z0-9]+)*$","description":"Target region name","example":"europe-west","x-required":true},{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","description":"Target cluster internal ID","example":"my-cluster","x-required":true}],"description":"Id of the loadbalancer target"}},"required":["type"],"additionalProperties":false},"ports":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^port-\\d+$","description":"Unique port identifier","example":"port-80"},"port":{"type":"string","description":"Port number or range (single port, multiple comma-separated, or range with dash)","examples":["80","80,443,8000-9000"]},"backends":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^[a-zA-Z0-9-]+\\/[a-zA-Z0-9-]+$","description":"Backend reference in format {projectId}/{nfObjectId}","example":"my-project/my-service"},"type":{"type":"string","enum":["service","addon"],"description":"Backend type (service or addon)","example":"service"},"port":{"type":"integer","minimum":1,"maximum":65535,"description":"Backend port number","example":3000},"weight":{"type":"integer","minimum":1,"maximum":100,"description":"Traffic weight for this backend","example":1,"default":1}},"required":["id","type","port"],"additionalProperties":false},"minItems":1,"description":"Backend services or addons for this port"}},"required":["id","port","backends"],"additionalProperties":false},"minItems":1,"description":"Port configurations for the load balancer"}},"required":["type","target","ports"],"additionalProperties":false,"description":"Load balancer specification"},"state":{"type":"object","properties":{"endpoints":{"type":"array","items":{"type":"string"},"description":"Public IP addresses (endpoints) of the load balancer","example":["203.0.113.1"]},"status":{"type":"string","enum":["pending","provisioning","provisioned","error","deleting","deleted"],"description":"Current status of the load balancer","example":"provisioned"},"lastTransitionTime":{"type":"string","format":"date-time","description":"Time of the last status transition"}},"required":["status","lastTransitionTime"],"additionalProperties":false},"createdAt":{"type":"string","format":"date-time","description":"The time the load balancer was created.","example":"2021-01-20T11:19:53.175Z"},"updatedAt":{"type":"string","format":"date-time","description":"The time the load balancer was last updated.","example":"2021-01-20T11:19:53.175Z"}},"required":["id","name","spec","createdAt","updatedAt"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Load Balancers","team"],"security":[],"x-nf-permission-required":"Account > LoadBalancers > General > Read","x-nf-team-scoped":true,"x-nf-cli-command":["get","load-balancer"]},"v1-load-balancers--loadBalancerId--patch":{"operationId":"patchLoadBalancersLoadbalancerid","summary":"Patch load balancer","description":"Updates a load balancer","parameters":[{"name":"loadBalancerId","type":"string","required":true,"description":"ID of the load balancer","example":"my-load-balancer","in":"path","schema":{"name":"loadBalancerId","type":"string","required":true,"description":"ID of the load balancer","example":"my-load-balancer","in":"path"}}],"responses":{"200":{"description":"Details about the updated load balancer.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"ID of the load balancer","example":"my-load-balancer"},"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The name of the load balancer.","example":"my-load-balancer"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"The description of the load balancer.","example":"This is a new load balancer."},"spec":{"type":"object","properties":{"type":{"type":"string","enum":["tcp","udp"],"description":"Protocol type for the load balancer","example":"tcp"},"target":{"type":"object","properties":{"type":{"type":"string","enum":["region","cluster"],"description":"Target type for the load balancer","example":"region"},"targetId":{"oneOf":[{"type":"string","pattern":"^[A-Za-z0-9]+(-[A-Za-z0-9]+)*$","description":"Target region name","example":"europe-west","x-required":true},{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","description":"Target cluster internal ID","example":"my-cluster","x-required":true}],"description":"Id of the loadbalancer target"}},"required":["type"],"additionalProperties":false},"ports":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^port-\\d+$","description":"Unique port identifier","example":"port-80"},"port":{"type":"string","description":"Port number or range (single port, multiple comma-separated, or range with dash)","examples":["80","80,443,8000-9000"]},"backends":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^[a-zA-Z0-9-]+\\/[a-zA-Z0-9-]+$","description":"Backend reference in format {projectId}/{nfObjectId}","example":"my-project/my-service"},"type":{"type":"string","enum":["service","addon"],"description":"Backend type (service or addon)","example":"service"},"port":{"type":"integer","minimum":1,"maximum":65535,"description":"Backend port number","example":3000},"weight":{"type":"integer","minimum":1,"maximum":100,"description":"Traffic weight for this backend","example":1,"default":1}},"required":["id","type","port"],"additionalProperties":false},"minItems":1,"description":"Backend services or addons for this port"}},"required":["id","port","backends"],"additionalProperties":false},"minItems":1,"description":"Port configurations for the load balancer"}},"required":["type","target","ports"],"additionalProperties":false,"description":"Load balancer specification"},"state":{"type":"object","properties":{"endpoints":{"type":"array","items":{"type":"string"},"description":"Public IP addresses (endpoints) of the load balancer","example":["203.0.113.1"]},"status":{"type":"string","enum":["pending","provisioning","provisioned","error","deleting","deleted"],"description":"Current status of the load balancer","example":"provisioned"},"lastTransitionTime":{"type":"string","format":"date-time","description":"Time of the last status transition"}},"required":["status","lastTransitionTime"],"additionalProperties":false},"createdAt":{"type":"string","format":"date-time","description":"The time the load balancer was created.","example":"2021-01-20T11:19:53.175Z"},"updatedAt":{"type":"string","format":"date-time","description":"The time the load balancer was last updated.","example":"2021-01-20T11:19:53.175Z"}},"required":["id","name","spec","createdAt","updatedAt"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Load Balancers"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The name of the load balancer.","example":"my-load-balancer"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"The description of the load balancer.","example":"This is a new load balancer."},"spec":{"type":"object","properties":{"type":{"type":"string","enum":["tcp","udp"],"description":"Protocol type for the load balancer","example":"tcp"},"target":{"type":"object","properties":{"type":{"type":"string","enum":["region","cluster"],"description":"Target type for the load balancer","example":"region"},"targetId":{"oneOf":[{"type":"string","pattern":"^[A-Za-z0-9]+(-[A-Za-z0-9]+)*$","description":"Target region name","example":"europe-west","x-required":true},{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","description":"Target cluster internal ID","example":"my-cluster","x-required":true}],"description":"Id of the loadbalancer target"}},"required":["type"],"additionalProperties":false},"ports":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^port-\\d+$","description":"Unique port identifier","example":"port-80"},"port":{"type":"string","description":"Port number or range (single port, multiple comma-separated, or range with dash)","examples":["80","80,443,8000-9000"]},"backends":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^[a-zA-Z0-9-]+\\/[a-zA-Z0-9-]+$","description":"Backend reference in format {projectId}/{nfObjectId}","example":"my-project/my-service"},"type":{"type":"string","enum":["service","addon"],"description":"Backend type (service or addon)","example":"service"},"port":{"type":"integer","minimum":1,"maximum":65535,"description":"Backend port number","example":3000},"weight":{"type":"integer","minimum":1,"maximum":100,"description":"Traffic weight for this backend","example":1,"default":1}},"required":["id","type","port"],"additionalProperties":false},"minItems":1,"description":"Backend services or addons for this port"}},"required":["id","port","backends"],"additionalProperties":false},"minItems":1,"description":"Port configurations for the load balancer"}},"required":["type","target","ports"],"additionalProperties":false,"description":"Load balancer specification"}},"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Account > LoadBalancers > General > Update","x-nf-team-scoped":true,"x-nf-cli-command":["patch","load-balancer"]},"v1-load-balancers--loadBalancerId--patch-team-scoped":{"operationId":"patchLoadBalancersLoadbalancerid","summary":"Patch load balancer","description":"Updates a load balancer","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"loadBalancerId","type":"string","required":true,"description":"ID of the load balancer","example":"my-load-balancer","in":"path","schema":{"name":"loadBalancerId","type":"string","required":true,"description":"ID of the load balancer","example":"my-load-balancer","in":"path"}}],"responses":{"200":{"description":"Details about the updated load balancer.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"ID of the load balancer","example":"my-load-balancer"},"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The name of the load balancer.","example":"my-load-balancer"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"The description of the load balancer.","example":"This is a new load balancer."},"spec":{"type":"object","properties":{"type":{"type":"string","enum":["tcp","udp"],"description":"Protocol type for the load balancer","example":"tcp"},"target":{"type":"object","properties":{"type":{"type":"string","enum":["region","cluster"],"description":"Target type for the load balancer","example":"region"},"targetId":{"oneOf":[{"type":"string","pattern":"^[A-Za-z0-9]+(-[A-Za-z0-9]+)*$","description":"Target region name","example":"europe-west","x-required":true},{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","description":"Target cluster internal ID","example":"my-cluster","x-required":true}],"description":"Id of the loadbalancer target"}},"required":["type"],"additionalProperties":false},"ports":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^port-\\d+$","description":"Unique port identifier","example":"port-80"},"port":{"type":"string","description":"Port number or range (single port, multiple comma-separated, or range with dash)","examples":["80","80,443,8000-9000"]},"backends":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^[a-zA-Z0-9-]+\\/[a-zA-Z0-9-]+$","description":"Backend reference in format {projectId}/{nfObjectId}","example":"my-project/my-service"},"type":{"type":"string","enum":["service","addon"],"description":"Backend type (service or addon)","example":"service"},"port":{"type":"integer","minimum":1,"maximum":65535,"description":"Backend port number","example":3000},"weight":{"type":"integer","minimum":1,"maximum":100,"description":"Traffic weight for this backend","example":1,"default":1}},"required":["id","type","port"],"additionalProperties":false},"minItems":1,"description":"Backend services or addons for this port"}},"required":["id","port","backends"],"additionalProperties":false},"minItems":1,"description":"Port configurations for the load balancer"}},"required":["type","target","ports"],"additionalProperties":false,"description":"Load balancer specification"},"state":{"type":"object","properties":{"endpoints":{"type":"array","items":{"type":"string"},"description":"Public IP addresses (endpoints) of the load balancer","example":["203.0.113.1"]},"status":{"type":"string","enum":["pending","provisioning","provisioned","error","deleting","deleted"],"description":"Current status of the load balancer","example":"provisioned"},"lastTransitionTime":{"type":"string","format":"date-time","description":"Time of the last status transition"}},"required":["status","lastTransitionTime"],"additionalProperties":false},"createdAt":{"type":"string","format":"date-time","description":"The time the load balancer was created.","example":"2021-01-20T11:19:53.175Z"},"updatedAt":{"type":"string","format":"date-time","description":"The time the load balancer was last updated.","example":"2021-01-20T11:19:53.175Z"}},"required":["id","name","spec","createdAt","updatedAt"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Load Balancers","team"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The name of the load balancer.","example":"my-load-balancer"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"The description of the load balancer.","example":"This is a new load balancer."},"spec":{"type":"object","properties":{"type":{"type":"string","enum":["tcp","udp"],"description":"Protocol type for the load balancer","example":"tcp"},"target":{"type":"object","properties":{"type":{"type":"string","enum":["region","cluster"],"description":"Target type for the load balancer","example":"region"},"targetId":{"oneOf":[{"type":"string","pattern":"^[A-Za-z0-9]+(-[A-Za-z0-9]+)*$","description":"Target region name","example":"europe-west","x-required":true},{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","description":"Target cluster internal ID","example":"my-cluster","x-required":true}],"description":"Id of the loadbalancer target"}},"required":["type"],"additionalProperties":false},"ports":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^port-\\d+$","description":"Unique port identifier","example":"port-80"},"port":{"type":"string","description":"Port number or range (single port, multiple comma-separated, or range with dash)","examples":["80","80,443,8000-9000"]},"backends":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^[a-zA-Z0-9-]+\\/[a-zA-Z0-9-]+$","description":"Backend reference in format {projectId}/{nfObjectId}","example":"my-project/my-service"},"type":{"type":"string","enum":["service","addon"],"description":"Backend type (service or addon)","example":"service"},"port":{"type":"integer","minimum":1,"maximum":65535,"description":"Backend port number","example":3000},"weight":{"type":"integer","minimum":1,"maximum":100,"description":"Traffic weight for this backend","example":1,"default":1}},"required":["id","type","port"],"additionalProperties":false},"minItems":1,"description":"Backend services or addons for this port"}},"required":["id","port","backends"],"additionalProperties":false},"minItems":1,"description":"Port configurations for the load balancer"}},"required":["type","target","ports"],"additionalProperties":false,"description":"Load balancer specification"}},"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Account > LoadBalancers > General > Update","x-nf-team-scoped":true,"x-nf-cli-command":["patch","load-balancer"]},"v1-load-balancers--loadBalancerId--delete":{"operationId":"deleteLoadBalancersLoadbalancerid","summary":"Delete load balancer","description":"Deletes the given load balancer.","parameters":[{"name":"loadBalancerId","type":"string","required":true,"description":"ID of the load balancer","example":"my-load-balancer","in":"path","schema":{"name":"loadBalancerId","type":"string","required":true,"description":"ID of the load balancer","example":"my-load-balancer","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Load Balancers"],"security":[],"x-nf-permission-required":"Account > LoadBalancers > General > Delete","x-nf-team-scoped":true,"x-nf-cli-command":["delete","load-balancer"]},"v1-load-balancers--loadBalancerId--delete-team-scoped":{"operationId":"deleteLoadBalancersLoadbalancerid","summary":"Delete load balancer","description":"Deletes the given load balancer.","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"loadBalancerId","type":"string","required":true,"description":"ID of the load balancer","example":"my-load-balancer","in":"path","schema":{"name":"loadBalancerId","type":"string","required":true,"description":"ID of the load balancer","example":"my-load-balancer","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Load Balancers","team"],"security":[],"x-nf-permission-required":"Account > LoadBalancers > General > Delete","x-nf-team-scoped":true,"x-nf-cli-command":["delete","load-balancer"]},"v1-opentofu-jobs--opentofuJobId--logs-get":{"operationId":"getOpentofuJobsOpentofujobidLogs","summary":"Get OpenTofu job logs","description":"Get logs for an OpenTofu job","parameters":[{"name":"opentofuJobId","type":"string","required":true,"description":"ID of the opentofu job","example":"example-job","in":"path","schema":{"name":"opentofuJobId","type":"string","required":true,"description":"ID of the opentofu job","example":"example-job","in":"path"}},{"name":"queryType","type":"string","enum":["range"],"description":"`range` selects a log range and returns immediately.","example":"range","default":"range","in":"query","schema":{"name":"queryType","type":"string","enum":["range"],"description":"`range` selects a log range and returns immediately.","example":"range","default":"range","in":"query"}},{"name":"startTime","type":"string","format":"date-time","description":"Fetch logs generated after this timestamp.","example":"2023-02-16T14:00:00.000Z","in":"query","schema":{"name":"startTime","type":"string","format":"date-time","description":"Fetch logs generated after this timestamp.","example":"2023-02-16T14:00:00.000Z","in":"query"}},{"name":"endTime","type":"string","format":"date-time","description":"Fetch logs generated before this timestamp.","example":"2023-02-16T15:00:00.000Z","in":"query","schema":{"name":"endTime","type":"string","format":"date-time","description":"Fetch logs generated before this timestamp.","example":"2023-02-16T15:00:00.000Z","in":"query"}},{"name":"duration","type":"integer","description":"Range duration in seconds. If set, only one of `startTime` or `endTime` can be set.","example":600,"in":"query","schema":{"name":"duration","type":"integer","description":"Range duration in seconds. If set, only one of `startTime` or `endTime` can be set.","example":600,"in":"query"}},{"name":"lineLimit","type":"number","format":"float","minimum":0,"maximum":1000,"description":"Number of log lines to fetch.","example":250,"in":"query","schema":{"name":"lineLimit","type":"number","format":"float","minimum":0,"maximum":1000,"description":"Number of log lines to fetch.","example":250,"in":"query"}},{"name":"direction","type":"string","enum":["backward","forward"],"description":"Ordering of log lines","example":"backward","default":"backward","in":"query","schema":{"name":"direction","type":"string","enum":["backward","forward"],"description":"Ordering of log lines","example":"backward","default":"backward","in":"query"}},{"name":"textIncludes","type":"string","minLength":1,"maxLength":100,"description":"Filter log lines to match this search string","example":"myvalue","in":"query","schema":{"name":"textIncludes","type":"string","minLength":1,"maxLength":100,"description":"Filter log lines to match this search string","example":"myvalue","in":"query"}},{"name":"textNotIncludes","type":"string","minLength":1,"maxLength":100,"description":"Filter log lines to not match this search string","example":"myvalue","in":"query","schema":{"name":"textNotIncludes","type":"string","minLength":1,"maxLength":100,"description":"Filter log lines to not match this search string","example":"myvalue","in":"query"}},{"name":"regexIncludes","type":"string","minLength":1,"maxLength":100,"description":"Filter log lines to match this regular expression","example":"my.*value","in":"query","schema":{"name":"regexIncludes","type":"string","minLength":1,"maxLength":100,"description":"Filter log lines to match this regular expression","example":"my.*value","in":"query"}},{"name":"regexNotIncludes","type":"string","minLength":1,"maxLength":100,"description":"Filter log lines to not match this regular expression","example":"my.*value","in":"query","schema":{"name":"regexNotIncludes","type":"string","minLength":1,"maxLength":100,"description":"Filter log lines to not match this regular expression","example":"my.*value","in":"query"}}],"responses":{"200":{"description":"List of logs values","schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"containerId":{"type":"string"},"log":{"example":"stdout F This is a log line"},"ts":{"type":"string","format":"date-time","example":"2023-03-21T15:01:17.310Z"}},"required":["containerId","log","ts"],"additionalProperties":false},"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["OpenTofu"],"security":[],"x-nf-link":"undefined/v1/api/log-tailing","x-nf-link-description":"For more information on live log tailing, see our documentation page.","x-nf-permission-required":"Account > Templates > Runs > Read","x-nf-team-scoped":true,"x-nf-cli-command":["get","opentofu-job","logs"]},"v1-opentofu-jobs--opentofuJobId--logs-get-team-scoped":{"operationId":"getOpentofuJobsOpentofujobidLogs","summary":"Get OpenTofu job logs","description":"Get logs for an OpenTofu job","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"opentofuJobId","type":"string","required":true,"description":"ID of the opentofu job","example":"example-job","in":"path","schema":{"name":"opentofuJobId","type":"string","required":true,"description":"ID of the opentofu job","example":"example-job","in":"path"}},{"name":"queryType","type":"string","enum":["range"],"description":"`range` selects a log range and returns immediately.","example":"range","default":"range","in":"query","schema":{"name":"queryType","type":"string","enum":["range"],"description":"`range` selects a log range and returns immediately.","example":"range","default":"range","in":"query"}},{"name":"startTime","type":"string","format":"date-time","description":"Fetch logs generated after this timestamp.","example":"2023-02-16T14:00:00.000Z","in":"query","schema":{"name":"startTime","type":"string","format":"date-time","description":"Fetch logs generated after this timestamp.","example":"2023-02-16T14:00:00.000Z","in":"query"}},{"name":"endTime","type":"string","format":"date-time","description":"Fetch logs generated before this timestamp.","example":"2023-02-16T15:00:00.000Z","in":"query","schema":{"name":"endTime","type":"string","format":"date-time","description":"Fetch logs generated before this timestamp.","example":"2023-02-16T15:00:00.000Z","in":"query"}},{"name":"duration","type":"integer","description":"Range duration in seconds. If set, only one of `startTime` or `endTime` can be set.","example":600,"in":"query","schema":{"name":"duration","type":"integer","description":"Range duration in seconds. If set, only one of `startTime` or `endTime` can be set.","example":600,"in":"query"}},{"name":"lineLimit","type":"number","format":"float","minimum":0,"maximum":1000,"description":"Number of log lines to fetch.","example":250,"in":"query","schema":{"name":"lineLimit","type":"number","format":"float","minimum":0,"maximum":1000,"description":"Number of log lines to fetch.","example":250,"in":"query"}},{"name":"direction","type":"string","enum":["backward","forward"],"description":"Ordering of log lines","example":"backward","default":"backward","in":"query","schema":{"name":"direction","type":"string","enum":["backward","forward"],"description":"Ordering of log lines","example":"backward","default":"backward","in":"query"}},{"name":"textIncludes","type":"string","minLength":1,"maxLength":100,"description":"Filter log lines to match this search string","example":"myvalue","in":"query","schema":{"name":"textIncludes","type":"string","minLength":1,"maxLength":100,"description":"Filter log lines to match this search string","example":"myvalue","in":"query"}},{"name":"textNotIncludes","type":"string","minLength":1,"maxLength":100,"description":"Filter log lines to not match this search string","example":"myvalue","in":"query","schema":{"name":"textNotIncludes","type":"string","minLength":1,"maxLength":100,"description":"Filter log lines to not match this search string","example":"myvalue","in":"query"}},{"name":"regexIncludes","type":"string","minLength":1,"maxLength":100,"description":"Filter log lines to match this regular expression","example":"my.*value","in":"query","schema":{"name":"regexIncludes","type":"string","minLength":1,"maxLength":100,"description":"Filter log lines to match this regular expression","example":"my.*value","in":"query"}},{"name":"regexNotIncludes","type":"string","minLength":1,"maxLength":100,"description":"Filter log lines to not match this regular expression","example":"my.*value","in":"query","schema":{"name":"regexNotIncludes","type":"string","minLength":1,"maxLength":100,"description":"Filter log lines to not match this regular expression","example":"my.*value","in":"query"}}],"responses":{"200":{"description":"List of logs values","schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"containerId":{"type":"string"},"log":{"example":"stdout F This is a log line"},"ts":{"type":"string","format":"date-time","example":"2023-03-21T15:01:17.310Z"}},"required":["containerId","log","ts"],"additionalProperties":false},"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["OpenTofu","team"],"security":[],"x-nf-link":"undefined/v1/api/log-tailing","x-nf-link-description":"For more information on live log tailing, see our documentation page.","x-nf-permission-required":"Account > Templates > Runs > Read","x-nf-team-scoped":true,"x-nf-cli-command":["get","opentofu-job","logs"]},"v1-projects-get":{"operationId":"getProjects","summary":"List projects","description":"Lists projects for the authenticated user or team.","parameters":[{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query","schema":{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query"}},{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query","schema":{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query"}},{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query","schema":{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query"}}],"responses":{"200":{"description":"A list of projects for the authenticated user","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"projects":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Identifier for the project.","example":"default-project"},"name":{"type":"string","description":"The name of the project.","example":"Default Project"},"description":{"type":"string","description":"A short description of the project.","example":"The project description"}},"required":["id","name"],"additionalProperties":false,"description":"A project object."},"description":"An array of projects."}},"required":["projects"],"additionalProperties":false,"description":"Result data."},"pagination":{"type":"object","properties":{"hasNextPage":{"type":"boolean","description":"Is there another page of results available?","example":false},"cursor":{"type":"string","description":"The cursor to access the next page of results."},"count":{"type":"number","format":"float","description":"The number of results returned by this request.","example":1}},"required":["hasNextPage","count"],"additionalProperties":false,"description":"Data about the endpoint pagination."}},"required":["data","pagination"],"additionalProperties":false,"description":"Response object."}}},"tags":["Projects"],"security":[],"x-nf-permission-required":"Project > Projects > Manage > Read","x-nf-team-scoped":true,"x-nf-cli-command":["list","projects"]},"v1-projects-get-team-scoped":{"operationId":"getProjects","summary":"List projects","description":"Lists projects for the authenticated user or team.","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query","schema":{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query"}},{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query","schema":{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query"}},{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query","schema":{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query"}}],"responses":{"200":{"description":"A list of projects for the authenticated user","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"projects":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Identifier for the project.","example":"default-project"},"name":{"type":"string","description":"The name of the project.","example":"Default Project"},"description":{"type":"string","description":"A short description of the project.","example":"The project description"}},"required":["id","name"],"additionalProperties":false,"description":"A project object."},"description":"An array of projects."}},"required":["projects"],"additionalProperties":false,"description":"Result data."},"pagination":{"type":"object","properties":{"hasNextPage":{"type":"boolean","description":"Is there another page of results available?","example":false},"cursor":{"type":"string","description":"The cursor to access the next page of results."},"count":{"type":"number","format":"float","description":"The number of results returned by this request.","example":1}},"required":["hasNextPage","count"],"additionalProperties":false,"description":"Data about the endpoint pagination."}},"required":["data","pagination"],"additionalProperties":false,"description":"Response object."}}},"tags":["Projects","team"],"security":[],"x-nf-permission-required":"Project > Projects > Manage > Read","x-nf-team-scoped":true,"x-nf-cli-command":["list","projects"]},"v1-projects-post":{"operationId":"postProjects","summary":"Create project","description":"Creates a new project.","parameters":[],"responses":{"200":{"description":"Details about the created project.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","description":"Identifier for the project","example":"example-project"},"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The name of the project.","example":"New Project"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"The description of the project.","example":"This is a new project."},"color":{"type":"string","pattern":"^#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$","description":"The color of the project in the Northflank App.","example":"#EF233C"},"region":{"type":"string","description":"The region the project will be hosted in.","example":"europe-west"},"clusterId":{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","description":"The BYOC cluster this project will be hosted in.","example":"gcp-cluster-1"},"customRegistry":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"credentialId":{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$"},"provider":{"type":"string","enum":["acr","ecr","gar","dockerhub","dhi","github","gitlab","custom","legacy"]}},"required":["credentialId"],"additionalProperties":false}},"additionalProperties":false,"description":"Registry configuration for the project. Can be PaaS or Self-Hosted"},"networking":{"type":"object","properties":{"allowedIngressProjects":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9-]+$"},"description":"Projects from which ingress request should be permitted."},"tailscale":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether or not to inject a Tailscale sidecar for this project's resources","default":false},"authKeyTags":{"type":"array","items":{"type":"string","pattern":"^tag:.+"},"description":"Tailscale tags to apply to generated auth keys, must match with the tags applied when creating the OAuth Client.","default":[]},"restrictions":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether or not to restrict the settings to resources with specific tags","default":false},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39},"description":"The tags which determine the resources the settings should be applied to"},"tagMatchCondition":{"type":"string","enum":["and","or"],"description":"If all or any of the tags must be present on the target for it to match the condition.","example":"or"}},"required":["enabled"],"additionalProperties":false},"options":{"type":"object","properties":{"applyToAddons":{"type":"boolean","description":"Apply the Tailscale configuration to addons.","default":false},"applyToAddonJobs":{"type":"boolean","description":"Apply the Tailscale configuration to addon jobs (backups, restores).","default":false},"autoRedeployOnRegeneration":{"type":"boolean","description":"Automatically restart applicable services when the auth key is regenerated","default":false}},"additionalProperties":false},"tailscaleOptions":{"type":"object","properties":{"acceptRoutes":{"type":"boolean","description":"Accept advertised routes from the Tailscale network","default":false}},"additionalProperties":false},"secrets":{"type":"object","properties":{"clientId":{"type":"string","description":"Tailscale OAuth client ID (required for generating auth keys for Tailscale)"},"clientSecret":{"type":"string","description":"Tailscale OAuth client secret (required for generating auth keys for Tailscale)"}},"required":["clientId","clientSecret"],"additionalProperties":false,"description":"Relevant Tailscale secrets"}},"additionalProperties":false,"description":"Defines this project's Tailscale sidecar settings"},"hostAliases":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Enable support for adding /etc/hosts overrides for a container","default":false},"hostEntries":{"type":"array","items":{"type":"object","properties":{"ipAddress":{"type":"string","pattern":"^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$"},"hostnames":{"type":"array","items":{"type":"string","pattern":"^(([a-z0-9][a-z0-9\\-]*)|[a-z0-9]\\.)*([a-z]+|xn\\-\\-[a-z0-9]+)\\.?$"}}},"required":["ipAddress","hostnames"],"additionalProperties":false},"description":"Entries to add to /etc/hosts"},"restrictions":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether or not to restrict the settings to resources with specific tags","default":false},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39},"description":"The tags which determine the resources the settings should be applied to"},"tagMatchCondition":{"type":"string","enum":["and","or"],"description":"If all or any of the tags must be present on the target for it to match the condition.","example":"or"}},"required":["enabled"],"additionalProperties":false}},"additionalProperties":false,"description":"Defines the project host alias overrides to apply to /etc/hosts in resource containers"}},"additionalProperties":false,"description":"Advanced project networking settings."},"createdAt":{"type":"string","format":"date-time","description":"time of creation","example":"2000-01-01T12:00:00.000Z"},"updatedAt":{"type":"string","format":"date-time","description":"time of update","example":"2000-01-01T12:00:00.000Z"}},"required":["id","name"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Projects"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The name of the project.","example":"New Project"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"The description of the project.","example":"This is a new project."},"color":{"type":"string","pattern":"^#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$","description":"The color of the project in the Northflank App.","example":"#EF233C"},"region":{"type":"string","description":"The region the project will be hosted in.","example":"europe-west"},"networking":{"type":"object","properties":{"allowedIngressProjects":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9-]+$"},"description":"Projects from which ingress request should be permitted."},"tailscale":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether or not to inject a Tailscale sidecar for this project's resources","default":false},"authKeyTags":{"type":"array","items":{"type":"string","pattern":"^tag:.+"},"description":"Tailscale tags to apply to generated auth keys, must match with the tags applied when creating the OAuth Client.","default":[]},"restrictions":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether or not to restrict the settings to resources with specific tags","default":false},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39},"description":"The tags which determine the resources the settings should be applied to"},"tagMatchCondition":{"type":"string","enum":["and","or"],"description":"If all or any of the tags must be present on the target for it to match the condition.","example":"or"}},"required":["enabled"],"additionalProperties":false},"options":{"type":"object","properties":{"applyToAddons":{"type":"boolean","description":"Apply the Tailscale configuration to addons.","default":false},"applyToAddonJobs":{"type":"boolean","description":"Apply the Tailscale configuration to addon jobs (backups, restores).","default":false},"autoRedeployOnRegeneration":{"type":"boolean","description":"Automatically restart applicable services when the auth key is regenerated","default":false}},"additionalProperties":false},"tailscaleOptions":{"type":"object","properties":{"acceptRoutes":{"type":"boolean","description":"Accept advertised routes from the Tailscale network","default":false}},"additionalProperties":false},"secrets":{"type":"object","properties":{"clientId":{"type":"string","description":"Tailscale OAuth client ID (required for generating auth keys for Tailscale)"},"clientSecret":{"type":"string","description":"Tailscale OAuth client secret (required for generating auth keys for Tailscale)"}},"required":["clientId","clientSecret"],"additionalProperties":false,"description":"Relevant Tailscale secrets"}},"additionalProperties":false,"description":"Defines this project's Tailscale sidecar settings"},"hostAliases":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Enable support for adding /etc/hosts overrides for a container","default":false},"hostEntries":{"type":"array","items":{"type":"object","properties":{"ipAddress":{"type":"string","pattern":"^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$"},"hostnames":{"type":"array","items":{"type":"string","pattern":"^(([a-z0-9][a-z0-9\\-]*)|[a-z0-9]\\.)*([a-z]+|xn\\-\\-[a-z0-9]+)\\.?$"}}},"required":["ipAddress","hostnames"],"additionalProperties":false},"description":"Entries to add to /etc/hosts"},"restrictions":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether or not to restrict the settings to resources with specific tags","default":false},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39},"description":"The tags which determine the resources the settings should be applied to"},"tagMatchCondition":{"type":"string","enum":["and","or"],"description":"If all or any of the tags must be present on the target for it to match the condition.","example":"or"}},"required":["enabled"],"additionalProperties":false}},"additionalProperties":false,"description":"Defines the project host alias overrides to apply to /etc/hosts in resource containers"}},"additionalProperties":false,"description":"Advanced project networking settings."}},"required":["name"],"additionalProperties":false,"description":"Create a project in a Northflank region"},{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The name of the project.","example":"New Project"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"The description of the project.","example":"This is a new project."},"color":{"type":"string","pattern":"^#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$","description":"The color of the project in the Northflank App.","example":"#EF233C"},"clusterId":{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","description":"The BYOC cluster this project will be hosted in.","example":"gcp-cluster-1"},"networking":{"type":"object","properties":{"allowedIngressProjects":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9-]+$"},"description":"Projects from which ingress request should be permitted."},"tailscale":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether or not to inject a Tailscale sidecar for this project's resources","default":false},"authKeyTags":{"type":"array","items":{"type":"string","pattern":"^tag:.+"},"description":"Tailscale tags to apply to generated auth keys, must match with the tags applied when creating the OAuth Client.","default":[]},"restrictions":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether or not to restrict the settings to resources with specific tags","default":false},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39},"description":"The tags which determine the resources the settings should be applied to"},"tagMatchCondition":{"type":"string","enum":["and","or"],"description":"If all or any of the tags must be present on the target for it to match the condition.","example":"or"}},"required":["enabled"],"additionalProperties":false},"options":{"type":"object","properties":{"applyToAddons":{"type":"boolean","description":"Apply the Tailscale configuration to addons.","default":false},"applyToAddonJobs":{"type":"boolean","description":"Apply the Tailscale configuration to addon jobs (backups, restores).","default":false},"autoRedeployOnRegeneration":{"type":"boolean","description":"Automatically restart applicable services when the auth key is regenerated","default":false}},"additionalProperties":false},"tailscaleOptions":{"type":"object","properties":{"acceptRoutes":{"type":"boolean","description":"Accept advertised routes from the Tailscale network","default":false}},"additionalProperties":false},"secrets":{"type":"object","properties":{"clientId":{"type":"string","description":"Tailscale OAuth client ID (required for generating auth keys for Tailscale)"},"clientSecret":{"type":"string","description":"Tailscale OAuth client secret (required for generating auth keys for Tailscale)"}},"required":["clientId","clientSecret"],"additionalProperties":false,"description":"Relevant Tailscale secrets"}},"additionalProperties":false,"description":"Defines this project's Tailscale sidecar settings"},"hostAliases":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Enable support for adding /etc/hosts overrides for a container","default":false},"hostEntries":{"type":"array","items":{"type":"object","properties":{"ipAddress":{"type":"string","pattern":"^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$"},"hostnames":{"type":"array","items":{"type":"string","pattern":"^(([a-z0-9][a-z0-9\\-]*)|[a-z0-9]\\.)*([a-z]+|xn\\-\\-[a-z0-9]+)\\.?$"}}},"required":["ipAddress","hostnames"],"additionalProperties":false},"description":"Entries to add to /etc/hosts"},"restrictions":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether or not to restrict the settings to resources with specific tags","default":false},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39},"description":"The tags which determine the resources the settings should be applied to"},"tagMatchCondition":{"type":"string","enum":["and","or"],"description":"If all or any of the tags must be present on the target for it to match the condition.","example":"or"}},"required":["enabled"],"additionalProperties":false}},"additionalProperties":false,"description":"Defines the project host alias overrides to apply to /etc/hosts in resource containers"}},"additionalProperties":false,"description":"Advanced project networking settings."}},"required":["name"],"additionalProperties":false,"description":"Create a project in a BYOC cluster"}],"description":"Create a project"}}},"required":true},"x-nf-permission-required":"Project > Projects > Manage > Create","x-nf-team-scoped":true,"x-nf-cli-command":["create","project"]},"v1-projects-post-team-scoped":{"operationId":"postProjects","summary":"Create project","description":"Creates a new project.","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}}],"responses":{"200":{"description":"Details about the created project.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","description":"Identifier for the project","example":"example-project"},"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The name of the project.","example":"New Project"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"The description of the project.","example":"This is a new project."},"color":{"type":"string","pattern":"^#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$","description":"The color of the project in the Northflank App.","example":"#EF233C"},"region":{"type":"string","description":"The region the project will be hosted in.","example":"europe-west"},"clusterId":{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","description":"The BYOC cluster this project will be hosted in.","example":"gcp-cluster-1"},"customRegistry":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"credentialId":{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$"},"provider":{"type":"string","enum":["acr","ecr","gar","dockerhub","dhi","github","gitlab","custom","legacy"]}},"required":["credentialId"],"additionalProperties":false}},"additionalProperties":false,"description":"Registry configuration for the project. Can be PaaS or Self-Hosted"},"networking":{"type":"object","properties":{"allowedIngressProjects":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9-]+$"},"description":"Projects from which ingress request should be permitted."},"tailscale":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether or not to inject a Tailscale sidecar for this project's resources","default":false},"authKeyTags":{"type":"array","items":{"type":"string","pattern":"^tag:.+"},"description":"Tailscale tags to apply to generated auth keys, must match with the tags applied when creating the OAuth Client.","default":[]},"restrictions":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether or not to restrict the settings to resources with specific tags","default":false},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39},"description":"The tags which determine the resources the settings should be applied to"},"tagMatchCondition":{"type":"string","enum":["and","or"],"description":"If all or any of the tags must be present on the target for it to match the condition.","example":"or"}},"required":["enabled"],"additionalProperties":false},"options":{"type":"object","properties":{"applyToAddons":{"type":"boolean","description":"Apply the Tailscale configuration to addons.","default":false},"applyToAddonJobs":{"type":"boolean","description":"Apply the Tailscale configuration to addon jobs (backups, restores).","default":false},"autoRedeployOnRegeneration":{"type":"boolean","description":"Automatically restart applicable services when the auth key is regenerated","default":false}},"additionalProperties":false},"tailscaleOptions":{"type":"object","properties":{"acceptRoutes":{"type":"boolean","description":"Accept advertised routes from the Tailscale network","default":false}},"additionalProperties":false},"secrets":{"type":"object","properties":{"clientId":{"type":"string","description":"Tailscale OAuth client ID (required for generating auth keys for Tailscale)"},"clientSecret":{"type":"string","description":"Tailscale OAuth client secret (required for generating auth keys for Tailscale)"}},"required":["clientId","clientSecret"],"additionalProperties":false,"description":"Relevant Tailscale secrets"}},"additionalProperties":false,"description":"Defines this project's Tailscale sidecar settings"},"hostAliases":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Enable support for adding /etc/hosts overrides for a container","default":false},"hostEntries":{"type":"array","items":{"type":"object","properties":{"ipAddress":{"type":"string","pattern":"^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$"},"hostnames":{"type":"array","items":{"type":"string","pattern":"^(([a-z0-9][a-z0-9\\-]*)|[a-z0-9]\\.)*([a-z]+|xn\\-\\-[a-z0-9]+)\\.?$"}}},"required":["ipAddress","hostnames"],"additionalProperties":false},"description":"Entries to add to /etc/hosts"},"restrictions":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether or not to restrict the settings to resources with specific tags","default":false},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39},"description":"The tags which determine the resources the settings should be applied to"},"tagMatchCondition":{"type":"string","enum":["and","or"],"description":"If all or any of the tags must be present on the target for it to match the condition.","example":"or"}},"required":["enabled"],"additionalProperties":false}},"additionalProperties":false,"description":"Defines the project host alias overrides to apply to /etc/hosts in resource containers"}},"additionalProperties":false,"description":"Advanced project networking settings."},"createdAt":{"type":"string","format":"date-time","description":"time of creation","example":"2000-01-01T12:00:00.000Z"},"updatedAt":{"type":"string","format":"date-time","description":"time of update","example":"2000-01-01T12:00:00.000Z"}},"required":["id","name"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Projects","team"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The name of the project.","example":"New Project"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"The description of the project.","example":"This is a new project."},"color":{"type":"string","pattern":"^#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$","description":"The color of the project in the Northflank App.","example":"#EF233C"},"region":{"type":"string","description":"The region the project will be hosted in.","example":"europe-west"},"networking":{"type":"object","properties":{"allowedIngressProjects":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9-]+$"},"description":"Projects from which ingress request should be permitted."},"tailscale":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether or not to inject a Tailscale sidecar for this project's resources","default":false},"authKeyTags":{"type":"array","items":{"type":"string","pattern":"^tag:.+"},"description":"Tailscale tags to apply to generated auth keys, must match with the tags applied when creating the OAuth Client.","default":[]},"restrictions":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether or not to restrict the settings to resources with specific tags","default":false},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39},"description":"The tags which determine the resources the settings should be applied to"},"tagMatchCondition":{"type":"string","enum":["and","or"],"description":"If all or any of the tags must be present on the target for it to match the condition.","example":"or"}},"required":["enabled"],"additionalProperties":false},"options":{"type":"object","properties":{"applyToAddons":{"type":"boolean","description":"Apply the Tailscale configuration to addons.","default":false},"applyToAddonJobs":{"type":"boolean","description":"Apply the Tailscale configuration to addon jobs (backups, restores).","default":false},"autoRedeployOnRegeneration":{"type":"boolean","description":"Automatically restart applicable services when the auth key is regenerated","default":false}},"additionalProperties":false},"tailscaleOptions":{"type":"object","properties":{"acceptRoutes":{"type":"boolean","description":"Accept advertised routes from the Tailscale network","default":false}},"additionalProperties":false},"secrets":{"type":"object","properties":{"clientId":{"type":"string","description":"Tailscale OAuth client ID (required for generating auth keys for Tailscale)"},"clientSecret":{"type":"string","description":"Tailscale OAuth client secret (required for generating auth keys for Tailscale)"}},"required":["clientId","clientSecret"],"additionalProperties":false,"description":"Relevant Tailscale secrets"}},"additionalProperties":false,"description":"Defines this project's Tailscale sidecar settings"},"hostAliases":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Enable support for adding /etc/hosts overrides for a container","default":false},"hostEntries":{"type":"array","items":{"type":"object","properties":{"ipAddress":{"type":"string","pattern":"^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$"},"hostnames":{"type":"array","items":{"type":"string","pattern":"^(([a-z0-9][a-z0-9\\-]*)|[a-z0-9]\\.)*([a-z]+|xn\\-\\-[a-z0-9]+)\\.?$"}}},"required":["ipAddress","hostnames"],"additionalProperties":false},"description":"Entries to add to /etc/hosts"},"restrictions":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether or not to restrict the settings to resources with specific tags","default":false},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39},"description":"The tags which determine the resources the settings should be applied to"},"tagMatchCondition":{"type":"string","enum":["and","or"],"description":"If all or any of the tags must be present on the target for it to match the condition.","example":"or"}},"required":["enabled"],"additionalProperties":false}},"additionalProperties":false,"description":"Defines the project host alias overrides to apply to /etc/hosts in resource containers"}},"additionalProperties":false,"description":"Advanced project networking settings."}},"required":["name"],"additionalProperties":false,"description":"Create a project in a Northflank region"},{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The name of the project.","example":"New Project"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"The description of the project.","example":"This is a new project."},"color":{"type":"string","pattern":"^#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$","description":"The color of the project in the Northflank App.","example":"#EF233C"},"clusterId":{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","description":"The BYOC cluster this project will be hosted in.","example":"gcp-cluster-1"},"networking":{"type":"object","properties":{"allowedIngressProjects":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9-]+$"},"description":"Projects from which ingress request should be permitted."},"tailscale":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether or not to inject a Tailscale sidecar for this project's resources","default":false},"authKeyTags":{"type":"array","items":{"type":"string","pattern":"^tag:.+"},"description":"Tailscale tags to apply to generated auth keys, must match with the tags applied when creating the OAuth Client.","default":[]},"restrictions":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether or not to restrict the settings to resources with specific tags","default":false},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39},"description":"The tags which determine the resources the settings should be applied to"},"tagMatchCondition":{"type":"string","enum":["and","or"],"description":"If all or any of the tags must be present on the target for it to match the condition.","example":"or"}},"required":["enabled"],"additionalProperties":false},"options":{"type":"object","properties":{"applyToAddons":{"type":"boolean","description":"Apply the Tailscale configuration to addons.","default":false},"applyToAddonJobs":{"type":"boolean","description":"Apply the Tailscale configuration to addon jobs (backups, restores).","default":false},"autoRedeployOnRegeneration":{"type":"boolean","description":"Automatically restart applicable services when the auth key is regenerated","default":false}},"additionalProperties":false},"tailscaleOptions":{"type":"object","properties":{"acceptRoutes":{"type":"boolean","description":"Accept advertised routes from the Tailscale network","default":false}},"additionalProperties":false},"secrets":{"type":"object","properties":{"clientId":{"type":"string","description":"Tailscale OAuth client ID (required for generating auth keys for Tailscale)"},"clientSecret":{"type":"string","description":"Tailscale OAuth client secret (required for generating auth keys for Tailscale)"}},"required":["clientId","clientSecret"],"additionalProperties":false,"description":"Relevant Tailscale secrets"}},"additionalProperties":false,"description":"Defines this project's Tailscale sidecar settings"},"hostAliases":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Enable support for adding /etc/hosts overrides for a container","default":false},"hostEntries":{"type":"array","items":{"type":"object","properties":{"ipAddress":{"type":"string","pattern":"^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$"},"hostnames":{"type":"array","items":{"type":"string","pattern":"^(([a-z0-9][a-z0-9\\-]*)|[a-z0-9]\\.)*([a-z]+|xn\\-\\-[a-z0-9]+)\\.?$"}}},"required":["ipAddress","hostnames"],"additionalProperties":false},"description":"Entries to add to /etc/hosts"},"restrictions":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether or not to restrict the settings to resources with specific tags","default":false},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39},"description":"The tags which determine the resources the settings should be applied to"},"tagMatchCondition":{"type":"string","enum":["and","or"],"description":"If all or any of the tags must be present on the target for it to match the condition.","example":"or"}},"required":["enabled"],"additionalProperties":false}},"additionalProperties":false,"description":"Defines the project host alias overrides to apply to /etc/hosts in resource containers"}},"additionalProperties":false,"description":"Advanced project networking settings."}},"required":["name"],"additionalProperties":false,"description":"Create a project in a BYOC cluster"}],"description":"Create a project"}}},"required":true},"x-nf-permission-required":"Project > Projects > Manage > Create","x-nf-team-scoped":true,"x-nf-cli-command":["create","project"]},"v1-projects-put":{"operationId":"putProjects","summary":"Create or update project","description":"Creates or updates a project.","parameters":[],"responses":{"200":{"description":"Details about the created or updated project.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","description":"Identifier for the project","example":"example-project"},"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The name of the project.","example":"New Project"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"The description of the project.","example":"This is a new project."},"color":{"type":"string","pattern":"^#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$","description":"The color of the project in the Northflank App.","example":"#EF233C"},"region":{"type":"string","description":"The region the project will be hosted in.","example":"europe-west"},"clusterId":{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","description":"The BYOC cluster this project will be hosted in.","example":"gcp-cluster-1"},"customRegistry":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"credentialId":{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$"},"provider":{"type":"string","enum":["acr","ecr","gar","dockerhub","dhi","github","gitlab","custom","legacy"]}},"required":["credentialId"],"additionalProperties":false}},"additionalProperties":false,"description":"Registry configuration for the project. Can be PaaS or Self-Hosted"},"networking":{"type":"object","properties":{"allowedIngressProjects":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9-]+$"},"description":"Projects from which ingress request should be permitted."},"tailscale":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether or not to inject a Tailscale sidecar for this project's resources","default":false},"authKeyTags":{"type":"array","items":{"type":"string","pattern":"^tag:.+"},"description":"Tailscale tags to apply to generated auth keys, must match with the tags applied when creating the OAuth Client.","default":[]},"restrictions":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether or not to restrict the settings to resources with specific tags","default":false},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39},"description":"The tags which determine the resources the settings should be applied to"},"tagMatchCondition":{"type":"string","enum":["and","or"],"description":"If all or any of the tags must be present on the target for it to match the condition.","example":"or"}},"required":["enabled"],"additionalProperties":false},"options":{"type":"object","properties":{"applyToAddons":{"type":"boolean","description":"Apply the Tailscale configuration to addons.","default":false},"applyToAddonJobs":{"type":"boolean","description":"Apply the Tailscale configuration to addon jobs (backups, restores).","default":false},"autoRedeployOnRegeneration":{"type":"boolean","description":"Automatically restart applicable services when the auth key is regenerated","default":false}},"additionalProperties":false},"tailscaleOptions":{"type":"object","properties":{"acceptRoutes":{"type":"boolean","description":"Accept advertised routes from the Tailscale network","default":false}},"additionalProperties":false},"secrets":{"type":"object","properties":{"clientId":{"type":"string","description":"Tailscale OAuth client ID (required for generating auth keys for Tailscale)"},"clientSecret":{"type":"string","description":"Tailscale OAuth client secret (required for generating auth keys for Tailscale)"}},"required":["clientId","clientSecret"],"additionalProperties":false,"description":"Relevant Tailscale secrets"}},"additionalProperties":false,"description":"Defines this project's Tailscale sidecar settings"},"hostAliases":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Enable support for adding /etc/hosts overrides for a container","default":false},"hostEntries":{"type":"array","items":{"type":"object","properties":{"ipAddress":{"type":"string","pattern":"^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$"},"hostnames":{"type":"array","items":{"type":"string","pattern":"^(([a-z0-9][a-z0-9\\-]*)|[a-z0-9]\\.)*([a-z]+|xn\\-\\-[a-z0-9]+)\\.?$"}}},"required":["ipAddress","hostnames"],"additionalProperties":false},"description":"Entries to add to /etc/hosts"},"restrictions":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether or not to restrict the settings to resources with specific tags","default":false},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39},"description":"The tags which determine the resources the settings should be applied to"},"tagMatchCondition":{"type":"string","enum":["and","or"],"description":"If all or any of the tags must be present on the target for it to match the condition.","example":"or"}},"required":["enabled"],"additionalProperties":false}},"additionalProperties":false,"description":"Defines the project host alias overrides to apply to /etc/hosts in resource containers"}},"additionalProperties":false,"description":"Advanced project networking settings."},"createdAt":{"type":"string","format":"date-time","description":"time of creation","example":"2000-01-01T12:00:00.000Z"},"updatedAt":{"type":"string","format":"date-time","description":"time of update","example":"2000-01-01T12:00:00.000Z"}},"required":["id","name"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Projects"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The name of the project.","example":"New Project"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"The description of the project.","example":"This is a new project."},"color":{"type":"string","pattern":"^#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$","description":"The color of the project in the Northflank App.","example":"#EF233C"},"region":{"type":"string","description":"The region the project will be hosted in.","example":"europe-west"},"networking":{"type":"object","properties":{"allowedIngressProjects":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9-]+$"},"description":"Projects from which ingress request should be permitted."},"tailscale":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether or not to inject a Tailscale sidecar for this project's resources","default":false},"authKeyTags":{"type":"array","items":{"type":"string","pattern":"^tag:.+"},"description":"Tailscale tags to apply to generated auth keys, must match with the tags applied when creating the OAuth Client.","default":[]},"restrictions":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether or not to restrict the settings to resources with specific tags","default":false},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39},"description":"The tags which determine the resources the settings should be applied to"},"tagMatchCondition":{"type":"string","enum":["and","or"],"description":"If all or any of the tags must be present on the target for it to match the condition.","example":"or"}},"required":["enabled"],"additionalProperties":false},"options":{"type":"object","properties":{"applyToAddons":{"type":"boolean","description":"Apply the Tailscale configuration to addons.","default":false},"applyToAddonJobs":{"type":"boolean","description":"Apply the Tailscale configuration to addon jobs (backups, restores).","default":false},"autoRedeployOnRegeneration":{"type":"boolean","description":"Automatically restart applicable services when the auth key is regenerated","default":false}},"additionalProperties":false},"tailscaleOptions":{"type":"object","properties":{"acceptRoutes":{"type":"boolean","description":"Accept advertised routes from the Tailscale network","default":false}},"additionalProperties":false},"secrets":{"type":"object","properties":{"clientId":{"type":"string","description":"Tailscale OAuth client ID (required for generating auth keys for Tailscale)"},"clientSecret":{"type":"string","description":"Tailscale OAuth client secret (required for generating auth keys for Tailscale)"}},"required":["clientId","clientSecret"],"additionalProperties":false,"description":"Relevant Tailscale secrets"}},"additionalProperties":false,"description":"Defines this project's Tailscale sidecar settings"},"hostAliases":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Enable support for adding /etc/hosts overrides for a container","default":false},"hostEntries":{"type":"array","items":{"type":"object","properties":{"ipAddress":{"type":"string","pattern":"^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$"},"hostnames":{"type":"array","items":{"type":"string","pattern":"^(([a-z0-9][a-z0-9\\-]*)|[a-z0-9]\\.)*([a-z]+|xn\\-\\-[a-z0-9]+)\\.?$"}}},"required":["ipAddress","hostnames"],"additionalProperties":false},"description":"Entries to add to /etc/hosts"},"restrictions":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether or not to restrict the settings to resources with specific tags","default":false},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39},"description":"The tags which determine the resources the settings should be applied to"},"tagMatchCondition":{"type":"string","enum":["and","or"],"description":"If all or any of the tags must be present on the target for it to match the condition.","example":"or"}},"required":["enabled"],"additionalProperties":false}},"additionalProperties":false,"description":"Defines the project host alias overrides to apply to /etc/hosts in resource containers"}},"additionalProperties":false,"description":"Advanced project networking settings."}},"required":["name"],"additionalProperties":false,"description":"Create a project in a Northflank region"},{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The name of the project.","example":"New Project"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"The description of the project.","example":"This is a new project."},"color":{"type":"string","pattern":"^#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$","description":"The color of the project in the Northflank App.","example":"#EF233C"},"clusterId":{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","description":"The BYOC cluster this project will be hosted in.","example":"gcp-cluster-1"},"networking":{"type":"object","properties":{"allowedIngressProjects":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9-]+$"},"description":"Projects from which ingress request should be permitted."},"tailscale":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether or not to inject a Tailscale sidecar for this project's resources","default":false},"authKeyTags":{"type":"array","items":{"type":"string","pattern":"^tag:.+"},"description":"Tailscale tags to apply to generated auth keys, must match with the tags applied when creating the OAuth Client.","default":[]},"restrictions":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether or not to restrict the settings to resources with specific tags","default":false},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39},"description":"The tags which determine the resources the settings should be applied to"},"tagMatchCondition":{"type":"string","enum":["and","or"],"description":"If all or any of the tags must be present on the target for it to match the condition.","example":"or"}},"required":["enabled"],"additionalProperties":false},"options":{"type":"object","properties":{"applyToAddons":{"type":"boolean","description":"Apply the Tailscale configuration to addons.","default":false},"applyToAddonJobs":{"type":"boolean","description":"Apply the Tailscale configuration to addon jobs (backups, restores).","default":false},"autoRedeployOnRegeneration":{"type":"boolean","description":"Automatically restart applicable services when the auth key is regenerated","default":false}},"additionalProperties":false},"tailscaleOptions":{"type":"object","properties":{"acceptRoutes":{"type":"boolean","description":"Accept advertised routes from the Tailscale network","default":false}},"additionalProperties":false},"secrets":{"type":"object","properties":{"clientId":{"type":"string","description":"Tailscale OAuth client ID (required for generating auth keys for Tailscale)"},"clientSecret":{"type":"string","description":"Tailscale OAuth client secret (required for generating auth keys for Tailscale)"}},"required":["clientId","clientSecret"],"additionalProperties":false,"description":"Relevant Tailscale secrets"}},"additionalProperties":false,"description":"Defines this project's Tailscale sidecar settings"},"hostAliases":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Enable support for adding /etc/hosts overrides for a container","default":false},"hostEntries":{"type":"array","items":{"type":"object","properties":{"ipAddress":{"type":"string","pattern":"^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$"},"hostnames":{"type":"array","items":{"type":"string","pattern":"^(([a-z0-9][a-z0-9\\-]*)|[a-z0-9]\\.)*([a-z]+|xn\\-\\-[a-z0-9]+)\\.?$"}}},"required":["ipAddress","hostnames"],"additionalProperties":false},"description":"Entries to add to /etc/hosts"},"restrictions":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether or not to restrict the settings to resources with specific tags","default":false},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39},"description":"The tags which determine the resources the settings should be applied to"},"tagMatchCondition":{"type":"string","enum":["and","or"],"description":"If all or any of the tags must be present on the target for it to match the condition.","example":"or"}},"required":["enabled"],"additionalProperties":false}},"additionalProperties":false,"description":"Defines the project host alias overrides to apply to /etc/hosts in resource containers"}},"additionalProperties":false,"description":"Advanced project networking settings."}},"required":["name"],"additionalProperties":false,"description":"Create a project in a BYOC cluster"}],"description":"Create a project"}}},"required":true},"x-nf-permission-required":"Project > Projects > Manage > Create","x-nf-team-scoped":true,"x-nf-cli-command":["put","project"]},"v1-projects-put-team-scoped":{"operationId":"putProjects","summary":"Create or update project","description":"Creates or updates a project.","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}}],"responses":{"200":{"description":"Details about the created or updated project.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","description":"Identifier for the project","example":"example-project"},"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The name of the project.","example":"New Project"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"The description of the project.","example":"This is a new project."},"color":{"type":"string","pattern":"^#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$","description":"The color of the project in the Northflank App.","example":"#EF233C"},"region":{"type":"string","description":"The region the project will be hosted in.","example":"europe-west"},"clusterId":{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","description":"The BYOC cluster this project will be hosted in.","example":"gcp-cluster-1"},"customRegistry":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"credentialId":{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$"},"provider":{"type":"string","enum":["acr","ecr","gar","dockerhub","dhi","github","gitlab","custom","legacy"]}},"required":["credentialId"],"additionalProperties":false}},"additionalProperties":false,"description":"Registry configuration for the project. Can be PaaS or Self-Hosted"},"networking":{"type":"object","properties":{"allowedIngressProjects":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9-]+$"},"description":"Projects from which ingress request should be permitted."},"tailscale":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether or not to inject a Tailscale sidecar for this project's resources","default":false},"authKeyTags":{"type":"array","items":{"type":"string","pattern":"^tag:.+"},"description":"Tailscale tags to apply to generated auth keys, must match with the tags applied when creating the OAuth Client.","default":[]},"restrictions":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether or not to restrict the settings to resources with specific tags","default":false},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39},"description":"The tags which determine the resources the settings should be applied to"},"tagMatchCondition":{"type":"string","enum":["and","or"],"description":"If all or any of the tags must be present on the target for it to match the condition.","example":"or"}},"required":["enabled"],"additionalProperties":false},"options":{"type":"object","properties":{"applyToAddons":{"type":"boolean","description":"Apply the Tailscale configuration to addons.","default":false},"applyToAddonJobs":{"type":"boolean","description":"Apply the Tailscale configuration to addon jobs (backups, restores).","default":false},"autoRedeployOnRegeneration":{"type":"boolean","description":"Automatically restart applicable services when the auth key is regenerated","default":false}},"additionalProperties":false},"tailscaleOptions":{"type":"object","properties":{"acceptRoutes":{"type":"boolean","description":"Accept advertised routes from the Tailscale network","default":false}},"additionalProperties":false},"secrets":{"type":"object","properties":{"clientId":{"type":"string","description":"Tailscale OAuth client ID (required for generating auth keys for Tailscale)"},"clientSecret":{"type":"string","description":"Tailscale OAuth client secret (required for generating auth keys for Tailscale)"}},"required":["clientId","clientSecret"],"additionalProperties":false,"description":"Relevant Tailscale secrets"}},"additionalProperties":false,"description":"Defines this project's Tailscale sidecar settings"},"hostAliases":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Enable support for adding /etc/hosts overrides for a container","default":false},"hostEntries":{"type":"array","items":{"type":"object","properties":{"ipAddress":{"type":"string","pattern":"^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$"},"hostnames":{"type":"array","items":{"type":"string","pattern":"^(([a-z0-9][a-z0-9\\-]*)|[a-z0-9]\\.)*([a-z]+|xn\\-\\-[a-z0-9]+)\\.?$"}}},"required":["ipAddress","hostnames"],"additionalProperties":false},"description":"Entries to add to /etc/hosts"},"restrictions":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether or not to restrict the settings to resources with specific tags","default":false},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39},"description":"The tags which determine the resources the settings should be applied to"},"tagMatchCondition":{"type":"string","enum":["and","or"],"description":"If all or any of the tags must be present on the target for it to match the condition.","example":"or"}},"required":["enabled"],"additionalProperties":false}},"additionalProperties":false,"description":"Defines the project host alias overrides to apply to /etc/hosts in resource containers"}},"additionalProperties":false,"description":"Advanced project networking settings."},"createdAt":{"type":"string","format":"date-time","description":"time of creation","example":"2000-01-01T12:00:00.000Z"},"updatedAt":{"type":"string","format":"date-time","description":"time of update","example":"2000-01-01T12:00:00.000Z"}},"required":["id","name"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Projects","team"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The name of the project.","example":"New Project"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"The description of the project.","example":"This is a new project."},"color":{"type":"string","pattern":"^#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$","description":"The color of the project in the Northflank App.","example":"#EF233C"},"region":{"type":"string","description":"The region the project will be hosted in.","example":"europe-west"},"networking":{"type":"object","properties":{"allowedIngressProjects":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9-]+$"},"description":"Projects from which ingress request should be permitted."},"tailscale":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether or not to inject a Tailscale sidecar for this project's resources","default":false},"authKeyTags":{"type":"array","items":{"type":"string","pattern":"^tag:.+"},"description":"Tailscale tags to apply to generated auth keys, must match with the tags applied when creating the OAuth Client.","default":[]},"restrictions":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether or not to restrict the settings to resources with specific tags","default":false},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39},"description":"The tags which determine the resources the settings should be applied to"},"tagMatchCondition":{"type":"string","enum":["and","or"],"description":"If all or any of the tags must be present on the target for it to match the condition.","example":"or"}},"required":["enabled"],"additionalProperties":false},"options":{"type":"object","properties":{"applyToAddons":{"type":"boolean","description":"Apply the Tailscale configuration to addons.","default":false},"applyToAddonJobs":{"type":"boolean","description":"Apply the Tailscale configuration to addon jobs (backups, restores).","default":false},"autoRedeployOnRegeneration":{"type":"boolean","description":"Automatically restart applicable services when the auth key is regenerated","default":false}},"additionalProperties":false},"tailscaleOptions":{"type":"object","properties":{"acceptRoutes":{"type":"boolean","description":"Accept advertised routes from the Tailscale network","default":false}},"additionalProperties":false},"secrets":{"type":"object","properties":{"clientId":{"type":"string","description":"Tailscale OAuth client ID (required for generating auth keys for Tailscale)"},"clientSecret":{"type":"string","description":"Tailscale OAuth client secret (required for generating auth keys for Tailscale)"}},"required":["clientId","clientSecret"],"additionalProperties":false,"description":"Relevant Tailscale secrets"}},"additionalProperties":false,"description":"Defines this project's Tailscale sidecar settings"},"hostAliases":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Enable support for adding /etc/hosts overrides for a container","default":false},"hostEntries":{"type":"array","items":{"type":"object","properties":{"ipAddress":{"type":"string","pattern":"^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$"},"hostnames":{"type":"array","items":{"type":"string","pattern":"^(([a-z0-9][a-z0-9\\-]*)|[a-z0-9]\\.)*([a-z]+|xn\\-\\-[a-z0-9]+)\\.?$"}}},"required":["ipAddress","hostnames"],"additionalProperties":false},"description":"Entries to add to /etc/hosts"},"restrictions":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether or not to restrict the settings to resources with specific tags","default":false},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39},"description":"The tags which determine the resources the settings should be applied to"},"tagMatchCondition":{"type":"string","enum":["and","or"],"description":"If all or any of the tags must be present on the target for it to match the condition.","example":"or"}},"required":["enabled"],"additionalProperties":false}},"additionalProperties":false,"description":"Defines the project host alias overrides to apply to /etc/hosts in resource containers"}},"additionalProperties":false,"description":"Advanced project networking settings."}},"required":["name"],"additionalProperties":false,"description":"Create a project in a Northflank region"},{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The name of the project.","example":"New Project"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"The description of the project.","example":"This is a new project."},"color":{"type":"string","pattern":"^#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$","description":"The color of the project in the Northflank App.","example":"#EF233C"},"clusterId":{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","description":"The BYOC cluster this project will be hosted in.","example":"gcp-cluster-1"},"networking":{"type":"object","properties":{"allowedIngressProjects":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9-]+$"},"description":"Projects from which ingress request should be permitted."},"tailscale":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether or not to inject a Tailscale sidecar for this project's resources","default":false},"authKeyTags":{"type":"array","items":{"type":"string","pattern":"^tag:.+"},"description":"Tailscale tags to apply to generated auth keys, must match with the tags applied when creating the OAuth Client.","default":[]},"restrictions":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether or not to restrict the settings to resources with specific tags","default":false},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39},"description":"The tags which determine the resources the settings should be applied to"},"tagMatchCondition":{"type":"string","enum":["and","or"],"description":"If all or any of the tags must be present on the target for it to match the condition.","example":"or"}},"required":["enabled"],"additionalProperties":false},"options":{"type":"object","properties":{"applyToAddons":{"type":"boolean","description":"Apply the Tailscale configuration to addons.","default":false},"applyToAddonJobs":{"type":"boolean","description":"Apply the Tailscale configuration to addon jobs (backups, restores).","default":false},"autoRedeployOnRegeneration":{"type":"boolean","description":"Automatically restart applicable services when the auth key is regenerated","default":false}},"additionalProperties":false},"tailscaleOptions":{"type":"object","properties":{"acceptRoutes":{"type":"boolean","description":"Accept advertised routes from the Tailscale network","default":false}},"additionalProperties":false},"secrets":{"type":"object","properties":{"clientId":{"type":"string","description":"Tailscale OAuth client ID (required for generating auth keys for Tailscale)"},"clientSecret":{"type":"string","description":"Tailscale OAuth client secret (required for generating auth keys for Tailscale)"}},"required":["clientId","clientSecret"],"additionalProperties":false,"description":"Relevant Tailscale secrets"}},"additionalProperties":false,"description":"Defines this project's Tailscale sidecar settings"},"hostAliases":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Enable support for adding /etc/hosts overrides for a container","default":false},"hostEntries":{"type":"array","items":{"type":"object","properties":{"ipAddress":{"type":"string","pattern":"^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$"},"hostnames":{"type":"array","items":{"type":"string","pattern":"^(([a-z0-9][a-z0-9\\-]*)|[a-z0-9]\\.)*([a-z]+|xn\\-\\-[a-z0-9]+)\\.?$"}}},"required":["ipAddress","hostnames"],"additionalProperties":false},"description":"Entries to add to /etc/hosts"},"restrictions":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether or not to restrict the settings to resources with specific tags","default":false},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39},"description":"The tags which determine the resources the settings should be applied to"},"tagMatchCondition":{"type":"string","enum":["and","or"],"description":"If all or any of the tags must be present on the target for it to match the condition.","example":"or"}},"required":["enabled"],"additionalProperties":false}},"additionalProperties":false,"description":"Defines the project host alias overrides to apply to /etc/hosts in resource containers"}},"additionalProperties":false,"description":"Advanced project networking settings."}},"required":["name"],"additionalProperties":false,"description":"Create a project in a BYOC cluster"}],"description":"Create a project"}}},"required":true},"x-nf-permission-required":"Project > Projects > Manage > Create","x-nf-team-scoped":true,"x-nf-cli-command":["put","project"]},"v1-projects--projectId--patch":{"operationId":"patchProjectsProjectid","summary":"Update project","description":"Updates a project.","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}}],"responses":{"200":{"description":"Details about the updated project.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","description":"Identifier for the project","example":"example-project"},"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The name of the project.","example":"New Project"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"The description of the project.","example":"This is a new project."},"color":{"type":"string","pattern":"^#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$","description":"The color of the project in the Northflank App.","example":"#EF233C"},"region":{"type":"string","description":"The region the project will be hosted in.","example":"europe-west"},"clusterId":{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","description":"The BYOC cluster this project will be hosted in.","example":"gcp-cluster-1"},"customRegistry":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"credentialId":{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$"},"provider":{"type":"string","enum":["acr","ecr","gar","dockerhub","dhi","github","gitlab","custom","legacy"]}},"required":["credentialId"],"additionalProperties":false}},"additionalProperties":false,"description":"Registry configuration for the project. Can be PaaS or Self-Hosted"},"networking":{"type":"object","properties":{"allowedIngressProjects":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9-]+$"},"description":"Projects from which ingress request should be permitted."},"tailscale":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether or not to inject a Tailscale sidecar for this project's resources","default":false},"authKeyTags":{"type":"array","items":{"type":"string","pattern":"^tag:.+"},"description":"Tailscale tags to apply to generated auth keys, must match with the tags applied when creating the OAuth Client.","default":[]},"restrictions":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether or not to restrict the settings to resources with specific tags","default":false},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39},"description":"The tags which determine the resources the settings should be applied to"},"tagMatchCondition":{"type":"string","enum":["and","or"],"description":"If all or any of the tags must be present on the target for it to match the condition.","example":"or"}},"required":["enabled"],"additionalProperties":false},"options":{"type":"object","properties":{"applyToAddons":{"type":"boolean","description":"Apply the Tailscale configuration to addons.","default":false},"applyToAddonJobs":{"type":"boolean","description":"Apply the Tailscale configuration to addon jobs (backups, restores).","default":false},"autoRedeployOnRegeneration":{"type":"boolean","description":"Automatically restart applicable services when the auth key is regenerated","default":false}},"additionalProperties":false},"tailscaleOptions":{"type":"object","properties":{"acceptRoutes":{"type":"boolean","description":"Accept advertised routes from the Tailscale network","default":false}},"additionalProperties":false},"secrets":{"type":"object","properties":{"clientId":{"type":"string","description":"Tailscale OAuth client ID (required for generating auth keys for Tailscale)"},"clientSecret":{"type":"string","description":"Tailscale OAuth client secret (required for generating auth keys for Tailscale)"}},"required":["clientId","clientSecret"],"additionalProperties":false,"description":"Relevant Tailscale secrets"}},"additionalProperties":false,"description":"Defines this project's Tailscale sidecar settings"},"hostAliases":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Enable support for adding /etc/hosts overrides for a container","default":false},"hostEntries":{"type":"array","items":{"type":"object","properties":{"ipAddress":{"type":"string","pattern":"^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$"},"hostnames":{"type":"array","items":{"type":"string","pattern":"^(([a-z0-9][a-z0-9\\-]*)|[a-z0-9]\\.)*([a-z]+|xn\\-\\-[a-z0-9]+)\\.?$"}}},"required":["ipAddress","hostnames"],"additionalProperties":false},"description":"Entries to add to /etc/hosts"},"restrictions":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether or not to restrict the settings to resources with specific tags","default":false},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39},"description":"The tags which determine the resources the settings should be applied to"},"tagMatchCondition":{"type":"string","enum":["and","or"],"description":"If all or any of the tags must be present on the target for it to match the condition.","example":"or"}},"required":["enabled"],"additionalProperties":false}},"additionalProperties":false,"description":"Defines the project host alias overrides to apply to /etc/hosts in resource containers"}},"additionalProperties":false,"description":"Advanced project networking settings."},"createdAt":{"type":"string","format":"date-time","description":"time of creation","example":"2000-01-01T12:00:00.000Z"},"updatedAt":{"type":"string","format":"date-time","description":"time of update","example":"2000-01-01T12:00:00.000Z"}},"required":["id","name"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Projects"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"The description of the project.","example":"This is a new project."},"color":{"type":"string","pattern":"^#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$","description":"The color of the project in the Northflank App.","example":"#EF233C"},"networking":{"type":"object","properties":{"allowedIngressProjects":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9-]+$"},"description":"Projects from which ingress request should be permitted."},"tailscale":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether or not to inject a Tailscale sidecar for this project's resources"},"authKeyTags":{"type":"array","items":{"type":"string","pattern":"^tag:.+"},"description":"Tailscale tags to apply to generated auth keys, must match with the tags applied when creating the OAuth Client."},"restrictions":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether or not to restrict the settings to resources with specific tags"},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39},"description":"The tags which determine the resources the settings should be applied to"},"tagMatchCondition":{"type":"string","enum":["and","or"],"description":"If all or any of the tags must be present on the target for it to match the condition.","example":"or"}},"additionalProperties":false},"options":{"type":"object","properties":{"applyToAddons":{"type":"boolean","description":"Apply the Tailscale configuration to addons."},"applyToAddonJobs":{"type":"boolean","description":"Apply the Tailscale configuration to addon jobs (backups, restores)."},"autoRedeployOnRegeneration":{"type":"boolean","description":"Automatically restart applicable services when the auth key is regenerated"}},"additionalProperties":false},"tailscaleOptions":{"type":"object","properties":{"acceptRoutes":{"type":"boolean","description":"Accept advertised routes from the Tailscale network","default":false}},"additionalProperties":false},"secrets":{"type":"object","properties":{"clientId":{"type":"string","description":"Tailscale OAuth client ID (required for generating auth keys for Tailscale)"},"clientSecret":{"type":"string","description":"Tailscale OAuth client secret (required for generating auth keys for Tailscale)"}},"additionalProperties":false}},"additionalProperties":false},"hostAliases":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Enable support for adding /etc/hosts overrides for a container"},"hostEntries":{"type":"array","items":{"type":"object","properties":{"ipAddress":{"type":"string","pattern":"^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$"},"hostnames":{"type":"array","items":{"type":"string","pattern":"^(([a-z0-9][a-z0-9\\-]*)|[a-z0-9]\\.)*([a-z]+|xn\\-\\-[a-z0-9]+)\\.?$"}}},"required":["ipAddress","hostnames"],"additionalProperties":false},"description":"Entries to add to /etc/hosts"},"restrictions":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether or not to restrict the settings to resources with specific tags"},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39},"description":"The tags which determine the resources the settings should be applied to"},"tagMatchCondition":{"type":"string","enum":["and","or"],"description":"If all or any of the tags must be present on the target for it to match the condition.","example":"or"}},"additionalProperties":false}},"additionalProperties":false}},"additionalProperties":false}},"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Project > Projects > Manage > Update","x-nf-team-scoped":true,"x-nf-cli-command":["patch","project"]},"v1-projects--projectId--patch-team-scoped":{"operationId":"patchProjectsProjectid","summary":"Update project","description":"Updates a project.","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}}],"responses":{"200":{"description":"Details about the updated project.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","description":"Identifier for the project","example":"example-project"},"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The name of the project.","example":"New Project"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"The description of the project.","example":"This is a new project."},"color":{"type":"string","pattern":"^#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$","description":"The color of the project in the Northflank App.","example":"#EF233C"},"region":{"type":"string","description":"The region the project will be hosted in.","example":"europe-west"},"clusterId":{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","description":"The BYOC cluster this project will be hosted in.","example":"gcp-cluster-1"},"customRegistry":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"credentialId":{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$"},"provider":{"type":"string","enum":["acr","ecr","gar","dockerhub","dhi","github","gitlab","custom","legacy"]}},"required":["credentialId"],"additionalProperties":false}},"additionalProperties":false,"description":"Registry configuration for the project. Can be PaaS or Self-Hosted"},"networking":{"type":"object","properties":{"allowedIngressProjects":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9-]+$"},"description":"Projects from which ingress request should be permitted."},"tailscale":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether or not to inject a Tailscale sidecar for this project's resources","default":false},"authKeyTags":{"type":"array","items":{"type":"string","pattern":"^tag:.+"},"description":"Tailscale tags to apply to generated auth keys, must match with the tags applied when creating the OAuth Client.","default":[]},"restrictions":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether or not to restrict the settings to resources with specific tags","default":false},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39},"description":"The tags which determine the resources the settings should be applied to"},"tagMatchCondition":{"type":"string","enum":["and","or"],"description":"If all or any of the tags must be present on the target for it to match the condition.","example":"or"}},"required":["enabled"],"additionalProperties":false},"options":{"type":"object","properties":{"applyToAddons":{"type":"boolean","description":"Apply the Tailscale configuration to addons.","default":false},"applyToAddonJobs":{"type":"boolean","description":"Apply the Tailscale configuration to addon jobs (backups, restores).","default":false},"autoRedeployOnRegeneration":{"type":"boolean","description":"Automatically restart applicable services when the auth key is regenerated","default":false}},"additionalProperties":false},"tailscaleOptions":{"type":"object","properties":{"acceptRoutes":{"type":"boolean","description":"Accept advertised routes from the Tailscale network","default":false}},"additionalProperties":false},"secrets":{"type":"object","properties":{"clientId":{"type":"string","description":"Tailscale OAuth client ID (required for generating auth keys for Tailscale)"},"clientSecret":{"type":"string","description":"Tailscale OAuth client secret (required for generating auth keys for Tailscale)"}},"required":["clientId","clientSecret"],"additionalProperties":false,"description":"Relevant Tailscale secrets"}},"additionalProperties":false,"description":"Defines this project's Tailscale sidecar settings"},"hostAliases":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Enable support for adding /etc/hosts overrides for a container","default":false},"hostEntries":{"type":"array","items":{"type":"object","properties":{"ipAddress":{"type":"string","pattern":"^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$"},"hostnames":{"type":"array","items":{"type":"string","pattern":"^(([a-z0-9][a-z0-9\\-]*)|[a-z0-9]\\.)*([a-z]+|xn\\-\\-[a-z0-9]+)\\.?$"}}},"required":["ipAddress","hostnames"],"additionalProperties":false},"description":"Entries to add to /etc/hosts"},"restrictions":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether or not to restrict the settings to resources with specific tags","default":false},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39},"description":"The tags which determine the resources the settings should be applied to"},"tagMatchCondition":{"type":"string","enum":["and","or"],"description":"If all or any of the tags must be present on the target for it to match the condition.","example":"or"}},"required":["enabled"],"additionalProperties":false}},"additionalProperties":false,"description":"Defines the project host alias overrides to apply to /etc/hosts in resource containers"}},"additionalProperties":false,"description":"Advanced project networking settings."},"createdAt":{"type":"string","format":"date-time","description":"time of creation","example":"2000-01-01T12:00:00.000Z"},"updatedAt":{"type":"string","format":"date-time","description":"time of update","example":"2000-01-01T12:00:00.000Z"}},"required":["id","name"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Projects","team"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"The description of the project.","example":"This is a new project."},"color":{"type":"string","pattern":"^#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$","description":"The color of the project in the Northflank App.","example":"#EF233C"},"networking":{"type":"object","properties":{"allowedIngressProjects":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9-]+$"},"description":"Projects from which ingress request should be permitted."},"tailscale":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether or not to inject a Tailscale sidecar for this project's resources"},"authKeyTags":{"type":"array","items":{"type":"string","pattern":"^tag:.+"},"description":"Tailscale tags to apply to generated auth keys, must match with the tags applied when creating the OAuth Client."},"restrictions":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether or not to restrict the settings to resources with specific tags"},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39},"description":"The tags which determine the resources the settings should be applied to"},"tagMatchCondition":{"type":"string","enum":["and","or"],"description":"If all or any of the tags must be present on the target for it to match the condition.","example":"or"}},"additionalProperties":false},"options":{"type":"object","properties":{"applyToAddons":{"type":"boolean","description":"Apply the Tailscale configuration to addons."},"applyToAddonJobs":{"type":"boolean","description":"Apply the Tailscale configuration to addon jobs (backups, restores)."},"autoRedeployOnRegeneration":{"type":"boolean","description":"Automatically restart applicable services when the auth key is regenerated"}},"additionalProperties":false},"tailscaleOptions":{"type":"object","properties":{"acceptRoutes":{"type":"boolean","description":"Accept advertised routes from the Tailscale network","default":false}},"additionalProperties":false},"secrets":{"type":"object","properties":{"clientId":{"type":"string","description":"Tailscale OAuth client ID (required for generating auth keys for Tailscale)"},"clientSecret":{"type":"string","description":"Tailscale OAuth client secret (required for generating auth keys for Tailscale)"}},"additionalProperties":false}},"additionalProperties":false},"hostAliases":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Enable support for adding /etc/hosts overrides for a container"},"hostEntries":{"type":"array","items":{"type":"object","properties":{"ipAddress":{"type":"string","pattern":"^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$"},"hostnames":{"type":"array","items":{"type":"string","pattern":"^(([a-z0-9][a-z0-9\\-]*)|[a-z0-9]\\.)*([a-z]+|xn\\-\\-[a-z0-9]+)\\.?$"}}},"required":["ipAddress","hostnames"],"additionalProperties":false},"description":"Entries to add to /etc/hosts"},"restrictions":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether or not to restrict the settings to resources with specific tags"},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39},"description":"The tags which determine the resources the settings should be applied to"},"tagMatchCondition":{"type":"string","enum":["and","or"],"description":"If all or any of the tags must be present on the target for it to match the condition.","example":"or"}},"additionalProperties":false}},"additionalProperties":false}},"additionalProperties":false}},"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Project > Projects > Manage > Update","x-nf-team-scoped":true,"x-nf-cli-command":["patch","project"]},"v1-projects--projectId--get":{"operationId":"getProjectsProjectid","summary":"Get project","description":"Get information about the given project","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}}],"responses":{"200":{"description":"Details about the given project.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","description":"Identifier for the project.","example":"default-project"},"name":{"type":"string","description":"The name of the project.","example":"Default Project"},"description":{"type":"string","description":"A short description of the project.","example":"The project description"},"deployment":{"type":"object","properties":{"region":{"type":"string","description":"The region where the project's services, jobs and addons are deployed in.","example":"europe-west"}},"required":["region"],"additionalProperties":false},"createdAt":{"type":"string","format":"date-time","description":"The time the project was created.","example":"2021-01-20T11:19:53.175Z"},"services":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Identifier for the service.","example":"example-service"},"appId":{"type":"string","description":"Full identifier used for service deployment","example":"/example-user/default-project/example-service"},"name":{"type":"string","description":"The name of the service.","example":"Example Service"},"description":{"type":"string","description":"A short description of the service.","example":"This is the service description"},"serviceType":{"type":"string","enum":["combined","build","deployment"],"description":"Type of the service (combined, build or deployment)","example":"combined"}},"required":["id","appId","name","serviceType"],"additionalProperties":false,"description":"A service object."},"description":"An array of services belonging to the project."},"customRegistry":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether the project has a custom registry.","example":false},"configuration":{"type":"object","properties":{"credentialId":{"type":"string"},"provider":{"type":"string","enum":["acr","ecr","gar","dockerhub","dhi","github","gitlab","custom","legacy"]}},"additionalProperties":false,"description":"The configuration of the custom registry."}},"required":["enabled"],"additionalProperties":false},"jobs":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Identifier for the job.","example":"example-job"},"appId":{"type":"string","description":"Full identifier used for deployment","example":"/example-user/default-project/example-job"},"name":{"type":"string","description":"The name of the job.","example":"Example Job"},"description":{"type":"string","description":"A short description of the job.","example":"This is the job description"},"jobType":{"type":"string","enum":["manual","cron"],"description":"Type of the job (manual or cron)","example":"cron"}},"required":["id","appId","name","jobType"],"additionalProperties":false,"description":"A job object."},"description":"An array of jobs belonging to the project."},"addons":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Identifier for the addon.","example":"example-addon"},"appId":{"type":"string","description":"Full identifier used for deployment","example":"/example-user/default-project/example-addon"},"name":{"type":"string","description":"The name of the addon.","example":"Example Addon"},"description":{"type":"string","description":"A short description of the addon.","example":"This is the addon description"},"spec":{"type":"object","properties":{"type":{"type":"string","description":"The type of the addon","example":"mongodb"}},"required":["type"],"additionalProperties":false,"description":"Details about the addon's specifications."}},"required":["id","appId","name","spec"],"additionalProperties":false,"description":"An addon object."},"description":"An array of addons belonging to the project."},"cluster":{"type":"object","properties":{"id":{"type":"string","description":"The id of the cluster associated with this project.","example":"nf-europe-west"},"name":{"type":"string","description":"The name of the cluster associated with this project.","example":"nf-europe-west"},"namespace":{"type":"string","description":"Namespace this resource is located within on the cluster.","example":"ns-8zy2mcjh9zn2"},"loadBalancers":{"type":"array","items":{"type":"string","example":"lb.659200800000000000000000.northflank.com"},"description":"Load balancer DNS for the cluster."}},"required":["id","name"],"additionalProperties":false,"description":"Cluster information"}},"required":["id","name","deployment","createdAt","services","jobs","addons","cluster"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Projects"],"security":[],"x-nf-permission-required":"Project > Projects > Manage > Read","x-nf-team-scoped":true,"x-nf-cli-command":["get","project"]},"v1-projects--projectId--get-team-scoped":{"operationId":"getProjectsProjectid","summary":"Get project","description":"Get information about the given project","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}}],"responses":{"200":{"description":"Details about the given project.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","description":"Identifier for the project.","example":"default-project"},"name":{"type":"string","description":"The name of the project.","example":"Default Project"},"description":{"type":"string","description":"A short description of the project.","example":"The project description"},"deployment":{"type":"object","properties":{"region":{"type":"string","description":"The region where the project's services, jobs and addons are deployed in.","example":"europe-west"}},"required":["region"],"additionalProperties":false},"createdAt":{"type":"string","format":"date-time","description":"The time the project was created.","example":"2021-01-20T11:19:53.175Z"},"services":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Identifier for the service.","example":"example-service"},"appId":{"type":"string","description":"Full identifier used for service deployment","example":"/example-user/default-project/example-service"},"name":{"type":"string","description":"The name of the service.","example":"Example Service"},"description":{"type":"string","description":"A short description of the service.","example":"This is the service description"},"serviceType":{"type":"string","enum":["combined","build","deployment"],"description":"Type of the service (combined, build or deployment)","example":"combined"}},"required":["id","appId","name","serviceType"],"additionalProperties":false,"description":"A service object."},"description":"An array of services belonging to the project."},"customRegistry":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether the project has a custom registry.","example":false},"configuration":{"type":"object","properties":{"credentialId":{"type":"string"},"provider":{"type":"string","enum":["acr","ecr","gar","dockerhub","dhi","github","gitlab","custom","legacy"]}},"additionalProperties":false,"description":"The configuration of the custom registry."}},"required":["enabled"],"additionalProperties":false},"jobs":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Identifier for the job.","example":"example-job"},"appId":{"type":"string","description":"Full identifier used for deployment","example":"/example-user/default-project/example-job"},"name":{"type":"string","description":"The name of the job.","example":"Example Job"},"description":{"type":"string","description":"A short description of the job.","example":"This is the job description"},"jobType":{"type":"string","enum":["manual","cron"],"description":"Type of the job (manual or cron)","example":"cron"}},"required":["id","appId","name","jobType"],"additionalProperties":false,"description":"A job object."},"description":"An array of jobs belonging to the project."},"addons":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Identifier for the addon.","example":"example-addon"},"appId":{"type":"string","description":"Full identifier used for deployment","example":"/example-user/default-project/example-addon"},"name":{"type":"string","description":"The name of the addon.","example":"Example Addon"},"description":{"type":"string","description":"A short description of the addon.","example":"This is the addon description"},"spec":{"type":"object","properties":{"type":{"type":"string","description":"The type of the addon","example":"mongodb"}},"required":["type"],"additionalProperties":false,"description":"Details about the addon's specifications."}},"required":["id","appId","name","spec"],"additionalProperties":false,"description":"An addon object."},"description":"An array of addons belonging to the project."},"cluster":{"type":"object","properties":{"id":{"type":"string","description":"The id of the cluster associated with this project.","example":"nf-europe-west"},"name":{"type":"string","description":"The name of the cluster associated with this project.","example":"nf-europe-west"},"namespace":{"type":"string","description":"Namespace this resource is located within on the cluster.","example":"ns-8zy2mcjh9zn2"},"loadBalancers":{"type":"array","items":{"type":"string","example":"lb.659200800000000000000000.northflank.com"},"description":"Load balancer DNS for the cluster."}},"required":["id","name"],"additionalProperties":false,"description":"Cluster information"}},"required":["id","name","deployment","createdAt","services","jobs","addons","cluster"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Projects","team"],"security":[],"x-nf-permission-required":"Project > Projects > Manage > Read","x-nf-team-scoped":true,"x-nf-cli-command":["get","project"]},"v1-projects--projectId--delete":{"operationId":"deleteProjectsProjectid","summary":"Delete project","description":"Delete the given project. Fails if the project isn't empty.","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"delete_child_objects","type":"boolean","description":"If true, resources belonging to this project will be deleted. Otherwise, an error will be returned if the project is not empty.","example":false,"default":false,"in":"query","schema":{"name":"delete_child_objects","type":"boolean","description":"If true, resources belonging to this project will be deleted. Otherwise, an error will be returned if the project is not empty.","example":false,"default":false,"in":"query"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}},"409":{"description":"The project couldn't be deleted as it has dependencies that have not been deleted"}},"tags":["Projects"],"security":[],"x-nf-permission-required":"Project > Projects > Manage > Delete","x-nf-team-scoped":true,"x-nf-cli-command":["delete","project"]},"v1-projects--projectId--delete-team-scoped":{"operationId":"deleteProjectsProjectid","summary":"Delete project","description":"Delete the given project. Fails if the project isn't empty.","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"delete_child_objects","type":"boolean","description":"If true, resources belonging to this project will be deleted. Otherwise, an error will be returned if the project is not empty.","example":false,"default":false,"in":"query","schema":{"name":"delete_child_objects","type":"boolean","description":"If true, resources belonging to this project will be deleted. Otherwise, an error will be returned if the project is not empty.","example":false,"default":false,"in":"query"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}},"409":{"description":"The project couldn't be deleted as it has dependencies that have not been deleted"}},"tags":["Projects","team"],"security":[],"x-nf-permission-required":"Project > Projects > Manage > Delete","x-nf-team-scoped":true,"x-nf-cli-command":["delete","project"]},"v1-projects--projectId--addons-get":{"operationId":"getProjectsAddons","summary":"List addons","description":"Gets a list of addons belonging to the project","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query","schema":{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query"}},{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query","schema":{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query"}},{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query","schema":{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query"}}],"responses":{"200":{"description":"A list of addons belonging to the project.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"addons":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Identifier for the addon.","example":"example-addon"},"name":{"type":"string","description":"Addon name.","example":"Example Addon"},"appId":{"type":"string","description":"Full identifier for the addon.","example":"/example-user/default-project/example-job"},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"description":{"type":"string","description":"A short description of the addon.","example":"This is the addon description"},"spec":{"type":"object","properties":{"type":{"type":"string","description":"The type of the addon","example":"mongodb"}},"required":["type"],"additionalProperties":false,"description":"Details about the addon's specifications."},"status":{"type":"string","enum":["preDeployment","triggerAllocation","allocating","postDeployment","running","paused","scaling","upgrading","resetting","backup","restore","failed","error","errorAllocating","deleting","deleted"],"description":"The current state of the addon.","example":"running"}},"required":["id","name","appId","tags","spec","status"],"additionalProperties":false,"description":"Information about an addon."},"description":"An array of addons."}},"required":["addons"],"additionalProperties":false,"description":"Result data."},"pagination":{"type":"object","properties":{"hasNextPage":{"type":"boolean","description":"Is there another page of results available?","example":false},"cursor":{"type":"string","description":"The cursor to access the next page of results."},"count":{"type":"number","format":"float","description":"The number of results returned by this request.","example":1}},"required":["hasNextPage","count"],"additionalProperties":false,"description":"Data about the endpoint pagination."}},"required":["data","pagination"],"additionalProperties":false,"description":"Response object."}}},"tags":["Addons","project"],"security":[],"x-nf-permission-required":"Project > Addons > General > Read","x-nf-team-scoped":true,"x-nf-cli-command":["list","addons"]},"v1-projects--projectId--addons-get-team-scoped":{"operationId":"getProjectsAddons","summary":"List addons","description":"Gets a list of addons belonging to the project","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query","schema":{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query"}},{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query","schema":{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query"}},{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query","schema":{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query"}}],"responses":{"200":{"description":"A list of addons belonging to the project.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"addons":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Identifier for the addon.","example":"example-addon"},"name":{"type":"string","description":"Addon name.","example":"Example Addon"},"appId":{"type":"string","description":"Full identifier for the addon.","example":"/example-user/default-project/example-job"},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"description":{"type":"string","description":"A short description of the addon.","example":"This is the addon description"},"spec":{"type":"object","properties":{"type":{"type":"string","description":"The type of the addon","example":"mongodb"}},"required":["type"],"additionalProperties":false,"description":"Details about the addon's specifications."},"status":{"type":"string","enum":["preDeployment","triggerAllocation","allocating","postDeployment","running","paused","scaling","upgrading","resetting","backup","restore","failed","error","errorAllocating","deleting","deleted"],"description":"The current state of the addon.","example":"running"}},"required":["id","name","appId","tags","spec","status"],"additionalProperties":false,"description":"Information about an addon."},"description":"An array of addons."}},"required":["addons"],"additionalProperties":false,"description":"Result data."},"pagination":{"type":"object","properties":{"hasNextPage":{"type":"boolean","description":"Is there another page of results available?","example":false},"cursor":{"type":"string","description":"The cursor to access the next page of results."},"count":{"type":"number","format":"float","description":"The number of results returned by this request.","example":1}},"required":["hasNextPage","count"],"additionalProperties":false,"description":"Data about the endpoint pagination."}},"required":["data","pagination"],"additionalProperties":false,"description":"Response object."}}},"tags":["Addons","project"],"security":[],"x-nf-permission-required":"Project > Addons > General > Read","x-nf-team-scoped":true,"x-nf-cli-command":["list","addons"]},"v1-projects--projectId--addons-post":{"operationId":"postProjectsAddons","summary":"Create addon","description":"Creates a new addon","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}}],"responses":{"200":{"description":"Details about the newly created addon.","schema":{"type":"object","properties":{"data":{"oneOf":[{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The name of the addon.","example":"Example Addon"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"A description of the addon.","example":"An addon description"},"stageId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"type":{"type":"string","description":"The identifier for the type of addon. Addon types can be found at the Get Addon Types endpoint.","example":"postgresql"},"infrastructure":{"type":"object","properties":{"architecture":{"type":"string","enum":["x86","arm"]}},"additionalProperties":false},"version":{"type":"string","description":"The version of the addon type to use. If set to `latest`, the addon will be created with the most recent addon version. If set to a major version appended with `-latest`, e.g. `14-latest` or `14.5-latest`, the addon will be created with the most recent minor/patch version belonging to that major version.","example":"latest"},"billing":{"type":"object","properties":{"deploymentPlan":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The ID of the deployment plan to use.","example":"nf-compute-20"},"storageClass":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The type of storage. Only configurable if the relevant feature flag is enabled for you account","example":"nvme","default":"nvme"},"storage":{"type":"integer","minimum":1,"description":"The size of the addon storage, in megabytes.","example":6144},"replicas":{"type":"integer","minimum":1,"description":"The number of addon replicas to run.","example":1},"zonalRedundancy":{"type":"object","properties":{"type":{"type":"string","enum":["required","disabled"],"description":"Defines scheduling behaviour across different zones within the same region."},"minZones":{"type":"integer","minimum":1,"description":"Defines how many zones are required and will prevent containers from additional scheduling into existing zones. (Only relevant if type is set to \"required\")"}},"additionalProperties":false}},"required":["deploymentPlan","storage","replicas"],"additionalProperties":false},"source":{"oneOf":[{"type":"object","properties":{"projectId":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"ID of the project of the source addon. Only required if not the same as target addon","example":"existing-project"},"addonId":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"ID of the addon to fork.","example":"existing-addon"},"backupId":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"ID of a backup belonging to that addon to use for the fork.","example":"existing-backup"}},"required":["addonId","backupId"],"additionalProperties":false,"description":"Optional object containing data about an existing addon to fork. If provided, the addon will be created from that existing addon backup."},{"type":"object","properties":{"backupUid":{"type":"string","format":"uuid","description":"Uid of the backup","example":"6d542e24-5d9f-4ecf-80a5-e80724b9133e"}},"required":["backupUid"],"additionalProperties":false,"description":"Optional object containing the reference to a backup addressed by its UUID"}],"description":"Fork source backup for the addon"},"tlsEnabled":{"type":"boolean","description":"Enables access to the addon via TLS (if supported by the addon type).","default":false},"externalAccessEnabled":{"type":"boolean","description":"Enables external access to the addon via TLS (if supported by the addon type).","default":false},"ipPolicies":{"type":"array","items":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","description":"An IP address used by this rule","example":"127.0.0.1"},"description":"An array of IP addresses used for this rule"},"action":{"type":"string","enum":["ALLOW","DENY"],"description":"The action for this rule.","example":"DENY"}},"required":["addresses","action"],"additionalProperties":false},"description":"An array of IP address policies."},"typeSpecificSettings":{"type":"object","properties":{"redisMaxMemoryPolicy":{"type":"string","enum":["noeviction","allkeys-lru","allkeys-lfu","volatile-lru","volatile-lfu","allkeys-random","volatile-random","volatile-ttl","volatile-lrm","allkeys-lrm"],"description":"Redis only: Key eviction policy at memory pressure."},"redisSentinelEnabled":{"type":"boolean","description":"Redis only: Deploy Redis with Sentinel high availability. Default: false"},"postgresqlWalLevel":{"type":"string","enum":["replica","logical"],"description":"PostgreSQL only: Configure wal_level setting."},"postgresqlSupabaseMode":{"type":"boolean","description":"PostgreSQL only: Enable Supabase mode."},"postgresqlConnectionPoolerEnabled":{"type":"boolean","description":"PostgreSQL only: Run connection pooler in front of postgres instance."},"postgresqlConnectionPoolerReplicas":{"type":"integer","minimum":1,"maximum":3,"description":"PostgreSQL only: Number of connection pooler replicas in case connection pooler is enabled."},"postgresqlReadConnectionPoolerEnabled":{"type":"boolean","description":"PostgreSQL only: Run connection pooler in front of read-only postgres instance."},"postgresqlReadConnectionPoolerReplicas":{"type":"integer","minimum":1,"maximum":3,"description":"PostgreSQL only: Number of read-only connection pooler replicas in case read-only connection pooler is enabled."},"postgresqlImportMode":{"type":"boolean","description":"PostgreSQL only: Configure PostgreSQL for higher import speed. Not recommended for production workloads."},"mysqlHaModeEnabled":{"type":"boolean","description":"MySQL only: Run MySQL in HA configuration with auto-failover and connection poolers."},"mysqlRouterReplicas":{"type":"integer","minimum":1,"maximum":8,"description":"MysqlHA only: Number of connection router replicas in case connection router is enabled."}},"additionalProperties":false},"customCredentials":{"type":"object","properties":{"dbName":{"type":"string","description":"Custom database name. Not supported for all addon types."}},"additionalProperties":false},"backupSchedules":{"type":"array","items":{"type":"object","properties":{"scheduling":{"type":"object","properties":{"interval":{"type":"string","enum":["hourly","daily","weekly"],"description":"The interval between backups. Each addon can only have one backup schedule of each interval for each backup type.","example":"weekly"},"minute":{"type":"array","items":{"type":"integer","minimum":0,"maximum":59,"description":"A minute when the backup should be performed.","example":30},"uniqueItems":true,"description":"An array of minutes when the backup should be performed."},"hour":{"type":"array","items":{"type":"integer","minimum":0,"maximum":23,"description":"An hour when the backup should be performed, in 24 hour format.","example":18},"uniqueItems":true,"description":"An array of hours in 24 hour format when the backup should be performed. At these hours, a backup will be performed at each of the minutes provided in the `minute` field. Required for `daily` and `weekly` intervals and unavailable for `hourly` intervals."},"day":{"type":"array","items":{"type":"integer","minimum":0,"maximum":6,"description":"A day of the week when the backup should be performed, where `0` represents Monday and `6` represents Sunday.","example":4},"uniqueItems":true,"description":"An array of days of the week when the backup should be performed, where `0` represents Monday and `6` represents Sunday. On these days, a backup will be performed at each of the minutes provided in the `minute` field whenever it is an hour from the `hour` field. Required for `weekly` intervals and unavailable for `hourly` and `daily` intervals."}},"required":["interval","minute"],"additionalProperties":false,"description":"Schedule for the backup."},"backupType":{"type":"string","enum":["dump","snapshot"],"description":"The type of the backup to be performed.","example":"snapshot"},"customDestinationId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"additionalDestinations":{"type":"array","items":{"type":"object","properties":{"destinationId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"Additional custom back up destination that should be used to store the snapshot.","example":"example-backup-destination"},"retentionTime":{"type":"integer","minimum":1,"description":"Retention time of the additional back up in days.","examples":[7,7]},"type":{"type":"string","enum":["custom"],"description":"The type of backup destination to use","example":"custom"}},"required":["destinationId","type"],"additionalProperties":false},"description":"List of destinations for which a backup should be created of this backup. Only applicable for snapshot backups."},"compressionType":{"type":"string","enum":["gz","zstd"],"description":"The compression algorithm of the backup. Only applicable for dump backups. Defaults to `gz`.","example":"gz"},"retentionTime":{"type":"integer","minimum":1,"description":"The time the backup is retained for, in days.","example":7}},"required":["scheduling","backupType","retentionTime"],"additionalProperties":false}},"metadata":{"type":"object","properties":{"labels":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom labels for the workload."},"annotations":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom annotations for the workload as string or object."}},"additionalProperties":false,"description":"Allow setting custom labels and annotations for workloads."},"id":{"type":"string","description":"Identifier for the addon.","example":"example-addon"},"appId":{"type":"string","description":"Full identifier used for deployment","example":"/example-user/default-project/example-addon"},"status":{"type":"string","enum":["preDeployment","triggerAllocation","allocating","postDeployment","running","paused","scaling","upgrading","resetting","backup","restore","failed","error","errorAllocating","deleting","deleted"],"description":"The current state of the addon.","example":"running"},"cluster":{"type":"object","properties":{"id":{"type":"string","description":"The id of the cluster associated with this project.","example":"nf-europe-west"},"name":{"type":"string","description":"The name of the cluster associated with this project.","example":"nf-europe-west"},"namespace":{"type":"string","description":"Namespace this resource is located within on the cluster.","example":"ns-8zy2mcjh9zn2"},"loadBalancers":{"type":"array","items":{"type":"string","example":"lb.659200800000000000000000.northflank.com"},"description":"Load balancer DNS for the cluster."}},"required":["id","name"],"additionalProperties":false,"description":"Cluster information"},"createdAt":{"type":"string","format":"date-time","description":"time of creation"},"updatedAt":{"type":"string","format":"date-time","description":"time of update"}},"required":["name","type","version","billing","id","appId","status","cluster"],"additionalProperties":false,"description":"Native Northflank addons"},{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The name of the addon.","example":"Example Addon"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"A description of the addon.","example":"An addon description"},"stageId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"type":{"type":"string","description":"The identifier for the type of addon. Addon types can be found at the Get Addon Types endpoint.","example":"postgresql"},"infrastructure":{"type":"object","properties":{"architecture":{"type":"string","enum":["x86","arm"]}},"additionalProperties":false},"templateValues":{"type":"object","properties":{},"additionalProperties":false,"description":"The template values to be passed to the templating engine.","example":"{\"replicas\": 2}"},"id":{"type":"string","description":"Identifier for the addon.","example":"example-addon"},"appId":{"type":"string","description":"Full identifier used for deployment","example":"/example-user/default-project/example-addon"},"status":{"type":"string","enum":["preDeployment","triggerAllocation","allocating","postDeployment","running","paused","scaling","upgrading","resetting","backup","restore","failed","error","errorAllocating","deleting","deleted"],"description":"The current state of the addon.","example":"running"},"cluster":{"type":"object","properties":{"id":{"type":"string","description":"The id of the cluster associated with this project.","example":"nf-europe-west"},"name":{"type":"string","description":"The name of the cluster associated with this project.","example":"nf-europe-west"},"namespace":{"type":"string","description":"Namespace this resource is located within on the cluster.","example":"ns-8zy2mcjh9zn2"},"loadBalancers":{"type":"array","items":{"type":"string","example":"lb.659200800000000000000000.northflank.com"},"description":"Load balancer DNS for the cluster."}},"required":["id","name"],"additionalProperties":false,"description":"Cluster information"},"createdAt":{"type":"string","format":"date-time","description":"time of creation"},"updatedAt":{"type":"string","format":"date-time","description":"time of update"}},"required":["name","type","id","appId","status","cluster"],"additionalProperties":false,"description":"Northflank bring your own addon with templating engine"},{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The name of the addon.","example":"Example Addon"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"A description of the addon.","example":"An addon description"},"stageId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"type":{"type":"string","description":"The identifier for the type of addon. Addon types can be found at the Get Addon Types endpoint.","example":"postgresql"},"infrastructure":{"type":"object","properties":{"architecture":{"type":"string","enum":["x86","arm"]}},"additionalProperties":false},"region":{"type":"string","description":"The AWS region identifier for the bucket location.","example":"eu-west-2"},"id":{"type":"string","description":"Identifier for the addon.","example":"example-addon"},"appId":{"type":"string","description":"Full identifier used for deployment","example":"/example-user/default-project/example-addon"},"status":{"type":"string","enum":["preDeployment","triggerAllocation","allocating","postDeployment","running","paused","scaling","upgrading","resetting","backup","restore","failed","error","errorAllocating","deleting","deleted"],"description":"The current state of the addon.","example":"running"},"cluster":{"type":"object","properties":{"id":{"type":"string","description":"The id of the cluster associated with this project.","example":"nf-europe-west"},"name":{"type":"string","description":"The name of the cluster associated with this project.","example":"nf-europe-west"},"namespace":{"type":"string","description":"Namespace this resource is located within on the cluster.","example":"ns-8zy2mcjh9zn2"},"loadBalancers":{"type":"array","items":{"type":"string","example":"lb.659200800000000000000000.northflank.com"},"description":"Load balancer DNS for the cluster."}},"required":["id","name"],"additionalProperties":false,"description":"Cluster information"},"createdAt":{"type":"string","format":"date-time","description":"time of creation"},"updatedAt":{"type":"string","format":"date-time","description":"time of update"}},"required":["name","type","id","appId","status","cluster"],"additionalProperties":false,"description":"Northflank managed bucket addon"}],"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Addons","project"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"anyOf":[{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The name of the addon.","example":"Example Addon"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"A description of the addon.","example":"An addon description"},"projectId":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"ID of parent project","example":"example-project"},"stageId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"type":{"type":"string","description":"The identifier for the type of addon. Addon types can be found at the Get Addon Types endpoint.","example":"postgresql"},"infrastructure":{"type":"object","properties":{"architecture":{"type":"string","enum":["x86","arm"]}},"additionalProperties":false},"version":{"type":"string","description":"The version of the addon type to use. If set to `latest`, the addon will be created with the most recent addon version. If set to a major version appended with `-latest`, e.g. `14-latest` or `14.5-latest`, the addon will be created with the most recent minor/patch version belonging to that major version.","example":"latest"},"billing":{"type":"object","properties":{"deploymentPlan":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The ID of the deployment plan to use.","example":"nf-compute-20"},"storageClass":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The type of storage. Only configurable if the relevant feature flag is enabled for you account","example":"nvme","default":"nvme"},"storage":{"type":"integer","minimum":1,"description":"The size of the addon storage, in megabytes.","example":6144},"replicas":{"type":"integer","minimum":1,"description":"The number of addon replicas to run.","example":1},"zonalRedundancy":{"type":"object","properties":{"type":{"type":"string","enum":["required","disabled"],"description":"Defines scheduling behaviour across different zones within the same region."},"minZones":{"type":"integer","minimum":1,"description":"Defines how many zones are required and will prevent containers from additional scheduling into existing zones. (Only relevant if type is set to \"required\")"}},"additionalProperties":false}},"required":["deploymentPlan","storage","replicas"],"additionalProperties":false},"source":{"oneOf":[{"type":"object","properties":{"projectId":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"ID of the project of the source addon. Only required if not the same as target addon","example":"existing-project"},"addonId":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"ID of the addon to fork.","example":"existing-addon"},"backupId":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"ID of a backup belonging to that addon to use for the fork.","example":"existing-backup"}},"required":["addonId","backupId"],"additionalProperties":false,"description":"Optional object containing data about an existing addon to fork. If provided, the addon will be created from that existing addon backup."},{"type":"object","properties":{"backupUid":{"type":"string","format":"uuid","description":"Uid of the backup","example":"6d542e24-5d9f-4ecf-80a5-e80724b9133e"}},"required":["backupUid"],"additionalProperties":false,"description":"Optional object containing the reference to a backup addressed by its UUID"}],"description":"Fork source backup for the addon"},"tlsEnabled":{"type":"boolean","description":"Enables access to the addon via TLS (if supported by the addon type).","default":false},"externalAccessEnabled":{"type":"boolean","description":"Enables external access to the addon via TLS (if supported by the addon type).","default":false},"ipPolicies":{"type":"array","items":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","description":"An IP address used by this rule","example":"127.0.0.1"},"description":"An array of IP addresses used for this rule"},"action":{"type":"string","enum":["ALLOW","DENY"],"description":"The action for this rule.","example":"DENY"}},"required":["addresses","action"],"additionalProperties":false},"description":"An array of IP address policies."},"typeSpecificSettings":{"type":"object","properties":{"redisMaxMemoryPolicy":{"type":"string","enum":["noeviction","allkeys-lru","allkeys-lfu","volatile-lru","volatile-lfu","allkeys-random","volatile-random","volatile-ttl","volatile-lrm","allkeys-lrm"],"description":"Redis only: Key eviction policy at memory pressure."},"redisSentinelEnabled":{"type":"boolean","description":"Redis only: Deploy Redis with Sentinel high availability. Default: false"},"postgresqlWalLevel":{"type":"string","enum":["replica","logical"],"description":"PostgreSQL only: Configure wal_level setting."},"postgresqlSupabaseMode":{"type":"boolean","description":"PostgreSQL only: Enable Supabase mode."},"postgresqlConnectionPoolerEnabled":{"type":"boolean","description":"PostgreSQL only: Run connection pooler in front of postgres instance."},"postgresqlConnectionPoolerReplicas":{"type":"integer","minimum":1,"maximum":3,"description":"PostgreSQL only: Number of connection pooler replicas in case connection pooler is enabled."},"postgresqlReadConnectionPoolerEnabled":{"type":"boolean","description":"PostgreSQL only: Run connection pooler in front of read-only postgres instance."},"postgresqlReadConnectionPoolerReplicas":{"type":"integer","minimum":1,"maximum":3,"description":"PostgreSQL only: Number of read-only connection pooler replicas in case read-only connection pooler is enabled."},"postgresqlImportMode":{"type":"boolean","description":"PostgreSQL only: Configure PostgreSQL for higher import speed. Not recommended for production workloads."},"mysqlHaModeEnabled":{"type":"boolean","description":"MySQL only: Run MySQL in HA configuration with auto-failover and connection poolers."},"mysqlRouterReplicas":{"type":"integer","minimum":1,"maximum":8,"description":"MysqlHA only: Number of connection router replicas in case connection router is enabled."}},"additionalProperties":false},"customCredentials":{"type":"object","properties":{"dbName":{"type":"string","description":"Custom database name. Not supported for all addon types."}},"additionalProperties":false},"backupSchedules":{"type":"array","items":{"type":"object","properties":{"scheduling":{"type":"object","properties":{"interval":{"type":"string","enum":["hourly","daily","weekly"],"description":"The interval between backups. Each addon can only have one backup schedule of each interval for each backup type.","example":"weekly"},"minute":{"type":"array","items":{"type":"integer","minimum":0,"maximum":59,"description":"A minute when the backup should be performed.","example":30},"uniqueItems":true,"description":"An array of minutes when the backup should be performed."},"hour":{"type":"array","items":{"type":"integer","minimum":0,"maximum":23,"description":"An hour when the backup should be performed, in 24 hour format.","example":18},"uniqueItems":true,"description":"An array of hours in 24 hour format when the backup should be performed. At these hours, a backup will be performed at each of the minutes provided in the `minute` field. Required for `daily` and `weekly` intervals and unavailable for `hourly` intervals."},"day":{"type":"array","items":{"type":"integer","minimum":0,"maximum":6,"description":"A day of the week when the backup should be performed, where `0` represents Monday and `6` represents Sunday.","example":4},"uniqueItems":true,"description":"An array of days of the week when the backup should be performed, where `0` represents Monday and `6` represents Sunday. On these days, a backup will be performed at each of the minutes provided in the `minute` field whenever it is an hour from the `hour` field. Required for `weekly` intervals and unavailable for `hourly` and `daily` intervals."}},"required":["interval","minute"],"additionalProperties":false,"description":"Schedule for the backup."},"backupType":{"type":"string","enum":["dump","snapshot"],"description":"The type of the backup to be performed.","example":"snapshot"},"customDestinationId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"additionalDestinations":{"type":"array","items":{"type":"object","properties":{"destinationId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"Additional custom back up destination that should be used to store the snapshot.","example":"example-backup-destination"},"retentionTime":{"type":"integer","minimum":1,"description":"Retention time of the additional back up in days.","examples":[7,7]},"type":{"type":"string","enum":["custom"],"description":"The type of backup destination to use","example":"custom"}},"required":["destinationId","type"],"additionalProperties":false},"description":"List of destinations for which a backup should be created of this backup. Only applicable for snapshot backups."},"compressionType":{"type":"string","enum":["gz","zstd"],"description":"The compression algorithm of the backup. Only applicable for dump backups. Defaults to `gz`.","example":"gz"},"retentionTime":{"type":"integer","minimum":1,"description":"The time the backup is retained for, in days.","example":7}},"required":["scheduling","backupType","retentionTime"],"additionalProperties":false}},"metadata":{"type":"object","properties":{"labels":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom labels for the workload."},"annotations":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom annotations for the workload as string or object."}},"additionalProperties":false,"description":"Allow setting custom labels and annotations for workloads."}},"required":["name","type","version","billing"],"additionalProperties":false,"description":"Native Northflank addons","x-required":true},{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The name of the addon.","example":"Example Addon"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"A description of the addon.","example":"An addon description"},"projectId":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"ID of parent project","example":"example-project"},"stageId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"type":{"type":"string","description":"The identifier for the type of addon. Addon types can be found at the Get Addon Types endpoint.","example":"postgresql"},"infrastructure":{"type":"object","properties":{"architecture":{"type":"string","enum":["x86","arm"]}},"additionalProperties":false},"templateValues":{"type":"object","properties":{},"additionalProperties":false,"description":"The template values to be passed to the templating engine.","example":"{\"replicas\": 2}"}},"required":["name","type"],"additionalProperties":false,"description":"Northflank bring your own addon with templating engine","x-required":true},{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The name of the addon.","example":"Example Addon"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"A description of the addon.","example":"An addon description"},"projectId":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"ID of parent project","example":"example-project"},"stageId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"type":{"type":"string","description":"The identifier for the type of addon. Addon types can be found at the Get Addon Types endpoint.","example":"postgresql"},"infrastructure":{"type":"object","properties":{"architecture":{"type":"string","enum":["x86","arm"]}},"additionalProperties":false},"region":{"type":"string","description":"The AWS region identifier for the bucket location.","example":"eu-west-2"}},"required":["name","type"],"additionalProperties":false,"description":"Northflank managed bucket addon","x-required":true}],"description":"The provisioner type of the addon"}}},"required":true},"x-nf-permission-required":"Project > Addons > General > Create","x-nf-team-scoped":true,"x-nf-cli-command":["create","addon"]},"v1-projects--projectId--addons-post-team-scoped":{"operationId":"postProjectsAddons","summary":"Create addon","description":"Creates a new addon","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}}],"responses":{"200":{"description":"Details about the newly created addon.","schema":{"type":"object","properties":{"data":{"oneOf":[{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The name of the addon.","example":"Example Addon"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"A description of the addon.","example":"An addon description"},"stageId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"type":{"type":"string","description":"The identifier for the type of addon. Addon types can be found at the Get Addon Types endpoint.","example":"postgresql"},"infrastructure":{"type":"object","properties":{"architecture":{"type":"string","enum":["x86","arm"]}},"additionalProperties":false},"version":{"type":"string","description":"The version of the addon type to use. If set to `latest`, the addon will be created with the most recent addon version. If set to a major version appended with `-latest`, e.g. `14-latest` or `14.5-latest`, the addon will be created with the most recent minor/patch version belonging to that major version.","example":"latest"},"billing":{"type":"object","properties":{"deploymentPlan":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The ID of the deployment plan to use.","example":"nf-compute-20"},"storageClass":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The type of storage. Only configurable if the relevant feature flag is enabled for you account","example":"nvme","default":"nvme"},"storage":{"type":"integer","minimum":1,"description":"The size of the addon storage, in megabytes.","example":6144},"replicas":{"type":"integer","minimum":1,"description":"The number of addon replicas to run.","example":1},"zonalRedundancy":{"type":"object","properties":{"type":{"type":"string","enum":["required","disabled"],"description":"Defines scheduling behaviour across different zones within the same region."},"minZones":{"type":"integer","minimum":1,"description":"Defines how many zones are required and will prevent containers from additional scheduling into existing zones. (Only relevant if type is set to \"required\")"}},"additionalProperties":false}},"required":["deploymentPlan","storage","replicas"],"additionalProperties":false},"source":{"oneOf":[{"type":"object","properties":{"projectId":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"ID of the project of the source addon. Only required if not the same as target addon","example":"existing-project"},"addonId":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"ID of the addon to fork.","example":"existing-addon"},"backupId":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"ID of a backup belonging to that addon to use for the fork.","example":"existing-backup"}},"required":["addonId","backupId"],"additionalProperties":false,"description":"Optional object containing data about an existing addon to fork. If provided, the addon will be created from that existing addon backup."},{"type":"object","properties":{"backupUid":{"type":"string","format":"uuid","description":"Uid of the backup","example":"6d542e24-5d9f-4ecf-80a5-e80724b9133e"}},"required":["backupUid"],"additionalProperties":false,"description":"Optional object containing the reference to a backup addressed by its UUID"}],"description":"Fork source backup for the addon"},"tlsEnabled":{"type":"boolean","description":"Enables access to the addon via TLS (if supported by the addon type).","default":false},"externalAccessEnabled":{"type":"boolean","description":"Enables external access to the addon via TLS (if supported by the addon type).","default":false},"ipPolicies":{"type":"array","items":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","description":"An IP address used by this rule","example":"127.0.0.1"},"description":"An array of IP addresses used for this rule"},"action":{"type":"string","enum":["ALLOW","DENY"],"description":"The action for this rule.","example":"DENY"}},"required":["addresses","action"],"additionalProperties":false},"description":"An array of IP address policies."},"typeSpecificSettings":{"type":"object","properties":{"redisMaxMemoryPolicy":{"type":"string","enum":["noeviction","allkeys-lru","allkeys-lfu","volatile-lru","volatile-lfu","allkeys-random","volatile-random","volatile-ttl","volatile-lrm","allkeys-lrm"],"description":"Redis only: Key eviction policy at memory pressure."},"redisSentinelEnabled":{"type":"boolean","description":"Redis only: Deploy Redis with Sentinel high availability. Default: false"},"postgresqlWalLevel":{"type":"string","enum":["replica","logical"],"description":"PostgreSQL only: Configure wal_level setting."},"postgresqlSupabaseMode":{"type":"boolean","description":"PostgreSQL only: Enable Supabase mode."},"postgresqlConnectionPoolerEnabled":{"type":"boolean","description":"PostgreSQL only: Run connection pooler in front of postgres instance."},"postgresqlConnectionPoolerReplicas":{"type":"integer","minimum":1,"maximum":3,"description":"PostgreSQL only: Number of connection pooler replicas in case connection pooler is enabled."},"postgresqlReadConnectionPoolerEnabled":{"type":"boolean","description":"PostgreSQL only: Run connection pooler in front of read-only postgres instance."},"postgresqlReadConnectionPoolerReplicas":{"type":"integer","minimum":1,"maximum":3,"description":"PostgreSQL only: Number of read-only connection pooler replicas in case read-only connection pooler is enabled."},"postgresqlImportMode":{"type":"boolean","description":"PostgreSQL only: Configure PostgreSQL for higher import speed. Not recommended for production workloads."},"mysqlHaModeEnabled":{"type":"boolean","description":"MySQL only: Run MySQL in HA configuration with auto-failover and connection poolers."},"mysqlRouterReplicas":{"type":"integer","minimum":1,"maximum":8,"description":"MysqlHA only: Number of connection router replicas in case connection router is enabled."}},"additionalProperties":false},"customCredentials":{"type":"object","properties":{"dbName":{"type":"string","description":"Custom database name. Not supported for all addon types."}},"additionalProperties":false},"backupSchedules":{"type":"array","items":{"type":"object","properties":{"scheduling":{"type":"object","properties":{"interval":{"type":"string","enum":["hourly","daily","weekly"],"description":"The interval between backups. Each addon can only have one backup schedule of each interval for each backup type.","example":"weekly"},"minute":{"type":"array","items":{"type":"integer","minimum":0,"maximum":59,"description":"A minute when the backup should be performed.","example":30},"uniqueItems":true,"description":"An array of minutes when the backup should be performed."},"hour":{"type":"array","items":{"type":"integer","minimum":0,"maximum":23,"description":"An hour when the backup should be performed, in 24 hour format.","example":18},"uniqueItems":true,"description":"An array of hours in 24 hour format when the backup should be performed. At these hours, a backup will be performed at each of the minutes provided in the `minute` field. Required for `daily` and `weekly` intervals and unavailable for `hourly` intervals."},"day":{"type":"array","items":{"type":"integer","minimum":0,"maximum":6,"description":"A day of the week when the backup should be performed, where `0` represents Monday and `6` represents Sunday.","example":4},"uniqueItems":true,"description":"An array of days of the week when the backup should be performed, where `0` represents Monday and `6` represents Sunday. On these days, a backup will be performed at each of the minutes provided in the `minute` field whenever it is an hour from the `hour` field. Required for `weekly` intervals and unavailable for `hourly` and `daily` intervals."}},"required":["interval","minute"],"additionalProperties":false,"description":"Schedule for the backup."},"backupType":{"type":"string","enum":["dump","snapshot"],"description":"The type of the backup to be performed.","example":"snapshot"},"customDestinationId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"additionalDestinations":{"type":"array","items":{"type":"object","properties":{"destinationId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"Additional custom back up destination that should be used to store the snapshot.","example":"example-backup-destination"},"retentionTime":{"type":"integer","minimum":1,"description":"Retention time of the additional back up in days.","examples":[7,7]},"type":{"type":"string","enum":["custom"],"description":"The type of backup destination to use","example":"custom"}},"required":["destinationId","type"],"additionalProperties":false},"description":"List of destinations for which a backup should be created of this backup. Only applicable for snapshot backups."},"compressionType":{"type":"string","enum":["gz","zstd"],"description":"The compression algorithm of the backup. Only applicable for dump backups. Defaults to `gz`.","example":"gz"},"retentionTime":{"type":"integer","minimum":1,"description":"The time the backup is retained for, in days.","example":7}},"required":["scheduling","backupType","retentionTime"],"additionalProperties":false}},"metadata":{"type":"object","properties":{"labels":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom labels for the workload."},"annotations":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom annotations for the workload as string or object."}},"additionalProperties":false,"description":"Allow setting custom labels and annotations for workloads."},"id":{"type":"string","description":"Identifier for the addon.","example":"example-addon"},"appId":{"type":"string","description":"Full identifier used for deployment","example":"/example-user/default-project/example-addon"},"status":{"type":"string","enum":["preDeployment","triggerAllocation","allocating","postDeployment","running","paused","scaling","upgrading","resetting","backup","restore","failed","error","errorAllocating","deleting","deleted"],"description":"The current state of the addon.","example":"running"},"cluster":{"type":"object","properties":{"id":{"type":"string","description":"The id of the cluster associated with this project.","example":"nf-europe-west"},"name":{"type":"string","description":"The name of the cluster associated with this project.","example":"nf-europe-west"},"namespace":{"type":"string","description":"Namespace this resource is located within on the cluster.","example":"ns-8zy2mcjh9zn2"},"loadBalancers":{"type":"array","items":{"type":"string","example":"lb.659200800000000000000000.northflank.com"},"description":"Load balancer DNS for the cluster."}},"required":["id","name"],"additionalProperties":false,"description":"Cluster information"},"createdAt":{"type":"string","format":"date-time","description":"time of creation"},"updatedAt":{"type":"string","format":"date-time","description":"time of update"}},"required":["name","type","version","billing","id","appId","status","cluster"],"additionalProperties":false,"description":"Native Northflank addons"},{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The name of the addon.","example":"Example Addon"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"A description of the addon.","example":"An addon description"},"stageId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"type":{"type":"string","description":"The identifier for the type of addon. Addon types can be found at the Get Addon Types endpoint.","example":"postgresql"},"infrastructure":{"type":"object","properties":{"architecture":{"type":"string","enum":["x86","arm"]}},"additionalProperties":false},"templateValues":{"type":"object","properties":{},"additionalProperties":false,"description":"The template values to be passed to the templating engine.","example":"{\"replicas\": 2}"},"id":{"type":"string","description":"Identifier for the addon.","example":"example-addon"},"appId":{"type":"string","description":"Full identifier used for deployment","example":"/example-user/default-project/example-addon"},"status":{"type":"string","enum":["preDeployment","triggerAllocation","allocating","postDeployment","running","paused","scaling","upgrading","resetting","backup","restore","failed","error","errorAllocating","deleting","deleted"],"description":"The current state of the addon.","example":"running"},"cluster":{"type":"object","properties":{"id":{"type":"string","description":"The id of the cluster associated with this project.","example":"nf-europe-west"},"name":{"type":"string","description":"The name of the cluster associated with this project.","example":"nf-europe-west"},"namespace":{"type":"string","description":"Namespace this resource is located within on the cluster.","example":"ns-8zy2mcjh9zn2"},"loadBalancers":{"type":"array","items":{"type":"string","example":"lb.659200800000000000000000.northflank.com"},"description":"Load balancer DNS for the cluster."}},"required":["id","name"],"additionalProperties":false,"description":"Cluster information"},"createdAt":{"type":"string","format":"date-time","description":"time of creation"},"updatedAt":{"type":"string","format":"date-time","description":"time of update"}},"required":["name","type","id","appId","status","cluster"],"additionalProperties":false,"description":"Northflank bring your own addon with templating engine"},{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The name of the addon.","example":"Example Addon"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"A description of the addon.","example":"An addon description"},"stageId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"type":{"type":"string","description":"The identifier for the type of addon. Addon types can be found at the Get Addon Types endpoint.","example":"postgresql"},"infrastructure":{"type":"object","properties":{"architecture":{"type":"string","enum":["x86","arm"]}},"additionalProperties":false},"region":{"type":"string","description":"The AWS region identifier for the bucket location.","example":"eu-west-2"},"id":{"type":"string","description":"Identifier for the addon.","example":"example-addon"},"appId":{"type":"string","description":"Full identifier used for deployment","example":"/example-user/default-project/example-addon"},"status":{"type":"string","enum":["preDeployment","triggerAllocation","allocating","postDeployment","running","paused","scaling","upgrading","resetting","backup","restore","failed","error","errorAllocating","deleting","deleted"],"description":"The current state of the addon.","example":"running"},"cluster":{"type":"object","properties":{"id":{"type":"string","description":"The id of the cluster associated with this project.","example":"nf-europe-west"},"name":{"type":"string","description":"The name of the cluster associated with this project.","example":"nf-europe-west"},"namespace":{"type":"string","description":"Namespace this resource is located within on the cluster.","example":"ns-8zy2mcjh9zn2"},"loadBalancers":{"type":"array","items":{"type":"string","example":"lb.659200800000000000000000.northflank.com"},"description":"Load balancer DNS for the cluster."}},"required":["id","name"],"additionalProperties":false,"description":"Cluster information"},"createdAt":{"type":"string","format":"date-time","description":"time of creation"},"updatedAt":{"type":"string","format":"date-time","description":"time of update"}},"required":["name","type","id","appId","status","cluster"],"additionalProperties":false,"description":"Northflank managed bucket addon"}],"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Addons","project"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"anyOf":[{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The name of the addon.","example":"Example Addon"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"A description of the addon.","example":"An addon description"},"projectId":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"ID of parent project","example":"example-project"},"stageId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"type":{"type":"string","description":"The identifier for the type of addon. Addon types can be found at the Get Addon Types endpoint.","example":"postgresql"},"infrastructure":{"type":"object","properties":{"architecture":{"type":"string","enum":["x86","arm"]}},"additionalProperties":false},"version":{"type":"string","description":"The version of the addon type to use. If set to `latest`, the addon will be created with the most recent addon version. If set to a major version appended with `-latest`, e.g. `14-latest` or `14.5-latest`, the addon will be created with the most recent minor/patch version belonging to that major version.","example":"latest"},"billing":{"type":"object","properties":{"deploymentPlan":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The ID of the deployment plan to use.","example":"nf-compute-20"},"storageClass":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The type of storage. Only configurable if the relevant feature flag is enabled for you account","example":"nvme","default":"nvme"},"storage":{"type":"integer","minimum":1,"description":"The size of the addon storage, in megabytes.","example":6144},"replicas":{"type":"integer","minimum":1,"description":"The number of addon replicas to run.","example":1},"zonalRedundancy":{"type":"object","properties":{"type":{"type":"string","enum":["required","disabled"],"description":"Defines scheduling behaviour across different zones within the same region."},"minZones":{"type":"integer","minimum":1,"description":"Defines how many zones are required and will prevent containers from additional scheduling into existing zones. (Only relevant if type is set to \"required\")"}},"additionalProperties":false}},"required":["deploymentPlan","storage","replicas"],"additionalProperties":false},"source":{"oneOf":[{"type":"object","properties":{"projectId":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"ID of the project of the source addon. Only required if not the same as target addon","example":"existing-project"},"addonId":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"ID of the addon to fork.","example":"existing-addon"},"backupId":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"ID of a backup belonging to that addon to use for the fork.","example":"existing-backup"}},"required":["addonId","backupId"],"additionalProperties":false,"description":"Optional object containing data about an existing addon to fork. If provided, the addon will be created from that existing addon backup."},{"type":"object","properties":{"backupUid":{"type":"string","format":"uuid","description":"Uid of the backup","example":"6d542e24-5d9f-4ecf-80a5-e80724b9133e"}},"required":["backupUid"],"additionalProperties":false,"description":"Optional object containing the reference to a backup addressed by its UUID"}],"description":"Fork source backup for the addon"},"tlsEnabled":{"type":"boolean","description":"Enables access to the addon via TLS (if supported by the addon type).","default":false},"externalAccessEnabled":{"type":"boolean","description":"Enables external access to the addon via TLS (if supported by the addon type).","default":false},"ipPolicies":{"type":"array","items":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","description":"An IP address used by this rule","example":"127.0.0.1"},"description":"An array of IP addresses used for this rule"},"action":{"type":"string","enum":["ALLOW","DENY"],"description":"The action for this rule.","example":"DENY"}},"required":["addresses","action"],"additionalProperties":false},"description":"An array of IP address policies."},"typeSpecificSettings":{"type":"object","properties":{"redisMaxMemoryPolicy":{"type":"string","enum":["noeviction","allkeys-lru","allkeys-lfu","volatile-lru","volatile-lfu","allkeys-random","volatile-random","volatile-ttl","volatile-lrm","allkeys-lrm"],"description":"Redis only: Key eviction policy at memory pressure."},"redisSentinelEnabled":{"type":"boolean","description":"Redis only: Deploy Redis with Sentinel high availability. Default: false"},"postgresqlWalLevel":{"type":"string","enum":["replica","logical"],"description":"PostgreSQL only: Configure wal_level setting."},"postgresqlSupabaseMode":{"type":"boolean","description":"PostgreSQL only: Enable Supabase mode."},"postgresqlConnectionPoolerEnabled":{"type":"boolean","description":"PostgreSQL only: Run connection pooler in front of postgres instance."},"postgresqlConnectionPoolerReplicas":{"type":"integer","minimum":1,"maximum":3,"description":"PostgreSQL only: Number of connection pooler replicas in case connection pooler is enabled."},"postgresqlReadConnectionPoolerEnabled":{"type":"boolean","description":"PostgreSQL only: Run connection pooler in front of read-only postgres instance."},"postgresqlReadConnectionPoolerReplicas":{"type":"integer","minimum":1,"maximum":3,"description":"PostgreSQL only: Number of read-only connection pooler replicas in case read-only connection pooler is enabled."},"postgresqlImportMode":{"type":"boolean","description":"PostgreSQL only: Configure PostgreSQL for higher import speed. Not recommended for production workloads."},"mysqlHaModeEnabled":{"type":"boolean","description":"MySQL only: Run MySQL in HA configuration with auto-failover and connection poolers."},"mysqlRouterReplicas":{"type":"integer","minimum":1,"maximum":8,"description":"MysqlHA only: Number of connection router replicas in case connection router is enabled."}},"additionalProperties":false},"customCredentials":{"type":"object","properties":{"dbName":{"type":"string","description":"Custom database name. Not supported for all addon types."}},"additionalProperties":false},"backupSchedules":{"type":"array","items":{"type":"object","properties":{"scheduling":{"type":"object","properties":{"interval":{"type":"string","enum":["hourly","daily","weekly"],"description":"The interval between backups. Each addon can only have one backup schedule of each interval for each backup type.","example":"weekly"},"minute":{"type":"array","items":{"type":"integer","minimum":0,"maximum":59,"description":"A minute when the backup should be performed.","example":30},"uniqueItems":true,"description":"An array of minutes when the backup should be performed."},"hour":{"type":"array","items":{"type":"integer","minimum":0,"maximum":23,"description":"An hour when the backup should be performed, in 24 hour format.","example":18},"uniqueItems":true,"description":"An array of hours in 24 hour format when the backup should be performed. At these hours, a backup will be performed at each of the minutes provided in the `minute` field. Required for `daily` and `weekly` intervals and unavailable for `hourly` intervals."},"day":{"type":"array","items":{"type":"integer","minimum":0,"maximum":6,"description":"A day of the week when the backup should be performed, where `0` represents Monday and `6` represents Sunday.","example":4},"uniqueItems":true,"description":"An array of days of the week when the backup should be performed, where `0` represents Monday and `6` represents Sunday. On these days, a backup will be performed at each of the minutes provided in the `minute` field whenever it is an hour from the `hour` field. Required for `weekly` intervals and unavailable for `hourly` and `daily` intervals."}},"required":["interval","minute"],"additionalProperties":false,"description":"Schedule for the backup."},"backupType":{"type":"string","enum":["dump","snapshot"],"description":"The type of the backup to be performed.","example":"snapshot"},"customDestinationId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"additionalDestinations":{"type":"array","items":{"type":"object","properties":{"destinationId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"Additional custom back up destination that should be used to store the snapshot.","example":"example-backup-destination"},"retentionTime":{"type":"integer","minimum":1,"description":"Retention time of the additional back up in days.","examples":[7,7]},"type":{"type":"string","enum":["custom"],"description":"The type of backup destination to use","example":"custom"}},"required":["destinationId","type"],"additionalProperties":false},"description":"List of destinations for which a backup should be created of this backup. Only applicable for snapshot backups."},"compressionType":{"type":"string","enum":["gz","zstd"],"description":"The compression algorithm of the backup. Only applicable for dump backups. Defaults to `gz`.","example":"gz"},"retentionTime":{"type":"integer","minimum":1,"description":"The time the backup is retained for, in days.","example":7}},"required":["scheduling","backupType","retentionTime"],"additionalProperties":false}},"metadata":{"type":"object","properties":{"labels":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom labels for the workload."},"annotations":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom annotations for the workload as string or object."}},"additionalProperties":false,"description":"Allow setting custom labels and annotations for workloads."}},"required":["name","type","version","billing"],"additionalProperties":false,"description":"Native Northflank addons","x-required":true},{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The name of the addon.","example":"Example Addon"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"A description of the addon.","example":"An addon description"},"projectId":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"ID of parent project","example":"example-project"},"stageId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"type":{"type":"string","description":"The identifier for the type of addon. Addon types can be found at the Get Addon Types endpoint.","example":"postgresql"},"infrastructure":{"type":"object","properties":{"architecture":{"type":"string","enum":["x86","arm"]}},"additionalProperties":false},"templateValues":{"type":"object","properties":{},"additionalProperties":false,"description":"The template values to be passed to the templating engine.","example":"{\"replicas\": 2}"}},"required":["name","type"],"additionalProperties":false,"description":"Northflank bring your own addon with templating engine","x-required":true},{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The name of the addon.","example":"Example Addon"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"A description of the addon.","example":"An addon description"},"projectId":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"ID of parent project","example":"example-project"},"stageId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"type":{"type":"string","description":"The identifier for the type of addon. Addon types can be found at the Get Addon Types endpoint.","example":"postgresql"},"infrastructure":{"type":"object","properties":{"architecture":{"type":"string","enum":["x86","arm"]}},"additionalProperties":false},"region":{"type":"string","description":"The AWS region identifier for the bucket location.","example":"eu-west-2"}},"required":["name","type"],"additionalProperties":false,"description":"Northflank managed bucket addon","x-required":true}],"description":"The provisioner type of the addon"}}},"required":true},"x-nf-permission-required":"Project > Addons > General > Create","x-nf-team-scoped":true,"x-nf-cli-command":["create","addon"]},"v1-projects--projectId--addons-put":{"operationId":"putProjectsAddons","summary":"Put addon","description":"Creates or updates an addon","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}}],"responses":{"200":{"description":"Details about the created or updated addon.","schema":{"type":"object","properties":{"data":{"oneOf":[{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The name of the addon.","example":"Example Addon"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"A description of the addon.","example":"An addon description"},"stageId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"type":{"type":"string","description":"The identifier for the type of addon. Addon types can be found at the Get Addon Types endpoint.","example":"postgresql"},"infrastructure":{"type":"object","properties":{"architecture":{"type":"string","enum":["x86","arm"]}},"additionalProperties":false},"version":{"type":"string","description":"The version of the addon type to use. If set to `latest`, the addon will be created with the most recent addon version. If set to a major version appended with `-latest`, e.g. `14-latest` or `14.5-latest`, the addon will be created with the most recent minor/patch version belonging to that major version.","example":"latest"},"billing":{"type":"object","properties":{"deploymentPlan":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The ID of the deployment plan to use.","example":"nf-compute-20"},"storageClass":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The type of storage. Only configurable if the relevant feature flag is enabled for you account","example":"nvme","default":"nvme"},"storage":{"type":"integer","minimum":1,"description":"The size of the addon storage, in megabytes.","example":6144},"replicas":{"type":"integer","minimum":1,"description":"The number of addon replicas to run.","example":1},"zonalRedundancy":{"type":"object","properties":{"type":{"type":"string","enum":["required","disabled"],"description":"Defines scheduling behaviour across different zones within the same region."},"minZones":{"type":"integer","minimum":1,"description":"Defines how many zones are required and will prevent containers from additional scheduling into existing zones. (Only relevant if type is set to \"required\")"}},"additionalProperties":false}},"required":["deploymentPlan","storage","replicas"],"additionalProperties":false},"source":{"oneOf":[{"type":"object","properties":{"projectId":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"ID of the project of the source addon. Only required if not the same as target addon","example":"existing-project"},"addonId":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"ID of the addon to fork.","example":"existing-addon"},"backupId":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"ID of a backup belonging to that addon to use for the fork.","example":"existing-backup"}},"required":["addonId","backupId"],"additionalProperties":false,"description":"Optional object containing data about an existing addon to fork. If provided, the addon will be created from that existing addon backup."},{"type":"object","properties":{"backupUid":{"type":"string","format":"uuid","description":"Uid of the backup","example":"6d542e24-5d9f-4ecf-80a5-e80724b9133e"}},"required":["backupUid"],"additionalProperties":false,"description":"Optional object containing the reference to a backup addressed by its UUID"}],"description":"Fork source backup for the addon"},"tlsEnabled":{"type":"boolean","description":"Enables access to the addon via TLS (if supported by the addon type).","default":false},"externalAccessEnabled":{"type":"boolean","description":"Enables external access to the addon via TLS (if supported by the addon type).","default":false},"ipPolicies":{"type":"array","items":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","description":"An IP address used by this rule","example":"127.0.0.1"},"description":"An array of IP addresses used for this rule"},"action":{"type":"string","enum":["ALLOW","DENY"],"description":"The action for this rule.","example":"DENY"}},"required":["addresses","action"],"additionalProperties":false},"description":"An array of IP address policies."},"typeSpecificSettings":{"type":"object","properties":{"redisMaxMemoryPolicy":{"type":"string","enum":["noeviction","allkeys-lru","allkeys-lfu","volatile-lru","volatile-lfu","allkeys-random","volatile-random","volatile-ttl","volatile-lrm","allkeys-lrm"],"description":"Redis only: Key eviction policy at memory pressure."},"redisSentinelEnabled":{"type":"boolean","description":"Redis only: Deploy Redis with Sentinel high availability. Default: false"},"postgresqlWalLevel":{"type":"string","enum":["replica","logical"],"description":"PostgreSQL only: Configure wal_level setting."},"postgresqlSupabaseMode":{"type":"boolean","description":"PostgreSQL only: Enable Supabase mode."},"postgresqlConnectionPoolerEnabled":{"type":"boolean","description":"PostgreSQL only: Run connection pooler in front of postgres instance."},"postgresqlConnectionPoolerReplicas":{"type":"integer","minimum":1,"maximum":3,"description":"PostgreSQL only: Number of connection pooler replicas in case connection pooler is enabled."},"postgresqlReadConnectionPoolerEnabled":{"type":"boolean","description":"PostgreSQL only: Run connection pooler in front of read-only postgres instance."},"postgresqlReadConnectionPoolerReplicas":{"type":"integer","minimum":1,"maximum":3,"description":"PostgreSQL only: Number of read-only connection pooler replicas in case read-only connection pooler is enabled."},"postgresqlImportMode":{"type":"boolean","description":"PostgreSQL only: Configure PostgreSQL for higher import speed. Not recommended for production workloads."},"mysqlHaModeEnabled":{"type":"boolean","description":"MySQL only: Run MySQL in HA configuration with auto-failover and connection poolers."},"mysqlRouterReplicas":{"type":"integer","minimum":1,"maximum":8,"description":"MysqlHA only: Number of connection router replicas in case connection router is enabled."}},"additionalProperties":false},"customCredentials":{"type":"object","properties":{"dbName":{"type":"string","description":"Custom database name. Not supported for all addon types."}},"additionalProperties":false},"backupSchedules":{"type":"array","items":{"type":"object","properties":{"scheduling":{"type":"object","properties":{"interval":{"type":"string","enum":["hourly","daily","weekly"],"description":"The interval between backups. Each addon can only have one backup schedule of each interval for each backup type.","example":"weekly"},"minute":{"type":"array","items":{"type":"integer","minimum":0,"maximum":59,"description":"A minute when the backup should be performed.","example":30},"uniqueItems":true,"description":"An array of minutes when the backup should be performed."},"hour":{"type":"array","items":{"type":"integer","minimum":0,"maximum":23,"description":"An hour when the backup should be performed, in 24 hour format.","example":18},"uniqueItems":true,"description":"An array of hours in 24 hour format when the backup should be performed. At these hours, a backup will be performed at each of the minutes provided in the `minute` field. Required for `daily` and `weekly` intervals and unavailable for `hourly` intervals."},"day":{"type":"array","items":{"type":"integer","minimum":0,"maximum":6,"description":"A day of the week when the backup should be performed, where `0` represents Monday and `6` represents Sunday.","example":4},"uniqueItems":true,"description":"An array of days of the week when the backup should be performed, where `0` represents Monday and `6` represents Sunday. On these days, a backup will be performed at each of the minutes provided in the `minute` field whenever it is an hour from the `hour` field. Required for `weekly` intervals and unavailable for `hourly` and `daily` intervals."}},"required":["interval","minute"],"additionalProperties":false,"description":"Schedule for the backup."},"backupType":{"type":"string","enum":["dump","snapshot"],"description":"The type of the backup to be performed.","example":"snapshot"},"customDestinationId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"additionalDestinations":{"type":"array","items":{"type":"object","properties":{"destinationId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"Additional custom back up destination that should be used to store the snapshot.","example":"example-backup-destination"},"retentionTime":{"type":"integer","minimum":1,"description":"Retention time of the additional back up in days.","examples":[7,7]},"type":{"type":"string","enum":["custom"],"description":"The type of backup destination to use","example":"custom"}},"required":["destinationId","type"],"additionalProperties":false},"description":"List of destinations for which a backup should be created of this backup. Only applicable for snapshot backups."},"compressionType":{"type":"string","enum":["gz","zstd"],"description":"The compression algorithm of the backup. Only applicable for dump backups. Defaults to `gz`.","example":"gz"},"retentionTime":{"type":"integer","minimum":1,"description":"The time the backup is retained for, in days.","example":7}},"required":["scheduling","backupType","retentionTime"],"additionalProperties":false}},"metadata":{"type":"object","properties":{"labels":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom labels for the workload."},"annotations":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom annotations for the workload as string or object."}},"additionalProperties":false,"description":"Allow setting custom labels and annotations for workloads."},"id":{"type":"string","description":"Identifier for the addon.","example":"example-addon"},"appId":{"type":"string","description":"Full identifier used for deployment","example":"/example-user/default-project/example-addon"},"status":{"type":"string","enum":["preDeployment","triggerAllocation","allocating","postDeployment","running","paused","scaling","upgrading","resetting","backup","restore","failed","error","errorAllocating","deleting","deleted"],"description":"The current state of the addon.","example":"running"},"cluster":{"type":"object","properties":{"id":{"type":"string","description":"The id of the cluster associated with this project.","example":"nf-europe-west"},"name":{"type":"string","description":"The name of the cluster associated with this project.","example":"nf-europe-west"},"namespace":{"type":"string","description":"Namespace this resource is located within on the cluster.","example":"ns-8zy2mcjh9zn2"},"loadBalancers":{"type":"array","items":{"type":"string","example":"lb.659200800000000000000000.northflank.com"},"description":"Load balancer DNS for the cluster."}},"required":["id","name"],"additionalProperties":false,"description":"Cluster information"},"createdAt":{"type":"string","format":"date-time","description":"time of creation"},"updatedAt":{"type":"string","format":"date-time","description":"time of update"}},"required":["name","type","version","billing","id","appId","status","cluster"],"additionalProperties":false,"description":"Native Northflank addons"},{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The name of the addon.","example":"Example Addon"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"A description of the addon.","example":"An addon description"},"stageId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"type":{"type":"string","description":"The identifier for the type of addon. Addon types can be found at the Get Addon Types endpoint.","example":"postgresql"},"infrastructure":{"type":"object","properties":{"architecture":{"type":"string","enum":["x86","arm"]}},"additionalProperties":false},"templateValues":{"type":"object","properties":{},"additionalProperties":false,"description":"The template values to be passed to the templating engine.","example":"{\"replicas\": 2}"},"id":{"type":"string","description":"Identifier for the addon.","example":"example-addon"},"appId":{"type":"string","description":"Full identifier used for deployment","example":"/example-user/default-project/example-addon"},"status":{"type":"string","enum":["preDeployment","triggerAllocation","allocating","postDeployment","running","paused","scaling","upgrading","resetting","backup","restore","failed","error","errorAllocating","deleting","deleted"],"description":"The current state of the addon.","example":"running"},"cluster":{"type":"object","properties":{"id":{"type":"string","description":"The id of the cluster associated with this project.","example":"nf-europe-west"},"name":{"type":"string","description":"The name of the cluster associated with this project.","example":"nf-europe-west"},"namespace":{"type":"string","description":"Namespace this resource is located within on the cluster.","example":"ns-8zy2mcjh9zn2"},"loadBalancers":{"type":"array","items":{"type":"string","example":"lb.659200800000000000000000.northflank.com"},"description":"Load balancer DNS for the cluster."}},"required":["id","name"],"additionalProperties":false,"description":"Cluster information"},"createdAt":{"type":"string","format":"date-time","description":"time of creation"},"updatedAt":{"type":"string","format":"date-time","description":"time of update"}},"required":["name","type","id","appId","status","cluster"],"additionalProperties":false,"description":"Northflank bring your own addon with templating engine"},{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The name of the addon.","example":"Example Addon"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"A description of the addon.","example":"An addon description"},"stageId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"type":{"type":"string","description":"The identifier for the type of addon. Addon types can be found at the Get Addon Types endpoint.","example":"postgresql"},"infrastructure":{"type":"object","properties":{"architecture":{"type":"string","enum":["x86","arm"]}},"additionalProperties":false},"region":{"type":"string","description":"The AWS region identifier for the bucket location.","example":"eu-west-2"},"id":{"type":"string","description":"Identifier for the addon.","example":"example-addon"},"appId":{"type":"string","description":"Full identifier used for deployment","example":"/example-user/default-project/example-addon"},"status":{"type":"string","enum":["preDeployment","triggerAllocation","allocating","postDeployment","running","paused","scaling","upgrading","resetting","backup","restore","failed","error","errorAllocating","deleting","deleted"],"description":"The current state of the addon.","example":"running"},"cluster":{"type":"object","properties":{"id":{"type":"string","description":"The id of the cluster associated with this project.","example":"nf-europe-west"},"name":{"type":"string","description":"The name of the cluster associated with this project.","example":"nf-europe-west"},"namespace":{"type":"string","description":"Namespace this resource is located within on the cluster.","example":"ns-8zy2mcjh9zn2"},"loadBalancers":{"type":"array","items":{"type":"string","example":"lb.659200800000000000000000.northflank.com"},"description":"Load balancer DNS for the cluster."}},"required":["id","name"],"additionalProperties":false,"description":"Cluster information"},"createdAt":{"type":"string","format":"date-time","description":"time of creation"},"updatedAt":{"type":"string","format":"date-time","description":"time of update"}},"required":["name","type","id","appId","status","cluster"],"additionalProperties":false,"description":"Northflank managed bucket addon"}],"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Addons","project"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"anyOf":[{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The name of the addon.","example":"Example Addon"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"A description of the addon.","example":"An addon description"},"projectId":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"ID of parent project","example":"example-project"},"stageId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"type":{"type":"string","description":"The identifier for the type of addon. Addon types can be found at the Get Addon Types endpoint.","example":"postgresql"},"infrastructure":{"type":"object","properties":{"architecture":{"type":"string","enum":["x86","arm"]}},"additionalProperties":false},"version":{"type":"string","description":"The version of the addon type to use. If set to `latest`, the addon will be created with the most recent addon version. If set to a major version appended with `-latest`, e.g. e.g. `14-latest` or `14.5-latest`, the addon will be created with the most recent minor/patch version belonging to that major version.","example":"latest"},"billing":{"type":"object","properties":{"deploymentPlan":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The ID of the deployment plan to use.","example":"nf-compute-20"},"storageClass":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The type of storage. Only configurable if the relevant feature flag is enabled for you account","example":"nvme","default":"nvme"},"storage":{"type":"integer","minimum":1,"description":"The size of the addon storage, in megabytes.","example":6144},"replicas":{"type":"integer","minimum":1,"description":"The number of addon replicas to run.","example":1},"zonalRedundancy":{"type":"object","properties":{"type":{"type":"string","enum":["required","disabled"],"description":"Defines scheduling behaviour across different zones within the same region."},"minZones":{"type":"integer","minimum":1,"description":"Defines how many zones are required and will prevent containers from additional scheduling into existing zones. (Only relevant if type is set to \"required\")"}},"additionalProperties":false}},"required":["deploymentPlan","storage","replicas"],"additionalProperties":false},"source":{"oneOf":[{"type":"object","properties":{"projectId":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"ID of the project of the source addon. Only required if not the same as target addon","example":"existing-project"},"addonId":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"ID of the addon to fork.","example":"existing-addon"},"backupId":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"ID of a backup belonging to that addon to use for the fork.","example":"existing-backup"}},"required":["addonId","backupId"],"additionalProperties":false,"description":"Optional object containing data about an existing addon to fork. If provided, the addon will be created from that existing addon backup."},{"type":"object","properties":{"backupUid":{"type":"string","format":"uuid","description":"Uid of the backup","example":"6d542e24-5d9f-4ecf-80a5-e80724b9133e"}},"required":["backupUid"],"additionalProperties":false,"description":"Optional object containing the reference to a backup addressed by its UUID"}],"description":"Fork source backup for the addon"},"tlsEnabled":{"type":"boolean","description":"Enables access to the addon via TLS (if supported by the addon type)."},"externalAccessEnabled":{"type":"boolean","description":"Enables external access to the addon via TLS (if supported by the addon type)."},"ipPolicies":{"type":"array","items":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","description":"An IP address used by this rule","example":"127.0.0.1"},"description":"An array of IP addresses used for this rule"},"action":{"type":"string","enum":["ALLOW","DENY"],"description":"The action for this rule.","example":"DENY"}},"required":["addresses","action"],"additionalProperties":false},"description":"An array of IP address policies."},"typeSpecificSettings":{"type":"object","properties":{"redisMaxMemoryPolicy":{"type":"string","enum":["noeviction","allkeys-lru","allkeys-lfu","volatile-lru","volatile-lfu","allkeys-random","volatile-random","volatile-ttl","volatile-lrm","allkeys-lrm"],"description":"Redis only: Key eviction policy at memory pressure."},"redisSentinelEnabled":{"type":"boolean","description":"Redis only: Deploy Redis with Sentinel high availability. Default: false"},"postgresqlWalLevel":{"type":"string","enum":["replica","logical"],"description":"PostgreSQL only: Configure wal_level setting."},"postgresqlSupabaseMode":{"type":"boolean","description":"PostgreSQL only: Enable Supabase mode."},"postgresqlConnectionPoolerEnabled":{"type":"boolean","description":"PostgreSQL only: Run connection pooler in front of postgres instance."},"postgresqlConnectionPoolerReplicas":{"type":"integer","minimum":1,"maximum":3,"description":"PostgreSQL only: Number of connection pooler instances in case connection pooler is enabled."},"postgresqlReadConnectionPoolerEnabled":{"type":"boolean","description":"PostgreSQL only: Run connection pooler in front of read-only postgres instance."},"postgresqlReadConnectionPoolerReplicas":{"type":"integer","minimum":1,"maximum":3,"description":"PostgreSQL only: Number of read-only connection pooler replicas in case read-only connection pooler is enabled."},"postgresqlImportMode":{"type":"boolean","description":"PostgreSQL only: Configure PostgreSQL for higher import speed. Not recommended for production workloads."},"mysqlHaModeEnabled":{"type":"boolean","description":"MySQL only: Run MySQL in HA configuration with auto-failover and connection poolers."},"mysqlRouterReplicas":{"type":"integer","minimum":1,"maximum":8,"description":"MysqlHA only: Number of connection router replicas in case connection router is enabled."}},"additionalProperties":false},"customCredentials":{"type":"object","properties":{"dbName":{"type":"string","description":"Custom database name. Not supported for all addon types."}},"additionalProperties":false},"backupSchedules":{"type":"array","items":{"type":"object","properties":{"scheduling":{"type":"object","properties":{"interval":{"type":"string","enum":["hourly","daily","weekly"],"description":"The interval between backups. Each addon can only have one backup schedule of each interval for each backup type.","example":"weekly"},"minute":{"type":"array","items":{"type":"integer","minimum":0,"maximum":59,"description":"A minute when the backup should be performed.","example":30},"uniqueItems":true,"description":"An array of minutes when the backup should be performed."},"hour":{"type":"array","items":{"type":"integer","minimum":0,"maximum":23,"description":"An hour when the backup should be performed, in 24 hour format.","example":18},"uniqueItems":true,"description":"An array of hours in 24 hour format when the backup should be performed. At these hours, a backup will be performed at each of the minutes provided in the `minute` field. Required for `daily` and `weekly` intervals and unavailable for `hourly` intervals."},"day":{"type":"array","items":{"type":"integer","minimum":0,"maximum":6,"description":"A day of the week when the backup should be performed, where `0` represents Monday and `6` represents Sunday.","example":4},"uniqueItems":true,"description":"An array of days of the week when the backup should be performed, where `0` represents Monday and `6` represents Sunday. On these days, a backup will be performed at each of the minutes provided in the `minute` field whenever it is an hour from the `hour` field. Required for `weekly` intervals and unavailable for `hourly` and `daily` intervals."}},"required":["interval","minute"],"additionalProperties":false,"description":"Schedule for the backup."},"backupType":{"type":"string","enum":["dump","snapshot"],"description":"The type of the backup to be performed.","example":"snapshot"},"customDestinationId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"additionalDestinations":{"type":"array","items":{"type":"object","properties":{"destinationId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"Additional custom back up destination that should be used to store the snapshot.","example":"example-backup-destination"},"retentionTime":{"type":"integer","minimum":1,"description":"Retention time of the additional back up in days.","examples":[7,7]},"type":{"type":"string","enum":["custom"],"description":"The type of backup destination to use","example":"custom"}},"required":["destinationId","type"],"additionalProperties":false},"description":"List of destinations for which a backup should be created of this backup. Only applicable for snapshot backups."},"compressionType":{"type":"string","enum":["gz","zstd"],"description":"The compression algorithm of the backup. Only applicable for dump backups. Defaults to `gz`.","example":"gz"},"retentionTime":{"type":"integer","minimum":1,"description":"The time the backup is retained for, in days.","example":7}},"required":["scheduling","backupType","retentionTime"],"additionalProperties":false}},"metadata":{"type":"object","properties":{"labels":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom labels for the workload."},"annotations":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom annotations for the workload as string or object."}},"additionalProperties":false,"description":"Allow setting custom labels and annotations for workloads."}},"required":["name","type","version","billing"],"additionalProperties":false,"description":"Native Northflank addon"},{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The name of the addon.","example":"Example Addon"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"A description of the addon.","example":"An addon description"},"projectId":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"ID of parent project","example":"example-project"},"stageId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"type":{"type":"string","description":"The identifier for the type of addon. Addon types can be found at the Get Addon Types endpoint.","example":"postgresql"},"infrastructure":{"type":"object","properties":{"architecture":{"type":"string","enum":["x86","arm"]}},"additionalProperties":false},"templateValues":{"type":"object","properties":{},"additionalProperties":false,"description":"The template values to be passed to the templating engine.","example":"{\"replicas\": 2}"}},"required":["name","type"],"additionalProperties":false,"description":"Northflank bring your own addon with templating engine"},{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The name of the addon.","example":"Example Addon"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"A description of the addon.","example":"An addon description"},"projectId":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"ID of parent project","example":"example-project"},"stageId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"type":{"type":"string","description":"The identifier for the type of addon. Addon types can be found at the Get Addon Types endpoint.","example":"postgresql"},"infrastructure":{"type":"object","properties":{"architecture":{"type":"string","enum":["x86","arm"]}},"additionalProperties":false},"region":{"type":"string","description":"The AWS region identifier for the bucket location.","example":"eu-west-2"}},"required":["name","type"],"additionalProperties":false,"description":"Northflank managed object storage addon"}],"description":"The provisioner type of the addon"}}},"required":true},"x-nf-permission-required":"Project > Addons > General > Create","x-nf-team-scoped":true,"x-nf-cli-command":["put","addon"]},"v1-projects--projectId--addons-put-team-scoped":{"operationId":"putProjectsAddons","summary":"Put addon","description":"Creates or updates an addon","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}}],"responses":{"200":{"description":"Details about the created or updated addon.","schema":{"type":"object","properties":{"data":{"oneOf":[{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The name of the addon.","example":"Example Addon"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"A description of the addon.","example":"An addon description"},"stageId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"type":{"type":"string","description":"The identifier for the type of addon. Addon types can be found at the Get Addon Types endpoint.","example":"postgresql"},"infrastructure":{"type":"object","properties":{"architecture":{"type":"string","enum":["x86","arm"]}},"additionalProperties":false},"version":{"type":"string","description":"The version of the addon type to use. If set to `latest`, the addon will be created with the most recent addon version. If set to a major version appended with `-latest`, e.g. `14-latest` or `14.5-latest`, the addon will be created with the most recent minor/patch version belonging to that major version.","example":"latest"},"billing":{"type":"object","properties":{"deploymentPlan":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The ID of the deployment plan to use.","example":"nf-compute-20"},"storageClass":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The type of storage. Only configurable if the relevant feature flag is enabled for you account","example":"nvme","default":"nvme"},"storage":{"type":"integer","minimum":1,"description":"The size of the addon storage, in megabytes.","example":6144},"replicas":{"type":"integer","minimum":1,"description":"The number of addon replicas to run.","example":1},"zonalRedundancy":{"type":"object","properties":{"type":{"type":"string","enum":["required","disabled"],"description":"Defines scheduling behaviour across different zones within the same region."},"minZones":{"type":"integer","minimum":1,"description":"Defines how many zones are required and will prevent containers from additional scheduling into existing zones. (Only relevant if type is set to \"required\")"}},"additionalProperties":false}},"required":["deploymentPlan","storage","replicas"],"additionalProperties":false},"source":{"oneOf":[{"type":"object","properties":{"projectId":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"ID of the project of the source addon. Only required if not the same as target addon","example":"existing-project"},"addonId":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"ID of the addon to fork.","example":"existing-addon"},"backupId":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"ID of a backup belonging to that addon to use for the fork.","example":"existing-backup"}},"required":["addonId","backupId"],"additionalProperties":false,"description":"Optional object containing data about an existing addon to fork. If provided, the addon will be created from that existing addon backup."},{"type":"object","properties":{"backupUid":{"type":"string","format":"uuid","description":"Uid of the backup","example":"6d542e24-5d9f-4ecf-80a5-e80724b9133e"}},"required":["backupUid"],"additionalProperties":false,"description":"Optional object containing the reference to a backup addressed by its UUID"}],"description":"Fork source backup for the addon"},"tlsEnabled":{"type":"boolean","description":"Enables access to the addon via TLS (if supported by the addon type).","default":false},"externalAccessEnabled":{"type":"boolean","description":"Enables external access to the addon via TLS (if supported by the addon type).","default":false},"ipPolicies":{"type":"array","items":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","description":"An IP address used by this rule","example":"127.0.0.1"},"description":"An array of IP addresses used for this rule"},"action":{"type":"string","enum":["ALLOW","DENY"],"description":"The action for this rule.","example":"DENY"}},"required":["addresses","action"],"additionalProperties":false},"description":"An array of IP address policies."},"typeSpecificSettings":{"type":"object","properties":{"redisMaxMemoryPolicy":{"type":"string","enum":["noeviction","allkeys-lru","allkeys-lfu","volatile-lru","volatile-lfu","allkeys-random","volatile-random","volatile-ttl","volatile-lrm","allkeys-lrm"],"description":"Redis only: Key eviction policy at memory pressure."},"redisSentinelEnabled":{"type":"boolean","description":"Redis only: Deploy Redis with Sentinel high availability. Default: false"},"postgresqlWalLevel":{"type":"string","enum":["replica","logical"],"description":"PostgreSQL only: Configure wal_level setting."},"postgresqlSupabaseMode":{"type":"boolean","description":"PostgreSQL only: Enable Supabase mode."},"postgresqlConnectionPoolerEnabled":{"type":"boolean","description":"PostgreSQL only: Run connection pooler in front of postgres instance."},"postgresqlConnectionPoolerReplicas":{"type":"integer","minimum":1,"maximum":3,"description":"PostgreSQL only: Number of connection pooler replicas in case connection pooler is enabled."},"postgresqlReadConnectionPoolerEnabled":{"type":"boolean","description":"PostgreSQL only: Run connection pooler in front of read-only postgres instance."},"postgresqlReadConnectionPoolerReplicas":{"type":"integer","minimum":1,"maximum":3,"description":"PostgreSQL only: Number of read-only connection pooler replicas in case read-only connection pooler is enabled."},"postgresqlImportMode":{"type":"boolean","description":"PostgreSQL only: Configure PostgreSQL for higher import speed. Not recommended for production workloads."},"mysqlHaModeEnabled":{"type":"boolean","description":"MySQL only: Run MySQL in HA configuration with auto-failover and connection poolers."},"mysqlRouterReplicas":{"type":"integer","minimum":1,"maximum":8,"description":"MysqlHA only: Number of connection router replicas in case connection router is enabled."}},"additionalProperties":false},"customCredentials":{"type":"object","properties":{"dbName":{"type":"string","description":"Custom database name. Not supported for all addon types."}},"additionalProperties":false},"backupSchedules":{"type":"array","items":{"type":"object","properties":{"scheduling":{"type":"object","properties":{"interval":{"type":"string","enum":["hourly","daily","weekly"],"description":"The interval between backups. Each addon can only have one backup schedule of each interval for each backup type.","example":"weekly"},"minute":{"type":"array","items":{"type":"integer","minimum":0,"maximum":59,"description":"A minute when the backup should be performed.","example":30},"uniqueItems":true,"description":"An array of minutes when the backup should be performed."},"hour":{"type":"array","items":{"type":"integer","minimum":0,"maximum":23,"description":"An hour when the backup should be performed, in 24 hour format.","example":18},"uniqueItems":true,"description":"An array of hours in 24 hour format when the backup should be performed. At these hours, a backup will be performed at each of the minutes provided in the `minute` field. Required for `daily` and `weekly` intervals and unavailable for `hourly` intervals."},"day":{"type":"array","items":{"type":"integer","minimum":0,"maximum":6,"description":"A day of the week when the backup should be performed, where `0` represents Monday and `6` represents Sunday.","example":4},"uniqueItems":true,"description":"An array of days of the week when the backup should be performed, where `0` represents Monday and `6` represents Sunday. On these days, a backup will be performed at each of the minutes provided in the `minute` field whenever it is an hour from the `hour` field. Required for `weekly` intervals and unavailable for `hourly` and `daily` intervals."}},"required":["interval","minute"],"additionalProperties":false,"description":"Schedule for the backup."},"backupType":{"type":"string","enum":["dump","snapshot"],"description":"The type of the backup to be performed.","example":"snapshot"},"customDestinationId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"additionalDestinations":{"type":"array","items":{"type":"object","properties":{"destinationId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"Additional custom back up destination that should be used to store the snapshot.","example":"example-backup-destination"},"retentionTime":{"type":"integer","minimum":1,"description":"Retention time of the additional back up in days.","examples":[7,7]},"type":{"type":"string","enum":["custom"],"description":"The type of backup destination to use","example":"custom"}},"required":["destinationId","type"],"additionalProperties":false},"description":"List of destinations for which a backup should be created of this backup. Only applicable for snapshot backups."},"compressionType":{"type":"string","enum":["gz","zstd"],"description":"The compression algorithm of the backup. Only applicable for dump backups. Defaults to `gz`.","example":"gz"},"retentionTime":{"type":"integer","minimum":1,"description":"The time the backup is retained for, in days.","example":7}},"required":["scheduling","backupType","retentionTime"],"additionalProperties":false}},"metadata":{"type":"object","properties":{"labels":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom labels for the workload."},"annotations":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom annotations for the workload as string or object."}},"additionalProperties":false,"description":"Allow setting custom labels and annotations for workloads."},"id":{"type":"string","description":"Identifier for the addon.","example":"example-addon"},"appId":{"type":"string","description":"Full identifier used for deployment","example":"/example-user/default-project/example-addon"},"status":{"type":"string","enum":["preDeployment","triggerAllocation","allocating","postDeployment","running","paused","scaling","upgrading","resetting","backup","restore","failed","error","errorAllocating","deleting","deleted"],"description":"The current state of the addon.","example":"running"},"cluster":{"type":"object","properties":{"id":{"type":"string","description":"The id of the cluster associated with this project.","example":"nf-europe-west"},"name":{"type":"string","description":"The name of the cluster associated with this project.","example":"nf-europe-west"},"namespace":{"type":"string","description":"Namespace this resource is located within on the cluster.","example":"ns-8zy2mcjh9zn2"},"loadBalancers":{"type":"array","items":{"type":"string","example":"lb.659200800000000000000000.northflank.com"},"description":"Load balancer DNS for the cluster."}},"required":["id","name"],"additionalProperties":false,"description":"Cluster information"},"createdAt":{"type":"string","format":"date-time","description":"time of creation"},"updatedAt":{"type":"string","format":"date-time","description":"time of update"}},"required":["name","type","version","billing","id","appId","status","cluster"],"additionalProperties":false,"description":"Native Northflank addons"},{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The name of the addon.","example":"Example Addon"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"A description of the addon.","example":"An addon description"},"stageId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"type":{"type":"string","description":"The identifier for the type of addon. Addon types can be found at the Get Addon Types endpoint.","example":"postgresql"},"infrastructure":{"type":"object","properties":{"architecture":{"type":"string","enum":["x86","arm"]}},"additionalProperties":false},"templateValues":{"type":"object","properties":{},"additionalProperties":false,"description":"The template values to be passed to the templating engine.","example":"{\"replicas\": 2}"},"id":{"type":"string","description":"Identifier for the addon.","example":"example-addon"},"appId":{"type":"string","description":"Full identifier used for deployment","example":"/example-user/default-project/example-addon"},"status":{"type":"string","enum":["preDeployment","triggerAllocation","allocating","postDeployment","running","paused","scaling","upgrading","resetting","backup","restore","failed","error","errorAllocating","deleting","deleted"],"description":"The current state of the addon.","example":"running"},"cluster":{"type":"object","properties":{"id":{"type":"string","description":"The id of the cluster associated with this project.","example":"nf-europe-west"},"name":{"type":"string","description":"The name of the cluster associated with this project.","example":"nf-europe-west"},"namespace":{"type":"string","description":"Namespace this resource is located within on the cluster.","example":"ns-8zy2mcjh9zn2"},"loadBalancers":{"type":"array","items":{"type":"string","example":"lb.659200800000000000000000.northflank.com"},"description":"Load balancer DNS for the cluster."}},"required":["id","name"],"additionalProperties":false,"description":"Cluster information"},"createdAt":{"type":"string","format":"date-time","description":"time of creation"},"updatedAt":{"type":"string","format":"date-time","description":"time of update"}},"required":["name","type","id","appId","status","cluster"],"additionalProperties":false,"description":"Northflank bring your own addon with templating engine"},{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The name of the addon.","example":"Example Addon"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"A description of the addon.","example":"An addon description"},"stageId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"type":{"type":"string","description":"The identifier for the type of addon. Addon types can be found at the Get Addon Types endpoint.","example":"postgresql"},"infrastructure":{"type":"object","properties":{"architecture":{"type":"string","enum":["x86","arm"]}},"additionalProperties":false},"region":{"type":"string","description":"The AWS region identifier for the bucket location.","example":"eu-west-2"},"id":{"type":"string","description":"Identifier for the addon.","example":"example-addon"},"appId":{"type":"string","description":"Full identifier used for deployment","example":"/example-user/default-project/example-addon"},"status":{"type":"string","enum":["preDeployment","triggerAllocation","allocating","postDeployment","running","paused","scaling","upgrading","resetting","backup","restore","failed","error","errorAllocating","deleting","deleted"],"description":"The current state of the addon.","example":"running"},"cluster":{"type":"object","properties":{"id":{"type":"string","description":"The id of the cluster associated with this project.","example":"nf-europe-west"},"name":{"type":"string","description":"The name of the cluster associated with this project.","example":"nf-europe-west"},"namespace":{"type":"string","description":"Namespace this resource is located within on the cluster.","example":"ns-8zy2mcjh9zn2"},"loadBalancers":{"type":"array","items":{"type":"string","example":"lb.659200800000000000000000.northflank.com"},"description":"Load balancer DNS for the cluster."}},"required":["id","name"],"additionalProperties":false,"description":"Cluster information"},"createdAt":{"type":"string","format":"date-time","description":"time of creation"},"updatedAt":{"type":"string","format":"date-time","description":"time of update"}},"required":["name","type","id","appId","status","cluster"],"additionalProperties":false,"description":"Northflank managed bucket addon"}],"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Addons","project"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"anyOf":[{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The name of the addon.","example":"Example Addon"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"A description of the addon.","example":"An addon description"},"projectId":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"ID of parent project","example":"example-project"},"stageId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"type":{"type":"string","description":"The identifier for the type of addon. Addon types can be found at the Get Addon Types endpoint.","example":"postgresql"},"infrastructure":{"type":"object","properties":{"architecture":{"type":"string","enum":["x86","arm"]}},"additionalProperties":false},"version":{"type":"string","description":"The version of the addon type to use. If set to `latest`, the addon will be created with the most recent addon version. If set to a major version appended with `-latest`, e.g. e.g. `14-latest` or `14.5-latest`, the addon will be created with the most recent minor/patch version belonging to that major version.","example":"latest"},"billing":{"type":"object","properties":{"deploymentPlan":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The ID of the deployment plan to use.","example":"nf-compute-20"},"storageClass":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The type of storage. Only configurable if the relevant feature flag is enabled for you account","example":"nvme","default":"nvme"},"storage":{"type":"integer","minimum":1,"description":"The size of the addon storage, in megabytes.","example":6144},"replicas":{"type":"integer","minimum":1,"description":"The number of addon replicas to run.","example":1},"zonalRedundancy":{"type":"object","properties":{"type":{"type":"string","enum":["required","disabled"],"description":"Defines scheduling behaviour across different zones within the same region."},"minZones":{"type":"integer","minimum":1,"description":"Defines how many zones are required and will prevent containers from additional scheduling into existing zones. (Only relevant if type is set to \"required\")"}},"additionalProperties":false}},"required":["deploymentPlan","storage","replicas"],"additionalProperties":false},"source":{"oneOf":[{"type":"object","properties":{"projectId":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"ID of the project of the source addon. Only required if not the same as target addon","example":"existing-project"},"addonId":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"ID of the addon to fork.","example":"existing-addon"},"backupId":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"ID of a backup belonging to that addon to use for the fork.","example":"existing-backup"}},"required":["addonId","backupId"],"additionalProperties":false,"description":"Optional object containing data about an existing addon to fork. If provided, the addon will be created from that existing addon backup."},{"type":"object","properties":{"backupUid":{"type":"string","format":"uuid","description":"Uid of the backup","example":"6d542e24-5d9f-4ecf-80a5-e80724b9133e"}},"required":["backupUid"],"additionalProperties":false,"description":"Optional object containing the reference to a backup addressed by its UUID"}],"description":"Fork source backup for the addon"},"tlsEnabled":{"type":"boolean","description":"Enables access to the addon via TLS (if supported by the addon type)."},"externalAccessEnabled":{"type":"boolean","description":"Enables external access to the addon via TLS (if supported by the addon type)."},"ipPolicies":{"type":"array","items":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","description":"An IP address used by this rule","example":"127.0.0.1"},"description":"An array of IP addresses used for this rule"},"action":{"type":"string","enum":["ALLOW","DENY"],"description":"The action for this rule.","example":"DENY"}},"required":["addresses","action"],"additionalProperties":false},"description":"An array of IP address policies."},"typeSpecificSettings":{"type":"object","properties":{"redisMaxMemoryPolicy":{"type":"string","enum":["noeviction","allkeys-lru","allkeys-lfu","volatile-lru","volatile-lfu","allkeys-random","volatile-random","volatile-ttl","volatile-lrm","allkeys-lrm"],"description":"Redis only: Key eviction policy at memory pressure."},"redisSentinelEnabled":{"type":"boolean","description":"Redis only: Deploy Redis with Sentinel high availability. Default: false"},"postgresqlWalLevel":{"type":"string","enum":["replica","logical"],"description":"PostgreSQL only: Configure wal_level setting."},"postgresqlSupabaseMode":{"type":"boolean","description":"PostgreSQL only: Enable Supabase mode."},"postgresqlConnectionPoolerEnabled":{"type":"boolean","description":"PostgreSQL only: Run connection pooler in front of postgres instance."},"postgresqlConnectionPoolerReplicas":{"type":"integer","minimum":1,"maximum":3,"description":"PostgreSQL only: Number of connection pooler instances in case connection pooler is enabled."},"postgresqlReadConnectionPoolerEnabled":{"type":"boolean","description":"PostgreSQL only: Run connection pooler in front of read-only postgres instance."},"postgresqlReadConnectionPoolerReplicas":{"type":"integer","minimum":1,"maximum":3,"description":"PostgreSQL only: Number of read-only connection pooler replicas in case read-only connection pooler is enabled."},"postgresqlImportMode":{"type":"boolean","description":"PostgreSQL only: Configure PostgreSQL for higher import speed. Not recommended for production workloads."},"mysqlHaModeEnabled":{"type":"boolean","description":"MySQL only: Run MySQL in HA configuration with auto-failover and connection poolers."},"mysqlRouterReplicas":{"type":"integer","minimum":1,"maximum":8,"description":"MysqlHA only: Number of connection router replicas in case connection router is enabled."}},"additionalProperties":false},"customCredentials":{"type":"object","properties":{"dbName":{"type":"string","description":"Custom database name. Not supported for all addon types."}},"additionalProperties":false},"backupSchedules":{"type":"array","items":{"type":"object","properties":{"scheduling":{"type":"object","properties":{"interval":{"type":"string","enum":["hourly","daily","weekly"],"description":"The interval between backups. Each addon can only have one backup schedule of each interval for each backup type.","example":"weekly"},"minute":{"type":"array","items":{"type":"integer","minimum":0,"maximum":59,"description":"A minute when the backup should be performed.","example":30},"uniqueItems":true,"description":"An array of minutes when the backup should be performed."},"hour":{"type":"array","items":{"type":"integer","minimum":0,"maximum":23,"description":"An hour when the backup should be performed, in 24 hour format.","example":18},"uniqueItems":true,"description":"An array of hours in 24 hour format when the backup should be performed. At these hours, a backup will be performed at each of the minutes provided in the `minute` field. Required for `daily` and `weekly` intervals and unavailable for `hourly` intervals."},"day":{"type":"array","items":{"type":"integer","minimum":0,"maximum":6,"description":"A day of the week when the backup should be performed, where `0` represents Monday and `6` represents Sunday.","example":4},"uniqueItems":true,"description":"An array of days of the week when the backup should be performed, where `0` represents Monday and `6` represents Sunday. On these days, a backup will be performed at each of the minutes provided in the `minute` field whenever it is an hour from the `hour` field. Required for `weekly` intervals and unavailable for `hourly` and `daily` intervals."}},"required":["interval","minute"],"additionalProperties":false,"description":"Schedule for the backup."},"backupType":{"type":"string","enum":["dump","snapshot"],"description":"The type of the backup to be performed.","example":"snapshot"},"customDestinationId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"additionalDestinations":{"type":"array","items":{"type":"object","properties":{"destinationId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"Additional custom back up destination that should be used to store the snapshot.","example":"example-backup-destination"},"retentionTime":{"type":"integer","minimum":1,"description":"Retention time of the additional back up in days.","examples":[7,7]},"type":{"type":"string","enum":["custom"],"description":"The type of backup destination to use","example":"custom"}},"required":["destinationId","type"],"additionalProperties":false},"description":"List of destinations for which a backup should be created of this backup. Only applicable for snapshot backups."},"compressionType":{"type":"string","enum":["gz","zstd"],"description":"The compression algorithm of the backup. Only applicable for dump backups. Defaults to `gz`.","example":"gz"},"retentionTime":{"type":"integer","minimum":1,"description":"The time the backup is retained for, in days.","example":7}},"required":["scheduling","backupType","retentionTime"],"additionalProperties":false}},"metadata":{"type":"object","properties":{"labels":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom labels for the workload."},"annotations":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom annotations for the workload as string or object."}},"additionalProperties":false,"description":"Allow setting custom labels and annotations for workloads."}},"required":["name","type","version","billing"],"additionalProperties":false,"description":"Native Northflank addon"},{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The name of the addon.","example":"Example Addon"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"A description of the addon.","example":"An addon description"},"projectId":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"ID of parent project","example":"example-project"},"stageId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"type":{"type":"string","description":"The identifier for the type of addon. Addon types can be found at the Get Addon Types endpoint.","example":"postgresql"},"infrastructure":{"type":"object","properties":{"architecture":{"type":"string","enum":["x86","arm"]}},"additionalProperties":false},"templateValues":{"type":"object","properties":{},"additionalProperties":false,"description":"The template values to be passed to the templating engine.","example":"{\"replicas\": 2}"}},"required":["name","type"],"additionalProperties":false,"description":"Northflank bring your own addon with templating engine"},{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The name of the addon.","example":"Example Addon"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"A description of the addon.","example":"An addon description"},"projectId":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"ID of parent project","example":"example-project"},"stageId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"type":{"type":"string","description":"The identifier for the type of addon. Addon types can be found at the Get Addon Types endpoint.","example":"postgresql"},"infrastructure":{"type":"object","properties":{"architecture":{"type":"string","enum":["x86","arm"]}},"additionalProperties":false},"region":{"type":"string","description":"The AWS region identifier for the bucket location.","example":"eu-west-2"}},"required":["name","type"],"additionalProperties":false,"description":"Northflank managed object storage addon"}],"description":"The provisioner type of the addon"}}},"required":true},"x-nf-permission-required":"Project > Addons > General > Create","x-nf-team-scoped":true,"x-nf-cli-command":["put","addon"]},"v1-projects--projectId--addons--addonId--get":{"operationId":"getProjectsAddonsAddonid","summary":"Get addon","description":"Gets information about the given addon","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"addonId","type":"string","required":true,"description":"ID of the addon","example":"example-addon","in":"path","schema":{"name":"addonId","type":"string","required":true,"description":"ID of the addon","example":"example-addon","in":"path"}}],"responses":{"200":{"description":"Details about the addon.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","description":"Identifier for the addon.","example":"example-addon"},"name":{"type":"string","description":"Addon name.","example":"Example Addon"},"appId":{"type":"string","description":"Full identifier for the addon.","example":"/example-user/default-project/example-addon"},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"description":{"type":"string","description":"A short description of the addon.","example":"This is the addon description"},"createdAt":{"type":"string","format":"date-time","description":"The time the addon was created.","example":"2021-01-20T11:19:53.175Z"},"status":{"type":"string","enum":["preDeployment","triggerAllocation","allocating","postDeployment","running","paused","scaling","upgrading","resetting","backup","restore","failed","error","errorAllocating","deleting","deleted"],"description":"The current state of the addon.","example":"running"},"spec":{"type":"object","properties":{"type":{"type":"string","description":"The type of the addon","example":"mongodb"},"config":{"oneOf":[{"type":"object","properties":{"versionTag":{"type":"string","description":"The version of the addon running.","example":"4.2.14"},"lifecycleStatus":{"type":"string","enum":["active","deprecated","discontinued"],"description":"The support status of the current addon version.","example":"active"},"deployment":{"type":"object","properties":{"replicas":{"type":"integer","minimum":0,"description":"The number of replicas running for this addon.","example":1},"storageClass":{"type":"string","description":"The type of storage used by the addon.","example":"nvme"},"storageSize":{"type":"number","format":"float","description":"The size of the addon storage, in MB.","example":6144},"planId":{"type":"string","description":"The deployment plan used by the addon.","example":"nf-compute-20"},"region":{"type":"string","description":"The region where the addon is deployed.","example":"europe-west"}},"required":["replicas","storageClass","storageSize","planId","region"],"additionalProperties":false,"description":"Details about the addon deployment."},"networking":{"type":"object","properties":{"tlsEnabled":{"type":"boolean","description":"Whether this addon is provisioned with a TLS certificate.","example":true},"externalAccessEnabled":{"type":"boolean","description":"Whether this addon is publicly accessible via the internet.","example":true},"ipPolicies":{"type":"array","items":{"type":"object","properties":{"address":{"type":"string","description":"An IP address used by this rule.","example":"127.0.0.1"},"action":{"type":"string","enum":["DENY","ALLOW"],"description":"The action for this rule.","example":"ALLOW"}},"required":["address","action"],"additionalProperties":false,"description":"Data about an IP policy rule."},"description":"An array of IP policy rules."}},"required":["tlsEnabled","externalAccessEnabled"],"additionalProperties":false,"description":"Details about the addon networking settings."}},"required":["versionTag","lifecycleStatus","deployment","networking"],"additionalProperties":false,"description":"Details about the config of the Northflank-managed addon."},{"type":"object","properties":{"templateValues":{"type":"string","description":"The template values to be passed to the templating engine.","example":"{\"replicas\": 2}"}},"required":["templateValues"],"additionalProperties":false,"description":"Details about the config of the custom addon."},{"type":"object","properties":{"region":{"type":"string","description":"The region where the bucket is provisioned.","example":"eu-west-2"}},"additionalProperties":false,"description":"Details about the config of the managed bucket addon."}],"description":"Details about the addon configuration."},"pendingActions":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","description":"Type of the pending action","example":"backup"},"createdAt":{"type":"string","format":"date-time","description":"ISO timestamp of when the action was triggered","example":"2026-03-13T15:50:56.219Z"}},"additionalProperties":false},"description":"List of actions which are queued to be processed on this addon."}},"required":["type","config","pendingActions"],"additionalProperties":false,"description":"Details about the addon's specifications."},"cluster":{"type":"object","properties":{"id":{"type":"string","description":"The id of the cluster associated with this project.","example":"nf-europe-west"},"name":{"type":"string","description":"The name of the cluster associated with this project.","example":"nf-europe-west"},"namespace":{"type":"string","description":"Namespace this resource is located within on the cluster.","example":"ns-8zy2mcjh9zn2"},"loadBalancers":{"type":"array","items":{"type":"string","example":"lb.659200800000000000000000.northflank.com"},"description":"Load balancer DNS for the cluster."}},"required":["id","name"],"additionalProperties":false,"description":"Cluster information"}},"required":["id","name","appId","tags","createdAt","status","spec","cluster"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Addons","project"],"security":[],"x-nf-permission-required":"Project > Addons > General > Read","x-nf-team-scoped":true,"x-nf-cli-command":["get","addon"]},"v1-projects--projectId--addons--addonId--get-team-scoped":{"operationId":"getProjectsAddonsAddonid","summary":"Get addon","description":"Gets information about the given addon","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"addonId","type":"string","required":true,"description":"ID of the addon","example":"example-addon","in":"path","schema":{"name":"addonId","type":"string","required":true,"description":"ID of the addon","example":"example-addon","in":"path"}}],"responses":{"200":{"description":"Details about the addon.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","description":"Identifier for the addon.","example":"example-addon"},"name":{"type":"string","description":"Addon name.","example":"Example Addon"},"appId":{"type":"string","description":"Full identifier for the addon.","example":"/example-user/default-project/example-addon"},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"description":{"type":"string","description":"A short description of the addon.","example":"This is the addon description"},"createdAt":{"type":"string","format":"date-time","description":"The time the addon was created.","example":"2021-01-20T11:19:53.175Z"},"status":{"type":"string","enum":["preDeployment","triggerAllocation","allocating","postDeployment","running","paused","scaling","upgrading","resetting","backup","restore","failed","error","errorAllocating","deleting","deleted"],"description":"The current state of the addon.","example":"running"},"spec":{"type":"object","properties":{"type":{"type":"string","description":"The type of the addon","example":"mongodb"},"config":{"oneOf":[{"type":"object","properties":{"versionTag":{"type":"string","description":"The version of the addon running.","example":"4.2.14"},"lifecycleStatus":{"type":"string","enum":["active","deprecated","discontinued"],"description":"The support status of the current addon version.","example":"active"},"deployment":{"type":"object","properties":{"replicas":{"type":"integer","minimum":0,"description":"The number of replicas running for this addon.","example":1},"storageClass":{"type":"string","description":"The type of storage used by the addon.","example":"nvme"},"storageSize":{"type":"number","format":"float","description":"The size of the addon storage, in MB.","example":6144},"planId":{"type":"string","description":"The deployment plan used by the addon.","example":"nf-compute-20"},"region":{"type":"string","description":"The region where the addon is deployed.","example":"europe-west"}},"required":["replicas","storageClass","storageSize","planId","region"],"additionalProperties":false,"description":"Details about the addon deployment."},"networking":{"type":"object","properties":{"tlsEnabled":{"type":"boolean","description":"Whether this addon is provisioned with a TLS certificate.","example":true},"externalAccessEnabled":{"type":"boolean","description":"Whether this addon is publicly accessible via the internet.","example":true},"ipPolicies":{"type":"array","items":{"type":"object","properties":{"address":{"type":"string","description":"An IP address used by this rule.","example":"127.0.0.1"},"action":{"type":"string","enum":["DENY","ALLOW"],"description":"The action for this rule.","example":"ALLOW"}},"required":["address","action"],"additionalProperties":false,"description":"Data about an IP policy rule."},"description":"An array of IP policy rules."}},"required":["tlsEnabled","externalAccessEnabled"],"additionalProperties":false,"description":"Details about the addon networking settings."}},"required":["versionTag","lifecycleStatus","deployment","networking"],"additionalProperties":false,"description":"Details about the config of the Northflank-managed addon."},{"type":"object","properties":{"templateValues":{"type":"string","description":"The template values to be passed to the templating engine.","example":"{\"replicas\": 2}"}},"required":["templateValues"],"additionalProperties":false,"description":"Details about the config of the custom addon."},{"type":"object","properties":{"region":{"type":"string","description":"The region where the bucket is provisioned.","example":"eu-west-2"}},"additionalProperties":false,"description":"Details about the config of the managed bucket addon."}],"description":"Details about the addon configuration."},"pendingActions":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","description":"Type of the pending action","example":"backup"},"createdAt":{"type":"string","format":"date-time","description":"ISO timestamp of when the action was triggered","example":"2026-03-13T15:50:56.219Z"}},"additionalProperties":false},"description":"List of actions which are queued to be processed on this addon."}},"required":["type","config","pendingActions"],"additionalProperties":false,"description":"Details about the addon's specifications."},"cluster":{"type":"object","properties":{"id":{"type":"string","description":"The id of the cluster associated with this project.","example":"nf-europe-west"},"name":{"type":"string","description":"The name of the cluster associated with this project.","example":"nf-europe-west"},"namespace":{"type":"string","description":"Namespace this resource is located within on the cluster.","example":"ns-8zy2mcjh9zn2"},"loadBalancers":{"type":"array","items":{"type":"string","example":"lb.659200800000000000000000.northflank.com"},"description":"Load balancer DNS for the cluster."}},"required":["id","name"],"additionalProperties":false,"description":"Cluster information"}},"required":["id","name","appId","tags","createdAt","status","spec","cluster"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Addons","project"],"security":[],"x-nf-permission-required":"Project > Addons > General > Read","x-nf-team-scoped":true,"x-nf-cli-command":["get","addon"]},"v1-projects--projectId--addons--addonId--patch":{"operationId":"patchProjectsAddonsAddonid","summary":"Patch addon","description":"Updates an addon","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"addonId","type":"string","required":true,"description":"ID of the addon","example":"example-addon","in":"path","schema":{"name":"addonId","type":"string","required":true,"description":"ID of the addon","example":"example-addon","in":"path"}}],"responses":{"200":{"description":"Details about the updated addon.","schema":{"type":"object","properties":{"data":{"oneOf":[{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The name of the addon.","example":"Example Addon"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"A description of the addon.","example":"An addon description"},"stageId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"type":{"type":"string","description":"The identifier for the type of addon. Addon types can be found at the Get Addon Types endpoint.","example":"postgresql"},"infrastructure":{"type":"object","properties":{"architecture":{"type":"string","enum":["x86","arm"]}},"additionalProperties":false},"version":{"type":"string","description":"The version of the addon type to use. If set to `latest`, the addon will be created with the most recent addon version. If set to a major version appended with `-latest`, e.g. `14-latest` or `14.5-latest`, the addon will be created with the most recent minor/patch version belonging to that major version.","example":"latest"},"billing":{"type":"object","properties":{"deploymentPlan":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The ID of the deployment plan to use.","example":"nf-compute-20"},"storageClass":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The type of storage. Only configurable if the relevant feature flag is enabled for you account","example":"nvme","default":"nvme"},"storage":{"type":"integer","minimum":1,"description":"The size of the addon storage, in megabytes.","example":6144},"replicas":{"type":"integer","minimum":1,"description":"The number of addon replicas to run.","example":1},"zonalRedundancy":{"type":"object","properties":{"type":{"type":"string","enum":["required","disabled"],"description":"Defines scheduling behaviour across different zones within the same region."},"minZones":{"type":"integer","minimum":1,"description":"Defines how many zones are required and will prevent containers from additional scheduling into existing zones. (Only relevant if type is set to \"required\")"}},"additionalProperties":false}},"required":["deploymentPlan","storage","replicas"],"additionalProperties":false},"source":{"oneOf":[{"type":"object","properties":{"projectId":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"ID of the project of the source addon. Only required if not the same as target addon","example":"existing-project"},"addonId":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"ID of the addon to fork.","example":"existing-addon"},"backupId":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"ID of a backup belonging to that addon to use for the fork.","example":"existing-backup"}},"required":["addonId","backupId"],"additionalProperties":false,"description":"Optional object containing data about an existing addon to fork. If provided, the addon will be created from that existing addon backup."},{"type":"object","properties":{"backupUid":{"type":"string","format":"uuid","description":"Uid of the backup","example":"6d542e24-5d9f-4ecf-80a5-e80724b9133e"}},"required":["backupUid"],"additionalProperties":false,"description":"Optional object containing the reference to a backup addressed by its UUID"}],"description":"Fork source backup for the addon"},"tlsEnabled":{"type":"boolean","description":"Enables access to the addon via TLS (if supported by the addon type).","default":false},"externalAccessEnabled":{"type":"boolean","description":"Enables external access to the addon via TLS (if supported by the addon type).","default":false},"ipPolicies":{"type":"array","items":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","description":"An IP address used by this rule","example":"127.0.0.1"},"description":"An array of IP addresses used for this rule"},"action":{"type":"string","enum":["ALLOW","DENY"],"description":"The action for this rule.","example":"DENY"}},"required":["addresses","action"],"additionalProperties":false},"description":"An array of IP address policies."},"typeSpecificSettings":{"type":"object","properties":{"redisMaxMemoryPolicy":{"type":"string","enum":["noeviction","allkeys-lru","allkeys-lfu","volatile-lru","volatile-lfu","allkeys-random","volatile-random","volatile-ttl","volatile-lrm","allkeys-lrm"],"description":"Redis only: Key eviction policy at memory pressure."},"redisSentinelEnabled":{"type":"boolean","description":"Redis only: Deploy Redis with Sentinel high availability. Default: false"},"postgresqlWalLevel":{"type":"string","enum":["replica","logical"],"description":"PostgreSQL only: Configure wal_level setting."},"postgresqlSupabaseMode":{"type":"boolean","description":"PostgreSQL only: Enable Supabase mode."},"postgresqlConnectionPoolerEnabled":{"type":"boolean","description":"PostgreSQL only: Run connection pooler in front of postgres instance."},"postgresqlConnectionPoolerReplicas":{"type":"integer","minimum":1,"maximum":3,"description":"PostgreSQL only: Number of connection pooler replicas in case connection pooler is enabled."},"postgresqlReadConnectionPoolerEnabled":{"type":"boolean","description":"PostgreSQL only: Run connection pooler in front of read-only postgres instance."},"postgresqlReadConnectionPoolerReplicas":{"type":"integer","minimum":1,"maximum":3,"description":"PostgreSQL only: Number of read-only connection pooler replicas in case read-only connection pooler is enabled."},"postgresqlImportMode":{"type":"boolean","description":"PostgreSQL only: Configure PostgreSQL for higher import speed. Not recommended for production workloads."},"mysqlHaModeEnabled":{"type":"boolean","description":"MySQL only: Run MySQL in HA configuration with auto-failover and connection poolers."},"mysqlRouterReplicas":{"type":"integer","minimum":1,"maximum":8,"description":"MysqlHA only: Number of connection router replicas in case connection router is enabled."}},"additionalProperties":false},"customCredentials":{"type":"object","properties":{"dbName":{"type":"string","description":"Custom database name. Not supported for all addon types."}},"additionalProperties":false},"backupSchedules":{"type":"array","items":{"type":"object","properties":{"scheduling":{"type":"object","properties":{"interval":{"type":"string","enum":["hourly","daily","weekly"],"description":"The interval between backups. Each addon can only have one backup schedule of each interval for each backup type.","example":"weekly"},"minute":{"type":"array","items":{"type":"integer","minimum":0,"maximum":59,"description":"A minute when the backup should be performed.","example":30},"uniqueItems":true,"description":"An array of minutes when the backup should be performed."},"hour":{"type":"array","items":{"type":"integer","minimum":0,"maximum":23,"description":"An hour when the backup should be performed, in 24 hour format.","example":18},"uniqueItems":true,"description":"An array of hours in 24 hour format when the backup should be performed. At these hours, a backup will be performed at each of the minutes provided in the `minute` field. Required for `daily` and `weekly` intervals and unavailable for `hourly` intervals."},"day":{"type":"array","items":{"type":"integer","minimum":0,"maximum":6,"description":"A day of the week when the backup should be performed, where `0` represents Monday and `6` represents Sunday.","example":4},"uniqueItems":true,"description":"An array of days of the week when the backup should be performed, where `0` represents Monday and `6` represents Sunday. On these days, a backup will be performed at each of the minutes provided in the `minute` field whenever it is an hour from the `hour` field. Required for `weekly` intervals and unavailable for `hourly` and `daily` intervals."}},"required":["interval","minute"],"additionalProperties":false,"description":"Schedule for the backup."},"backupType":{"type":"string","enum":["dump","snapshot"],"description":"The type of the backup to be performed.","example":"snapshot"},"customDestinationId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"additionalDestinations":{"type":"array","items":{"type":"object","properties":{"destinationId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"Additional custom back up destination that should be used to store the snapshot.","example":"example-backup-destination"},"retentionTime":{"type":"integer","minimum":1,"description":"Retention time of the additional back up in days.","examples":[7,7]},"type":{"type":"string","enum":["custom"],"description":"The type of backup destination to use","example":"custom"}},"required":["destinationId","type"],"additionalProperties":false},"description":"List of destinations for which a backup should be created of this backup. Only applicable for snapshot backups."},"compressionType":{"type":"string","enum":["gz","zstd"],"description":"The compression algorithm of the backup. Only applicable for dump backups. Defaults to `gz`.","example":"gz"},"retentionTime":{"type":"integer","minimum":1,"description":"The time the backup is retained for, in days.","example":7}},"required":["scheduling","backupType","retentionTime"],"additionalProperties":false}},"metadata":{"type":"object","properties":{"labels":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom labels for the workload."},"annotations":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom annotations for the workload as string or object."}},"additionalProperties":false,"description":"Allow setting custom labels and annotations for workloads."},"id":{"type":"string","description":"Identifier for the addon.","example":"example-addon"},"appId":{"type":"string","description":"Full identifier used for deployment","example":"/example-user/default-project/example-addon"},"status":{"type":"string","enum":["preDeployment","triggerAllocation","allocating","postDeployment","running","paused","scaling","upgrading","resetting","backup","restore","failed","error","errorAllocating","deleting","deleted"],"description":"The current state of the addon.","example":"running"},"cluster":{"type":"object","properties":{"id":{"type":"string","description":"The id of the cluster associated with this project.","example":"nf-europe-west"},"name":{"type":"string","description":"The name of the cluster associated with this project.","example":"nf-europe-west"},"namespace":{"type":"string","description":"Namespace this resource is located within on the cluster.","example":"ns-8zy2mcjh9zn2"},"loadBalancers":{"type":"array","items":{"type":"string","example":"lb.659200800000000000000000.northflank.com"},"description":"Load balancer DNS for the cluster."}},"required":["id","name"],"additionalProperties":false,"description":"Cluster information"},"createdAt":{"type":"string","format":"date-time","description":"time of creation"},"updatedAt":{"type":"string","format":"date-time","description":"time of update"}},"required":["name","type","version","billing","id","appId","status","cluster"],"additionalProperties":false,"description":"Native Northflank addons"},{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The name of the addon.","example":"Example Addon"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"A description of the addon.","example":"An addon description"},"stageId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"type":{"type":"string","description":"The identifier for the type of addon. Addon types can be found at the Get Addon Types endpoint.","example":"postgresql"},"infrastructure":{"type":"object","properties":{"architecture":{"type":"string","enum":["x86","arm"]}},"additionalProperties":false},"templateValues":{"type":"object","properties":{},"additionalProperties":false,"description":"The template values to be passed to the templating engine.","example":"{\"replicas\": 2}"},"id":{"type":"string","description":"Identifier for the addon.","example":"example-addon"},"appId":{"type":"string","description":"Full identifier used for deployment","example":"/example-user/default-project/example-addon"},"status":{"type":"string","enum":["preDeployment","triggerAllocation","allocating","postDeployment","running","paused","scaling","upgrading","resetting","backup","restore","failed","error","errorAllocating","deleting","deleted"],"description":"The current state of the addon.","example":"running"},"cluster":{"type":"object","properties":{"id":{"type":"string","description":"The id of the cluster associated with this project.","example":"nf-europe-west"},"name":{"type":"string","description":"The name of the cluster associated with this project.","example":"nf-europe-west"},"namespace":{"type":"string","description":"Namespace this resource is located within on the cluster.","example":"ns-8zy2mcjh9zn2"},"loadBalancers":{"type":"array","items":{"type":"string","example":"lb.659200800000000000000000.northflank.com"},"description":"Load balancer DNS for the cluster."}},"required":["id","name"],"additionalProperties":false,"description":"Cluster information"},"createdAt":{"type":"string","format":"date-time","description":"time of creation"},"updatedAt":{"type":"string","format":"date-time","description":"time of update"}},"required":["name","type","id","appId","status","cluster"],"additionalProperties":false,"description":"Northflank bring your own addon with templating engine"},{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The name of the addon.","example":"Example Addon"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"A description of the addon.","example":"An addon description"},"stageId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"type":{"type":"string","description":"The identifier for the type of addon. Addon types can be found at the Get Addon Types endpoint.","example":"postgresql"},"infrastructure":{"type":"object","properties":{"architecture":{"type":"string","enum":["x86","arm"]}},"additionalProperties":false},"region":{"type":"string","description":"The AWS region identifier for the bucket location.","example":"eu-west-2"},"id":{"type":"string","description":"Identifier for the addon.","example":"example-addon"},"appId":{"type":"string","description":"Full identifier used for deployment","example":"/example-user/default-project/example-addon"},"status":{"type":"string","enum":["preDeployment","triggerAllocation","allocating","postDeployment","running","paused","scaling","upgrading","resetting","backup","restore","failed","error","errorAllocating","deleting","deleted"],"description":"The current state of the addon.","example":"running"},"cluster":{"type":"object","properties":{"id":{"type":"string","description":"The id of the cluster associated with this project.","example":"nf-europe-west"},"name":{"type":"string","description":"The name of the cluster associated with this project.","example":"nf-europe-west"},"namespace":{"type":"string","description":"Namespace this resource is located within on the cluster.","example":"ns-8zy2mcjh9zn2"},"loadBalancers":{"type":"array","items":{"type":"string","example":"lb.659200800000000000000000.northflank.com"},"description":"Load balancer DNS for the cluster."}},"required":["id","name"],"additionalProperties":false,"description":"Cluster information"},"createdAt":{"type":"string","format":"date-time","description":"time of creation"},"updatedAt":{"type":"string","format":"date-time","description":"time of update"}},"required":["name","type","id","appId","status","cluster"],"additionalProperties":false,"description":"Northflank managed bucket addon"}],"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Addons","project"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"anyOf":[{"type":"object","properties":{"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"A description of the addon.","example":"An addon description"},"stageId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"nullable":true},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"version":{"type":"string","description":"The version of the addon type to use. If set to `latest`, the addon will be created with the most recent addon version. If set to a major version appended with `-latest`, e.g. e.g. `14-latest` or `14.5-latest`, the addon will be created with the most recent minor/patch version belonging to that major version.","example":"latest"},"billing":{"type":"object","properties":{"deploymentPlan":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The ID of the deployment plan to use.","example":"nf-compute-20"},"storageClass":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The type of storage. Only configurable if the relevant feature flag is enabled for you account","example":"nvme"},"storage":{"type":"integer","minimum":1,"description":"The size of the addon storage, in megabytes.","example":6144},"replicas":{"type":"integer","minimum":1,"description":"The number of addon replicas to run.","example":1}},"additionalProperties":false},"tlsEnabled":{"type":"boolean","description":"Enables access to the addon via TLS (if supported by the addon type)."},"externalAccessEnabled":{"type":"boolean","description":"Enables external access to the addon via TLS (if supported by the addon type)."},"ipPolicies":{"type":"array","items":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","description":"An IP address used by this rule","example":"127.0.0.1"},"description":"An array of IP addresses used for this rule"},"action":{"type":"string","enum":["ALLOW","DENY"],"description":"The action for this rule.","example":"DENY"}},"required":["addresses","action"],"additionalProperties":false},"description":"An array of IP address policies."},"typeSpecificSettings":{"type":"object","properties":{"redisMaxMemoryPolicy":{"type":"string","enum":["noeviction","allkeys-lru","allkeys-lfu","volatile-lru","volatile-lfu","allkeys-random","volatile-random","volatile-ttl","volatile-lrm","allkeys-lrm"],"description":"Redis only: Key eviction policy at memory pressure."},"redisSentinelEnabled":{"type":"boolean","description":"Redis only: Deploy Redis with Sentinel high availability. Default: false"},"postgresqlWalLevel":{"type":"string","enum":["replica","logical"],"description":"PostgreSQL only: Configure wal_level setting."},"postgresqlSupabaseMode":{"type":"boolean","description":"PostgreSQL only: Enable Supabase mode."},"postgresqlConnectionPoolerEnabled":{"type":"boolean","description":"PostgreSQL only: Run connection pooler in front of postgres instance."},"postgresqlConnectionPoolerReplicas":{"type":"integer","minimum":1,"maximum":3,"description":"PostgreSQL only: Number of connection pooler instances in case connection pooler is enabled."},"postgresqlReadConnectionPoolerEnabled":{"type":"boolean","description":"PostgreSQL only: Run connection pooler in front of read-only postgres instance."},"postgresqlReadConnectionPoolerReplicas":{"type":"integer","minimum":1,"maximum":3,"description":"PostgreSQL only: Number of read-only connection pooler replicas in case read-only connection pooler is enabled."},"postgresqlImportMode":{"type":"boolean","description":"PostgreSQL only: Configure PostgreSQL for higher import speed. Not recommended for production workloads."},"mysqlHaModeEnabled":{"type":"boolean","description":"MySQL only: Run MySQL in HA configuration with auto-failover and connection poolers."},"mysqlRouterReplicas":{"type":"integer","minimum":1,"maximum":8,"description":"MysqlHA only: Number of connection router replicas in case connection router is enabled."}},"additionalProperties":false},"backupSchedules":{"type":"array","items":{"type":"object","properties":{"scheduling":{"type":"object","properties":{"interval":{"type":"string","enum":["hourly","daily","weekly"],"description":"The interval between backups. Each addon can only have one backup schedule of each interval for each backup type.","example":"weekly"},"minute":{"type":"array","items":{"type":"integer","minimum":0,"maximum":59,"description":"A minute when the backup should be performed.","example":30},"uniqueItems":true,"description":"An array of minutes when the backup should be performed."},"hour":{"type":"array","items":{"type":"integer","minimum":0,"maximum":23,"description":"An hour when the backup should be performed, in 24 hour format.","example":18},"uniqueItems":true,"description":"An array of hours in 24 hour format when the backup should be performed. At these hours, a backup will be performed at each of the minutes provided in the `minute` field. Required for `daily` and `weekly` intervals and unavailable for `hourly` intervals."},"day":{"type":"array","items":{"type":"integer","minimum":0,"maximum":6,"description":"A day of the week when the backup should be performed, where `0` represents Monday and `6` represents Sunday.","example":4},"uniqueItems":true,"description":"An array of days of the week when the backup should be performed, where `0` represents Monday and `6` represents Sunday. On these days, a backup will be performed at each of the minutes provided in the `minute` field whenever it is an hour from the `hour` field. Required for `weekly` intervals and unavailable for `hourly` and `daily` intervals."}},"required":["interval","minute"],"additionalProperties":false,"description":"Schedule for the backup."},"backupType":{"type":"string","enum":["dump","snapshot"],"description":"The type of the backup to be performed.","example":"snapshot"},"customDestinationId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"additionalDestinations":{"type":"array","items":{"type":"object","properties":{"destinationId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"Additional custom back up destination that should be used to store the snapshot.","example":"example-backup-destination"},"retentionTime":{"type":"integer","minimum":1,"description":"Retention time of the additional back up in days.","examples":[7,7]},"type":{"type":"string","enum":["custom"],"description":"The type of backup destination to use","example":"custom"}},"required":["destinationId","type"],"additionalProperties":false},"description":"List of destinations for which a backup should be created of this backup. Only applicable for snapshot backups."},"compressionType":{"type":"string","enum":["gz","zstd"],"description":"The compression algorithm of the backup. Only applicable for dump backups. Defaults to `gz`.","example":"gz"},"retentionTime":{"type":"integer","minimum":1,"description":"The time the backup is retained for, in days.","example":7}},"required":["scheduling","backupType","retentionTime"],"additionalProperties":false}},"metadata":{"type":"object","properties":{"labels":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom labels for the workload."},"annotations":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom annotations for the workload as string or object."}},"additionalProperties":false,"description":"Allow setting custom labels and annotations for workloads."}},"additionalProperties":false,"description":"Native Northflank addon"},{"type":"object","properties":{"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"A description of the addon.","example":"An addon description"},"stageId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"nullable":true},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"templateValues":{"type":"object","properties":{},"additionalProperties":false,"description":"The template values to be passed to the templating engine.","example":"{\"replicas\": 2}"}},"additionalProperties":false,"description":"Northflank bring your own addon with templating engine"},{"type":"object","properties":{"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"A description of the addon.","example":"An addon description"},"stageId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"nullable":true},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."}},"additionalProperties":false,"description":"Northflank managed object storage addon"}],"description":"The provisioner type of the addon"}}},"required":true},"x-nf-permission-required":"Project > Addons > General > Update","x-nf-team-scoped":true,"x-nf-cli-command":["patch","addon"]},"v1-projects--projectId--addons--addonId--patch-team-scoped":{"operationId":"patchProjectsAddonsAddonid","summary":"Patch addon","description":"Updates an addon","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"addonId","type":"string","required":true,"description":"ID of the addon","example":"example-addon","in":"path","schema":{"name":"addonId","type":"string","required":true,"description":"ID of the addon","example":"example-addon","in":"path"}}],"responses":{"200":{"description":"Details about the updated addon.","schema":{"type":"object","properties":{"data":{"oneOf":[{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The name of the addon.","example":"Example Addon"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"A description of the addon.","example":"An addon description"},"stageId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"type":{"type":"string","description":"The identifier for the type of addon. Addon types can be found at the Get Addon Types endpoint.","example":"postgresql"},"infrastructure":{"type":"object","properties":{"architecture":{"type":"string","enum":["x86","arm"]}},"additionalProperties":false},"version":{"type":"string","description":"The version of the addon type to use. If set to `latest`, the addon will be created with the most recent addon version. If set to a major version appended with `-latest`, e.g. `14-latest` or `14.5-latest`, the addon will be created with the most recent minor/patch version belonging to that major version.","example":"latest"},"billing":{"type":"object","properties":{"deploymentPlan":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The ID of the deployment plan to use.","example":"nf-compute-20"},"storageClass":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The type of storage. Only configurable if the relevant feature flag is enabled for you account","example":"nvme","default":"nvme"},"storage":{"type":"integer","minimum":1,"description":"The size of the addon storage, in megabytes.","example":6144},"replicas":{"type":"integer","minimum":1,"description":"The number of addon replicas to run.","example":1},"zonalRedundancy":{"type":"object","properties":{"type":{"type":"string","enum":["required","disabled"],"description":"Defines scheduling behaviour across different zones within the same region."},"minZones":{"type":"integer","minimum":1,"description":"Defines how many zones are required and will prevent containers from additional scheduling into existing zones. (Only relevant if type is set to \"required\")"}},"additionalProperties":false}},"required":["deploymentPlan","storage","replicas"],"additionalProperties":false},"source":{"oneOf":[{"type":"object","properties":{"projectId":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"ID of the project of the source addon. Only required if not the same as target addon","example":"existing-project"},"addonId":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"ID of the addon to fork.","example":"existing-addon"},"backupId":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"ID of a backup belonging to that addon to use for the fork.","example":"existing-backup"}},"required":["addonId","backupId"],"additionalProperties":false,"description":"Optional object containing data about an existing addon to fork. If provided, the addon will be created from that existing addon backup."},{"type":"object","properties":{"backupUid":{"type":"string","format":"uuid","description":"Uid of the backup","example":"6d542e24-5d9f-4ecf-80a5-e80724b9133e"}},"required":["backupUid"],"additionalProperties":false,"description":"Optional object containing the reference to a backup addressed by its UUID"}],"description":"Fork source backup for the addon"},"tlsEnabled":{"type":"boolean","description":"Enables access to the addon via TLS (if supported by the addon type).","default":false},"externalAccessEnabled":{"type":"boolean","description":"Enables external access to the addon via TLS (if supported by the addon type).","default":false},"ipPolicies":{"type":"array","items":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","description":"An IP address used by this rule","example":"127.0.0.1"},"description":"An array of IP addresses used for this rule"},"action":{"type":"string","enum":["ALLOW","DENY"],"description":"The action for this rule.","example":"DENY"}},"required":["addresses","action"],"additionalProperties":false},"description":"An array of IP address policies."},"typeSpecificSettings":{"type":"object","properties":{"redisMaxMemoryPolicy":{"type":"string","enum":["noeviction","allkeys-lru","allkeys-lfu","volatile-lru","volatile-lfu","allkeys-random","volatile-random","volatile-ttl","volatile-lrm","allkeys-lrm"],"description":"Redis only: Key eviction policy at memory pressure."},"redisSentinelEnabled":{"type":"boolean","description":"Redis only: Deploy Redis with Sentinel high availability. Default: false"},"postgresqlWalLevel":{"type":"string","enum":["replica","logical"],"description":"PostgreSQL only: Configure wal_level setting."},"postgresqlSupabaseMode":{"type":"boolean","description":"PostgreSQL only: Enable Supabase mode."},"postgresqlConnectionPoolerEnabled":{"type":"boolean","description":"PostgreSQL only: Run connection pooler in front of postgres instance."},"postgresqlConnectionPoolerReplicas":{"type":"integer","minimum":1,"maximum":3,"description":"PostgreSQL only: Number of connection pooler replicas in case connection pooler is enabled."},"postgresqlReadConnectionPoolerEnabled":{"type":"boolean","description":"PostgreSQL only: Run connection pooler in front of read-only postgres instance."},"postgresqlReadConnectionPoolerReplicas":{"type":"integer","minimum":1,"maximum":3,"description":"PostgreSQL only: Number of read-only connection pooler replicas in case read-only connection pooler is enabled."},"postgresqlImportMode":{"type":"boolean","description":"PostgreSQL only: Configure PostgreSQL for higher import speed. Not recommended for production workloads."},"mysqlHaModeEnabled":{"type":"boolean","description":"MySQL only: Run MySQL in HA configuration with auto-failover and connection poolers."},"mysqlRouterReplicas":{"type":"integer","minimum":1,"maximum":8,"description":"MysqlHA only: Number of connection router replicas in case connection router is enabled."}},"additionalProperties":false},"customCredentials":{"type":"object","properties":{"dbName":{"type":"string","description":"Custom database name. Not supported for all addon types."}},"additionalProperties":false},"backupSchedules":{"type":"array","items":{"type":"object","properties":{"scheduling":{"type":"object","properties":{"interval":{"type":"string","enum":["hourly","daily","weekly"],"description":"The interval between backups. Each addon can only have one backup schedule of each interval for each backup type.","example":"weekly"},"minute":{"type":"array","items":{"type":"integer","minimum":0,"maximum":59,"description":"A minute when the backup should be performed.","example":30},"uniqueItems":true,"description":"An array of minutes when the backup should be performed."},"hour":{"type":"array","items":{"type":"integer","minimum":0,"maximum":23,"description":"An hour when the backup should be performed, in 24 hour format.","example":18},"uniqueItems":true,"description":"An array of hours in 24 hour format when the backup should be performed. At these hours, a backup will be performed at each of the minutes provided in the `minute` field. Required for `daily` and `weekly` intervals and unavailable for `hourly` intervals."},"day":{"type":"array","items":{"type":"integer","minimum":0,"maximum":6,"description":"A day of the week when the backup should be performed, where `0` represents Monday and `6` represents Sunday.","example":4},"uniqueItems":true,"description":"An array of days of the week when the backup should be performed, where `0` represents Monday and `6` represents Sunday. On these days, a backup will be performed at each of the minutes provided in the `minute` field whenever it is an hour from the `hour` field. Required for `weekly` intervals and unavailable for `hourly` and `daily` intervals."}},"required":["interval","minute"],"additionalProperties":false,"description":"Schedule for the backup."},"backupType":{"type":"string","enum":["dump","snapshot"],"description":"The type of the backup to be performed.","example":"snapshot"},"customDestinationId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"additionalDestinations":{"type":"array","items":{"type":"object","properties":{"destinationId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"Additional custom back up destination that should be used to store the snapshot.","example":"example-backup-destination"},"retentionTime":{"type":"integer","minimum":1,"description":"Retention time of the additional back up in days.","examples":[7,7]},"type":{"type":"string","enum":["custom"],"description":"The type of backup destination to use","example":"custom"}},"required":["destinationId","type"],"additionalProperties":false},"description":"List of destinations for which a backup should be created of this backup. Only applicable for snapshot backups."},"compressionType":{"type":"string","enum":["gz","zstd"],"description":"The compression algorithm of the backup. Only applicable for dump backups. Defaults to `gz`.","example":"gz"},"retentionTime":{"type":"integer","minimum":1,"description":"The time the backup is retained for, in days.","example":7}},"required":["scheduling","backupType","retentionTime"],"additionalProperties":false}},"metadata":{"type":"object","properties":{"labels":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom labels for the workload."},"annotations":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom annotations for the workload as string or object."}},"additionalProperties":false,"description":"Allow setting custom labels and annotations for workloads."},"id":{"type":"string","description":"Identifier for the addon.","example":"example-addon"},"appId":{"type":"string","description":"Full identifier used for deployment","example":"/example-user/default-project/example-addon"},"status":{"type":"string","enum":["preDeployment","triggerAllocation","allocating","postDeployment","running","paused","scaling","upgrading","resetting","backup","restore","failed","error","errorAllocating","deleting","deleted"],"description":"The current state of the addon.","example":"running"},"cluster":{"type":"object","properties":{"id":{"type":"string","description":"The id of the cluster associated with this project.","example":"nf-europe-west"},"name":{"type":"string","description":"The name of the cluster associated with this project.","example":"nf-europe-west"},"namespace":{"type":"string","description":"Namespace this resource is located within on the cluster.","example":"ns-8zy2mcjh9zn2"},"loadBalancers":{"type":"array","items":{"type":"string","example":"lb.659200800000000000000000.northflank.com"},"description":"Load balancer DNS for the cluster."}},"required":["id","name"],"additionalProperties":false,"description":"Cluster information"},"createdAt":{"type":"string","format":"date-time","description":"time of creation"},"updatedAt":{"type":"string","format":"date-time","description":"time of update"}},"required":["name","type","version","billing","id","appId","status","cluster"],"additionalProperties":false,"description":"Native Northflank addons"},{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The name of the addon.","example":"Example Addon"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"A description of the addon.","example":"An addon description"},"stageId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"type":{"type":"string","description":"The identifier for the type of addon. Addon types can be found at the Get Addon Types endpoint.","example":"postgresql"},"infrastructure":{"type":"object","properties":{"architecture":{"type":"string","enum":["x86","arm"]}},"additionalProperties":false},"templateValues":{"type":"object","properties":{},"additionalProperties":false,"description":"The template values to be passed to the templating engine.","example":"{\"replicas\": 2}"},"id":{"type":"string","description":"Identifier for the addon.","example":"example-addon"},"appId":{"type":"string","description":"Full identifier used for deployment","example":"/example-user/default-project/example-addon"},"status":{"type":"string","enum":["preDeployment","triggerAllocation","allocating","postDeployment","running","paused","scaling","upgrading","resetting","backup","restore","failed","error","errorAllocating","deleting","deleted"],"description":"The current state of the addon.","example":"running"},"cluster":{"type":"object","properties":{"id":{"type":"string","description":"The id of the cluster associated with this project.","example":"nf-europe-west"},"name":{"type":"string","description":"The name of the cluster associated with this project.","example":"nf-europe-west"},"namespace":{"type":"string","description":"Namespace this resource is located within on the cluster.","example":"ns-8zy2mcjh9zn2"},"loadBalancers":{"type":"array","items":{"type":"string","example":"lb.659200800000000000000000.northflank.com"},"description":"Load balancer DNS for the cluster."}},"required":["id","name"],"additionalProperties":false,"description":"Cluster information"},"createdAt":{"type":"string","format":"date-time","description":"time of creation"},"updatedAt":{"type":"string","format":"date-time","description":"time of update"}},"required":["name","type","id","appId","status","cluster"],"additionalProperties":false,"description":"Northflank bring your own addon with templating engine"},{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The name of the addon.","example":"Example Addon"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"A description of the addon.","example":"An addon description"},"stageId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"type":{"type":"string","description":"The identifier for the type of addon. Addon types can be found at the Get Addon Types endpoint.","example":"postgresql"},"infrastructure":{"type":"object","properties":{"architecture":{"type":"string","enum":["x86","arm"]}},"additionalProperties":false},"region":{"type":"string","description":"The AWS region identifier for the bucket location.","example":"eu-west-2"},"id":{"type":"string","description":"Identifier for the addon.","example":"example-addon"},"appId":{"type":"string","description":"Full identifier used for deployment","example":"/example-user/default-project/example-addon"},"status":{"type":"string","enum":["preDeployment","triggerAllocation","allocating","postDeployment","running","paused","scaling","upgrading","resetting","backup","restore","failed","error","errorAllocating","deleting","deleted"],"description":"The current state of the addon.","example":"running"},"cluster":{"type":"object","properties":{"id":{"type":"string","description":"The id of the cluster associated with this project.","example":"nf-europe-west"},"name":{"type":"string","description":"The name of the cluster associated with this project.","example":"nf-europe-west"},"namespace":{"type":"string","description":"Namespace this resource is located within on the cluster.","example":"ns-8zy2mcjh9zn2"},"loadBalancers":{"type":"array","items":{"type":"string","example":"lb.659200800000000000000000.northflank.com"},"description":"Load balancer DNS for the cluster."}},"required":["id","name"],"additionalProperties":false,"description":"Cluster information"},"createdAt":{"type":"string","format":"date-time","description":"time of creation"},"updatedAt":{"type":"string","format":"date-time","description":"time of update"}},"required":["name","type","id","appId","status","cluster"],"additionalProperties":false,"description":"Northflank managed bucket addon"}],"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Addons","project"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"anyOf":[{"type":"object","properties":{"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"A description of the addon.","example":"An addon description"},"stageId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"nullable":true},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"version":{"type":"string","description":"The version of the addon type to use. If set to `latest`, the addon will be created with the most recent addon version. If set to a major version appended with `-latest`, e.g. e.g. `14-latest` or `14.5-latest`, the addon will be created with the most recent minor/patch version belonging to that major version.","example":"latest"},"billing":{"type":"object","properties":{"deploymentPlan":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The ID of the deployment plan to use.","example":"nf-compute-20"},"storageClass":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The type of storage. Only configurable if the relevant feature flag is enabled for you account","example":"nvme"},"storage":{"type":"integer","minimum":1,"description":"The size of the addon storage, in megabytes.","example":6144},"replicas":{"type":"integer","minimum":1,"description":"The number of addon replicas to run.","example":1}},"additionalProperties":false},"tlsEnabled":{"type":"boolean","description":"Enables access to the addon via TLS (if supported by the addon type)."},"externalAccessEnabled":{"type":"boolean","description":"Enables external access to the addon via TLS (if supported by the addon type)."},"ipPolicies":{"type":"array","items":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","description":"An IP address used by this rule","example":"127.0.0.1"},"description":"An array of IP addresses used for this rule"},"action":{"type":"string","enum":["ALLOW","DENY"],"description":"The action for this rule.","example":"DENY"}},"required":["addresses","action"],"additionalProperties":false},"description":"An array of IP address policies."},"typeSpecificSettings":{"type":"object","properties":{"redisMaxMemoryPolicy":{"type":"string","enum":["noeviction","allkeys-lru","allkeys-lfu","volatile-lru","volatile-lfu","allkeys-random","volatile-random","volatile-ttl","volatile-lrm","allkeys-lrm"],"description":"Redis only: Key eviction policy at memory pressure."},"redisSentinelEnabled":{"type":"boolean","description":"Redis only: Deploy Redis with Sentinel high availability. Default: false"},"postgresqlWalLevel":{"type":"string","enum":["replica","logical"],"description":"PostgreSQL only: Configure wal_level setting."},"postgresqlSupabaseMode":{"type":"boolean","description":"PostgreSQL only: Enable Supabase mode."},"postgresqlConnectionPoolerEnabled":{"type":"boolean","description":"PostgreSQL only: Run connection pooler in front of postgres instance."},"postgresqlConnectionPoolerReplicas":{"type":"integer","minimum":1,"maximum":3,"description":"PostgreSQL only: Number of connection pooler instances in case connection pooler is enabled."},"postgresqlReadConnectionPoolerEnabled":{"type":"boolean","description":"PostgreSQL only: Run connection pooler in front of read-only postgres instance."},"postgresqlReadConnectionPoolerReplicas":{"type":"integer","minimum":1,"maximum":3,"description":"PostgreSQL only: Number of read-only connection pooler replicas in case read-only connection pooler is enabled."},"postgresqlImportMode":{"type":"boolean","description":"PostgreSQL only: Configure PostgreSQL for higher import speed. Not recommended for production workloads."},"mysqlHaModeEnabled":{"type":"boolean","description":"MySQL only: Run MySQL in HA configuration with auto-failover and connection poolers."},"mysqlRouterReplicas":{"type":"integer","minimum":1,"maximum":8,"description":"MysqlHA only: Number of connection router replicas in case connection router is enabled."}},"additionalProperties":false},"backupSchedules":{"type":"array","items":{"type":"object","properties":{"scheduling":{"type":"object","properties":{"interval":{"type":"string","enum":["hourly","daily","weekly"],"description":"The interval between backups. Each addon can only have one backup schedule of each interval for each backup type.","example":"weekly"},"minute":{"type":"array","items":{"type":"integer","minimum":0,"maximum":59,"description":"A minute when the backup should be performed.","example":30},"uniqueItems":true,"description":"An array of minutes when the backup should be performed."},"hour":{"type":"array","items":{"type":"integer","minimum":0,"maximum":23,"description":"An hour when the backup should be performed, in 24 hour format.","example":18},"uniqueItems":true,"description":"An array of hours in 24 hour format when the backup should be performed. At these hours, a backup will be performed at each of the minutes provided in the `minute` field. Required for `daily` and `weekly` intervals and unavailable for `hourly` intervals."},"day":{"type":"array","items":{"type":"integer","minimum":0,"maximum":6,"description":"A day of the week when the backup should be performed, where `0` represents Monday and `6` represents Sunday.","example":4},"uniqueItems":true,"description":"An array of days of the week when the backup should be performed, where `0` represents Monday and `6` represents Sunday. On these days, a backup will be performed at each of the minutes provided in the `minute` field whenever it is an hour from the `hour` field. Required for `weekly` intervals and unavailable for `hourly` and `daily` intervals."}},"required":["interval","minute"],"additionalProperties":false,"description":"Schedule for the backup."},"backupType":{"type":"string","enum":["dump","snapshot"],"description":"The type of the backup to be performed.","example":"snapshot"},"customDestinationId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"additionalDestinations":{"type":"array","items":{"type":"object","properties":{"destinationId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"Additional custom back up destination that should be used to store the snapshot.","example":"example-backup-destination"},"retentionTime":{"type":"integer","minimum":1,"description":"Retention time of the additional back up in days.","examples":[7,7]},"type":{"type":"string","enum":["custom"],"description":"The type of backup destination to use","example":"custom"}},"required":["destinationId","type"],"additionalProperties":false},"description":"List of destinations for which a backup should be created of this backup. Only applicable for snapshot backups."},"compressionType":{"type":"string","enum":["gz","zstd"],"description":"The compression algorithm of the backup. Only applicable for dump backups. Defaults to `gz`.","example":"gz"},"retentionTime":{"type":"integer","minimum":1,"description":"The time the backup is retained for, in days.","example":7}},"required":["scheduling","backupType","retentionTime"],"additionalProperties":false}},"metadata":{"type":"object","properties":{"labels":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom labels for the workload."},"annotations":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom annotations for the workload as string or object."}},"additionalProperties":false,"description":"Allow setting custom labels and annotations for workloads."}},"additionalProperties":false,"description":"Native Northflank addon"},{"type":"object","properties":{"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"A description of the addon.","example":"An addon description"},"stageId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"nullable":true},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"templateValues":{"type":"object","properties":{},"additionalProperties":false,"description":"The template values to be passed to the templating engine.","example":"{\"replicas\": 2}"}},"additionalProperties":false,"description":"Northflank bring your own addon with templating engine"},{"type":"object","properties":{"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"A description of the addon.","example":"An addon description"},"stageId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"nullable":true},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."}},"additionalProperties":false,"description":"Northflank managed object storage addon"}],"description":"The provisioner type of the addon"}}},"required":true},"x-nf-permission-required":"Project > Addons > General > Update","x-nf-team-scoped":true,"x-nf-cli-command":["patch","addon"]},"v1-projects--projectId--addons--addonId--delete":{"operationId":"deleteProjectsAddonsAddonid","summary":"Delete addon","description":"Deletes the given addon.","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"addonId","type":"string","required":true,"description":"ID of the addon","example":"example-addon","in":"path","schema":{"name":"addonId","type":"string","required":true,"description":"ID of the addon","example":"example-addon","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Addons","project"],"security":[],"x-nf-permission-required":"Project > Addons > General > Delete","x-nf-team-scoped":true,"x-nf-cli-command":["delete","addon"]},"v1-projects--projectId--addons--addonId--delete-team-scoped":{"operationId":"deleteProjectsAddonsAddonid","summary":"Delete addon","description":"Deletes the given addon.","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"addonId","type":"string","required":true,"description":"ID of the addon","example":"example-addon","in":"path","schema":{"name":"addonId","type":"string","required":true,"description":"ID of the addon","example":"example-addon","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Addons","project"],"security":[],"x-nf-permission-required":"Project > Addons > General > Delete","x-nf-team-scoped":true,"x-nf-cli-command":["delete","addon"]},"v1-projects--projectId--addons--addonId--backup-schedules-get":{"operationId":"getProjectsAddonsAddonidBackupSchedules","summary":"Get addon backup schedules","description":"Gets details about an addon's backup schedules","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"addonId","type":"string","required":true,"description":"ID of the addon","example":"example-addon","in":"path","schema":{"name":"addonId","type":"string","required":true,"description":"ID of the addon","example":"example-addon","in":"path"}},{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query","schema":{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query"}},{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query","schema":{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query"}},{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query","schema":{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query"}}],"responses":{"200":{"description":"Details about the given addon's backup schedules.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"schedules":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"ID of the schedule.","example":"62cc20b90956ab62a58e8474"},"backupType":{"type":"string","enum":["dump","snapshot"],"description":"The type of backup being performed.","example":"snapshot"},"backupCompressionType":{"type":"string","enum":["gz","zstd"],"description":"The compression algorithm of the backup. Only applicable for dump backups. Defaults to `gz`.","example":"gz"},"additionalDestinations":{"type":"array","items":{"type":"object","properties":{"destinationId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"Additional custom back up destination that should be used to store the snapshot.","example":"example-backup-destination"},"retentionTime":{"type":"integer","minimum":1,"description":"Retention time of the additional back up in days.","examples":[7,7]},"type":{"type":"string","enum":["custom"],"description":"The type of backup destination to use","example":"custom"}},"required":["destinationId","type"],"additionalProperties":false},"description":"List of destinations for which a backup should be created of this backup. Only applicable for snapshot backups."},"customDestinationId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"Custom backup destination in which the dump back up should be stored.","example":"example-backup-destination"},"scheduling":{"type":"object","properties":{"interval":{"type":"string","enum":["hourly","daily","weekly"],"description":"The interval between backups. Each addon can only have one backup schedule of each interval for each backup type.","example":"weekly"},"minute":{"type":"array","items":{"type":"integer","minimum":0,"maximum":59,"description":"A minute when the backup should be performed.","example":30},"uniqueItems":true,"description":"An array of minutes when the backup should be performed."},"hour":{"type":"array","items":{"type":"integer","minimum":0,"maximum":23,"description":"An hour when the backup should be performed, in 24 hour format.","example":18},"uniqueItems":true,"description":"An array of hours in 24 hour format when the backup should be performed. At these hours, a backup will be performed at each of the minutes provided in the `minute` field. Required for `daily` and `weekly` intervals and unavailable for `hourly` intervals."},"day":{"type":"array","items":{"type":"integer","minimum":0,"maximum":6,"description":"A day of the week when the backup should be performed, where `0` represents Monday and `6` represents Sunday.","example":4},"uniqueItems":true,"description":"An array of days of the week when the backup should be performed, where `0` represents Monday and `6` represents Sunday. On these days, a backup will be performed at each of the minutes provided in the `minute` field whenever it is an hour from the `hour` field. Required for `weekly` intervals and unavailable for `hourly` and `daily` intervals."}},"required":["interval","minute"],"additionalProperties":false,"description":"Information about the scheduling for the backup schedule."},"retentionTime":{"type":"integer","minimum":1,"description":"The time the backup is retained for, in days.","example":7},"createdAt":{"type":"string","format":"date-time","description":"The timestamp the backup schedule was created.","example":"2022-07-11T13:08:09.626Z"},"updatedAt":{"type":"string","format":"date-time","description":"The timestamp the backup schedule was last updated.","example":"2022-07-11T13:08:09.626Z"}},"required":["id","backupType","scheduling","retentionTime","createdAt","updatedAt"],"additionalProperties":false}}},"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Addons","project"],"security":[],"x-nf-permission-required":"Project > Addons > General > Read","x-nf-team-scoped":true,"x-nf-cli-command":["get","addon","backup-schedules"]},"v1-projects--projectId--addons--addonId--backup-schedules-get-team-scoped":{"operationId":"getProjectsAddonsAddonidBackupSchedules","summary":"Get addon backup schedules","description":"Gets details about an addon's backup schedules","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"addonId","type":"string","required":true,"description":"ID of the addon","example":"example-addon","in":"path","schema":{"name":"addonId","type":"string","required":true,"description":"ID of the addon","example":"example-addon","in":"path"}},{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query","schema":{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query"}},{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query","schema":{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query"}},{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query","schema":{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query"}}],"responses":{"200":{"description":"Details about the given addon's backup schedules.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"schedules":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"ID of the schedule.","example":"62cc20b90956ab62a58e8474"},"backupType":{"type":"string","enum":["dump","snapshot"],"description":"The type of backup being performed.","example":"snapshot"},"backupCompressionType":{"type":"string","enum":["gz","zstd"],"description":"The compression algorithm of the backup. Only applicable for dump backups. Defaults to `gz`.","example":"gz"},"additionalDestinations":{"type":"array","items":{"type":"object","properties":{"destinationId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"Additional custom back up destination that should be used to store the snapshot.","example":"example-backup-destination"},"retentionTime":{"type":"integer","minimum":1,"description":"Retention time of the additional back up in days.","examples":[7,7]},"type":{"type":"string","enum":["custom"],"description":"The type of backup destination to use","example":"custom"}},"required":["destinationId","type"],"additionalProperties":false},"description":"List of destinations for which a backup should be created of this backup. Only applicable for snapshot backups."},"customDestinationId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"Custom backup destination in which the dump back up should be stored.","example":"example-backup-destination"},"scheduling":{"type":"object","properties":{"interval":{"type":"string","enum":["hourly","daily","weekly"],"description":"The interval between backups. Each addon can only have one backup schedule of each interval for each backup type.","example":"weekly"},"minute":{"type":"array","items":{"type":"integer","minimum":0,"maximum":59,"description":"A minute when the backup should be performed.","example":30},"uniqueItems":true,"description":"An array of minutes when the backup should be performed."},"hour":{"type":"array","items":{"type":"integer","minimum":0,"maximum":23,"description":"An hour when the backup should be performed, in 24 hour format.","example":18},"uniqueItems":true,"description":"An array of hours in 24 hour format when the backup should be performed. At these hours, a backup will be performed at each of the minutes provided in the `minute` field. Required for `daily` and `weekly` intervals and unavailable for `hourly` intervals."},"day":{"type":"array","items":{"type":"integer","minimum":0,"maximum":6,"description":"A day of the week when the backup should be performed, where `0` represents Monday and `6` represents Sunday.","example":4},"uniqueItems":true,"description":"An array of days of the week when the backup should be performed, where `0` represents Monday and `6` represents Sunday. On these days, a backup will be performed at each of the minutes provided in the `minute` field whenever it is an hour from the `hour` field. Required for `weekly` intervals and unavailable for `hourly` and `daily` intervals."}},"required":["interval","minute"],"additionalProperties":false,"description":"Information about the scheduling for the backup schedule."},"retentionTime":{"type":"integer","minimum":1,"description":"The time the backup is retained for, in days.","example":7},"createdAt":{"type":"string","format":"date-time","description":"The timestamp the backup schedule was created.","example":"2022-07-11T13:08:09.626Z"},"updatedAt":{"type":"string","format":"date-time","description":"The timestamp the backup schedule was last updated.","example":"2022-07-11T13:08:09.626Z"}},"required":["id","backupType","scheduling","retentionTime","createdAt","updatedAt"],"additionalProperties":false}}},"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Addons","project"],"security":[],"x-nf-permission-required":"Project > Addons > General > Read","x-nf-team-scoped":true,"x-nf-cli-command":["get","addon","backup-schedules"]},"v1-projects--projectId--addons--addonId--backup-schedules-post":{"operationId":"postProjectsAddonsAddonidBackupSchedules","summary":"Create addon backup schedule","description":"Create a new backup schedule for an addon.","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"addonId","type":"string","required":true,"description":"ID of the addon","example":"example-addon","in":"path","schema":{"name":"addonId","type":"string","required":true,"description":"ID of the addon","example":"example-addon","in":"path"}}],"responses":{"200":{"description":"Details about the created backup schedule.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","description":"ID of the schedule.","example":"62cc20b90956ab62a58e8474"}},"required":["id"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Addons","project"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"scheduling":{"type":"object","properties":{"interval":{"type":"string","enum":["hourly","daily","weekly"],"description":"The interval between backups. Each addon can only have one backup schedule of each interval for each backup type.","example":"weekly"},"minute":{"type":"array","items":{"type":"integer","minimum":0,"maximum":59,"description":"A minute when the backup should be performed.","example":30},"uniqueItems":true,"description":"An array of minutes when the backup should be performed."},"hour":{"type":"array","items":{"type":"integer","minimum":0,"maximum":23,"description":"An hour when the backup should be performed, in 24 hour format.","example":18},"uniqueItems":true,"description":"An array of hours in 24 hour format when the backup should be performed. At these hours, a backup will be performed at each of the minutes provided in the `minute` field. Required for `daily` and `weekly` intervals and unavailable for `hourly` intervals."},"day":{"type":"array","items":{"type":"integer","minimum":0,"maximum":6,"description":"A day of the week when the backup should be performed, where `0` represents Monday and `6` represents Sunday.","example":4},"uniqueItems":true,"description":"An array of days of the week when the backup should be performed, where `0` represents Monday and `6` represents Sunday. On these days, a backup will be performed at each of the minutes provided in the `minute` field whenever it is an hour from the `hour` field. Required for `weekly` intervals and unavailable for `hourly` and `daily` intervals."}},"required":["interval","minute"],"additionalProperties":false,"description":"Schedule for the backup."},"backupType":{"type":"string","enum":["dump","snapshot"],"description":"The type of the backup to be performed.","example":"snapshot"},"customDestinationId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"additionalDestinations":{"type":"array","items":{"type":"object","properties":{"destinationId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"Additional custom back up destination that should be used to store the snapshot.","example":"example-backup-destination"},"retentionTime":{"type":"integer","minimum":1,"description":"Retention time of the additional back up in days.","examples":[7,7]},"type":{"type":"string","enum":["custom"],"description":"The type of backup destination to use","example":"custom"}},"required":["destinationId","type"],"additionalProperties":false},"description":"List of destinations for which a backup should be created of this backup. Only applicable for snapshot backups."},"compressionType":{"type":"string","enum":["gz","zstd"],"description":"The compression algorithm of the backup. Only applicable for dump backups. Defaults to `gz`.","example":"gz"},"retentionTime":{"type":"integer","minimum":1,"description":"The time the backup is retained for, in days.","example":7}},"required":["scheduling","backupType","retentionTime"],"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Project > Addons > General > Update","x-nf-team-scoped":true,"x-nf-cli-command":["create","addon","backup-schedule"]},"v1-projects--projectId--addons--addonId--backup-schedules-post-team-scoped":{"operationId":"postProjectsAddonsAddonidBackupSchedules","summary":"Create addon backup schedule","description":"Create a new backup schedule for an addon.","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"addonId","type":"string","required":true,"description":"ID of the addon","example":"example-addon","in":"path","schema":{"name":"addonId","type":"string","required":true,"description":"ID of the addon","example":"example-addon","in":"path"}}],"responses":{"200":{"description":"Details about the created backup schedule.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","description":"ID of the schedule.","example":"62cc20b90956ab62a58e8474"}},"required":["id"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Addons","project"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"scheduling":{"type":"object","properties":{"interval":{"type":"string","enum":["hourly","daily","weekly"],"description":"The interval between backups. Each addon can only have one backup schedule of each interval for each backup type.","example":"weekly"},"minute":{"type":"array","items":{"type":"integer","minimum":0,"maximum":59,"description":"A minute when the backup should be performed.","example":30},"uniqueItems":true,"description":"An array of minutes when the backup should be performed."},"hour":{"type":"array","items":{"type":"integer","minimum":0,"maximum":23,"description":"An hour when the backup should be performed, in 24 hour format.","example":18},"uniqueItems":true,"description":"An array of hours in 24 hour format when the backup should be performed. At these hours, a backup will be performed at each of the minutes provided in the `minute` field. Required for `daily` and `weekly` intervals and unavailable for `hourly` intervals."},"day":{"type":"array","items":{"type":"integer","minimum":0,"maximum":6,"description":"A day of the week when the backup should be performed, where `0` represents Monday and `6` represents Sunday.","example":4},"uniqueItems":true,"description":"An array of days of the week when the backup should be performed, where `0` represents Monday and `6` represents Sunday. On these days, a backup will be performed at each of the minutes provided in the `minute` field whenever it is an hour from the `hour` field. Required for `weekly` intervals and unavailable for `hourly` and `daily` intervals."}},"required":["interval","minute"],"additionalProperties":false,"description":"Schedule for the backup."},"backupType":{"type":"string","enum":["dump","snapshot"],"description":"The type of the backup to be performed.","example":"snapshot"},"customDestinationId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"additionalDestinations":{"type":"array","items":{"type":"object","properties":{"destinationId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"Additional custom back up destination that should be used to store the snapshot.","example":"example-backup-destination"},"retentionTime":{"type":"integer","minimum":1,"description":"Retention time of the additional back up in days.","examples":[7,7]},"type":{"type":"string","enum":["custom"],"description":"The type of backup destination to use","example":"custom"}},"required":["destinationId","type"],"additionalProperties":false},"description":"List of destinations for which a backup should be created of this backup. Only applicable for snapshot backups."},"compressionType":{"type":"string","enum":["gz","zstd"],"description":"The compression algorithm of the backup. Only applicable for dump backups. Defaults to `gz`.","example":"gz"},"retentionTime":{"type":"integer","minimum":1,"description":"The time the backup is retained for, in days.","example":7}},"required":["scheduling","backupType","retentionTime"],"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Project > Addons > General > Update","x-nf-team-scoped":true,"x-nf-cli-command":["create","addon","backup-schedule"]},"v1-projects--projectId--addons--addonId--backup-schedules--scheduleId--delete":{"operationId":"deleteProjectsAddonsAddonidBackupSchedulesScheduleid","summary":"Delete addon backup schedule","description":"Deletes a backup schedule for an addon.","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"addonId","type":"string","required":true,"description":"ID of the addon","example":"example-addon","in":"path","schema":{"name":"addonId","type":"string","required":true,"description":"ID of the addon","example":"example-addon","in":"path"}},{"name":"scheduleId","type":"string","required":true,"description":"ID of the backup schedule","example":"62d5729ab8593e3e33b65105","in":"path","schema":{"name":"scheduleId","type":"string","required":true,"description":"ID of the backup schedule","example":"62d5729ab8593e3e33b65105","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Addons","project"],"security":[],"x-nf-permission-required":"Project > Addons > General > Update","x-nf-team-scoped":true,"x-nf-cli-command":["delete","addon","backup-schedule"]},"v1-projects--projectId--addons--addonId--backup-schedules--scheduleId--delete-team-scoped":{"operationId":"deleteProjectsAddonsAddonidBackupSchedulesScheduleid","summary":"Delete addon backup schedule","description":"Deletes a backup schedule for an addon.","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"addonId","type":"string","required":true,"description":"ID of the addon","example":"example-addon","in":"path","schema":{"name":"addonId","type":"string","required":true,"description":"ID of the addon","example":"example-addon","in":"path"}},{"name":"scheduleId","type":"string","required":true,"description":"ID of the backup schedule","example":"62d5729ab8593e3e33b65105","in":"path","schema":{"name":"scheduleId","type":"string","required":true,"description":"ID of the backup schedule","example":"62d5729ab8593e3e33b65105","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Addons","project"],"security":[],"x-nf-permission-required":"Project > Addons > General > Update","x-nf-team-scoped":true,"x-nf-cli-command":["delete","addon","backup-schedule"]},"v1-projects--projectId--addons--addonId--backups-get":{"operationId":"getProjectsAddonsAddonidBackups","summary":"List addon backups","description":"Returns a list of backups for the given addon.","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"addonId","type":"string","required":true,"description":"ID of the addon","example":"example-addon","in":"path","schema":{"name":"addonId","type":"string","required":true,"description":"ID of the addon","example":"example-addon","in":"path"}},{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query","schema":{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query"}},{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query","schema":{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query"}},{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query","schema":{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query"}}],"responses":{"200":{"description":"A list of backups for the addon.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"backups":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"The identifier for the backup.","example":"example-backup"},"name":{"type":"string","description":"The name of the backup.","example":"Example Backup"},"uid":{"type":"string","description":"The unique id of the backup.","example":"88283b31-06f3-4857-b75f-f807bd7a52af"},"status":{"type":"string","enum":["scheduled","in-progress","completed","aborting","aborted","failed","not-supported"],"description":"The current status of the backup.","example":"completed"},"createdAt":{"type":"string","description":"The time the backup was initiated.","example":"2021-01-20T11:19:53.175Z"},"completedAt":{"type":"string","description":"The time the backup was completed.","example":"2021-01-20T11:19:54.494Z"},"config":{"type":"object","properties":{"source":{"type":"object","properties":{"type":{"type":"string","enum":["fileUpload","liveInstance","snapshot","externalDump","sameAddon"],"description":"The type of backup.","example":"snapshot"}},"additionalProperties":false,"description":"Data about the source of the backup."},"size":{"type":"string","description":"The size of the backup, in bytes","example":"1234"},"compressionType":{"type":"string","enum":["gz","zstd"],"description":"The compression algorithm of the backup. Only applicable for dump backups. Defaults to `gz`.","example":"gz"},"additionalDestinations":{"type":"array","items":{"type":"object","properties":{"destinationId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"Additional custom back up destination that should be used to store the snapshot.","example":"example-backup-destination"},"retentionTime":{"type":"integer","minimum":1,"description":"Retention time of the additional back up in days.","examples":[7,7]},"type":{"type":"string","enum":["custom"],"description":"The type of backup destination to use","example":"custom"}},"required":["destinationId","type"],"additionalProperties":false},"description":"List of destinations for which a backup should be created of this backup. Only applicable for snapshot backups."},"addonVersion":{"type":"string","description":"The version of the addon at the time of the backup. If the backup type is `snapshot`, the addon will be restored to this version when the backup is restored.","example":"4.4.8"}},"required":["size"],"additionalProperties":false,"description":"Data about the backup configuration."},"customDestinationId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"Custom backup destination in which the dump back up should be stored.","example":"example-backup-destination"}},"required":["id","name","uid","status","createdAt","completedAt","config"],"additionalProperties":false,"description":"Data about a backup."},"description":"A list of backups for the given addon."}},"required":["backups"],"additionalProperties":false,"description":"Result data."},"pagination":{"type":"object","properties":{"hasNextPage":{"type":"boolean","description":"Is there another page of results available?","example":false},"cursor":{"type":"string","description":"The cursor to access the next page of results."},"count":{"type":"number","format":"float","description":"The number of results returned by this request.","example":1}},"required":["hasNextPage","count"],"additionalProperties":false,"description":"Data about the endpoint pagination."}},"required":["data","pagination"],"additionalProperties":false,"description":"Response object."}}},"tags":["Addons","project"],"security":[],"x-nf-permission-required":"Project > Addons > General > Read","x-nf-team-scoped":true,"x-nf-cli-command":["get","addon","backups"]},"v1-projects--projectId--addons--addonId--backups-get-team-scoped":{"operationId":"getProjectsAddonsAddonidBackups","summary":"List addon backups","description":"Returns a list of backups for the given addon.","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"addonId","type":"string","required":true,"description":"ID of the addon","example":"example-addon","in":"path","schema":{"name":"addonId","type":"string","required":true,"description":"ID of the addon","example":"example-addon","in":"path"}},{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query","schema":{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query"}},{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query","schema":{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query"}},{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query","schema":{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query"}}],"responses":{"200":{"description":"A list of backups for the addon.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"backups":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"The identifier for the backup.","example":"example-backup"},"name":{"type":"string","description":"The name of the backup.","example":"Example Backup"},"uid":{"type":"string","description":"The unique id of the backup.","example":"88283b31-06f3-4857-b75f-f807bd7a52af"},"status":{"type":"string","enum":["scheduled","in-progress","completed","aborting","aborted","failed","not-supported"],"description":"The current status of the backup.","example":"completed"},"createdAt":{"type":"string","description":"The time the backup was initiated.","example":"2021-01-20T11:19:53.175Z"},"completedAt":{"type":"string","description":"The time the backup was completed.","example":"2021-01-20T11:19:54.494Z"},"config":{"type":"object","properties":{"source":{"type":"object","properties":{"type":{"type":"string","enum":["fileUpload","liveInstance","snapshot","externalDump","sameAddon"],"description":"The type of backup.","example":"snapshot"}},"additionalProperties":false,"description":"Data about the source of the backup."},"size":{"type":"string","description":"The size of the backup, in bytes","example":"1234"},"compressionType":{"type":"string","enum":["gz","zstd"],"description":"The compression algorithm of the backup. Only applicable for dump backups. Defaults to `gz`.","example":"gz"},"additionalDestinations":{"type":"array","items":{"type":"object","properties":{"destinationId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"Additional custom back up destination that should be used to store the snapshot.","example":"example-backup-destination"},"retentionTime":{"type":"integer","minimum":1,"description":"Retention time of the additional back up in days.","examples":[7,7]},"type":{"type":"string","enum":["custom"],"description":"The type of backup destination to use","example":"custom"}},"required":["destinationId","type"],"additionalProperties":false},"description":"List of destinations for which a backup should be created of this backup. Only applicable for snapshot backups."},"addonVersion":{"type":"string","description":"The version of the addon at the time of the backup. If the backup type is `snapshot`, the addon will be restored to this version when the backup is restored.","example":"4.4.8"}},"required":["size"],"additionalProperties":false,"description":"Data about the backup configuration."},"customDestinationId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"Custom backup destination in which the dump back up should be stored.","example":"example-backup-destination"}},"required":["id","name","uid","status","createdAt","completedAt","config"],"additionalProperties":false,"description":"Data about a backup."},"description":"A list of backups for the given addon."}},"required":["backups"],"additionalProperties":false,"description":"Result data."},"pagination":{"type":"object","properties":{"hasNextPage":{"type":"boolean","description":"Is there another page of results available?","example":false},"cursor":{"type":"string","description":"The cursor to access the next page of results."},"count":{"type":"number","format":"float","description":"The number of results returned by this request.","example":1}},"required":["hasNextPage","count"],"additionalProperties":false,"description":"Data about the endpoint pagination."}},"required":["data","pagination"],"additionalProperties":false,"description":"Response object."}}},"tags":["Addons","project"],"security":[],"x-nf-permission-required":"Project > Addons > General > Read","x-nf-team-scoped":true,"x-nf-cli-command":["get","addon","backups"]},"v1-projects--projectId--addons--addonId--backups-post":{"operationId":"postProjectsAddonsAddonidBackups","summary":"Backup addon","description":"Initiates a backup for the given addon","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"addonId","type":"string","required":true,"description":"ID of the addon","example":"example-addon","in":"path","schema":{"name":"addonId","type":"string","required":true,"description":"ID of the addon","example":"example-addon","in":"path"}}],"responses":{"200":{"description":"Details about the newly created backup.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","description":"The identifier for the backup.","example":"example-backup"},"name":{"type":"string","description":"The name of the backup.","example":"Example Backup"},"uid":{"type":"string","description":"The unique id of the backup.","example":"88283b31-06f3-4857-b75f-f807bd7a52af"},"status":{"type":"string","enum":["scheduled","in-progress","completed","aborting","aborted","failed","not-supported"],"description":"The current status of the backup.","example":"completed"},"createdAt":{"type":"string","description":"The time the backup was initiated.","example":"2021-01-20T11:19:53.175Z"},"completedAt":{"type":"string","description":"The time the backup was completed.","example":"2021-01-20T11:19:54.494Z"},"config":{"type":"object","properties":{"source":{"type":"object","properties":{"type":{"type":"string","enum":["fileUpload","liveInstance","snapshot","externalDump","sameAddon"],"description":"The type of backup.","example":"snapshot"}},"additionalProperties":false,"description":"Data about the source of the backup."},"size":{"type":"string","description":"The size of the backup, in bytes","example":"1234"},"addonVersion":{"type":"string","description":"The version of the addon at the time of the backup. If the backup type is `snapshot`, the addon will be restored to this version when the backup is restored.","example":"4.4.8"}},"required":["size"],"additionalProperties":false,"description":"Data about the backup configuration."},"lastRestore":{"type":"object","properties":{"restoreTimestamp":{"type":"string","format":"date-time","description":"The time the backup was initiated.","example":"2021-01-20T11:19:54.494Z"},"status":{"type":"string","enum":["scheduled","in-progress","completed","aborting","aborted","failed","not-supported"],"description":"The current status of the restore.","example":"completed"},"completedAt":{"type":"string","format":"date-time","description":"The time the restore was completed.","example":"2021-01-20T11:19:54.494Z"}},"required":["restoreTimestamp","status"],"additionalProperties":false,"description":"Details about the most recent restore of this backup."}},"required":["id","name","uid","status","createdAt","config"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Addons","project"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z0-9]+((-|\\s|\\/|:)[a-zA-Z0-9]+)*$","minLength":3,"maxLength":39,"description":"The name of the backup. If not provided, a default name will be generated containing the current date.","example":"Example Backup"},"backupType":{"type":"string","enum":["dump","snapshot"],"description":"The type of backup to perform. Defaults to `snapshot`.","example":"snapshot","default":"snapshot"},"compressionType":{"type":"string","enum":["gz","zstd"],"description":"The compression algorithm of the backup. Only applicable for dump backups. Defaults to `gz`.","example":"gz"},"customDestinationId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"Custom destination to store the backup in. Only applicable for dump backups. If not specified, backup is stored in Northflank-managed destination."},"additionalDestinations":{"type":"array","items":{"type":"object","properties":{"destinationId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"Additional custom back up destination that should be used to store the snapshot.","example":"example-backup-destination"},"retentionTime":{"type":"integer","minimum":1,"description":"Retention time of the additional back up in days.","examples":[7,7]},"type":{"type":"string","enum":["custom"],"description":"The type of backup destination to use","example":"custom"}},"required":["destinationId","type"],"additionalProperties":false},"description":"List of destinations for which a backup should additionally be created. Only applicable for snapshot backups."}},"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Project > Addons > General > Update","x-nf-team-scoped":true,"x-nf-cli-command":["backup","addon"]},"v1-projects--projectId--addons--addonId--backups-post-team-scoped":{"operationId":"postProjectsAddonsAddonidBackups","summary":"Backup addon","description":"Initiates a backup for the given addon","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"addonId","type":"string","required":true,"description":"ID of the addon","example":"example-addon","in":"path","schema":{"name":"addonId","type":"string","required":true,"description":"ID of the addon","example":"example-addon","in":"path"}}],"responses":{"200":{"description":"Details about the newly created backup.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","description":"The identifier for the backup.","example":"example-backup"},"name":{"type":"string","description":"The name of the backup.","example":"Example Backup"},"uid":{"type":"string","description":"The unique id of the backup.","example":"88283b31-06f3-4857-b75f-f807bd7a52af"},"status":{"type":"string","enum":["scheduled","in-progress","completed","aborting","aborted","failed","not-supported"],"description":"The current status of the backup.","example":"completed"},"createdAt":{"type":"string","description":"The time the backup was initiated.","example":"2021-01-20T11:19:53.175Z"},"completedAt":{"type":"string","description":"The time the backup was completed.","example":"2021-01-20T11:19:54.494Z"},"config":{"type":"object","properties":{"source":{"type":"object","properties":{"type":{"type":"string","enum":["fileUpload","liveInstance","snapshot","externalDump","sameAddon"],"description":"The type of backup.","example":"snapshot"}},"additionalProperties":false,"description":"Data about the source of the backup."},"size":{"type":"string","description":"The size of the backup, in bytes","example":"1234"},"addonVersion":{"type":"string","description":"The version of the addon at the time of the backup. If the backup type is `snapshot`, the addon will be restored to this version when the backup is restored.","example":"4.4.8"}},"required":["size"],"additionalProperties":false,"description":"Data about the backup configuration."},"lastRestore":{"type":"object","properties":{"restoreTimestamp":{"type":"string","format":"date-time","description":"The time the backup was initiated.","example":"2021-01-20T11:19:54.494Z"},"status":{"type":"string","enum":["scheduled","in-progress","completed","aborting","aborted","failed","not-supported"],"description":"The current status of the restore.","example":"completed"},"completedAt":{"type":"string","format":"date-time","description":"The time the restore was completed.","example":"2021-01-20T11:19:54.494Z"}},"required":["restoreTimestamp","status"],"additionalProperties":false,"description":"Details about the most recent restore of this backup."}},"required":["id","name","uid","status","createdAt","config"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Addons","project"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z0-9]+((-|\\s|\\/|:)[a-zA-Z0-9]+)*$","minLength":3,"maxLength":39,"description":"The name of the backup. If not provided, a default name will be generated containing the current date.","example":"Example Backup"},"backupType":{"type":"string","enum":["dump","snapshot"],"description":"The type of backup to perform. Defaults to `snapshot`.","example":"snapshot","default":"snapshot"},"compressionType":{"type":"string","enum":["gz","zstd"],"description":"The compression algorithm of the backup. Only applicable for dump backups. Defaults to `gz`.","example":"gz"},"customDestinationId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"Custom destination to store the backup in. Only applicable for dump backups. If not specified, backup is stored in Northflank-managed destination."},"additionalDestinations":{"type":"array","items":{"type":"object","properties":{"destinationId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"Additional custom back up destination that should be used to store the snapshot.","example":"example-backup-destination"},"retentionTime":{"type":"integer","minimum":1,"description":"Retention time of the additional back up in days.","examples":[7,7]},"type":{"type":"string","enum":["custom"],"description":"The type of backup destination to use","example":"custom"}},"required":["destinationId","type"],"additionalProperties":false},"description":"List of destinations for which a backup should additionally be created. Only applicable for snapshot backups."}},"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Project > Addons > General > Update","x-nf-team-scoped":true,"x-nf-cli-command":["backup","addon"]},"v1-projects--projectId--addons--addonId--backups--backupId--get":{"operationId":"getProjectsAddonsAddonidBackupsBackupid","summary":"Get addon backup","description":"Gets details about a given backup.","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"addonId","type":"string","required":true,"description":"ID of the addon","example":"example-addon","in":"path","schema":{"name":"addonId","type":"string","required":true,"description":"ID of the addon","example":"example-addon","in":"path"}},{"name":"backupId","type":"string","required":true,"description":"ID of the backup","example":"example-backup","in":"path","schema":{"name":"backupId","type":"string","required":true,"description":"ID of the backup","example":"example-backup","in":"path"}}],"responses":{"200":{"description":"Details about the given backup.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","description":"The identifier for the backup.","example":"example-backup"},"name":{"type":"string","description":"The name of the backup.","example":"Example Backup"},"uid":{"type":"string","description":"The unique id of the backup.","example":"88283b31-06f3-4857-b75f-f807bd7a52af"},"status":{"type":"string","enum":["scheduled","in-progress","completed","aborting","aborted","failed","not-supported"],"description":"The current status of the backup.","example":"completed"},"createdAt":{"type":"string","description":"The time the backup was initiated.","example":"2021-01-20T11:19:53.175Z"},"completedAt":{"type":"string","description":"The time the backup was completed.","example":"2021-01-20T11:19:54.494Z"},"config":{"type":"object","properties":{"source":{"type":"object","properties":{"type":{"type":"string","enum":["fileUpload","liveInstance","snapshot","externalDump","sameAddon"],"description":"The type of backup.","example":"snapshot"}},"additionalProperties":false,"description":"Data about the source of the backup."},"size":{"type":"string","description":"The size of the backup, in bytes","example":"1234"},"addonVersion":{"type":"string","description":"The version of the addon at the time of the backup. If the backup type is `snapshot`, the addon will be restored to this version when the backup is restored.","example":"4.4.8"}},"required":["size"],"additionalProperties":false,"description":"Data about the backup configuration."},"lastRestore":{"type":"object","properties":{"restoreTimestamp":{"type":"string","format":"date-time","description":"The time the backup was initiated.","example":"2021-01-20T11:19:54.494Z"},"status":{"type":"string","enum":["scheduled","in-progress","completed","aborting","aborted","failed","not-supported"],"description":"The current status of the restore.","example":"completed"},"completedAt":{"type":"string","format":"date-time","description":"The time the restore was completed.","example":"2021-01-20T11:19:54.494Z"}},"required":["restoreTimestamp","status"],"additionalProperties":false,"description":"Details about the most recent restore of this backup."}},"required":["id","name","uid","status","createdAt","config"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Addons","project"],"security":[],"x-nf-permission-required":"Project > Addons > General > Read","x-nf-team-scoped":true,"x-nf-cli-command":["get","addon","backup"]},"v1-projects--projectId--addons--addonId--backups--backupId--get-team-scoped":{"operationId":"getProjectsAddonsAddonidBackupsBackupid","summary":"Get addon backup","description":"Gets details about a given backup.","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"addonId","type":"string","required":true,"description":"ID of the addon","example":"example-addon","in":"path","schema":{"name":"addonId","type":"string","required":true,"description":"ID of the addon","example":"example-addon","in":"path"}},{"name":"backupId","type":"string","required":true,"description":"ID of the backup","example":"example-backup","in":"path","schema":{"name":"backupId","type":"string","required":true,"description":"ID of the backup","example":"example-backup","in":"path"}}],"responses":{"200":{"description":"Details about the given backup.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","description":"The identifier for the backup.","example":"example-backup"},"name":{"type":"string","description":"The name of the backup.","example":"Example Backup"},"uid":{"type":"string","description":"The unique id of the backup.","example":"88283b31-06f3-4857-b75f-f807bd7a52af"},"status":{"type":"string","enum":["scheduled","in-progress","completed","aborting","aborted","failed","not-supported"],"description":"The current status of the backup.","example":"completed"},"createdAt":{"type":"string","description":"The time the backup was initiated.","example":"2021-01-20T11:19:53.175Z"},"completedAt":{"type":"string","description":"The time the backup was completed.","example":"2021-01-20T11:19:54.494Z"},"config":{"type":"object","properties":{"source":{"type":"object","properties":{"type":{"type":"string","enum":["fileUpload","liveInstance","snapshot","externalDump","sameAddon"],"description":"The type of backup.","example":"snapshot"}},"additionalProperties":false,"description":"Data about the source of the backup."},"size":{"type":"string","description":"The size of the backup, in bytes","example":"1234"},"addonVersion":{"type":"string","description":"The version of the addon at the time of the backup. If the backup type is `snapshot`, the addon will be restored to this version when the backup is restored.","example":"4.4.8"}},"required":["size"],"additionalProperties":false,"description":"Data about the backup configuration."},"lastRestore":{"type":"object","properties":{"restoreTimestamp":{"type":"string","format":"date-time","description":"The time the backup was initiated.","example":"2021-01-20T11:19:54.494Z"},"status":{"type":"string","enum":["scheduled","in-progress","completed","aborting","aborted","failed","not-supported"],"description":"The current status of the restore.","example":"completed"},"completedAt":{"type":"string","format":"date-time","description":"The time the restore was completed.","example":"2021-01-20T11:19:54.494Z"}},"required":["restoreTimestamp","status"],"additionalProperties":false,"description":"Details about the most recent restore of this backup."}},"required":["id","name","uid","status","createdAt","config"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Addons","project"],"security":[],"x-nf-permission-required":"Project > Addons > General > Read","x-nf-team-scoped":true,"x-nf-cli-command":["get","addon","backup"]},"v1-projects--projectId--addons--addonId--backups--backupId--delete":{"operationId":"deleteProjectsAddonsAddonidBackupsBackupid","summary":"Delete addon backup","description":"Deletes a given backup","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"addonId","type":"string","required":true,"description":"ID of the addon","example":"example-addon","in":"path","schema":{"name":"addonId","type":"string","required":true,"description":"ID of the addon","example":"example-addon","in":"path"}},{"name":"backupId","type":"string","required":true,"description":"ID of the backup","example":"example-backup","in":"path","schema":{"name":"backupId","type":"string","required":true,"description":"ID of the backup","example":"example-backup","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Addons","project"],"security":[],"x-nf-permission-required":"Project > Addons > General > Update","x-nf-team-scoped":true,"x-nf-cli-command":["delete","backup"]},"v1-projects--projectId--addons--addonId--backups--backupId--delete-team-scoped":{"operationId":"deleteProjectsAddonsAddonidBackupsBackupid","summary":"Delete addon backup","description":"Deletes a given backup","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"addonId","type":"string","required":true,"description":"ID of the addon","example":"example-addon","in":"path","schema":{"name":"addonId","type":"string","required":true,"description":"ID of the addon","example":"example-addon","in":"path"}},{"name":"backupId","type":"string","required":true,"description":"ID of the backup","example":"example-backup","in":"path","schema":{"name":"backupId","type":"string","required":true,"description":"ID of the backup","example":"example-backup","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Addons","project"],"security":[],"x-nf-permission-required":"Project > Addons > General > Update","x-nf-team-scoped":true,"x-nf-cli-command":["delete","backup"]},"v1-projects--projectId--addons--addonId--backups--backupId--abort-post":{"operationId":"postProjectsAddonsAddonidBackupsBackupidAbort","summary":"Abort backup","description":"Aborts the in progress backup.","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"addonId","type":"string","required":true,"description":"ID of the addon","example":"example-addon","in":"path","schema":{"name":"addonId","type":"string","required":true,"description":"ID of the addon","example":"example-addon","in":"path"}},{"name":"backupId","type":"string","required":true,"description":"ID of the backup","example":"example-backup","in":"path","schema":{"name":"backupId","type":"string","required":true,"description":"ID of the backup","example":"example-backup","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Addons","project"],"security":[],"x-nf-permission-required":"Project > Addons > General > Update","x-nf-team-scoped":true,"x-nf-cli-command":["abort","addon","backup"]},"v1-projects--projectId--addons--addonId--backups--backupId--abort-post-team-scoped":{"operationId":"postProjectsAddonsAddonidBackupsBackupidAbort","summary":"Abort backup","description":"Aborts the in progress backup.","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"addonId","type":"string","required":true,"description":"ID of the addon","example":"example-addon","in":"path","schema":{"name":"addonId","type":"string","required":true,"description":"ID of the addon","example":"example-addon","in":"path"}},{"name":"backupId","type":"string","required":true,"description":"ID of the backup","example":"example-backup","in":"path","schema":{"name":"backupId","type":"string","required":true,"description":"ID of the backup","example":"example-backup","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Addons","project"],"security":[],"x-nf-permission-required":"Project > Addons > General > Update","x-nf-team-scoped":true,"x-nf-cli-command":["abort","addon","backup"]},"v1-projects--projectId--addons--addonId--backups--backupId--abort-restore-post":{"operationId":"postProjectsAddonsAddonidBackupsBackupidAbortRestore","summary":"Abort backup restore","description":"Aborts an in-progress backup restore.","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"addonId","type":"string","required":true,"description":"ID of the addon","example":"example-addon","in":"path","schema":{"name":"addonId","type":"string","required":true,"description":"ID of the addon","example":"example-addon","in":"path"}},{"name":"backupId","type":"string","required":true,"description":"ID of the backup","example":"example-backup","in":"path","schema":{"name":"backupId","type":"string","required":true,"description":"ID of the backup","example":"example-backup","in":"path"}},{"name":"sourceProjectId","type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":54,"description":"Specify the source projectId when referring to a global backup.","in":"query","schema":{"name":"sourceProjectId","type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":54,"description":"Specify the source projectId when referring to a global backup.","in":"query"}},{"name":"sourceAddonId","type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":54,"description":"Specify the source addonId when referring to a global backup.","in":"query","schema":{"name":"sourceAddonId","type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":54,"description":"Specify the source addonId when referring to a global backup.","in":"query"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Addons","project"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"restoreId":{"type":"string","description":"ID of the restore to abort.","example":"66845073ce75649ad18635f0"}},"required":["restoreId"],"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Project > Addons > General > Update","x-nf-team-scoped":true,"x-nf-cli-command":["abort","addon","restore"]},"v1-projects--projectId--addons--addonId--backups--backupId--abort-restore-post-team-scoped":{"operationId":"postProjectsAddonsAddonidBackupsBackupidAbortRestore","summary":"Abort backup restore","description":"Aborts an in-progress backup restore.","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"addonId","type":"string","required":true,"description":"ID of the addon","example":"example-addon","in":"path","schema":{"name":"addonId","type":"string","required":true,"description":"ID of the addon","example":"example-addon","in":"path"}},{"name":"backupId","type":"string","required":true,"description":"ID of the backup","example":"example-backup","in":"path","schema":{"name":"backupId","type":"string","required":true,"description":"ID of the backup","example":"example-backup","in":"path"}},{"name":"sourceProjectId","type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":54,"description":"Specify the source projectId when referring to a global backup.","in":"query","schema":{"name":"sourceProjectId","type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":54,"description":"Specify the source projectId when referring to a global backup.","in":"query"}},{"name":"sourceAddonId","type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":54,"description":"Specify the source addonId when referring to a global backup.","in":"query","schema":{"name":"sourceAddonId","type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":54,"description":"Specify the source addonId when referring to a global backup.","in":"query"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Addons","project"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"restoreId":{"type":"string","description":"ID of the restore to abort.","example":"66845073ce75649ad18635f0"}},"required":["restoreId"],"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Project > Addons > General > Update","x-nf-team-scoped":true,"x-nf-cli-command":["abort","addon","restore"]},"v1-projects--projectId--addons--addonId--backups--backupId--download-link-get":{"operationId":"getProjectsAddonsAddonidBackupsBackupidDownloadLink","summary":"Get backup download link","description":"Generates a temporary download link for downloading the given backup.","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"addonId","type":"string","required":true,"description":"ID of the addon","example":"example-addon","in":"path","schema":{"name":"addonId","type":"string","required":true,"description":"ID of the addon","example":"example-addon","in":"path"}},{"name":"backupId","type":"string","required":true,"description":"ID of the backup","example":"example-backup","in":"path","schema":{"name":"backupId","type":"string","required":true,"description":"ID of the backup","example":"example-backup","in":"path"}}],"responses":{"200":{"description":"A download link to the given backup.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"downloadLink":{"type":"string","description":"The url to download the backup from.","example":"https://storage.googleapis.com/..."}},"required":["downloadLink"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Addons","project"],"security":[],"x-nf-permission-required":"Project > Addons > General > Read","x-nf-team-scoped":true,"x-nf-cli-command":["get","addon","backup","download"]},"v1-projects--projectId--addons--addonId--backups--backupId--download-link-get-team-scoped":{"operationId":"getProjectsAddonsAddonidBackupsBackupidDownloadLink","summary":"Get backup download link","description":"Generates a temporary download link for downloading the given backup.","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"addonId","type":"string","required":true,"description":"ID of the addon","example":"example-addon","in":"path","schema":{"name":"addonId","type":"string","required":true,"description":"ID of the addon","example":"example-addon","in":"path"}},{"name":"backupId","type":"string","required":true,"description":"ID of the backup","example":"example-backup","in":"path","schema":{"name":"backupId","type":"string","required":true,"description":"ID of the backup","example":"example-backup","in":"path"}}],"responses":{"200":{"description":"A download link to the given backup.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"downloadLink":{"type":"string","description":"The url to download the backup from.","example":"https://storage.googleapis.com/..."}},"required":["downloadLink"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Addons","project"],"security":[],"x-nf-permission-required":"Project > Addons > General > Read","x-nf-team-scoped":true,"x-nf-cli-command":["get","addon","backup","download"]},"v1-projects--projectId--addons--addonId--backups--backupId--logs-get":{"operationId":"getProjectsAddonsAddonidBackupsBackupidLogs","summary":"Get addon backup logs","description":"Get logs for an addon backup","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"addonId","type":"string","required":true,"description":"ID of the addon","example":"example-addon","in":"path","schema":{"name":"addonId","type":"string","required":true,"description":"ID of the addon","example":"example-addon","in":"path"}},{"name":"backupId","type":"string","required":true,"description":"ID of the backup","example":"example-backup-123","in":"path","schema":{"name":"backupId","type":"string","required":true,"description":"ID of the backup","example":"example-backup-123","in":"path"}},{"name":"containerName","type":"string","minLength":3,"maxLength":64,"description":"Limits logs to a specific container.","example":"my-container-67d6d748c5-kgvwh","default":"all","in":"query","schema":{"name":"containerName","type":"string","minLength":3,"maxLength":64,"description":"Limits logs to a specific container.","example":"my-container-67d6d748c5-kgvwh","default":"all","in":"query"}},{"name":"queryType","type":"string","enum":["range"],"description":"`range` selects a log range and returns immediately.","example":"range","default":"range","in":"query","schema":{"name":"queryType","type":"string","enum":["range"],"description":"`range` selects a log range and returns immediately.","example":"range","default":"range","in":"query"}},{"name":"startTime","type":"string","format":"date-time","description":"Fetch logs generated after this timestamp.","example":"2023-02-16T14:00:00.000Z","in":"query","schema":{"name":"startTime","type":"string","format":"date-time","description":"Fetch logs generated after this timestamp.","example":"2023-02-16T14:00:00.000Z","in":"query"}},{"name":"endTime","type":"string","format":"date-time","description":"Fetch logs generated before this timestamp.","example":"2023-02-16T15:00:00.000Z","in":"query","schema":{"name":"endTime","type":"string","format":"date-time","description":"Fetch logs generated before this timestamp.","example":"2023-02-16T15:00:00.000Z","in":"query"}},{"name":"duration","type":"integer","description":"Range duration in seconds. If set, only one of `startTime` or `endTime` can be set.","example":600,"in":"query","schema":{"name":"duration","type":"integer","description":"Range duration in seconds. If set, only one of `startTime` or `endTime` can be set.","example":600,"in":"query"}},{"name":"lineLimit","type":"number","format":"float","minimum":0,"maximum":1000,"description":"Number of log lines to fetch.","example":250,"in":"query","schema":{"name":"lineLimit","type":"number","format":"float","minimum":0,"maximum":1000,"description":"Number of log lines to fetch.","example":250,"in":"query"}},{"name":"direction","type":"string","enum":["backward","forward"],"description":"Ordering of log lines","example":"backward","default":"backward","in":"query","schema":{"name":"direction","type":"string","enum":["backward","forward"],"description":"Ordering of log lines","example":"backward","default":"backward","in":"query"}},{"name":"textIncludes","type":"string","minLength":1,"maxLength":100,"description":"Filter log lines to match this search string","example":"myvalue","in":"query","schema":{"name":"textIncludes","type":"string","minLength":1,"maxLength":100,"description":"Filter log lines to match this search string","example":"myvalue","in":"query"}},{"name":"textNotIncludes","type":"string","minLength":1,"maxLength":100,"description":"Filter log lines to not match this search string","example":"myvalue","in":"query","schema":{"name":"textNotIncludes","type":"string","minLength":1,"maxLength":100,"description":"Filter log lines to not match this search string","example":"myvalue","in":"query"}},{"name":"regexIncludes","type":"string","minLength":1,"maxLength":100,"description":"Filter log lines to match this regular expression","example":"my.*value","in":"query","schema":{"name":"regexIncludes","type":"string","minLength":1,"maxLength":100,"description":"Filter log lines to match this regular expression","example":"my.*value","in":"query"}},{"name":"regexNotIncludes","type":"string","minLength":1,"maxLength":100,"description":"Filter log lines to not match this regular expression","example":"my.*value","in":"query","schema":{"name":"regexNotIncludes","type":"string","minLength":1,"maxLength":100,"description":"Filter log lines to not match this regular expression","example":"my.*value","in":"query"}}],"responses":{"200":{"description":"List of logs values","schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"containerId":{"type":"string"},"log":{"example":"stdout F This is a log line"},"ts":{"type":"string","format":"date-time","example":"2023-03-21T15:01:17.310Z"}},"required":["containerId","log","ts"],"additionalProperties":false},"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Addons","project"],"security":[],"x-nf-link":"undefined/v1/api/log-tailing","x-nf-link-description":"For more information on live log tailing, see our documentation page.","x-nf-permission-required":"Project > Addons > Deployment > View Instance Logs","x-nf-team-scoped":true,"x-nf-cli-command":["get","addon","backup","logs"]},"v1-projects--projectId--addons--addonId--backups--backupId--logs-get-team-scoped":{"operationId":"getProjectsAddonsAddonidBackupsBackupidLogs","summary":"Get addon backup logs","description":"Get logs for an addon backup","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"addonId","type":"string","required":true,"description":"ID of the addon","example":"example-addon","in":"path","schema":{"name":"addonId","type":"string","required":true,"description":"ID of the addon","example":"example-addon","in":"path"}},{"name":"backupId","type":"string","required":true,"description":"ID of the backup","example":"example-backup-123","in":"path","schema":{"name":"backupId","type":"string","required":true,"description":"ID of the backup","example":"example-backup-123","in":"path"}},{"name":"containerName","type":"string","minLength":3,"maxLength":64,"description":"Limits logs to a specific container.","example":"my-container-67d6d748c5-kgvwh","default":"all","in":"query","schema":{"name":"containerName","type":"string","minLength":3,"maxLength":64,"description":"Limits logs to a specific container.","example":"my-container-67d6d748c5-kgvwh","default":"all","in":"query"}},{"name":"queryType","type":"string","enum":["range"],"description":"`range` selects a log range and returns immediately.","example":"range","default":"range","in":"query","schema":{"name":"queryType","type":"string","enum":["range"],"description":"`range` selects a log range and returns immediately.","example":"range","default":"range","in":"query"}},{"name":"startTime","type":"string","format":"date-time","description":"Fetch logs generated after this timestamp.","example":"2023-02-16T14:00:00.000Z","in":"query","schema":{"name":"startTime","type":"string","format":"date-time","description":"Fetch logs generated after this timestamp.","example":"2023-02-16T14:00:00.000Z","in":"query"}},{"name":"endTime","type":"string","format":"date-time","description":"Fetch logs generated before this timestamp.","example":"2023-02-16T15:00:00.000Z","in":"query","schema":{"name":"endTime","type":"string","format":"date-time","description":"Fetch logs generated before this timestamp.","example":"2023-02-16T15:00:00.000Z","in":"query"}},{"name":"duration","type":"integer","description":"Range duration in seconds. If set, only one of `startTime` or `endTime` can be set.","example":600,"in":"query","schema":{"name":"duration","type":"integer","description":"Range duration in seconds. If set, only one of `startTime` or `endTime` can be set.","example":600,"in":"query"}},{"name":"lineLimit","type":"number","format":"float","minimum":0,"maximum":1000,"description":"Number of log lines to fetch.","example":250,"in":"query","schema":{"name":"lineLimit","type":"number","format":"float","minimum":0,"maximum":1000,"description":"Number of log lines to fetch.","example":250,"in":"query"}},{"name":"direction","type":"string","enum":["backward","forward"],"description":"Ordering of log lines","example":"backward","default":"backward","in":"query","schema":{"name":"direction","type":"string","enum":["backward","forward"],"description":"Ordering of log lines","example":"backward","default":"backward","in":"query"}},{"name":"textIncludes","type":"string","minLength":1,"maxLength":100,"description":"Filter log lines to match this search string","example":"myvalue","in":"query","schema":{"name":"textIncludes","type":"string","minLength":1,"maxLength":100,"description":"Filter log lines to match this search string","example":"myvalue","in":"query"}},{"name":"textNotIncludes","type":"string","minLength":1,"maxLength":100,"description":"Filter log lines to not match this search string","example":"myvalue","in":"query","schema":{"name":"textNotIncludes","type":"string","minLength":1,"maxLength":100,"description":"Filter log lines to not match this search string","example":"myvalue","in":"query"}},{"name":"regexIncludes","type":"string","minLength":1,"maxLength":100,"description":"Filter log lines to match this regular expression","example":"my.*value","in":"query","schema":{"name":"regexIncludes","type":"string","minLength":1,"maxLength":100,"description":"Filter log lines to match this regular expression","example":"my.*value","in":"query"}},{"name":"regexNotIncludes","type":"string","minLength":1,"maxLength":100,"description":"Filter log lines to not match this regular expression","example":"my.*value","in":"query","schema":{"name":"regexNotIncludes","type":"string","minLength":1,"maxLength":100,"description":"Filter log lines to not match this regular expression","example":"my.*value","in":"query"}}],"responses":{"200":{"description":"List of logs values","schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"containerId":{"type":"string"},"log":{"example":"stdout F This is a log line"},"ts":{"type":"string","format":"date-time","example":"2023-03-21T15:01:17.310Z"}},"required":["containerId","log","ts"],"additionalProperties":false},"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Addons","project"],"security":[],"x-nf-link":"undefined/v1/api/log-tailing","x-nf-link-description":"For more information on live log tailing, see our documentation page.","x-nf-permission-required":"Project > Addons > Deployment > View Instance Logs","x-nf-team-scoped":true,"x-nf-cli-command":["get","addon","backup","logs"]},"v1-projects--projectId--addons--addonId--backups--backupId--restore-post":{"operationId":"postProjectsAddonsAddonidBackupsBackupidRestore","summary":"Restore addon backup","description":"Restores the given addon to the given backup state.","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"addonId","type":"string","required":true,"description":"ID of the addon","example":"example-addon","in":"path","schema":{"name":"addonId","type":"string","required":true,"description":"ID of the addon","example":"example-addon","in":"path"}},{"name":"backupId","type":"string","required":true,"description":"ID of the backup","example":"example-backup","in":"path","schema":{"name":"backupId","type":"string","required":true,"description":"ID of the backup","example":"example-backup","in":"path"}},{"name":"sourceProjectId","type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":54,"description":"Specify the source projectId when referring to a global backup.","in":"query","schema":{"name":"sourceProjectId","type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":54,"description":"Specify the source projectId when referring to a global backup.","in":"query"}},{"name":"sourceAddonId","type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":54,"description":"Specify the source addonId when referring to a global backup.","in":"query","schema":{"name":"sourceAddonId","type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":54,"description":"Specify the source addonId when referring to a global backup.","in":"query"}}],"responses":{"200":{"description":"Details about the backup restore.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"restoreId":{"type":"string","description":"The ID of the initiated restore.","example":"1611305397038"}},"required":["restoreId"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Addons","project"],"security":[],"x-nf-permission-required":"Project > Addons > General > Update","x-nf-team-scoped":true,"x-nf-cli-command":["restore","addon","backup"]},"v1-projects--projectId--addons--addonId--backups--backupId--restore-post-team-scoped":{"operationId":"postProjectsAddonsAddonidBackupsBackupidRestore","summary":"Restore addon backup","description":"Restores the given addon to the given backup state.","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"addonId","type":"string","required":true,"description":"ID of the addon","example":"example-addon","in":"path","schema":{"name":"addonId","type":"string","required":true,"description":"ID of the addon","example":"example-addon","in":"path"}},{"name":"backupId","type":"string","required":true,"description":"ID of the backup","example":"example-backup","in":"path","schema":{"name":"backupId","type":"string","required":true,"description":"ID of the backup","example":"example-backup","in":"path"}},{"name":"sourceProjectId","type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":54,"description":"Specify the source projectId when referring to a global backup.","in":"query","schema":{"name":"sourceProjectId","type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":54,"description":"Specify the source projectId when referring to a global backup.","in":"query"}},{"name":"sourceAddonId","type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":54,"description":"Specify the source addonId when referring to a global backup.","in":"query","schema":{"name":"sourceAddonId","type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":54,"description":"Specify the source addonId when referring to a global backup.","in":"query"}}],"responses":{"200":{"description":"Details about the backup restore.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"restoreId":{"type":"string","description":"The ID of the initiated restore.","example":"1611305397038"}},"required":["restoreId"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Addons","project"],"security":[],"x-nf-permission-required":"Project > Addons > General > Update","x-nf-team-scoped":true,"x-nf-cli-command":["restore","addon","backup"]},"v1-projects--projectId--addons--addonId--backups--backupId--restores-get":{"operationId":"getProjectsAddonsAddonidBackupsBackupidRestores","summary":"List addon backup restores","description":"Gets a list of restores for the given backup.","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"addonId","type":"string","required":true,"description":"ID of the addon","example":"example-addon","in":"path","schema":{"name":"addonId","type":"string","required":true,"description":"ID of the addon","example":"example-addon","in":"path"}},{"name":"backupId","type":"string","required":true,"description":"ID of the backup","example":"example-backup","in":"path","schema":{"name":"backupId","type":"string","required":true,"description":"ID of the backup","example":"example-backup","in":"path"}},{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query","schema":{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query"}},{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query","schema":{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query"}},{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query","schema":{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query"}},{"name":"sourceProjectId","type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":54,"description":"Specify the source projectId when referring to a global backup.","in":"query","schema":{"name":"sourceProjectId","type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":54,"description":"Specify the source projectId when referring to a global backup.","in":"query"}},{"name":"sourceAddonId","type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":54,"description":"Specify the source addonId when referring to a global backup.","in":"query","schema":{"name":"sourceAddonId","type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":54,"description":"Specify the source addonId when referring to a global backup.","in":"query"}}],"responses":{"200":{"description":"A list of restores for the given backup.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"restores":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"The identifier for the backup.","example":"668596c647fed81696a8a82c"},"status":{"type":"string","enum":["scheduled","in-progress","completed","aborting","aborted","failed","not-supported"],"description":"The current status of the backup.","example":"completed"},"restoreTimestamp":{"type":"string","format":"date-time","description":"The time the backup was initiated.","example":"2021-01-20T11:19:54.494Z"},"completedAt":{"type":"string","format":"date-time","description":"The time the restore was completed.","example":"2021-01-20T11:19:54.494Z"}},"required":["id","status","restoreTimestamp"],"additionalProperties":false},"description":"A list of restores for the given backup."}},"additionalProperties":false,"description":"Result data."},"pagination":{"type":"object","properties":{"hasNextPage":{"type":"boolean","description":"Is there another page of results available?","example":false},"cursor":{"type":"string","description":"The cursor to access the next page of results."},"count":{"type":"number","format":"float","description":"The number of results returned by this request.","example":1}},"required":["hasNextPage","count"],"additionalProperties":false,"description":"Data about the endpoint pagination."}},"required":["data","pagination"],"additionalProperties":false,"description":"Response object."}}},"tags":["Addons","project"],"security":[],"x-nf-permission-required":"Project > Addons > General > Read","x-nf-team-scoped":true,"x-nf-cli-command":["get","addon","backup","restores"]},"v1-projects--projectId--addons--addonId--backups--backupId--restores-get-team-scoped":{"operationId":"getProjectsAddonsAddonidBackupsBackupidRestores","summary":"List addon backup restores","description":"Gets a list of restores for the given backup.","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"addonId","type":"string","required":true,"description":"ID of the addon","example":"example-addon","in":"path","schema":{"name":"addonId","type":"string","required":true,"description":"ID of the addon","example":"example-addon","in":"path"}},{"name":"backupId","type":"string","required":true,"description":"ID of the backup","example":"example-backup","in":"path","schema":{"name":"backupId","type":"string","required":true,"description":"ID of the backup","example":"example-backup","in":"path"}},{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query","schema":{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query"}},{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query","schema":{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query"}},{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query","schema":{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query"}},{"name":"sourceProjectId","type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":54,"description":"Specify the source projectId when referring to a global backup.","in":"query","schema":{"name":"sourceProjectId","type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":54,"description":"Specify the source projectId when referring to a global backup.","in":"query"}},{"name":"sourceAddonId","type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":54,"description":"Specify the source addonId when referring to a global backup.","in":"query","schema":{"name":"sourceAddonId","type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":54,"description":"Specify the source addonId when referring to a global backup.","in":"query"}}],"responses":{"200":{"description":"A list of restores for the given backup.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"restores":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"The identifier for the backup.","example":"668596c647fed81696a8a82c"},"status":{"type":"string","enum":["scheduled","in-progress","completed","aborting","aborted","failed","not-supported"],"description":"The current status of the backup.","example":"completed"},"restoreTimestamp":{"type":"string","format":"date-time","description":"The time the backup was initiated.","example":"2021-01-20T11:19:54.494Z"},"completedAt":{"type":"string","format":"date-time","description":"The time the restore was completed.","example":"2021-01-20T11:19:54.494Z"}},"required":["id","status","restoreTimestamp"],"additionalProperties":false},"description":"A list of restores for the given backup."}},"additionalProperties":false,"description":"Result data."},"pagination":{"type":"object","properties":{"hasNextPage":{"type":"boolean","description":"Is there another page of results available?","example":false},"cursor":{"type":"string","description":"The cursor to access the next page of results."},"count":{"type":"number","format":"float","description":"The number of results returned by this request.","example":1}},"required":["hasNextPage","count"],"additionalProperties":false,"description":"Data about the endpoint pagination."}},"required":["data","pagination"],"additionalProperties":false,"description":"Response object."}}},"tags":["Addons","project"],"security":[],"x-nf-permission-required":"Project > Addons > General > Read","x-nf-team-scoped":true,"x-nf-cli-command":["get","addon","backup","restores"]},"v1-projects--projectId--addons--addonId--backups--backupId--restores--restoreId--logs-get":{"operationId":"getProjectsAddonsAddonidBackupsBackupidRestoresRestoreidLogs","summary":"Get addon restore logs","description":"Get logs for an addon restore","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"addonId","type":"string","required":true,"description":"ID of the addon","example":"example-addon","in":"path","schema":{"name":"addonId","type":"string","required":true,"description":"ID of the addon","example":"example-addon","in":"path"}},{"name":"backupId","type":"string","required":true,"description":"ID of the backup","example":"example-backup-123","in":"path","schema":{"name":"backupId","type":"string","required":true,"description":"ID of the backup","example":"example-backup-123","in":"path"}},{"name":"restoreId","type":"string","required":true,"description":"ID of the restore","example":"example-restore","in":"path","schema":{"name":"restoreId","type":"string","required":true,"description":"ID of the restore","example":"example-restore","in":"path"}},{"name":"containerName","type":"string","minLength":3,"maxLength":64,"description":"Limits logs to a specific container.","example":"my-container-67d6d748c5-kgvwh","default":"all","in":"query","schema":{"name":"containerName","type":"string","minLength":3,"maxLength":64,"description":"Limits logs to a specific container.","example":"my-container-67d6d748c5-kgvwh","default":"all","in":"query"}},{"name":"queryType","type":"string","enum":["range"],"description":"`range` selects a log range and returns immediately.","example":"range","default":"range","in":"query","schema":{"name":"queryType","type":"string","enum":["range"],"description":"`range` selects a log range and returns immediately.","example":"range","default":"range","in":"query"}},{"name":"startTime","type":"string","format":"date-time","description":"Fetch logs generated after this timestamp.","example":"2023-02-16T14:00:00.000Z","in":"query","schema":{"name":"startTime","type":"string","format":"date-time","description":"Fetch logs generated after this timestamp.","example":"2023-02-16T14:00:00.000Z","in":"query"}},{"name":"endTime","type":"string","format":"date-time","description":"Fetch logs generated before this timestamp.","example":"2023-02-16T15:00:00.000Z","in":"query","schema":{"name":"endTime","type":"string","format":"date-time","description":"Fetch logs generated before this timestamp.","example":"2023-02-16T15:00:00.000Z","in":"query"}},{"name":"duration","type":"integer","description":"Range duration in seconds. If set, only one of `startTime` or `endTime` can be set.","example":600,"in":"query","schema":{"name":"duration","type":"integer","description":"Range duration in seconds. If set, only one of `startTime` or `endTime` can be set.","example":600,"in":"query"}},{"name":"lineLimit","type":"number","format":"float","minimum":0,"maximum":1000,"description":"Number of log lines to fetch.","example":250,"in":"query","schema":{"name":"lineLimit","type":"number","format":"float","minimum":0,"maximum":1000,"description":"Number of log lines to fetch.","example":250,"in":"query"}},{"name":"direction","type":"string","enum":["backward","forward"],"description":"Ordering of log lines","example":"backward","default":"backward","in":"query","schema":{"name":"direction","type":"string","enum":["backward","forward"],"description":"Ordering of log lines","example":"backward","default":"backward","in":"query"}},{"name":"textIncludes","type":"string","minLength":1,"maxLength":100,"description":"Filter log lines to match this search string","example":"myvalue","in":"query","schema":{"name":"textIncludes","type":"string","minLength":1,"maxLength":100,"description":"Filter log lines to match this search string","example":"myvalue","in":"query"}},{"name":"textNotIncludes","type":"string","minLength":1,"maxLength":100,"description":"Filter log lines to not match this search string","example":"myvalue","in":"query","schema":{"name":"textNotIncludes","type":"string","minLength":1,"maxLength":100,"description":"Filter log lines to not match this search string","example":"myvalue","in":"query"}},{"name":"regexIncludes","type":"string","minLength":1,"maxLength":100,"description":"Filter log lines to match this regular expression","example":"my.*value","in":"query","schema":{"name":"regexIncludes","type":"string","minLength":1,"maxLength":100,"description":"Filter log lines to match this regular expression","example":"my.*value","in":"query"}},{"name":"regexNotIncludes","type":"string","minLength":1,"maxLength":100,"description":"Filter log lines to not match this regular expression","example":"my.*value","in":"query","schema":{"name":"regexNotIncludes","type":"string","minLength":1,"maxLength":100,"description":"Filter log lines to not match this regular expression","example":"my.*value","in":"query"}}],"responses":{"200":{"description":"List of logs values","schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"containerId":{"type":"string"},"log":{"example":"stdout F This is a log line"},"ts":{"type":"string","format":"date-time","example":"2023-03-21T15:01:17.310Z"}},"required":["containerId","log","ts"],"additionalProperties":false},"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Addons","project"],"security":[],"x-nf-link":"undefined/v1/api/log-tailing","x-nf-link-description":"For more information on live log tailing, see our documentation page.","x-nf-permission-required":"Project > Addons > Deployment > View Instance Logs","x-nf-team-scoped":true,"x-nf-cli-command":["get","addon","restore","logs"]},"v1-projects--projectId--addons--addonId--backups--backupId--restores--restoreId--logs-get-team-scoped":{"operationId":"getProjectsAddonsAddonidBackupsBackupidRestoresRestoreidLogs","summary":"Get addon restore logs","description":"Get logs for an addon restore","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"addonId","type":"string","required":true,"description":"ID of the addon","example":"example-addon","in":"path","schema":{"name":"addonId","type":"string","required":true,"description":"ID of the addon","example":"example-addon","in":"path"}},{"name":"backupId","type":"string","required":true,"description":"ID of the backup","example":"example-backup-123","in":"path","schema":{"name":"backupId","type":"string","required":true,"description":"ID of the backup","example":"example-backup-123","in":"path"}},{"name":"restoreId","type":"string","required":true,"description":"ID of the restore","example":"example-restore","in":"path","schema":{"name":"restoreId","type":"string","required":true,"description":"ID of the restore","example":"example-restore","in":"path"}},{"name":"containerName","type":"string","minLength":3,"maxLength":64,"description":"Limits logs to a specific container.","example":"my-container-67d6d748c5-kgvwh","default":"all","in":"query","schema":{"name":"containerName","type":"string","minLength":3,"maxLength":64,"description":"Limits logs to a specific container.","example":"my-container-67d6d748c5-kgvwh","default":"all","in":"query"}},{"name":"queryType","type":"string","enum":["range"],"description":"`range` selects a log range and returns immediately.","example":"range","default":"range","in":"query","schema":{"name":"queryType","type":"string","enum":["range"],"description":"`range` selects a log range and returns immediately.","example":"range","default":"range","in":"query"}},{"name":"startTime","type":"string","format":"date-time","description":"Fetch logs generated after this timestamp.","example":"2023-02-16T14:00:00.000Z","in":"query","schema":{"name":"startTime","type":"string","format":"date-time","description":"Fetch logs generated after this timestamp.","example":"2023-02-16T14:00:00.000Z","in":"query"}},{"name":"endTime","type":"string","format":"date-time","description":"Fetch logs generated before this timestamp.","example":"2023-02-16T15:00:00.000Z","in":"query","schema":{"name":"endTime","type":"string","format":"date-time","description":"Fetch logs generated before this timestamp.","example":"2023-02-16T15:00:00.000Z","in":"query"}},{"name":"duration","type":"integer","description":"Range duration in seconds. If set, only one of `startTime` or `endTime` can be set.","example":600,"in":"query","schema":{"name":"duration","type":"integer","description":"Range duration in seconds. If set, only one of `startTime` or `endTime` can be set.","example":600,"in":"query"}},{"name":"lineLimit","type":"number","format":"float","minimum":0,"maximum":1000,"description":"Number of log lines to fetch.","example":250,"in":"query","schema":{"name":"lineLimit","type":"number","format":"float","minimum":0,"maximum":1000,"description":"Number of log lines to fetch.","example":250,"in":"query"}},{"name":"direction","type":"string","enum":["backward","forward"],"description":"Ordering of log lines","example":"backward","default":"backward","in":"query","schema":{"name":"direction","type":"string","enum":["backward","forward"],"description":"Ordering of log lines","example":"backward","default":"backward","in":"query"}},{"name":"textIncludes","type":"string","minLength":1,"maxLength":100,"description":"Filter log lines to match this search string","example":"myvalue","in":"query","schema":{"name":"textIncludes","type":"string","minLength":1,"maxLength":100,"description":"Filter log lines to match this search string","example":"myvalue","in":"query"}},{"name":"textNotIncludes","type":"string","minLength":1,"maxLength":100,"description":"Filter log lines to not match this search string","example":"myvalue","in":"query","schema":{"name":"textNotIncludes","type":"string","minLength":1,"maxLength":100,"description":"Filter log lines to not match this search string","example":"myvalue","in":"query"}},{"name":"regexIncludes","type":"string","minLength":1,"maxLength":100,"description":"Filter log lines to match this regular expression","example":"my.*value","in":"query","schema":{"name":"regexIncludes","type":"string","minLength":1,"maxLength":100,"description":"Filter log lines to match this regular expression","example":"my.*value","in":"query"}},{"name":"regexNotIncludes","type":"string","minLength":1,"maxLength":100,"description":"Filter log lines to not match this regular expression","example":"my.*value","in":"query","schema":{"name":"regexNotIncludes","type":"string","minLength":1,"maxLength":100,"description":"Filter log lines to not match this regular expression","example":"my.*value","in":"query"}}],"responses":{"200":{"description":"List of logs values","schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"containerId":{"type":"string"},"log":{"example":"stdout F This is a log line"},"ts":{"type":"string","format":"date-time","example":"2023-03-21T15:01:17.310Z"}},"required":["containerId","log","ts"],"additionalProperties":false},"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Addons","project"],"security":[],"x-nf-link":"undefined/v1/api/log-tailing","x-nf-link-description":"For more information on live log tailing, see our documentation page.","x-nf-permission-required":"Project > Addons > Deployment > View Instance Logs","x-nf-team-scoped":true,"x-nf-cli-command":["get","addon","restore","logs"]},"v1-projects--projectId--addons--addonId--backups--backupId--retain-post":{"operationId":"postProjectsAddonsAddonidBackupsBackupidRetain","summary":"Retain backup","description":"Flags a temporary backup generated by a backup schedule to be retained indefinitely rather than being deleted after the expiry date.","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"addonId","type":"string","required":true,"description":"ID of the addon","example":"example-addon","in":"path","schema":{"name":"addonId","type":"string","required":true,"description":"ID of the addon","example":"example-addon","in":"path"}},{"name":"backupId","type":"string","required":true,"description":"ID of the backup","example":"example-backup","in":"path","schema":{"name":"backupId","type":"string","required":true,"description":"ID of the backup","example":"example-backup","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Addons","project"],"security":[],"x-nf-permission-required":"Project > Addons > General > Update","x-nf-team-scoped":true,"x-nf-cli-command":["retain","addon","backup"]},"v1-projects--projectId--addons--addonId--backups--backupId--retain-post-team-scoped":{"operationId":"postProjectsAddonsAddonidBackupsBackupidRetain","summary":"Retain backup","description":"Flags a temporary backup generated by a backup schedule to be retained indefinitely rather than being deleted after the expiry date.","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"addonId","type":"string","required":true,"description":"ID of the addon","example":"example-addon","in":"path","schema":{"name":"addonId","type":"string","required":true,"description":"ID of the addon","example":"example-addon","in":"path"}},{"name":"backupId","type":"string","required":true,"description":"ID of the backup","example":"example-backup","in":"path","schema":{"name":"backupId","type":"string","required":true,"description":"ID of the backup","example":"example-backup","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Addons","project"],"security":[],"x-nf-permission-required":"Project > Addons > General > Update","x-nf-team-scoped":true,"x-nf-cli-command":["retain","addon","backup"]},"v1-projects--projectId--addons--addonId--containers-get":{"operationId":"getProjectsAddonsAddonidContainers","summary":"List addon containers","description":"Gets a list of containers for the given addon.","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"addonId","type":"string","required":true,"description":"ID of the addon","example":"example-addon","in":"path","schema":{"name":"addonId","type":"string","required":true,"description":"ID of the addon","example":"example-addon","in":"path"}},{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query","schema":{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query"}},{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query","schema":{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query"}},{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query","schema":{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query"}}],"responses":{"200":{"description":"Details about the addon's containers.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"containers":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"The name of the container.","example":"example-service-78b4d4459d-sbtn8"},"createdAt":{"type":"integer","minimum":1,"description":"The timestamp the container was created.","example":1611241087},"status":{"type":"string","enum":["TASK_RUNNING","TASK_STARTING","TASK_STAGING","TASK_KILLING","TASK_KILLED","TASK_FAILED","TASK_FINISHED"],"description":"The current status of the container.","example":"TASK_RUNNING"},"nodeName":{"type":"string","description":"BYOC only: the name of the node the container was scheduled to"},"nodePoolUserId":{"type":"string","description":"BYOC only: the user facing ID of the node pool that the container was scheduled to"},"nodePoolProviderId":{"type":"string","description":"BYOC only: the provider facing ID of the node pool that the container was scheduled to"},"host":{"type":"string","description":"BYOC only: the host address of the node the container was scheduled to"},"ipAddresses":{"type":"array","items":{"type":"string"},"description":"BYOC only: the IP addresses mapping to the container"},"updatedAt":{"type":"integer","minimum":1,"description":"The timestamp the container was last updated.","example":1611241087}},"required":["name","createdAt","status","updatedAt"],"additionalProperties":false,"description":"Data about a container."}}},"additionalProperties":false,"description":"Result data."},"pagination":{"type":"object","properties":{"hasNextPage":{"type":"boolean","description":"Is there another page of results available?","example":false},"cursor":{"type":"string","description":"The cursor to access the next page of results."},"count":{"type":"number","format":"float","description":"The number of results returned by this request.","example":1}},"required":["hasNextPage","count"],"additionalProperties":false,"description":"Data about the endpoint pagination."}},"required":["data","pagination"],"additionalProperties":false,"description":"Response object."}}},"tags":["Addons","project"],"security":[],"x-nf-permission-required":"Project > Addons > Deployment > View Instances","x-nf-team-scoped":true,"x-nf-cli-command":["get","addon","containers"]},"v1-projects--projectId--addons--addonId--containers-get-team-scoped":{"operationId":"getProjectsAddonsAddonidContainers","summary":"List addon containers","description":"Gets a list of containers for the given addon.","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"addonId","type":"string","required":true,"description":"ID of the addon","example":"example-addon","in":"path","schema":{"name":"addonId","type":"string","required":true,"description":"ID of the addon","example":"example-addon","in":"path"}},{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query","schema":{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query"}},{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query","schema":{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query"}},{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query","schema":{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query"}}],"responses":{"200":{"description":"Details about the addon's containers.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"containers":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"The name of the container.","example":"example-service-78b4d4459d-sbtn8"},"createdAt":{"type":"integer","minimum":1,"description":"The timestamp the container was created.","example":1611241087},"status":{"type":"string","enum":["TASK_RUNNING","TASK_STARTING","TASK_STAGING","TASK_KILLING","TASK_KILLED","TASK_FAILED","TASK_FINISHED"],"description":"The current status of the container.","example":"TASK_RUNNING"},"nodeName":{"type":"string","description":"BYOC only: the name of the node the container was scheduled to"},"nodePoolUserId":{"type":"string","description":"BYOC only: the user facing ID of the node pool that the container was scheduled to"},"nodePoolProviderId":{"type":"string","description":"BYOC only: the provider facing ID of the node pool that the container was scheduled to"},"host":{"type":"string","description":"BYOC only: the host address of the node the container was scheduled to"},"ipAddresses":{"type":"array","items":{"type":"string"},"description":"BYOC only: the IP addresses mapping to the container"},"updatedAt":{"type":"integer","minimum":1,"description":"The timestamp the container was last updated.","example":1611241087}},"required":["name","createdAt","status","updatedAt"],"additionalProperties":false,"description":"Data about a container."}}},"additionalProperties":false,"description":"Result data."},"pagination":{"type":"object","properties":{"hasNextPage":{"type":"boolean","description":"Is there another page of results available?","example":false},"cursor":{"type":"string","description":"The cursor to access the next page of results."},"count":{"type":"number","format":"float","description":"The number of results returned by this request.","example":1}},"required":["hasNextPage","count"],"additionalProperties":false,"description":"Data about the endpoint pagination."}},"required":["data","pagination"],"additionalProperties":false,"description":"Response object."}}},"tags":["Addons","project"],"security":[],"x-nf-permission-required":"Project > Addons > Deployment > View Instances","x-nf-team-scoped":true,"x-nf-cli-command":["get","addon","containers"]},"v1-projects--projectId--addons--addonId--credentials-get":{"operationId":"getProjectsAddonsAddonidCredentials","summary":"Get addon credentials","description":"Returns the credentials for connecting to the given addon.","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"addonId","type":"string","required":true,"description":"ID of the addon","example":"example-addon","in":"path","schema":{"name":"addonId","type":"string","required":true,"description":"ID of the addon","example":"example-addon","in":"path"}}],"responses":{"200":{"description":"Credentials for the addon.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"secrets":{"type":"object","properties":{},"description":"An object containing secrets for connecting to the addon. Secrets are dependent on the addon type.","example":{"username":"1720747439245d49","password":"f1ba286ee2465e80b0fd4af31276f3e33a"}},"envs":{"type":"object","properties":{},"description":"An object containing data such as connection strings. Dependent on the addon type.","example":{}}},"required":["secrets","envs"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Addons","project"],"security":[],"x-nf-permission-required":"Project > Addons > General > Read","x-nf-team-scoped":true,"x-nf-cli-command":["get","addon","credentials"]},"v1-projects--projectId--addons--addonId--credentials-get-team-scoped":{"operationId":"getProjectsAddonsAddonidCredentials","summary":"Get addon credentials","description":"Returns the credentials for connecting to the given addon.","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"addonId","type":"string","required":true,"description":"ID of the addon","example":"example-addon","in":"path","schema":{"name":"addonId","type":"string","required":true,"description":"ID of the addon","example":"example-addon","in":"path"}}],"responses":{"200":{"description":"Credentials for the addon.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"secrets":{"type":"object","properties":{},"description":"An object containing secrets for connecting to the addon. Secrets are dependent on the addon type.","example":{"username":"1720747439245d49","password":"f1ba286ee2465e80b0fd4af31276f3e33a"}},"envs":{"type":"object","properties":{},"description":"An object containing data such as connection strings. Dependent on the addon type.","example":{}}},"required":["secrets","envs"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Addons","project"],"security":[],"x-nf-permission-required":"Project > Addons > General > Read","x-nf-team-scoped":true,"x-nf-cli-command":["get","addon","credentials"]},"v1-projects--projectId--addons--addonId--logs-get":{"operationId":"getProjectsAddonsAddonidLogs","summary":"Get addon logs","description":"Get logs for an addon","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"addonId","type":"string","required":true,"description":"ID of the addon","example":"example-addon","in":"path","schema":{"name":"addonId","type":"string","required":true,"description":"ID of the addon","example":"example-addon","in":"path"}},{"name":"type","type":"string","enum":["cdn","mesh","ingress","runtime","build","backup","restore"],"description":"Type of log. Multiple log types can be selected by specifying the query parameter repeatedly.","in":"query","schema":{"name":"type","type":"string","enum":["cdn","mesh","ingress","runtime","build","backup","restore"],"description":"Type of log. Multiple log types can be selected by specifying the query parameter repeatedly.","in":"query"}},{"name":"containerName","type":"string","minLength":3,"maxLength":64,"description":"Limits logs to a specific container.","example":"my-container-67d6d748c5-kgvwh","default":"all","in":"query","schema":{"name":"containerName","type":"string","minLength":3,"maxLength":64,"description":"Limits logs to a specific container.","example":"my-container-67d6d748c5-kgvwh","default":"all","in":"query"}},{"name":"queryType","type":"string","enum":["range"],"description":"`range` selects a log range and returns immediately.","example":"range","default":"range","in":"query","schema":{"name":"queryType","type":"string","enum":["range"],"description":"`range` selects a log range and returns immediately.","example":"range","default":"range","in":"query"}},{"name":"startTime","type":"string","format":"date-time","description":"Fetch logs generated after this timestamp.","example":"2023-02-16T14:00:00.000Z","in":"query","schema":{"name":"startTime","type":"string","format":"date-time","description":"Fetch logs generated after this timestamp.","example":"2023-02-16T14:00:00.000Z","in":"query"}},{"name":"endTime","type":"string","format":"date-time","description":"Fetch logs generated before this timestamp.","example":"2023-02-16T15:00:00.000Z","in":"query","schema":{"name":"endTime","type":"string","format":"date-time","description":"Fetch logs generated before this timestamp.","example":"2023-02-16T15:00:00.000Z","in":"query"}},{"name":"duration","type":"integer","description":"Range duration in seconds. If set, only one of `startTime` or `endTime` can be set.","example":600,"in":"query","schema":{"name":"duration","type":"integer","description":"Range duration in seconds. If set, only one of `startTime` or `endTime` can be set.","example":600,"in":"query"}},{"name":"lineLimit","type":"number","format":"float","minimum":0,"maximum":1000,"description":"Number of log lines to fetch.","example":250,"in":"query","schema":{"name":"lineLimit","type":"number","format":"float","minimum":0,"maximum":1000,"description":"Number of log lines to fetch.","example":250,"in":"query"}},{"name":"direction","type":"string","enum":["backward","forward"],"description":"Ordering of log lines","example":"backward","default":"backward","in":"query","schema":{"name":"direction","type":"string","enum":["backward","forward"],"description":"Ordering of log lines","example":"backward","default":"backward","in":"query"}},{"name":"textIncludes","type":"string","minLength":1,"maxLength":100,"description":"Filter log lines to match this search string","example":"myvalue","in":"query","schema":{"name":"textIncludes","type":"string","minLength":1,"maxLength":100,"description":"Filter log lines to match this search string","example":"myvalue","in":"query"}},{"name":"textNotIncludes","type":"string","minLength":1,"maxLength":100,"description":"Filter log lines to not match this search string","example":"myvalue","in":"query","schema":{"name":"textNotIncludes","type":"string","minLength":1,"maxLength":100,"description":"Filter log lines to not match this search string","example":"myvalue","in":"query"}},{"name":"regexIncludes","type":"string","minLength":1,"maxLength":100,"description":"Filter log lines to match this regular expression","example":"my.*value","in":"query","schema":{"name":"regexIncludes","type":"string","minLength":1,"maxLength":100,"description":"Filter log lines to match this regular expression","example":"my.*value","in":"query"}},{"name":"regexNotIncludes","type":"string","minLength":1,"maxLength":100,"description":"Filter log lines to not match this regular expression","example":"my.*value","in":"query","schema":{"name":"regexNotIncludes","type":"string","minLength":1,"maxLength":100,"description":"Filter log lines to not match this regular expression","example":"my.*value","in":"query"}}],"responses":{"200":{"description":"List of logs values","schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"containerId":{"type":"string"},"log":{"example":"stdout F This is a log line"},"ts":{"type":"string","format":"date-time","example":"2023-03-21T15:01:17.310Z"}},"required":["containerId","log","ts"],"additionalProperties":false},"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Addons","project"],"security":[],"x-nf-link":"undefined/v1/api/log-tailing","x-nf-link-description":"For more information on live log tailing, see our documentation page.","x-nf-permission-required":"Project > Addons > Deployment > View Instance Logs","x-nf-team-scoped":true,"x-nf-cli-command":["get","addon","logs"]},"v1-projects--projectId--addons--addonId--logs-get-team-scoped":{"operationId":"getProjectsAddonsAddonidLogs","summary":"Get addon logs","description":"Get logs for an addon","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"addonId","type":"string","required":true,"description":"ID of the addon","example":"example-addon","in":"path","schema":{"name":"addonId","type":"string","required":true,"description":"ID of the addon","example":"example-addon","in":"path"}},{"name":"type","type":"string","enum":["cdn","mesh","ingress","runtime","build","backup","restore"],"description":"Type of log. Multiple log types can be selected by specifying the query parameter repeatedly.","in":"query","schema":{"name":"type","type":"string","enum":["cdn","mesh","ingress","runtime","build","backup","restore"],"description":"Type of log. Multiple log types can be selected by specifying the query parameter repeatedly.","in":"query"}},{"name":"containerName","type":"string","minLength":3,"maxLength":64,"description":"Limits logs to a specific container.","example":"my-container-67d6d748c5-kgvwh","default":"all","in":"query","schema":{"name":"containerName","type":"string","minLength":3,"maxLength":64,"description":"Limits logs to a specific container.","example":"my-container-67d6d748c5-kgvwh","default":"all","in":"query"}},{"name":"queryType","type":"string","enum":["range"],"description":"`range` selects a log range and returns immediately.","example":"range","default":"range","in":"query","schema":{"name":"queryType","type":"string","enum":["range"],"description":"`range` selects a log range and returns immediately.","example":"range","default":"range","in":"query"}},{"name":"startTime","type":"string","format":"date-time","description":"Fetch logs generated after this timestamp.","example":"2023-02-16T14:00:00.000Z","in":"query","schema":{"name":"startTime","type":"string","format":"date-time","description":"Fetch logs generated after this timestamp.","example":"2023-02-16T14:00:00.000Z","in":"query"}},{"name":"endTime","type":"string","format":"date-time","description":"Fetch logs generated before this timestamp.","example":"2023-02-16T15:00:00.000Z","in":"query","schema":{"name":"endTime","type":"string","format":"date-time","description":"Fetch logs generated before this timestamp.","example":"2023-02-16T15:00:00.000Z","in":"query"}},{"name":"duration","type":"integer","description":"Range duration in seconds. If set, only one of `startTime` or `endTime` can be set.","example":600,"in":"query","schema":{"name":"duration","type":"integer","description":"Range duration in seconds. If set, only one of `startTime` or `endTime` can be set.","example":600,"in":"query"}},{"name":"lineLimit","type":"number","format":"float","minimum":0,"maximum":1000,"description":"Number of log lines to fetch.","example":250,"in":"query","schema":{"name":"lineLimit","type":"number","format":"float","minimum":0,"maximum":1000,"description":"Number of log lines to fetch.","example":250,"in":"query"}},{"name":"direction","type":"string","enum":["backward","forward"],"description":"Ordering of log lines","example":"backward","default":"backward","in":"query","schema":{"name":"direction","type":"string","enum":["backward","forward"],"description":"Ordering of log lines","example":"backward","default":"backward","in":"query"}},{"name":"textIncludes","type":"string","minLength":1,"maxLength":100,"description":"Filter log lines to match this search string","example":"myvalue","in":"query","schema":{"name":"textIncludes","type":"string","minLength":1,"maxLength":100,"description":"Filter log lines to match this search string","example":"myvalue","in":"query"}},{"name":"textNotIncludes","type":"string","minLength":1,"maxLength":100,"description":"Filter log lines to not match this search string","example":"myvalue","in":"query","schema":{"name":"textNotIncludes","type":"string","minLength":1,"maxLength":100,"description":"Filter log lines to not match this search string","example":"myvalue","in":"query"}},{"name":"regexIncludes","type":"string","minLength":1,"maxLength":100,"description":"Filter log lines to match this regular expression","example":"my.*value","in":"query","schema":{"name":"regexIncludes","type":"string","minLength":1,"maxLength":100,"description":"Filter log lines to match this regular expression","example":"my.*value","in":"query"}},{"name":"regexNotIncludes","type":"string","minLength":1,"maxLength":100,"description":"Filter log lines to not match this regular expression","example":"my.*value","in":"query","schema":{"name":"regexNotIncludes","type":"string","minLength":1,"maxLength":100,"description":"Filter log lines to not match this regular expression","example":"my.*value","in":"query"}}],"responses":{"200":{"description":"List of logs values","schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"containerId":{"type":"string"},"log":{"example":"stdout F This is a log line"},"ts":{"type":"string","format":"date-time","example":"2023-03-21T15:01:17.310Z"}},"required":["containerId","log","ts"],"additionalProperties":false},"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Addons","project"],"security":[],"x-nf-link":"undefined/v1/api/log-tailing","x-nf-link-description":"For more information on live log tailing, see our documentation page.","x-nf-permission-required":"Project > Addons > Deployment > View Instance Logs","x-nf-team-scoped":true,"x-nf-cli-command":["get","addon","logs"]},"v1-projects--projectId--addons--addonId--metrics-get":{"operationId":"getProjectsAddonsAddonidMetrics","summary":"Get addon metrics","description":"Get metrics for an addon","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"addonId","type":"string","required":true,"description":"ID of the addon","example":"example-addon","in":"path","schema":{"name":"addonId","type":"string","required":true,"description":"ID of the addon","example":"example-addon","in":"path"}},{"name":"containerName","type":"string","minLength":3,"maxLength":64,"description":"Limits metrics to a specific container.","examples":["my-container-67d6d748c5-kgvwh","my-container-67d6d748c5-kgvwh"],"default":"all","in":"query","schema":{"name":"containerName","type":"string","minLength":3,"maxLength":64,"description":"Limits metrics to a specific container.","examples":["my-container-67d6d748c5-kgvwh","my-container-67d6d748c5-kgvwh"],"default":"all","in":"query"}},{"name":"queryType","type":"string","enum":["range","single"],"description":"Selects metrics for specified timestamp.","examples":["range","single"],"default":"single","in":"query","schema":{"name":"queryType","type":"string","enum":["range","single"],"description":"Selects metrics for specified timestamp.","examples":["range","single"],"default":"single","in":"query"}},{"name":"metricTypes","type":"string","enum":["cpu","memory","networkIngress","networkEgress","tcpConnectionsOpen","diskUsage","requests","http4xxResponses","http5xxResponses","bandwidth","bandwidthVolume"],"description":"Type of metric. Multiple metric types can be selected by specifying the query parameter repeatedly.","in":"query","schema":{"name":"metricTypes","type":"string","enum":["cpu","memory","networkIngress","networkEgress","tcpConnectionsOpen","diskUsage","requests","http4xxResponses","http5xxResponses","bandwidth","bandwidthVolume"],"description":"Type of metric. Multiple metric types can be selected by specifying the query parameter repeatedly.","in":"query"}},{"name":"startTime","type":"string","format":"date-time","description":"Fetch metrics generated after this timestamp. Only valid for queryType: `range`.","example":"2023-02-16T14:00:00.000Z","in":"query","schema":{"name":"startTime","type":"string","format":"date-time","description":"Fetch metrics generated after this timestamp. Only valid for queryType: `range`.","example":"2023-02-16T14:00:00.000Z","in":"query"}},{"name":"endTime","type":"string","format":"date-time","description":"Fetch metrics generated before this timestamp. Only valid for queryType: `range`.","example":"2023-02-16T15:00:00.000Z","in":"query","schema":{"name":"endTime","type":"string","format":"date-time","description":"Fetch metrics generated before this timestamp. Only valid for queryType: `range`.","example":"2023-02-16T15:00:00.000Z","in":"query"}},{"name":"duration","type":"integer","description":"Range duration in seconds. If set, only one of `startTime` or `endTime` can be set.","example":600,"in":"query","schema":{"name":"duration","type":"integer","description":"Range duration in seconds. If set, only one of `startTime` or `endTime` can be set.","example":600,"in":"query"}},{"name":"time","type":"string","format":"date-time","description":"Fetch metrics at this timestamp. If not provided will use current time. Only valid for queryType: `single`.","example":"2023-02-16T14:00:00.000Z","in":"query","schema":{"name":"time","type":"string","format":"date-time","description":"Fetch metrics at this timestamp. If not provided will use current time. Only valid for queryType: `single`.","example":"2023-02-16T14:00:00.000Z","in":"query"}}],"responses":{"200":{"description":"List of metrics values","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"cpu":{"type":"object","properties":{"metricInfo":{"type":"object","properties":{"metricId":{"type":"string","enum":["cpu","memory","networkIngress","networkEgress","tcpConnectionsOpen","diskUsage","requests","http4xxResponses","http5xxResponses","bandwidth","bandwidthVolume"],"description":"Type of metric to fetch"},"metricUnit":{"type":"string","enum":["pct","vCPU","mb","kbps","rps","count"],"example":"pct"},"metricResolution":{"type":"number","format":"float","example":10}},"required":["metricId","metricUnit"],"additionalProperties":false},"values":{"type":"array","items":{"type":"object","properties":{"metadata":{"type":"object","properties":{"containerId":{"type":"string","example":"nginx-669cc865b7-5458n"},"volumeId":{"type":"string","example":"data-volume-1"}},"required":["containerId"],"additionalProperties":false},"data":{"type":"array","items":{"type":"object","properties":{"value":{"type":"number","format":"float","example":0.5},"ts":{"type":"string","format":"date-time","example":"2023-03-21T15:01:17.310Z"}},"required":["value","ts"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}},"required":["values"],"additionalProperties":false},"memory":{"type":"object","properties":{"metricInfo":{"type":"object","properties":{"metricId":{"type":"string","enum":["cpu","memory","networkIngress","networkEgress","tcpConnectionsOpen","diskUsage","requests","http4xxResponses","http5xxResponses","bandwidth","bandwidthVolume"],"description":"Type of metric to fetch"},"metricUnit":{"type":"string","enum":["pct","vCPU","mb","kbps","rps","count"],"example":"pct"},"metricResolution":{"type":"number","format":"float","example":10}},"required":["metricId","metricUnit"],"additionalProperties":false},"values":{"type":"array","items":{"type":"object","properties":{"metadata":{"type":"object","properties":{"containerId":{"type":"string","example":"nginx-669cc865b7-5458n"},"volumeId":{"type":"string","example":"data-volume-1"}},"required":["containerId"],"additionalProperties":false},"data":{"type":"array","items":{"type":"object","properties":{"value":{"type":"number","format":"float","example":0.5},"ts":{"type":"string","format":"date-time","example":"2023-03-21T15:01:17.310Z"}},"required":["value","ts"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}},"required":["values"],"additionalProperties":false},"networkIngress":{"type":"object","properties":{"metricInfo":{"type":"object","properties":{"metricId":{"type":"string","enum":["cpu","memory","networkIngress","networkEgress","tcpConnectionsOpen","diskUsage","requests","http4xxResponses","http5xxResponses","bandwidth","bandwidthVolume"],"description":"Type of metric to fetch"},"metricUnit":{"type":"string","enum":["pct","vCPU","mb","kbps","rps","count"],"example":"pct"},"metricResolution":{"type":"number","format":"float","example":10}},"required":["metricId","metricUnit"],"additionalProperties":false},"values":{"type":"array","items":{"type":"object","properties":{"metadata":{"type":"object","properties":{"containerId":{"type":"string","example":"nginx-669cc865b7-5458n"},"volumeId":{"type":"string","example":"data-volume-1"}},"required":["containerId"],"additionalProperties":false},"data":{"type":"array","items":{"type":"object","properties":{"value":{"type":"number","format":"float","example":0.5},"ts":{"type":"string","format":"date-time","example":"2023-03-21T15:01:17.310Z"}},"required":["value","ts"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}},"required":["values"],"additionalProperties":false},"networkEgress":{"type":"object","properties":{"metricInfo":{"type":"object","properties":{"metricId":{"type":"string","enum":["cpu","memory","networkIngress","networkEgress","tcpConnectionsOpen","diskUsage","requests","http4xxResponses","http5xxResponses","bandwidth","bandwidthVolume"],"description":"Type of metric to fetch"},"metricUnit":{"type":"string","enum":["pct","vCPU","mb","kbps","rps","count"],"example":"pct"},"metricResolution":{"type":"number","format":"float","example":10}},"required":["metricId","metricUnit"],"additionalProperties":false},"values":{"type":"array","items":{"type":"object","properties":{"metadata":{"type":"object","properties":{"containerId":{"type":"string","example":"nginx-669cc865b7-5458n"},"volumeId":{"type":"string","example":"data-volume-1"}},"required":["containerId"],"additionalProperties":false},"data":{"type":"array","items":{"type":"object","properties":{"value":{"type":"number","format":"float","example":0.5},"ts":{"type":"string","format":"date-time","example":"2023-03-21T15:01:17.310Z"}},"required":["value","ts"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}},"required":["values"],"additionalProperties":false},"tcpConnectionsOpen":{"type":"object","properties":{"metricInfo":{"type":"object","properties":{"metricId":{"type":"string","enum":["cpu","memory","networkIngress","networkEgress","tcpConnectionsOpen","diskUsage","requests","http4xxResponses","http5xxResponses","bandwidth","bandwidthVolume"],"description":"Type of metric to fetch"},"metricUnit":{"type":"string","enum":["pct","vCPU","mb","kbps","rps","count"],"example":"pct"},"metricResolution":{"type":"number","format":"float","example":10}},"required":["metricId","metricUnit"],"additionalProperties":false},"values":{"type":"array","items":{"type":"object","properties":{"metadata":{"type":"object","properties":{"containerId":{"type":"string","example":"nginx-669cc865b7-5458n"},"volumeId":{"type":"string","example":"data-volume-1"}},"required":["containerId"],"additionalProperties":false},"data":{"type":"array","items":{"type":"object","properties":{"value":{"type":"number","format":"float","example":0.5},"ts":{"type":"string","format":"date-time","example":"2023-03-21T15:01:17.310Z"}},"required":["value","ts"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}},"required":["values"],"additionalProperties":false},"diskUsage":{"type":"object","properties":{"metricInfo":{"type":"object","properties":{"metricId":{"type":"string","enum":["cpu","memory","networkIngress","networkEgress","tcpConnectionsOpen","diskUsage","requests","http4xxResponses","http5xxResponses","bandwidth","bandwidthVolume"],"description":"Type of metric to fetch"},"metricUnit":{"type":"string","enum":["pct","vCPU","mb","kbps","rps","count"],"example":"pct"},"metricResolution":{"type":"number","format":"float","example":10}},"required":["metricId","metricUnit"],"additionalProperties":false},"values":{"type":"array","items":{"type":"object","properties":{"metadata":{"type":"object","properties":{"containerId":{"type":"string","example":"nginx-669cc865b7-5458n"},"volumeId":{"type":"string","example":"data-volume-1"}},"required":["containerId"],"additionalProperties":false},"data":{"type":"array","items":{"type":"object","properties":{"value":{"type":"number","format":"float","example":0.5},"ts":{"type":"string","format":"date-time","example":"2023-03-21T15:01:17.310Z"}},"required":["value","ts"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}},"required":["values"],"additionalProperties":false},"requests":{"type":"object","properties":{"metricInfo":{"type":"object","properties":{"metricId":{"type":"string","enum":["cpu","memory","networkIngress","networkEgress","tcpConnectionsOpen","diskUsage","requests","http4xxResponses","http5xxResponses","bandwidth","bandwidthVolume"],"description":"Type of metric to fetch"},"metricUnit":{"type":"string","enum":["pct","vCPU","mb","kbps","rps","count"],"example":"pct"},"metricResolution":{"type":"number","format":"float","example":10}},"required":["metricId","metricUnit"],"additionalProperties":false},"values":{"type":"array","items":{"type":"object","properties":{"metadata":{"type":"object","properties":{"containerId":{"type":"string","example":"nginx-669cc865b7-5458n"},"volumeId":{"type":"string","example":"data-volume-1"}},"required":["containerId"],"additionalProperties":false},"data":{"type":"array","items":{"type":"object","properties":{"value":{"type":"number","format":"float","example":0.5},"ts":{"type":"string","format":"date-time","example":"2023-03-21T15:01:17.310Z"}},"required":["value","ts"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}},"required":["values"],"additionalProperties":false},"http4xxResponses":{"type":"object","properties":{"metricInfo":{"type":"object","properties":{"metricId":{"type":"string","enum":["cpu","memory","networkIngress","networkEgress","tcpConnectionsOpen","diskUsage","requests","http4xxResponses","http5xxResponses","bandwidth","bandwidthVolume"],"description":"Type of metric to fetch"},"metricUnit":{"type":"string","enum":["pct","vCPU","mb","kbps","rps","count"],"example":"pct"},"metricResolution":{"type":"number","format":"float","example":10}},"required":["metricId","metricUnit"],"additionalProperties":false},"values":{"type":"array","items":{"type":"object","properties":{"metadata":{"type":"object","properties":{"containerId":{"type":"string","example":"nginx-669cc865b7-5458n"},"volumeId":{"type":"string","example":"data-volume-1"}},"required":["containerId"],"additionalProperties":false},"data":{"type":"array","items":{"type":"object","properties":{"value":{"type":"number","format":"float","example":0.5},"ts":{"type":"string","format":"date-time","example":"2023-03-21T15:01:17.310Z"}},"required":["value","ts"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}},"required":["values"],"additionalProperties":false},"http5xxResponses":{"type":"object","properties":{"metricInfo":{"type":"object","properties":{"metricId":{"type":"string","enum":["cpu","memory","networkIngress","networkEgress","tcpConnectionsOpen","diskUsage","requests","http4xxResponses","http5xxResponses","bandwidth","bandwidthVolume"],"description":"Type of metric to fetch"},"metricUnit":{"type":"string","enum":["pct","vCPU","mb","kbps","rps","count"],"example":"pct"},"metricResolution":{"type":"number","format":"float","example":10}},"required":["metricId","metricUnit"],"additionalProperties":false},"values":{"type":"array","items":{"type":"object","properties":{"metadata":{"type":"object","properties":{"containerId":{"type":"string","example":"nginx-669cc865b7-5458n"},"volumeId":{"type":"string","example":"data-volume-1"}},"required":["containerId"],"additionalProperties":false},"data":{"type":"array","items":{"type":"object","properties":{"value":{"type":"number","format":"float","example":0.5},"ts":{"type":"string","format":"date-time","example":"2023-03-21T15:01:17.310Z"}},"required":["value","ts"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}},"required":["values"],"additionalProperties":false},"bandwidth":{"type":"object","properties":{"metricInfo":{"type":"object","properties":{"metricId":{"type":"string","enum":["cpu","memory","networkIngress","networkEgress","tcpConnectionsOpen","diskUsage","requests","http4xxResponses","http5xxResponses","bandwidth","bandwidthVolume"],"description":"Type of metric to fetch"},"metricUnit":{"type":"string","enum":["pct","vCPU","mb","kbps","rps","count"],"example":"pct"},"metricResolution":{"type":"number","format":"float","example":10}},"required":["metricId","metricUnit"],"additionalProperties":false},"values":{"type":"array","items":{"type":"object","properties":{"metadata":{"type":"object","properties":{"containerId":{"type":"string","example":"nginx-669cc865b7-5458n"},"volumeId":{"type":"string","example":"data-volume-1"}},"required":["containerId"],"additionalProperties":false},"data":{"type":"array","items":{"type":"object","properties":{"value":{"type":"number","format":"float","example":0.5},"ts":{"type":"string","format":"date-time","example":"2023-03-21T15:01:17.310Z"}},"required":["value","ts"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}},"required":["values"],"additionalProperties":false},"bandwidthVolume":{"type":"object","properties":{"metricInfo":{"type":"object","properties":{"metricId":{"type":"string","enum":["cpu","memory","networkIngress","networkEgress","tcpConnectionsOpen","diskUsage","requests","http4xxResponses","http5xxResponses","bandwidth","bandwidthVolume"],"description":"Type of metric to fetch"},"metricUnit":{"type":"string","enum":["pct","vCPU","mb","kbps","rps","count"],"example":"pct"},"metricResolution":{"type":"number","format":"float","example":10}},"required":["metricId","metricUnit"],"additionalProperties":false},"values":{"type":"array","items":{"type":"object","properties":{"metadata":{"type":"object","properties":{"containerId":{"type":"string","example":"nginx-669cc865b7-5458n"},"volumeId":{"type":"string","example":"data-volume-1"}},"required":["containerId"],"additionalProperties":false},"data":{"type":"array","items":{"type":"object","properties":{"value":{"type":"number","format":"float","example":0.5},"ts":{"type":"string","format":"date-time","example":"2023-03-21T15:01:17.310Z"}},"required":["value","ts"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}},"required":["values"],"additionalProperties":false}},"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Addons","project"],"security":[],"x-nf-jsclient":[{"title":"Range","description":"Query over a range","schema":{"type":"object","properties":{"containerName":{"type":"string","minLength":3,"maxLength":64,"description":"Limits metrics to a specific container.","example":"my-container-67d6d748c5-kgvwh","default":"all"},"metricTypes":{"type":"string","enum":["cpu","memory","networkIngress","networkEgress","tcpConnectionsOpen","diskUsage","requests","http4xxResponses","http5xxResponses","bandwidth","bandwidthVolume"],"description":"Type of metric. Multiple metric types can be selected by specifying the query parameter repeatedly."},"startTime":{"type":"string","format":"date-time","description":"Fetch metrics generated after this timestamp. Only valid for queryType: `range`.","example":"2023-02-16T14:00:00.000Z"},"endTime":{"type":"string","format":"date-time","description":"Fetch metrics generated before this timestamp. Only valid for queryType: `range`.","example":"2023-02-16T15:00:00.000Z"},"duration":{"type":"integer","description":"Range duration in seconds. If set, only one of `startTime` or `endTime` can be set.","example":600}},"additionalProperties":false},"x-nf-cli-command":["get","addon","metrics-range"]},{"title":"Single","description":"Query a specific timestamp","schema":{"type":"object","properties":{"containerName":{"type":"string","minLength":3,"maxLength":64,"description":"Limits metrics to a specific container.","example":"my-container-67d6d748c5-kgvwh","default":"all"},"metricTypes":{"type":"string","enum":["cpu","memory","networkIngress","networkEgress","tcpConnectionsOpen","diskUsage","requests","http4xxResponses","http5xxResponses","bandwidth","bandwidthVolume"],"description":"Type of metric. Multiple metric types can be selected by specifying the query parameter repeatedly."},"timestamp":{"type":"string","format":"date-time","description":"Fetch metrics at this timestamp. If not provided will use current time. Only valid for queryType: `single`.","example":"2023-02-16T14:00:00.000Z"}},"additionalProperties":false},"x-nf-cli-command":["get","addon","metrics"]}],"x-nf-permission-required":"Project > Addons > Deployment > View Instance Metrics","x-nf-team-scoped":true,"x-nf-cli-command":["get","addon","metrics"]},"v1-projects--projectId--addons--addonId--metrics-get-team-scoped":{"operationId":"getProjectsAddonsAddonidMetrics","summary":"Get addon metrics","description":"Get metrics for an addon","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"addonId","type":"string","required":true,"description":"ID of the addon","example":"example-addon","in":"path","schema":{"name":"addonId","type":"string","required":true,"description":"ID of the addon","example":"example-addon","in":"path"}},{"name":"containerName","type":"string","minLength":3,"maxLength":64,"description":"Limits metrics to a specific container.","examples":["my-container-67d6d748c5-kgvwh","my-container-67d6d748c5-kgvwh"],"default":"all","in":"query","schema":{"name":"containerName","type":"string","minLength":3,"maxLength":64,"description":"Limits metrics to a specific container.","examples":["my-container-67d6d748c5-kgvwh","my-container-67d6d748c5-kgvwh"],"default":"all","in":"query"}},{"name":"queryType","type":"string","enum":["range","single"],"description":"Selects metrics for specified timestamp.","examples":["range","single"],"default":"single","in":"query","schema":{"name":"queryType","type":"string","enum":["range","single"],"description":"Selects metrics for specified timestamp.","examples":["range","single"],"default":"single","in":"query"}},{"name":"metricTypes","type":"string","enum":["cpu","memory","networkIngress","networkEgress","tcpConnectionsOpen","diskUsage","requests","http4xxResponses","http5xxResponses","bandwidth","bandwidthVolume"],"description":"Type of metric. Multiple metric types can be selected by specifying the query parameter repeatedly.","in":"query","schema":{"name":"metricTypes","type":"string","enum":["cpu","memory","networkIngress","networkEgress","tcpConnectionsOpen","diskUsage","requests","http4xxResponses","http5xxResponses","bandwidth","bandwidthVolume"],"description":"Type of metric. Multiple metric types can be selected by specifying the query parameter repeatedly.","in":"query"}},{"name":"startTime","type":"string","format":"date-time","description":"Fetch metrics generated after this timestamp. Only valid for queryType: `range`.","example":"2023-02-16T14:00:00.000Z","in":"query","schema":{"name":"startTime","type":"string","format":"date-time","description":"Fetch metrics generated after this timestamp. Only valid for queryType: `range`.","example":"2023-02-16T14:00:00.000Z","in":"query"}},{"name":"endTime","type":"string","format":"date-time","description":"Fetch metrics generated before this timestamp. Only valid for queryType: `range`.","example":"2023-02-16T15:00:00.000Z","in":"query","schema":{"name":"endTime","type":"string","format":"date-time","description":"Fetch metrics generated before this timestamp. Only valid for queryType: `range`.","example":"2023-02-16T15:00:00.000Z","in":"query"}},{"name":"duration","type":"integer","description":"Range duration in seconds. If set, only one of `startTime` or `endTime` can be set.","example":600,"in":"query","schema":{"name":"duration","type":"integer","description":"Range duration in seconds. If set, only one of `startTime` or `endTime` can be set.","example":600,"in":"query"}},{"name":"time","type":"string","format":"date-time","description":"Fetch metrics at this timestamp. If not provided will use current time. Only valid for queryType: `single`.","example":"2023-02-16T14:00:00.000Z","in":"query","schema":{"name":"time","type":"string","format":"date-time","description":"Fetch metrics at this timestamp. If not provided will use current time. Only valid for queryType: `single`.","example":"2023-02-16T14:00:00.000Z","in":"query"}}],"responses":{"200":{"description":"List of metrics values","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"cpu":{"type":"object","properties":{"metricInfo":{"type":"object","properties":{"metricId":{"type":"string","enum":["cpu","memory","networkIngress","networkEgress","tcpConnectionsOpen","diskUsage","requests","http4xxResponses","http5xxResponses","bandwidth","bandwidthVolume"],"description":"Type of metric to fetch"},"metricUnit":{"type":"string","enum":["pct","vCPU","mb","kbps","rps","count"],"example":"pct"},"metricResolution":{"type":"number","format":"float","example":10}},"required":["metricId","metricUnit"],"additionalProperties":false},"values":{"type":"array","items":{"type":"object","properties":{"metadata":{"type":"object","properties":{"containerId":{"type":"string","example":"nginx-669cc865b7-5458n"},"volumeId":{"type":"string","example":"data-volume-1"}},"required":["containerId"],"additionalProperties":false},"data":{"type":"array","items":{"type":"object","properties":{"value":{"type":"number","format":"float","example":0.5},"ts":{"type":"string","format":"date-time","example":"2023-03-21T15:01:17.310Z"}},"required":["value","ts"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}},"required":["values"],"additionalProperties":false},"memory":{"type":"object","properties":{"metricInfo":{"type":"object","properties":{"metricId":{"type":"string","enum":["cpu","memory","networkIngress","networkEgress","tcpConnectionsOpen","diskUsage","requests","http4xxResponses","http5xxResponses","bandwidth","bandwidthVolume"],"description":"Type of metric to fetch"},"metricUnit":{"type":"string","enum":["pct","vCPU","mb","kbps","rps","count"],"example":"pct"},"metricResolution":{"type":"number","format":"float","example":10}},"required":["metricId","metricUnit"],"additionalProperties":false},"values":{"type":"array","items":{"type":"object","properties":{"metadata":{"type":"object","properties":{"containerId":{"type":"string","example":"nginx-669cc865b7-5458n"},"volumeId":{"type":"string","example":"data-volume-1"}},"required":["containerId"],"additionalProperties":false},"data":{"type":"array","items":{"type":"object","properties":{"value":{"type":"number","format":"float","example":0.5},"ts":{"type":"string","format":"date-time","example":"2023-03-21T15:01:17.310Z"}},"required":["value","ts"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}},"required":["values"],"additionalProperties":false},"networkIngress":{"type":"object","properties":{"metricInfo":{"type":"object","properties":{"metricId":{"type":"string","enum":["cpu","memory","networkIngress","networkEgress","tcpConnectionsOpen","diskUsage","requests","http4xxResponses","http5xxResponses","bandwidth","bandwidthVolume"],"description":"Type of metric to fetch"},"metricUnit":{"type":"string","enum":["pct","vCPU","mb","kbps","rps","count"],"example":"pct"},"metricResolution":{"type":"number","format":"float","example":10}},"required":["metricId","metricUnit"],"additionalProperties":false},"values":{"type":"array","items":{"type":"object","properties":{"metadata":{"type":"object","properties":{"containerId":{"type":"string","example":"nginx-669cc865b7-5458n"},"volumeId":{"type":"string","example":"data-volume-1"}},"required":["containerId"],"additionalProperties":false},"data":{"type":"array","items":{"type":"object","properties":{"value":{"type":"number","format":"float","example":0.5},"ts":{"type":"string","format":"date-time","example":"2023-03-21T15:01:17.310Z"}},"required":["value","ts"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}},"required":["values"],"additionalProperties":false},"networkEgress":{"type":"object","properties":{"metricInfo":{"type":"object","properties":{"metricId":{"type":"string","enum":["cpu","memory","networkIngress","networkEgress","tcpConnectionsOpen","diskUsage","requests","http4xxResponses","http5xxResponses","bandwidth","bandwidthVolume"],"description":"Type of metric to fetch"},"metricUnit":{"type":"string","enum":["pct","vCPU","mb","kbps","rps","count"],"example":"pct"},"metricResolution":{"type":"number","format":"float","example":10}},"required":["metricId","metricUnit"],"additionalProperties":false},"values":{"type":"array","items":{"type":"object","properties":{"metadata":{"type":"object","properties":{"containerId":{"type":"string","example":"nginx-669cc865b7-5458n"},"volumeId":{"type":"string","example":"data-volume-1"}},"required":["containerId"],"additionalProperties":false},"data":{"type":"array","items":{"type":"object","properties":{"value":{"type":"number","format":"float","example":0.5},"ts":{"type":"string","format":"date-time","example":"2023-03-21T15:01:17.310Z"}},"required":["value","ts"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}},"required":["values"],"additionalProperties":false},"tcpConnectionsOpen":{"type":"object","properties":{"metricInfo":{"type":"object","properties":{"metricId":{"type":"string","enum":["cpu","memory","networkIngress","networkEgress","tcpConnectionsOpen","diskUsage","requests","http4xxResponses","http5xxResponses","bandwidth","bandwidthVolume"],"description":"Type of metric to fetch"},"metricUnit":{"type":"string","enum":["pct","vCPU","mb","kbps","rps","count"],"example":"pct"},"metricResolution":{"type":"number","format":"float","example":10}},"required":["metricId","metricUnit"],"additionalProperties":false},"values":{"type":"array","items":{"type":"object","properties":{"metadata":{"type":"object","properties":{"containerId":{"type":"string","example":"nginx-669cc865b7-5458n"},"volumeId":{"type":"string","example":"data-volume-1"}},"required":["containerId"],"additionalProperties":false},"data":{"type":"array","items":{"type":"object","properties":{"value":{"type":"number","format":"float","example":0.5},"ts":{"type":"string","format":"date-time","example":"2023-03-21T15:01:17.310Z"}},"required":["value","ts"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}},"required":["values"],"additionalProperties":false},"diskUsage":{"type":"object","properties":{"metricInfo":{"type":"object","properties":{"metricId":{"type":"string","enum":["cpu","memory","networkIngress","networkEgress","tcpConnectionsOpen","diskUsage","requests","http4xxResponses","http5xxResponses","bandwidth","bandwidthVolume"],"description":"Type of metric to fetch"},"metricUnit":{"type":"string","enum":["pct","vCPU","mb","kbps","rps","count"],"example":"pct"},"metricResolution":{"type":"number","format":"float","example":10}},"required":["metricId","metricUnit"],"additionalProperties":false},"values":{"type":"array","items":{"type":"object","properties":{"metadata":{"type":"object","properties":{"containerId":{"type":"string","example":"nginx-669cc865b7-5458n"},"volumeId":{"type":"string","example":"data-volume-1"}},"required":["containerId"],"additionalProperties":false},"data":{"type":"array","items":{"type":"object","properties":{"value":{"type":"number","format":"float","example":0.5},"ts":{"type":"string","format":"date-time","example":"2023-03-21T15:01:17.310Z"}},"required":["value","ts"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}},"required":["values"],"additionalProperties":false},"requests":{"type":"object","properties":{"metricInfo":{"type":"object","properties":{"metricId":{"type":"string","enum":["cpu","memory","networkIngress","networkEgress","tcpConnectionsOpen","diskUsage","requests","http4xxResponses","http5xxResponses","bandwidth","bandwidthVolume"],"description":"Type of metric to fetch"},"metricUnit":{"type":"string","enum":["pct","vCPU","mb","kbps","rps","count"],"example":"pct"},"metricResolution":{"type":"number","format":"float","example":10}},"required":["metricId","metricUnit"],"additionalProperties":false},"values":{"type":"array","items":{"type":"object","properties":{"metadata":{"type":"object","properties":{"containerId":{"type":"string","example":"nginx-669cc865b7-5458n"},"volumeId":{"type":"string","example":"data-volume-1"}},"required":["containerId"],"additionalProperties":false},"data":{"type":"array","items":{"type":"object","properties":{"value":{"type":"number","format":"float","example":0.5},"ts":{"type":"string","format":"date-time","example":"2023-03-21T15:01:17.310Z"}},"required":["value","ts"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}},"required":["values"],"additionalProperties":false},"http4xxResponses":{"type":"object","properties":{"metricInfo":{"type":"object","properties":{"metricId":{"type":"string","enum":["cpu","memory","networkIngress","networkEgress","tcpConnectionsOpen","diskUsage","requests","http4xxResponses","http5xxResponses","bandwidth","bandwidthVolume"],"description":"Type of metric to fetch"},"metricUnit":{"type":"string","enum":["pct","vCPU","mb","kbps","rps","count"],"example":"pct"},"metricResolution":{"type":"number","format":"float","example":10}},"required":["metricId","metricUnit"],"additionalProperties":false},"values":{"type":"array","items":{"type":"object","properties":{"metadata":{"type":"object","properties":{"containerId":{"type":"string","example":"nginx-669cc865b7-5458n"},"volumeId":{"type":"string","example":"data-volume-1"}},"required":["containerId"],"additionalProperties":false},"data":{"type":"array","items":{"type":"object","properties":{"value":{"type":"number","format":"float","example":0.5},"ts":{"type":"string","format":"date-time","example":"2023-03-21T15:01:17.310Z"}},"required":["value","ts"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}},"required":["values"],"additionalProperties":false},"http5xxResponses":{"type":"object","properties":{"metricInfo":{"type":"object","properties":{"metricId":{"type":"string","enum":["cpu","memory","networkIngress","networkEgress","tcpConnectionsOpen","diskUsage","requests","http4xxResponses","http5xxResponses","bandwidth","bandwidthVolume"],"description":"Type of metric to fetch"},"metricUnit":{"type":"string","enum":["pct","vCPU","mb","kbps","rps","count"],"example":"pct"},"metricResolution":{"type":"number","format":"float","example":10}},"required":["metricId","metricUnit"],"additionalProperties":false},"values":{"type":"array","items":{"type":"object","properties":{"metadata":{"type":"object","properties":{"containerId":{"type":"string","example":"nginx-669cc865b7-5458n"},"volumeId":{"type":"string","example":"data-volume-1"}},"required":["containerId"],"additionalProperties":false},"data":{"type":"array","items":{"type":"object","properties":{"value":{"type":"number","format":"float","example":0.5},"ts":{"type":"string","format":"date-time","example":"2023-03-21T15:01:17.310Z"}},"required":["value","ts"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}},"required":["values"],"additionalProperties":false},"bandwidth":{"type":"object","properties":{"metricInfo":{"type":"object","properties":{"metricId":{"type":"string","enum":["cpu","memory","networkIngress","networkEgress","tcpConnectionsOpen","diskUsage","requests","http4xxResponses","http5xxResponses","bandwidth","bandwidthVolume"],"description":"Type of metric to fetch"},"metricUnit":{"type":"string","enum":["pct","vCPU","mb","kbps","rps","count"],"example":"pct"},"metricResolution":{"type":"number","format":"float","example":10}},"required":["metricId","metricUnit"],"additionalProperties":false},"values":{"type":"array","items":{"type":"object","properties":{"metadata":{"type":"object","properties":{"containerId":{"type":"string","example":"nginx-669cc865b7-5458n"},"volumeId":{"type":"string","example":"data-volume-1"}},"required":["containerId"],"additionalProperties":false},"data":{"type":"array","items":{"type":"object","properties":{"value":{"type":"number","format":"float","example":0.5},"ts":{"type":"string","format":"date-time","example":"2023-03-21T15:01:17.310Z"}},"required":["value","ts"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}},"required":["values"],"additionalProperties":false},"bandwidthVolume":{"type":"object","properties":{"metricInfo":{"type":"object","properties":{"metricId":{"type":"string","enum":["cpu","memory","networkIngress","networkEgress","tcpConnectionsOpen","diskUsage","requests","http4xxResponses","http5xxResponses","bandwidth","bandwidthVolume"],"description":"Type of metric to fetch"},"metricUnit":{"type":"string","enum":["pct","vCPU","mb","kbps","rps","count"],"example":"pct"},"metricResolution":{"type":"number","format":"float","example":10}},"required":["metricId","metricUnit"],"additionalProperties":false},"values":{"type":"array","items":{"type":"object","properties":{"metadata":{"type":"object","properties":{"containerId":{"type":"string","example":"nginx-669cc865b7-5458n"},"volumeId":{"type":"string","example":"data-volume-1"}},"required":["containerId"],"additionalProperties":false},"data":{"type":"array","items":{"type":"object","properties":{"value":{"type":"number","format":"float","example":0.5},"ts":{"type":"string","format":"date-time","example":"2023-03-21T15:01:17.310Z"}},"required":["value","ts"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}},"required":["values"],"additionalProperties":false}},"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Addons","project"],"security":[],"x-nf-jsclient":[{"title":"Range","description":"Query over a range","schema":{"type":"object","properties":{"containerName":{"type":"string","minLength":3,"maxLength":64,"description":"Limits metrics to a specific container.","example":"my-container-67d6d748c5-kgvwh","default":"all"},"metricTypes":{"type":"string","enum":["cpu","memory","networkIngress","networkEgress","tcpConnectionsOpen","diskUsage","requests","http4xxResponses","http5xxResponses","bandwidth","bandwidthVolume"],"description":"Type of metric. Multiple metric types can be selected by specifying the query parameter repeatedly."},"startTime":{"type":"string","format":"date-time","description":"Fetch metrics generated after this timestamp. Only valid for queryType: `range`.","example":"2023-02-16T14:00:00.000Z"},"endTime":{"type":"string","format":"date-time","description":"Fetch metrics generated before this timestamp. Only valid for queryType: `range`.","example":"2023-02-16T15:00:00.000Z"},"duration":{"type":"integer","description":"Range duration in seconds. If set, only one of `startTime` or `endTime` can be set.","example":600}},"additionalProperties":false},"x-nf-cli-command":["get","addon","metrics-range"]},{"title":"Single","description":"Query a specific timestamp","schema":{"type":"object","properties":{"containerName":{"type":"string","minLength":3,"maxLength":64,"description":"Limits metrics to a specific container.","example":"my-container-67d6d748c5-kgvwh","default":"all"},"metricTypes":{"type":"string","enum":["cpu","memory","networkIngress","networkEgress","tcpConnectionsOpen","diskUsage","requests","http4xxResponses","http5xxResponses","bandwidth","bandwidthVolume"],"description":"Type of metric. Multiple metric types can be selected by specifying the query parameter repeatedly."},"timestamp":{"type":"string","format":"date-time","description":"Fetch metrics at this timestamp. If not provided will use current time. Only valid for queryType: `single`.","example":"2023-02-16T14:00:00.000Z"}},"additionalProperties":false},"x-nf-cli-command":["get","addon","metrics"]}],"x-nf-permission-required":"Project > Addons > Deployment > View Instance Metrics","x-nf-team-scoped":true,"x-nf-cli-command":["get","addon","metrics"]},"v1-projects--projectId--addons--addonId--network-settings-post":{"operationId":"postProjectsAddonsAddonidNetworkSettings","summary":"Update addon network settings","description":"Updates the network settings for the addon.","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"addonId","type":"string","required":true,"description":"ID of the addon","example":"example-addon","in":"path","schema":{"name":"addonId","type":"string","required":true,"description":"ID of the addon","example":"example-addon","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Addons","project"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"tlsEnabled":{"type":"boolean","description":"If `true`, a TLS certificate will be provisioned for the addon.","example":true},"externalAccessEnabled":{"type":"boolean","description":"If `true`, the addon will be given a public URL and will be accessible from the internet. `tlsEnabled` must be `true` to set this as `true`.","example":true}},"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Project > Addons > General > Update","x-nf-team-scoped":true,"x-nf-cli-command":["update","addon","network-settings"],"x-nf-deprecation-replacement":"/addons/patch-addon","x-nf-deprecation-message":"Requests should instead use the relevant PATCH endpoint."},"v1-projects--projectId--addons--addonId--network-settings-post-team-scoped":{"operationId":"postProjectsAddonsAddonidNetworkSettings","summary":"Update addon network settings","description":"Updates the network settings for the addon.","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"addonId","type":"string","required":true,"description":"ID of the addon","example":"example-addon","in":"path","schema":{"name":"addonId","type":"string","required":true,"description":"ID of the addon","example":"example-addon","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Addons","project"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"tlsEnabled":{"type":"boolean","description":"If `true`, a TLS certificate will be provisioned for the addon.","example":true},"externalAccessEnabled":{"type":"boolean","description":"If `true`, the addon will be given a public URL and will be accessible from the internet. `tlsEnabled` must be `true` to set this as `true`.","example":true}},"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Project > Addons > General > Update","x-nf-team-scoped":true,"x-nf-cli-command":["update","addon","network-settings"],"x-nf-deprecation-replacement":"/addons/patch-addon","x-nf-deprecation-message":"Requests should instead use the relevant PATCH endpoint."},"v1-projects--projectId--addons--addonId--pause-post":{"operationId":"postProjectsAddonsAddonidPause","summary":"Pause addon","description":"Pause the given addon.","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"addonId","type":"string","required":true,"description":"ID of the addon","example":"example-addon","in":"path","schema":{"name":"addonId","type":"string","required":true,"description":"ID of the addon","example":"example-addon","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Addons","project"],"security":[],"x-nf-permission-required":"Project > Addons > General > Update","x-nf-team-scoped":true,"x-nf-cli-command":["pause","addon"]},"v1-projects--projectId--addons--addonId--pause-post-team-scoped":{"operationId":"postProjectsAddonsAddonidPause","summary":"Pause addon","description":"Pause the given addon.","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"addonId","type":"string","required":true,"description":"ID of the addon","example":"example-addon","in":"path","schema":{"name":"addonId","type":"string","required":true,"description":"ID of the addon","example":"example-addon","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Addons","project"],"security":[],"x-nf-permission-required":"Project > Addons > General > Update","x-nf-team-scoped":true,"x-nf-cli-command":["pause","addon"]},"v1-projects--projectId--addons--addonId--reset-post":{"operationId":"postProjectsAddonsAddonidReset","summary":"Reset addon","description":"Reset the given addon.","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"addonId","type":"string","required":true,"description":"ID of the addon","example":"example-addon","in":"path","schema":{"name":"addonId","type":"string","required":true,"description":"ID of the addon","example":"example-addon","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Addons","project"],"security":[],"x-nf-permission-required":"Project > Addons > General > Delete","x-nf-team-scoped":true,"x-nf-cli-command":["reset","addon"]},"v1-projects--projectId--addons--addonId--reset-post-team-scoped":{"operationId":"postProjectsAddonsAddonidReset","summary":"Reset addon","description":"Reset the given addon.","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"addonId","type":"string","required":true,"description":"ID of the addon","example":"example-addon","in":"path","schema":{"name":"addonId","type":"string","required":true,"description":"ID of the addon","example":"example-addon","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Addons","project"],"security":[],"x-nf-permission-required":"Project > Addons > General > Delete","x-nf-team-scoped":true,"x-nf-cli-command":["reset","addon"]},"v1-projects--projectId--addons--addonId--restart-post":{"operationId":"postProjectsAddonsAddonidRestart","summary":"Restart addon","description":"Restart the given addon.","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"addonId","type":"string","required":true,"description":"ID of the addon","example":"example-addon","in":"path","schema":{"name":"addonId","type":"string","required":true,"description":"ID of the addon","example":"example-addon","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Addons","project"],"security":[],"x-nf-permission-required":"Project > Addons > General > Update","x-nf-team-scoped":true,"x-nf-cli-command":["restart","addon"]},"v1-projects--projectId--addons--addonId--restart-post-team-scoped":{"operationId":"postProjectsAddonsAddonidRestart","summary":"Restart addon","description":"Restart the given addon.","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"addonId","type":"string","required":true,"description":"ID of the addon","example":"example-addon","in":"path","schema":{"name":"addonId","type":"string","required":true,"description":"ID of the addon","example":"example-addon","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Addons","project"],"security":[],"x-nf-permission-required":"Project > Addons > General > Update","x-nf-team-scoped":true,"x-nf-cli-command":["restart","addon"]},"v1-projects--projectId--addons--addonId--restores-get":{"operationId":"getProjectsAddonsAddonidRestores","summary":"List addon restores","description":"Returns a list of restores for the given addon.","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"addonId","type":"string","required":true,"description":"ID of the addon","example":"example-addon","in":"path","schema":{"name":"addonId","type":"string","required":true,"description":"ID of the addon","example":"example-addon","in":"path"}},{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query","schema":{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query"}},{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query","schema":{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query"}},{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query","schema":{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query"}}],"responses":{"200":{"description":"A list of restores for the addon.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"restores":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"The identifier for the backup.","example":"668596c647fed81696a8a82c"},"status":{"type":"string","enum":["scheduled","in-progress","completed","aborting","aborted","failed","not-supported"],"description":"The current status of the backup.","example":"completed"},"restoreTimestamp":{"type":"string","format":"date-time","description":"The time the backup was initiated.","example":"2021-01-20T11:19:54.494Z"},"completedAt":{"type":"string","format":"date-time","description":"The time the restore was completed.","example":"2021-01-20T11:19:54.494Z"},"backupId":{"type":"string","description":"The identifier for the backup.","example":"example-backup"}},"required":["id","status","restoreTimestamp","backupId"],"additionalProperties":false,"description":"Data about a restore."},"description":"A list of restores for the given addon."}},"required":["restores"],"additionalProperties":false,"description":"Result data."},"pagination":{"type":"object","properties":{"hasNextPage":{"type":"boolean","description":"Is there another page of results available?","example":false},"cursor":{"type":"string","description":"The cursor to access the next page of results."},"count":{"type":"number","format":"float","description":"The number of results returned by this request.","example":1}},"required":["hasNextPage","count"],"additionalProperties":false,"description":"Data about the endpoint pagination."}},"required":["data","pagination"],"additionalProperties":false,"description":"Response object."}}},"tags":["Addons","project"],"security":[],"x-nf-permission-required":"Project > Addons > General > Read","x-nf-team-scoped":true,"x-nf-cli-command":["get","addon","restores"]},"v1-projects--projectId--addons--addonId--restores-get-team-scoped":{"operationId":"getProjectsAddonsAddonidRestores","summary":"List addon restores","description":"Returns a list of restores for the given addon.","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"addonId","type":"string","required":true,"description":"ID of the addon","example":"example-addon","in":"path","schema":{"name":"addonId","type":"string","required":true,"description":"ID of the addon","example":"example-addon","in":"path"}},{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query","schema":{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query"}},{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query","schema":{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query"}},{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query","schema":{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query"}}],"responses":{"200":{"description":"A list of restores for the addon.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"restores":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"The identifier for the backup.","example":"668596c647fed81696a8a82c"},"status":{"type":"string","enum":["scheduled","in-progress","completed","aborting","aborted","failed","not-supported"],"description":"The current status of the backup.","example":"completed"},"restoreTimestamp":{"type":"string","format":"date-time","description":"The time the backup was initiated.","example":"2021-01-20T11:19:54.494Z"},"completedAt":{"type":"string","format":"date-time","description":"The time the restore was completed.","example":"2021-01-20T11:19:54.494Z"},"backupId":{"type":"string","description":"The identifier for the backup.","example":"example-backup"}},"required":["id","status","restoreTimestamp","backupId"],"additionalProperties":false,"description":"Data about a restore."},"description":"A list of restores for the given addon."}},"required":["restores"],"additionalProperties":false,"description":"Result data."},"pagination":{"type":"object","properties":{"hasNextPage":{"type":"boolean","description":"Is there another page of results available?","example":false},"cursor":{"type":"string","description":"The cursor to access the next page of results."},"count":{"type":"number","format":"float","description":"The number of results returned by this request.","example":1}},"required":["hasNextPage","count"],"additionalProperties":false,"description":"Data about the endpoint pagination."}},"required":["data","pagination"],"additionalProperties":false,"description":"Response object."}}},"tags":["Addons","project"],"security":[],"x-nf-permission-required":"Project > Addons > General > Read","x-nf-team-scoped":true,"x-nf-cli-command":["get","addon","restores"]},"v1-projects--projectId--addons--addonId--resume-post":{"operationId":"postProjectsAddonsAddonidResume","summary":"Resume addon","description":"Resume the given addon if it is paused.","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"addonId","type":"string","required":true,"description":"ID of the addon","example":"example-addon","in":"path","schema":{"name":"addonId","type":"string","required":true,"description":"ID of the addon","example":"example-addon","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Addons","project"],"security":[],"x-nf-permission-required":"Project > Addons > General > Update","x-nf-team-scoped":true,"x-nf-cli-command":["resume","addon"]},"v1-projects--projectId--addons--addonId--resume-post-team-scoped":{"operationId":"postProjectsAddonsAddonidResume","summary":"Resume addon","description":"Resume the given addon if it is paused.","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"addonId","type":"string","required":true,"description":"ID of the addon","example":"example-addon","in":"path","schema":{"name":"addonId","type":"string","required":true,"description":"ID of the addon","example":"example-addon","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Addons","project"],"security":[],"x-nf-permission-required":"Project > Addons > General > Update","x-nf-team-scoped":true,"x-nf-cli-command":["resume","addon"]},"v1-projects--projectId--addons--addonId--scale-post":{"operationId":"postProjectsAddonsAddonidScale","summary":"Scale addon resources","description":"Modifies the allocated resources for the given addon.","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"addonId","type":"string","required":true,"description":"ID of the addon","example":"example-addon","in":"path","schema":{"name":"addonId","type":"string","required":true,"description":"ID of the addon","example":"example-addon","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Addons","project"],"security":[],"deprecated":true,"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"deploymentPlan":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The ID of the deployment plan to use.","example":"nf-compute-20"},"storage":{"type":"integer","minimum":1,"description":"The size of the addon storage, in megabytes.","example":1024},"replicas":{"type":"integer","minimum":0,"description":"The number of addon replicas to run.","example":1}},"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Project > Addons > General > Update","x-nf-team-scoped":true,"x-nf-cli-command":["scale","addon"],"x-nf-deprecation-replacement":"/addons/patch-addon","x-nf-deprecation-message":"Requests should instead use the relevant PATCH endpoint."},"v1-projects--projectId--addons--addonId--scale-post-team-scoped":{"operationId":"postProjectsAddonsAddonidScale","summary":"Scale addon resources","description":"Modifies the allocated resources for the given addon.","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"addonId","type":"string","required":true,"description":"ID of the addon","example":"example-addon","in":"path","schema":{"name":"addonId","type":"string","required":true,"description":"ID of the addon","example":"example-addon","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Addons","project"],"security":[],"deprecated":true,"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"deploymentPlan":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The ID of the deployment plan to use.","example":"nf-compute-20"},"storage":{"type":"integer","minimum":1,"description":"The size of the addon storage, in megabytes.","example":1024},"replicas":{"type":"integer","minimum":0,"description":"The number of addon replicas to run.","example":1}},"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Project > Addons > General > Update","x-nf-team-scoped":true,"x-nf-cli-command":["scale","addon"],"x-nf-deprecation-replacement":"/addons/patch-addon","x-nf-deprecation-message":"Requests should instead use the relevant PATCH endpoint."},"v1-projects--projectId--addons--addonId--security-post":{"operationId":"postProjectsAddonsAddonidSecurity","summary":"Update addon security rules","description":"Updates the security rules for the addon.","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"addonId","type":"string","required":true,"description":"ID of the addon","example":"example-addon","in":"path","schema":{"name":"addonId","type":"string","required":true,"description":"ID of the addon","example":"example-addon","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Addons","project"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"ipPolicies":{"type":"array","items":{"type":"object","properties":{"address":{"type":"string","description":"An IP address used by this rule.","example":"127.0.0.1"},"action":{"type":"string","enum":["ALLOW","DENY"],"description":"The action for this rule.","example":"ALLOW","default":"ALLOW"}},"required":["address"],"additionalProperties":false,"description":"Data about an IP policy rule."},"uniqueItems":true,"description":"An array of IP policy rules."}},"required":["ipPolicies"],"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Project > Addons > General > Update","x-nf-team-scoped":true,"x-nf-cli-command":["update","addon","security"],"x-nf-deprecation-replacement":"/addons/patch-addon","x-nf-deprecation-message":"Requests should instead use the relevant PATCH endpoint."},"v1-projects--projectId--addons--addonId--security-post-team-scoped":{"operationId":"postProjectsAddonsAddonidSecurity","summary":"Update addon security rules","description":"Updates the security rules for the addon.","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"addonId","type":"string","required":true,"description":"ID of the addon","example":"example-addon","in":"path","schema":{"name":"addonId","type":"string","required":true,"description":"ID of the addon","example":"example-addon","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Addons","project"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"ipPolicies":{"type":"array","items":{"type":"object","properties":{"address":{"type":"string","description":"An IP address used by this rule.","example":"127.0.0.1"},"action":{"type":"string","enum":["ALLOW","DENY"],"description":"The action for this rule.","example":"ALLOW","default":"ALLOW"}},"required":["address"],"additionalProperties":false,"description":"Data about an IP policy rule."},"uniqueItems":true,"description":"An array of IP policy rules."}},"required":["ipPolicies"],"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Project > Addons > General > Update","x-nf-team-scoped":true,"x-nf-cli-command":["update","addon","security"],"x-nf-deprecation-replacement":"/addons/patch-addon","x-nf-deprecation-message":"Requests should instead use the relevant PATCH endpoint."},"v1-projects--projectId--addons--addonId--version-get":{"operationId":"getProjectsAddonsAddonidVersion","summary":"Get addon version details","description":"Gets details about the current addon version including available upgrades and upgrade history.","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"addonId","type":"string","required":true,"description":"ID of the addon","example":"example-addon","in":"path","schema":{"name":"addonId","type":"string","required":true,"description":"ID of the addon","example":"example-addon","in":"path"}}],"responses":{"200":{"description":"Details about the current version of the addon.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"version":{"type":"string","description":"The version of the addon running.","example":"4.2.14"},"upgradeTo":{"type":"array","items":{"type":"object","properties":{"version":{"type":"string","description":"The version of the addon to upgrade to.","example":"4.2.15"},"type":{"type":"string","enum":["major","minor","patch"],"description":"Whether the version is a major or minor version.","example":"minor"}},"required":["version","type"],"additionalProperties":false},"description":"Available versions that the addon can be upgraded to."},"lifecycleStatus":{"type":"string","enum":["active","deprecated","discontinued"],"description":"The support status of the current addon version.","example":"deprecated"},"discontinuedBy":{"type":"string","description":"The date that the current addon version will be discontinued.","example":"01.08.2021"},"upgradeHistory":{"type":"array","items":{"type":"object","properties":{"upgradeId":{"type":"string","description":"The unique identifier of the addon upgrade.","example":"611d0da52cd838bbdeec4792"},"status":{"type":"object","properties":{"status":{"type":"string","enum":["scheduled","in-progress","completed","aborting","aborted","failed","not-supported"],"description":"The status of the addon upgrade.","example":"completed"}},"required":["status"],"additionalProperties":false,"description":"Details about the upgrade status."},"createdAt":{"type":"string","format":"date-time","description":"The time the upgrade was initiated.","example":"2021-08-18 13:39:49.475Z"},"upgradeType":{"type":"string","enum":["major","minor","patch"],"description":"Whether the version updated to is a major or minor version.","example":"minor"},"previousVersion":{"type":"string","description":"The version upgraded from.","example":"4.2.14"},"newVersion":{"type":"string","description":"The version upgraded to.","example":"4.2.15"},"completedAt":{"type":"string","format":"date-time","description":"The time the upgrade was completed.","example":"2021-08-18T13:40:51.685Z"}},"required":["upgradeId","status","createdAt","upgradeType","previousVersion","newVersion"],"additionalProperties":false,"description":"Details about a previous upgrade."},"description":"Data about the upgrade history of this addon."}},"required":["version","upgradeTo","lifecycleStatus","upgradeHistory"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Addons","project"],"security":[],"x-nf-permission-required":"Project > Addons > General > Read","x-nf-team-scoped":true,"x-nf-cli-command":["get","addon","version"]},"v1-projects--projectId--addons--addonId--version-get-team-scoped":{"operationId":"getProjectsAddonsAddonidVersion","summary":"Get addon version details","description":"Gets details about the current addon version including available upgrades and upgrade history.","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"addonId","type":"string","required":true,"description":"ID of the addon","example":"example-addon","in":"path","schema":{"name":"addonId","type":"string","required":true,"description":"ID of the addon","example":"example-addon","in":"path"}}],"responses":{"200":{"description":"Details about the current version of the addon.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"version":{"type":"string","description":"The version of the addon running.","example":"4.2.14"},"upgradeTo":{"type":"array","items":{"type":"object","properties":{"version":{"type":"string","description":"The version of the addon to upgrade to.","example":"4.2.15"},"type":{"type":"string","enum":["major","minor","patch"],"description":"Whether the version is a major or minor version.","example":"minor"}},"required":["version","type"],"additionalProperties":false},"description":"Available versions that the addon can be upgraded to."},"lifecycleStatus":{"type":"string","enum":["active","deprecated","discontinued"],"description":"The support status of the current addon version.","example":"deprecated"},"discontinuedBy":{"type":"string","description":"The date that the current addon version will be discontinued.","example":"01.08.2021"},"upgradeHistory":{"type":"array","items":{"type":"object","properties":{"upgradeId":{"type":"string","description":"The unique identifier of the addon upgrade.","example":"611d0da52cd838bbdeec4792"},"status":{"type":"object","properties":{"status":{"type":"string","enum":["scheduled","in-progress","completed","aborting","aborted","failed","not-supported"],"description":"The status of the addon upgrade.","example":"completed"}},"required":["status"],"additionalProperties":false,"description":"Details about the upgrade status."},"createdAt":{"type":"string","format":"date-time","description":"The time the upgrade was initiated.","example":"2021-08-18 13:39:49.475Z"},"upgradeType":{"type":"string","enum":["major","minor","patch"],"description":"Whether the version updated to is a major or minor version.","example":"minor"},"previousVersion":{"type":"string","description":"The version upgraded from.","example":"4.2.14"},"newVersion":{"type":"string","description":"The version upgraded to.","example":"4.2.15"},"completedAt":{"type":"string","format":"date-time","description":"The time the upgrade was completed.","example":"2021-08-18T13:40:51.685Z"}},"required":["upgradeId","status","createdAt","upgradeType","previousVersion","newVersion"],"additionalProperties":false,"description":"Details about a previous upgrade."},"description":"Data about the upgrade history of this addon."}},"required":["version","upgradeTo","lifecycleStatus","upgradeHistory"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Addons","project"],"security":[],"x-nf-permission-required":"Project > Addons > General > Read","x-nf-team-scoped":true,"x-nf-cli-command":["get","addon","version"]},"v1-projects--projectId--addons--addonId--version-post":{"operationId":"postProjectsAddonsAddonidVersion","summary":"Upgrade addon version","description":"Upgrades the addon to a new version.","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"addonId","type":"string","required":true,"description":"ID of the addon","example":"example-addon","in":"path","schema":{"name":"addonId","type":"string","required":true,"description":"ID of the addon","example":"example-addon","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Addons","project"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"version":{"type":"string","description":"The version to upgrade the addon to.","example":"4.2.15"}},"required":["version"],"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Project > Addons > General > Update","x-nf-team-scoped":true,"x-nf-cli-command":["update","addon","version"]},"v1-projects--projectId--addons--addonId--version-post-team-scoped":{"operationId":"postProjectsAddonsAddonidVersion","summary":"Upgrade addon version","description":"Upgrades the addon to a new version.","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"addonId","type":"string","required":true,"description":"ID of the addon","example":"example-addon","in":"path","schema":{"name":"addonId","type":"string","required":true,"description":"ID of the addon","example":"example-addon","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Addons","project"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"version":{"type":"string","description":"The version to upgrade the addon to.","example":"4.2.15"}},"required":["version"],"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Project > Addons > General > Update","x-nf-team-scoped":true,"x-nf-cli-command":["update","addon","version"]},"v1-projects--projectId--external-addons-get":{"operationId":"getProjectsExternalAddons","summary":"List external addons","description":"Gets a list of external addons belonging to the project","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query","schema":{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query"}},{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query","schema":{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query"}},{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query","schema":{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query"}},{"name":"resourceType","type":"string","description":"Filter by resource type (s3, rds)","example":"s3","in":"query","schema":{"name":"resourceType","type":"string","description":"Filter by resource type (s3, rds)","example":"s3","in":"query"}},{"name":"status","type":"string","description":"Filter by status (creating, active, error, deleting, deleted)","example":"active","in":"query","schema":{"name":"status","type":"string","description":"Filter by status (creating, active, error, deleting, deleted)","example":"active","in":"query"}}],"responses":{"200":{"description":"A list of external addons belonging to the project.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"data":{"type":"object","properties":{"externalAddons":{"type":"array","items":{"type":"object","properties":{"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"environmentId":{"type":"string"},"spec":{"type":"object","properties":{"resourceType":{"type":"string","enum":["s3","rds","cloudSql","memorystore"]},"provider":{"type":"object","properties":{"aws":{"type":"object","properties":{"region":{"type":"string","example":"eu-west-1"},"integrationId":{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","description":"Integration to use for this job."}},"required":["region","integrationId"],"additionalProperties":false},"google":{"type":"object","properties":{"project":{"type":"string"},"region":{"type":"string","example":"us-central1"},"zone":{"type":"string","example":"us-central1-c"},"integrationId":{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","description":"Integration to use for this job."}},"required":["project","integrationId"],"additionalProperties":false},"cloudflare":{"type":"object","properties":{"integrationId":{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","description":"Integration to use for this job."}},"required":["integrationId"],"additionalProperties":false},"aiven":{"type":"object","properties":{"integrationId":{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","description":"Integration to use for this job."}},"required":["integrationId"],"additionalProperties":false},"backblaze":{"type":"object","properties":{"integrationId":{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","description":"Integration to use for this job."}},"required":["integrationId"],"additionalProperties":false},"azure":{"type":"object","properties":{"integrationId":{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","description":"Integration to use for this job."}},"required":["integrationId"],"additionalProperties":false},"akamai":{"type":"object","properties":{"integrationId":{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","description":"Integration to use for this job."}},"required":["integrationId"],"additionalProperties":false}},"additionalProperties":false},"config":{"type":"object","properties":{},"additionalProperties":false},"outputs":{"type":"object","properties":{},"additionalProperties":false},"workloadIdentityId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100}},"required":["resourceType","config"],"additionalProperties":false},"name":{"type":"string","pattern":"^[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100}},"required":["name"],"additionalProperties":false,"description":"External addon object"},"description":"List of external addons"},"pagination":{"type":"object","properties":{"page":{"type":"integer","description":"Current page number"},"perPage":{"type":"integer","description":"Items per page"},"total":{"type":"integer","description":"Total number of items"}},"required":["page","perPage","total"],"additionalProperties":false,"description":"Pagination information"}},"required":["externalAddons","pagination"],"additionalProperties":false}},"required":["data"],"additionalProperties":false,"description":"Result data."},"pagination":{"type":"object","properties":{"hasNextPage":{"type":"boolean","description":"Is there another page of results available?","example":false},"cursor":{"type":"string","description":"The cursor to access the next page of results."},"count":{"type":"number","format":"float","description":"The number of results returned by this request.","example":1}},"required":["hasNextPage","count"],"additionalProperties":false,"description":"Data about the endpoint pagination."}},"required":["data","pagination"],"additionalProperties":false,"description":"Response object."}}},"tags":["External Addons","project"],"security":[],"x-nf-permission-required":"Project > ExternalAddons > General > Read","x-nf-team-scoped":true,"x-nf-cli-command":["list","external-addons"]},"v1-projects--projectId--external-addons-get-team-scoped":{"operationId":"getProjectsExternalAddons","summary":"List external addons","description":"Gets a list of external addons belonging to the project","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query","schema":{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query"}},{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query","schema":{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query"}},{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query","schema":{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query"}},{"name":"resourceType","type":"string","description":"Filter by resource type (s3, rds)","example":"s3","in":"query","schema":{"name":"resourceType","type":"string","description":"Filter by resource type (s3, rds)","example":"s3","in":"query"}},{"name":"status","type":"string","description":"Filter by status (creating, active, error, deleting, deleted)","example":"active","in":"query","schema":{"name":"status","type":"string","description":"Filter by status (creating, active, error, deleting, deleted)","example":"active","in":"query"}}],"responses":{"200":{"description":"A list of external addons belonging to the project.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"data":{"type":"object","properties":{"externalAddons":{"type":"array","items":{"type":"object","properties":{"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"environmentId":{"type":"string"},"spec":{"type":"object","properties":{"resourceType":{"type":"string","enum":["s3","rds","cloudSql","memorystore"]},"provider":{"type":"object","properties":{"aws":{"type":"object","properties":{"region":{"type":"string","example":"eu-west-1"},"integrationId":{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","description":"Integration to use for this job."}},"required":["region","integrationId"],"additionalProperties":false},"google":{"type":"object","properties":{"project":{"type":"string"},"region":{"type":"string","example":"us-central1"},"zone":{"type":"string","example":"us-central1-c"},"integrationId":{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","description":"Integration to use for this job."}},"required":["project","integrationId"],"additionalProperties":false},"cloudflare":{"type":"object","properties":{"integrationId":{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","description":"Integration to use for this job."}},"required":["integrationId"],"additionalProperties":false},"aiven":{"type":"object","properties":{"integrationId":{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","description":"Integration to use for this job."}},"required":["integrationId"],"additionalProperties":false},"backblaze":{"type":"object","properties":{"integrationId":{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","description":"Integration to use for this job."}},"required":["integrationId"],"additionalProperties":false},"azure":{"type":"object","properties":{"integrationId":{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","description":"Integration to use for this job."}},"required":["integrationId"],"additionalProperties":false},"akamai":{"type":"object","properties":{"integrationId":{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","description":"Integration to use for this job."}},"required":["integrationId"],"additionalProperties":false}},"additionalProperties":false},"config":{"type":"object","properties":{},"additionalProperties":false},"outputs":{"type":"object","properties":{},"additionalProperties":false},"workloadIdentityId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100}},"required":["resourceType","config"],"additionalProperties":false},"name":{"type":"string","pattern":"^[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100}},"required":["name"],"additionalProperties":false,"description":"External addon object"},"description":"List of external addons"},"pagination":{"type":"object","properties":{"page":{"type":"integer","description":"Current page number"},"perPage":{"type":"integer","description":"Items per page"},"total":{"type":"integer","description":"Total number of items"}},"required":["page","perPage","total"],"additionalProperties":false,"description":"Pagination information"}},"required":["externalAddons","pagination"],"additionalProperties":false}},"required":["data"],"additionalProperties":false,"description":"Result data."},"pagination":{"type":"object","properties":{"hasNextPage":{"type":"boolean","description":"Is there another page of results available?","example":false},"cursor":{"type":"string","description":"The cursor to access the next page of results."},"count":{"type":"number","format":"float","description":"The number of results returned by this request.","example":1}},"required":["hasNextPage","count"],"additionalProperties":false,"description":"Data about the endpoint pagination."}},"required":["data","pagination"],"additionalProperties":false,"description":"Response object."}}},"tags":["External Addons","project"],"security":[],"x-nf-permission-required":"Project > ExternalAddons > General > Read","x-nf-team-scoped":true,"x-nf-cli-command":["list","external-addons"]},"v1-projects--projectId--external-addons-post":{"operationId":"postProjectsExternalAddons","summary":"Create external addon","description":"Creates a new external addon (third-party cloud resource provisioned via OpenTofu)","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}}],"responses":{"200":{"description":"Details about the created external addon.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"environmentId":{"type":"string"},"spec":{"type":"object","properties":{"resourceType":{"type":"string","enum":["s3","rds","cloudSql","memorystore"]},"provider":{"type":"object","properties":{"aws":{"type":"object","properties":{"region":{"type":"string","example":"eu-west-1"},"integrationId":{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","description":"Integration to use for this job."}},"required":["region","integrationId"],"additionalProperties":false},"google":{"type":"object","properties":{"project":{"type":"string"},"region":{"type":"string","example":"us-central1"},"zone":{"type":"string","example":"us-central1-c"},"integrationId":{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","description":"Integration to use for this job."}},"required":["project","integrationId"],"additionalProperties":false},"cloudflare":{"type":"object","properties":{"integrationId":{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","description":"Integration to use for this job."}},"required":["integrationId"],"additionalProperties":false},"aiven":{"type":"object","properties":{"integrationId":{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","description":"Integration to use for this job."}},"required":["integrationId"],"additionalProperties":false},"backblaze":{"type":"object","properties":{"integrationId":{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","description":"Integration to use for this job."}},"required":["integrationId"],"additionalProperties":false},"azure":{"type":"object","properties":{"integrationId":{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","description":"Integration to use for this job."}},"required":["integrationId"],"additionalProperties":false},"akamai":{"type":"object","properties":{"integrationId":{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","description":"Integration to use for this job."}},"required":["integrationId"],"additionalProperties":false}},"additionalProperties":false},"config":{"type":"object","properties":{},"additionalProperties":false},"outputs":{"type":"object","properties":{},"additionalProperties":false},"workloadIdentityId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100}},"required":["resourceType","config"],"additionalProperties":false},"name":{"type":"string","pattern":"^[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100}},"required":["name"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["External Addons","project"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"environmentId":{"type":"string"},"spec":{"type":"object","properties":{"resourceType":{"type":"string","enum":["s3","rds","cloudSql","memorystore"]},"provider":{"type":"object","properties":{"aws":{"type":"object","properties":{"region":{"type":"string","example":"eu-west-1"},"integrationId":{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","description":"Integration to use for this job."}},"required":["region","integrationId"],"additionalProperties":false},"google":{"type":"object","properties":{"project":{"type":"string"},"region":{"type":"string","example":"us-central1"},"zone":{"type":"string","example":"us-central1-c"},"integrationId":{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","description":"Integration to use for this job."}},"required":["project","integrationId"],"additionalProperties":false},"cloudflare":{"type":"object","properties":{"integrationId":{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","description":"Integration to use for this job."}},"required":["integrationId"],"additionalProperties":false},"aiven":{"type":"object","properties":{"integrationId":{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","description":"Integration to use for this job."}},"required":["integrationId"],"additionalProperties":false},"backblaze":{"type":"object","properties":{"integrationId":{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","description":"Integration to use for this job."}},"required":["integrationId"],"additionalProperties":false},"azure":{"type":"object","properties":{"integrationId":{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","description":"Integration to use for this job."}},"required":["integrationId"],"additionalProperties":false},"akamai":{"type":"object","properties":{"integrationId":{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","description":"Integration to use for this job."}},"required":["integrationId"],"additionalProperties":false}},"additionalProperties":false},"config":{"type":"object","properties":{},"additionalProperties":false},"outputs":{"type":"object","properties":{},"additionalProperties":false},"workloadIdentityId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100}},"required":["resourceType","config"],"additionalProperties":false},"name":{"type":"string","pattern":"^[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100}},"required":["name"],"additionalProperties":false,"description":"Request body for creating an external addon"}}},"required":true},"x-nf-permission-required":"Project > ExternalAddons > General > Create","x-nf-team-scoped":true,"x-nf-cli-command":["create","external-addon"]},"v1-projects--projectId--external-addons-post-team-scoped":{"operationId":"postProjectsExternalAddons","summary":"Create external addon","description":"Creates a new external addon (third-party cloud resource provisioned via OpenTofu)","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}}],"responses":{"200":{"description":"Details about the created external addon.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"environmentId":{"type":"string"},"spec":{"type":"object","properties":{"resourceType":{"type":"string","enum":["s3","rds","cloudSql","memorystore"]},"provider":{"type":"object","properties":{"aws":{"type":"object","properties":{"region":{"type":"string","example":"eu-west-1"},"integrationId":{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","description":"Integration to use for this job."}},"required":["region","integrationId"],"additionalProperties":false},"google":{"type":"object","properties":{"project":{"type":"string"},"region":{"type":"string","example":"us-central1"},"zone":{"type":"string","example":"us-central1-c"},"integrationId":{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","description":"Integration to use for this job."}},"required":["project","integrationId"],"additionalProperties":false},"cloudflare":{"type":"object","properties":{"integrationId":{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","description":"Integration to use for this job."}},"required":["integrationId"],"additionalProperties":false},"aiven":{"type":"object","properties":{"integrationId":{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","description":"Integration to use for this job."}},"required":["integrationId"],"additionalProperties":false},"backblaze":{"type":"object","properties":{"integrationId":{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","description":"Integration to use for this job."}},"required":["integrationId"],"additionalProperties":false},"azure":{"type":"object","properties":{"integrationId":{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","description":"Integration to use for this job."}},"required":["integrationId"],"additionalProperties":false},"akamai":{"type":"object","properties":{"integrationId":{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","description":"Integration to use for this job."}},"required":["integrationId"],"additionalProperties":false}},"additionalProperties":false},"config":{"type":"object","properties":{},"additionalProperties":false},"outputs":{"type":"object","properties":{},"additionalProperties":false},"workloadIdentityId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100}},"required":["resourceType","config"],"additionalProperties":false},"name":{"type":"string","pattern":"^[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100}},"required":["name"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["External Addons","project"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"environmentId":{"type":"string"},"spec":{"type":"object","properties":{"resourceType":{"type":"string","enum":["s3","rds","cloudSql","memorystore"]},"provider":{"type":"object","properties":{"aws":{"type":"object","properties":{"region":{"type":"string","example":"eu-west-1"},"integrationId":{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","description":"Integration to use for this job."}},"required":["region","integrationId"],"additionalProperties":false},"google":{"type":"object","properties":{"project":{"type":"string"},"region":{"type":"string","example":"us-central1"},"zone":{"type":"string","example":"us-central1-c"},"integrationId":{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","description":"Integration to use for this job."}},"required":["project","integrationId"],"additionalProperties":false},"cloudflare":{"type":"object","properties":{"integrationId":{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","description":"Integration to use for this job."}},"required":["integrationId"],"additionalProperties":false},"aiven":{"type":"object","properties":{"integrationId":{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","description":"Integration to use for this job."}},"required":["integrationId"],"additionalProperties":false},"backblaze":{"type":"object","properties":{"integrationId":{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","description":"Integration to use for this job."}},"required":["integrationId"],"additionalProperties":false},"azure":{"type":"object","properties":{"integrationId":{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","description":"Integration to use for this job."}},"required":["integrationId"],"additionalProperties":false},"akamai":{"type":"object","properties":{"integrationId":{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","description":"Integration to use for this job."}},"required":["integrationId"],"additionalProperties":false}},"additionalProperties":false},"config":{"type":"object","properties":{},"additionalProperties":false},"outputs":{"type":"object","properties":{},"additionalProperties":false},"workloadIdentityId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100}},"required":["resourceType","config"],"additionalProperties":false},"name":{"type":"string","pattern":"^[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100}},"required":["name"],"additionalProperties":false,"description":"Request body for creating an external addon"}}},"required":true},"x-nf-permission-required":"Project > ExternalAddons > General > Create","x-nf-team-scoped":true,"x-nf-cli-command":["create","external-addon"]},"v1-projects--projectId--external-addons--externalAddonId--get":{"operationId":"getProjectsExternalAddonsExternaladdonid","summary":"Get external addon","description":"Gets information about the given external addon","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"externalAddonId","type":"string","required":true,"description":"ID of the external addon","example":"my-s3-bucket","in":"path","schema":{"name":"externalAddonId","type":"string","required":true,"description":"ID of the external addon","example":"my-s3-bucket","in":"path"}}],"responses":{"200":{"description":"Details about the external addon.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"environmentId":{"type":"string"},"spec":{"type":"object","properties":{"resourceType":{"type":"string","enum":["s3","rds","cloudSql","memorystore"]},"provider":{"type":"object","properties":{"aws":{"type":"object","properties":{"region":{"type":"string","example":"eu-west-1"},"integrationId":{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","description":"Integration to use for this job."}},"required":["region","integrationId"],"additionalProperties":false},"google":{"type":"object","properties":{"project":{"type":"string"},"region":{"type":"string","example":"us-central1"},"zone":{"type":"string","example":"us-central1-c"},"integrationId":{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","description":"Integration to use for this job."}},"required":["project","integrationId"],"additionalProperties":false},"cloudflare":{"type":"object","properties":{"integrationId":{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","description":"Integration to use for this job."}},"required":["integrationId"],"additionalProperties":false},"aiven":{"type":"object","properties":{"integrationId":{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","description":"Integration to use for this job."}},"required":["integrationId"],"additionalProperties":false},"backblaze":{"type":"object","properties":{"integrationId":{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","description":"Integration to use for this job."}},"required":["integrationId"],"additionalProperties":false},"azure":{"type":"object","properties":{"integrationId":{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","description":"Integration to use for this job."}},"required":["integrationId"],"additionalProperties":false},"akamai":{"type":"object","properties":{"integrationId":{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","description":"Integration to use for this job."}},"required":["integrationId"],"additionalProperties":false}},"additionalProperties":false},"config":{"type":"object","properties":{},"additionalProperties":false},"outputs":{"type":"object","properties":{},"additionalProperties":false},"workloadIdentityId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100}},"required":["resourceType","config"],"additionalProperties":false},"name":{"type":"string","pattern":"^[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100}},"required":["name"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["External Addons","project"],"security":[],"x-nf-permission-required":"Project > ExternalAddons > General > Read","x-nf-team-scoped":true,"x-nf-cli-command":["get","external-addon"]},"v1-projects--projectId--external-addons--externalAddonId--get-team-scoped":{"operationId":"getProjectsExternalAddonsExternaladdonid","summary":"Get external addon","description":"Gets information about the given external addon","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"externalAddonId","type":"string","required":true,"description":"ID of the external addon","example":"my-s3-bucket","in":"path","schema":{"name":"externalAddonId","type":"string","required":true,"description":"ID of the external addon","example":"my-s3-bucket","in":"path"}}],"responses":{"200":{"description":"Details about the external addon.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"environmentId":{"type":"string"},"spec":{"type":"object","properties":{"resourceType":{"type":"string","enum":["s3","rds","cloudSql","memorystore"]},"provider":{"type":"object","properties":{"aws":{"type":"object","properties":{"region":{"type":"string","example":"eu-west-1"},"integrationId":{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","description":"Integration to use for this job."}},"required":["region","integrationId"],"additionalProperties":false},"google":{"type":"object","properties":{"project":{"type":"string"},"region":{"type":"string","example":"us-central1"},"zone":{"type":"string","example":"us-central1-c"},"integrationId":{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","description":"Integration to use for this job."}},"required":["project","integrationId"],"additionalProperties":false},"cloudflare":{"type":"object","properties":{"integrationId":{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","description":"Integration to use for this job."}},"required":["integrationId"],"additionalProperties":false},"aiven":{"type":"object","properties":{"integrationId":{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","description":"Integration to use for this job."}},"required":["integrationId"],"additionalProperties":false},"backblaze":{"type":"object","properties":{"integrationId":{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","description":"Integration to use for this job."}},"required":["integrationId"],"additionalProperties":false},"azure":{"type":"object","properties":{"integrationId":{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","description":"Integration to use for this job."}},"required":["integrationId"],"additionalProperties":false},"akamai":{"type":"object","properties":{"integrationId":{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","description":"Integration to use for this job."}},"required":["integrationId"],"additionalProperties":false}},"additionalProperties":false},"config":{"type":"object","properties":{},"additionalProperties":false},"outputs":{"type":"object","properties":{},"additionalProperties":false},"workloadIdentityId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100}},"required":["resourceType","config"],"additionalProperties":false},"name":{"type":"string","pattern":"^[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100}},"required":["name"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["External Addons","project"],"security":[],"x-nf-permission-required":"Project > ExternalAddons > General > Read","x-nf-team-scoped":true,"x-nf-cli-command":["get","external-addon"]},"v1-projects--projectId--external-addons--externalAddonId--patch":{"operationId":"patchProjectsExternalAddonsExternaladdonid","summary":"Update external addon","description":"Updates configuration for an external addon","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"externalAddonId","type":"string","required":true,"description":"ID of the external addon","example":"my-s3-bucket","in":"path","schema":{"name":"externalAddonId","type":"string","required":true,"description":"ID of the external addon","example":"my-s3-bucket","in":"path"}}],"responses":{"200":{"description":"Details about the updated external addon.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"environmentId":{"type":"string"},"spec":{"type":"object","properties":{"resourceType":{"type":"string","enum":["s3","rds","cloudSql","memorystore"]},"provider":{"type":"object","properties":{"aws":{"type":"object","properties":{"region":{"type":"string","example":"eu-west-1"},"integrationId":{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","description":"Integration to use for this job."}},"required":["region","integrationId"],"additionalProperties":false},"google":{"type":"object","properties":{"project":{"type":"string"},"region":{"type":"string","example":"us-central1"},"zone":{"type":"string","example":"us-central1-c"},"integrationId":{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","description":"Integration to use for this job."}},"required":["project","integrationId"],"additionalProperties":false},"cloudflare":{"type":"object","properties":{"integrationId":{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","description":"Integration to use for this job."}},"required":["integrationId"],"additionalProperties":false},"aiven":{"type":"object","properties":{"integrationId":{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","description":"Integration to use for this job."}},"required":["integrationId"],"additionalProperties":false},"backblaze":{"type":"object","properties":{"integrationId":{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","description":"Integration to use for this job."}},"required":["integrationId"],"additionalProperties":false},"azure":{"type":"object","properties":{"integrationId":{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","description":"Integration to use for this job."}},"required":["integrationId"],"additionalProperties":false},"akamai":{"type":"object","properties":{"integrationId":{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","description":"Integration to use for this job."}},"required":["integrationId"],"additionalProperties":false}},"additionalProperties":false},"config":{"type":"object","properties":{},"additionalProperties":false},"outputs":{"type":"object","properties":{},"additionalProperties":false},"workloadIdentityId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100}},"required":["resourceType","config"],"additionalProperties":false},"name":{"type":"string","pattern":"^[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100}},"required":["name"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["External Addons","project"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"environmentId":{"type":"string"},"spec":{"type":"object","properties":{"resourceType":{"type":"string","enum":["s3","rds","cloudSql","memorystore"]},"provider":{"type":"object","properties":{"aws":{"type":"object","properties":{"region":{"type":"string","example":"eu-west-1"},"integrationId":{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","description":"Integration to use for this job."}},"required":["region","integrationId"],"additionalProperties":false},"google":{"type":"object","properties":{"project":{"type":"string"},"region":{"type":"string","example":"us-central1"},"zone":{"type":"string","example":"us-central1-c"},"integrationId":{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","description":"Integration to use for this job."}},"required":["project","integrationId"],"additionalProperties":false},"cloudflare":{"type":"object","properties":{"integrationId":{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","description":"Integration to use for this job."}},"required":["integrationId"],"additionalProperties":false},"aiven":{"type":"object","properties":{"integrationId":{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","description":"Integration to use for this job."}},"required":["integrationId"],"additionalProperties":false},"backblaze":{"type":"object","properties":{"integrationId":{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","description":"Integration to use for this job."}},"required":["integrationId"],"additionalProperties":false},"azure":{"type":"object","properties":{"integrationId":{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","description":"Integration to use for this job."}},"required":["integrationId"],"additionalProperties":false},"akamai":{"type":"object","properties":{"integrationId":{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","description":"Integration to use for this job."}},"required":["integrationId"],"additionalProperties":false}},"additionalProperties":false},"config":{"type":"object","properties":{},"additionalProperties":false},"outputs":{"type":"object","properties":{},"additionalProperties":false},"workloadIdentityId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100}},"required":["resourceType","config"],"additionalProperties":false}},"additionalProperties":false,"description":"Request body for updating an external addon"}}},"required":true},"x-nf-permission-required":"Project > ExternalAddons > General > Update","x-nf-team-scoped":true,"x-nf-cli-command":["update","external-addon"]},"v1-projects--projectId--external-addons--externalAddonId--patch-team-scoped":{"operationId":"patchProjectsExternalAddonsExternaladdonid","summary":"Update external addon","description":"Updates configuration for an external addon","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"externalAddonId","type":"string","required":true,"description":"ID of the external addon","example":"my-s3-bucket","in":"path","schema":{"name":"externalAddonId","type":"string","required":true,"description":"ID of the external addon","example":"my-s3-bucket","in":"path"}}],"responses":{"200":{"description":"Details about the updated external addon.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"environmentId":{"type":"string"},"spec":{"type":"object","properties":{"resourceType":{"type":"string","enum":["s3","rds","cloudSql","memorystore"]},"provider":{"type":"object","properties":{"aws":{"type":"object","properties":{"region":{"type":"string","example":"eu-west-1"},"integrationId":{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","description":"Integration to use for this job."}},"required":["region","integrationId"],"additionalProperties":false},"google":{"type":"object","properties":{"project":{"type":"string"},"region":{"type":"string","example":"us-central1"},"zone":{"type":"string","example":"us-central1-c"},"integrationId":{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","description":"Integration to use for this job."}},"required":["project","integrationId"],"additionalProperties":false},"cloudflare":{"type":"object","properties":{"integrationId":{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","description":"Integration to use for this job."}},"required":["integrationId"],"additionalProperties":false},"aiven":{"type":"object","properties":{"integrationId":{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","description":"Integration to use for this job."}},"required":["integrationId"],"additionalProperties":false},"backblaze":{"type":"object","properties":{"integrationId":{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","description":"Integration to use for this job."}},"required":["integrationId"],"additionalProperties":false},"azure":{"type":"object","properties":{"integrationId":{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","description":"Integration to use for this job."}},"required":["integrationId"],"additionalProperties":false},"akamai":{"type":"object","properties":{"integrationId":{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","description":"Integration to use for this job."}},"required":["integrationId"],"additionalProperties":false}},"additionalProperties":false},"config":{"type":"object","properties":{},"additionalProperties":false},"outputs":{"type":"object","properties":{},"additionalProperties":false},"workloadIdentityId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100}},"required":["resourceType","config"],"additionalProperties":false},"name":{"type":"string","pattern":"^[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100}},"required":["name"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["External Addons","project"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"environmentId":{"type":"string"},"spec":{"type":"object","properties":{"resourceType":{"type":"string","enum":["s3","rds","cloudSql","memorystore"]},"provider":{"type":"object","properties":{"aws":{"type":"object","properties":{"region":{"type":"string","example":"eu-west-1"},"integrationId":{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","description":"Integration to use for this job."}},"required":["region","integrationId"],"additionalProperties":false},"google":{"type":"object","properties":{"project":{"type":"string"},"region":{"type":"string","example":"us-central1"},"zone":{"type":"string","example":"us-central1-c"},"integrationId":{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","description":"Integration to use for this job."}},"required":["project","integrationId"],"additionalProperties":false},"cloudflare":{"type":"object","properties":{"integrationId":{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","description":"Integration to use for this job."}},"required":["integrationId"],"additionalProperties":false},"aiven":{"type":"object","properties":{"integrationId":{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","description":"Integration to use for this job."}},"required":["integrationId"],"additionalProperties":false},"backblaze":{"type":"object","properties":{"integrationId":{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","description":"Integration to use for this job."}},"required":["integrationId"],"additionalProperties":false},"azure":{"type":"object","properties":{"integrationId":{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","description":"Integration to use for this job."}},"required":["integrationId"],"additionalProperties":false},"akamai":{"type":"object","properties":{"integrationId":{"type":"string","pattern":"^((org|team)\\/)?[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","description":"Integration to use for this job."}},"required":["integrationId"],"additionalProperties":false}},"additionalProperties":false},"config":{"type":"object","properties":{},"additionalProperties":false},"outputs":{"type":"object","properties":{},"additionalProperties":false},"workloadIdentityId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100}},"required":["resourceType","config"],"additionalProperties":false}},"additionalProperties":false,"description":"Request body for updating an external addon"}}},"required":true},"x-nf-permission-required":"Project > ExternalAddons > General > Update","x-nf-team-scoped":true,"x-nf-cli-command":["update","external-addon"]},"v1-projects--projectId--external-addons--externalAddonId--delete":{"operationId":"deleteProjectsExternalAddonsExternaladdonid","summary":"Delete external addon","description":"Deletes an external addon and destroys the associated cloud resource","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"externalAddonId","type":"string","required":true,"description":"ID of the external addon","example":"my-s3-bucket","in":"path","schema":{"name":"externalAddonId","type":"string","required":true,"description":"ID of the external addon","example":"my-s3-bucket","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["External Addons","project"],"security":[],"x-nf-permission-required":"Project > ExternalAddons > General > Delete","x-nf-team-scoped":true,"x-nf-cli-command":["delete","external-addon"]},"v1-projects--projectId--external-addons--externalAddonId--delete-team-scoped":{"operationId":"deleteProjectsExternalAddonsExternaladdonid","summary":"Delete external addon","description":"Deletes an external addon and destroys the associated cloud resource","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"externalAddonId","type":"string","required":true,"description":"ID of the external addon","example":"my-s3-bucket","in":"path","schema":{"name":"externalAddonId","type":"string","required":true,"description":"ID of the external addon","example":"my-s3-bucket","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["External Addons","project"],"security":[],"x-nf-permission-required":"Project > ExternalAddons > General > Delete","x-nf-team-scoped":true,"x-nf-cli-command":["delete","external-addon"]},"v1-projects--projectId--jobs-get":{"operationId":"getProjectsJobs","summary":"List jobs","description":"Gets a list of jobs belonging to the project","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query","schema":{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query"}},{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query","schema":{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query"}},{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query","schema":{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query"}}],"responses":{"200":{"description":"A list of jobs belonging to the project.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"jobs":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Identifier for the job","example":"example-job"},"projectId":{"type":"string","description":"ID of the project that the job belongs to","example":"default-project"},"appId":{"type":"string","description":"Full identifier used for job deployment","example":"/example-user/default-project/example-job"},"name":{"type":"string","description":"Job name","example":"Example Job"},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"description":{"type":"string","description":"A short description of the job","example":"This is the job description"},"jobType":{"type":"string","enum":["manual","cron"],"description":"Type of the job (manual or cron)","example":"cron"},"disabledCI":{"type":"boolean","description":"Whether Continuous Integration is disabled","example":false},"disabledCD":{"type":"boolean","description":"Whether Continuous Deployment is disabled","example":false},"suspended":{"type":"boolean","description":"Cron specific. Whether or not the job's automatic scheduling is suspended","example":false}},"required":["id","projectId","appId","name","tags","jobType","disabledCI","disabledCD"],"additionalProperties":false},"description":"An array of job objects."}},"required":["jobs"],"additionalProperties":false,"description":"Result data."},"pagination":{"type":"object","properties":{"hasNextPage":{"type":"boolean","description":"Is there another page of results available?","example":false},"cursor":{"type":"string","description":"The cursor to access the next page of results."},"count":{"type":"number","format":"float","description":"The number of results returned by this request.","example":1}},"required":["hasNextPage","count"],"additionalProperties":false,"description":"Data about the endpoint pagination."}},"required":["data","pagination"],"additionalProperties":false,"description":"Response object."}}},"tags":["Jobs","project"],"security":[],"x-nf-permission-required":"Project > Jobs > General > Read","x-nf-team-scoped":true,"x-nf-cli-command":["list","jobs"]},"v1-projects--projectId--jobs-get-team-scoped":{"operationId":"getProjectsJobs","summary":"List jobs","description":"Gets a list of jobs belonging to the project","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query","schema":{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query"}},{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query","schema":{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query"}},{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query","schema":{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query"}}],"responses":{"200":{"description":"A list of jobs belonging to the project.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"jobs":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Identifier for the job","example":"example-job"},"projectId":{"type":"string","description":"ID of the project that the job belongs to","example":"default-project"},"appId":{"type":"string","description":"Full identifier used for job deployment","example":"/example-user/default-project/example-job"},"name":{"type":"string","description":"Job name","example":"Example Job"},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"description":{"type":"string","description":"A short description of the job","example":"This is the job description"},"jobType":{"type":"string","enum":["manual","cron"],"description":"Type of the job (manual or cron)","example":"cron"},"disabledCI":{"type":"boolean","description":"Whether Continuous Integration is disabled","example":false},"disabledCD":{"type":"boolean","description":"Whether Continuous Deployment is disabled","example":false},"suspended":{"type":"boolean","description":"Cron specific. Whether or not the job's automatic scheduling is suspended","example":false}},"required":["id","projectId","appId","name","tags","jobType","disabledCI","disabledCD"],"additionalProperties":false},"description":"An array of job objects."}},"required":["jobs"],"additionalProperties":false,"description":"Result data."},"pagination":{"type":"object","properties":{"hasNextPage":{"type":"boolean","description":"Is there another page of results available?","example":false},"cursor":{"type":"string","description":"The cursor to access the next page of results."},"count":{"type":"number","format":"float","description":"The number of results returned by this request.","example":1}},"required":["hasNextPage","count"],"additionalProperties":false,"description":"Data about the endpoint pagination."}},"required":["data","pagination"],"additionalProperties":false,"description":"Response object."}}},"tags":["Jobs","project"],"security":[],"x-nf-permission-required":"Project > Jobs > General > Read","x-nf-team-scoped":true,"x-nf-cli-command":["list","jobs"]},"v1-projects--projectId--jobs-post":{"operationId":"postProjectsJobs","summary":"Create job","description":"Creates a new job (manual or cron based on settings.cron presence)","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}}],"responses":{"200":{"description":"Details about the newly created job.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":52,"description":"The name of the job.","example":"Example Job"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"A description of the job.","example":"A job description"},"stageId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"infrastructure":{"type":"object","properties":{"architecture":{"type":"string","enum":["x86","arm"]}},"additionalProperties":false},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"billing":{"type":"object","properties":{"buildPlan":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The ID of the build plan to use.","example":"nf-compute-200-8"},"deploymentPlan":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The ID of the deployment plan to use.","example":"nf-compute-20"},"gpu":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"gpuType":{"type":"string"},"gpuCount":{"type":"integer"},"timesliced":{"type":"boolean"}},"required":["gpuType"],"additionalProperties":false}},"additionalProperties":false}},"required":["deploymentPlan"],"additionalProperties":false},"disabledCI":{"type":"boolean","description":"Whether CI should be disabled. Only relevant for jobs deploying directly from version control.","default":false},"buildConfiguration":{"type":"object","properties":{"pathIgnoreRules":{"type":"array","items":{"type":"string","maxLength":260,"description":"A path ignore rule, following `.gitignore` syntax. For example, `*.md` will ignore all files ending with `.md`.","example":"README.md"},"maxItems":200,"description":"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."},"isAllowList":{"type":"boolean","description":"If `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`.","example":false},"ciIgnoreFlagsEnabled":{"type":"boolean","description":"If `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":{"type":"array","items":{"type":"string","maxLength":72,"description":"A commit ignore flag.","example":"[skip ci]"},"maxItems":200,"description":"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]\"]`","example":["[skip ci]","[ci skip]","[no ci]","[skip nf]","[nf skip]","[northflank skip]","[skip northflank]"]},"dockerfileTarget":{"type":"string","description":"If your Dockerfile contains multiple build stages, you can specify the target stage by entering its name here."},"dockerCredentials":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The ID of the docker credentials to use.","example":"example-docker-credential"}},"includeGitFolder":{"type":"boolean","description":"Include .git folder inside the build context"},"fullGitClone":{"type":"boolean","description":"Include the entire git history as part of the .git folder. Only relevant if \"includeGitFolder\" is set."},"enableGitLfs":{"type":"boolean","description":"Enable Git LFS support for the build"},"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false}},"additionalProperties":false,"default":{"pathIgnoreRules":[],"isAllowList":false,"ciIgnoreFlagsEnabled":false}},"buildSettings":{"oneOf":[{"type":"object","properties":{"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false},"dockerfile":{"type":"object","properties":{"useCache":{"type":"boolean","description":"DEPRECATED: This field will be removed in the near future and currently has no effect."},"buildEngine":{"type":"string","enum":["buildkit","kaniko"],"description":"Build engine to use. Defaults to recommended build engine `buildkit`","example":"buildkit","default":"buildkit"},"dockerFilePath":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]+$","description":"The file path of the Dockerfile.","example":"/Dockerfile"},"dockerWorkDir":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*$","description":"The working directory of the Dockerfile.","example":"/"},"buildkit":{"type":"object","properties":{"useCache":{"type":"boolean","description":"Use persistent storage to cache build layers.","example":true,"default":false},"cacheStorageSize":{"type":"integer","description":"The amount of persistent storage available to each build in MB.","example":32768},"useInternalCache":{"type":"boolean","description":"DEPRECATED: This field will be removed in the near future.","default":false},"internalCacheStorage":{"type":"number","format":"float","description":"DEPRECATED: This field will be removed in the near future."}},"additionalProperties":false}},"required":["dockerFilePath","dockerWorkDir"],"additionalProperties":false}},"required":["dockerfile"],"additionalProperties":false,"description":"Build from a Dockerfile"},{"type":"object","properties":{"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false},"buildpack":{"type":"object","properties":{"builder":{"type":"string","enum":["HEROKU_24","HEROKU_22","HEROKU_22_CLASSIC","HEROKU_20","HEROKU_18","GOOGLE_22","GOOGLE_V1","CNB_ALPINE","CNB_BIONIC","PAKETO_JAMMY_TINY","PAKETO_JAMMY_BASE","PAKETO_JAMMY_FULL","PAKETO_TINY","PAKETO_BASE","PAKETO_FULL"],"description":"Buildpack stack to use. Defaults to recommended stack `HEROKU_24`.","example":"HEROKU_24","default":"HEROKU_24"},"buildpackLocators":{"type":"array","items":{"type":"string","description":"Url or registry identifier of custom Buildpack.","example":"https://buildpack-registry.heroku.com/cnb/mars/create-react-app"},"description":"Array of custom Buildpacks to use.","default":[]},"buildContext":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*$","description":"The working directory to build in.","example":"/","default":"/"},"useCache":{"type":"boolean","description":"Should build dependencies be cached?","example":false,"default":false}},"additionalProperties":false}},"required":["buildpack"],"additionalProperties":false,"description":"Build from a Buildpack"}],"description":"Build engine"},"runtimeEnvironment":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"An object containing the runtime environment to set for the job. Keys may only contain letters, numbers, hyphens, forward slashes and dots.","example":{"variable1":"abcdef","variable2":"12345"},"default":{}},"runtimeFiles":{"type":"object","properties":{},"description":"Secret files as JSON object, encrypted at rest. File path must be absolute","example":{"/dir/fileName":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"buildArguments":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"An object containing the build arguments to set for the job. Keys may only contain letters, numbers, hyphens, forward slashes and dots.","example":{"variable1":"abcdef","variable2":"12345"},"default":{}},"buildFiles":{"type":"object","properties":{},"description":"Secret files as JSON object, encrypted at rest. File path must be absolute","example":{"/dir/fileName":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"dockerSecretMounts":{"type":"object","properties":{},"description":"Docker secret mount contents as JSON object, encrypted at rest. Must be a valid Docker secret mount identifier","example":{"example-secret-mount_1":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"healthChecks":{"type":"array","items":{"type":"object","properties":{"protocol":{"type":"string","enum":["HTTP","CMD","TCP"],"description":"The protocol to access the health check with.","example":"HTTP"},"type":{"type":"string","enum":["livenessProbe","readinessProbe","startupProbe"],"description":"The type of health check.","example":"readinessProbe"},"path":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*((\\?([a-zA-Z0-9-._]+(=[a-zA-Z0-9-._]+)?)*)(&([a-zA-Z0-9-._]+(=[a-zA-Z0-9-._]+)?)*)*)?$","description":"The path of the health check endpoint. Required when protocol is HTTP.","example":"/health-check"},"cmd":{"type":"string","description":"The command to run for the health check. Required when protocol is CMD"},"port":{"type":"integer","minimum":1,"description":"Port number for the health check endpoint. Required when protocol is HTTP.","example":8080},"initialDelaySeconds":{"type":"integer","minimum":1,"maximum":180,"description":"Initial delay, in seconds, before the health check is first run.","example":10},"periodSeconds":{"type":"integer","minimum":10,"maximum":600,"description":"The time between each check, in seconds.","example":60},"timeoutSeconds":{"type":"integer","minimum":1,"maximum":60,"description":"The time to wait for a response before marking the health check as a failure.","example":1},"failureThreshold":{"type":"integer","minimum":1,"maximum":255,"description":"The maximum number of allowed failures.","example":3},"successThreshold":{"type":"integer","minimum":1,"maximum":255,"description":"The number of successes required to mark the health check as a success.","example":1}},"required":["protocol","type","initialDelaySeconds","periodSeconds","timeoutSeconds","failureThreshold"],"additionalProperties":false,"description":"A health check object."},"description":"An array of health checks."},"settings":{"type":"object","properties":{"backoffLimit":{"type":"integer","minimum":0,"description":"The number of attempts to rerun a job before it is marked as failed.","example":0},"runOnSourceChange":{"type":"string","enum":["never","cd-promote","always"],"description":"Configure when the job should be run if the source image changes.","example":"never","default":"never"},"activeDeadlineSeconds":{"type":"integer","minimum":1,"nullable":true,"description":"The maximum amount of time, in seconds, for a job to run before it is marked as failed.","example":600},"cron":{"type":"object","properties":{"schedule":{"type":"string","nullable":true,"description":"The cron timer scheduling when to run the job.","example":"30 8 * * *"},"suspended":{"type":"boolean","description":"Whether the cron's automatic scheduling is suspended","example":false,"default":false},"concurrencyPolicy":{"type":"string","enum":["allow","forbid","replace"],"description":"Whether this job should run when another instance of the job is already running. `allow` will enable multiple instances of this job to run. `forbid` will keep the current instance of the job running and stop a new instance from being run. `replace` will terminate any currently running instance of the job and start a new one.","example":"forbid","default":"forbid"}},"additionalProperties":false}},"required":["backoffLimit"],"additionalProperties":false},"jobType":{"type":"string","enum":["cron"],"description":"Type of the job (manual or cron)","example":"cron"},"id":{"type":"string","description":"Identifier for the job","example":"example-job"},"appId":{"type":"string","description":"Full identifier used for job deployment","example":"/example-user/default-project/example-job"},"deployment":{"type":"object","properties":{"buildpack":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customProcess","customCommand","customEntrypointCustomCommand","originalEntrypointCustomCommand"],"description":"Type of buildpack run configuration"},"customProcess":{"type":"string","description":"Custom process which should be run. Required in case where `configType` is `customProcess`"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be run. Required in case where `configType` is `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be run. Required in case where `configType` is `customCommand`, `customEntrypointCustomCommand` or `originalEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of buildpack runtime"},"docker":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customEntrypoint","customCommand","customEntrypointCustomCommand"],"description":"Type of entrypoint & command override configuration","example":"default"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be used. Required in case where `configType` is `customEntrypoint` or `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be used. Required in case where `configType` is `customCommand` or `customEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of docker runtime"},"storage":{"type":"object","properties":{"useHdbStorage":{"type":"boolean"},"usePdSsdStorage":{"type":"boolean"},"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":1024,"description":"Ephemeral storage per container in MB","example":1024}},"additionalProperties":false},"shmSize":{"type":"integer","minimum":64,"description":"Configures the amount of available memory-backed disk space available to /dev/shm"}},"additionalProperties":false},"gpu":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"gpuType":{"type":"string"},"gpuCount":{"type":"integer"},"timesliced":{"type":"boolean"}},"required":["gpuType"],"additionalProperties":false}},"additionalProperties":false},"gracePeriodSeconds":{"type":"integer","minimum":15,"maximum":600,"description":"The 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."},"metadata":{"type":"object","properties":{"labels":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom labels for the workload."},"annotations":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom annotations for the workload as string or object."}},"additionalProperties":false,"description":"Allow setting custom labels and annotations for workloads."},"vcs":{"type":"object","properties":{"projectUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo to build.","example":"https://github.com/northflank/gatsby-with-northflank"},"projectType":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string","minLength":24,"maxLength":24,"description":"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 `vcsLinkId` is provided, Northflank will instead use your linked account with that ID."},"projectBranch":{"type":"string","description":"The name of the branch to use.","example":"master"}},"required":["projectUrl","projectType","projectBranch"],"additionalProperties":false},"external":{"type":"object","properties":{"imagePath":{"type":"string","pattern":"^(?:(?:https?:\\/\\/)?([a-zA-Z0-9\\-]+\\.[a-zA-Z0-9\\.\\-]+)(\\/v1)?)?(?:\\/)?([a-zA-Z/-9\\.\\-_]+)(?:\\:([a-zA-Z/-9\\.\\-_\\:]+)|\\@([a-zA-Z/-9\\.\\-_\\:]+))$","description":"Image to be deployed. When not deploying from Dockerhub the URL must be specified.","example":"nginx:latest"},"credentials":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"ID of the saved credentials to use to access this external image.","example":"example-credentials"}},"required":["imagePath"],"additionalProperties":false},"internal":{"type":"object","properties":{"id":{"anyOf":[{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":54,"example":"example-build-service"},{"type":"string","example":"example-project/example-build-service"}],"description":"ID of the build service to deploy"},"branch":{"type":"string","description":"Branch to deploy","example":"master"},"buildSHA":{"oneOf":[{"type":"string","minLength":40,"maxLength":40,"description":"A commit sha."},{"type":"string","enum":["latest"],"description":"Latest commit."}],"description":"Commit SHA to deploy, or 'latest' to deploy the most recent commit","example":"latest"},"buildId":{"type":"string","description":"ID of the build that should be deployed","example":"premium-guide-6393"}},"additionalProperties":false},"imageUrl":{"type":"string","description":"Image registry url of the deployed image."}},"additionalProperties":false,"default":{}},"status":{"type":"object","properties":{"build":{"type":"object","properties":{"status":{"type":"string","enum":["QUEUED","PENDING","UNSCHEDULABLE","STARTING","CLONING","BUILDING","UPLOADING","ABORTED","FAILURE","SUBMISSION_FAILURE","SUCCESS","CRASHED","IN_PROGRESS"],"description":"The current status of the build.","example":"SUCCESS"},"lastTransitionTime":{"type":"string","format":"date-time","description":"The timestamp of when the build reached this status.","example":"2021-11-29T11:47:16.624Z"}},"required":["status"],"additionalProperties":false,"description":"Details about the status of the most recent build."}},"additionalProperties":false,"description":"Details about the current job status."},"cluster":{"type":"object","properties":{"id":{"type":"string","description":"The id of the cluster associated with this project.","example":"nf-europe-west"},"name":{"type":"string","description":"The name of the cluster associated with this project.","example":"nf-europe-west"},"namespace":{"type":"string","description":"Namespace this resource is located within on the cluster.","example":"ns-8zy2mcjh9zn2"},"loadBalancers":{"type":"array","items":{"type":"string","example":"lb.659200800000000000000000.northflank.com"},"description":"Load balancer DNS for the cluster."}},"required":["id","name"],"additionalProperties":false,"description":"Cluster information"},"createdAt":{"type":"string","format":"date-time","description":"time of creation"},"updatedAt":{"type":"string","format":"date-time","description":"time of update"}},"required":["name","billing","jobType","id","appId","status","cluster"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Jobs","project"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":52,"description":"The name of the job.","example":"Example Job"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"A description of the job.","example":"A job description"},"stageId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"infrastructure":{"type":"object","properties":{"architecture":{"type":"string","enum":["x86","arm"]}},"additionalProperties":false},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"billing":{"type":"object","properties":{"buildPlan":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The ID of the build plan to use.","example":"nf-compute-200-8"},"deploymentPlan":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The ID of the deployment plan to use.","example":"nf-compute-20"},"gpu":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"gpuType":{"type":"string"},"gpuCount":{"type":"integer"},"timesliced":{"type":"boolean"}},"required":["gpuType"],"additionalProperties":false}},"additionalProperties":false}},"required":["deploymentPlan"],"additionalProperties":false},"deployment":{"oneOf":[{"type":"object","properties":{"buildpack":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customProcess","customCommand","customEntrypointCustomCommand","originalEntrypointCustomCommand"],"description":"Type of buildpack run configuration"},"customProcess":{"type":"string","description":"Custom process which should be run. Required in case where `configType` is `customProcess`"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be run. Required in case where `configType` is `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be run. Required in case where `configType` is `customCommand`, `customEntrypointCustomCommand` or `originalEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of buildpack runtime"},"docker":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customEntrypoint","customCommand","customEntrypointCustomCommand"],"description":"Type of entrypoint & command override configuration","example":"default"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be used. Required in case where `configType` is `customEntrypoint` or `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be used. Required in case where `configType` is `customCommand` or `customEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of docker runtime"},"storage":{"type":"object","properties":{"useHdbStorage":{"type":"boolean"},"usePdSsdStorage":{"type":"boolean"},"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":1024,"description":"Ephemeral storage per container in MB","example":1024}},"additionalProperties":false},"shmSize":{"type":"integer","minimum":64,"description":"Configures the amount of available memory-backed disk space available to /dev/shm"}},"additionalProperties":false},"gpu":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"gpuType":{"type":"string"},"gpuCount":{"type":"integer"},"timesliced":{"type":"boolean"}},"required":["gpuType"],"additionalProperties":false}},"additionalProperties":false},"gracePeriodSeconds":{"type":"integer","minimum":15,"maximum":600,"description":"The 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."},"metadata":{"type":"object","properties":{"labels":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom labels for the workload."},"annotations":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom annotations for the workload as string or object."}},"additionalProperties":false,"description":"Allow setting custom labels and annotations for workloads."},"vcs":{"type":"object","properties":{"projectUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo to build.","example":"https://github.com/northflank/gatsby-with-northflank"},"projectType":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string","minLength":24,"maxLength":24,"description":"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 `vcsLinkId` is provided, Northflank will instead use your linked account with that ID."},"projectBranch":{"type":"string","description":"The name of the branch to use.","example":"master"}},"required":["projectUrl","projectType","projectBranch"],"additionalProperties":false}},"required":["vcs"],"additionalProperties":false,"description":"Deploy from version control"},{"type":"object","properties":{"buildpack":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customProcess","customCommand","customEntrypointCustomCommand","originalEntrypointCustomCommand"],"description":"Type of buildpack run configuration"},"customProcess":{"type":"string","description":"Custom process which should be run. Required in case where `configType` is `customProcess`"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be run. Required in case where `configType` is `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be run. Required in case where `configType` is `customCommand`, `customEntrypointCustomCommand` or `originalEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of buildpack runtime"},"docker":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customEntrypoint","customCommand","customEntrypointCustomCommand"],"description":"Type of entrypoint & command override configuration","example":"default"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be used. Required in case where `configType` is `customEntrypoint` or `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be used. Required in case where `configType` is `customCommand` or `customEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of docker runtime"},"storage":{"type":"object","properties":{"useHdbStorage":{"type":"boolean"},"usePdSsdStorage":{"type":"boolean"},"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":1024,"description":"Ephemeral storage per container in MB","example":1024}},"additionalProperties":false},"shmSize":{"type":"integer","minimum":64,"description":"Configures the amount of available memory-backed disk space available to /dev/shm"}},"additionalProperties":false},"gpu":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"gpuType":{"type":"string"},"gpuCount":{"type":"integer"},"timesliced":{"type":"boolean"}},"required":["gpuType"],"additionalProperties":false}},"additionalProperties":false},"gracePeriodSeconds":{"type":"integer","minimum":15,"maximum":600,"description":"The 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."},"metadata":{"type":"object","properties":{"labels":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom labels for the workload."},"annotations":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom annotations for the workload as string or object."}},"additionalProperties":false,"description":"Allow setting custom labels and annotations for workloads."},"external":{"type":"object","properties":{"imagePath":{"type":"string","pattern":"^(?:(?:https?:\\/\\/)?([a-zA-Z0-9\\-]+\\.[a-zA-Z0-9\\.\\-]+)(\\/v1)?)?(?:\\/)?([a-zA-Z/-9\\.\\-_]+)(?:\\:([a-zA-Z/-9\\.\\-_\\:]+)|\\@([a-zA-Z/-9\\.\\-_\\:]+))$","description":"Image to be deployed. When not deploying from Dockerhub the URL must be specified.","example":"nginx:latest"},"credentials":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"ID of the saved credentials to use to access this external image.","example":"example-credentials"}},"required":["imagePath"],"additionalProperties":false}},"required":["external"],"additionalProperties":false,"description":"Deploy from an external image"},{"type":"object","properties":{"buildpack":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customProcess","customCommand","customEntrypointCustomCommand","originalEntrypointCustomCommand"],"description":"Type of buildpack run configuration"},"customProcess":{"type":"string","description":"Custom process which should be run. Required in case where `configType` is `customProcess`"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be run. Required in case where `configType` is `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be run. Required in case where `configType` is `customCommand`, `customEntrypointCustomCommand` or `originalEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of buildpack runtime"},"docker":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customEntrypoint","customCommand","customEntrypointCustomCommand"],"description":"Type of entrypoint & command override configuration","example":"default"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be used. Required in case where `configType` is `customEntrypoint` or `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be used. Required in case where `configType` is `customCommand` or `customEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of docker runtime"},"storage":{"type":"object","properties":{"useHdbStorage":{"type":"boolean"},"usePdSsdStorage":{"type":"boolean"},"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":1024,"description":"Ephemeral storage per container in MB","example":1024}},"additionalProperties":false},"shmSize":{"type":"integer","minimum":64,"description":"Configures the amount of available memory-backed disk space available to /dev/shm"}},"additionalProperties":false},"gpu":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"gpuType":{"type":"string"},"gpuCount":{"type":"integer"},"timesliced":{"type":"boolean"}},"required":["gpuType"],"additionalProperties":false}},"additionalProperties":false},"gracePeriodSeconds":{"type":"integer","minimum":15,"maximum":600,"description":"The 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."},"metadata":{"type":"object","properties":{"labels":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom labels for the workload."},"annotations":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom annotations for the workload as string or object."}},"additionalProperties":false,"description":"Allow setting custom labels and annotations for workloads."},"internal":{"type":"object","properties":{"id":{"anyOf":[{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":54,"example":"example-build-service"},{"type":"string","example":"example-project/example-build-service"}],"description":"ID of the build service to deploy"},"branch":{"type":"string","description":"Branch to deploy","example":"master"},"buildSHA":{"oneOf":[{"type":"string","minLength":40,"maxLength":40,"description":"A commit sha."},{"type":"string","enum":["latest"],"description":"Latest commit."}],"description":"Commit SHA to deploy, or 'latest' to deploy the most recent commit","example":"latest"},"buildId":{"type":"string","description":"ID of the build that should be deployed","example":"premium-guide-6393"}},"additionalProperties":false}},"required":["internal"],"additionalProperties":false,"description":"Deploy from a Northflank build service"},{"type":"object","properties":{},"additionalProperties":false,"description":"Choose later"}],"description":"Where to deploy the job from."},"disabledCI":{"type":"boolean","description":"Whether CI should be disabled. Only relevant for jobs deploying directly from version control.","default":false},"buildConfiguration":{"type":"object","properties":{"pathIgnoreRules":{"type":"array","items":{"type":"string","maxLength":260,"description":"A path ignore rule, following `.gitignore` syntax. For example, `*.md` will ignore all files ending with `.md`.","example":"README.md"},"maxItems":200,"description":"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."},"isAllowList":{"type":"boolean","description":"If `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`.","example":false},"ciIgnoreFlagsEnabled":{"type":"boolean","description":"If `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":{"type":"array","items":{"type":"string","maxLength":72,"description":"A commit ignore flag.","example":"[skip ci]"},"maxItems":200,"description":"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]\"]`","example":["[skip ci]","[ci skip]","[no ci]","[skip nf]","[nf skip]","[northflank skip]","[skip northflank]"]},"dockerfileTarget":{"type":"string","description":"If your Dockerfile contains multiple build stages, you can specify the target stage by entering its name here."},"dockerCredentials":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The ID of the docker credentials to use.","example":"example-docker-credential"}},"includeGitFolder":{"type":"boolean","description":"Include .git folder inside the build context"},"fullGitClone":{"type":"boolean","description":"Include the entire git history as part of the .git folder. Only relevant if \"includeGitFolder\" is set."},"enableGitLfs":{"type":"boolean","description":"Enable Git LFS support for the build"},"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false}},"additionalProperties":false,"default":{"pathIgnoreRules":[],"isAllowList":false,"ciIgnoreFlagsEnabled":false}},"buildSettings":{"oneOf":[{"type":"object","properties":{"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false},"dockerfile":{"type":"object","properties":{"useCache":{"type":"boolean","description":"DEPRECATED: This field will be removed in the near future and currently has no effect."},"buildEngine":{"type":"string","enum":["buildkit","kaniko"],"description":"Build engine to use. Defaults to recommended build engine `buildkit`","example":"buildkit","default":"buildkit"},"dockerFilePath":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]+$","description":"The file path of the Dockerfile.","example":"/Dockerfile"},"dockerWorkDir":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*$","description":"The working directory of the Dockerfile.","example":"/"},"buildkit":{"type":"object","properties":{"useCache":{"type":"boolean","description":"Use persistent storage to cache build layers.","example":true,"default":false},"cacheStorageSize":{"type":"integer","description":"The amount of persistent storage available to each build in MB.","example":32768},"useInternalCache":{"type":"boolean","description":"DEPRECATED: This field will be removed in the near future.","default":false},"internalCacheStorage":{"type":"number","format":"float","description":"DEPRECATED: This field will be removed in the near future."}},"additionalProperties":false}},"required":["dockerFilePath","dockerWorkDir"],"additionalProperties":false}},"required":["dockerfile"],"additionalProperties":false,"description":"Build from a Dockerfile"},{"type":"object","properties":{"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false},"buildpack":{"type":"object","properties":{"builder":{"type":"string","enum":["HEROKU_24","HEROKU_22","HEROKU_22_CLASSIC","HEROKU_20","HEROKU_18","GOOGLE_22","GOOGLE_V1","CNB_ALPINE","CNB_BIONIC","PAKETO_JAMMY_TINY","PAKETO_JAMMY_BASE","PAKETO_JAMMY_FULL","PAKETO_TINY","PAKETO_BASE","PAKETO_FULL"],"description":"Buildpack stack to use. Defaults to recommended stack `HEROKU_24`.","example":"HEROKU_24","default":"HEROKU_24"},"buildpackLocators":{"type":"array","items":{"type":"string","description":"Url or registry identifier of custom Buildpack.","example":"https://buildpack-registry.heroku.com/cnb/mars/create-react-app"},"description":"Array of custom Buildpacks to use.","default":[]},"buildContext":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*$","description":"The working directory to build in.","example":"/","default":"/"},"useCache":{"type":"boolean","description":"Should build dependencies be cached?","example":false,"default":false}},"additionalProperties":false}},"required":["buildpack"],"additionalProperties":false,"description":"Build from a Buildpack"}],"description":"Build engine"},"runtimeEnvironment":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"An object containing the runtime environment to set for the job. Keys may only contain letters, numbers, hyphens, forward slashes and dots.","example":{"variable1":"abcdef","variable2":"12345"},"default":{}},"runtimeFiles":{"type":"object","properties":{},"description":"Secret files as JSON object, encrypted at rest. File path must be absolute","example":{"/dir/fileName":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"buildArguments":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"An object containing the build arguments to set for the job. Keys may only contain letters, numbers, hyphens, forward slashes and dots.","example":{"variable1":"abcdef","variable2":"12345"},"default":{}},"buildFiles":{"type":"object","properties":{},"description":"Secret files as JSON object, encrypted at rest. File path must be absolute","example":{"/dir/fileName":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"dockerSecretMounts":{"type":"object","properties":{},"description":"Docker secret mount contents as JSON object, encrypted at rest. Must be a valid Docker secret mount identifier","example":{"example-secret-mount_1":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"healthChecks":{"type":"array","items":{"type":"object","properties":{"protocol":{"type":"string","enum":["HTTP","CMD","TCP"],"description":"The protocol to access the health check with.","example":"HTTP"},"type":{"type":"string","enum":["livenessProbe","readinessProbe","startupProbe"],"description":"The type of health check.","example":"readinessProbe"},"path":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*((\\?([a-zA-Z0-9-._]+(=[a-zA-Z0-9-._]+)?)*)(&([a-zA-Z0-9-._]+(=[a-zA-Z0-9-._]+)?)*)*)?$","description":"The path of the health check endpoint. Required when protocol is HTTP.","example":"/health-check"},"cmd":{"type":"string","description":"The command to run for the health check. Required when protocol is CMD"},"port":{"type":"integer","minimum":1,"description":"Port number for the health check endpoint. Required when protocol is HTTP.","example":8080},"initialDelaySeconds":{"type":"integer","minimum":1,"maximum":180,"description":"Initial delay, in seconds, before the health check is first run.","example":10},"periodSeconds":{"type":"integer","minimum":10,"maximum":600,"description":"The time between each check, in seconds.","example":60},"timeoutSeconds":{"type":"integer","minimum":1,"maximum":60,"description":"The time to wait for a response before marking the health check as a failure.","example":1},"failureThreshold":{"type":"integer","minimum":1,"maximum":255,"description":"The maximum number of allowed failures.","example":3},"successThreshold":{"type":"integer","minimum":1,"maximum":255,"description":"The number of successes required to mark the health check as a success.","example":1}},"required":["protocol","type","initialDelaySeconds","periodSeconds","timeoutSeconds","failureThreshold"],"additionalProperties":false,"description":"A health check object."},"description":"An array of health checks."},"settings":{"type":"object","properties":{"backoffLimit":{"type":"integer","minimum":0,"description":"The number of attempts to rerun a job before it is marked as failed.","example":0},"runOnSourceChange":{"type":"string","enum":["never","cd-promote","always"],"description":"Configure when the job should be run if the source image changes.","example":"never","default":"never"},"activeDeadlineSeconds":{"type":"integer","minimum":1,"nullable":true,"description":"The maximum amount of time, in seconds, for a job to run before it is marked as failed.","example":600},"cron":{"type":"object","properties":{"schedule":{"type":"string","pattern":"(@(annually|yearly|monthly|weekly|daily|hourly))|((((\\d+,)+\\d+|(\\d+(\\/|-)\\d+)|\\d+|\\*) ?){5})","nullable":true,"description":"The cron timer scheduling when to run the job.","example":"30 8 * * *"},"suspended":{"type":"boolean","description":"Whether the cron's automatic scheduling is suspended","example":false,"default":false},"concurrencyPolicy":{"type":"string","enum":["allow","forbid","replace"],"description":"Whether this job should run when another instance of the job is already running. `allow` will enable multiple instances of this job to run. `forbid` will keep the current instance of the job running and stop a new instance from being run. `replace` will terminate any currently running instance of the job and start a new one.","example":"forbid","default":"forbid"}},"additionalProperties":false}},"required":["backoffLimit"],"additionalProperties":false}},"required":["name","billing"],"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Project > Jobs > General > Create","x-nf-team-scoped":true,"x-nf-cli-command":["create","job"]},"v1-projects--projectId--jobs-post-team-scoped":{"operationId":"postProjectsJobs","summary":"Create job","description":"Creates a new job (manual or cron based on settings.cron presence)","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}}],"responses":{"200":{"description":"Details about the newly created job.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":52,"description":"The name of the job.","example":"Example Job"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"A description of the job.","example":"A job description"},"stageId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"infrastructure":{"type":"object","properties":{"architecture":{"type":"string","enum":["x86","arm"]}},"additionalProperties":false},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"billing":{"type":"object","properties":{"buildPlan":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The ID of the build plan to use.","example":"nf-compute-200-8"},"deploymentPlan":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The ID of the deployment plan to use.","example":"nf-compute-20"},"gpu":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"gpuType":{"type":"string"},"gpuCount":{"type":"integer"},"timesliced":{"type":"boolean"}},"required":["gpuType"],"additionalProperties":false}},"additionalProperties":false}},"required":["deploymentPlan"],"additionalProperties":false},"disabledCI":{"type":"boolean","description":"Whether CI should be disabled. Only relevant for jobs deploying directly from version control.","default":false},"buildConfiguration":{"type":"object","properties":{"pathIgnoreRules":{"type":"array","items":{"type":"string","maxLength":260,"description":"A path ignore rule, following `.gitignore` syntax. For example, `*.md` will ignore all files ending with `.md`.","example":"README.md"},"maxItems":200,"description":"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."},"isAllowList":{"type":"boolean","description":"If `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`.","example":false},"ciIgnoreFlagsEnabled":{"type":"boolean","description":"If `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":{"type":"array","items":{"type":"string","maxLength":72,"description":"A commit ignore flag.","example":"[skip ci]"},"maxItems":200,"description":"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]\"]`","example":["[skip ci]","[ci skip]","[no ci]","[skip nf]","[nf skip]","[northflank skip]","[skip northflank]"]},"dockerfileTarget":{"type":"string","description":"If your Dockerfile contains multiple build stages, you can specify the target stage by entering its name here."},"dockerCredentials":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The ID of the docker credentials to use.","example":"example-docker-credential"}},"includeGitFolder":{"type":"boolean","description":"Include .git folder inside the build context"},"fullGitClone":{"type":"boolean","description":"Include the entire git history as part of the .git folder. Only relevant if \"includeGitFolder\" is set."},"enableGitLfs":{"type":"boolean","description":"Enable Git LFS support for the build"},"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false}},"additionalProperties":false,"default":{"pathIgnoreRules":[],"isAllowList":false,"ciIgnoreFlagsEnabled":false}},"buildSettings":{"oneOf":[{"type":"object","properties":{"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false},"dockerfile":{"type":"object","properties":{"useCache":{"type":"boolean","description":"DEPRECATED: This field will be removed in the near future and currently has no effect."},"buildEngine":{"type":"string","enum":["buildkit","kaniko"],"description":"Build engine to use. Defaults to recommended build engine `buildkit`","example":"buildkit","default":"buildkit"},"dockerFilePath":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]+$","description":"The file path of the Dockerfile.","example":"/Dockerfile"},"dockerWorkDir":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*$","description":"The working directory of the Dockerfile.","example":"/"},"buildkit":{"type":"object","properties":{"useCache":{"type":"boolean","description":"Use persistent storage to cache build layers.","example":true,"default":false},"cacheStorageSize":{"type":"integer","description":"The amount of persistent storage available to each build in MB.","example":32768},"useInternalCache":{"type":"boolean","description":"DEPRECATED: This field will be removed in the near future.","default":false},"internalCacheStorage":{"type":"number","format":"float","description":"DEPRECATED: This field will be removed in the near future."}},"additionalProperties":false}},"required":["dockerFilePath","dockerWorkDir"],"additionalProperties":false}},"required":["dockerfile"],"additionalProperties":false,"description":"Build from a Dockerfile"},{"type":"object","properties":{"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false},"buildpack":{"type":"object","properties":{"builder":{"type":"string","enum":["HEROKU_24","HEROKU_22","HEROKU_22_CLASSIC","HEROKU_20","HEROKU_18","GOOGLE_22","GOOGLE_V1","CNB_ALPINE","CNB_BIONIC","PAKETO_JAMMY_TINY","PAKETO_JAMMY_BASE","PAKETO_JAMMY_FULL","PAKETO_TINY","PAKETO_BASE","PAKETO_FULL"],"description":"Buildpack stack to use. Defaults to recommended stack `HEROKU_24`.","example":"HEROKU_24","default":"HEROKU_24"},"buildpackLocators":{"type":"array","items":{"type":"string","description":"Url or registry identifier of custom Buildpack.","example":"https://buildpack-registry.heroku.com/cnb/mars/create-react-app"},"description":"Array of custom Buildpacks to use.","default":[]},"buildContext":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*$","description":"The working directory to build in.","example":"/","default":"/"},"useCache":{"type":"boolean","description":"Should build dependencies be cached?","example":false,"default":false}},"additionalProperties":false}},"required":["buildpack"],"additionalProperties":false,"description":"Build from a Buildpack"}],"description":"Build engine"},"runtimeEnvironment":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"An object containing the runtime environment to set for the job. Keys may only contain letters, numbers, hyphens, forward slashes and dots.","example":{"variable1":"abcdef","variable2":"12345"},"default":{}},"runtimeFiles":{"type":"object","properties":{},"description":"Secret files as JSON object, encrypted at rest. File path must be absolute","example":{"/dir/fileName":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"buildArguments":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"An object containing the build arguments to set for the job. Keys may only contain letters, numbers, hyphens, forward slashes and dots.","example":{"variable1":"abcdef","variable2":"12345"},"default":{}},"buildFiles":{"type":"object","properties":{},"description":"Secret files as JSON object, encrypted at rest. File path must be absolute","example":{"/dir/fileName":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"dockerSecretMounts":{"type":"object","properties":{},"description":"Docker secret mount contents as JSON object, encrypted at rest. Must be a valid Docker secret mount identifier","example":{"example-secret-mount_1":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"healthChecks":{"type":"array","items":{"type":"object","properties":{"protocol":{"type":"string","enum":["HTTP","CMD","TCP"],"description":"The protocol to access the health check with.","example":"HTTP"},"type":{"type":"string","enum":["livenessProbe","readinessProbe","startupProbe"],"description":"The type of health check.","example":"readinessProbe"},"path":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*((\\?([a-zA-Z0-9-._]+(=[a-zA-Z0-9-._]+)?)*)(&([a-zA-Z0-9-._]+(=[a-zA-Z0-9-._]+)?)*)*)?$","description":"The path of the health check endpoint. Required when protocol is HTTP.","example":"/health-check"},"cmd":{"type":"string","description":"The command to run for the health check. Required when protocol is CMD"},"port":{"type":"integer","minimum":1,"description":"Port number for the health check endpoint. Required when protocol is HTTP.","example":8080},"initialDelaySeconds":{"type":"integer","minimum":1,"maximum":180,"description":"Initial delay, in seconds, before the health check is first run.","example":10},"periodSeconds":{"type":"integer","minimum":10,"maximum":600,"description":"The time between each check, in seconds.","example":60},"timeoutSeconds":{"type":"integer","minimum":1,"maximum":60,"description":"The time to wait for a response before marking the health check as a failure.","example":1},"failureThreshold":{"type":"integer","minimum":1,"maximum":255,"description":"The maximum number of allowed failures.","example":3},"successThreshold":{"type":"integer","minimum":1,"maximum":255,"description":"The number of successes required to mark the health check as a success.","example":1}},"required":["protocol","type","initialDelaySeconds","periodSeconds","timeoutSeconds","failureThreshold"],"additionalProperties":false,"description":"A health check object."},"description":"An array of health checks."},"settings":{"type":"object","properties":{"backoffLimit":{"type":"integer","minimum":0,"description":"The number of attempts to rerun a job before it is marked as failed.","example":0},"runOnSourceChange":{"type":"string","enum":["never","cd-promote","always"],"description":"Configure when the job should be run if the source image changes.","example":"never","default":"never"},"activeDeadlineSeconds":{"type":"integer","minimum":1,"nullable":true,"description":"The maximum amount of time, in seconds, for a job to run before it is marked as failed.","example":600},"cron":{"type":"object","properties":{"schedule":{"type":"string","nullable":true,"description":"The cron timer scheduling when to run the job.","example":"30 8 * * *"},"suspended":{"type":"boolean","description":"Whether the cron's automatic scheduling is suspended","example":false,"default":false},"concurrencyPolicy":{"type":"string","enum":["allow","forbid","replace"],"description":"Whether this job should run when another instance of the job is already running. `allow` will enable multiple instances of this job to run. `forbid` will keep the current instance of the job running and stop a new instance from being run. `replace` will terminate any currently running instance of the job and start a new one.","example":"forbid","default":"forbid"}},"additionalProperties":false}},"required":["backoffLimit"],"additionalProperties":false},"jobType":{"type":"string","enum":["cron"],"description":"Type of the job (manual or cron)","example":"cron"},"id":{"type":"string","description":"Identifier for the job","example":"example-job"},"appId":{"type":"string","description":"Full identifier used for job deployment","example":"/example-user/default-project/example-job"},"deployment":{"type":"object","properties":{"buildpack":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customProcess","customCommand","customEntrypointCustomCommand","originalEntrypointCustomCommand"],"description":"Type of buildpack run configuration"},"customProcess":{"type":"string","description":"Custom process which should be run. Required in case where `configType` is `customProcess`"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be run. Required in case where `configType` is `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be run. Required in case where `configType` is `customCommand`, `customEntrypointCustomCommand` or `originalEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of buildpack runtime"},"docker":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customEntrypoint","customCommand","customEntrypointCustomCommand"],"description":"Type of entrypoint & command override configuration","example":"default"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be used. Required in case where `configType` is `customEntrypoint` or `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be used. Required in case where `configType` is `customCommand` or `customEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of docker runtime"},"storage":{"type":"object","properties":{"useHdbStorage":{"type":"boolean"},"usePdSsdStorage":{"type":"boolean"},"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":1024,"description":"Ephemeral storage per container in MB","example":1024}},"additionalProperties":false},"shmSize":{"type":"integer","minimum":64,"description":"Configures the amount of available memory-backed disk space available to /dev/shm"}},"additionalProperties":false},"gpu":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"gpuType":{"type":"string"},"gpuCount":{"type":"integer"},"timesliced":{"type":"boolean"}},"required":["gpuType"],"additionalProperties":false}},"additionalProperties":false},"gracePeriodSeconds":{"type":"integer","minimum":15,"maximum":600,"description":"The 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."},"metadata":{"type":"object","properties":{"labels":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom labels for the workload."},"annotations":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom annotations for the workload as string or object."}},"additionalProperties":false,"description":"Allow setting custom labels and annotations for workloads."},"vcs":{"type":"object","properties":{"projectUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo to build.","example":"https://github.com/northflank/gatsby-with-northflank"},"projectType":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string","minLength":24,"maxLength":24,"description":"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 `vcsLinkId` is provided, Northflank will instead use your linked account with that ID."},"projectBranch":{"type":"string","description":"The name of the branch to use.","example":"master"}},"required":["projectUrl","projectType","projectBranch"],"additionalProperties":false},"external":{"type":"object","properties":{"imagePath":{"type":"string","pattern":"^(?:(?:https?:\\/\\/)?([a-zA-Z0-9\\-]+\\.[a-zA-Z0-9\\.\\-]+)(\\/v1)?)?(?:\\/)?([a-zA-Z/-9\\.\\-_]+)(?:\\:([a-zA-Z/-9\\.\\-_\\:]+)|\\@([a-zA-Z/-9\\.\\-_\\:]+))$","description":"Image to be deployed. When not deploying from Dockerhub the URL must be specified.","example":"nginx:latest"},"credentials":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"ID of the saved credentials to use to access this external image.","example":"example-credentials"}},"required":["imagePath"],"additionalProperties":false},"internal":{"type":"object","properties":{"id":{"anyOf":[{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":54,"example":"example-build-service"},{"type":"string","example":"example-project/example-build-service"}],"description":"ID of the build service to deploy"},"branch":{"type":"string","description":"Branch to deploy","example":"master"},"buildSHA":{"oneOf":[{"type":"string","minLength":40,"maxLength":40,"description":"A commit sha."},{"type":"string","enum":["latest"],"description":"Latest commit."}],"description":"Commit SHA to deploy, or 'latest' to deploy the most recent commit","example":"latest"},"buildId":{"type":"string","description":"ID of the build that should be deployed","example":"premium-guide-6393"}},"additionalProperties":false},"imageUrl":{"type":"string","description":"Image registry url of the deployed image."}},"additionalProperties":false,"default":{}},"status":{"type":"object","properties":{"build":{"type":"object","properties":{"status":{"type":"string","enum":["QUEUED","PENDING","UNSCHEDULABLE","STARTING","CLONING","BUILDING","UPLOADING","ABORTED","FAILURE","SUBMISSION_FAILURE","SUCCESS","CRASHED","IN_PROGRESS"],"description":"The current status of the build.","example":"SUCCESS"},"lastTransitionTime":{"type":"string","format":"date-time","description":"The timestamp of when the build reached this status.","example":"2021-11-29T11:47:16.624Z"}},"required":["status"],"additionalProperties":false,"description":"Details about the status of the most recent build."}},"additionalProperties":false,"description":"Details about the current job status."},"cluster":{"type":"object","properties":{"id":{"type":"string","description":"The id of the cluster associated with this project.","example":"nf-europe-west"},"name":{"type":"string","description":"The name of the cluster associated with this project.","example":"nf-europe-west"},"namespace":{"type":"string","description":"Namespace this resource is located within on the cluster.","example":"ns-8zy2mcjh9zn2"},"loadBalancers":{"type":"array","items":{"type":"string","example":"lb.659200800000000000000000.northflank.com"},"description":"Load balancer DNS for the cluster."}},"required":["id","name"],"additionalProperties":false,"description":"Cluster information"},"createdAt":{"type":"string","format":"date-time","description":"time of creation"},"updatedAt":{"type":"string","format":"date-time","description":"time of update"}},"required":["name","billing","jobType","id","appId","status","cluster"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Jobs","project"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":52,"description":"The name of the job.","example":"Example Job"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"A description of the job.","example":"A job description"},"stageId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"infrastructure":{"type":"object","properties":{"architecture":{"type":"string","enum":["x86","arm"]}},"additionalProperties":false},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"billing":{"type":"object","properties":{"buildPlan":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The ID of the build plan to use.","example":"nf-compute-200-8"},"deploymentPlan":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The ID of the deployment plan to use.","example":"nf-compute-20"},"gpu":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"gpuType":{"type":"string"},"gpuCount":{"type":"integer"},"timesliced":{"type":"boolean"}},"required":["gpuType"],"additionalProperties":false}},"additionalProperties":false}},"required":["deploymentPlan"],"additionalProperties":false},"deployment":{"oneOf":[{"type":"object","properties":{"buildpack":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customProcess","customCommand","customEntrypointCustomCommand","originalEntrypointCustomCommand"],"description":"Type of buildpack run configuration"},"customProcess":{"type":"string","description":"Custom process which should be run. Required in case where `configType` is `customProcess`"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be run. Required in case where `configType` is `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be run. Required in case where `configType` is `customCommand`, `customEntrypointCustomCommand` or `originalEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of buildpack runtime"},"docker":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customEntrypoint","customCommand","customEntrypointCustomCommand"],"description":"Type of entrypoint & command override configuration","example":"default"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be used. Required in case where `configType` is `customEntrypoint` or `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be used. Required in case where `configType` is `customCommand` or `customEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of docker runtime"},"storage":{"type":"object","properties":{"useHdbStorage":{"type":"boolean"},"usePdSsdStorage":{"type":"boolean"},"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":1024,"description":"Ephemeral storage per container in MB","example":1024}},"additionalProperties":false},"shmSize":{"type":"integer","minimum":64,"description":"Configures the amount of available memory-backed disk space available to /dev/shm"}},"additionalProperties":false},"gpu":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"gpuType":{"type":"string"},"gpuCount":{"type":"integer"},"timesliced":{"type":"boolean"}},"required":["gpuType"],"additionalProperties":false}},"additionalProperties":false},"gracePeriodSeconds":{"type":"integer","minimum":15,"maximum":600,"description":"The 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."},"metadata":{"type":"object","properties":{"labels":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom labels for the workload."},"annotations":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom annotations for the workload as string or object."}},"additionalProperties":false,"description":"Allow setting custom labels and annotations for workloads."},"vcs":{"type":"object","properties":{"projectUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo to build.","example":"https://github.com/northflank/gatsby-with-northflank"},"projectType":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string","minLength":24,"maxLength":24,"description":"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 `vcsLinkId` is provided, Northflank will instead use your linked account with that ID."},"projectBranch":{"type":"string","description":"The name of the branch to use.","example":"master"}},"required":["projectUrl","projectType","projectBranch"],"additionalProperties":false}},"required":["vcs"],"additionalProperties":false,"description":"Deploy from version control"},{"type":"object","properties":{"buildpack":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customProcess","customCommand","customEntrypointCustomCommand","originalEntrypointCustomCommand"],"description":"Type of buildpack run configuration"},"customProcess":{"type":"string","description":"Custom process which should be run. Required in case where `configType` is `customProcess`"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be run. Required in case where `configType` is `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be run. Required in case where `configType` is `customCommand`, `customEntrypointCustomCommand` or `originalEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of buildpack runtime"},"docker":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customEntrypoint","customCommand","customEntrypointCustomCommand"],"description":"Type of entrypoint & command override configuration","example":"default"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be used. Required in case where `configType` is `customEntrypoint` or `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be used. Required in case where `configType` is `customCommand` or `customEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of docker runtime"},"storage":{"type":"object","properties":{"useHdbStorage":{"type":"boolean"},"usePdSsdStorage":{"type":"boolean"},"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":1024,"description":"Ephemeral storage per container in MB","example":1024}},"additionalProperties":false},"shmSize":{"type":"integer","minimum":64,"description":"Configures the amount of available memory-backed disk space available to /dev/shm"}},"additionalProperties":false},"gpu":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"gpuType":{"type":"string"},"gpuCount":{"type":"integer"},"timesliced":{"type":"boolean"}},"required":["gpuType"],"additionalProperties":false}},"additionalProperties":false},"gracePeriodSeconds":{"type":"integer","minimum":15,"maximum":600,"description":"The 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."},"metadata":{"type":"object","properties":{"labels":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom labels for the workload."},"annotations":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom annotations for the workload as string or object."}},"additionalProperties":false,"description":"Allow setting custom labels and annotations for workloads."},"external":{"type":"object","properties":{"imagePath":{"type":"string","pattern":"^(?:(?:https?:\\/\\/)?([a-zA-Z0-9\\-]+\\.[a-zA-Z0-9\\.\\-]+)(\\/v1)?)?(?:\\/)?([a-zA-Z/-9\\.\\-_]+)(?:\\:([a-zA-Z/-9\\.\\-_\\:]+)|\\@([a-zA-Z/-9\\.\\-_\\:]+))$","description":"Image to be deployed. When not deploying from Dockerhub the URL must be specified.","example":"nginx:latest"},"credentials":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"ID of the saved credentials to use to access this external image.","example":"example-credentials"}},"required":["imagePath"],"additionalProperties":false}},"required":["external"],"additionalProperties":false,"description":"Deploy from an external image"},{"type":"object","properties":{"buildpack":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customProcess","customCommand","customEntrypointCustomCommand","originalEntrypointCustomCommand"],"description":"Type of buildpack run configuration"},"customProcess":{"type":"string","description":"Custom process which should be run. Required in case where `configType` is `customProcess`"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be run. Required in case where `configType` is `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be run. Required in case where `configType` is `customCommand`, `customEntrypointCustomCommand` or `originalEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of buildpack runtime"},"docker":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customEntrypoint","customCommand","customEntrypointCustomCommand"],"description":"Type of entrypoint & command override configuration","example":"default"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be used. Required in case where `configType` is `customEntrypoint` or `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be used. Required in case where `configType` is `customCommand` or `customEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of docker runtime"},"storage":{"type":"object","properties":{"useHdbStorage":{"type":"boolean"},"usePdSsdStorage":{"type":"boolean"},"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":1024,"description":"Ephemeral storage per container in MB","example":1024}},"additionalProperties":false},"shmSize":{"type":"integer","minimum":64,"description":"Configures the amount of available memory-backed disk space available to /dev/shm"}},"additionalProperties":false},"gpu":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"gpuType":{"type":"string"},"gpuCount":{"type":"integer"},"timesliced":{"type":"boolean"}},"required":["gpuType"],"additionalProperties":false}},"additionalProperties":false},"gracePeriodSeconds":{"type":"integer","minimum":15,"maximum":600,"description":"The 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."},"metadata":{"type":"object","properties":{"labels":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom labels for the workload."},"annotations":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom annotations for the workload as string or object."}},"additionalProperties":false,"description":"Allow setting custom labels and annotations for workloads."},"internal":{"type":"object","properties":{"id":{"anyOf":[{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":54,"example":"example-build-service"},{"type":"string","example":"example-project/example-build-service"}],"description":"ID of the build service to deploy"},"branch":{"type":"string","description":"Branch to deploy","example":"master"},"buildSHA":{"oneOf":[{"type":"string","minLength":40,"maxLength":40,"description":"A commit sha."},{"type":"string","enum":["latest"],"description":"Latest commit."}],"description":"Commit SHA to deploy, or 'latest' to deploy the most recent commit","example":"latest"},"buildId":{"type":"string","description":"ID of the build that should be deployed","example":"premium-guide-6393"}},"additionalProperties":false}},"required":["internal"],"additionalProperties":false,"description":"Deploy from a Northflank build service"},{"type":"object","properties":{},"additionalProperties":false,"description":"Choose later"}],"description":"Where to deploy the job from."},"disabledCI":{"type":"boolean","description":"Whether CI should be disabled. Only relevant for jobs deploying directly from version control.","default":false},"buildConfiguration":{"type":"object","properties":{"pathIgnoreRules":{"type":"array","items":{"type":"string","maxLength":260,"description":"A path ignore rule, following `.gitignore` syntax. For example, `*.md` will ignore all files ending with `.md`.","example":"README.md"},"maxItems":200,"description":"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."},"isAllowList":{"type":"boolean","description":"If `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`.","example":false},"ciIgnoreFlagsEnabled":{"type":"boolean","description":"If `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":{"type":"array","items":{"type":"string","maxLength":72,"description":"A commit ignore flag.","example":"[skip ci]"},"maxItems":200,"description":"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]\"]`","example":["[skip ci]","[ci skip]","[no ci]","[skip nf]","[nf skip]","[northflank skip]","[skip northflank]"]},"dockerfileTarget":{"type":"string","description":"If your Dockerfile contains multiple build stages, you can specify the target stage by entering its name here."},"dockerCredentials":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The ID of the docker credentials to use.","example":"example-docker-credential"}},"includeGitFolder":{"type":"boolean","description":"Include .git folder inside the build context"},"fullGitClone":{"type":"boolean","description":"Include the entire git history as part of the .git folder. Only relevant if \"includeGitFolder\" is set."},"enableGitLfs":{"type":"boolean","description":"Enable Git LFS support for the build"},"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false}},"additionalProperties":false,"default":{"pathIgnoreRules":[],"isAllowList":false,"ciIgnoreFlagsEnabled":false}},"buildSettings":{"oneOf":[{"type":"object","properties":{"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false},"dockerfile":{"type":"object","properties":{"useCache":{"type":"boolean","description":"DEPRECATED: This field will be removed in the near future and currently has no effect."},"buildEngine":{"type":"string","enum":["buildkit","kaniko"],"description":"Build engine to use. Defaults to recommended build engine `buildkit`","example":"buildkit","default":"buildkit"},"dockerFilePath":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]+$","description":"The file path of the Dockerfile.","example":"/Dockerfile"},"dockerWorkDir":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*$","description":"The working directory of the Dockerfile.","example":"/"},"buildkit":{"type":"object","properties":{"useCache":{"type":"boolean","description":"Use persistent storage to cache build layers.","example":true,"default":false},"cacheStorageSize":{"type":"integer","description":"The amount of persistent storage available to each build in MB.","example":32768},"useInternalCache":{"type":"boolean","description":"DEPRECATED: This field will be removed in the near future.","default":false},"internalCacheStorage":{"type":"number","format":"float","description":"DEPRECATED: This field will be removed in the near future."}},"additionalProperties":false}},"required":["dockerFilePath","dockerWorkDir"],"additionalProperties":false}},"required":["dockerfile"],"additionalProperties":false,"description":"Build from a Dockerfile"},{"type":"object","properties":{"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false},"buildpack":{"type":"object","properties":{"builder":{"type":"string","enum":["HEROKU_24","HEROKU_22","HEROKU_22_CLASSIC","HEROKU_20","HEROKU_18","GOOGLE_22","GOOGLE_V1","CNB_ALPINE","CNB_BIONIC","PAKETO_JAMMY_TINY","PAKETO_JAMMY_BASE","PAKETO_JAMMY_FULL","PAKETO_TINY","PAKETO_BASE","PAKETO_FULL"],"description":"Buildpack stack to use. Defaults to recommended stack `HEROKU_24`.","example":"HEROKU_24","default":"HEROKU_24"},"buildpackLocators":{"type":"array","items":{"type":"string","description":"Url or registry identifier of custom Buildpack.","example":"https://buildpack-registry.heroku.com/cnb/mars/create-react-app"},"description":"Array of custom Buildpacks to use.","default":[]},"buildContext":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*$","description":"The working directory to build in.","example":"/","default":"/"},"useCache":{"type":"boolean","description":"Should build dependencies be cached?","example":false,"default":false}},"additionalProperties":false}},"required":["buildpack"],"additionalProperties":false,"description":"Build from a Buildpack"}],"description":"Build engine"},"runtimeEnvironment":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"An object containing the runtime environment to set for the job. Keys may only contain letters, numbers, hyphens, forward slashes and dots.","example":{"variable1":"abcdef","variable2":"12345"},"default":{}},"runtimeFiles":{"type":"object","properties":{},"description":"Secret files as JSON object, encrypted at rest. File path must be absolute","example":{"/dir/fileName":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"buildArguments":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"An object containing the build arguments to set for the job. Keys may only contain letters, numbers, hyphens, forward slashes and dots.","example":{"variable1":"abcdef","variable2":"12345"},"default":{}},"buildFiles":{"type":"object","properties":{},"description":"Secret files as JSON object, encrypted at rest. File path must be absolute","example":{"/dir/fileName":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"dockerSecretMounts":{"type":"object","properties":{},"description":"Docker secret mount contents as JSON object, encrypted at rest. Must be a valid Docker secret mount identifier","example":{"example-secret-mount_1":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"healthChecks":{"type":"array","items":{"type":"object","properties":{"protocol":{"type":"string","enum":["HTTP","CMD","TCP"],"description":"The protocol to access the health check with.","example":"HTTP"},"type":{"type":"string","enum":["livenessProbe","readinessProbe","startupProbe"],"description":"The type of health check.","example":"readinessProbe"},"path":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*((\\?([a-zA-Z0-9-._]+(=[a-zA-Z0-9-._]+)?)*)(&([a-zA-Z0-9-._]+(=[a-zA-Z0-9-._]+)?)*)*)?$","description":"The path of the health check endpoint. Required when protocol is HTTP.","example":"/health-check"},"cmd":{"type":"string","description":"The command to run for the health check. Required when protocol is CMD"},"port":{"type":"integer","minimum":1,"description":"Port number for the health check endpoint. Required when protocol is HTTP.","example":8080},"initialDelaySeconds":{"type":"integer","minimum":1,"maximum":180,"description":"Initial delay, in seconds, before the health check is first run.","example":10},"periodSeconds":{"type":"integer","minimum":10,"maximum":600,"description":"The time between each check, in seconds.","example":60},"timeoutSeconds":{"type":"integer","minimum":1,"maximum":60,"description":"The time to wait for a response before marking the health check as a failure.","example":1},"failureThreshold":{"type":"integer","minimum":1,"maximum":255,"description":"The maximum number of allowed failures.","example":3},"successThreshold":{"type":"integer","minimum":1,"maximum":255,"description":"The number of successes required to mark the health check as a success.","example":1}},"required":["protocol","type","initialDelaySeconds","periodSeconds","timeoutSeconds","failureThreshold"],"additionalProperties":false,"description":"A health check object."},"description":"An array of health checks."},"settings":{"type":"object","properties":{"backoffLimit":{"type":"integer","minimum":0,"description":"The number of attempts to rerun a job before it is marked as failed.","example":0},"runOnSourceChange":{"type":"string","enum":["never","cd-promote","always"],"description":"Configure when the job should be run if the source image changes.","example":"never","default":"never"},"activeDeadlineSeconds":{"type":"integer","minimum":1,"nullable":true,"description":"The maximum amount of time, in seconds, for a job to run before it is marked as failed.","example":600},"cron":{"type":"object","properties":{"schedule":{"type":"string","pattern":"(@(annually|yearly|monthly|weekly|daily|hourly))|((((\\d+,)+\\d+|(\\d+(\\/|-)\\d+)|\\d+|\\*) ?){5})","nullable":true,"description":"The cron timer scheduling when to run the job.","example":"30 8 * * *"},"suspended":{"type":"boolean","description":"Whether the cron's automatic scheduling is suspended","example":false,"default":false},"concurrencyPolicy":{"type":"string","enum":["allow","forbid","replace"],"description":"Whether this job should run when another instance of the job is already running. `allow` will enable multiple instances of this job to run. `forbid` will keep the current instance of the job running and stop a new instance from being run. `replace` will terminate any currently running instance of the job and start a new one.","example":"forbid","default":"forbid"}},"additionalProperties":false}},"required":["backoffLimit"],"additionalProperties":false}},"required":["name","billing"],"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Project > Jobs > General > Create","x-nf-team-scoped":true,"x-nf-cli-command":["create","job"]},"v1-projects--projectId--jobs-put":{"operationId":"putProjectsJobs","summary":"Put job","description":"Creates or updates a job (manual or cron based on settings.cron presence)","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}}],"responses":{"200":{"description":"Details about the created or updated job.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":52,"description":"The name of the job.","example":"Example Job"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"A description of the job.","example":"A job description"},"stageId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"infrastructure":{"type":"object","properties":{"architecture":{"type":"string","enum":["x86","arm"]}},"additionalProperties":false},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"billing":{"type":"object","properties":{"buildPlan":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The ID of the build plan to use.","example":"nf-compute-200-8"},"deploymentPlan":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The ID of the deployment plan to use.","example":"nf-compute-20"},"gpu":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"gpuType":{"type":"string"},"gpuCount":{"type":"integer"},"timesliced":{"type":"boolean"}},"required":["gpuType"],"additionalProperties":false}},"additionalProperties":false}},"required":["deploymentPlan"],"additionalProperties":false},"disabledCI":{"type":"boolean","description":"Whether CI should be disabled. Only relevant for jobs deploying directly from version control.","default":false},"buildConfiguration":{"type":"object","properties":{"pathIgnoreRules":{"type":"array","items":{"type":"string","maxLength":260,"description":"A path ignore rule, following `.gitignore` syntax. For example, `*.md` will ignore all files ending with `.md`.","example":"README.md"},"maxItems":200,"description":"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."},"isAllowList":{"type":"boolean","description":"If `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`.","example":false},"ciIgnoreFlagsEnabled":{"type":"boolean","description":"If `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":{"type":"array","items":{"type":"string","maxLength":72,"description":"A commit ignore flag.","example":"[skip ci]"},"maxItems":200,"description":"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]\"]`","example":["[skip ci]","[ci skip]","[no ci]","[skip nf]","[nf skip]","[northflank skip]","[skip northflank]"]},"dockerfileTarget":{"type":"string","description":"If your Dockerfile contains multiple build stages, you can specify the target stage by entering its name here."},"dockerCredentials":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The ID of the docker credentials to use.","example":"example-docker-credential"}},"includeGitFolder":{"type":"boolean","description":"Include .git folder inside the build context"},"fullGitClone":{"type":"boolean","description":"Include the entire git history as part of the .git folder. Only relevant if \"includeGitFolder\" is set."},"enableGitLfs":{"type":"boolean","description":"Enable Git LFS support for the build"},"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false}},"additionalProperties":false,"default":{"pathIgnoreRules":[],"isAllowList":false,"ciIgnoreFlagsEnabled":false}},"buildSettings":{"oneOf":[{"type":"object","properties":{"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false},"dockerfile":{"type":"object","properties":{"useCache":{"type":"boolean","description":"DEPRECATED: This field will be removed in the near future and currently has no effect."},"buildEngine":{"type":"string","enum":["buildkit","kaniko"],"description":"Build engine to use. Defaults to recommended build engine `buildkit`","example":"buildkit","default":"buildkit"},"dockerFilePath":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]+$","description":"The file path of the Dockerfile.","example":"/Dockerfile"},"dockerWorkDir":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*$","description":"The working directory of the Dockerfile.","example":"/"},"buildkit":{"type":"object","properties":{"useCache":{"type":"boolean","description":"Use persistent storage to cache build layers.","example":true,"default":false},"cacheStorageSize":{"type":"integer","description":"The amount of persistent storage available to each build in MB.","example":32768},"useInternalCache":{"type":"boolean","description":"DEPRECATED: This field will be removed in the near future.","default":false},"internalCacheStorage":{"type":"number","format":"float","description":"DEPRECATED: This field will be removed in the near future."}},"additionalProperties":false}},"required":["dockerFilePath","dockerWorkDir"],"additionalProperties":false}},"required":["dockerfile"],"additionalProperties":false,"description":"Build from a Dockerfile"},{"type":"object","properties":{"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false},"buildpack":{"type":"object","properties":{"builder":{"type":"string","enum":["HEROKU_24","HEROKU_22","HEROKU_22_CLASSIC","HEROKU_20","HEROKU_18","GOOGLE_22","GOOGLE_V1","CNB_ALPINE","CNB_BIONIC","PAKETO_JAMMY_TINY","PAKETO_JAMMY_BASE","PAKETO_JAMMY_FULL","PAKETO_TINY","PAKETO_BASE","PAKETO_FULL"],"description":"Buildpack stack to use. Defaults to recommended stack `HEROKU_24`.","example":"HEROKU_24","default":"HEROKU_24"},"buildpackLocators":{"type":"array","items":{"type":"string","description":"Url or registry identifier of custom Buildpack.","example":"https://buildpack-registry.heroku.com/cnb/mars/create-react-app"},"description":"Array of custom Buildpacks to use.","default":[]},"buildContext":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*$","description":"The working directory to build in.","example":"/","default":"/"},"useCache":{"type":"boolean","description":"Should build dependencies be cached?","example":false,"default":false}},"additionalProperties":false}},"required":["buildpack"],"additionalProperties":false,"description":"Build from a Buildpack"}],"description":"Build engine"},"runtimeEnvironment":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"An object containing the runtime environment to set for the job. Keys may only contain letters, numbers, hyphens, forward slashes and dots.","example":{"variable1":"abcdef","variable2":"12345"},"default":{}},"runtimeFiles":{"type":"object","properties":{},"description":"Secret files as JSON object, encrypted at rest. File path must be absolute","example":{"/dir/fileName":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"buildArguments":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"An object containing the build arguments to set for the job. Keys may only contain letters, numbers, hyphens, forward slashes and dots.","example":{"variable1":"abcdef","variable2":"12345"},"default":{}},"buildFiles":{"type":"object","properties":{},"description":"Secret files as JSON object, encrypted at rest. File path must be absolute","example":{"/dir/fileName":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"dockerSecretMounts":{"type":"object","properties":{},"description":"Docker secret mount contents as JSON object, encrypted at rest. Must be a valid Docker secret mount identifier","example":{"example-secret-mount_1":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"healthChecks":{"type":"array","items":{"type":"object","properties":{"protocol":{"type":"string","enum":["HTTP","CMD","TCP"],"description":"The protocol to access the health check with.","example":"HTTP"},"type":{"type":"string","enum":["livenessProbe","readinessProbe","startupProbe"],"description":"The type of health check.","example":"readinessProbe"},"path":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*((\\?([a-zA-Z0-9-._]+(=[a-zA-Z0-9-._]+)?)*)(&([a-zA-Z0-9-._]+(=[a-zA-Z0-9-._]+)?)*)*)?$","description":"The path of the health check endpoint. Required when protocol is HTTP.","example":"/health-check"},"cmd":{"type":"string","description":"The command to run for the health check. Required when protocol is CMD"},"port":{"type":"integer","minimum":1,"description":"Port number for the health check endpoint. Required when protocol is HTTP.","example":8080},"initialDelaySeconds":{"type":"integer","minimum":1,"maximum":180,"description":"Initial delay, in seconds, before the health check is first run.","example":10},"periodSeconds":{"type":"integer","minimum":10,"maximum":600,"description":"The time between each check, in seconds.","example":60},"timeoutSeconds":{"type":"integer","minimum":1,"maximum":60,"description":"The time to wait for a response before marking the health check as a failure.","example":1},"failureThreshold":{"type":"integer","minimum":1,"maximum":255,"description":"The maximum number of allowed failures.","example":3},"successThreshold":{"type":"integer","minimum":1,"maximum":255,"description":"The number of successes required to mark the health check as a success.","example":1}},"required":["protocol","type","initialDelaySeconds","periodSeconds","timeoutSeconds","failureThreshold"],"additionalProperties":false,"description":"A health check object."},"description":"An array of health checks."},"settings":{"type":"object","properties":{"backoffLimit":{"type":"integer","minimum":0,"description":"The number of attempts to rerun a job before it is marked as failed.","example":0},"runOnSourceChange":{"type":"string","enum":["never","cd-promote","always"],"description":"Configure when the job should be run if the source image changes.","example":"never","default":"never"},"activeDeadlineSeconds":{"type":"integer","minimum":1,"nullable":true,"description":"The maximum amount of time, in seconds, for a job to run before it is marked as failed.","example":600},"cron":{"type":"object","properties":{"schedule":{"type":"string","nullable":true,"description":"The cron timer scheduling when to run the job.","example":"30 8 * * *"},"suspended":{"type":"boolean","description":"Whether the cron's automatic scheduling is suspended","example":false,"default":false},"concurrencyPolicy":{"type":"string","enum":["allow","forbid","replace"],"description":"Whether this job should run when another instance of the job is already running. `allow` will enable multiple instances of this job to run. `forbid` will keep the current instance of the job running and stop a new instance from being run. `replace` will terminate any currently running instance of the job and start a new one.","example":"forbid","default":"forbid"}},"additionalProperties":false}},"required":["backoffLimit"],"additionalProperties":false},"jobType":{"type":"string","enum":["cron"],"description":"Type of the job (manual or cron)","example":"cron"},"id":{"type":"string","description":"Identifier for the job","example":"example-job"},"appId":{"type":"string","description":"Full identifier used for job deployment","example":"/example-user/default-project/example-job"},"deployment":{"type":"object","properties":{"buildpack":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customProcess","customCommand","customEntrypointCustomCommand","originalEntrypointCustomCommand"],"description":"Type of buildpack run configuration"},"customProcess":{"type":"string","description":"Custom process which should be run. Required in case where `configType` is `customProcess`"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be run. Required in case where `configType` is `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be run. Required in case where `configType` is `customCommand`, `customEntrypointCustomCommand` or `originalEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of buildpack runtime"},"docker":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customEntrypoint","customCommand","customEntrypointCustomCommand"],"description":"Type of entrypoint & command override configuration","example":"default"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be used. Required in case where `configType` is `customEntrypoint` or `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be used. Required in case where `configType` is `customCommand` or `customEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of docker runtime"},"storage":{"type":"object","properties":{"useHdbStorage":{"type":"boolean"},"usePdSsdStorage":{"type":"boolean"},"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":1024,"description":"Ephemeral storage per container in MB","example":1024}},"additionalProperties":false},"shmSize":{"type":"integer","minimum":64,"description":"Configures the amount of available memory-backed disk space available to /dev/shm"}},"additionalProperties":false},"gpu":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"gpuType":{"type":"string"},"gpuCount":{"type":"integer"},"timesliced":{"type":"boolean"}},"required":["gpuType"],"additionalProperties":false}},"additionalProperties":false},"gracePeriodSeconds":{"type":"integer","minimum":15,"maximum":600,"description":"The 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."},"metadata":{"type":"object","properties":{"labels":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom labels for the workload."},"annotations":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom annotations for the workload as string or object."}},"additionalProperties":false,"description":"Allow setting custom labels and annotations for workloads."},"vcs":{"type":"object","properties":{"projectUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo to build.","example":"https://github.com/northflank/gatsby-with-northflank"},"projectType":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string","minLength":24,"maxLength":24,"description":"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 `vcsLinkId` is provided, Northflank will instead use your linked account with that ID."},"projectBranch":{"type":"string","description":"The name of the branch to use.","example":"master"}},"required":["projectUrl","projectType","projectBranch"],"additionalProperties":false},"external":{"type":"object","properties":{"imagePath":{"type":"string","pattern":"^(?:(?:https?:\\/\\/)?([a-zA-Z0-9\\-]+\\.[a-zA-Z0-9\\.\\-]+)(\\/v1)?)?(?:\\/)?([a-zA-Z/-9\\.\\-_]+)(?:\\:([a-zA-Z/-9\\.\\-_\\:]+)|\\@([a-zA-Z/-9\\.\\-_\\:]+))$","description":"Image to be deployed. When not deploying from Dockerhub the URL must be specified.","example":"nginx:latest"},"credentials":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"ID of the saved credentials to use to access this external image.","example":"example-credentials"}},"required":["imagePath"],"additionalProperties":false},"internal":{"type":"object","properties":{"id":{"anyOf":[{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":54,"example":"example-build-service"},{"type":"string","example":"example-project/example-build-service"}],"description":"ID of the build service to deploy"},"branch":{"type":"string","description":"Branch to deploy","example":"master"},"buildSHA":{"oneOf":[{"type":"string","minLength":40,"maxLength":40,"description":"A commit sha."},{"type":"string","enum":["latest"],"description":"Latest commit."}],"description":"Commit SHA to deploy, or 'latest' to deploy the most recent commit","example":"latest"},"buildId":{"type":"string","description":"ID of the build that should be deployed","example":"premium-guide-6393"}},"additionalProperties":false},"imageUrl":{"type":"string","description":"Image registry url of the deployed image."}},"additionalProperties":false,"default":{}},"status":{"type":"object","properties":{"build":{"type":"object","properties":{"status":{"type":"string","enum":["QUEUED","PENDING","UNSCHEDULABLE","STARTING","CLONING","BUILDING","UPLOADING","ABORTED","FAILURE","SUBMISSION_FAILURE","SUCCESS","CRASHED","IN_PROGRESS"],"description":"The current status of the build.","example":"SUCCESS"},"lastTransitionTime":{"type":"string","format":"date-time","description":"The timestamp of when the build reached this status.","example":"2021-11-29T11:47:16.624Z"}},"required":["status"],"additionalProperties":false,"description":"Details about the status of the most recent build."}},"additionalProperties":false,"description":"Details about the current job status."},"cluster":{"type":"object","properties":{"id":{"type":"string","description":"The id of the cluster associated with this project.","example":"nf-europe-west"},"name":{"type":"string","description":"The name of the cluster associated with this project.","example":"nf-europe-west"},"namespace":{"type":"string","description":"Namespace this resource is located within on the cluster.","example":"ns-8zy2mcjh9zn2"},"loadBalancers":{"type":"array","items":{"type":"string","example":"lb.659200800000000000000000.northflank.com"},"description":"Load balancer DNS for the cluster."}},"required":["id","name"],"additionalProperties":false,"description":"Cluster information"},"createdAt":{"type":"string","format":"date-time","description":"time of creation"},"updatedAt":{"type":"string","format":"date-time","description":"time of update"}},"required":["name","billing","jobType","id","appId","status","cluster"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Jobs","project"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":52,"description":"The name of the job.","example":"Example Job"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"A description of the job.","example":"A job description"},"stageId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"infrastructure":{"type":"object","properties":{"architecture":{"type":"string","enum":["x86","arm"]}},"additionalProperties":false},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"billing":{"type":"object","properties":{"buildPlan":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The ID of the build plan to use.","example":"nf-compute-200-8"},"deploymentPlan":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The ID of the deployment plan to use.","example":"nf-compute-20"},"gpu":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"gpuType":{"type":"string"},"gpuCount":{"type":"integer"},"timesliced":{"type":"boolean"}},"required":["gpuType"],"additionalProperties":false}},"additionalProperties":false}},"required":["deploymentPlan"],"additionalProperties":false},"deployment":{"oneOf":[{"type":"object","properties":{"buildpack":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customProcess","customCommand","customEntrypointCustomCommand","originalEntrypointCustomCommand"],"description":"Type of buildpack run configuration"},"customProcess":{"type":"string","description":"Custom process which should be run. Required in case where `configType` is `customProcess`"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be run. Required in case where `configType` is `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be run. Required in case where `configType` is `customCommand`, `customEntrypointCustomCommand` or `originalEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of buildpack runtime"},"docker":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customEntrypoint","customCommand","customEntrypointCustomCommand"],"description":"Type of entrypoint & command override configuration","example":"default"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be used. Required in case where `configType` is `customEntrypoint` or `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be used. Required in case where `configType` is `customCommand` or `customEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of docker runtime"},"storage":{"type":"object","properties":{"useHdbStorage":{"type":"boolean"},"usePdSsdStorage":{"type":"boolean"},"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":1024,"description":"Ephemeral storage per container in MB","example":1024}},"additionalProperties":false},"shmSize":{"type":"integer","minimum":64,"description":"Configures the amount of available memory-backed disk space available to /dev/shm"}},"additionalProperties":false},"gpu":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"gpuType":{"type":"string"},"gpuCount":{"type":"integer"},"timesliced":{"type":"boolean"}},"required":["gpuType"],"additionalProperties":false}},"additionalProperties":false},"gracePeriodSeconds":{"type":"integer","minimum":15,"maximum":600,"description":"The 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."},"metadata":{"type":"object","properties":{"labels":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom labels for the workload."},"annotations":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom annotations for the workload as string or object."}},"additionalProperties":false,"description":"Allow setting custom labels and annotations for workloads."},"vcs":{"type":"object","properties":{"projectUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo to build.","example":"https://github.com/northflank/gatsby-with-northflank"},"projectType":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string","minLength":24,"maxLength":24,"description":"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 `vcsLinkId` is provided, Northflank will instead use your linked account with that ID."},"projectBranch":{"type":"string","description":"The name of the branch to use.","example":"master"}},"required":["projectUrl","projectType","projectBranch"],"additionalProperties":false}},"required":["vcs"],"additionalProperties":false,"description":"Deploy from version control"},{"type":"object","properties":{"buildpack":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customProcess","customCommand","customEntrypointCustomCommand","originalEntrypointCustomCommand"],"description":"Type of buildpack run configuration"},"customProcess":{"type":"string","description":"Custom process which should be run. Required in case where `configType` is `customProcess`"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be run. Required in case where `configType` is `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be run. Required in case where `configType` is `customCommand`, `customEntrypointCustomCommand` or `originalEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of buildpack runtime"},"docker":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customEntrypoint","customCommand","customEntrypointCustomCommand"],"description":"Type of entrypoint & command override configuration","example":"default"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be used. Required in case where `configType` is `customEntrypoint` or `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be used. Required in case where `configType` is `customCommand` or `customEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of docker runtime"},"storage":{"type":"object","properties":{"useHdbStorage":{"type":"boolean"},"usePdSsdStorage":{"type":"boolean"},"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":1024,"description":"Ephemeral storage per container in MB","example":1024}},"additionalProperties":false},"shmSize":{"type":"integer","minimum":64,"description":"Configures the amount of available memory-backed disk space available to /dev/shm"}},"additionalProperties":false},"gpu":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"gpuType":{"type":"string"},"gpuCount":{"type":"integer"},"timesliced":{"type":"boolean"}},"required":["gpuType"],"additionalProperties":false}},"additionalProperties":false},"gracePeriodSeconds":{"type":"integer","minimum":15,"maximum":600,"description":"The 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."},"metadata":{"type":"object","properties":{"labels":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom labels for the workload."},"annotations":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom annotations for the workload as string or object."}},"additionalProperties":false,"description":"Allow setting custom labels and annotations for workloads."},"external":{"type":"object","properties":{"imagePath":{"type":"string","pattern":"^(?:(?:https?:\\/\\/)?([a-zA-Z0-9\\-]+\\.[a-zA-Z0-9\\.\\-]+)(\\/v1)?)?(?:\\/)?([a-zA-Z/-9\\.\\-_]+)(?:\\:([a-zA-Z/-9\\.\\-_\\:]+)|\\@([a-zA-Z/-9\\.\\-_\\:]+))$","description":"Image to be deployed. When not deploying from Dockerhub the URL must be specified.","example":"nginx:latest"},"credentials":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"ID of the saved credentials to use to access this external image.","example":"example-credentials"}},"required":["imagePath"],"additionalProperties":false}},"required":["external"],"additionalProperties":false,"description":"Deploy from an external image"},{"type":"object","properties":{"buildpack":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customProcess","customCommand","customEntrypointCustomCommand","originalEntrypointCustomCommand"],"description":"Type of buildpack run configuration"},"customProcess":{"type":"string","description":"Custom process which should be run. Required in case where `configType` is `customProcess`"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be run. Required in case where `configType` is `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be run. Required in case where `configType` is `customCommand`, `customEntrypointCustomCommand` or `originalEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of buildpack runtime"},"docker":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customEntrypoint","customCommand","customEntrypointCustomCommand"],"description":"Type of entrypoint & command override configuration","example":"default"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be used. Required in case where `configType` is `customEntrypoint` or `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be used. Required in case where `configType` is `customCommand` or `customEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of docker runtime"},"storage":{"type":"object","properties":{"useHdbStorage":{"type":"boolean"},"usePdSsdStorage":{"type":"boolean"},"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":1024,"description":"Ephemeral storage per container in MB","example":1024}},"additionalProperties":false},"shmSize":{"type":"integer","minimum":64,"description":"Configures the amount of available memory-backed disk space available to /dev/shm"}},"additionalProperties":false},"gpu":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"gpuType":{"type":"string"},"gpuCount":{"type":"integer"},"timesliced":{"type":"boolean"}},"required":["gpuType"],"additionalProperties":false}},"additionalProperties":false},"gracePeriodSeconds":{"type":"integer","minimum":15,"maximum":600,"description":"The 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."},"metadata":{"type":"object","properties":{"labels":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom labels for the workload."},"annotations":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom annotations for the workload as string or object."}},"additionalProperties":false,"description":"Allow setting custom labels and annotations for workloads."},"internal":{"type":"object","properties":{"id":{"anyOf":[{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":54,"example":"example-build-service"},{"type":"string","example":"example-project/example-build-service"}],"description":"ID of the build service to deploy"},"branch":{"type":"string","description":"Branch to deploy","example":"master"},"buildSHA":{"oneOf":[{"type":"string","minLength":40,"maxLength":40,"description":"A commit sha."},{"type":"string","enum":["latest"],"description":"Latest commit."}],"description":"Commit SHA to deploy, or 'latest' to deploy the most recent commit","example":"latest"},"buildId":{"type":"string","description":"ID of the build that should be deployed","example":"premium-guide-6393"}},"additionalProperties":false}},"required":["internal"],"additionalProperties":false,"description":"Deploy from a Northflank build service"},{"type":"object","properties":{},"additionalProperties":false,"description":"Choose later"}],"description":"Where to deploy the job from."},"disabledCI":{"type":"boolean","description":"Whether CI should be disabled. Only relevant for jobs deploying directly from version control.","default":false},"buildConfiguration":{"type":"object","properties":{"pathIgnoreRules":{"type":"array","items":{"type":"string","maxLength":260,"description":"A path ignore rule, following `.gitignore` syntax. For example, `*.md` will ignore all files ending with `.md`.","example":"README.md"},"maxItems":200,"description":"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."},"isAllowList":{"type":"boolean","description":"If `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`.","example":false},"ciIgnoreFlagsEnabled":{"type":"boolean","description":"If `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":{"type":"array","items":{"type":"string","maxLength":72,"description":"A commit ignore flag.","example":"[skip ci]"},"maxItems":200,"description":"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]\"]`","example":["[skip ci]","[ci skip]","[no ci]","[skip nf]","[nf skip]","[northflank skip]","[skip northflank]"]},"dockerfileTarget":{"type":"string","description":"If your Dockerfile contains multiple build stages, you can specify the target stage by entering its name here."},"dockerCredentials":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The ID of the docker credentials to use.","example":"example-docker-credential"}},"includeGitFolder":{"type":"boolean","description":"Include .git folder inside the build context"},"fullGitClone":{"type":"boolean","description":"Include the entire git history as part of the .git folder. Only relevant if \"includeGitFolder\" is set."},"enableGitLfs":{"type":"boolean","description":"Enable Git LFS support for the build"},"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false}},"additionalProperties":false,"default":{"pathIgnoreRules":[],"isAllowList":false,"ciIgnoreFlagsEnabled":false}},"buildSettings":{"oneOf":[{"type":"object","properties":{"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false},"dockerfile":{"type":"object","properties":{"useCache":{"type":"boolean","description":"DEPRECATED: This field will be removed in the near future and currently has no effect."},"buildEngine":{"type":"string","enum":["buildkit","kaniko"],"description":"Build engine to use. Defaults to recommended build engine `buildkit`","example":"buildkit","default":"buildkit"},"dockerFilePath":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]+$","description":"The file path of the Dockerfile.","example":"/Dockerfile"},"dockerWorkDir":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*$","description":"The working directory of the Dockerfile.","example":"/"},"buildkit":{"type":"object","properties":{"useCache":{"type":"boolean","description":"Use persistent storage to cache build layers.","example":true,"default":false},"cacheStorageSize":{"type":"integer","description":"The amount of persistent storage available to each build in MB.","example":32768},"useInternalCache":{"type":"boolean","description":"DEPRECATED: This field will be removed in the near future.","default":false},"internalCacheStorage":{"type":"number","format":"float","description":"DEPRECATED: This field will be removed in the near future."}},"additionalProperties":false}},"required":["dockerFilePath","dockerWorkDir"],"additionalProperties":false}},"required":["dockerfile"],"additionalProperties":false,"description":"Build from a Dockerfile"},{"type":"object","properties":{"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false},"buildpack":{"type":"object","properties":{"builder":{"type":"string","enum":["HEROKU_24","HEROKU_22","HEROKU_22_CLASSIC","HEROKU_20","HEROKU_18","GOOGLE_22","GOOGLE_V1","CNB_ALPINE","CNB_BIONIC","PAKETO_JAMMY_TINY","PAKETO_JAMMY_BASE","PAKETO_JAMMY_FULL","PAKETO_TINY","PAKETO_BASE","PAKETO_FULL"],"description":"Buildpack stack to use. Defaults to recommended stack `HEROKU_24`.","example":"HEROKU_24","default":"HEROKU_24"},"buildpackLocators":{"type":"array","items":{"type":"string","description":"Url or registry identifier of custom Buildpack.","example":"https://buildpack-registry.heroku.com/cnb/mars/create-react-app"},"description":"Array of custom Buildpacks to use.","default":[]},"buildContext":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*$","description":"The working directory to build in.","example":"/","default":"/"},"useCache":{"type":"boolean","description":"Should build dependencies be cached?","example":false,"default":false}},"additionalProperties":false}},"required":["buildpack"],"additionalProperties":false,"description":"Build from a Buildpack"}],"description":"Build engine"},"runtimeEnvironment":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"An object containing the runtime environment to set for the job. Keys may only contain letters, numbers, hyphens, forward slashes and dots.","example":{"variable1":"abcdef","variable2":"12345"},"default":{}},"runtimeFiles":{"type":"object","properties":{},"description":"Secret files as JSON object, encrypted at rest. File path must be absolute","example":{"/dir/fileName":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"buildArguments":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"An object containing the build arguments to set for the job. Keys may only contain letters, numbers, hyphens, forward slashes and dots.","example":{"variable1":"abcdef","variable2":"12345"},"default":{}},"buildFiles":{"type":"object","properties":{},"description":"Secret files as JSON object, encrypted at rest. File path must be absolute","example":{"/dir/fileName":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"dockerSecretMounts":{"type":"object","properties":{},"description":"Docker secret mount contents as JSON object, encrypted at rest. Must be a valid Docker secret mount identifier","example":{"example-secret-mount_1":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"healthChecks":{"type":"array","items":{"type":"object","properties":{"protocol":{"type":"string","enum":["HTTP","CMD","TCP"],"description":"The protocol to access the health check with.","example":"HTTP"},"type":{"type":"string","enum":["livenessProbe","readinessProbe","startupProbe"],"description":"The type of health check.","example":"readinessProbe"},"path":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*((\\?([a-zA-Z0-9-._]+(=[a-zA-Z0-9-._]+)?)*)(&([a-zA-Z0-9-._]+(=[a-zA-Z0-9-._]+)?)*)*)?$","description":"The path of the health check endpoint. Required when protocol is HTTP.","example":"/health-check"},"cmd":{"type":"string","description":"The command to run for the health check. Required when protocol is CMD"},"port":{"type":"integer","minimum":1,"description":"Port number for the health check endpoint. Required when protocol is HTTP.","example":8080},"initialDelaySeconds":{"type":"integer","minimum":1,"maximum":180,"description":"Initial delay, in seconds, before the health check is first run.","example":10},"periodSeconds":{"type":"integer","minimum":10,"maximum":600,"description":"The time between each check, in seconds.","example":60},"timeoutSeconds":{"type":"integer","minimum":1,"maximum":60,"description":"The time to wait for a response before marking the health check as a failure.","example":1},"failureThreshold":{"type":"integer","minimum":1,"maximum":255,"description":"The maximum number of allowed failures.","example":3},"successThreshold":{"type":"integer","minimum":1,"maximum":255,"description":"The number of successes required to mark the health check as a success.","example":1}},"required":["protocol","type","initialDelaySeconds","periodSeconds","timeoutSeconds","failureThreshold"],"additionalProperties":false,"description":"A health check object."},"description":"An array of health checks."},"settings":{"type":"object","properties":{"backoffLimit":{"type":"integer","minimum":0,"description":"The number of attempts to rerun a job before it is marked as failed.","example":0},"runOnSourceChange":{"type":"string","enum":["never","cd-promote","always"],"description":"Configure when the job should be run if the source image changes.","example":"never","default":"never"},"activeDeadlineSeconds":{"type":"integer","minimum":1,"nullable":true,"description":"The maximum amount of time, in seconds, for a job to run before it is marked as failed.","example":600},"cron":{"type":"object","properties":{"schedule":{"type":"string","pattern":"(@(annually|yearly|monthly|weekly|daily|hourly))|((((\\d+,)+\\d+|(\\d+(\\/|-)\\d+)|\\d+|\\*) ?){5})","nullable":true,"description":"The cron timer scheduling when to run the job.","example":"30 8 * * *"},"suspended":{"type":"boolean","description":"Whether the cron's automatic scheduling is suspended","example":false,"default":false},"concurrencyPolicy":{"type":"string","enum":["allow","forbid","replace"],"description":"Whether this job should run when another instance of the job is already running. `allow` will enable multiple instances of this job to run. `forbid` will keep the current instance of the job running and stop a new instance from being run. `replace` will terminate any currently running instance of the job and start a new one.","example":"forbid","default":"forbid"}},"additionalProperties":false}},"required":["backoffLimit"],"additionalProperties":false}},"required":["name","billing"],"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Project > Jobs > General > Create","x-nf-team-scoped":true,"x-nf-cli-command":["put","job"]},"v1-projects--projectId--jobs-put-team-scoped":{"operationId":"putProjectsJobs","summary":"Put job","description":"Creates or updates a job (manual or cron based on settings.cron presence)","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}}],"responses":{"200":{"description":"Details about the created or updated job.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":52,"description":"The name of the job.","example":"Example Job"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"A description of the job.","example":"A job description"},"stageId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"infrastructure":{"type":"object","properties":{"architecture":{"type":"string","enum":["x86","arm"]}},"additionalProperties":false},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"billing":{"type":"object","properties":{"buildPlan":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The ID of the build plan to use.","example":"nf-compute-200-8"},"deploymentPlan":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The ID of the deployment plan to use.","example":"nf-compute-20"},"gpu":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"gpuType":{"type":"string"},"gpuCount":{"type":"integer"},"timesliced":{"type":"boolean"}},"required":["gpuType"],"additionalProperties":false}},"additionalProperties":false}},"required":["deploymentPlan"],"additionalProperties":false},"disabledCI":{"type":"boolean","description":"Whether CI should be disabled. Only relevant for jobs deploying directly from version control.","default":false},"buildConfiguration":{"type":"object","properties":{"pathIgnoreRules":{"type":"array","items":{"type":"string","maxLength":260,"description":"A path ignore rule, following `.gitignore` syntax. For example, `*.md` will ignore all files ending with `.md`.","example":"README.md"},"maxItems":200,"description":"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."},"isAllowList":{"type":"boolean","description":"If `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`.","example":false},"ciIgnoreFlagsEnabled":{"type":"boolean","description":"If `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":{"type":"array","items":{"type":"string","maxLength":72,"description":"A commit ignore flag.","example":"[skip ci]"},"maxItems":200,"description":"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]\"]`","example":["[skip ci]","[ci skip]","[no ci]","[skip nf]","[nf skip]","[northflank skip]","[skip northflank]"]},"dockerfileTarget":{"type":"string","description":"If your Dockerfile contains multiple build stages, you can specify the target stage by entering its name here."},"dockerCredentials":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The ID of the docker credentials to use.","example":"example-docker-credential"}},"includeGitFolder":{"type":"boolean","description":"Include .git folder inside the build context"},"fullGitClone":{"type":"boolean","description":"Include the entire git history as part of the .git folder. Only relevant if \"includeGitFolder\" is set."},"enableGitLfs":{"type":"boolean","description":"Enable Git LFS support for the build"},"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false}},"additionalProperties":false,"default":{"pathIgnoreRules":[],"isAllowList":false,"ciIgnoreFlagsEnabled":false}},"buildSettings":{"oneOf":[{"type":"object","properties":{"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false},"dockerfile":{"type":"object","properties":{"useCache":{"type":"boolean","description":"DEPRECATED: This field will be removed in the near future and currently has no effect."},"buildEngine":{"type":"string","enum":["buildkit","kaniko"],"description":"Build engine to use. Defaults to recommended build engine `buildkit`","example":"buildkit","default":"buildkit"},"dockerFilePath":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]+$","description":"The file path of the Dockerfile.","example":"/Dockerfile"},"dockerWorkDir":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*$","description":"The working directory of the Dockerfile.","example":"/"},"buildkit":{"type":"object","properties":{"useCache":{"type":"boolean","description":"Use persistent storage to cache build layers.","example":true,"default":false},"cacheStorageSize":{"type":"integer","description":"The amount of persistent storage available to each build in MB.","example":32768},"useInternalCache":{"type":"boolean","description":"DEPRECATED: This field will be removed in the near future.","default":false},"internalCacheStorage":{"type":"number","format":"float","description":"DEPRECATED: This field will be removed in the near future."}},"additionalProperties":false}},"required":["dockerFilePath","dockerWorkDir"],"additionalProperties":false}},"required":["dockerfile"],"additionalProperties":false,"description":"Build from a Dockerfile"},{"type":"object","properties":{"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false},"buildpack":{"type":"object","properties":{"builder":{"type":"string","enum":["HEROKU_24","HEROKU_22","HEROKU_22_CLASSIC","HEROKU_20","HEROKU_18","GOOGLE_22","GOOGLE_V1","CNB_ALPINE","CNB_BIONIC","PAKETO_JAMMY_TINY","PAKETO_JAMMY_BASE","PAKETO_JAMMY_FULL","PAKETO_TINY","PAKETO_BASE","PAKETO_FULL"],"description":"Buildpack stack to use. Defaults to recommended stack `HEROKU_24`.","example":"HEROKU_24","default":"HEROKU_24"},"buildpackLocators":{"type":"array","items":{"type":"string","description":"Url or registry identifier of custom Buildpack.","example":"https://buildpack-registry.heroku.com/cnb/mars/create-react-app"},"description":"Array of custom Buildpacks to use.","default":[]},"buildContext":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*$","description":"The working directory to build in.","example":"/","default":"/"},"useCache":{"type":"boolean","description":"Should build dependencies be cached?","example":false,"default":false}},"additionalProperties":false}},"required":["buildpack"],"additionalProperties":false,"description":"Build from a Buildpack"}],"description":"Build engine"},"runtimeEnvironment":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"An object containing the runtime environment to set for the job. Keys may only contain letters, numbers, hyphens, forward slashes and dots.","example":{"variable1":"abcdef","variable2":"12345"},"default":{}},"runtimeFiles":{"type":"object","properties":{},"description":"Secret files as JSON object, encrypted at rest. File path must be absolute","example":{"/dir/fileName":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"buildArguments":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"An object containing the build arguments to set for the job. Keys may only contain letters, numbers, hyphens, forward slashes and dots.","example":{"variable1":"abcdef","variable2":"12345"},"default":{}},"buildFiles":{"type":"object","properties":{},"description":"Secret files as JSON object, encrypted at rest. File path must be absolute","example":{"/dir/fileName":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"dockerSecretMounts":{"type":"object","properties":{},"description":"Docker secret mount contents as JSON object, encrypted at rest. Must be a valid Docker secret mount identifier","example":{"example-secret-mount_1":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"healthChecks":{"type":"array","items":{"type":"object","properties":{"protocol":{"type":"string","enum":["HTTP","CMD","TCP"],"description":"The protocol to access the health check with.","example":"HTTP"},"type":{"type":"string","enum":["livenessProbe","readinessProbe","startupProbe"],"description":"The type of health check.","example":"readinessProbe"},"path":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*((\\?([a-zA-Z0-9-._]+(=[a-zA-Z0-9-._]+)?)*)(&([a-zA-Z0-9-._]+(=[a-zA-Z0-9-._]+)?)*)*)?$","description":"The path of the health check endpoint. Required when protocol is HTTP.","example":"/health-check"},"cmd":{"type":"string","description":"The command to run for the health check. Required when protocol is CMD"},"port":{"type":"integer","minimum":1,"description":"Port number for the health check endpoint. Required when protocol is HTTP.","example":8080},"initialDelaySeconds":{"type":"integer","minimum":1,"maximum":180,"description":"Initial delay, in seconds, before the health check is first run.","example":10},"periodSeconds":{"type":"integer","minimum":10,"maximum":600,"description":"The time between each check, in seconds.","example":60},"timeoutSeconds":{"type":"integer","minimum":1,"maximum":60,"description":"The time to wait for a response before marking the health check as a failure.","example":1},"failureThreshold":{"type":"integer","minimum":1,"maximum":255,"description":"The maximum number of allowed failures.","example":3},"successThreshold":{"type":"integer","minimum":1,"maximum":255,"description":"The number of successes required to mark the health check as a success.","example":1}},"required":["protocol","type","initialDelaySeconds","periodSeconds","timeoutSeconds","failureThreshold"],"additionalProperties":false,"description":"A health check object."},"description":"An array of health checks."},"settings":{"type":"object","properties":{"backoffLimit":{"type":"integer","minimum":0,"description":"The number of attempts to rerun a job before it is marked as failed.","example":0},"runOnSourceChange":{"type":"string","enum":["never","cd-promote","always"],"description":"Configure when the job should be run if the source image changes.","example":"never","default":"never"},"activeDeadlineSeconds":{"type":"integer","minimum":1,"nullable":true,"description":"The maximum amount of time, in seconds, for a job to run before it is marked as failed.","example":600},"cron":{"type":"object","properties":{"schedule":{"type":"string","nullable":true,"description":"The cron timer scheduling when to run the job.","example":"30 8 * * *"},"suspended":{"type":"boolean","description":"Whether the cron's automatic scheduling is suspended","example":false,"default":false},"concurrencyPolicy":{"type":"string","enum":["allow","forbid","replace"],"description":"Whether this job should run when another instance of the job is already running. `allow` will enable multiple instances of this job to run. `forbid` will keep the current instance of the job running and stop a new instance from being run. `replace` will terminate any currently running instance of the job and start a new one.","example":"forbid","default":"forbid"}},"additionalProperties":false}},"required":["backoffLimit"],"additionalProperties":false},"jobType":{"type":"string","enum":["cron"],"description":"Type of the job (manual or cron)","example":"cron"},"id":{"type":"string","description":"Identifier for the job","example":"example-job"},"appId":{"type":"string","description":"Full identifier used for job deployment","example":"/example-user/default-project/example-job"},"deployment":{"type":"object","properties":{"buildpack":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customProcess","customCommand","customEntrypointCustomCommand","originalEntrypointCustomCommand"],"description":"Type of buildpack run configuration"},"customProcess":{"type":"string","description":"Custom process which should be run. Required in case where `configType` is `customProcess`"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be run. Required in case where `configType` is `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be run. Required in case where `configType` is `customCommand`, `customEntrypointCustomCommand` or `originalEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of buildpack runtime"},"docker":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customEntrypoint","customCommand","customEntrypointCustomCommand"],"description":"Type of entrypoint & command override configuration","example":"default"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be used. Required in case where `configType` is `customEntrypoint` or `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be used. Required in case where `configType` is `customCommand` or `customEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of docker runtime"},"storage":{"type":"object","properties":{"useHdbStorage":{"type":"boolean"},"usePdSsdStorage":{"type":"boolean"},"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":1024,"description":"Ephemeral storage per container in MB","example":1024}},"additionalProperties":false},"shmSize":{"type":"integer","minimum":64,"description":"Configures the amount of available memory-backed disk space available to /dev/shm"}},"additionalProperties":false},"gpu":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"gpuType":{"type":"string"},"gpuCount":{"type":"integer"},"timesliced":{"type":"boolean"}},"required":["gpuType"],"additionalProperties":false}},"additionalProperties":false},"gracePeriodSeconds":{"type":"integer","minimum":15,"maximum":600,"description":"The 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."},"metadata":{"type":"object","properties":{"labels":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom labels for the workload."},"annotations":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom annotations for the workload as string or object."}},"additionalProperties":false,"description":"Allow setting custom labels and annotations for workloads."},"vcs":{"type":"object","properties":{"projectUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo to build.","example":"https://github.com/northflank/gatsby-with-northflank"},"projectType":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string","minLength":24,"maxLength":24,"description":"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 `vcsLinkId` is provided, Northflank will instead use your linked account with that ID."},"projectBranch":{"type":"string","description":"The name of the branch to use.","example":"master"}},"required":["projectUrl","projectType","projectBranch"],"additionalProperties":false},"external":{"type":"object","properties":{"imagePath":{"type":"string","pattern":"^(?:(?:https?:\\/\\/)?([a-zA-Z0-9\\-]+\\.[a-zA-Z0-9\\.\\-]+)(\\/v1)?)?(?:\\/)?([a-zA-Z/-9\\.\\-_]+)(?:\\:([a-zA-Z/-9\\.\\-_\\:]+)|\\@([a-zA-Z/-9\\.\\-_\\:]+))$","description":"Image to be deployed. When not deploying from Dockerhub the URL must be specified.","example":"nginx:latest"},"credentials":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"ID of the saved credentials to use to access this external image.","example":"example-credentials"}},"required":["imagePath"],"additionalProperties":false},"internal":{"type":"object","properties":{"id":{"anyOf":[{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":54,"example":"example-build-service"},{"type":"string","example":"example-project/example-build-service"}],"description":"ID of the build service to deploy"},"branch":{"type":"string","description":"Branch to deploy","example":"master"},"buildSHA":{"oneOf":[{"type":"string","minLength":40,"maxLength":40,"description":"A commit sha."},{"type":"string","enum":["latest"],"description":"Latest commit."}],"description":"Commit SHA to deploy, or 'latest' to deploy the most recent commit","example":"latest"},"buildId":{"type":"string","description":"ID of the build that should be deployed","example":"premium-guide-6393"}},"additionalProperties":false},"imageUrl":{"type":"string","description":"Image registry url of the deployed image."}},"additionalProperties":false,"default":{}},"status":{"type":"object","properties":{"build":{"type":"object","properties":{"status":{"type":"string","enum":["QUEUED","PENDING","UNSCHEDULABLE","STARTING","CLONING","BUILDING","UPLOADING","ABORTED","FAILURE","SUBMISSION_FAILURE","SUCCESS","CRASHED","IN_PROGRESS"],"description":"The current status of the build.","example":"SUCCESS"},"lastTransitionTime":{"type":"string","format":"date-time","description":"The timestamp of when the build reached this status.","example":"2021-11-29T11:47:16.624Z"}},"required":["status"],"additionalProperties":false,"description":"Details about the status of the most recent build."}},"additionalProperties":false,"description":"Details about the current job status."},"cluster":{"type":"object","properties":{"id":{"type":"string","description":"The id of the cluster associated with this project.","example":"nf-europe-west"},"name":{"type":"string","description":"The name of the cluster associated with this project.","example":"nf-europe-west"},"namespace":{"type":"string","description":"Namespace this resource is located within on the cluster.","example":"ns-8zy2mcjh9zn2"},"loadBalancers":{"type":"array","items":{"type":"string","example":"lb.659200800000000000000000.northflank.com"},"description":"Load balancer DNS for the cluster."}},"required":["id","name"],"additionalProperties":false,"description":"Cluster information"},"createdAt":{"type":"string","format":"date-time","description":"time of creation"},"updatedAt":{"type":"string","format":"date-time","description":"time of update"}},"required":["name","billing","jobType","id","appId","status","cluster"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Jobs","project"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":52,"description":"The name of the job.","example":"Example Job"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"A description of the job.","example":"A job description"},"stageId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"infrastructure":{"type":"object","properties":{"architecture":{"type":"string","enum":["x86","arm"]}},"additionalProperties":false},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"billing":{"type":"object","properties":{"buildPlan":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The ID of the build plan to use.","example":"nf-compute-200-8"},"deploymentPlan":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The ID of the deployment plan to use.","example":"nf-compute-20"},"gpu":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"gpuType":{"type":"string"},"gpuCount":{"type":"integer"},"timesliced":{"type":"boolean"}},"required":["gpuType"],"additionalProperties":false}},"additionalProperties":false}},"required":["deploymentPlan"],"additionalProperties":false},"deployment":{"oneOf":[{"type":"object","properties":{"buildpack":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customProcess","customCommand","customEntrypointCustomCommand","originalEntrypointCustomCommand"],"description":"Type of buildpack run configuration"},"customProcess":{"type":"string","description":"Custom process which should be run. Required in case where `configType` is `customProcess`"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be run. Required in case where `configType` is `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be run. Required in case where `configType` is `customCommand`, `customEntrypointCustomCommand` or `originalEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of buildpack runtime"},"docker":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customEntrypoint","customCommand","customEntrypointCustomCommand"],"description":"Type of entrypoint & command override configuration","example":"default"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be used. Required in case where `configType` is `customEntrypoint` or `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be used. Required in case where `configType` is `customCommand` or `customEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of docker runtime"},"storage":{"type":"object","properties":{"useHdbStorage":{"type":"boolean"},"usePdSsdStorage":{"type":"boolean"},"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":1024,"description":"Ephemeral storage per container in MB","example":1024}},"additionalProperties":false},"shmSize":{"type":"integer","minimum":64,"description":"Configures the amount of available memory-backed disk space available to /dev/shm"}},"additionalProperties":false},"gpu":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"gpuType":{"type":"string"},"gpuCount":{"type":"integer"},"timesliced":{"type":"boolean"}},"required":["gpuType"],"additionalProperties":false}},"additionalProperties":false},"gracePeriodSeconds":{"type":"integer","minimum":15,"maximum":600,"description":"The 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."},"metadata":{"type":"object","properties":{"labels":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom labels for the workload."},"annotations":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom annotations for the workload as string or object."}},"additionalProperties":false,"description":"Allow setting custom labels and annotations for workloads."},"vcs":{"type":"object","properties":{"projectUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo to build.","example":"https://github.com/northflank/gatsby-with-northflank"},"projectType":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string","minLength":24,"maxLength":24,"description":"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 `vcsLinkId` is provided, Northflank will instead use your linked account with that ID."},"projectBranch":{"type":"string","description":"The name of the branch to use.","example":"master"}},"required":["projectUrl","projectType","projectBranch"],"additionalProperties":false}},"required":["vcs"],"additionalProperties":false,"description":"Deploy from version control"},{"type":"object","properties":{"buildpack":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customProcess","customCommand","customEntrypointCustomCommand","originalEntrypointCustomCommand"],"description":"Type of buildpack run configuration"},"customProcess":{"type":"string","description":"Custom process which should be run. Required in case where `configType` is `customProcess`"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be run. Required in case where `configType` is `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be run. Required in case where `configType` is `customCommand`, `customEntrypointCustomCommand` or `originalEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of buildpack runtime"},"docker":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customEntrypoint","customCommand","customEntrypointCustomCommand"],"description":"Type of entrypoint & command override configuration","example":"default"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be used. Required in case where `configType` is `customEntrypoint` or `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be used. Required in case where `configType` is `customCommand` or `customEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of docker runtime"},"storage":{"type":"object","properties":{"useHdbStorage":{"type":"boolean"},"usePdSsdStorage":{"type":"boolean"},"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":1024,"description":"Ephemeral storage per container in MB","example":1024}},"additionalProperties":false},"shmSize":{"type":"integer","minimum":64,"description":"Configures the amount of available memory-backed disk space available to /dev/shm"}},"additionalProperties":false},"gpu":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"gpuType":{"type":"string"},"gpuCount":{"type":"integer"},"timesliced":{"type":"boolean"}},"required":["gpuType"],"additionalProperties":false}},"additionalProperties":false},"gracePeriodSeconds":{"type":"integer","minimum":15,"maximum":600,"description":"The 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."},"metadata":{"type":"object","properties":{"labels":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom labels for the workload."},"annotations":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom annotations for the workload as string or object."}},"additionalProperties":false,"description":"Allow setting custom labels and annotations for workloads."},"external":{"type":"object","properties":{"imagePath":{"type":"string","pattern":"^(?:(?:https?:\\/\\/)?([a-zA-Z0-9\\-]+\\.[a-zA-Z0-9\\.\\-]+)(\\/v1)?)?(?:\\/)?([a-zA-Z/-9\\.\\-_]+)(?:\\:([a-zA-Z/-9\\.\\-_\\:]+)|\\@([a-zA-Z/-9\\.\\-_\\:]+))$","description":"Image to be deployed. When not deploying from Dockerhub the URL must be specified.","example":"nginx:latest"},"credentials":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"ID of the saved credentials to use to access this external image.","example":"example-credentials"}},"required":["imagePath"],"additionalProperties":false}},"required":["external"],"additionalProperties":false,"description":"Deploy from an external image"},{"type":"object","properties":{"buildpack":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customProcess","customCommand","customEntrypointCustomCommand","originalEntrypointCustomCommand"],"description":"Type of buildpack run configuration"},"customProcess":{"type":"string","description":"Custom process which should be run. Required in case where `configType` is `customProcess`"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be run. Required in case where `configType` is `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be run. Required in case where `configType` is `customCommand`, `customEntrypointCustomCommand` or `originalEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of buildpack runtime"},"docker":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customEntrypoint","customCommand","customEntrypointCustomCommand"],"description":"Type of entrypoint & command override configuration","example":"default"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be used. Required in case where `configType` is `customEntrypoint` or `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be used. Required in case where `configType` is `customCommand` or `customEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of docker runtime"},"storage":{"type":"object","properties":{"useHdbStorage":{"type":"boolean"},"usePdSsdStorage":{"type":"boolean"},"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":1024,"description":"Ephemeral storage per container in MB","example":1024}},"additionalProperties":false},"shmSize":{"type":"integer","minimum":64,"description":"Configures the amount of available memory-backed disk space available to /dev/shm"}},"additionalProperties":false},"gpu":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"gpuType":{"type":"string"},"gpuCount":{"type":"integer"},"timesliced":{"type":"boolean"}},"required":["gpuType"],"additionalProperties":false}},"additionalProperties":false},"gracePeriodSeconds":{"type":"integer","minimum":15,"maximum":600,"description":"The 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."},"metadata":{"type":"object","properties":{"labels":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom labels for the workload."},"annotations":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom annotations for the workload as string or object."}},"additionalProperties":false,"description":"Allow setting custom labels and annotations for workloads."},"internal":{"type":"object","properties":{"id":{"anyOf":[{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":54,"example":"example-build-service"},{"type":"string","example":"example-project/example-build-service"}],"description":"ID of the build service to deploy"},"branch":{"type":"string","description":"Branch to deploy","example":"master"},"buildSHA":{"oneOf":[{"type":"string","minLength":40,"maxLength":40,"description":"A commit sha."},{"type":"string","enum":["latest"],"description":"Latest commit."}],"description":"Commit SHA to deploy, or 'latest' to deploy the most recent commit","example":"latest"},"buildId":{"type":"string","description":"ID of the build that should be deployed","example":"premium-guide-6393"}},"additionalProperties":false}},"required":["internal"],"additionalProperties":false,"description":"Deploy from a Northflank build service"},{"type":"object","properties":{},"additionalProperties":false,"description":"Choose later"}],"description":"Where to deploy the job from."},"disabledCI":{"type":"boolean","description":"Whether CI should be disabled. Only relevant for jobs deploying directly from version control.","default":false},"buildConfiguration":{"type":"object","properties":{"pathIgnoreRules":{"type":"array","items":{"type":"string","maxLength":260,"description":"A path ignore rule, following `.gitignore` syntax. For example, `*.md` will ignore all files ending with `.md`.","example":"README.md"},"maxItems":200,"description":"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."},"isAllowList":{"type":"boolean","description":"If `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`.","example":false},"ciIgnoreFlagsEnabled":{"type":"boolean","description":"If `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":{"type":"array","items":{"type":"string","maxLength":72,"description":"A commit ignore flag.","example":"[skip ci]"},"maxItems":200,"description":"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]\"]`","example":["[skip ci]","[ci skip]","[no ci]","[skip nf]","[nf skip]","[northflank skip]","[skip northflank]"]},"dockerfileTarget":{"type":"string","description":"If your Dockerfile contains multiple build stages, you can specify the target stage by entering its name here."},"dockerCredentials":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The ID of the docker credentials to use.","example":"example-docker-credential"}},"includeGitFolder":{"type":"boolean","description":"Include .git folder inside the build context"},"fullGitClone":{"type":"boolean","description":"Include the entire git history as part of the .git folder. Only relevant if \"includeGitFolder\" is set."},"enableGitLfs":{"type":"boolean","description":"Enable Git LFS support for the build"},"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false}},"additionalProperties":false,"default":{"pathIgnoreRules":[],"isAllowList":false,"ciIgnoreFlagsEnabled":false}},"buildSettings":{"oneOf":[{"type":"object","properties":{"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false},"dockerfile":{"type":"object","properties":{"useCache":{"type":"boolean","description":"DEPRECATED: This field will be removed in the near future and currently has no effect."},"buildEngine":{"type":"string","enum":["buildkit","kaniko"],"description":"Build engine to use. Defaults to recommended build engine `buildkit`","example":"buildkit","default":"buildkit"},"dockerFilePath":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]+$","description":"The file path of the Dockerfile.","example":"/Dockerfile"},"dockerWorkDir":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*$","description":"The working directory of the Dockerfile.","example":"/"},"buildkit":{"type":"object","properties":{"useCache":{"type":"boolean","description":"Use persistent storage to cache build layers.","example":true,"default":false},"cacheStorageSize":{"type":"integer","description":"The amount of persistent storage available to each build in MB.","example":32768},"useInternalCache":{"type":"boolean","description":"DEPRECATED: This field will be removed in the near future.","default":false},"internalCacheStorage":{"type":"number","format":"float","description":"DEPRECATED: This field will be removed in the near future."}},"additionalProperties":false}},"required":["dockerFilePath","dockerWorkDir"],"additionalProperties":false}},"required":["dockerfile"],"additionalProperties":false,"description":"Build from a Dockerfile"},{"type":"object","properties":{"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false},"buildpack":{"type":"object","properties":{"builder":{"type":"string","enum":["HEROKU_24","HEROKU_22","HEROKU_22_CLASSIC","HEROKU_20","HEROKU_18","GOOGLE_22","GOOGLE_V1","CNB_ALPINE","CNB_BIONIC","PAKETO_JAMMY_TINY","PAKETO_JAMMY_BASE","PAKETO_JAMMY_FULL","PAKETO_TINY","PAKETO_BASE","PAKETO_FULL"],"description":"Buildpack stack to use. Defaults to recommended stack `HEROKU_24`.","example":"HEROKU_24","default":"HEROKU_24"},"buildpackLocators":{"type":"array","items":{"type":"string","description":"Url or registry identifier of custom Buildpack.","example":"https://buildpack-registry.heroku.com/cnb/mars/create-react-app"},"description":"Array of custom Buildpacks to use.","default":[]},"buildContext":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*$","description":"The working directory to build in.","example":"/","default":"/"},"useCache":{"type":"boolean","description":"Should build dependencies be cached?","example":false,"default":false}},"additionalProperties":false}},"required":["buildpack"],"additionalProperties":false,"description":"Build from a Buildpack"}],"description":"Build engine"},"runtimeEnvironment":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"An object containing the runtime environment to set for the job. Keys may only contain letters, numbers, hyphens, forward slashes and dots.","example":{"variable1":"abcdef","variable2":"12345"},"default":{}},"runtimeFiles":{"type":"object","properties":{},"description":"Secret files as JSON object, encrypted at rest. File path must be absolute","example":{"/dir/fileName":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"buildArguments":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"An object containing the build arguments to set for the job. Keys may only contain letters, numbers, hyphens, forward slashes and dots.","example":{"variable1":"abcdef","variable2":"12345"},"default":{}},"buildFiles":{"type":"object","properties":{},"description":"Secret files as JSON object, encrypted at rest. File path must be absolute","example":{"/dir/fileName":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"dockerSecretMounts":{"type":"object","properties":{},"description":"Docker secret mount contents as JSON object, encrypted at rest. Must be a valid Docker secret mount identifier","example":{"example-secret-mount_1":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"healthChecks":{"type":"array","items":{"type":"object","properties":{"protocol":{"type":"string","enum":["HTTP","CMD","TCP"],"description":"The protocol to access the health check with.","example":"HTTP"},"type":{"type":"string","enum":["livenessProbe","readinessProbe","startupProbe"],"description":"The type of health check.","example":"readinessProbe"},"path":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*((\\?([a-zA-Z0-9-._]+(=[a-zA-Z0-9-._]+)?)*)(&([a-zA-Z0-9-._]+(=[a-zA-Z0-9-._]+)?)*)*)?$","description":"The path of the health check endpoint. Required when protocol is HTTP.","example":"/health-check"},"cmd":{"type":"string","description":"The command to run for the health check. Required when protocol is CMD"},"port":{"type":"integer","minimum":1,"description":"Port number for the health check endpoint. Required when protocol is HTTP.","example":8080},"initialDelaySeconds":{"type":"integer","minimum":1,"maximum":180,"description":"Initial delay, in seconds, before the health check is first run.","example":10},"periodSeconds":{"type":"integer","minimum":10,"maximum":600,"description":"The time between each check, in seconds.","example":60},"timeoutSeconds":{"type":"integer","minimum":1,"maximum":60,"description":"The time to wait for a response before marking the health check as a failure.","example":1},"failureThreshold":{"type":"integer","minimum":1,"maximum":255,"description":"The maximum number of allowed failures.","example":3},"successThreshold":{"type":"integer","minimum":1,"maximum":255,"description":"The number of successes required to mark the health check as a success.","example":1}},"required":["protocol","type","initialDelaySeconds","periodSeconds","timeoutSeconds","failureThreshold"],"additionalProperties":false,"description":"A health check object."},"description":"An array of health checks."},"settings":{"type":"object","properties":{"backoffLimit":{"type":"integer","minimum":0,"description":"The number of attempts to rerun a job before it is marked as failed.","example":0},"runOnSourceChange":{"type":"string","enum":["never","cd-promote","always"],"description":"Configure when the job should be run if the source image changes.","example":"never","default":"never"},"activeDeadlineSeconds":{"type":"integer","minimum":1,"nullable":true,"description":"The maximum amount of time, in seconds, for a job to run before it is marked as failed.","example":600},"cron":{"type":"object","properties":{"schedule":{"type":"string","pattern":"(@(annually|yearly|monthly|weekly|daily|hourly))|((((\\d+,)+\\d+|(\\d+(\\/|-)\\d+)|\\d+|\\*) ?){5})","nullable":true,"description":"The cron timer scheduling when to run the job.","example":"30 8 * * *"},"suspended":{"type":"boolean","description":"Whether the cron's automatic scheduling is suspended","example":false,"default":false},"concurrencyPolicy":{"type":"string","enum":["allow","forbid","replace"],"description":"Whether this job should run when another instance of the job is already running. `allow` will enable multiple instances of this job to run. `forbid` will keep the current instance of the job running and stop a new instance from being run. `replace` will terminate any currently running instance of the job and start a new one.","example":"forbid","default":"forbid"}},"additionalProperties":false}},"required":["backoffLimit"],"additionalProperties":false}},"required":["name","billing"],"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Project > Jobs > General > Create","x-nf-team-scoped":true,"x-nf-cli-command":["put","job"]},"v1-projects--projectId--jobs-cron-post":{"operationId":"postProjectsJobsCron","summary":"Create cron job","description":"Creates a new cron job","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}}],"responses":{"200":{"description":"Details about the newly created job.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":52,"description":"The name of the job.","example":"Example Job"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"A description of the job.","example":"A job description"},"stageId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"infrastructure":{"type":"object","properties":{"architecture":{"type":"string","enum":["x86","arm"]}},"additionalProperties":false},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"billing":{"type":"object","properties":{"buildPlan":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The ID of the build plan to use.","example":"nf-compute-200-8"},"deploymentPlan":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The ID of the deployment plan to use.","example":"nf-compute-20"},"gpu":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"gpuType":{"type":"string"},"gpuCount":{"type":"integer"},"timesliced":{"type":"boolean"}},"required":["gpuType"],"additionalProperties":false}},"additionalProperties":false}},"required":["deploymentPlan"],"additionalProperties":false},"disabledCI":{"type":"boolean","description":"Whether CI should be disabled. Only relevant for jobs deploying directly from version control.","default":false},"buildConfiguration":{"type":"object","properties":{"pathIgnoreRules":{"type":"array","items":{"type":"string","maxLength":260,"description":"A path ignore rule, following `.gitignore` syntax. For example, `*.md` will ignore all files ending with `.md`.","example":"README.md"},"maxItems":200,"description":"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."},"isAllowList":{"type":"boolean","description":"If `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`.","example":false},"ciIgnoreFlagsEnabled":{"type":"boolean","description":"If `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":{"type":"array","items":{"type":"string","maxLength":72,"description":"A commit ignore flag.","example":"[skip ci]"},"maxItems":200,"description":"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]\"]`","example":["[skip ci]","[ci skip]","[no ci]","[skip nf]","[nf skip]","[northflank skip]","[skip northflank]"]},"dockerfileTarget":{"type":"string","description":"If your Dockerfile contains multiple build stages, you can specify the target stage by entering its name here."},"dockerCredentials":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The ID of the docker credentials to use.","example":"example-docker-credential"}},"includeGitFolder":{"type":"boolean","description":"Include .git folder inside the build context"},"fullGitClone":{"type":"boolean","description":"Include the entire git history as part of the .git folder. Only relevant if \"includeGitFolder\" is set."},"enableGitLfs":{"type":"boolean","description":"Enable Git LFS support for the build"},"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false}},"additionalProperties":false,"default":{"pathIgnoreRules":[],"isAllowList":false,"ciIgnoreFlagsEnabled":false}},"buildSettings":{"oneOf":[{"type":"object","properties":{"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false},"dockerfile":{"type":"object","properties":{"useCache":{"type":"boolean","description":"DEPRECATED: This field will be removed in the near future and currently has no effect."},"buildEngine":{"type":"string","enum":["buildkit","kaniko"],"description":"Build engine to use. Defaults to recommended build engine `buildkit`","example":"buildkit","default":"buildkit"},"dockerFilePath":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]+$","description":"The file path of the Dockerfile.","example":"/Dockerfile"},"dockerWorkDir":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*$","description":"The working directory of the Dockerfile.","example":"/"},"buildkit":{"type":"object","properties":{"useCache":{"type":"boolean","description":"Use persistent storage to cache build layers.","example":true,"default":false},"cacheStorageSize":{"type":"integer","description":"The amount of persistent storage available to each build in MB.","example":32768},"useInternalCache":{"type":"boolean","description":"DEPRECATED: This field will be removed in the near future.","default":false},"internalCacheStorage":{"type":"number","format":"float","description":"DEPRECATED: This field will be removed in the near future."}},"additionalProperties":false}},"required":["dockerFilePath","dockerWorkDir"],"additionalProperties":false}},"required":["dockerfile"],"additionalProperties":false,"description":"Build from a Dockerfile"},{"type":"object","properties":{"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false},"buildpack":{"type":"object","properties":{"builder":{"type":"string","enum":["HEROKU_24","HEROKU_22","HEROKU_22_CLASSIC","HEROKU_20","HEROKU_18","GOOGLE_22","GOOGLE_V1","CNB_ALPINE","CNB_BIONIC","PAKETO_JAMMY_TINY","PAKETO_JAMMY_BASE","PAKETO_JAMMY_FULL","PAKETO_TINY","PAKETO_BASE","PAKETO_FULL"],"description":"Buildpack stack to use. Defaults to recommended stack `HEROKU_24`.","example":"HEROKU_24","default":"HEROKU_24"},"buildpackLocators":{"type":"array","items":{"type":"string","description":"Url or registry identifier of custom Buildpack.","example":"https://buildpack-registry.heroku.com/cnb/mars/create-react-app"},"description":"Array of custom Buildpacks to use.","default":[]},"buildContext":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*$","description":"The working directory to build in.","example":"/","default":"/"},"useCache":{"type":"boolean","description":"Should build dependencies be cached?","example":false,"default":false}},"additionalProperties":false}},"required":["buildpack"],"additionalProperties":false,"description":"Build from a Buildpack"}],"description":"Build engine"},"runtimeEnvironment":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"An object containing the runtime environment to set for the job. Keys may only contain letters, numbers, hyphens, forward slashes and dots.","example":{"variable1":"abcdef","variable2":"12345"},"default":{}},"runtimeFiles":{"type":"object","properties":{},"description":"Secret files as JSON object, encrypted at rest. File path must be absolute","example":{"/dir/fileName":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"buildArguments":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"An object containing the build arguments to set for the job. Keys may only contain letters, numbers, hyphens, forward slashes and dots.","example":{"variable1":"abcdef","variable2":"12345"},"default":{}},"buildFiles":{"type":"object","properties":{},"description":"Secret files as JSON object, encrypted at rest. File path must be absolute","example":{"/dir/fileName":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"dockerSecretMounts":{"type":"object","properties":{},"description":"Docker secret mount contents as JSON object, encrypted at rest. Must be a valid Docker secret mount identifier","example":{"example-secret-mount_1":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"healthChecks":{"type":"array","items":{"type":"object","properties":{"protocol":{"type":"string","enum":["HTTP","CMD","TCP"],"description":"The protocol to access the health check with.","example":"HTTP"},"type":{"type":"string","enum":["livenessProbe","readinessProbe","startupProbe"],"description":"The type of health check.","example":"readinessProbe"},"path":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*((\\?([a-zA-Z0-9-._]+(=[a-zA-Z0-9-._]+)?)*)(&([a-zA-Z0-9-._]+(=[a-zA-Z0-9-._]+)?)*)*)?$","description":"The path of the health check endpoint. Required when protocol is HTTP.","example":"/health-check"},"cmd":{"type":"string","description":"The command to run for the health check. Required when protocol is CMD"},"port":{"type":"integer","minimum":1,"description":"Port number for the health check endpoint. Required when protocol is HTTP.","example":8080},"initialDelaySeconds":{"type":"integer","minimum":1,"maximum":180,"description":"Initial delay, in seconds, before the health check is first run.","example":10},"periodSeconds":{"type":"integer","minimum":10,"maximum":600,"description":"The time between each check, in seconds.","example":60},"timeoutSeconds":{"type":"integer","minimum":1,"maximum":60,"description":"The time to wait for a response before marking the health check as a failure.","example":1},"failureThreshold":{"type":"integer","minimum":1,"maximum":255,"description":"The maximum number of allowed failures.","example":3},"successThreshold":{"type":"integer","minimum":1,"maximum":255,"description":"The number of successes required to mark the health check as a success.","example":1}},"required":["protocol","type","initialDelaySeconds","periodSeconds","timeoutSeconds","failureThreshold"],"additionalProperties":false,"description":"A health check object."},"description":"An array of health checks."},"backoffLimit":{"type":"integer","minimum":0,"description":"The number of attempts to rerun a job before it is marked as failed.","example":0},"runOnSourceChange":{"type":"string","enum":["never","cd-promote","always"],"description":"Configure when the job should be run if the source image changes.","example":"never","default":"never"},"activeDeadlineSeconds":{"type":"integer","minimum":1,"nullable":true,"description":"The maximum amount of time, in seconds, for a job to run before it is marked as failed.","example":600},"schedule":{"type":"string","nullable":true,"description":"The cron timer scheduling when to run the job.","example":"30 8 * * *"},"suspended":{"type":"boolean","description":"Whether the cron's automatic scheduling is suspended","example":false,"default":false},"concurrencyPolicy":{"type":"string","enum":["allow","forbid","replace"],"description":"Whether this job should run when another instance of the job is already running. `allow` will enable multiple instances of this job to run. `forbid` will keep the current instance of the job running and stop a new instance from being run. `replace` will terminate any currently running instance of the job and start a new one.","example":"forbid","default":"forbid"},"jobType":{"type":"string","enum":["cron"],"description":"Type of the job (manual or cron)","example":"cron"},"id":{"type":"string","description":"Identifier for the job","example":"example-job"},"appId":{"type":"string","description":"Full identifier used for job deployment","example":"/example-user/default-project/example-job"},"deployment":{"type":"object","properties":{"buildpack":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customProcess","customCommand","customEntrypointCustomCommand","originalEntrypointCustomCommand"],"description":"Type of buildpack run configuration"},"customProcess":{"type":"string","description":"Custom process which should be run. Required in case where `configType` is `customProcess`"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be run. Required in case where `configType` is `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be run. Required in case where `configType` is `customCommand`, `customEntrypointCustomCommand` or `originalEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of buildpack runtime"},"docker":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customEntrypoint","customCommand","customEntrypointCustomCommand"],"description":"Type of entrypoint & command override configuration","example":"default"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be used. Required in case where `configType` is `customEntrypoint` or `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be used. Required in case where `configType` is `customCommand` or `customEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of docker runtime"},"storage":{"type":"object","properties":{"useHdbStorage":{"type":"boolean"},"usePdSsdStorage":{"type":"boolean"},"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":1024,"description":"Ephemeral storage per container in MB","example":1024}},"additionalProperties":false},"shmSize":{"type":"integer","minimum":64,"description":"Configures the amount of available memory-backed disk space available to /dev/shm"}},"additionalProperties":false},"gpu":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"gpuType":{"type":"string"},"gpuCount":{"type":"integer"},"timesliced":{"type":"boolean"}},"required":["gpuType"],"additionalProperties":false}},"additionalProperties":false},"gracePeriodSeconds":{"type":"integer","minimum":15,"maximum":600,"description":"The 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."},"metadata":{"type":"object","properties":{"labels":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom labels for the workload."},"annotations":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom annotations for the workload as string or object."}},"additionalProperties":false,"description":"Allow setting custom labels and annotations for workloads."},"vcs":{"type":"object","properties":{"projectUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo to build.","example":"https://github.com/northflank/gatsby-with-northflank"},"projectType":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string","minLength":24,"maxLength":24,"description":"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 `vcsLinkId` is provided, Northflank will instead use your linked account with that ID."},"projectBranch":{"type":"string","description":"The name of the branch to use.","example":"master"}},"required":["projectUrl","projectType","projectBranch"],"additionalProperties":false},"external":{"type":"object","properties":{"imagePath":{"type":"string","pattern":"^(?:(?:https?:\\/\\/)?([a-zA-Z0-9\\-]+\\.[a-zA-Z0-9\\.\\-]+)(\\/v1)?)?(?:\\/)?([a-zA-Z/-9\\.\\-_]+)(?:\\:([a-zA-Z/-9\\.\\-_\\:]+)|\\@([a-zA-Z/-9\\.\\-_\\:]+))$","description":"Image to be deployed. When not deploying from Dockerhub the URL must be specified.","example":"nginx:latest"},"credentials":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"ID of the saved credentials to use to access this external image.","example":"example-credentials"}},"required":["imagePath"],"additionalProperties":false},"internal":{"type":"object","properties":{"id":{"anyOf":[{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":54,"example":"example-build-service"},{"type":"string","example":"example-project/example-build-service"}],"description":"ID of the build service to deploy"},"branch":{"type":"string","description":"Branch to deploy","example":"master"},"buildSHA":{"oneOf":[{"type":"string","minLength":40,"maxLength":40,"description":"A commit sha."},{"type":"string","enum":["latest"],"description":"Latest commit."}],"description":"Commit SHA to deploy, or 'latest' to deploy the most recent commit","example":"latest"},"buildId":{"type":"string","description":"ID of the build that should be deployed","example":"premium-guide-6393"}},"additionalProperties":false},"imageUrl":{"type":"string","description":"Image registry url of the deployed image."}},"additionalProperties":false,"default":{}},"status":{"type":"object","properties":{"build":{"type":"object","properties":{"status":{"type":"string","enum":["QUEUED","PENDING","UNSCHEDULABLE","STARTING","CLONING","BUILDING","UPLOADING","ABORTED","FAILURE","SUBMISSION_FAILURE","SUCCESS","CRASHED","IN_PROGRESS"],"description":"The current status of the build.","example":"SUCCESS"},"lastTransitionTime":{"type":"string","format":"date-time","description":"The timestamp of when the build reached this status.","example":"2021-11-29T11:47:16.624Z"}},"required":["status"],"additionalProperties":false,"description":"Details about the status of the most recent build."}},"additionalProperties":false,"description":"Details about the current job status."},"cluster":{"type":"object","properties":{"id":{"type":"string","description":"The id of the cluster associated with this project.","example":"nf-europe-west"},"name":{"type":"string","description":"The name of the cluster associated with this project.","example":"nf-europe-west"},"namespace":{"type":"string","description":"Namespace this resource is located within on the cluster.","example":"ns-8zy2mcjh9zn2"},"loadBalancers":{"type":"array","items":{"type":"string","example":"lb.659200800000000000000000.northflank.com"},"description":"Load balancer DNS for the cluster."}},"required":["id","name"],"additionalProperties":false,"description":"Cluster information"},"createdAt":{"type":"string","format":"date-time","description":"time of creation"},"updatedAt":{"type":"string","format":"date-time","description":"time of update"}},"required":["name","billing","backoffLimit","jobType","id","appId","status","cluster"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Jobs","project"],"security":[],"deprecated":true,"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":52,"description":"The name of the job.","example":"Example Job"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"A description of the job.","example":"A job description"},"stageId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"infrastructure":{"type":"object","properties":{"architecture":{"type":"string","enum":["x86","arm"]}},"additionalProperties":false},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"billing":{"type":"object","properties":{"buildPlan":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The ID of the build plan to use.","example":"nf-compute-200-8"},"deploymentPlan":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The ID of the deployment plan to use.","example":"nf-compute-20"},"gpu":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"gpuType":{"type":"string"},"gpuCount":{"type":"integer"},"timesliced":{"type":"boolean"}},"required":["gpuType"],"additionalProperties":false}},"additionalProperties":false}},"required":["deploymentPlan"],"additionalProperties":false},"deployment":{"oneOf":[{"type":"object","properties":{"buildpack":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customProcess","customCommand","customEntrypointCustomCommand","originalEntrypointCustomCommand"],"description":"Type of buildpack run configuration"},"customProcess":{"type":"string","description":"Custom process which should be run. Required in case where `configType` is `customProcess`"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be run. Required in case where `configType` is `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be run. Required in case where `configType` is `customCommand`, `customEntrypointCustomCommand` or `originalEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of buildpack runtime"},"docker":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customEntrypoint","customCommand","customEntrypointCustomCommand"],"description":"Type of entrypoint & command override configuration","example":"default"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be used. Required in case where `configType` is `customEntrypoint` or `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be used. Required in case where `configType` is `customCommand` or `customEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of docker runtime"},"storage":{"type":"object","properties":{"useHdbStorage":{"type":"boolean"},"usePdSsdStorage":{"type":"boolean"},"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":1024,"description":"Ephemeral storage per container in MB","example":1024}},"additionalProperties":false},"shmSize":{"type":"integer","minimum":64,"description":"Configures the amount of available memory-backed disk space available to /dev/shm"}},"additionalProperties":false},"gpu":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"gpuType":{"type":"string"},"gpuCount":{"type":"integer"},"timesliced":{"type":"boolean"}},"required":["gpuType"],"additionalProperties":false}},"additionalProperties":false},"gracePeriodSeconds":{"type":"integer","minimum":15,"maximum":600,"description":"The 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."},"metadata":{"type":"object","properties":{"labels":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom labels for the workload."},"annotations":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom annotations for the workload as string or object."}},"additionalProperties":false,"description":"Allow setting custom labels and annotations for workloads."},"vcs":{"type":"object","properties":{"projectUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo to build.","example":"https://github.com/northflank/gatsby-with-northflank"},"projectType":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string","minLength":24,"maxLength":24,"description":"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 `vcsLinkId` is provided, Northflank will instead use your linked account with that ID."},"projectBranch":{"type":"string","description":"The name of the branch to use.","example":"master"}},"required":["projectUrl","projectType","projectBranch"],"additionalProperties":false}},"required":["vcs"],"additionalProperties":false,"description":"Deploy from version control"},{"type":"object","properties":{"buildpack":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customProcess","customCommand","customEntrypointCustomCommand","originalEntrypointCustomCommand"],"description":"Type of buildpack run configuration"},"customProcess":{"type":"string","description":"Custom process which should be run. Required in case where `configType` is `customProcess`"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be run. Required in case where `configType` is `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be run. Required in case where `configType` is `customCommand`, `customEntrypointCustomCommand` or `originalEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of buildpack runtime"},"docker":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customEntrypoint","customCommand","customEntrypointCustomCommand"],"description":"Type of entrypoint & command override configuration","example":"default"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be used. Required in case where `configType` is `customEntrypoint` or `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be used. Required in case where `configType` is `customCommand` or `customEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of docker runtime"},"storage":{"type":"object","properties":{"useHdbStorage":{"type":"boolean"},"usePdSsdStorage":{"type":"boolean"},"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":1024,"description":"Ephemeral storage per container in MB","example":1024}},"additionalProperties":false},"shmSize":{"type":"integer","minimum":64,"description":"Configures the amount of available memory-backed disk space available to /dev/shm"}},"additionalProperties":false},"gpu":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"gpuType":{"type":"string"},"gpuCount":{"type":"integer"},"timesliced":{"type":"boolean"}},"required":["gpuType"],"additionalProperties":false}},"additionalProperties":false},"gracePeriodSeconds":{"type":"integer","minimum":15,"maximum":600,"description":"The 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."},"metadata":{"type":"object","properties":{"labels":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom labels for the workload."},"annotations":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom annotations for the workload as string or object."}},"additionalProperties":false,"description":"Allow setting custom labels and annotations for workloads."},"external":{"type":"object","properties":{"imagePath":{"type":"string","pattern":"^(?:(?:https?:\\/\\/)?([a-zA-Z0-9\\-]+\\.[a-zA-Z0-9\\.\\-]+)(\\/v1)?)?(?:\\/)?([a-zA-Z/-9\\.\\-_]+)(?:\\:([a-zA-Z/-9\\.\\-_\\:]+)|\\@([a-zA-Z/-9\\.\\-_\\:]+))$","description":"Image to be deployed. When not deploying from Dockerhub the URL must be specified.","example":"nginx:latest"},"credentials":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"ID of the saved credentials to use to access this external image.","example":"example-credentials"}},"required":["imagePath"],"additionalProperties":false}},"required":["external"],"additionalProperties":false,"description":"Deploy from an external image"},{"type":"object","properties":{"buildpack":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customProcess","customCommand","customEntrypointCustomCommand","originalEntrypointCustomCommand"],"description":"Type of buildpack run configuration"},"customProcess":{"type":"string","description":"Custom process which should be run. Required in case where `configType` is `customProcess`"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be run. Required in case where `configType` is `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be run. Required in case where `configType` is `customCommand`, `customEntrypointCustomCommand` or `originalEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of buildpack runtime"},"docker":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customEntrypoint","customCommand","customEntrypointCustomCommand"],"description":"Type of entrypoint & command override configuration","example":"default"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be used. Required in case where `configType` is `customEntrypoint` or `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be used. Required in case where `configType` is `customCommand` or `customEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of docker runtime"},"storage":{"type":"object","properties":{"useHdbStorage":{"type":"boolean"},"usePdSsdStorage":{"type":"boolean"},"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":1024,"description":"Ephemeral storage per container in MB","example":1024}},"additionalProperties":false},"shmSize":{"type":"integer","minimum":64,"description":"Configures the amount of available memory-backed disk space available to /dev/shm"}},"additionalProperties":false},"gpu":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"gpuType":{"type":"string"},"gpuCount":{"type":"integer"},"timesliced":{"type":"boolean"}},"required":["gpuType"],"additionalProperties":false}},"additionalProperties":false},"gracePeriodSeconds":{"type":"integer","minimum":15,"maximum":600,"description":"The 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."},"metadata":{"type":"object","properties":{"labels":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom labels for the workload."},"annotations":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom annotations for the workload as string or object."}},"additionalProperties":false,"description":"Allow setting custom labels and annotations for workloads."},"internal":{"type":"object","properties":{"id":{"anyOf":[{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":54,"example":"example-build-service"},{"type":"string","example":"example-project/example-build-service"}],"description":"ID of the build service to deploy"},"branch":{"type":"string","description":"Branch to deploy","example":"master"},"buildSHA":{"oneOf":[{"type":"string","minLength":40,"maxLength":40,"description":"A commit sha."},{"type":"string","enum":["latest"],"description":"Latest commit."}],"description":"Commit SHA to deploy, or 'latest' to deploy the most recent commit","example":"latest"},"buildId":{"type":"string","description":"ID of the build that should be deployed","example":"premium-guide-6393"}},"additionalProperties":false}},"required":["internal"],"additionalProperties":false,"description":"Deploy from a Northflank build service"},{"type":"object","properties":{},"additionalProperties":false,"description":"Choose later"}],"description":"Where to deploy the job from."},"disabledCI":{"type":"boolean","description":"Whether CI should be disabled. Only relevant for jobs deploying directly from version control.","default":false},"buildConfiguration":{"type":"object","properties":{"pathIgnoreRules":{"type":"array","items":{"type":"string","maxLength":260,"description":"A path ignore rule, following `.gitignore` syntax. For example, `*.md` will ignore all files ending with `.md`.","example":"README.md"},"maxItems":200,"description":"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."},"isAllowList":{"type":"boolean","description":"If `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`.","example":false},"ciIgnoreFlagsEnabled":{"type":"boolean","description":"If `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":{"type":"array","items":{"type":"string","maxLength":72,"description":"A commit ignore flag.","example":"[skip ci]"},"maxItems":200,"description":"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]\"]`","example":["[skip ci]","[ci skip]","[no ci]","[skip nf]","[nf skip]","[northflank skip]","[skip northflank]"]},"dockerfileTarget":{"type":"string","description":"If your Dockerfile contains multiple build stages, you can specify the target stage by entering its name here."},"dockerCredentials":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The ID of the docker credentials to use.","example":"example-docker-credential"}},"includeGitFolder":{"type":"boolean","description":"Include .git folder inside the build context"},"fullGitClone":{"type":"boolean","description":"Include the entire git history as part of the .git folder. Only relevant if \"includeGitFolder\" is set."},"enableGitLfs":{"type":"boolean","description":"Enable Git LFS support for the build"},"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false}},"additionalProperties":false,"default":{"pathIgnoreRules":[],"isAllowList":false,"ciIgnoreFlagsEnabled":false}},"buildSettings":{"oneOf":[{"type":"object","properties":{"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false},"dockerfile":{"type":"object","properties":{"useCache":{"type":"boolean","description":"DEPRECATED: This field will be removed in the near future and currently has no effect."},"buildEngine":{"type":"string","enum":["buildkit","kaniko"],"description":"Build engine to use. Defaults to recommended build engine `buildkit`","example":"buildkit","default":"buildkit"},"dockerFilePath":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]+$","description":"The file path of the Dockerfile.","example":"/Dockerfile"},"dockerWorkDir":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*$","description":"The working directory of the Dockerfile.","example":"/"},"buildkit":{"type":"object","properties":{"useCache":{"type":"boolean","description":"Use persistent storage to cache build layers.","example":true,"default":false},"cacheStorageSize":{"type":"integer","description":"The amount of persistent storage available to each build in MB.","example":32768},"useInternalCache":{"type":"boolean","description":"DEPRECATED: This field will be removed in the near future.","default":false},"internalCacheStorage":{"type":"number","format":"float","description":"DEPRECATED: This field will be removed in the near future."}},"additionalProperties":false}},"required":["dockerFilePath","dockerWorkDir"],"additionalProperties":false}},"required":["dockerfile"],"additionalProperties":false,"description":"Build from a Dockerfile"},{"type":"object","properties":{"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false},"buildpack":{"type":"object","properties":{"builder":{"type":"string","enum":["HEROKU_24","HEROKU_22","HEROKU_22_CLASSIC","HEROKU_20","HEROKU_18","GOOGLE_22","GOOGLE_V1","CNB_ALPINE","CNB_BIONIC","PAKETO_JAMMY_TINY","PAKETO_JAMMY_BASE","PAKETO_JAMMY_FULL","PAKETO_TINY","PAKETO_BASE","PAKETO_FULL"],"description":"Buildpack stack to use. Defaults to recommended stack `HEROKU_24`.","example":"HEROKU_24","default":"HEROKU_24"},"buildpackLocators":{"type":"array","items":{"type":"string","description":"Url or registry identifier of custom Buildpack.","example":"https://buildpack-registry.heroku.com/cnb/mars/create-react-app"},"description":"Array of custom Buildpacks to use.","default":[]},"buildContext":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*$","description":"The working directory to build in.","example":"/","default":"/"},"useCache":{"type":"boolean","description":"Should build dependencies be cached?","example":false,"default":false}},"additionalProperties":false}},"required":["buildpack"],"additionalProperties":false,"description":"Build from a Buildpack"}],"description":"Build engine"},"runtimeEnvironment":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"An object containing the runtime environment to set for the job. Keys may only contain letters, numbers, hyphens, forward slashes and dots.","example":{"variable1":"abcdef","variable2":"12345"},"default":{}},"runtimeFiles":{"type":"object","properties":{},"description":"Secret files as JSON object, encrypted at rest. File path must be absolute","example":{"/dir/fileName":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"buildArguments":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"An object containing the build arguments to set for the job. Keys may only contain letters, numbers, hyphens, forward slashes and dots.","example":{"variable1":"abcdef","variable2":"12345"},"default":{}},"buildFiles":{"type":"object","properties":{},"description":"Secret files as JSON object, encrypted at rest. File path must be absolute","example":{"/dir/fileName":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"dockerSecretMounts":{"type":"object","properties":{},"description":"Docker secret mount contents as JSON object, encrypted at rest. Must be a valid Docker secret mount identifier","example":{"example-secret-mount_1":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"healthChecks":{"type":"array","items":{"type":"object","properties":{"protocol":{"type":"string","enum":["HTTP","CMD","TCP"],"description":"The protocol to access the health check with.","example":"HTTP"},"type":{"type":"string","enum":["livenessProbe","readinessProbe","startupProbe"],"description":"The type of health check.","example":"readinessProbe"},"path":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*((\\?([a-zA-Z0-9-._]+(=[a-zA-Z0-9-._]+)?)*)(&([a-zA-Z0-9-._]+(=[a-zA-Z0-9-._]+)?)*)*)?$","description":"The path of the health check endpoint. Required when protocol is HTTP.","example":"/health-check"},"cmd":{"type":"string","description":"The command to run for the health check. Required when protocol is CMD"},"port":{"type":"integer","minimum":1,"description":"Port number for the health check endpoint. Required when protocol is HTTP.","example":8080},"initialDelaySeconds":{"type":"integer","minimum":1,"maximum":180,"description":"Initial delay, in seconds, before the health check is first run.","example":10},"periodSeconds":{"type":"integer","minimum":10,"maximum":600,"description":"The time between each check, in seconds.","example":60},"timeoutSeconds":{"type":"integer","minimum":1,"maximum":60,"description":"The time to wait for a response before marking the health check as a failure.","example":1},"failureThreshold":{"type":"integer","minimum":1,"maximum":255,"description":"The maximum number of allowed failures.","example":3},"successThreshold":{"type":"integer","minimum":1,"maximum":255,"description":"The number of successes required to mark the health check as a success.","example":1}},"required":["protocol","type","initialDelaySeconds","periodSeconds","timeoutSeconds","failureThreshold"],"additionalProperties":false,"description":"A health check object."},"description":"An array of health checks."},"backoffLimit":{"type":"integer","minimum":0,"description":"The number of attempts to rerun a job before it is marked as failed.","example":0},"runOnSourceChange":{"type":"string","enum":["never","cd-promote","always"],"description":"Configure when the job should be run if the source image changes.","example":"never","default":"never"},"activeDeadlineSeconds":{"type":"integer","minimum":1,"nullable":true,"description":"The maximum amount of time, in seconds, for a job to run before it is marked as failed.","example":600},"schedule":{"type":"string","pattern":"(@(annually|yearly|monthly|weekly|daily|hourly))|((((\\d+,)+\\d+|(\\d+(\\/|-)\\d+)|\\d+|\\*) ?){5})","nullable":true,"description":"The cron timer scheduling when to run the job.","example":"30 8 * * *"},"suspended":{"type":"boolean","description":"Whether the cron's automatic scheduling is suspended","example":false,"default":false},"concurrencyPolicy":{"type":"string","enum":["allow","forbid","replace"],"description":"Whether this job should run when another instance of the job is already running. `allow` will enable multiple instances of this job to run. `forbid` will keep the current instance of the job running and stop a new instance from being run. `replace` will terminate any currently running instance of the job and start a new one.","example":"forbid","default":"forbid"}},"required":["name","billing","backoffLimit"],"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Project > Jobs > General > Create","x-nf-team-scoped":true,"x-nf-subheading":"create job","x-nf-cli-command":["create","job","cron"],"x-nf-deprecation-replacement":"/jobs/create-job","x-nf-deprecation-message":"Requests should instead use the relevant type-agnostic job endpoint."},"v1-projects--projectId--jobs-cron-post-team-scoped":{"operationId":"postProjectsJobsCron","summary":"Create cron job","description":"Creates a new cron job","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}}],"responses":{"200":{"description":"Details about the newly created job.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":52,"description":"The name of the job.","example":"Example Job"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"A description of the job.","example":"A job description"},"stageId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"infrastructure":{"type":"object","properties":{"architecture":{"type":"string","enum":["x86","arm"]}},"additionalProperties":false},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"billing":{"type":"object","properties":{"buildPlan":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The ID of the build plan to use.","example":"nf-compute-200-8"},"deploymentPlan":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The ID of the deployment plan to use.","example":"nf-compute-20"},"gpu":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"gpuType":{"type":"string"},"gpuCount":{"type":"integer"},"timesliced":{"type":"boolean"}},"required":["gpuType"],"additionalProperties":false}},"additionalProperties":false}},"required":["deploymentPlan"],"additionalProperties":false},"disabledCI":{"type":"boolean","description":"Whether CI should be disabled. Only relevant for jobs deploying directly from version control.","default":false},"buildConfiguration":{"type":"object","properties":{"pathIgnoreRules":{"type":"array","items":{"type":"string","maxLength":260,"description":"A path ignore rule, following `.gitignore` syntax. For example, `*.md` will ignore all files ending with `.md`.","example":"README.md"},"maxItems":200,"description":"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."},"isAllowList":{"type":"boolean","description":"If `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`.","example":false},"ciIgnoreFlagsEnabled":{"type":"boolean","description":"If `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":{"type":"array","items":{"type":"string","maxLength":72,"description":"A commit ignore flag.","example":"[skip ci]"},"maxItems":200,"description":"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]\"]`","example":["[skip ci]","[ci skip]","[no ci]","[skip nf]","[nf skip]","[northflank skip]","[skip northflank]"]},"dockerfileTarget":{"type":"string","description":"If your Dockerfile contains multiple build stages, you can specify the target stage by entering its name here."},"dockerCredentials":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The ID of the docker credentials to use.","example":"example-docker-credential"}},"includeGitFolder":{"type":"boolean","description":"Include .git folder inside the build context"},"fullGitClone":{"type":"boolean","description":"Include the entire git history as part of the .git folder. Only relevant if \"includeGitFolder\" is set."},"enableGitLfs":{"type":"boolean","description":"Enable Git LFS support for the build"},"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false}},"additionalProperties":false,"default":{"pathIgnoreRules":[],"isAllowList":false,"ciIgnoreFlagsEnabled":false}},"buildSettings":{"oneOf":[{"type":"object","properties":{"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false},"dockerfile":{"type":"object","properties":{"useCache":{"type":"boolean","description":"DEPRECATED: This field will be removed in the near future and currently has no effect."},"buildEngine":{"type":"string","enum":["buildkit","kaniko"],"description":"Build engine to use. Defaults to recommended build engine `buildkit`","example":"buildkit","default":"buildkit"},"dockerFilePath":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]+$","description":"The file path of the Dockerfile.","example":"/Dockerfile"},"dockerWorkDir":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*$","description":"The working directory of the Dockerfile.","example":"/"},"buildkit":{"type":"object","properties":{"useCache":{"type":"boolean","description":"Use persistent storage to cache build layers.","example":true,"default":false},"cacheStorageSize":{"type":"integer","description":"The amount of persistent storage available to each build in MB.","example":32768},"useInternalCache":{"type":"boolean","description":"DEPRECATED: This field will be removed in the near future.","default":false},"internalCacheStorage":{"type":"number","format":"float","description":"DEPRECATED: This field will be removed in the near future."}},"additionalProperties":false}},"required":["dockerFilePath","dockerWorkDir"],"additionalProperties":false}},"required":["dockerfile"],"additionalProperties":false,"description":"Build from a Dockerfile"},{"type":"object","properties":{"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false},"buildpack":{"type":"object","properties":{"builder":{"type":"string","enum":["HEROKU_24","HEROKU_22","HEROKU_22_CLASSIC","HEROKU_20","HEROKU_18","GOOGLE_22","GOOGLE_V1","CNB_ALPINE","CNB_BIONIC","PAKETO_JAMMY_TINY","PAKETO_JAMMY_BASE","PAKETO_JAMMY_FULL","PAKETO_TINY","PAKETO_BASE","PAKETO_FULL"],"description":"Buildpack stack to use. Defaults to recommended stack `HEROKU_24`.","example":"HEROKU_24","default":"HEROKU_24"},"buildpackLocators":{"type":"array","items":{"type":"string","description":"Url or registry identifier of custom Buildpack.","example":"https://buildpack-registry.heroku.com/cnb/mars/create-react-app"},"description":"Array of custom Buildpacks to use.","default":[]},"buildContext":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*$","description":"The working directory to build in.","example":"/","default":"/"},"useCache":{"type":"boolean","description":"Should build dependencies be cached?","example":false,"default":false}},"additionalProperties":false}},"required":["buildpack"],"additionalProperties":false,"description":"Build from a Buildpack"}],"description":"Build engine"},"runtimeEnvironment":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"An object containing the runtime environment to set for the job. Keys may only contain letters, numbers, hyphens, forward slashes and dots.","example":{"variable1":"abcdef","variable2":"12345"},"default":{}},"runtimeFiles":{"type":"object","properties":{},"description":"Secret files as JSON object, encrypted at rest. File path must be absolute","example":{"/dir/fileName":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"buildArguments":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"An object containing the build arguments to set for the job. Keys may only contain letters, numbers, hyphens, forward slashes and dots.","example":{"variable1":"abcdef","variable2":"12345"},"default":{}},"buildFiles":{"type":"object","properties":{},"description":"Secret files as JSON object, encrypted at rest. File path must be absolute","example":{"/dir/fileName":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"dockerSecretMounts":{"type":"object","properties":{},"description":"Docker secret mount contents as JSON object, encrypted at rest. Must be a valid Docker secret mount identifier","example":{"example-secret-mount_1":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"healthChecks":{"type":"array","items":{"type":"object","properties":{"protocol":{"type":"string","enum":["HTTP","CMD","TCP"],"description":"The protocol to access the health check with.","example":"HTTP"},"type":{"type":"string","enum":["livenessProbe","readinessProbe","startupProbe"],"description":"The type of health check.","example":"readinessProbe"},"path":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*((\\?([a-zA-Z0-9-._]+(=[a-zA-Z0-9-._]+)?)*)(&([a-zA-Z0-9-._]+(=[a-zA-Z0-9-._]+)?)*)*)?$","description":"The path of the health check endpoint. Required when protocol is HTTP.","example":"/health-check"},"cmd":{"type":"string","description":"The command to run for the health check. Required when protocol is CMD"},"port":{"type":"integer","minimum":1,"description":"Port number for the health check endpoint. Required when protocol is HTTP.","example":8080},"initialDelaySeconds":{"type":"integer","minimum":1,"maximum":180,"description":"Initial delay, in seconds, before the health check is first run.","example":10},"periodSeconds":{"type":"integer","minimum":10,"maximum":600,"description":"The time between each check, in seconds.","example":60},"timeoutSeconds":{"type":"integer","minimum":1,"maximum":60,"description":"The time to wait for a response before marking the health check as a failure.","example":1},"failureThreshold":{"type":"integer","minimum":1,"maximum":255,"description":"The maximum number of allowed failures.","example":3},"successThreshold":{"type":"integer","minimum":1,"maximum":255,"description":"The number of successes required to mark the health check as a success.","example":1}},"required":["protocol","type","initialDelaySeconds","periodSeconds","timeoutSeconds","failureThreshold"],"additionalProperties":false,"description":"A health check object."},"description":"An array of health checks."},"backoffLimit":{"type":"integer","minimum":0,"description":"The number of attempts to rerun a job before it is marked as failed.","example":0},"runOnSourceChange":{"type":"string","enum":["never","cd-promote","always"],"description":"Configure when the job should be run if the source image changes.","example":"never","default":"never"},"activeDeadlineSeconds":{"type":"integer","minimum":1,"nullable":true,"description":"The maximum amount of time, in seconds, for a job to run before it is marked as failed.","example":600},"schedule":{"type":"string","nullable":true,"description":"The cron timer scheduling when to run the job.","example":"30 8 * * *"},"suspended":{"type":"boolean","description":"Whether the cron's automatic scheduling is suspended","example":false,"default":false},"concurrencyPolicy":{"type":"string","enum":["allow","forbid","replace"],"description":"Whether this job should run when another instance of the job is already running. `allow` will enable multiple instances of this job to run. `forbid` will keep the current instance of the job running and stop a new instance from being run. `replace` will terminate any currently running instance of the job and start a new one.","example":"forbid","default":"forbid"},"jobType":{"type":"string","enum":["cron"],"description":"Type of the job (manual or cron)","example":"cron"},"id":{"type":"string","description":"Identifier for the job","example":"example-job"},"appId":{"type":"string","description":"Full identifier used for job deployment","example":"/example-user/default-project/example-job"},"deployment":{"type":"object","properties":{"buildpack":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customProcess","customCommand","customEntrypointCustomCommand","originalEntrypointCustomCommand"],"description":"Type of buildpack run configuration"},"customProcess":{"type":"string","description":"Custom process which should be run. Required in case where `configType` is `customProcess`"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be run. Required in case where `configType` is `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be run. Required in case where `configType` is `customCommand`, `customEntrypointCustomCommand` or `originalEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of buildpack runtime"},"docker":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customEntrypoint","customCommand","customEntrypointCustomCommand"],"description":"Type of entrypoint & command override configuration","example":"default"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be used. Required in case where `configType` is `customEntrypoint` or `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be used. Required in case where `configType` is `customCommand` or `customEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of docker runtime"},"storage":{"type":"object","properties":{"useHdbStorage":{"type":"boolean"},"usePdSsdStorage":{"type":"boolean"},"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":1024,"description":"Ephemeral storage per container in MB","example":1024}},"additionalProperties":false},"shmSize":{"type":"integer","minimum":64,"description":"Configures the amount of available memory-backed disk space available to /dev/shm"}},"additionalProperties":false},"gpu":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"gpuType":{"type":"string"},"gpuCount":{"type":"integer"},"timesliced":{"type":"boolean"}},"required":["gpuType"],"additionalProperties":false}},"additionalProperties":false},"gracePeriodSeconds":{"type":"integer","minimum":15,"maximum":600,"description":"The 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."},"metadata":{"type":"object","properties":{"labels":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom labels for the workload."},"annotations":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom annotations for the workload as string or object."}},"additionalProperties":false,"description":"Allow setting custom labels and annotations for workloads."},"vcs":{"type":"object","properties":{"projectUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo to build.","example":"https://github.com/northflank/gatsby-with-northflank"},"projectType":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string","minLength":24,"maxLength":24,"description":"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 `vcsLinkId` is provided, Northflank will instead use your linked account with that ID."},"projectBranch":{"type":"string","description":"The name of the branch to use.","example":"master"}},"required":["projectUrl","projectType","projectBranch"],"additionalProperties":false},"external":{"type":"object","properties":{"imagePath":{"type":"string","pattern":"^(?:(?:https?:\\/\\/)?([a-zA-Z0-9\\-]+\\.[a-zA-Z0-9\\.\\-]+)(\\/v1)?)?(?:\\/)?([a-zA-Z/-9\\.\\-_]+)(?:\\:([a-zA-Z/-9\\.\\-_\\:]+)|\\@([a-zA-Z/-9\\.\\-_\\:]+))$","description":"Image to be deployed. When not deploying from Dockerhub the URL must be specified.","example":"nginx:latest"},"credentials":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"ID of the saved credentials to use to access this external image.","example":"example-credentials"}},"required":["imagePath"],"additionalProperties":false},"internal":{"type":"object","properties":{"id":{"anyOf":[{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":54,"example":"example-build-service"},{"type":"string","example":"example-project/example-build-service"}],"description":"ID of the build service to deploy"},"branch":{"type":"string","description":"Branch to deploy","example":"master"},"buildSHA":{"oneOf":[{"type":"string","minLength":40,"maxLength":40,"description":"A commit sha."},{"type":"string","enum":["latest"],"description":"Latest commit."}],"description":"Commit SHA to deploy, or 'latest' to deploy the most recent commit","example":"latest"},"buildId":{"type":"string","description":"ID of the build that should be deployed","example":"premium-guide-6393"}},"additionalProperties":false},"imageUrl":{"type":"string","description":"Image registry url of the deployed image."}},"additionalProperties":false,"default":{}},"status":{"type":"object","properties":{"build":{"type":"object","properties":{"status":{"type":"string","enum":["QUEUED","PENDING","UNSCHEDULABLE","STARTING","CLONING","BUILDING","UPLOADING","ABORTED","FAILURE","SUBMISSION_FAILURE","SUCCESS","CRASHED","IN_PROGRESS"],"description":"The current status of the build.","example":"SUCCESS"},"lastTransitionTime":{"type":"string","format":"date-time","description":"The timestamp of when the build reached this status.","example":"2021-11-29T11:47:16.624Z"}},"required":["status"],"additionalProperties":false,"description":"Details about the status of the most recent build."}},"additionalProperties":false,"description":"Details about the current job status."},"cluster":{"type":"object","properties":{"id":{"type":"string","description":"The id of the cluster associated with this project.","example":"nf-europe-west"},"name":{"type":"string","description":"The name of the cluster associated with this project.","example":"nf-europe-west"},"namespace":{"type":"string","description":"Namespace this resource is located within on the cluster.","example":"ns-8zy2mcjh9zn2"},"loadBalancers":{"type":"array","items":{"type":"string","example":"lb.659200800000000000000000.northflank.com"},"description":"Load balancer DNS for the cluster."}},"required":["id","name"],"additionalProperties":false,"description":"Cluster information"},"createdAt":{"type":"string","format":"date-time","description":"time of creation"},"updatedAt":{"type":"string","format":"date-time","description":"time of update"}},"required":["name","billing","backoffLimit","jobType","id","appId","status","cluster"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Jobs","project"],"security":[],"deprecated":true,"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":52,"description":"The name of the job.","example":"Example Job"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"A description of the job.","example":"A job description"},"stageId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"infrastructure":{"type":"object","properties":{"architecture":{"type":"string","enum":["x86","arm"]}},"additionalProperties":false},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"billing":{"type":"object","properties":{"buildPlan":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The ID of the build plan to use.","example":"nf-compute-200-8"},"deploymentPlan":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The ID of the deployment plan to use.","example":"nf-compute-20"},"gpu":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"gpuType":{"type":"string"},"gpuCount":{"type":"integer"},"timesliced":{"type":"boolean"}},"required":["gpuType"],"additionalProperties":false}},"additionalProperties":false}},"required":["deploymentPlan"],"additionalProperties":false},"deployment":{"oneOf":[{"type":"object","properties":{"buildpack":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customProcess","customCommand","customEntrypointCustomCommand","originalEntrypointCustomCommand"],"description":"Type of buildpack run configuration"},"customProcess":{"type":"string","description":"Custom process which should be run. Required in case where `configType` is `customProcess`"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be run. Required in case where `configType` is `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be run. Required in case where `configType` is `customCommand`, `customEntrypointCustomCommand` or `originalEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of buildpack runtime"},"docker":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customEntrypoint","customCommand","customEntrypointCustomCommand"],"description":"Type of entrypoint & command override configuration","example":"default"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be used. Required in case where `configType` is `customEntrypoint` or `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be used. Required in case where `configType` is `customCommand` or `customEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of docker runtime"},"storage":{"type":"object","properties":{"useHdbStorage":{"type":"boolean"},"usePdSsdStorage":{"type":"boolean"},"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":1024,"description":"Ephemeral storage per container in MB","example":1024}},"additionalProperties":false},"shmSize":{"type":"integer","minimum":64,"description":"Configures the amount of available memory-backed disk space available to /dev/shm"}},"additionalProperties":false},"gpu":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"gpuType":{"type":"string"},"gpuCount":{"type":"integer"},"timesliced":{"type":"boolean"}},"required":["gpuType"],"additionalProperties":false}},"additionalProperties":false},"gracePeriodSeconds":{"type":"integer","minimum":15,"maximum":600,"description":"The 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."},"metadata":{"type":"object","properties":{"labels":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom labels for the workload."},"annotations":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom annotations for the workload as string or object."}},"additionalProperties":false,"description":"Allow setting custom labels and annotations for workloads."},"vcs":{"type":"object","properties":{"projectUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo to build.","example":"https://github.com/northflank/gatsby-with-northflank"},"projectType":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string","minLength":24,"maxLength":24,"description":"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 `vcsLinkId` is provided, Northflank will instead use your linked account with that ID."},"projectBranch":{"type":"string","description":"The name of the branch to use.","example":"master"}},"required":["projectUrl","projectType","projectBranch"],"additionalProperties":false}},"required":["vcs"],"additionalProperties":false,"description":"Deploy from version control"},{"type":"object","properties":{"buildpack":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customProcess","customCommand","customEntrypointCustomCommand","originalEntrypointCustomCommand"],"description":"Type of buildpack run configuration"},"customProcess":{"type":"string","description":"Custom process which should be run. Required in case where `configType` is `customProcess`"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be run. Required in case where `configType` is `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be run. Required in case where `configType` is `customCommand`, `customEntrypointCustomCommand` or `originalEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of buildpack runtime"},"docker":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customEntrypoint","customCommand","customEntrypointCustomCommand"],"description":"Type of entrypoint & command override configuration","example":"default"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be used. Required in case where `configType` is `customEntrypoint` or `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be used. Required in case where `configType` is `customCommand` or `customEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of docker runtime"},"storage":{"type":"object","properties":{"useHdbStorage":{"type":"boolean"},"usePdSsdStorage":{"type":"boolean"},"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":1024,"description":"Ephemeral storage per container in MB","example":1024}},"additionalProperties":false},"shmSize":{"type":"integer","minimum":64,"description":"Configures the amount of available memory-backed disk space available to /dev/shm"}},"additionalProperties":false},"gpu":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"gpuType":{"type":"string"},"gpuCount":{"type":"integer"},"timesliced":{"type":"boolean"}},"required":["gpuType"],"additionalProperties":false}},"additionalProperties":false},"gracePeriodSeconds":{"type":"integer","minimum":15,"maximum":600,"description":"The 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."},"metadata":{"type":"object","properties":{"labels":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom labels for the workload."},"annotations":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom annotations for the workload as string or object."}},"additionalProperties":false,"description":"Allow setting custom labels and annotations for workloads."},"external":{"type":"object","properties":{"imagePath":{"type":"string","pattern":"^(?:(?:https?:\\/\\/)?([a-zA-Z0-9\\-]+\\.[a-zA-Z0-9\\.\\-]+)(\\/v1)?)?(?:\\/)?([a-zA-Z/-9\\.\\-_]+)(?:\\:([a-zA-Z/-9\\.\\-_\\:]+)|\\@([a-zA-Z/-9\\.\\-_\\:]+))$","description":"Image to be deployed. When not deploying from Dockerhub the URL must be specified.","example":"nginx:latest"},"credentials":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"ID of the saved credentials to use to access this external image.","example":"example-credentials"}},"required":["imagePath"],"additionalProperties":false}},"required":["external"],"additionalProperties":false,"description":"Deploy from an external image"},{"type":"object","properties":{"buildpack":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customProcess","customCommand","customEntrypointCustomCommand","originalEntrypointCustomCommand"],"description":"Type of buildpack run configuration"},"customProcess":{"type":"string","description":"Custom process which should be run. Required in case where `configType` is `customProcess`"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be run. Required in case where `configType` is `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be run. Required in case where `configType` is `customCommand`, `customEntrypointCustomCommand` or `originalEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of buildpack runtime"},"docker":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customEntrypoint","customCommand","customEntrypointCustomCommand"],"description":"Type of entrypoint & command override configuration","example":"default"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be used. Required in case where `configType` is `customEntrypoint` or `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be used. Required in case where `configType` is `customCommand` or `customEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of docker runtime"},"storage":{"type":"object","properties":{"useHdbStorage":{"type":"boolean"},"usePdSsdStorage":{"type":"boolean"},"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":1024,"description":"Ephemeral storage per container in MB","example":1024}},"additionalProperties":false},"shmSize":{"type":"integer","minimum":64,"description":"Configures the amount of available memory-backed disk space available to /dev/shm"}},"additionalProperties":false},"gpu":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"gpuType":{"type":"string"},"gpuCount":{"type":"integer"},"timesliced":{"type":"boolean"}},"required":["gpuType"],"additionalProperties":false}},"additionalProperties":false},"gracePeriodSeconds":{"type":"integer","minimum":15,"maximum":600,"description":"The 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."},"metadata":{"type":"object","properties":{"labels":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom labels for the workload."},"annotations":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom annotations for the workload as string or object."}},"additionalProperties":false,"description":"Allow setting custom labels and annotations for workloads."},"internal":{"type":"object","properties":{"id":{"anyOf":[{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":54,"example":"example-build-service"},{"type":"string","example":"example-project/example-build-service"}],"description":"ID of the build service to deploy"},"branch":{"type":"string","description":"Branch to deploy","example":"master"},"buildSHA":{"oneOf":[{"type":"string","minLength":40,"maxLength":40,"description":"A commit sha."},{"type":"string","enum":["latest"],"description":"Latest commit."}],"description":"Commit SHA to deploy, or 'latest' to deploy the most recent commit","example":"latest"},"buildId":{"type":"string","description":"ID of the build that should be deployed","example":"premium-guide-6393"}},"additionalProperties":false}},"required":["internal"],"additionalProperties":false,"description":"Deploy from a Northflank build service"},{"type":"object","properties":{},"additionalProperties":false,"description":"Choose later"}],"description":"Where to deploy the job from."},"disabledCI":{"type":"boolean","description":"Whether CI should be disabled. Only relevant for jobs deploying directly from version control.","default":false},"buildConfiguration":{"type":"object","properties":{"pathIgnoreRules":{"type":"array","items":{"type":"string","maxLength":260,"description":"A path ignore rule, following `.gitignore` syntax. For example, `*.md` will ignore all files ending with `.md`.","example":"README.md"},"maxItems":200,"description":"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."},"isAllowList":{"type":"boolean","description":"If `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`.","example":false},"ciIgnoreFlagsEnabled":{"type":"boolean","description":"If `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":{"type":"array","items":{"type":"string","maxLength":72,"description":"A commit ignore flag.","example":"[skip ci]"},"maxItems":200,"description":"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]\"]`","example":["[skip ci]","[ci skip]","[no ci]","[skip nf]","[nf skip]","[northflank skip]","[skip northflank]"]},"dockerfileTarget":{"type":"string","description":"If your Dockerfile contains multiple build stages, you can specify the target stage by entering its name here."},"dockerCredentials":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The ID of the docker credentials to use.","example":"example-docker-credential"}},"includeGitFolder":{"type":"boolean","description":"Include .git folder inside the build context"},"fullGitClone":{"type":"boolean","description":"Include the entire git history as part of the .git folder. Only relevant if \"includeGitFolder\" is set."},"enableGitLfs":{"type":"boolean","description":"Enable Git LFS support for the build"},"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false}},"additionalProperties":false,"default":{"pathIgnoreRules":[],"isAllowList":false,"ciIgnoreFlagsEnabled":false}},"buildSettings":{"oneOf":[{"type":"object","properties":{"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false},"dockerfile":{"type":"object","properties":{"useCache":{"type":"boolean","description":"DEPRECATED: This field will be removed in the near future and currently has no effect."},"buildEngine":{"type":"string","enum":["buildkit","kaniko"],"description":"Build engine to use. Defaults to recommended build engine `buildkit`","example":"buildkit","default":"buildkit"},"dockerFilePath":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]+$","description":"The file path of the Dockerfile.","example":"/Dockerfile"},"dockerWorkDir":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*$","description":"The working directory of the Dockerfile.","example":"/"},"buildkit":{"type":"object","properties":{"useCache":{"type":"boolean","description":"Use persistent storage to cache build layers.","example":true,"default":false},"cacheStorageSize":{"type":"integer","description":"The amount of persistent storage available to each build in MB.","example":32768},"useInternalCache":{"type":"boolean","description":"DEPRECATED: This field will be removed in the near future.","default":false},"internalCacheStorage":{"type":"number","format":"float","description":"DEPRECATED: This field will be removed in the near future."}},"additionalProperties":false}},"required":["dockerFilePath","dockerWorkDir"],"additionalProperties":false}},"required":["dockerfile"],"additionalProperties":false,"description":"Build from a Dockerfile"},{"type":"object","properties":{"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false},"buildpack":{"type":"object","properties":{"builder":{"type":"string","enum":["HEROKU_24","HEROKU_22","HEROKU_22_CLASSIC","HEROKU_20","HEROKU_18","GOOGLE_22","GOOGLE_V1","CNB_ALPINE","CNB_BIONIC","PAKETO_JAMMY_TINY","PAKETO_JAMMY_BASE","PAKETO_JAMMY_FULL","PAKETO_TINY","PAKETO_BASE","PAKETO_FULL"],"description":"Buildpack stack to use. Defaults to recommended stack `HEROKU_24`.","example":"HEROKU_24","default":"HEROKU_24"},"buildpackLocators":{"type":"array","items":{"type":"string","description":"Url or registry identifier of custom Buildpack.","example":"https://buildpack-registry.heroku.com/cnb/mars/create-react-app"},"description":"Array of custom Buildpacks to use.","default":[]},"buildContext":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*$","description":"The working directory to build in.","example":"/","default":"/"},"useCache":{"type":"boolean","description":"Should build dependencies be cached?","example":false,"default":false}},"additionalProperties":false}},"required":["buildpack"],"additionalProperties":false,"description":"Build from a Buildpack"}],"description":"Build engine"},"runtimeEnvironment":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"An object containing the runtime environment to set for the job. Keys may only contain letters, numbers, hyphens, forward slashes and dots.","example":{"variable1":"abcdef","variable2":"12345"},"default":{}},"runtimeFiles":{"type":"object","properties":{},"description":"Secret files as JSON object, encrypted at rest. File path must be absolute","example":{"/dir/fileName":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"buildArguments":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"An object containing the build arguments to set for the job. Keys may only contain letters, numbers, hyphens, forward slashes and dots.","example":{"variable1":"abcdef","variable2":"12345"},"default":{}},"buildFiles":{"type":"object","properties":{},"description":"Secret files as JSON object, encrypted at rest. File path must be absolute","example":{"/dir/fileName":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"dockerSecretMounts":{"type":"object","properties":{},"description":"Docker secret mount contents as JSON object, encrypted at rest. Must be a valid Docker secret mount identifier","example":{"example-secret-mount_1":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"healthChecks":{"type":"array","items":{"type":"object","properties":{"protocol":{"type":"string","enum":["HTTP","CMD","TCP"],"description":"The protocol to access the health check with.","example":"HTTP"},"type":{"type":"string","enum":["livenessProbe","readinessProbe","startupProbe"],"description":"The type of health check.","example":"readinessProbe"},"path":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*((\\?([a-zA-Z0-9-._]+(=[a-zA-Z0-9-._]+)?)*)(&([a-zA-Z0-9-._]+(=[a-zA-Z0-9-._]+)?)*)*)?$","description":"The path of the health check endpoint. Required when protocol is HTTP.","example":"/health-check"},"cmd":{"type":"string","description":"The command to run for the health check. Required when protocol is CMD"},"port":{"type":"integer","minimum":1,"description":"Port number for the health check endpoint. Required when protocol is HTTP.","example":8080},"initialDelaySeconds":{"type":"integer","minimum":1,"maximum":180,"description":"Initial delay, in seconds, before the health check is first run.","example":10},"periodSeconds":{"type":"integer","minimum":10,"maximum":600,"description":"The time between each check, in seconds.","example":60},"timeoutSeconds":{"type":"integer","minimum":1,"maximum":60,"description":"The time to wait for a response before marking the health check as a failure.","example":1},"failureThreshold":{"type":"integer","minimum":1,"maximum":255,"description":"The maximum number of allowed failures.","example":3},"successThreshold":{"type":"integer","minimum":1,"maximum":255,"description":"The number of successes required to mark the health check as a success.","example":1}},"required":["protocol","type","initialDelaySeconds","periodSeconds","timeoutSeconds","failureThreshold"],"additionalProperties":false,"description":"A health check object."},"description":"An array of health checks."},"backoffLimit":{"type":"integer","minimum":0,"description":"The number of attempts to rerun a job before it is marked as failed.","example":0},"runOnSourceChange":{"type":"string","enum":["never","cd-promote","always"],"description":"Configure when the job should be run if the source image changes.","example":"never","default":"never"},"activeDeadlineSeconds":{"type":"integer","minimum":1,"nullable":true,"description":"The maximum amount of time, in seconds, for a job to run before it is marked as failed.","example":600},"schedule":{"type":"string","pattern":"(@(annually|yearly|monthly|weekly|daily|hourly))|((((\\d+,)+\\d+|(\\d+(\\/|-)\\d+)|\\d+|\\*) ?){5})","nullable":true,"description":"The cron timer scheduling when to run the job.","example":"30 8 * * *"},"suspended":{"type":"boolean","description":"Whether the cron's automatic scheduling is suspended","example":false,"default":false},"concurrencyPolicy":{"type":"string","enum":["allow","forbid","replace"],"description":"Whether this job should run when another instance of the job is already running. `allow` will enable multiple instances of this job to run. `forbid` will keep the current instance of the job running and stop a new instance from being run. `replace` will terminate any currently running instance of the job and start a new one.","example":"forbid","default":"forbid"}},"required":["name","billing","backoffLimit"],"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Project > Jobs > General > Create","x-nf-team-scoped":true,"x-nf-subheading":"create job","x-nf-cli-command":["create","job","cron"],"x-nf-deprecation-replacement":"/jobs/create-job","x-nf-deprecation-message":"Requests should instead use the relevant type-agnostic job endpoint."},"v1-projects--projectId--jobs-cron-put":{"operationId":"putProjectsJobsCron","summary":"Put cron job","description":"Creates or updates a cron job","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}}],"responses":{"200":{"description":"Details about the created or updated job.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":52,"description":"The name of the job.","example":"Example Job"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"A description of the job.","example":"A job description"},"stageId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"infrastructure":{"type":"object","properties":{"architecture":{"type":"string","enum":["x86","arm"]}},"additionalProperties":false},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"billing":{"type":"object","properties":{"buildPlan":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The ID of the build plan to use.","example":"nf-compute-200-8"},"deploymentPlan":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The ID of the deployment plan to use.","example":"nf-compute-20"},"gpu":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"gpuType":{"type":"string"},"gpuCount":{"type":"integer"},"timesliced":{"type":"boolean"}},"required":["gpuType"],"additionalProperties":false}},"additionalProperties":false}},"required":["deploymentPlan"],"additionalProperties":false},"disabledCI":{"type":"boolean","description":"Whether CI should be disabled. Only relevant for jobs deploying directly from version control.","default":false},"buildConfiguration":{"type":"object","properties":{"pathIgnoreRules":{"type":"array","items":{"type":"string","maxLength":260,"description":"A path ignore rule, following `.gitignore` syntax. For example, `*.md` will ignore all files ending with `.md`.","example":"README.md"},"maxItems":200,"description":"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."},"isAllowList":{"type":"boolean","description":"If `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`.","example":false},"ciIgnoreFlagsEnabled":{"type":"boolean","description":"If `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":{"type":"array","items":{"type":"string","maxLength":72,"description":"A commit ignore flag.","example":"[skip ci]"},"maxItems":200,"description":"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]\"]`","example":["[skip ci]","[ci skip]","[no ci]","[skip nf]","[nf skip]","[northflank skip]","[skip northflank]"]},"dockerfileTarget":{"type":"string","description":"If your Dockerfile contains multiple build stages, you can specify the target stage by entering its name here."},"dockerCredentials":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The ID of the docker credentials to use.","example":"example-docker-credential"}},"includeGitFolder":{"type":"boolean","description":"Include .git folder inside the build context"},"fullGitClone":{"type":"boolean","description":"Include the entire git history as part of the .git folder. Only relevant if \"includeGitFolder\" is set."},"enableGitLfs":{"type":"boolean","description":"Enable Git LFS support for the build"},"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false}},"additionalProperties":false,"default":{"pathIgnoreRules":[],"isAllowList":false,"ciIgnoreFlagsEnabled":false}},"buildSettings":{"oneOf":[{"type":"object","properties":{"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false},"dockerfile":{"type":"object","properties":{"useCache":{"type":"boolean","description":"DEPRECATED: This field will be removed in the near future and currently has no effect."},"buildEngine":{"type":"string","enum":["buildkit","kaniko"],"description":"Build engine to use. Defaults to recommended build engine `buildkit`","example":"buildkit","default":"buildkit"},"dockerFilePath":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]+$","description":"The file path of the Dockerfile.","example":"/Dockerfile"},"dockerWorkDir":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*$","description":"The working directory of the Dockerfile.","example":"/"},"buildkit":{"type":"object","properties":{"useCache":{"type":"boolean","description":"Use persistent storage to cache build layers.","example":true,"default":false},"cacheStorageSize":{"type":"integer","description":"The amount of persistent storage available to each build in MB.","example":32768},"useInternalCache":{"type":"boolean","description":"DEPRECATED: This field will be removed in the near future.","default":false},"internalCacheStorage":{"type":"number","format":"float","description":"DEPRECATED: This field will be removed in the near future."}},"additionalProperties":false}},"required":["dockerFilePath","dockerWorkDir"],"additionalProperties":false}},"required":["dockerfile"],"additionalProperties":false,"description":"Build from a Dockerfile"},{"type":"object","properties":{"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false},"buildpack":{"type":"object","properties":{"builder":{"type":"string","enum":["HEROKU_24","HEROKU_22","HEROKU_22_CLASSIC","HEROKU_20","HEROKU_18","GOOGLE_22","GOOGLE_V1","CNB_ALPINE","CNB_BIONIC","PAKETO_JAMMY_TINY","PAKETO_JAMMY_BASE","PAKETO_JAMMY_FULL","PAKETO_TINY","PAKETO_BASE","PAKETO_FULL"],"description":"Buildpack stack to use. Defaults to recommended stack `HEROKU_24`.","example":"HEROKU_24","default":"HEROKU_24"},"buildpackLocators":{"type":"array","items":{"type":"string","description":"Url or registry identifier of custom Buildpack.","example":"https://buildpack-registry.heroku.com/cnb/mars/create-react-app"},"description":"Array of custom Buildpacks to use.","default":[]},"buildContext":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*$","description":"The working directory to build in.","example":"/","default":"/"},"useCache":{"type":"boolean","description":"Should build dependencies be cached?","example":false,"default":false}},"additionalProperties":false}},"required":["buildpack"],"additionalProperties":false,"description":"Build from a Buildpack"}],"description":"Build engine"},"runtimeEnvironment":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"An object containing the runtime environment to set for the job. Keys may only contain letters, numbers, hyphens, forward slashes and dots.","example":{"variable1":"abcdef","variable2":"12345"},"default":{}},"runtimeFiles":{"type":"object","properties":{},"description":"Secret files as JSON object, encrypted at rest. File path must be absolute","example":{"/dir/fileName":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"buildArguments":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"An object containing the build arguments to set for the job. Keys may only contain letters, numbers, hyphens, forward slashes and dots.","example":{"variable1":"abcdef","variable2":"12345"},"default":{}},"buildFiles":{"type":"object","properties":{},"description":"Secret files as JSON object, encrypted at rest. File path must be absolute","example":{"/dir/fileName":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"dockerSecretMounts":{"type":"object","properties":{},"description":"Docker secret mount contents as JSON object, encrypted at rest. Must be a valid Docker secret mount identifier","example":{"example-secret-mount_1":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"healthChecks":{"type":"array","items":{"type":"object","properties":{"protocol":{"type":"string","enum":["HTTP","CMD","TCP"],"description":"The protocol to access the health check with.","example":"HTTP"},"type":{"type":"string","enum":["livenessProbe","readinessProbe","startupProbe"],"description":"The type of health check.","example":"readinessProbe"},"path":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*((\\?([a-zA-Z0-9-._]+(=[a-zA-Z0-9-._]+)?)*)(&([a-zA-Z0-9-._]+(=[a-zA-Z0-9-._]+)?)*)*)?$","description":"The path of the health check endpoint. Required when protocol is HTTP.","example":"/health-check"},"cmd":{"type":"string","description":"The command to run for the health check. Required when protocol is CMD"},"port":{"type":"integer","minimum":1,"description":"Port number for the health check endpoint. Required when protocol is HTTP.","example":8080},"initialDelaySeconds":{"type":"integer","minimum":1,"maximum":180,"description":"Initial delay, in seconds, before the health check is first run.","example":10},"periodSeconds":{"type":"integer","minimum":10,"maximum":600,"description":"The time between each check, in seconds.","example":60},"timeoutSeconds":{"type":"integer","minimum":1,"maximum":60,"description":"The time to wait for a response before marking the health check as a failure.","example":1},"failureThreshold":{"type":"integer","minimum":1,"maximum":255,"description":"The maximum number of allowed failures.","example":3},"successThreshold":{"type":"integer","minimum":1,"maximum":255,"description":"The number of successes required to mark the health check as a success.","example":1}},"required":["protocol","type","initialDelaySeconds","periodSeconds","timeoutSeconds","failureThreshold"],"additionalProperties":false,"description":"A health check object."},"description":"An array of health checks."},"backoffLimit":{"type":"integer","minimum":0,"description":"The number of attempts to rerun a job before it is marked as failed.","example":0},"runOnSourceChange":{"type":"string","enum":["never","cd-promote","always"],"description":"Configure when the job should be run if the source image changes.","example":"never","default":"never"},"activeDeadlineSeconds":{"type":"integer","minimum":1,"nullable":true,"description":"The maximum amount of time, in seconds, for a job to run before it is marked as failed.","example":600},"schedule":{"type":"string","nullable":true,"description":"The cron timer scheduling when to run the job.","example":"30 8 * * *"},"suspended":{"type":"boolean","description":"Whether the cron's automatic scheduling is suspended","example":false,"default":false},"concurrencyPolicy":{"type":"string","enum":["allow","forbid","replace"],"description":"Whether this job should run when another instance of the job is already running. `allow` will enable multiple instances of this job to run. `forbid` will keep the current instance of the job running and stop a new instance from being run. `replace` will terminate any currently running instance of the job and start a new one.","example":"forbid","default":"forbid"},"jobType":{"type":"string","enum":["cron"],"description":"Type of the job (manual or cron)","example":"cron"},"id":{"type":"string","description":"Identifier for the job","example":"example-job"},"appId":{"type":"string","description":"Full identifier used for job deployment","example":"/example-user/default-project/example-job"},"deployment":{"type":"object","properties":{"buildpack":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customProcess","customCommand","customEntrypointCustomCommand","originalEntrypointCustomCommand"],"description":"Type of buildpack run configuration"},"customProcess":{"type":"string","description":"Custom process which should be run. Required in case where `configType` is `customProcess`"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be run. Required in case where `configType` is `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be run. Required in case where `configType` is `customCommand`, `customEntrypointCustomCommand` or `originalEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of buildpack runtime"},"docker":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customEntrypoint","customCommand","customEntrypointCustomCommand"],"description":"Type of entrypoint & command override configuration","example":"default"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be used. Required in case where `configType` is `customEntrypoint` or `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be used. Required in case where `configType` is `customCommand` or `customEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of docker runtime"},"storage":{"type":"object","properties":{"useHdbStorage":{"type":"boolean"},"usePdSsdStorage":{"type":"boolean"},"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":1024,"description":"Ephemeral storage per container in MB","example":1024}},"additionalProperties":false},"shmSize":{"type":"integer","minimum":64,"description":"Configures the amount of available memory-backed disk space available to /dev/shm"}},"additionalProperties":false},"gpu":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"gpuType":{"type":"string"},"gpuCount":{"type":"integer"},"timesliced":{"type":"boolean"}},"required":["gpuType"],"additionalProperties":false}},"additionalProperties":false},"gracePeriodSeconds":{"type":"integer","minimum":15,"maximum":600,"description":"The 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."},"metadata":{"type":"object","properties":{"labels":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom labels for the workload."},"annotations":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom annotations for the workload as string or object."}},"additionalProperties":false,"description":"Allow setting custom labels and annotations for workloads."},"vcs":{"type":"object","properties":{"projectUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo to build.","example":"https://github.com/northflank/gatsby-with-northflank"},"projectType":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string","minLength":24,"maxLength":24,"description":"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 `vcsLinkId` is provided, Northflank will instead use your linked account with that ID."},"projectBranch":{"type":"string","description":"The name of the branch to use.","example":"master"}},"required":["projectUrl","projectType","projectBranch"],"additionalProperties":false},"external":{"type":"object","properties":{"imagePath":{"type":"string","pattern":"^(?:(?:https?:\\/\\/)?([a-zA-Z0-9\\-]+\\.[a-zA-Z0-9\\.\\-]+)(\\/v1)?)?(?:\\/)?([a-zA-Z/-9\\.\\-_]+)(?:\\:([a-zA-Z/-9\\.\\-_\\:]+)|\\@([a-zA-Z/-9\\.\\-_\\:]+))$","description":"Image to be deployed. When not deploying from Dockerhub the URL must be specified.","example":"nginx:latest"},"credentials":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"ID of the saved credentials to use to access this external image.","example":"example-credentials"}},"required":["imagePath"],"additionalProperties":false},"internal":{"type":"object","properties":{"id":{"anyOf":[{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":54,"example":"example-build-service"},{"type":"string","example":"example-project/example-build-service"}],"description":"ID of the build service to deploy"},"branch":{"type":"string","description":"Branch to deploy","example":"master"},"buildSHA":{"oneOf":[{"type":"string","minLength":40,"maxLength":40,"description":"A commit sha."},{"type":"string","enum":["latest"],"description":"Latest commit."}],"description":"Commit SHA to deploy, or 'latest' to deploy the most recent commit","example":"latest"},"buildId":{"type":"string","description":"ID of the build that should be deployed","example":"premium-guide-6393"}},"additionalProperties":false},"imageUrl":{"type":"string","description":"Image registry url of the deployed image."}},"additionalProperties":false,"default":{}},"status":{"type":"object","properties":{"build":{"type":"object","properties":{"status":{"type":"string","enum":["QUEUED","PENDING","UNSCHEDULABLE","STARTING","CLONING","BUILDING","UPLOADING","ABORTED","FAILURE","SUBMISSION_FAILURE","SUCCESS","CRASHED","IN_PROGRESS"],"description":"The current status of the build.","example":"SUCCESS"},"lastTransitionTime":{"type":"string","format":"date-time","description":"The timestamp of when the build reached this status.","example":"2021-11-29T11:47:16.624Z"}},"required":["status"],"additionalProperties":false,"description":"Details about the status of the most recent build."}},"additionalProperties":false,"description":"Details about the current job status."},"cluster":{"type":"object","properties":{"id":{"type":"string","description":"The id of the cluster associated with this project.","example":"nf-europe-west"},"name":{"type":"string","description":"The name of the cluster associated with this project.","example":"nf-europe-west"},"namespace":{"type":"string","description":"Namespace this resource is located within on the cluster.","example":"ns-8zy2mcjh9zn2"},"loadBalancers":{"type":"array","items":{"type":"string","example":"lb.659200800000000000000000.northflank.com"},"description":"Load balancer DNS for the cluster."}},"required":["id","name"],"additionalProperties":false,"description":"Cluster information"},"createdAt":{"type":"string","format":"date-time","description":"time of creation"},"updatedAt":{"type":"string","format":"date-time","description":"time of update"}},"required":["name","billing","backoffLimit","jobType","id","appId","status","cluster"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Jobs","project"],"security":[],"deprecated":true,"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":52,"description":"The name of the job.","example":"Example Job"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"A description of the job.","example":"A job description"},"stageId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"infrastructure":{"type":"object","properties":{"architecture":{"type":"string","enum":["x86","arm"]}},"additionalProperties":false},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"billing":{"type":"object","properties":{"buildPlan":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The ID of the build plan to use.","example":"nf-compute-200-8"},"deploymentPlan":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The ID of the deployment plan to use.","example":"nf-compute-20"},"gpu":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"gpuType":{"type":"string"},"gpuCount":{"type":"integer"},"timesliced":{"type":"boolean"}},"required":["gpuType"],"additionalProperties":false}},"additionalProperties":false}},"required":["deploymentPlan"],"additionalProperties":false},"deployment":{"oneOf":[{"type":"object","properties":{"buildpack":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customProcess","customCommand","customEntrypointCustomCommand","originalEntrypointCustomCommand"],"description":"Type of buildpack run configuration"},"customProcess":{"type":"string","description":"Custom process which should be run. Required in case where `configType` is `customProcess`"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be run. Required in case where `configType` is `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be run. Required in case where `configType` is `customCommand`, `customEntrypointCustomCommand` or `originalEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of buildpack runtime"},"docker":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customEntrypoint","customCommand","customEntrypointCustomCommand"],"description":"Type of entrypoint & command override configuration","example":"default"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be used. Required in case where `configType` is `customEntrypoint` or `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be used. Required in case where `configType` is `customCommand` or `customEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of docker runtime"},"storage":{"type":"object","properties":{"useHdbStorage":{"type":"boolean"},"usePdSsdStorage":{"type":"boolean"},"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":1024,"description":"Ephemeral storage per container in MB","example":1024}},"additionalProperties":false},"shmSize":{"type":"integer","minimum":64,"description":"Configures the amount of available memory-backed disk space available to /dev/shm"}},"additionalProperties":false},"gpu":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"gpuType":{"type":"string"},"gpuCount":{"type":"integer"},"timesliced":{"type":"boolean"}},"required":["gpuType"],"additionalProperties":false}},"additionalProperties":false},"gracePeriodSeconds":{"type":"integer","minimum":15,"maximum":600,"description":"The 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."},"metadata":{"type":"object","properties":{"labels":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom labels for the workload."},"annotations":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom annotations for the workload as string or object."}},"additionalProperties":false,"description":"Allow setting custom labels and annotations for workloads."},"vcs":{"type":"object","properties":{"projectUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo to build.","example":"https://github.com/northflank/gatsby-with-northflank"},"projectType":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string","minLength":24,"maxLength":24,"description":"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 `vcsLinkId` is provided, Northflank will instead use your linked account with that ID."},"projectBranch":{"type":"string","description":"The name of the branch to use.","example":"master"}},"required":["projectUrl","projectType","projectBranch"],"additionalProperties":false}},"required":["vcs"],"additionalProperties":false,"description":"Deploy from version control"},{"type":"object","properties":{"buildpack":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customProcess","customCommand","customEntrypointCustomCommand","originalEntrypointCustomCommand"],"description":"Type of buildpack run configuration"},"customProcess":{"type":"string","description":"Custom process which should be run. Required in case where `configType` is `customProcess`"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be run. Required in case where `configType` is `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be run. Required in case where `configType` is `customCommand`, `customEntrypointCustomCommand` or `originalEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of buildpack runtime"},"docker":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customEntrypoint","customCommand","customEntrypointCustomCommand"],"description":"Type of entrypoint & command override configuration","example":"default"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be used. Required in case where `configType` is `customEntrypoint` or `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be used. Required in case where `configType` is `customCommand` or `customEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of docker runtime"},"storage":{"type":"object","properties":{"useHdbStorage":{"type":"boolean"},"usePdSsdStorage":{"type":"boolean"},"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":1024,"description":"Ephemeral storage per container in MB","example":1024}},"additionalProperties":false},"shmSize":{"type":"integer","minimum":64,"description":"Configures the amount of available memory-backed disk space available to /dev/shm"}},"additionalProperties":false},"gpu":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"gpuType":{"type":"string"},"gpuCount":{"type":"integer"},"timesliced":{"type":"boolean"}},"required":["gpuType"],"additionalProperties":false}},"additionalProperties":false},"gracePeriodSeconds":{"type":"integer","minimum":15,"maximum":600,"description":"The 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."},"metadata":{"type":"object","properties":{"labels":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom labels for the workload."},"annotations":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom annotations for the workload as string or object."}},"additionalProperties":false,"description":"Allow setting custom labels and annotations for workloads."},"external":{"type":"object","properties":{"imagePath":{"type":"string","pattern":"^(?:(?:https?:\\/\\/)?([a-zA-Z0-9\\-]+\\.[a-zA-Z0-9\\.\\-]+)(\\/v1)?)?(?:\\/)?([a-zA-Z/-9\\.\\-_]+)(?:\\:([a-zA-Z/-9\\.\\-_\\:]+)|\\@([a-zA-Z/-9\\.\\-_\\:]+))$","description":"Image to be deployed. When not deploying from Dockerhub the URL must be specified.","example":"nginx:latest"},"credentials":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"ID of the saved credentials to use to access this external image.","example":"example-credentials"}},"required":["imagePath"],"additionalProperties":false}},"required":["external"],"additionalProperties":false,"description":"Deploy from an external image"},{"type":"object","properties":{"buildpack":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customProcess","customCommand","customEntrypointCustomCommand","originalEntrypointCustomCommand"],"description":"Type of buildpack run configuration"},"customProcess":{"type":"string","description":"Custom process which should be run. Required in case where `configType` is `customProcess`"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be run. Required in case where `configType` is `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be run. Required in case where `configType` is `customCommand`, `customEntrypointCustomCommand` or `originalEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of buildpack runtime"},"docker":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customEntrypoint","customCommand","customEntrypointCustomCommand"],"description":"Type of entrypoint & command override configuration","example":"default"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be used. Required in case where `configType` is `customEntrypoint` or `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be used. Required in case where `configType` is `customCommand` or `customEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of docker runtime"},"storage":{"type":"object","properties":{"useHdbStorage":{"type":"boolean"},"usePdSsdStorage":{"type":"boolean"},"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":1024,"description":"Ephemeral storage per container in MB","example":1024}},"additionalProperties":false},"shmSize":{"type":"integer","minimum":64,"description":"Configures the amount of available memory-backed disk space available to /dev/shm"}},"additionalProperties":false},"gpu":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"gpuType":{"type":"string"},"gpuCount":{"type":"integer"},"timesliced":{"type":"boolean"}},"required":["gpuType"],"additionalProperties":false}},"additionalProperties":false},"gracePeriodSeconds":{"type":"integer","minimum":15,"maximum":600,"description":"The 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."},"metadata":{"type":"object","properties":{"labels":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom labels for the workload."},"annotations":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom annotations for the workload as string or object."}},"additionalProperties":false,"description":"Allow setting custom labels and annotations for workloads."},"internal":{"type":"object","properties":{"id":{"anyOf":[{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":54,"example":"example-build-service"},{"type":"string","example":"example-project/example-build-service"}],"description":"ID of the build service to deploy"},"branch":{"type":"string","description":"Branch to deploy","example":"master"},"buildSHA":{"oneOf":[{"type":"string","minLength":40,"maxLength":40,"description":"A commit sha."},{"type":"string","enum":["latest"],"description":"Latest commit."}],"description":"Commit SHA to deploy, or 'latest' to deploy the most recent commit","example":"latest"},"buildId":{"type":"string","description":"ID of the build that should be deployed","example":"premium-guide-6393"}},"additionalProperties":false}},"required":["internal"],"additionalProperties":false,"description":"Deploy from a Northflank build service"},{"type":"object","properties":{},"additionalProperties":false,"description":"Choose later"}],"description":"Where to deploy the job from."},"disabledCI":{"type":"boolean","description":"Whether CI should be disabled. Only relevant for jobs deploying directly from version control.","default":false},"buildConfiguration":{"type":"object","properties":{"pathIgnoreRules":{"type":"array","items":{"type":"string","maxLength":260,"description":"A path ignore rule, following `.gitignore` syntax. For example, `*.md` will ignore all files ending with `.md`.","example":"README.md"},"maxItems":200,"description":"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."},"isAllowList":{"type":"boolean","description":"If `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`.","example":false},"ciIgnoreFlagsEnabled":{"type":"boolean","description":"If `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":{"type":"array","items":{"type":"string","maxLength":72,"description":"A commit ignore flag.","example":"[skip ci]"},"maxItems":200,"description":"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]\"]`","example":["[skip ci]","[ci skip]","[no ci]","[skip nf]","[nf skip]","[northflank skip]","[skip northflank]"]},"dockerfileTarget":{"type":"string","description":"If your Dockerfile contains multiple build stages, you can specify the target stage by entering its name here."},"dockerCredentials":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The ID of the docker credentials to use.","example":"example-docker-credential"}},"includeGitFolder":{"type":"boolean","description":"Include .git folder inside the build context"},"fullGitClone":{"type":"boolean","description":"Include the entire git history as part of the .git folder. Only relevant if \"includeGitFolder\" is set."},"enableGitLfs":{"type":"boolean","description":"Enable Git LFS support for the build"},"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false}},"additionalProperties":false,"default":{"pathIgnoreRules":[],"isAllowList":false,"ciIgnoreFlagsEnabled":false}},"buildSettings":{"oneOf":[{"type":"object","properties":{"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false},"dockerfile":{"type":"object","properties":{"useCache":{"type":"boolean","description":"DEPRECATED: This field will be removed in the near future and currently has no effect."},"buildEngine":{"type":"string","enum":["buildkit","kaniko"],"description":"Build engine to use. Defaults to recommended build engine `buildkit`","example":"buildkit","default":"buildkit"},"dockerFilePath":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]+$","description":"The file path of the Dockerfile.","example":"/Dockerfile"},"dockerWorkDir":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*$","description":"The working directory of the Dockerfile.","example":"/"},"buildkit":{"type":"object","properties":{"useCache":{"type":"boolean","description":"Use persistent storage to cache build layers.","example":true,"default":false},"cacheStorageSize":{"type":"integer","description":"The amount of persistent storage available to each build in MB.","example":32768},"useInternalCache":{"type":"boolean","description":"DEPRECATED: This field will be removed in the near future.","default":false},"internalCacheStorage":{"type":"number","format":"float","description":"DEPRECATED: This field will be removed in the near future."}},"additionalProperties":false}},"required":["dockerFilePath","dockerWorkDir"],"additionalProperties":false}},"required":["dockerfile"],"additionalProperties":false,"description":"Build from a Dockerfile"},{"type":"object","properties":{"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false},"buildpack":{"type":"object","properties":{"builder":{"type":"string","enum":["HEROKU_24","HEROKU_22","HEROKU_22_CLASSIC","HEROKU_20","HEROKU_18","GOOGLE_22","GOOGLE_V1","CNB_ALPINE","CNB_BIONIC","PAKETO_JAMMY_TINY","PAKETO_JAMMY_BASE","PAKETO_JAMMY_FULL","PAKETO_TINY","PAKETO_BASE","PAKETO_FULL"],"description":"Buildpack stack to use. Defaults to recommended stack `HEROKU_24`.","example":"HEROKU_24","default":"HEROKU_24"},"buildpackLocators":{"type":"array","items":{"type":"string","description":"Url or registry identifier of custom Buildpack.","example":"https://buildpack-registry.heroku.com/cnb/mars/create-react-app"},"description":"Array of custom Buildpacks to use.","default":[]},"buildContext":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*$","description":"The working directory to build in.","example":"/","default":"/"},"useCache":{"type":"boolean","description":"Should build dependencies be cached?","example":false,"default":false}},"additionalProperties":false}},"required":["buildpack"],"additionalProperties":false,"description":"Build from a Buildpack"}],"description":"Build engine"},"runtimeEnvironment":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"An object containing the runtime environment to set for the job. Keys may only contain letters, numbers, hyphens, forward slashes and dots.","example":{"variable1":"abcdef","variable2":"12345"},"default":{}},"runtimeFiles":{"type":"object","properties":{},"description":"Secret files as JSON object, encrypted at rest. File path must be absolute","example":{"/dir/fileName":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"buildArguments":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"An object containing the build arguments to set for the job. Keys may only contain letters, numbers, hyphens, forward slashes and dots.","example":{"variable1":"abcdef","variable2":"12345"},"default":{}},"buildFiles":{"type":"object","properties":{},"description":"Secret files as JSON object, encrypted at rest. File path must be absolute","example":{"/dir/fileName":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"dockerSecretMounts":{"type":"object","properties":{},"description":"Docker secret mount contents as JSON object, encrypted at rest. Must be a valid Docker secret mount identifier","example":{"example-secret-mount_1":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"healthChecks":{"type":"array","items":{"type":"object","properties":{"protocol":{"type":"string","enum":["HTTP","CMD","TCP"],"description":"The protocol to access the health check with.","example":"HTTP"},"type":{"type":"string","enum":["livenessProbe","readinessProbe","startupProbe"],"description":"The type of health check.","example":"readinessProbe"},"path":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*((\\?([a-zA-Z0-9-._]+(=[a-zA-Z0-9-._]+)?)*)(&([a-zA-Z0-9-._]+(=[a-zA-Z0-9-._]+)?)*)*)?$","description":"The path of the health check endpoint. Required when protocol is HTTP.","example":"/health-check"},"cmd":{"type":"string","description":"The command to run for the health check. Required when protocol is CMD"},"port":{"type":"integer","minimum":1,"description":"Port number for the health check endpoint. Required when protocol is HTTP.","example":8080},"initialDelaySeconds":{"type":"integer","minimum":1,"maximum":180,"description":"Initial delay, in seconds, before the health check is first run.","example":10},"periodSeconds":{"type":"integer","minimum":10,"maximum":600,"description":"The time between each check, in seconds.","example":60},"timeoutSeconds":{"type":"integer","minimum":1,"maximum":60,"description":"The time to wait for a response before marking the health check as a failure.","example":1},"failureThreshold":{"type":"integer","minimum":1,"maximum":255,"description":"The maximum number of allowed failures.","example":3},"successThreshold":{"type":"integer","minimum":1,"maximum":255,"description":"The number of successes required to mark the health check as a success.","example":1}},"required":["protocol","type","initialDelaySeconds","periodSeconds","timeoutSeconds","failureThreshold"],"additionalProperties":false,"description":"A health check object."},"description":"An array of health checks."},"backoffLimit":{"type":"integer","minimum":0,"description":"The number of attempts to rerun a job before it is marked as failed.","example":0},"runOnSourceChange":{"type":"string","enum":["never","cd-promote","always"],"description":"Configure when the job should be run if the source image changes.","example":"never","default":"never"},"activeDeadlineSeconds":{"type":"integer","minimum":1,"nullable":true,"description":"The maximum amount of time, in seconds, for a job to run before it is marked as failed.","example":600},"schedule":{"type":"string","pattern":"(@(annually|yearly|monthly|weekly|daily|hourly))|((((\\d+,)+\\d+|(\\d+(\\/|-)\\d+)|\\d+|\\*) ?){5})","nullable":true,"description":"The cron timer scheduling when to run the job.","example":"30 8 * * *"},"suspended":{"type":"boolean","description":"Whether the cron's automatic scheduling is suspended","example":false,"default":false},"concurrencyPolicy":{"type":"string","enum":["allow","forbid","replace"],"description":"Whether this job should run when another instance of the job is already running. `allow` will enable multiple instances of this job to run. `forbid` will keep the current instance of the job running and stop a new instance from being run. `replace` will terminate any currently running instance of the job and start a new one.","example":"forbid","default":"forbid"}},"required":["name","billing","backoffLimit"],"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Project > Jobs > General > Create","x-nf-team-scoped":true,"x-nf-subheading":"put job","x-nf-cli-command":["put","job","cron"],"x-nf-deprecation-replacement":"/jobs/put-job","x-nf-deprecation-message":"Requests should instead use the relevant type-agnostic job endpoint."},"v1-projects--projectId--jobs-cron-put-team-scoped":{"operationId":"putProjectsJobsCron","summary":"Put cron job","description":"Creates or updates a cron job","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}}],"responses":{"200":{"description":"Details about the created or updated job.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":52,"description":"The name of the job.","example":"Example Job"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"A description of the job.","example":"A job description"},"stageId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"infrastructure":{"type":"object","properties":{"architecture":{"type":"string","enum":["x86","arm"]}},"additionalProperties":false},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"billing":{"type":"object","properties":{"buildPlan":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The ID of the build plan to use.","example":"nf-compute-200-8"},"deploymentPlan":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The ID of the deployment plan to use.","example":"nf-compute-20"},"gpu":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"gpuType":{"type":"string"},"gpuCount":{"type":"integer"},"timesliced":{"type":"boolean"}},"required":["gpuType"],"additionalProperties":false}},"additionalProperties":false}},"required":["deploymentPlan"],"additionalProperties":false},"disabledCI":{"type":"boolean","description":"Whether CI should be disabled. Only relevant for jobs deploying directly from version control.","default":false},"buildConfiguration":{"type":"object","properties":{"pathIgnoreRules":{"type":"array","items":{"type":"string","maxLength":260,"description":"A path ignore rule, following `.gitignore` syntax. For example, `*.md` will ignore all files ending with `.md`.","example":"README.md"},"maxItems":200,"description":"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."},"isAllowList":{"type":"boolean","description":"If `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`.","example":false},"ciIgnoreFlagsEnabled":{"type":"boolean","description":"If `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":{"type":"array","items":{"type":"string","maxLength":72,"description":"A commit ignore flag.","example":"[skip ci]"},"maxItems":200,"description":"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]\"]`","example":["[skip ci]","[ci skip]","[no ci]","[skip nf]","[nf skip]","[northflank skip]","[skip northflank]"]},"dockerfileTarget":{"type":"string","description":"If your Dockerfile contains multiple build stages, you can specify the target stage by entering its name here."},"dockerCredentials":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The ID of the docker credentials to use.","example":"example-docker-credential"}},"includeGitFolder":{"type":"boolean","description":"Include .git folder inside the build context"},"fullGitClone":{"type":"boolean","description":"Include the entire git history as part of the .git folder. Only relevant if \"includeGitFolder\" is set."},"enableGitLfs":{"type":"boolean","description":"Enable Git LFS support for the build"},"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false}},"additionalProperties":false,"default":{"pathIgnoreRules":[],"isAllowList":false,"ciIgnoreFlagsEnabled":false}},"buildSettings":{"oneOf":[{"type":"object","properties":{"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false},"dockerfile":{"type":"object","properties":{"useCache":{"type":"boolean","description":"DEPRECATED: This field will be removed in the near future and currently has no effect."},"buildEngine":{"type":"string","enum":["buildkit","kaniko"],"description":"Build engine to use. Defaults to recommended build engine `buildkit`","example":"buildkit","default":"buildkit"},"dockerFilePath":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]+$","description":"The file path of the Dockerfile.","example":"/Dockerfile"},"dockerWorkDir":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*$","description":"The working directory of the Dockerfile.","example":"/"},"buildkit":{"type":"object","properties":{"useCache":{"type":"boolean","description":"Use persistent storage to cache build layers.","example":true,"default":false},"cacheStorageSize":{"type":"integer","description":"The amount of persistent storage available to each build in MB.","example":32768},"useInternalCache":{"type":"boolean","description":"DEPRECATED: This field will be removed in the near future.","default":false},"internalCacheStorage":{"type":"number","format":"float","description":"DEPRECATED: This field will be removed in the near future."}},"additionalProperties":false}},"required":["dockerFilePath","dockerWorkDir"],"additionalProperties":false}},"required":["dockerfile"],"additionalProperties":false,"description":"Build from a Dockerfile"},{"type":"object","properties":{"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false},"buildpack":{"type":"object","properties":{"builder":{"type":"string","enum":["HEROKU_24","HEROKU_22","HEROKU_22_CLASSIC","HEROKU_20","HEROKU_18","GOOGLE_22","GOOGLE_V1","CNB_ALPINE","CNB_BIONIC","PAKETO_JAMMY_TINY","PAKETO_JAMMY_BASE","PAKETO_JAMMY_FULL","PAKETO_TINY","PAKETO_BASE","PAKETO_FULL"],"description":"Buildpack stack to use. Defaults to recommended stack `HEROKU_24`.","example":"HEROKU_24","default":"HEROKU_24"},"buildpackLocators":{"type":"array","items":{"type":"string","description":"Url or registry identifier of custom Buildpack.","example":"https://buildpack-registry.heroku.com/cnb/mars/create-react-app"},"description":"Array of custom Buildpacks to use.","default":[]},"buildContext":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*$","description":"The working directory to build in.","example":"/","default":"/"},"useCache":{"type":"boolean","description":"Should build dependencies be cached?","example":false,"default":false}},"additionalProperties":false}},"required":["buildpack"],"additionalProperties":false,"description":"Build from a Buildpack"}],"description":"Build engine"},"runtimeEnvironment":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"An object containing the runtime environment to set for the job. Keys may only contain letters, numbers, hyphens, forward slashes and dots.","example":{"variable1":"abcdef","variable2":"12345"},"default":{}},"runtimeFiles":{"type":"object","properties":{},"description":"Secret files as JSON object, encrypted at rest. File path must be absolute","example":{"/dir/fileName":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"buildArguments":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"An object containing the build arguments to set for the job. Keys may only contain letters, numbers, hyphens, forward slashes and dots.","example":{"variable1":"abcdef","variable2":"12345"},"default":{}},"buildFiles":{"type":"object","properties":{},"description":"Secret files as JSON object, encrypted at rest. File path must be absolute","example":{"/dir/fileName":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"dockerSecretMounts":{"type":"object","properties":{},"description":"Docker secret mount contents as JSON object, encrypted at rest. Must be a valid Docker secret mount identifier","example":{"example-secret-mount_1":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"healthChecks":{"type":"array","items":{"type":"object","properties":{"protocol":{"type":"string","enum":["HTTP","CMD","TCP"],"description":"The protocol to access the health check with.","example":"HTTP"},"type":{"type":"string","enum":["livenessProbe","readinessProbe","startupProbe"],"description":"The type of health check.","example":"readinessProbe"},"path":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*((\\?([a-zA-Z0-9-._]+(=[a-zA-Z0-9-._]+)?)*)(&([a-zA-Z0-9-._]+(=[a-zA-Z0-9-._]+)?)*)*)?$","description":"The path of the health check endpoint. Required when protocol is HTTP.","example":"/health-check"},"cmd":{"type":"string","description":"The command to run for the health check. Required when protocol is CMD"},"port":{"type":"integer","minimum":1,"description":"Port number for the health check endpoint. Required when protocol is HTTP.","example":8080},"initialDelaySeconds":{"type":"integer","minimum":1,"maximum":180,"description":"Initial delay, in seconds, before the health check is first run.","example":10},"periodSeconds":{"type":"integer","minimum":10,"maximum":600,"description":"The time between each check, in seconds.","example":60},"timeoutSeconds":{"type":"integer","minimum":1,"maximum":60,"description":"The time to wait for a response before marking the health check as a failure.","example":1},"failureThreshold":{"type":"integer","minimum":1,"maximum":255,"description":"The maximum number of allowed failures.","example":3},"successThreshold":{"type":"integer","minimum":1,"maximum":255,"description":"The number of successes required to mark the health check as a success.","example":1}},"required":["protocol","type","initialDelaySeconds","periodSeconds","timeoutSeconds","failureThreshold"],"additionalProperties":false,"description":"A health check object."},"description":"An array of health checks."},"backoffLimit":{"type":"integer","minimum":0,"description":"The number of attempts to rerun a job before it is marked as failed.","example":0},"runOnSourceChange":{"type":"string","enum":["never","cd-promote","always"],"description":"Configure when the job should be run if the source image changes.","example":"never","default":"never"},"activeDeadlineSeconds":{"type":"integer","minimum":1,"nullable":true,"description":"The maximum amount of time, in seconds, for a job to run before it is marked as failed.","example":600},"schedule":{"type":"string","nullable":true,"description":"The cron timer scheduling when to run the job.","example":"30 8 * * *"},"suspended":{"type":"boolean","description":"Whether the cron's automatic scheduling is suspended","example":false,"default":false},"concurrencyPolicy":{"type":"string","enum":["allow","forbid","replace"],"description":"Whether this job should run when another instance of the job is already running. `allow` will enable multiple instances of this job to run. `forbid` will keep the current instance of the job running and stop a new instance from being run. `replace` will terminate any currently running instance of the job and start a new one.","example":"forbid","default":"forbid"},"jobType":{"type":"string","enum":["cron"],"description":"Type of the job (manual or cron)","example":"cron"},"id":{"type":"string","description":"Identifier for the job","example":"example-job"},"appId":{"type":"string","description":"Full identifier used for job deployment","example":"/example-user/default-project/example-job"},"deployment":{"type":"object","properties":{"buildpack":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customProcess","customCommand","customEntrypointCustomCommand","originalEntrypointCustomCommand"],"description":"Type of buildpack run configuration"},"customProcess":{"type":"string","description":"Custom process which should be run. Required in case where `configType` is `customProcess`"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be run. Required in case where `configType` is `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be run. Required in case where `configType` is `customCommand`, `customEntrypointCustomCommand` or `originalEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of buildpack runtime"},"docker":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customEntrypoint","customCommand","customEntrypointCustomCommand"],"description":"Type of entrypoint & command override configuration","example":"default"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be used. Required in case where `configType` is `customEntrypoint` or `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be used. Required in case where `configType` is `customCommand` or `customEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of docker runtime"},"storage":{"type":"object","properties":{"useHdbStorage":{"type":"boolean"},"usePdSsdStorage":{"type":"boolean"},"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":1024,"description":"Ephemeral storage per container in MB","example":1024}},"additionalProperties":false},"shmSize":{"type":"integer","minimum":64,"description":"Configures the amount of available memory-backed disk space available to /dev/shm"}},"additionalProperties":false},"gpu":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"gpuType":{"type":"string"},"gpuCount":{"type":"integer"},"timesliced":{"type":"boolean"}},"required":["gpuType"],"additionalProperties":false}},"additionalProperties":false},"gracePeriodSeconds":{"type":"integer","minimum":15,"maximum":600,"description":"The 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."},"metadata":{"type":"object","properties":{"labels":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom labels for the workload."},"annotations":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom annotations for the workload as string or object."}},"additionalProperties":false,"description":"Allow setting custom labels and annotations for workloads."},"vcs":{"type":"object","properties":{"projectUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo to build.","example":"https://github.com/northflank/gatsby-with-northflank"},"projectType":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string","minLength":24,"maxLength":24,"description":"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 `vcsLinkId` is provided, Northflank will instead use your linked account with that ID."},"projectBranch":{"type":"string","description":"The name of the branch to use.","example":"master"}},"required":["projectUrl","projectType","projectBranch"],"additionalProperties":false},"external":{"type":"object","properties":{"imagePath":{"type":"string","pattern":"^(?:(?:https?:\\/\\/)?([a-zA-Z0-9\\-]+\\.[a-zA-Z0-9\\.\\-]+)(\\/v1)?)?(?:\\/)?([a-zA-Z/-9\\.\\-_]+)(?:\\:([a-zA-Z/-9\\.\\-_\\:]+)|\\@([a-zA-Z/-9\\.\\-_\\:]+))$","description":"Image to be deployed. When not deploying from Dockerhub the URL must be specified.","example":"nginx:latest"},"credentials":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"ID of the saved credentials to use to access this external image.","example":"example-credentials"}},"required":["imagePath"],"additionalProperties":false},"internal":{"type":"object","properties":{"id":{"anyOf":[{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":54,"example":"example-build-service"},{"type":"string","example":"example-project/example-build-service"}],"description":"ID of the build service to deploy"},"branch":{"type":"string","description":"Branch to deploy","example":"master"},"buildSHA":{"oneOf":[{"type":"string","minLength":40,"maxLength":40,"description":"A commit sha."},{"type":"string","enum":["latest"],"description":"Latest commit."}],"description":"Commit SHA to deploy, or 'latest' to deploy the most recent commit","example":"latest"},"buildId":{"type":"string","description":"ID of the build that should be deployed","example":"premium-guide-6393"}},"additionalProperties":false},"imageUrl":{"type":"string","description":"Image registry url of the deployed image."}},"additionalProperties":false,"default":{}},"status":{"type":"object","properties":{"build":{"type":"object","properties":{"status":{"type":"string","enum":["QUEUED","PENDING","UNSCHEDULABLE","STARTING","CLONING","BUILDING","UPLOADING","ABORTED","FAILURE","SUBMISSION_FAILURE","SUCCESS","CRASHED","IN_PROGRESS"],"description":"The current status of the build.","example":"SUCCESS"},"lastTransitionTime":{"type":"string","format":"date-time","description":"The timestamp of when the build reached this status.","example":"2021-11-29T11:47:16.624Z"}},"required":["status"],"additionalProperties":false,"description":"Details about the status of the most recent build."}},"additionalProperties":false,"description":"Details about the current job status."},"cluster":{"type":"object","properties":{"id":{"type":"string","description":"The id of the cluster associated with this project.","example":"nf-europe-west"},"name":{"type":"string","description":"The name of the cluster associated with this project.","example":"nf-europe-west"},"namespace":{"type":"string","description":"Namespace this resource is located within on the cluster.","example":"ns-8zy2mcjh9zn2"},"loadBalancers":{"type":"array","items":{"type":"string","example":"lb.659200800000000000000000.northflank.com"},"description":"Load balancer DNS for the cluster."}},"required":["id","name"],"additionalProperties":false,"description":"Cluster information"},"createdAt":{"type":"string","format":"date-time","description":"time of creation"},"updatedAt":{"type":"string","format":"date-time","description":"time of update"}},"required":["name","billing","backoffLimit","jobType","id","appId","status","cluster"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Jobs","project"],"security":[],"deprecated":true,"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":52,"description":"The name of the job.","example":"Example Job"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"A description of the job.","example":"A job description"},"stageId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"infrastructure":{"type":"object","properties":{"architecture":{"type":"string","enum":["x86","arm"]}},"additionalProperties":false},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"billing":{"type":"object","properties":{"buildPlan":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The ID of the build plan to use.","example":"nf-compute-200-8"},"deploymentPlan":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The ID of the deployment plan to use.","example":"nf-compute-20"},"gpu":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"gpuType":{"type":"string"},"gpuCount":{"type":"integer"},"timesliced":{"type":"boolean"}},"required":["gpuType"],"additionalProperties":false}},"additionalProperties":false}},"required":["deploymentPlan"],"additionalProperties":false},"deployment":{"oneOf":[{"type":"object","properties":{"buildpack":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customProcess","customCommand","customEntrypointCustomCommand","originalEntrypointCustomCommand"],"description":"Type of buildpack run configuration"},"customProcess":{"type":"string","description":"Custom process which should be run. Required in case where `configType` is `customProcess`"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be run. Required in case where `configType` is `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be run. Required in case where `configType` is `customCommand`, `customEntrypointCustomCommand` or `originalEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of buildpack runtime"},"docker":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customEntrypoint","customCommand","customEntrypointCustomCommand"],"description":"Type of entrypoint & command override configuration","example":"default"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be used. Required in case where `configType` is `customEntrypoint` or `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be used. Required in case where `configType` is `customCommand` or `customEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of docker runtime"},"storage":{"type":"object","properties":{"useHdbStorage":{"type":"boolean"},"usePdSsdStorage":{"type":"boolean"},"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":1024,"description":"Ephemeral storage per container in MB","example":1024}},"additionalProperties":false},"shmSize":{"type":"integer","minimum":64,"description":"Configures the amount of available memory-backed disk space available to /dev/shm"}},"additionalProperties":false},"gpu":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"gpuType":{"type":"string"},"gpuCount":{"type":"integer"},"timesliced":{"type":"boolean"}},"required":["gpuType"],"additionalProperties":false}},"additionalProperties":false},"gracePeriodSeconds":{"type":"integer","minimum":15,"maximum":600,"description":"The 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."},"metadata":{"type":"object","properties":{"labels":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom labels for the workload."},"annotations":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom annotations for the workload as string or object."}},"additionalProperties":false,"description":"Allow setting custom labels and annotations for workloads."},"vcs":{"type":"object","properties":{"projectUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo to build.","example":"https://github.com/northflank/gatsby-with-northflank"},"projectType":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string","minLength":24,"maxLength":24,"description":"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 `vcsLinkId` is provided, Northflank will instead use your linked account with that ID."},"projectBranch":{"type":"string","description":"The name of the branch to use.","example":"master"}},"required":["projectUrl","projectType","projectBranch"],"additionalProperties":false}},"required":["vcs"],"additionalProperties":false,"description":"Deploy from version control"},{"type":"object","properties":{"buildpack":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customProcess","customCommand","customEntrypointCustomCommand","originalEntrypointCustomCommand"],"description":"Type of buildpack run configuration"},"customProcess":{"type":"string","description":"Custom process which should be run. Required in case where `configType` is `customProcess`"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be run. Required in case where `configType` is `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be run. Required in case where `configType` is `customCommand`, `customEntrypointCustomCommand` or `originalEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of buildpack runtime"},"docker":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customEntrypoint","customCommand","customEntrypointCustomCommand"],"description":"Type of entrypoint & command override configuration","example":"default"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be used. Required in case where `configType` is `customEntrypoint` or `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be used. Required in case where `configType` is `customCommand` or `customEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of docker runtime"},"storage":{"type":"object","properties":{"useHdbStorage":{"type":"boolean"},"usePdSsdStorage":{"type":"boolean"},"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":1024,"description":"Ephemeral storage per container in MB","example":1024}},"additionalProperties":false},"shmSize":{"type":"integer","minimum":64,"description":"Configures the amount of available memory-backed disk space available to /dev/shm"}},"additionalProperties":false},"gpu":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"gpuType":{"type":"string"},"gpuCount":{"type":"integer"},"timesliced":{"type":"boolean"}},"required":["gpuType"],"additionalProperties":false}},"additionalProperties":false},"gracePeriodSeconds":{"type":"integer","minimum":15,"maximum":600,"description":"The 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."},"metadata":{"type":"object","properties":{"labels":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom labels for the workload."},"annotations":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom annotations for the workload as string or object."}},"additionalProperties":false,"description":"Allow setting custom labels and annotations for workloads."},"external":{"type":"object","properties":{"imagePath":{"type":"string","pattern":"^(?:(?:https?:\\/\\/)?([a-zA-Z0-9\\-]+\\.[a-zA-Z0-9\\.\\-]+)(\\/v1)?)?(?:\\/)?([a-zA-Z/-9\\.\\-_]+)(?:\\:([a-zA-Z/-9\\.\\-_\\:]+)|\\@([a-zA-Z/-9\\.\\-_\\:]+))$","description":"Image to be deployed. When not deploying from Dockerhub the URL must be specified.","example":"nginx:latest"},"credentials":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"ID of the saved credentials to use to access this external image.","example":"example-credentials"}},"required":["imagePath"],"additionalProperties":false}},"required":["external"],"additionalProperties":false,"description":"Deploy from an external image"},{"type":"object","properties":{"buildpack":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customProcess","customCommand","customEntrypointCustomCommand","originalEntrypointCustomCommand"],"description":"Type of buildpack run configuration"},"customProcess":{"type":"string","description":"Custom process which should be run. Required in case where `configType` is `customProcess`"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be run. Required in case where `configType` is `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be run. Required in case where `configType` is `customCommand`, `customEntrypointCustomCommand` or `originalEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of buildpack runtime"},"docker":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customEntrypoint","customCommand","customEntrypointCustomCommand"],"description":"Type of entrypoint & command override configuration","example":"default"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be used. Required in case where `configType` is `customEntrypoint` or `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be used. Required in case where `configType` is `customCommand` or `customEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of docker runtime"},"storage":{"type":"object","properties":{"useHdbStorage":{"type":"boolean"},"usePdSsdStorage":{"type":"boolean"},"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":1024,"description":"Ephemeral storage per container in MB","example":1024}},"additionalProperties":false},"shmSize":{"type":"integer","minimum":64,"description":"Configures the amount of available memory-backed disk space available to /dev/shm"}},"additionalProperties":false},"gpu":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"gpuType":{"type":"string"},"gpuCount":{"type":"integer"},"timesliced":{"type":"boolean"}},"required":["gpuType"],"additionalProperties":false}},"additionalProperties":false},"gracePeriodSeconds":{"type":"integer","minimum":15,"maximum":600,"description":"The 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."},"metadata":{"type":"object","properties":{"labels":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom labels for the workload."},"annotations":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom annotations for the workload as string or object."}},"additionalProperties":false,"description":"Allow setting custom labels and annotations for workloads."},"internal":{"type":"object","properties":{"id":{"anyOf":[{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":54,"example":"example-build-service"},{"type":"string","example":"example-project/example-build-service"}],"description":"ID of the build service to deploy"},"branch":{"type":"string","description":"Branch to deploy","example":"master"},"buildSHA":{"oneOf":[{"type":"string","minLength":40,"maxLength":40,"description":"A commit sha."},{"type":"string","enum":["latest"],"description":"Latest commit."}],"description":"Commit SHA to deploy, or 'latest' to deploy the most recent commit","example":"latest"},"buildId":{"type":"string","description":"ID of the build that should be deployed","example":"premium-guide-6393"}},"additionalProperties":false}},"required":["internal"],"additionalProperties":false,"description":"Deploy from a Northflank build service"},{"type":"object","properties":{},"additionalProperties":false,"description":"Choose later"}],"description":"Where to deploy the job from."},"disabledCI":{"type":"boolean","description":"Whether CI should be disabled. Only relevant for jobs deploying directly from version control.","default":false},"buildConfiguration":{"type":"object","properties":{"pathIgnoreRules":{"type":"array","items":{"type":"string","maxLength":260,"description":"A path ignore rule, following `.gitignore` syntax. For example, `*.md` will ignore all files ending with `.md`.","example":"README.md"},"maxItems":200,"description":"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."},"isAllowList":{"type":"boolean","description":"If `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`.","example":false},"ciIgnoreFlagsEnabled":{"type":"boolean","description":"If `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":{"type":"array","items":{"type":"string","maxLength":72,"description":"A commit ignore flag.","example":"[skip ci]"},"maxItems":200,"description":"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]\"]`","example":["[skip ci]","[ci skip]","[no ci]","[skip nf]","[nf skip]","[northflank skip]","[skip northflank]"]},"dockerfileTarget":{"type":"string","description":"If your Dockerfile contains multiple build stages, you can specify the target stage by entering its name here."},"dockerCredentials":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The ID of the docker credentials to use.","example":"example-docker-credential"}},"includeGitFolder":{"type":"boolean","description":"Include .git folder inside the build context"},"fullGitClone":{"type":"boolean","description":"Include the entire git history as part of the .git folder. Only relevant if \"includeGitFolder\" is set."},"enableGitLfs":{"type":"boolean","description":"Enable Git LFS support for the build"},"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false}},"additionalProperties":false,"default":{"pathIgnoreRules":[],"isAllowList":false,"ciIgnoreFlagsEnabled":false}},"buildSettings":{"oneOf":[{"type":"object","properties":{"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false},"dockerfile":{"type":"object","properties":{"useCache":{"type":"boolean","description":"DEPRECATED: This field will be removed in the near future and currently has no effect."},"buildEngine":{"type":"string","enum":["buildkit","kaniko"],"description":"Build engine to use. Defaults to recommended build engine `buildkit`","example":"buildkit","default":"buildkit"},"dockerFilePath":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]+$","description":"The file path of the Dockerfile.","example":"/Dockerfile"},"dockerWorkDir":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*$","description":"The working directory of the Dockerfile.","example":"/"},"buildkit":{"type":"object","properties":{"useCache":{"type":"boolean","description":"Use persistent storage to cache build layers.","example":true,"default":false},"cacheStorageSize":{"type":"integer","description":"The amount of persistent storage available to each build in MB.","example":32768},"useInternalCache":{"type":"boolean","description":"DEPRECATED: This field will be removed in the near future.","default":false},"internalCacheStorage":{"type":"number","format":"float","description":"DEPRECATED: This field will be removed in the near future."}},"additionalProperties":false}},"required":["dockerFilePath","dockerWorkDir"],"additionalProperties":false}},"required":["dockerfile"],"additionalProperties":false,"description":"Build from a Dockerfile"},{"type":"object","properties":{"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false},"buildpack":{"type":"object","properties":{"builder":{"type":"string","enum":["HEROKU_24","HEROKU_22","HEROKU_22_CLASSIC","HEROKU_20","HEROKU_18","GOOGLE_22","GOOGLE_V1","CNB_ALPINE","CNB_BIONIC","PAKETO_JAMMY_TINY","PAKETO_JAMMY_BASE","PAKETO_JAMMY_FULL","PAKETO_TINY","PAKETO_BASE","PAKETO_FULL"],"description":"Buildpack stack to use. Defaults to recommended stack `HEROKU_24`.","example":"HEROKU_24","default":"HEROKU_24"},"buildpackLocators":{"type":"array","items":{"type":"string","description":"Url or registry identifier of custom Buildpack.","example":"https://buildpack-registry.heroku.com/cnb/mars/create-react-app"},"description":"Array of custom Buildpacks to use.","default":[]},"buildContext":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*$","description":"The working directory to build in.","example":"/","default":"/"},"useCache":{"type":"boolean","description":"Should build dependencies be cached?","example":false,"default":false}},"additionalProperties":false}},"required":["buildpack"],"additionalProperties":false,"description":"Build from a Buildpack"}],"description":"Build engine"},"runtimeEnvironment":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"An object containing the runtime environment to set for the job. Keys may only contain letters, numbers, hyphens, forward slashes and dots.","example":{"variable1":"abcdef","variable2":"12345"},"default":{}},"runtimeFiles":{"type":"object","properties":{},"description":"Secret files as JSON object, encrypted at rest. File path must be absolute","example":{"/dir/fileName":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"buildArguments":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"An object containing the build arguments to set for the job. Keys may only contain letters, numbers, hyphens, forward slashes and dots.","example":{"variable1":"abcdef","variable2":"12345"},"default":{}},"buildFiles":{"type":"object","properties":{},"description":"Secret files as JSON object, encrypted at rest. File path must be absolute","example":{"/dir/fileName":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"dockerSecretMounts":{"type":"object","properties":{},"description":"Docker secret mount contents as JSON object, encrypted at rest. Must be a valid Docker secret mount identifier","example":{"example-secret-mount_1":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"healthChecks":{"type":"array","items":{"type":"object","properties":{"protocol":{"type":"string","enum":["HTTP","CMD","TCP"],"description":"The protocol to access the health check with.","example":"HTTP"},"type":{"type":"string","enum":["livenessProbe","readinessProbe","startupProbe"],"description":"The type of health check.","example":"readinessProbe"},"path":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*((\\?([a-zA-Z0-9-._]+(=[a-zA-Z0-9-._]+)?)*)(&([a-zA-Z0-9-._]+(=[a-zA-Z0-9-._]+)?)*)*)?$","description":"The path of the health check endpoint. Required when protocol is HTTP.","example":"/health-check"},"cmd":{"type":"string","description":"The command to run for the health check. Required when protocol is CMD"},"port":{"type":"integer","minimum":1,"description":"Port number for the health check endpoint. Required when protocol is HTTP.","example":8080},"initialDelaySeconds":{"type":"integer","minimum":1,"maximum":180,"description":"Initial delay, in seconds, before the health check is first run.","example":10},"periodSeconds":{"type":"integer","minimum":10,"maximum":600,"description":"The time between each check, in seconds.","example":60},"timeoutSeconds":{"type":"integer","minimum":1,"maximum":60,"description":"The time to wait for a response before marking the health check as a failure.","example":1},"failureThreshold":{"type":"integer","minimum":1,"maximum":255,"description":"The maximum number of allowed failures.","example":3},"successThreshold":{"type":"integer","minimum":1,"maximum":255,"description":"The number of successes required to mark the health check as a success.","example":1}},"required":["protocol","type","initialDelaySeconds","periodSeconds","timeoutSeconds","failureThreshold"],"additionalProperties":false,"description":"A health check object."},"description":"An array of health checks."},"backoffLimit":{"type":"integer","minimum":0,"description":"The number of attempts to rerun a job before it is marked as failed.","example":0},"runOnSourceChange":{"type":"string","enum":["never","cd-promote","always"],"description":"Configure when the job should be run if the source image changes.","example":"never","default":"never"},"activeDeadlineSeconds":{"type":"integer","minimum":1,"nullable":true,"description":"The maximum amount of time, in seconds, for a job to run before it is marked as failed.","example":600},"schedule":{"type":"string","pattern":"(@(annually|yearly|monthly|weekly|daily|hourly))|((((\\d+,)+\\d+|(\\d+(\\/|-)\\d+)|\\d+|\\*) ?){5})","nullable":true,"description":"The cron timer scheduling when to run the job.","example":"30 8 * * *"},"suspended":{"type":"boolean","description":"Whether the cron's automatic scheduling is suspended","example":false,"default":false},"concurrencyPolicy":{"type":"string","enum":["allow","forbid","replace"],"description":"Whether this job should run when another instance of the job is already running. `allow` will enable multiple instances of this job to run. `forbid` will keep the current instance of the job running and stop a new instance from being run. `replace` will terminate any currently running instance of the job and start a new one.","example":"forbid","default":"forbid"}},"required":["name","billing","backoffLimit"],"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Project > Jobs > General > Create","x-nf-team-scoped":true,"x-nf-subheading":"put job","x-nf-cli-command":["put","job","cron"],"x-nf-deprecation-replacement":"/jobs/put-job","x-nf-deprecation-message":"Requests should instead use the relevant type-agnostic job endpoint."},"v1-projects--projectId--jobs-cron--jobId--patch":{"operationId":"patchProjectsJobsCronJobid","summary":"Patch cron job","description":"Updates a cron job","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"jobId","type":"string","required":true,"description":"ID of the job","example":"example-job","in":"path","schema":{"name":"jobId","type":"string","required":true,"description":"ID of the job","example":"example-job","in":"path"}}],"responses":{"200":{"description":"Details about the updated job.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":52,"description":"The name of the job.","example":"Example Job"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"A description of the job.","example":"A job description"},"stageId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"infrastructure":{"type":"object","properties":{"architecture":{"type":"string","enum":["x86","arm"]}},"additionalProperties":false},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"billing":{"type":"object","properties":{"buildPlan":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The ID of the build plan to use.","example":"nf-compute-200-8"},"deploymentPlan":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The ID of the deployment plan to use.","example":"nf-compute-20"},"gpu":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"gpuType":{"type":"string"},"gpuCount":{"type":"integer"},"timesliced":{"type":"boolean"}},"required":["gpuType"],"additionalProperties":false}},"additionalProperties":false}},"required":["deploymentPlan"],"additionalProperties":false},"disabledCI":{"type":"boolean","description":"Whether CI should be disabled. Only relevant for jobs deploying directly from version control.","default":false},"buildConfiguration":{"type":"object","properties":{"pathIgnoreRules":{"type":"array","items":{"type":"string","maxLength":260,"description":"A path ignore rule, following `.gitignore` syntax. For example, `*.md` will ignore all files ending with `.md`.","example":"README.md"},"maxItems":200,"description":"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."},"isAllowList":{"type":"boolean","description":"If `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`.","example":false},"ciIgnoreFlagsEnabled":{"type":"boolean","description":"If `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":{"type":"array","items":{"type":"string","maxLength":72,"description":"A commit ignore flag.","example":"[skip ci]"},"maxItems":200,"description":"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]\"]`","example":["[skip ci]","[ci skip]","[no ci]","[skip nf]","[nf skip]","[northflank skip]","[skip northflank]"]},"dockerfileTarget":{"type":"string","description":"If your Dockerfile contains multiple build stages, you can specify the target stage by entering its name here."},"dockerCredentials":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The ID of the docker credentials to use.","example":"example-docker-credential"}},"includeGitFolder":{"type":"boolean","description":"Include .git folder inside the build context"},"fullGitClone":{"type":"boolean","description":"Include the entire git history as part of the .git folder. Only relevant if \"includeGitFolder\" is set."},"enableGitLfs":{"type":"boolean","description":"Enable Git LFS support for the build"},"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false}},"additionalProperties":false,"default":{"pathIgnoreRules":[],"isAllowList":false,"ciIgnoreFlagsEnabled":false}},"buildSettings":{"oneOf":[{"type":"object","properties":{"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false},"dockerfile":{"type":"object","properties":{"useCache":{"type":"boolean","description":"DEPRECATED: This field will be removed in the near future and currently has no effect."},"buildEngine":{"type":"string","enum":["buildkit","kaniko"],"description":"Build engine to use. Defaults to recommended build engine `buildkit`","example":"buildkit","default":"buildkit"},"dockerFilePath":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]+$","description":"The file path of the Dockerfile.","example":"/Dockerfile"},"dockerWorkDir":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*$","description":"The working directory of the Dockerfile.","example":"/"},"buildkit":{"type":"object","properties":{"useCache":{"type":"boolean","description":"Use persistent storage to cache build layers.","example":true,"default":false},"cacheStorageSize":{"type":"integer","description":"The amount of persistent storage available to each build in MB.","example":32768},"useInternalCache":{"type":"boolean","description":"DEPRECATED: This field will be removed in the near future.","default":false},"internalCacheStorage":{"type":"number","format":"float","description":"DEPRECATED: This field will be removed in the near future."}},"additionalProperties":false}},"required":["dockerFilePath","dockerWorkDir"],"additionalProperties":false}},"required":["dockerfile"],"additionalProperties":false,"description":"Build from a Dockerfile"},{"type":"object","properties":{"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false},"buildpack":{"type":"object","properties":{"builder":{"type":"string","enum":["HEROKU_24","HEROKU_22","HEROKU_22_CLASSIC","HEROKU_20","HEROKU_18","GOOGLE_22","GOOGLE_V1","CNB_ALPINE","CNB_BIONIC","PAKETO_JAMMY_TINY","PAKETO_JAMMY_BASE","PAKETO_JAMMY_FULL","PAKETO_TINY","PAKETO_BASE","PAKETO_FULL"],"description":"Buildpack stack to use. Defaults to recommended stack `HEROKU_24`.","example":"HEROKU_24","default":"HEROKU_24"},"buildpackLocators":{"type":"array","items":{"type":"string","description":"Url or registry identifier of custom Buildpack.","example":"https://buildpack-registry.heroku.com/cnb/mars/create-react-app"},"description":"Array of custom Buildpacks to use.","default":[]},"buildContext":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*$","description":"The working directory to build in.","example":"/","default":"/"},"useCache":{"type":"boolean","description":"Should build dependencies be cached?","example":false,"default":false}},"additionalProperties":false}},"required":["buildpack"],"additionalProperties":false,"description":"Build from a Buildpack"}],"description":"Build engine"},"runtimeEnvironment":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"An object containing the runtime environment to set for the job. Keys may only contain letters, numbers, hyphens, forward slashes and dots.","example":{"variable1":"abcdef","variable2":"12345"},"default":{}},"runtimeFiles":{"type":"object","properties":{},"description":"Secret files as JSON object, encrypted at rest. File path must be absolute","example":{"/dir/fileName":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"buildArguments":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"An object containing the build arguments to set for the job. Keys may only contain letters, numbers, hyphens, forward slashes and dots.","example":{"variable1":"abcdef","variable2":"12345"},"default":{}},"buildFiles":{"type":"object","properties":{},"description":"Secret files as JSON object, encrypted at rest. File path must be absolute","example":{"/dir/fileName":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"dockerSecretMounts":{"type":"object","properties":{},"description":"Docker secret mount contents as JSON object, encrypted at rest. Must be a valid Docker secret mount identifier","example":{"example-secret-mount_1":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"healthChecks":{"type":"array","items":{"type":"object","properties":{"protocol":{"type":"string","enum":["HTTP","CMD","TCP"],"description":"The protocol to access the health check with.","example":"HTTP"},"type":{"type":"string","enum":["livenessProbe","readinessProbe","startupProbe"],"description":"The type of health check.","example":"readinessProbe"},"path":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*((\\?([a-zA-Z0-9-._]+(=[a-zA-Z0-9-._]+)?)*)(&([a-zA-Z0-9-._]+(=[a-zA-Z0-9-._]+)?)*)*)?$","description":"The path of the health check endpoint. Required when protocol is HTTP.","example":"/health-check"},"cmd":{"type":"string","description":"The command to run for the health check. Required when protocol is CMD"},"port":{"type":"integer","minimum":1,"description":"Port number for the health check endpoint. Required when protocol is HTTP.","example":8080},"initialDelaySeconds":{"type":"integer","minimum":1,"maximum":180,"description":"Initial delay, in seconds, before the health check is first run.","example":10},"periodSeconds":{"type":"integer","minimum":10,"maximum":600,"description":"The time between each check, in seconds.","example":60},"timeoutSeconds":{"type":"integer","minimum":1,"maximum":60,"description":"The time to wait for a response before marking the health check as a failure.","example":1},"failureThreshold":{"type":"integer","minimum":1,"maximum":255,"description":"The maximum number of allowed failures.","example":3},"successThreshold":{"type":"integer","minimum":1,"maximum":255,"description":"The number of successes required to mark the health check as a success.","example":1}},"required":["protocol","type","initialDelaySeconds","periodSeconds","timeoutSeconds","failureThreshold"],"additionalProperties":false,"description":"A health check object."},"description":"An array of health checks."},"backoffLimit":{"type":"integer","minimum":0,"description":"The number of attempts to rerun a job before it is marked as failed.","example":0},"runOnSourceChange":{"type":"string","enum":["never","cd-promote","always"],"description":"Configure when the job should be run if the source image changes.","example":"never","default":"never"},"activeDeadlineSeconds":{"type":"integer","minimum":1,"nullable":true,"description":"The maximum amount of time, in seconds, for a job to run before it is marked as failed.","example":600},"schedule":{"type":"string","nullable":true,"description":"The cron timer scheduling when to run the job.","example":"30 8 * * *"},"suspended":{"type":"boolean","description":"Whether the cron's automatic scheduling is suspended","example":false,"default":false},"concurrencyPolicy":{"type":"string","enum":["allow","forbid","replace"],"description":"Whether this job should run when another instance of the job is already running. `allow` will enable multiple instances of this job to run. `forbid` will keep the current instance of the job running and stop a new instance from being run. `replace` will terminate any currently running instance of the job and start a new one.","example":"forbid","default":"forbid"},"jobType":{"type":"string","enum":["cron"],"description":"Type of the job (manual or cron)","example":"cron"},"id":{"type":"string","description":"Identifier for the job","example":"example-job"},"appId":{"type":"string","description":"Full identifier used for job deployment","example":"/example-user/default-project/example-job"},"deployment":{"type":"object","properties":{"buildpack":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customProcess","customCommand","customEntrypointCustomCommand","originalEntrypointCustomCommand"],"description":"Type of buildpack run configuration"},"customProcess":{"type":"string","description":"Custom process which should be run. Required in case where `configType` is `customProcess`"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be run. Required in case where `configType` is `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be run. Required in case where `configType` is `customCommand`, `customEntrypointCustomCommand` or `originalEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of buildpack runtime"},"docker":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customEntrypoint","customCommand","customEntrypointCustomCommand"],"description":"Type of entrypoint & command override configuration","example":"default"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be used. Required in case where `configType` is `customEntrypoint` or `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be used. Required in case where `configType` is `customCommand` or `customEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of docker runtime"},"storage":{"type":"object","properties":{"useHdbStorage":{"type":"boolean"},"usePdSsdStorage":{"type":"boolean"},"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":1024,"description":"Ephemeral storage per container in MB","example":1024}},"additionalProperties":false},"shmSize":{"type":"integer","minimum":64,"description":"Configures the amount of available memory-backed disk space available to /dev/shm"}},"additionalProperties":false},"gpu":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"gpuType":{"type":"string"},"gpuCount":{"type":"integer"},"timesliced":{"type":"boolean"}},"required":["gpuType"],"additionalProperties":false}},"additionalProperties":false},"gracePeriodSeconds":{"type":"integer","minimum":15,"maximum":600,"description":"The 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."},"metadata":{"type":"object","properties":{"labels":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom labels for the workload."},"annotations":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom annotations for the workload as string or object."}},"additionalProperties":false,"description":"Allow setting custom labels and annotations for workloads."},"vcs":{"type":"object","properties":{"projectUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo to build.","example":"https://github.com/northflank/gatsby-with-northflank"},"projectType":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string","minLength":24,"maxLength":24,"description":"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 `vcsLinkId` is provided, Northflank will instead use your linked account with that ID."},"projectBranch":{"type":"string","description":"The name of the branch to use.","example":"master"}},"required":["projectUrl","projectType","projectBranch"],"additionalProperties":false},"external":{"type":"object","properties":{"imagePath":{"type":"string","pattern":"^(?:(?:https?:\\/\\/)?([a-zA-Z0-9\\-]+\\.[a-zA-Z0-9\\.\\-]+)(\\/v1)?)?(?:\\/)?([a-zA-Z/-9\\.\\-_]+)(?:\\:([a-zA-Z/-9\\.\\-_\\:]+)|\\@([a-zA-Z/-9\\.\\-_\\:]+))$","description":"Image to be deployed. When not deploying from Dockerhub the URL must be specified.","example":"nginx:latest"},"credentials":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"ID of the saved credentials to use to access this external image.","example":"example-credentials"}},"required":["imagePath"],"additionalProperties":false},"internal":{"type":"object","properties":{"id":{"anyOf":[{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":54,"example":"example-build-service"},{"type":"string","example":"example-project/example-build-service"}],"description":"ID of the build service to deploy"},"branch":{"type":"string","description":"Branch to deploy","example":"master"},"buildSHA":{"oneOf":[{"type":"string","minLength":40,"maxLength":40,"description":"A commit sha."},{"type":"string","enum":["latest"],"description":"Latest commit."}],"description":"Commit SHA to deploy, or 'latest' to deploy the most recent commit","example":"latest"},"buildId":{"type":"string","description":"ID of the build that should be deployed","example":"premium-guide-6393"}},"additionalProperties":false},"imageUrl":{"type":"string","description":"Image registry url of the deployed image."}},"additionalProperties":false,"default":{}},"status":{"type":"object","properties":{"build":{"type":"object","properties":{"status":{"type":"string","enum":["QUEUED","PENDING","UNSCHEDULABLE","STARTING","CLONING","BUILDING","UPLOADING","ABORTED","FAILURE","SUBMISSION_FAILURE","SUCCESS","CRASHED","IN_PROGRESS"],"description":"The current status of the build.","example":"SUCCESS"},"lastTransitionTime":{"type":"string","format":"date-time","description":"The timestamp of when the build reached this status.","example":"2021-11-29T11:47:16.624Z"}},"required":["status"],"additionalProperties":false,"description":"Details about the status of the most recent build."}},"additionalProperties":false,"description":"Details about the current job status."},"cluster":{"type":"object","properties":{"id":{"type":"string","description":"The id of the cluster associated with this project.","example":"nf-europe-west"},"name":{"type":"string","description":"The name of the cluster associated with this project.","example":"nf-europe-west"},"namespace":{"type":"string","description":"Namespace this resource is located within on the cluster.","example":"ns-8zy2mcjh9zn2"},"loadBalancers":{"type":"array","items":{"type":"string","example":"lb.659200800000000000000000.northflank.com"},"description":"Load balancer DNS for the cluster."}},"required":["id","name"],"additionalProperties":false,"description":"Cluster information"},"createdAt":{"type":"string","format":"date-time","description":"time of creation"},"updatedAt":{"type":"string","format":"date-time","description":"time of update"}},"required":["name","billing","backoffLimit","jobType","id","appId","status","cluster"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Jobs","project"],"security":[],"deprecated":true,"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"A description of the job.","example":"A job description"},"stageId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"nullable":true},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"billing":{"type":"object","properties":{"buildPlan":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The ID of the build plan to use.","example":"nf-compute-200-8"},"deploymentPlan":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The ID of the deployment plan to use.","example":"nf-compute-20"},"gpu":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"gpuType":{"type":"string"},"gpuCount":{"type":"integer"},"timesliced":{"type":"boolean"}},"additionalProperties":false}},"additionalProperties":false}},"additionalProperties":false},"disabledCI":{"type":"boolean","description":"Whether CI should be disabled. Only relevant for jobs deploying directly from version control."},"buildConfiguration":{"type":"object","properties":{"pathIgnoreRules":{"type":"array","items":{"type":"string","maxLength":260,"description":"A path ignore rule, following `.gitignore` syntax. For example, `*.md` will ignore all files ending with `.md`.","example":"README.md"},"maxItems":200,"description":"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."},"isAllowList":{"type":"boolean","description":"If `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`.","example":false},"ciIgnoreFlagsEnabled":{"type":"boolean","description":"If `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":{"type":"array","items":{"type":"string","maxLength":72,"description":"A commit ignore flag.","example":"[skip ci]"},"maxItems":200,"description":"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]\"]`","example":["[skip ci]","[ci skip]","[no ci]","[skip nf]","[nf skip]","[northflank skip]","[skip northflank]"]},"dockerfileTarget":{"type":"string","description":"If your Dockerfile contains multiple build stages, you can specify the target stage by entering its name here."},"dockerCredentials":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The ID of the docker credentials to use.","example":"example-docker-credential"}},"includeGitFolder":{"type":"boolean","description":"Include .git folder inside the build context"},"fullGitClone":{"type":"boolean","description":"Include the entire git history as part of the .git folder. Only relevant if \"includeGitFolder\" is set."},"enableGitLfs":{"type":"boolean","description":"Enable Git LFS support for the build"},"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false}},"additionalProperties":false},"buildSettings":{"type":"object","properties":{"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false},"dockerfile":{"type":"object","properties":{"useCache":{"type":"boolean","description":"DEPRECATED: This field will be removed in the near future and currently has no effect."},"buildEngine":{"type":"string","enum":["buildkit","kaniko"],"description":"Build engine to use. Defaults to recommended build engine `buildkit`","example":"buildkit"},"dockerFilePath":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]+$","description":"The file path of the Dockerfile.","example":"/Dockerfile"},"dockerWorkDir":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*$","description":"The working directory of the Dockerfile.","example":"/"},"buildkit":{"type":"object","properties":{"useCache":{"type":"boolean","description":"Use persistent storage to cache build layers.","example":true},"cacheStorageSize":{"type":"integer","description":"The amount of persistent storage available to each build in MB.","example":32768},"useInternalCache":{"type":"boolean","description":"DEPRECATED: This field will be removed in the near future."},"internalCacheStorage":{"type":"number","format":"float","description":"DEPRECATED: This field will be removed in the near future."}},"additionalProperties":false}},"additionalProperties":false},"buildpack":{"type":"object","properties":{"builder":{"type":"string","enum":["HEROKU_24","HEROKU_22","HEROKU_22_CLASSIC","HEROKU_20","HEROKU_18","GOOGLE_22","GOOGLE_V1","CNB_ALPINE","CNB_BIONIC","PAKETO_JAMMY_TINY","PAKETO_JAMMY_BASE","PAKETO_JAMMY_FULL","PAKETO_TINY","PAKETO_BASE","PAKETO_FULL"],"description":"Buildpack stack to use. Defaults to recommended stack `HEROKU_24`.","example":"HEROKU_24"},"buildpackLocators":{"type":"array","items":{"type":"string","description":"Url or registry identifier of custom Buildpack.","example":"https://buildpack-registry.heroku.com/cnb/mars/create-react-app"},"description":"Array of custom Buildpacks to use."},"buildContext":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*$","description":"The working directory to build in.","example":"/"},"useCache":{"type":"boolean","description":"Should build dependencies be cached?","example":false}},"additionalProperties":false}},"additionalProperties":false},"runtimeEnvironment":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"An object containing the runtime environment to set for the job. Keys may only contain letters, numbers, hyphens, forward slashes and dots.","example":{"variable1":"abcdef","variable2":"12345"}},"runtimeFiles":{"type":"object","properties":{},"description":"Secret files as JSON object, encrypted at rest. File path must be absolute","example":{"/dir/fileName":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"buildArguments":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"An object containing the build arguments to set for the job. Keys may only contain letters, numbers, hyphens, forward slashes and dots.","example":{"variable1":"abcdef","variable2":"12345"}},"buildFiles":{"type":"object","properties":{},"description":"Secret files as JSON object, encrypted at rest. File path must be absolute","example":{"/dir/fileName":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"dockerSecretMounts":{"type":"object","properties":{},"description":"Docker secret mount contents as JSON object, encrypted at rest. Must be a valid Docker secret mount identifier","example":{"example-secret-mount_1":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"healthChecks":{"type":"array","items":{"type":"object","properties":{"protocol":{"type":"string","enum":["HTTP","CMD","TCP"],"description":"The protocol to access the health check with.","example":"HTTP"},"type":{"type":"string","enum":["livenessProbe","readinessProbe","startupProbe"],"description":"The type of health check.","example":"readinessProbe"},"path":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*((\\?([a-zA-Z0-9-._]+(=[a-zA-Z0-9-._]+)?)*)(&([a-zA-Z0-9-._]+(=[a-zA-Z0-9-._]+)?)*)*)?$","description":"The path of the health check endpoint. Required when protocol is HTTP.","example":"/health-check"},"cmd":{"type":"string","description":"The command to run for the health check. Required when protocol is CMD"},"port":{"type":"integer","minimum":1,"description":"Port number for the health check endpoint. Required when protocol is HTTP.","example":8080},"initialDelaySeconds":{"type":"integer","minimum":1,"maximum":180,"description":"Initial delay, in seconds, before the health check is first run.","example":10},"periodSeconds":{"type":"integer","minimum":10,"maximum":600,"description":"The time between each check, in seconds.","example":60},"timeoutSeconds":{"type":"integer","minimum":1,"maximum":60,"description":"The time to wait for a response before marking the health check as a failure.","example":1},"failureThreshold":{"type":"integer","minimum":1,"maximum":255,"description":"The maximum number of allowed failures.","example":3},"successThreshold":{"type":"integer","minimum":1,"maximum":255,"description":"The number of successes required to mark the health check as a success.","example":1}},"required":["protocol","type","initialDelaySeconds","periodSeconds","timeoutSeconds","failureThreshold"],"additionalProperties":false,"description":"A health check object."},"description":"An array of health checks."},"backoffLimit":{"type":"integer","minimum":0,"description":"The number of attempts to rerun a job before it is marked as failed.","example":0},"runOnSourceChange":{"type":"string","enum":["never","cd-promote","always"],"description":"Configure when the job should be run if the source image changes.","example":"never"},"activeDeadlineSeconds":{"type":"integer","minimum":1,"nullable":true,"description":"The maximum amount of time, in seconds, for a job to run before it is marked as failed.","example":600},"schedule":{"type":"string","pattern":"(@(annually|yearly|monthly|weekly|daily|hourly))|((((\\d+,)+\\d+|(\\d+(\\/|-)\\d+)|\\d+|\\*) ?){5})","nullable":true,"description":"The cron timer scheduling when to run the job.","example":"30 8 * * *"},"suspended":{"type":"boolean","description":"Whether the cron's automatic scheduling is suspended","example":false},"concurrencyPolicy":{"type":"string","enum":["allow","forbid","replace"],"description":"Whether this job should run when another instance of the job is already running. `allow` will enable multiple instances of this job to run. `forbid` will keep the current instance of the job running and stop a new instance from being run. `replace` will terminate any currently running instance of the job and start a new one.","example":"forbid"}},"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Project > Jobs > General > Update","x-nf-team-scoped":true,"x-nf-subheading":"patch job","x-nf-cli-command":["patch","job","cron"],"x-nf-deprecation-replacement":"/jobs/patch-job","x-nf-deprecation-message":"Requests should instead use the relevant type-agnostic job endpoint."},"v1-projects--projectId--jobs-cron--jobId--patch-team-scoped":{"operationId":"patchProjectsJobsCronJobid","summary":"Patch cron job","description":"Updates a cron job","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"jobId","type":"string","required":true,"description":"ID of the job","example":"example-job","in":"path","schema":{"name":"jobId","type":"string","required":true,"description":"ID of the job","example":"example-job","in":"path"}}],"responses":{"200":{"description":"Details about the updated job.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":52,"description":"The name of the job.","example":"Example Job"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"A description of the job.","example":"A job description"},"stageId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"infrastructure":{"type":"object","properties":{"architecture":{"type":"string","enum":["x86","arm"]}},"additionalProperties":false},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"billing":{"type":"object","properties":{"buildPlan":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The ID of the build plan to use.","example":"nf-compute-200-8"},"deploymentPlan":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The ID of the deployment plan to use.","example":"nf-compute-20"},"gpu":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"gpuType":{"type":"string"},"gpuCount":{"type":"integer"},"timesliced":{"type":"boolean"}},"required":["gpuType"],"additionalProperties":false}},"additionalProperties":false}},"required":["deploymentPlan"],"additionalProperties":false},"disabledCI":{"type":"boolean","description":"Whether CI should be disabled. Only relevant for jobs deploying directly from version control.","default":false},"buildConfiguration":{"type":"object","properties":{"pathIgnoreRules":{"type":"array","items":{"type":"string","maxLength":260,"description":"A path ignore rule, following `.gitignore` syntax. For example, `*.md` will ignore all files ending with `.md`.","example":"README.md"},"maxItems":200,"description":"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."},"isAllowList":{"type":"boolean","description":"If `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`.","example":false},"ciIgnoreFlagsEnabled":{"type":"boolean","description":"If `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":{"type":"array","items":{"type":"string","maxLength":72,"description":"A commit ignore flag.","example":"[skip ci]"},"maxItems":200,"description":"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]\"]`","example":["[skip ci]","[ci skip]","[no ci]","[skip nf]","[nf skip]","[northflank skip]","[skip northflank]"]},"dockerfileTarget":{"type":"string","description":"If your Dockerfile contains multiple build stages, you can specify the target stage by entering its name here."},"dockerCredentials":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The ID of the docker credentials to use.","example":"example-docker-credential"}},"includeGitFolder":{"type":"boolean","description":"Include .git folder inside the build context"},"fullGitClone":{"type":"boolean","description":"Include the entire git history as part of the .git folder. Only relevant if \"includeGitFolder\" is set."},"enableGitLfs":{"type":"boolean","description":"Enable Git LFS support for the build"},"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false}},"additionalProperties":false,"default":{"pathIgnoreRules":[],"isAllowList":false,"ciIgnoreFlagsEnabled":false}},"buildSettings":{"oneOf":[{"type":"object","properties":{"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false},"dockerfile":{"type":"object","properties":{"useCache":{"type":"boolean","description":"DEPRECATED: This field will be removed in the near future and currently has no effect."},"buildEngine":{"type":"string","enum":["buildkit","kaniko"],"description":"Build engine to use. Defaults to recommended build engine `buildkit`","example":"buildkit","default":"buildkit"},"dockerFilePath":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]+$","description":"The file path of the Dockerfile.","example":"/Dockerfile"},"dockerWorkDir":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*$","description":"The working directory of the Dockerfile.","example":"/"},"buildkit":{"type":"object","properties":{"useCache":{"type":"boolean","description":"Use persistent storage to cache build layers.","example":true,"default":false},"cacheStorageSize":{"type":"integer","description":"The amount of persistent storage available to each build in MB.","example":32768},"useInternalCache":{"type":"boolean","description":"DEPRECATED: This field will be removed in the near future.","default":false},"internalCacheStorage":{"type":"number","format":"float","description":"DEPRECATED: This field will be removed in the near future."}},"additionalProperties":false}},"required":["dockerFilePath","dockerWorkDir"],"additionalProperties":false}},"required":["dockerfile"],"additionalProperties":false,"description":"Build from a Dockerfile"},{"type":"object","properties":{"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false},"buildpack":{"type":"object","properties":{"builder":{"type":"string","enum":["HEROKU_24","HEROKU_22","HEROKU_22_CLASSIC","HEROKU_20","HEROKU_18","GOOGLE_22","GOOGLE_V1","CNB_ALPINE","CNB_BIONIC","PAKETO_JAMMY_TINY","PAKETO_JAMMY_BASE","PAKETO_JAMMY_FULL","PAKETO_TINY","PAKETO_BASE","PAKETO_FULL"],"description":"Buildpack stack to use. Defaults to recommended stack `HEROKU_24`.","example":"HEROKU_24","default":"HEROKU_24"},"buildpackLocators":{"type":"array","items":{"type":"string","description":"Url or registry identifier of custom Buildpack.","example":"https://buildpack-registry.heroku.com/cnb/mars/create-react-app"},"description":"Array of custom Buildpacks to use.","default":[]},"buildContext":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*$","description":"The working directory to build in.","example":"/","default":"/"},"useCache":{"type":"boolean","description":"Should build dependencies be cached?","example":false,"default":false}},"additionalProperties":false}},"required":["buildpack"],"additionalProperties":false,"description":"Build from a Buildpack"}],"description":"Build engine"},"runtimeEnvironment":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"An object containing the runtime environment to set for the job. Keys may only contain letters, numbers, hyphens, forward slashes and dots.","example":{"variable1":"abcdef","variable2":"12345"},"default":{}},"runtimeFiles":{"type":"object","properties":{},"description":"Secret files as JSON object, encrypted at rest. File path must be absolute","example":{"/dir/fileName":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"buildArguments":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"An object containing the build arguments to set for the job. Keys may only contain letters, numbers, hyphens, forward slashes and dots.","example":{"variable1":"abcdef","variable2":"12345"},"default":{}},"buildFiles":{"type":"object","properties":{},"description":"Secret files as JSON object, encrypted at rest. File path must be absolute","example":{"/dir/fileName":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"dockerSecretMounts":{"type":"object","properties":{},"description":"Docker secret mount contents as JSON object, encrypted at rest. Must be a valid Docker secret mount identifier","example":{"example-secret-mount_1":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"healthChecks":{"type":"array","items":{"type":"object","properties":{"protocol":{"type":"string","enum":["HTTP","CMD","TCP"],"description":"The protocol to access the health check with.","example":"HTTP"},"type":{"type":"string","enum":["livenessProbe","readinessProbe","startupProbe"],"description":"The type of health check.","example":"readinessProbe"},"path":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*((\\?([a-zA-Z0-9-._]+(=[a-zA-Z0-9-._]+)?)*)(&([a-zA-Z0-9-._]+(=[a-zA-Z0-9-._]+)?)*)*)?$","description":"The path of the health check endpoint. Required when protocol is HTTP.","example":"/health-check"},"cmd":{"type":"string","description":"The command to run for the health check. Required when protocol is CMD"},"port":{"type":"integer","minimum":1,"description":"Port number for the health check endpoint. Required when protocol is HTTP.","example":8080},"initialDelaySeconds":{"type":"integer","minimum":1,"maximum":180,"description":"Initial delay, in seconds, before the health check is first run.","example":10},"periodSeconds":{"type":"integer","minimum":10,"maximum":600,"description":"The time between each check, in seconds.","example":60},"timeoutSeconds":{"type":"integer","minimum":1,"maximum":60,"description":"The time to wait for a response before marking the health check as a failure.","example":1},"failureThreshold":{"type":"integer","minimum":1,"maximum":255,"description":"The maximum number of allowed failures.","example":3},"successThreshold":{"type":"integer","minimum":1,"maximum":255,"description":"The number of successes required to mark the health check as a success.","example":1}},"required":["protocol","type","initialDelaySeconds","periodSeconds","timeoutSeconds","failureThreshold"],"additionalProperties":false,"description":"A health check object."},"description":"An array of health checks."},"backoffLimit":{"type":"integer","minimum":0,"description":"The number of attempts to rerun a job before it is marked as failed.","example":0},"runOnSourceChange":{"type":"string","enum":["never","cd-promote","always"],"description":"Configure when the job should be run if the source image changes.","example":"never","default":"never"},"activeDeadlineSeconds":{"type":"integer","minimum":1,"nullable":true,"description":"The maximum amount of time, in seconds, for a job to run before it is marked as failed.","example":600},"schedule":{"type":"string","nullable":true,"description":"The cron timer scheduling when to run the job.","example":"30 8 * * *"},"suspended":{"type":"boolean","description":"Whether the cron's automatic scheduling is suspended","example":false,"default":false},"concurrencyPolicy":{"type":"string","enum":["allow","forbid","replace"],"description":"Whether this job should run when another instance of the job is already running. `allow` will enable multiple instances of this job to run. `forbid` will keep the current instance of the job running and stop a new instance from being run. `replace` will terminate any currently running instance of the job and start a new one.","example":"forbid","default":"forbid"},"jobType":{"type":"string","enum":["cron"],"description":"Type of the job (manual or cron)","example":"cron"},"id":{"type":"string","description":"Identifier for the job","example":"example-job"},"appId":{"type":"string","description":"Full identifier used for job deployment","example":"/example-user/default-project/example-job"},"deployment":{"type":"object","properties":{"buildpack":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customProcess","customCommand","customEntrypointCustomCommand","originalEntrypointCustomCommand"],"description":"Type of buildpack run configuration"},"customProcess":{"type":"string","description":"Custom process which should be run. Required in case where `configType` is `customProcess`"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be run. Required in case where `configType` is `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be run. Required in case where `configType` is `customCommand`, `customEntrypointCustomCommand` or `originalEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of buildpack runtime"},"docker":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customEntrypoint","customCommand","customEntrypointCustomCommand"],"description":"Type of entrypoint & command override configuration","example":"default"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be used. Required in case where `configType` is `customEntrypoint` or `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be used. Required in case where `configType` is `customCommand` or `customEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of docker runtime"},"storage":{"type":"object","properties":{"useHdbStorage":{"type":"boolean"},"usePdSsdStorage":{"type":"boolean"},"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":1024,"description":"Ephemeral storage per container in MB","example":1024}},"additionalProperties":false},"shmSize":{"type":"integer","minimum":64,"description":"Configures the amount of available memory-backed disk space available to /dev/shm"}},"additionalProperties":false},"gpu":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"gpuType":{"type":"string"},"gpuCount":{"type":"integer"},"timesliced":{"type":"boolean"}},"required":["gpuType"],"additionalProperties":false}},"additionalProperties":false},"gracePeriodSeconds":{"type":"integer","minimum":15,"maximum":600,"description":"The 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."},"metadata":{"type":"object","properties":{"labels":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom labels for the workload."},"annotations":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom annotations for the workload as string or object."}},"additionalProperties":false,"description":"Allow setting custom labels and annotations for workloads."},"vcs":{"type":"object","properties":{"projectUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo to build.","example":"https://github.com/northflank/gatsby-with-northflank"},"projectType":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string","minLength":24,"maxLength":24,"description":"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 `vcsLinkId` is provided, Northflank will instead use your linked account with that ID."},"projectBranch":{"type":"string","description":"The name of the branch to use.","example":"master"}},"required":["projectUrl","projectType","projectBranch"],"additionalProperties":false},"external":{"type":"object","properties":{"imagePath":{"type":"string","pattern":"^(?:(?:https?:\\/\\/)?([a-zA-Z0-9\\-]+\\.[a-zA-Z0-9\\.\\-]+)(\\/v1)?)?(?:\\/)?([a-zA-Z/-9\\.\\-_]+)(?:\\:([a-zA-Z/-9\\.\\-_\\:]+)|\\@([a-zA-Z/-9\\.\\-_\\:]+))$","description":"Image to be deployed. When not deploying from Dockerhub the URL must be specified.","example":"nginx:latest"},"credentials":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"ID of the saved credentials to use to access this external image.","example":"example-credentials"}},"required":["imagePath"],"additionalProperties":false},"internal":{"type":"object","properties":{"id":{"anyOf":[{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":54,"example":"example-build-service"},{"type":"string","example":"example-project/example-build-service"}],"description":"ID of the build service to deploy"},"branch":{"type":"string","description":"Branch to deploy","example":"master"},"buildSHA":{"oneOf":[{"type":"string","minLength":40,"maxLength":40,"description":"A commit sha."},{"type":"string","enum":["latest"],"description":"Latest commit."}],"description":"Commit SHA to deploy, or 'latest' to deploy the most recent commit","example":"latest"},"buildId":{"type":"string","description":"ID of the build that should be deployed","example":"premium-guide-6393"}},"additionalProperties":false},"imageUrl":{"type":"string","description":"Image registry url of the deployed image."}},"additionalProperties":false,"default":{}},"status":{"type":"object","properties":{"build":{"type":"object","properties":{"status":{"type":"string","enum":["QUEUED","PENDING","UNSCHEDULABLE","STARTING","CLONING","BUILDING","UPLOADING","ABORTED","FAILURE","SUBMISSION_FAILURE","SUCCESS","CRASHED","IN_PROGRESS"],"description":"The current status of the build.","example":"SUCCESS"},"lastTransitionTime":{"type":"string","format":"date-time","description":"The timestamp of when the build reached this status.","example":"2021-11-29T11:47:16.624Z"}},"required":["status"],"additionalProperties":false,"description":"Details about the status of the most recent build."}},"additionalProperties":false,"description":"Details about the current job status."},"cluster":{"type":"object","properties":{"id":{"type":"string","description":"The id of the cluster associated with this project.","example":"nf-europe-west"},"name":{"type":"string","description":"The name of the cluster associated with this project.","example":"nf-europe-west"},"namespace":{"type":"string","description":"Namespace this resource is located within on the cluster.","example":"ns-8zy2mcjh9zn2"},"loadBalancers":{"type":"array","items":{"type":"string","example":"lb.659200800000000000000000.northflank.com"},"description":"Load balancer DNS for the cluster."}},"required":["id","name"],"additionalProperties":false,"description":"Cluster information"},"createdAt":{"type":"string","format":"date-time","description":"time of creation"},"updatedAt":{"type":"string","format":"date-time","description":"time of update"}},"required":["name","billing","backoffLimit","jobType","id","appId","status","cluster"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Jobs","project"],"security":[],"deprecated":true,"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"A description of the job.","example":"A job description"},"stageId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"nullable":true},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"billing":{"type":"object","properties":{"buildPlan":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The ID of the build plan to use.","example":"nf-compute-200-8"},"deploymentPlan":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The ID of the deployment plan to use.","example":"nf-compute-20"},"gpu":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"gpuType":{"type":"string"},"gpuCount":{"type":"integer"},"timesliced":{"type":"boolean"}},"additionalProperties":false}},"additionalProperties":false}},"additionalProperties":false},"disabledCI":{"type":"boolean","description":"Whether CI should be disabled. Only relevant for jobs deploying directly from version control."},"buildConfiguration":{"type":"object","properties":{"pathIgnoreRules":{"type":"array","items":{"type":"string","maxLength":260,"description":"A path ignore rule, following `.gitignore` syntax. For example, `*.md` will ignore all files ending with `.md`.","example":"README.md"},"maxItems":200,"description":"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."},"isAllowList":{"type":"boolean","description":"If `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`.","example":false},"ciIgnoreFlagsEnabled":{"type":"boolean","description":"If `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":{"type":"array","items":{"type":"string","maxLength":72,"description":"A commit ignore flag.","example":"[skip ci]"},"maxItems":200,"description":"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]\"]`","example":["[skip ci]","[ci skip]","[no ci]","[skip nf]","[nf skip]","[northflank skip]","[skip northflank]"]},"dockerfileTarget":{"type":"string","description":"If your Dockerfile contains multiple build stages, you can specify the target stage by entering its name here."},"dockerCredentials":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The ID of the docker credentials to use.","example":"example-docker-credential"}},"includeGitFolder":{"type":"boolean","description":"Include .git folder inside the build context"},"fullGitClone":{"type":"boolean","description":"Include the entire git history as part of the .git folder. Only relevant if \"includeGitFolder\" is set."},"enableGitLfs":{"type":"boolean","description":"Enable Git LFS support for the build"},"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false}},"additionalProperties":false},"buildSettings":{"type":"object","properties":{"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false},"dockerfile":{"type":"object","properties":{"useCache":{"type":"boolean","description":"DEPRECATED: This field will be removed in the near future and currently has no effect."},"buildEngine":{"type":"string","enum":["buildkit","kaniko"],"description":"Build engine to use. Defaults to recommended build engine `buildkit`","example":"buildkit"},"dockerFilePath":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]+$","description":"The file path of the Dockerfile.","example":"/Dockerfile"},"dockerWorkDir":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*$","description":"The working directory of the Dockerfile.","example":"/"},"buildkit":{"type":"object","properties":{"useCache":{"type":"boolean","description":"Use persistent storage to cache build layers.","example":true},"cacheStorageSize":{"type":"integer","description":"The amount of persistent storage available to each build in MB.","example":32768},"useInternalCache":{"type":"boolean","description":"DEPRECATED: This field will be removed in the near future."},"internalCacheStorage":{"type":"number","format":"float","description":"DEPRECATED: This field will be removed in the near future."}},"additionalProperties":false}},"additionalProperties":false},"buildpack":{"type":"object","properties":{"builder":{"type":"string","enum":["HEROKU_24","HEROKU_22","HEROKU_22_CLASSIC","HEROKU_20","HEROKU_18","GOOGLE_22","GOOGLE_V1","CNB_ALPINE","CNB_BIONIC","PAKETO_JAMMY_TINY","PAKETO_JAMMY_BASE","PAKETO_JAMMY_FULL","PAKETO_TINY","PAKETO_BASE","PAKETO_FULL"],"description":"Buildpack stack to use. Defaults to recommended stack `HEROKU_24`.","example":"HEROKU_24"},"buildpackLocators":{"type":"array","items":{"type":"string","description":"Url or registry identifier of custom Buildpack.","example":"https://buildpack-registry.heroku.com/cnb/mars/create-react-app"},"description":"Array of custom Buildpacks to use."},"buildContext":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*$","description":"The working directory to build in.","example":"/"},"useCache":{"type":"boolean","description":"Should build dependencies be cached?","example":false}},"additionalProperties":false}},"additionalProperties":false},"runtimeEnvironment":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"An object containing the runtime environment to set for the job. Keys may only contain letters, numbers, hyphens, forward slashes and dots.","example":{"variable1":"abcdef","variable2":"12345"}},"runtimeFiles":{"type":"object","properties":{},"description":"Secret files as JSON object, encrypted at rest. File path must be absolute","example":{"/dir/fileName":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"buildArguments":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"An object containing the build arguments to set for the job. Keys may only contain letters, numbers, hyphens, forward slashes and dots.","example":{"variable1":"abcdef","variable2":"12345"}},"buildFiles":{"type":"object","properties":{},"description":"Secret files as JSON object, encrypted at rest. File path must be absolute","example":{"/dir/fileName":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"dockerSecretMounts":{"type":"object","properties":{},"description":"Docker secret mount contents as JSON object, encrypted at rest. Must be a valid Docker secret mount identifier","example":{"example-secret-mount_1":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"healthChecks":{"type":"array","items":{"type":"object","properties":{"protocol":{"type":"string","enum":["HTTP","CMD","TCP"],"description":"The protocol to access the health check with.","example":"HTTP"},"type":{"type":"string","enum":["livenessProbe","readinessProbe","startupProbe"],"description":"The type of health check.","example":"readinessProbe"},"path":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*((\\?([a-zA-Z0-9-._]+(=[a-zA-Z0-9-._]+)?)*)(&([a-zA-Z0-9-._]+(=[a-zA-Z0-9-._]+)?)*)*)?$","description":"The path of the health check endpoint. Required when protocol is HTTP.","example":"/health-check"},"cmd":{"type":"string","description":"The command to run for the health check. Required when protocol is CMD"},"port":{"type":"integer","minimum":1,"description":"Port number for the health check endpoint. Required when protocol is HTTP.","example":8080},"initialDelaySeconds":{"type":"integer","minimum":1,"maximum":180,"description":"Initial delay, in seconds, before the health check is first run.","example":10},"periodSeconds":{"type":"integer","minimum":10,"maximum":600,"description":"The time between each check, in seconds.","example":60},"timeoutSeconds":{"type":"integer","minimum":1,"maximum":60,"description":"The time to wait for a response before marking the health check as a failure.","example":1},"failureThreshold":{"type":"integer","minimum":1,"maximum":255,"description":"The maximum number of allowed failures.","example":3},"successThreshold":{"type":"integer","minimum":1,"maximum":255,"description":"The number of successes required to mark the health check as a success.","example":1}},"required":["protocol","type","initialDelaySeconds","periodSeconds","timeoutSeconds","failureThreshold"],"additionalProperties":false,"description":"A health check object."},"description":"An array of health checks."},"backoffLimit":{"type":"integer","minimum":0,"description":"The number of attempts to rerun a job before it is marked as failed.","example":0},"runOnSourceChange":{"type":"string","enum":["never","cd-promote","always"],"description":"Configure when the job should be run if the source image changes.","example":"never"},"activeDeadlineSeconds":{"type":"integer","minimum":1,"nullable":true,"description":"The maximum amount of time, in seconds, for a job to run before it is marked as failed.","example":600},"schedule":{"type":"string","pattern":"(@(annually|yearly|monthly|weekly|daily|hourly))|((((\\d+,)+\\d+|(\\d+(\\/|-)\\d+)|\\d+|\\*) ?){5})","nullable":true,"description":"The cron timer scheduling when to run the job.","example":"30 8 * * *"},"suspended":{"type":"boolean","description":"Whether the cron's automatic scheduling is suspended","example":false},"concurrencyPolicy":{"type":"string","enum":["allow","forbid","replace"],"description":"Whether this job should run when another instance of the job is already running. `allow` will enable multiple instances of this job to run. `forbid` will keep the current instance of the job running and stop a new instance from being run. `replace` will terminate any currently running instance of the job and start a new one.","example":"forbid"}},"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Project > Jobs > General > Update","x-nf-team-scoped":true,"x-nf-subheading":"patch job","x-nf-cli-command":["patch","job","cron"],"x-nf-deprecation-replacement":"/jobs/patch-job","x-nf-deprecation-message":"Requests should instead use the relevant type-agnostic job endpoint."},"v1-projects--projectId--jobs-manual-post":{"operationId":"postProjectsJobsManual","summary":"Create manual job","description":"Creates a new manual job that only runs when initiated via the UI, CLI, API or JS client.","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}}],"responses":{"200":{"description":"Details about the newly created job.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":52,"description":"The name of the job.","example":"Example Job"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"A description of the job.","example":"A job description"},"stageId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"infrastructure":{"type":"object","properties":{"architecture":{"type":"string","enum":["x86","arm"]}},"additionalProperties":false},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"billing":{"type":"object","properties":{"buildPlan":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The ID of the build plan to use.","example":"nf-compute-200-8"},"deploymentPlan":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The ID of the deployment plan to use.","example":"nf-compute-20"},"gpu":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"gpuType":{"type":"string"},"gpuCount":{"type":"integer"},"timesliced":{"type":"boolean"}},"required":["gpuType"],"additionalProperties":false}},"additionalProperties":false}},"required":["deploymentPlan"],"additionalProperties":false},"disabledCI":{"type":"boolean","description":"Whether CI should be disabled. Only relevant for jobs deploying directly from version control.","default":false},"buildConfiguration":{"type":"object","properties":{"pathIgnoreRules":{"type":"array","items":{"type":"string","maxLength":260,"description":"A path ignore rule, following `.gitignore` syntax. For example, `*.md` will ignore all files ending with `.md`.","example":"README.md"},"maxItems":200,"description":"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."},"isAllowList":{"type":"boolean","description":"If `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`.","example":false},"ciIgnoreFlagsEnabled":{"type":"boolean","description":"If `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":{"type":"array","items":{"type":"string","maxLength":72,"description":"A commit ignore flag.","example":"[skip ci]"},"maxItems":200,"description":"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]\"]`","example":["[skip ci]","[ci skip]","[no ci]","[skip nf]","[nf skip]","[northflank skip]","[skip northflank]"]},"dockerfileTarget":{"type":"string","description":"If your Dockerfile contains multiple build stages, you can specify the target stage by entering its name here."},"dockerCredentials":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The ID of the docker credentials to use.","example":"example-docker-credential"}},"includeGitFolder":{"type":"boolean","description":"Include .git folder inside the build context"},"fullGitClone":{"type":"boolean","description":"Include the entire git history as part of the .git folder. Only relevant if \"includeGitFolder\" is set."},"enableGitLfs":{"type":"boolean","description":"Enable Git LFS support for the build"},"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false}},"additionalProperties":false,"default":{"pathIgnoreRules":[],"isAllowList":false,"ciIgnoreFlagsEnabled":false}},"buildSettings":{"oneOf":[{"type":"object","properties":{"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false},"dockerfile":{"type":"object","properties":{"useCache":{"type":"boolean","description":"DEPRECATED: This field will be removed in the near future and currently has no effect."},"buildEngine":{"type":"string","enum":["buildkit","kaniko"],"description":"Build engine to use. Defaults to recommended build engine `buildkit`","example":"buildkit","default":"buildkit"},"dockerFilePath":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]+$","description":"The file path of the Dockerfile.","example":"/Dockerfile"},"dockerWorkDir":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*$","description":"The working directory of the Dockerfile.","example":"/"},"buildkit":{"type":"object","properties":{"useCache":{"type":"boolean","description":"Use persistent storage to cache build layers.","example":true,"default":false},"cacheStorageSize":{"type":"integer","description":"The amount of persistent storage available to each build in MB.","example":32768},"useInternalCache":{"type":"boolean","description":"DEPRECATED: This field will be removed in the near future.","default":false},"internalCacheStorage":{"type":"number","format":"float","description":"DEPRECATED: This field will be removed in the near future."}},"additionalProperties":false}},"required":["dockerFilePath","dockerWorkDir"],"additionalProperties":false}},"required":["dockerfile"],"additionalProperties":false,"description":"Build from a Dockerfile"},{"type":"object","properties":{"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false},"buildpack":{"type":"object","properties":{"builder":{"type":"string","enum":["HEROKU_24","HEROKU_22","HEROKU_22_CLASSIC","HEROKU_20","HEROKU_18","GOOGLE_22","GOOGLE_V1","CNB_ALPINE","CNB_BIONIC","PAKETO_JAMMY_TINY","PAKETO_JAMMY_BASE","PAKETO_JAMMY_FULL","PAKETO_TINY","PAKETO_BASE","PAKETO_FULL"],"description":"Buildpack stack to use. Defaults to recommended stack `HEROKU_24`.","example":"HEROKU_24","default":"HEROKU_24"},"buildpackLocators":{"type":"array","items":{"type":"string","description":"Url or registry identifier of custom Buildpack.","example":"https://buildpack-registry.heroku.com/cnb/mars/create-react-app"},"description":"Array of custom Buildpacks to use.","default":[]},"buildContext":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*$","description":"The working directory to build in.","example":"/","default":"/"},"useCache":{"type":"boolean","description":"Should build dependencies be cached?","example":false,"default":false}},"additionalProperties":false}},"required":["buildpack"],"additionalProperties":false,"description":"Build from a Buildpack"}],"description":"Build engine"},"runtimeEnvironment":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"An object containing the runtime environment to set for the job. Keys may only contain letters, numbers, hyphens, forward slashes and dots.","example":{"variable1":"abcdef","variable2":"12345"},"default":{}},"runtimeFiles":{"type":"object","properties":{},"description":"Secret files as JSON object, encrypted at rest. File path must be absolute","example":{"/dir/fileName":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"buildArguments":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"An object containing the build arguments to set for the job. Keys may only contain letters, numbers, hyphens, forward slashes and dots.","example":{"variable1":"abcdef","variable2":"12345"},"default":{}},"buildFiles":{"type":"object","properties":{},"description":"Secret files as JSON object, encrypted at rest. File path must be absolute","example":{"/dir/fileName":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"dockerSecretMounts":{"type":"object","properties":{},"description":"Docker secret mount contents as JSON object, encrypted at rest. Must be a valid Docker secret mount identifier","example":{"example-secret-mount_1":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"healthChecks":{"type":"array","items":{"type":"object","properties":{"protocol":{"type":"string","enum":["HTTP","CMD","TCP"],"description":"The protocol to access the health check with.","example":"HTTP"},"type":{"type":"string","enum":["livenessProbe","readinessProbe","startupProbe"],"description":"The type of health check.","example":"readinessProbe"},"path":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*((\\?([a-zA-Z0-9-._]+(=[a-zA-Z0-9-._]+)?)*)(&([a-zA-Z0-9-._]+(=[a-zA-Z0-9-._]+)?)*)*)?$","description":"The path of the health check endpoint. Required when protocol is HTTP.","example":"/health-check"},"cmd":{"type":"string","description":"The command to run for the health check. Required when protocol is CMD"},"port":{"type":"integer","minimum":1,"description":"Port number for the health check endpoint. Required when protocol is HTTP.","example":8080},"initialDelaySeconds":{"type":"integer","minimum":1,"maximum":180,"description":"Initial delay, in seconds, before the health check is first run.","example":10},"periodSeconds":{"type":"integer","minimum":10,"maximum":600,"description":"The time between each check, in seconds.","example":60},"timeoutSeconds":{"type":"integer","minimum":1,"maximum":60,"description":"The time to wait for a response before marking the health check as a failure.","example":1},"failureThreshold":{"type":"integer","minimum":1,"maximum":255,"description":"The maximum number of allowed failures.","example":3},"successThreshold":{"type":"integer","minimum":1,"maximum":255,"description":"The number of successes required to mark the health check as a success.","example":1}},"required":["protocol","type","initialDelaySeconds","periodSeconds","timeoutSeconds","failureThreshold"],"additionalProperties":false,"description":"A health check object."},"description":"An array of health checks."},"backoffLimit":{"type":"integer","minimum":0,"description":"The number of attempts to rerun a job before it is marked as failed.","example":0},"runOnSourceChange":{"type":"string","enum":["never","cd-promote","always"],"description":"Configure when the job should be run if the source image changes.","example":"never","default":"never"},"activeDeadlineSeconds":{"type":"integer","minimum":1,"nullable":true,"description":"The maximum amount of time, in seconds, for a job to run before it is marked as failed.","example":600},"jobType":{"type":"string","enum":["manual"],"description":"Type of the job (manual or manual)","example":"manual"},"id":{"type":"string","description":"Identifier for the job","example":"example-job"},"appId":{"type":"string","description":"Full identifier used for job deployment","example":"/example-user/default-project/example-job"},"deployment":{"type":"object","properties":{"buildpack":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customProcess","customCommand","customEntrypointCustomCommand","originalEntrypointCustomCommand"],"description":"Type of buildpack run configuration"},"customProcess":{"type":"string","description":"Custom process which should be run. Required in case where `configType` is `customProcess`"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be run. Required in case where `configType` is `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be run. Required in case where `configType` is `customCommand`, `customEntrypointCustomCommand` or `originalEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of buildpack runtime"},"docker":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customEntrypoint","customCommand","customEntrypointCustomCommand"],"description":"Type of entrypoint & command override configuration","example":"default"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be used. Required in case where `configType` is `customEntrypoint` or `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be used. Required in case where `configType` is `customCommand` or `customEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of docker runtime"},"storage":{"type":"object","properties":{"useHdbStorage":{"type":"boolean"},"usePdSsdStorage":{"type":"boolean"},"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":1024,"description":"Ephemeral storage per container in MB","example":1024}},"additionalProperties":false},"shmSize":{"type":"integer","minimum":64,"description":"Configures the amount of available memory-backed disk space available to /dev/shm"}},"additionalProperties":false},"gpu":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"gpuType":{"type":"string"},"gpuCount":{"type":"integer"},"timesliced":{"type":"boolean"}},"required":["gpuType"],"additionalProperties":false}},"additionalProperties":false},"gracePeriodSeconds":{"type":"integer","minimum":15,"maximum":600,"description":"The 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."},"metadata":{"type":"object","properties":{"labels":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom labels for the workload."},"annotations":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom annotations for the workload as string or object."}},"additionalProperties":false,"description":"Allow setting custom labels and annotations for workloads."},"vcs":{"type":"object","properties":{"projectUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo to build.","example":"https://github.com/northflank/gatsby-with-northflank"},"projectType":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string","minLength":24,"maxLength":24,"description":"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 `vcsLinkId` is provided, Northflank will instead use your linked account with that ID."},"projectBranch":{"type":"string","description":"The name of the branch to use.","example":"master"}},"required":["projectUrl","projectType","projectBranch"],"additionalProperties":false},"external":{"type":"object","properties":{"imagePath":{"type":"string","pattern":"^(?:(?:https?:\\/\\/)?([a-zA-Z0-9\\-]+\\.[a-zA-Z0-9\\.\\-]+)(\\/v1)?)?(?:\\/)?([a-zA-Z/-9\\.\\-_]+)(?:\\:([a-zA-Z/-9\\.\\-_\\:]+)|\\@([a-zA-Z/-9\\.\\-_\\:]+))$","description":"Image to be deployed. When not deploying from Dockerhub the URL must be specified.","example":"nginx:latest"},"credentials":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"ID of the saved credentials to use to access this external image.","example":"example-credentials"}},"required":["imagePath"],"additionalProperties":false},"internal":{"type":"object","properties":{"id":{"anyOf":[{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":54,"example":"example-build-service"},{"type":"string","example":"example-project/example-build-service"}],"description":"ID of the build service to deploy"},"branch":{"type":"string","description":"Branch to deploy","example":"master"},"buildSHA":{"oneOf":[{"type":"string","minLength":40,"maxLength":40,"description":"A commit sha."},{"type":"string","enum":["latest"],"description":"Latest commit."}],"description":"Commit SHA to deploy, or 'latest' to deploy the most recent commit","example":"latest"},"buildId":{"type":"string","description":"ID of the build that should be deployed","example":"premium-guide-6393"}},"additionalProperties":false},"imageUrl":{"type":"string","description":"Image registry url of the deployed image."}},"additionalProperties":false,"default":{}},"status":{"type":"object","properties":{"build":{"type":"object","properties":{"status":{"type":"string","enum":["QUEUED","PENDING","UNSCHEDULABLE","STARTING","CLONING","BUILDING","UPLOADING","ABORTED","FAILURE","SUBMISSION_FAILURE","SUCCESS","CRASHED","IN_PROGRESS"],"description":"The current status of the build.","example":"SUCCESS"},"lastTransitionTime":{"type":"string","format":"date-time","description":"The timestamp of when the build reached this status.","example":"2021-11-29T11:47:16.624Z"}},"required":["status"],"additionalProperties":false,"description":"Details about the status of the most recent build."}},"additionalProperties":false,"description":"Details about the current job status."},"cluster":{"type":"object","properties":{"id":{"type":"string","description":"The id of the cluster associated with this project.","example":"nf-europe-west"},"name":{"type":"string","description":"The name of the cluster associated with this project.","example":"nf-europe-west"},"namespace":{"type":"string","description":"Namespace this resource is located within on the cluster.","example":"ns-8zy2mcjh9zn2"},"loadBalancers":{"type":"array","items":{"type":"string","example":"lb.659200800000000000000000.northflank.com"},"description":"Load balancer DNS for the cluster."}},"required":["id","name"],"additionalProperties":false,"description":"Cluster information"},"createdAt":{"type":"string","format":"date-time","description":"time of creation"},"updatedAt":{"type":"string","format":"date-time","description":"time of update"}},"required":["name","billing","backoffLimit","jobType","id","appId","status","cluster"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Jobs","project"],"security":[],"deprecated":true,"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":52,"description":"The name of the job.","example":"Example Job"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"A description of the job.","example":"A job description"},"stageId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"infrastructure":{"type":"object","properties":{"architecture":{"type":"string","enum":["x86","arm"]}},"additionalProperties":false},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"billing":{"type":"object","properties":{"buildPlan":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The ID of the build plan to use.","example":"nf-compute-200-8"},"deploymentPlan":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The ID of the deployment plan to use.","example":"nf-compute-20"},"gpu":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"gpuType":{"type":"string"},"gpuCount":{"type":"integer"},"timesliced":{"type":"boolean"}},"required":["gpuType"],"additionalProperties":false}},"additionalProperties":false}},"required":["deploymentPlan"],"additionalProperties":false},"deployment":{"oneOf":[{"type":"object","properties":{"buildpack":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customProcess","customCommand","customEntrypointCustomCommand","originalEntrypointCustomCommand"],"description":"Type of buildpack run configuration"},"customProcess":{"type":"string","description":"Custom process which should be run. Required in case where `configType` is `customProcess`"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be run. Required in case where `configType` is `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be run. Required in case where `configType` is `customCommand`, `customEntrypointCustomCommand` or `originalEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of buildpack runtime"},"docker":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customEntrypoint","customCommand","customEntrypointCustomCommand"],"description":"Type of entrypoint & command override configuration","example":"default"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be used. Required in case where `configType` is `customEntrypoint` or `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be used. Required in case where `configType` is `customCommand` or `customEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of docker runtime"},"storage":{"type":"object","properties":{"useHdbStorage":{"type":"boolean"},"usePdSsdStorage":{"type":"boolean"},"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":1024,"description":"Ephemeral storage per container in MB","example":1024}},"additionalProperties":false},"shmSize":{"type":"integer","minimum":64,"description":"Configures the amount of available memory-backed disk space available to /dev/shm"}},"additionalProperties":false},"gpu":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"gpuType":{"type":"string"},"gpuCount":{"type":"integer"},"timesliced":{"type":"boolean"}},"required":["gpuType"],"additionalProperties":false}},"additionalProperties":false},"gracePeriodSeconds":{"type":"integer","minimum":15,"maximum":600,"description":"The 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."},"metadata":{"type":"object","properties":{"labels":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom labels for the workload."},"annotations":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom annotations for the workload as string or object."}},"additionalProperties":false,"description":"Allow setting custom labels and annotations for workloads."},"vcs":{"type":"object","properties":{"projectUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo to build.","example":"https://github.com/northflank/gatsby-with-northflank"},"projectType":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string","minLength":24,"maxLength":24,"description":"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 `vcsLinkId` is provided, Northflank will instead use your linked account with that ID."},"projectBranch":{"type":"string","description":"The name of the branch to use.","example":"master"}},"required":["projectUrl","projectType","projectBranch"],"additionalProperties":false}},"required":["vcs"],"additionalProperties":false,"description":"Deploy from version control"},{"type":"object","properties":{"buildpack":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customProcess","customCommand","customEntrypointCustomCommand","originalEntrypointCustomCommand"],"description":"Type of buildpack run configuration"},"customProcess":{"type":"string","description":"Custom process which should be run. Required in case where `configType` is `customProcess`"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be run. Required in case where `configType` is `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be run. Required in case where `configType` is `customCommand`, `customEntrypointCustomCommand` or `originalEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of buildpack runtime"},"docker":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customEntrypoint","customCommand","customEntrypointCustomCommand"],"description":"Type of entrypoint & command override configuration","example":"default"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be used. Required in case where `configType` is `customEntrypoint` or `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be used. Required in case where `configType` is `customCommand` or `customEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of docker runtime"},"storage":{"type":"object","properties":{"useHdbStorage":{"type":"boolean"},"usePdSsdStorage":{"type":"boolean"},"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":1024,"description":"Ephemeral storage per container in MB","example":1024}},"additionalProperties":false},"shmSize":{"type":"integer","minimum":64,"description":"Configures the amount of available memory-backed disk space available to /dev/shm"}},"additionalProperties":false},"gpu":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"gpuType":{"type":"string"},"gpuCount":{"type":"integer"},"timesliced":{"type":"boolean"}},"required":["gpuType"],"additionalProperties":false}},"additionalProperties":false},"gracePeriodSeconds":{"type":"integer","minimum":15,"maximum":600,"description":"The 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."},"metadata":{"type":"object","properties":{"labels":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom labels for the workload."},"annotations":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom annotations for the workload as string or object."}},"additionalProperties":false,"description":"Allow setting custom labels and annotations for workloads."},"external":{"type":"object","properties":{"imagePath":{"type":"string","pattern":"^(?:(?:https?:\\/\\/)?([a-zA-Z0-9\\-]+\\.[a-zA-Z0-9\\.\\-]+)(\\/v1)?)?(?:\\/)?([a-zA-Z/-9\\.\\-_]+)(?:\\:([a-zA-Z/-9\\.\\-_\\:]+)|\\@([a-zA-Z/-9\\.\\-_\\:]+))$","description":"Image to be deployed. When not deploying from Dockerhub the URL must be specified.","example":"nginx:latest"},"credentials":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"ID of the saved credentials to use to access this external image.","example":"example-credentials"}},"required":["imagePath"],"additionalProperties":false}},"required":["external"],"additionalProperties":false,"description":"Deploy from an external image"},{"type":"object","properties":{"buildpack":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customProcess","customCommand","customEntrypointCustomCommand","originalEntrypointCustomCommand"],"description":"Type of buildpack run configuration"},"customProcess":{"type":"string","description":"Custom process which should be run. Required in case where `configType` is `customProcess`"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be run. Required in case where `configType` is `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be run. Required in case where `configType` is `customCommand`, `customEntrypointCustomCommand` or `originalEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of buildpack runtime"},"docker":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customEntrypoint","customCommand","customEntrypointCustomCommand"],"description":"Type of entrypoint & command override configuration","example":"default"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be used. Required in case where `configType` is `customEntrypoint` or `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be used. Required in case where `configType` is `customCommand` or `customEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of docker runtime"},"storage":{"type":"object","properties":{"useHdbStorage":{"type":"boolean"},"usePdSsdStorage":{"type":"boolean"},"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":1024,"description":"Ephemeral storage per container in MB","example":1024}},"additionalProperties":false},"shmSize":{"type":"integer","minimum":64,"description":"Configures the amount of available memory-backed disk space available to /dev/shm"}},"additionalProperties":false},"gpu":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"gpuType":{"type":"string"},"gpuCount":{"type":"integer"},"timesliced":{"type":"boolean"}},"required":["gpuType"],"additionalProperties":false}},"additionalProperties":false},"gracePeriodSeconds":{"type":"integer","minimum":15,"maximum":600,"description":"The 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."},"metadata":{"type":"object","properties":{"labels":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom labels for the workload."},"annotations":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom annotations for the workload as string or object."}},"additionalProperties":false,"description":"Allow setting custom labels and annotations for workloads."},"internal":{"type":"object","properties":{"id":{"anyOf":[{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":54,"example":"example-build-service"},{"type":"string","example":"example-project/example-build-service"}],"description":"ID of the build service to deploy"},"branch":{"type":"string","description":"Branch to deploy","example":"master"},"buildSHA":{"oneOf":[{"type":"string","minLength":40,"maxLength":40,"description":"A commit sha."},{"type":"string","enum":["latest"],"description":"Latest commit."}],"description":"Commit SHA to deploy, or 'latest' to deploy the most recent commit","example":"latest"},"buildId":{"type":"string","description":"ID of the build that should be deployed","example":"premium-guide-6393"}},"additionalProperties":false}},"required":["internal"],"additionalProperties":false,"description":"Deploy from a Northflank build service"},{"type":"object","properties":{},"additionalProperties":false,"description":"Choose later"}],"description":"Where to deploy the job from."},"disabledCI":{"type":"boolean","description":"Whether CI should be disabled. Only relevant for jobs deploying directly from version control.","default":false},"buildConfiguration":{"type":"object","properties":{"pathIgnoreRules":{"type":"array","items":{"type":"string","maxLength":260,"description":"A path ignore rule, following `.gitignore` syntax. For example, `*.md` will ignore all files ending with `.md`.","example":"README.md"},"maxItems":200,"description":"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."},"isAllowList":{"type":"boolean","description":"If `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`.","example":false},"ciIgnoreFlagsEnabled":{"type":"boolean","description":"If `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":{"type":"array","items":{"type":"string","maxLength":72,"description":"A commit ignore flag.","example":"[skip ci]"},"maxItems":200,"description":"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]\"]`","example":["[skip ci]","[ci skip]","[no ci]","[skip nf]","[nf skip]","[northflank skip]","[skip northflank]"]},"dockerfileTarget":{"type":"string","description":"If your Dockerfile contains multiple build stages, you can specify the target stage by entering its name here."},"dockerCredentials":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The ID of the docker credentials to use.","example":"example-docker-credential"}},"includeGitFolder":{"type":"boolean","description":"Include .git folder inside the build context"},"fullGitClone":{"type":"boolean","description":"Include the entire git history as part of the .git folder. Only relevant if \"includeGitFolder\" is set."},"enableGitLfs":{"type":"boolean","description":"Enable Git LFS support for the build"},"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false}},"additionalProperties":false,"default":{"pathIgnoreRules":[],"isAllowList":false,"ciIgnoreFlagsEnabled":false}},"buildSettings":{"oneOf":[{"type":"object","properties":{"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false},"dockerfile":{"type":"object","properties":{"useCache":{"type":"boolean","description":"DEPRECATED: This field will be removed in the near future and currently has no effect."},"buildEngine":{"type":"string","enum":["buildkit","kaniko"],"description":"Build engine to use. Defaults to recommended build engine `buildkit`","example":"buildkit","default":"buildkit"},"dockerFilePath":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]+$","description":"The file path of the Dockerfile.","example":"/Dockerfile"},"dockerWorkDir":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*$","description":"The working directory of the Dockerfile.","example":"/"},"buildkit":{"type":"object","properties":{"useCache":{"type":"boolean","description":"Use persistent storage to cache build layers.","example":true,"default":false},"cacheStorageSize":{"type":"integer","description":"The amount of persistent storage available to each build in MB.","example":32768},"useInternalCache":{"type":"boolean","description":"DEPRECATED: This field will be removed in the near future.","default":false},"internalCacheStorage":{"type":"number","format":"float","description":"DEPRECATED: This field will be removed in the near future."}},"additionalProperties":false}},"required":["dockerFilePath","dockerWorkDir"],"additionalProperties":false}},"required":["dockerfile"],"additionalProperties":false,"description":"Build from a Dockerfile"},{"type":"object","properties":{"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false},"buildpack":{"type":"object","properties":{"builder":{"type":"string","enum":["HEROKU_24","HEROKU_22","HEROKU_22_CLASSIC","HEROKU_20","HEROKU_18","GOOGLE_22","GOOGLE_V1","CNB_ALPINE","CNB_BIONIC","PAKETO_JAMMY_TINY","PAKETO_JAMMY_BASE","PAKETO_JAMMY_FULL","PAKETO_TINY","PAKETO_BASE","PAKETO_FULL"],"description":"Buildpack stack to use. Defaults to recommended stack `HEROKU_24`.","example":"HEROKU_24","default":"HEROKU_24"},"buildpackLocators":{"type":"array","items":{"type":"string","description":"Url or registry identifier of custom Buildpack.","example":"https://buildpack-registry.heroku.com/cnb/mars/create-react-app"},"description":"Array of custom Buildpacks to use.","default":[]},"buildContext":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*$","description":"The working directory to build in.","example":"/","default":"/"},"useCache":{"type":"boolean","description":"Should build dependencies be cached?","example":false,"default":false}},"additionalProperties":false}},"required":["buildpack"],"additionalProperties":false,"description":"Build from a Buildpack"}],"description":"Build engine"},"runtimeEnvironment":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"An object containing the runtime environment to set for the job. Keys may only contain letters, numbers, hyphens, forward slashes and dots.","example":{"variable1":"abcdef","variable2":"12345"},"default":{}},"runtimeFiles":{"type":"object","properties":{},"description":"Secret files as JSON object, encrypted at rest. File path must be absolute","example":{"/dir/fileName":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"buildArguments":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"An object containing the build arguments to set for the job. Keys may only contain letters, numbers, hyphens, forward slashes and dots.","example":{"variable1":"abcdef","variable2":"12345"},"default":{}},"buildFiles":{"type":"object","properties":{},"description":"Secret files as JSON object, encrypted at rest. File path must be absolute","example":{"/dir/fileName":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"dockerSecretMounts":{"type":"object","properties":{},"description":"Docker secret mount contents as JSON object, encrypted at rest. Must be a valid Docker secret mount identifier","example":{"example-secret-mount_1":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"healthChecks":{"type":"array","items":{"type":"object","properties":{"protocol":{"type":"string","enum":["HTTP","CMD","TCP"],"description":"The protocol to access the health check with.","example":"HTTP"},"type":{"type":"string","enum":["livenessProbe","readinessProbe","startupProbe"],"description":"The type of health check.","example":"readinessProbe"},"path":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*((\\?([a-zA-Z0-9-._]+(=[a-zA-Z0-9-._]+)?)*)(&([a-zA-Z0-9-._]+(=[a-zA-Z0-9-._]+)?)*)*)?$","description":"The path of the health check endpoint. Required when protocol is HTTP.","example":"/health-check"},"cmd":{"type":"string","description":"The command to run for the health check. Required when protocol is CMD"},"port":{"type":"integer","minimum":1,"description":"Port number for the health check endpoint. Required when protocol is HTTP.","example":8080},"initialDelaySeconds":{"type":"integer","minimum":1,"maximum":180,"description":"Initial delay, in seconds, before the health check is first run.","example":10},"periodSeconds":{"type":"integer","minimum":10,"maximum":600,"description":"The time between each check, in seconds.","example":60},"timeoutSeconds":{"type":"integer","minimum":1,"maximum":60,"description":"The time to wait for a response before marking the health check as a failure.","example":1},"failureThreshold":{"type":"integer","minimum":1,"maximum":255,"description":"The maximum number of allowed failures.","example":3},"successThreshold":{"type":"integer","minimum":1,"maximum":255,"description":"The number of successes required to mark the health check as a success.","example":1}},"required":["protocol","type","initialDelaySeconds","periodSeconds","timeoutSeconds","failureThreshold"],"additionalProperties":false,"description":"A health check object."},"description":"An array of health checks."},"backoffLimit":{"type":"integer","minimum":0,"description":"The number of attempts to rerun a job before it is marked as failed.","example":0},"runOnSourceChange":{"type":"string","enum":["never","cd-promote","always"],"description":"Configure when the job should be run if the source image changes.","example":"never","default":"never"},"activeDeadlineSeconds":{"type":"integer","minimum":1,"nullable":true,"description":"The maximum amount of time, in seconds, for a job to run before it is marked as failed.","example":600}},"required":["name","billing","backoffLimit"],"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Project > Jobs > General > Create","x-nf-team-scoped":true,"x-nf-subheading":"create job","x-nf-cli-command":["create","job","manual"],"x-nf-deprecation-replacement":"/jobs/create-job","x-nf-deprecation-message":"Requests should instead use the relevant type-agnostic job endpoint."},"v1-projects--projectId--jobs-manual-post-team-scoped":{"operationId":"postProjectsJobsManual","summary":"Create manual job","description":"Creates a new manual job that only runs when initiated via the UI, CLI, API or JS client.","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}}],"responses":{"200":{"description":"Details about the newly created job.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":52,"description":"The name of the job.","example":"Example Job"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"A description of the job.","example":"A job description"},"stageId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"infrastructure":{"type":"object","properties":{"architecture":{"type":"string","enum":["x86","arm"]}},"additionalProperties":false},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"billing":{"type":"object","properties":{"buildPlan":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The ID of the build plan to use.","example":"nf-compute-200-8"},"deploymentPlan":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The ID of the deployment plan to use.","example":"nf-compute-20"},"gpu":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"gpuType":{"type":"string"},"gpuCount":{"type":"integer"},"timesliced":{"type":"boolean"}},"required":["gpuType"],"additionalProperties":false}},"additionalProperties":false}},"required":["deploymentPlan"],"additionalProperties":false},"disabledCI":{"type":"boolean","description":"Whether CI should be disabled. Only relevant for jobs deploying directly from version control.","default":false},"buildConfiguration":{"type":"object","properties":{"pathIgnoreRules":{"type":"array","items":{"type":"string","maxLength":260,"description":"A path ignore rule, following `.gitignore` syntax. For example, `*.md` will ignore all files ending with `.md`.","example":"README.md"},"maxItems":200,"description":"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."},"isAllowList":{"type":"boolean","description":"If `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`.","example":false},"ciIgnoreFlagsEnabled":{"type":"boolean","description":"If `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":{"type":"array","items":{"type":"string","maxLength":72,"description":"A commit ignore flag.","example":"[skip ci]"},"maxItems":200,"description":"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]\"]`","example":["[skip ci]","[ci skip]","[no ci]","[skip nf]","[nf skip]","[northflank skip]","[skip northflank]"]},"dockerfileTarget":{"type":"string","description":"If your Dockerfile contains multiple build stages, you can specify the target stage by entering its name here."},"dockerCredentials":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The ID of the docker credentials to use.","example":"example-docker-credential"}},"includeGitFolder":{"type":"boolean","description":"Include .git folder inside the build context"},"fullGitClone":{"type":"boolean","description":"Include the entire git history as part of the .git folder. Only relevant if \"includeGitFolder\" is set."},"enableGitLfs":{"type":"boolean","description":"Enable Git LFS support for the build"},"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false}},"additionalProperties":false,"default":{"pathIgnoreRules":[],"isAllowList":false,"ciIgnoreFlagsEnabled":false}},"buildSettings":{"oneOf":[{"type":"object","properties":{"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false},"dockerfile":{"type":"object","properties":{"useCache":{"type":"boolean","description":"DEPRECATED: This field will be removed in the near future and currently has no effect."},"buildEngine":{"type":"string","enum":["buildkit","kaniko"],"description":"Build engine to use. Defaults to recommended build engine `buildkit`","example":"buildkit","default":"buildkit"},"dockerFilePath":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]+$","description":"The file path of the Dockerfile.","example":"/Dockerfile"},"dockerWorkDir":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*$","description":"The working directory of the Dockerfile.","example":"/"},"buildkit":{"type":"object","properties":{"useCache":{"type":"boolean","description":"Use persistent storage to cache build layers.","example":true,"default":false},"cacheStorageSize":{"type":"integer","description":"The amount of persistent storage available to each build in MB.","example":32768},"useInternalCache":{"type":"boolean","description":"DEPRECATED: This field will be removed in the near future.","default":false},"internalCacheStorage":{"type":"number","format":"float","description":"DEPRECATED: This field will be removed in the near future."}},"additionalProperties":false}},"required":["dockerFilePath","dockerWorkDir"],"additionalProperties":false}},"required":["dockerfile"],"additionalProperties":false,"description":"Build from a Dockerfile"},{"type":"object","properties":{"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false},"buildpack":{"type":"object","properties":{"builder":{"type":"string","enum":["HEROKU_24","HEROKU_22","HEROKU_22_CLASSIC","HEROKU_20","HEROKU_18","GOOGLE_22","GOOGLE_V1","CNB_ALPINE","CNB_BIONIC","PAKETO_JAMMY_TINY","PAKETO_JAMMY_BASE","PAKETO_JAMMY_FULL","PAKETO_TINY","PAKETO_BASE","PAKETO_FULL"],"description":"Buildpack stack to use. Defaults to recommended stack `HEROKU_24`.","example":"HEROKU_24","default":"HEROKU_24"},"buildpackLocators":{"type":"array","items":{"type":"string","description":"Url or registry identifier of custom Buildpack.","example":"https://buildpack-registry.heroku.com/cnb/mars/create-react-app"},"description":"Array of custom Buildpacks to use.","default":[]},"buildContext":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*$","description":"The working directory to build in.","example":"/","default":"/"},"useCache":{"type":"boolean","description":"Should build dependencies be cached?","example":false,"default":false}},"additionalProperties":false}},"required":["buildpack"],"additionalProperties":false,"description":"Build from a Buildpack"}],"description":"Build engine"},"runtimeEnvironment":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"An object containing the runtime environment to set for the job. Keys may only contain letters, numbers, hyphens, forward slashes and dots.","example":{"variable1":"abcdef","variable2":"12345"},"default":{}},"runtimeFiles":{"type":"object","properties":{},"description":"Secret files as JSON object, encrypted at rest. File path must be absolute","example":{"/dir/fileName":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"buildArguments":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"An object containing the build arguments to set for the job. Keys may only contain letters, numbers, hyphens, forward slashes and dots.","example":{"variable1":"abcdef","variable2":"12345"},"default":{}},"buildFiles":{"type":"object","properties":{},"description":"Secret files as JSON object, encrypted at rest. File path must be absolute","example":{"/dir/fileName":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"dockerSecretMounts":{"type":"object","properties":{},"description":"Docker secret mount contents as JSON object, encrypted at rest. Must be a valid Docker secret mount identifier","example":{"example-secret-mount_1":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"healthChecks":{"type":"array","items":{"type":"object","properties":{"protocol":{"type":"string","enum":["HTTP","CMD","TCP"],"description":"The protocol to access the health check with.","example":"HTTP"},"type":{"type":"string","enum":["livenessProbe","readinessProbe","startupProbe"],"description":"The type of health check.","example":"readinessProbe"},"path":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*((\\?([a-zA-Z0-9-._]+(=[a-zA-Z0-9-._]+)?)*)(&([a-zA-Z0-9-._]+(=[a-zA-Z0-9-._]+)?)*)*)?$","description":"The path of the health check endpoint. Required when protocol is HTTP.","example":"/health-check"},"cmd":{"type":"string","description":"The command to run for the health check. Required when protocol is CMD"},"port":{"type":"integer","minimum":1,"description":"Port number for the health check endpoint. Required when protocol is HTTP.","example":8080},"initialDelaySeconds":{"type":"integer","minimum":1,"maximum":180,"description":"Initial delay, in seconds, before the health check is first run.","example":10},"periodSeconds":{"type":"integer","minimum":10,"maximum":600,"description":"The time between each check, in seconds.","example":60},"timeoutSeconds":{"type":"integer","minimum":1,"maximum":60,"description":"The time to wait for a response before marking the health check as a failure.","example":1},"failureThreshold":{"type":"integer","minimum":1,"maximum":255,"description":"The maximum number of allowed failures.","example":3},"successThreshold":{"type":"integer","minimum":1,"maximum":255,"description":"The number of successes required to mark the health check as a success.","example":1}},"required":["protocol","type","initialDelaySeconds","periodSeconds","timeoutSeconds","failureThreshold"],"additionalProperties":false,"description":"A health check object."},"description":"An array of health checks."},"backoffLimit":{"type":"integer","minimum":0,"description":"The number of attempts to rerun a job before it is marked as failed.","example":0},"runOnSourceChange":{"type":"string","enum":["never","cd-promote","always"],"description":"Configure when the job should be run if the source image changes.","example":"never","default":"never"},"activeDeadlineSeconds":{"type":"integer","minimum":1,"nullable":true,"description":"The maximum amount of time, in seconds, for a job to run before it is marked as failed.","example":600},"jobType":{"type":"string","enum":["manual"],"description":"Type of the job (manual or manual)","example":"manual"},"id":{"type":"string","description":"Identifier for the job","example":"example-job"},"appId":{"type":"string","description":"Full identifier used for job deployment","example":"/example-user/default-project/example-job"},"deployment":{"type":"object","properties":{"buildpack":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customProcess","customCommand","customEntrypointCustomCommand","originalEntrypointCustomCommand"],"description":"Type of buildpack run configuration"},"customProcess":{"type":"string","description":"Custom process which should be run. Required in case where `configType` is `customProcess`"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be run. Required in case where `configType` is `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be run. Required in case where `configType` is `customCommand`, `customEntrypointCustomCommand` or `originalEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of buildpack runtime"},"docker":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customEntrypoint","customCommand","customEntrypointCustomCommand"],"description":"Type of entrypoint & command override configuration","example":"default"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be used. Required in case where `configType` is `customEntrypoint` or `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be used. Required in case where `configType` is `customCommand` or `customEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of docker runtime"},"storage":{"type":"object","properties":{"useHdbStorage":{"type":"boolean"},"usePdSsdStorage":{"type":"boolean"},"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":1024,"description":"Ephemeral storage per container in MB","example":1024}},"additionalProperties":false},"shmSize":{"type":"integer","minimum":64,"description":"Configures the amount of available memory-backed disk space available to /dev/shm"}},"additionalProperties":false},"gpu":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"gpuType":{"type":"string"},"gpuCount":{"type":"integer"},"timesliced":{"type":"boolean"}},"required":["gpuType"],"additionalProperties":false}},"additionalProperties":false},"gracePeriodSeconds":{"type":"integer","minimum":15,"maximum":600,"description":"The 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."},"metadata":{"type":"object","properties":{"labels":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom labels for the workload."},"annotations":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom annotations for the workload as string or object."}},"additionalProperties":false,"description":"Allow setting custom labels and annotations for workloads."},"vcs":{"type":"object","properties":{"projectUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo to build.","example":"https://github.com/northflank/gatsby-with-northflank"},"projectType":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string","minLength":24,"maxLength":24,"description":"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 `vcsLinkId` is provided, Northflank will instead use your linked account with that ID."},"projectBranch":{"type":"string","description":"The name of the branch to use.","example":"master"}},"required":["projectUrl","projectType","projectBranch"],"additionalProperties":false},"external":{"type":"object","properties":{"imagePath":{"type":"string","pattern":"^(?:(?:https?:\\/\\/)?([a-zA-Z0-9\\-]+\\.[a-zA-Z0-9\\.\\-]+)(\\/v1)?)?(?:\\/)?([a-zA-Z/-9\\.\\-_]+)(?:\\:([a-zA-Z/-9\\.\\-_\\:]+)|\\@([a-zA-Z/-9\\.\\-_\\:]+))$","description":"Image to be deployed. When not deploying from Dockerhub the URL must be specified.","example":"nginx:latest"},"credentials":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"ID of the saved credentials to use to access this external image.","example":"example-credentials"}},"required":["imagePath"],"additionalProperties":false},"internal":{"type":"object","properties":{"id":{"anyOf":[{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":54,"example":"example-build-service"},{"type":"string","example":"example-project/example-build-service"}],"description":"ID of the build service to deploy"},"branch":{"type":"string","description":"Branch to deploy","example":"master"},"buildSHA":{"oneOf":[{"type":"string","minLength":40,"maxLength":40,"description":"A commit sha."},{"type":"string","enum":["latest"],"description":"Latest commit."}],"description":"Commit SHA to deploy, or 'latest' to deploy the most recent commit","example":"latest"},"buildId":{"type":"string","description":"ID of the build that should be deployed","example":"premium-guide-6393"}},"additionalProperties":false},"imageUrl":{"type":"string","description":"Image registry url of the deployed image."}},"additionalProperties":false,"default":{}},"status":{"type":"object","properties":{"build":{"type":"object","properties":{"status":{"type":"string","enum":["QUEUED","PENDING","UNSCHEDULABLE","STARTING","CLONING","BUILDING","UPLOADING","ABORTED","FAILURE","SUBMISSION_FAILURE","SUCCESS","CRASHED","IN_PROGRESS"],"description":"The current status of the build.","example":"SUCCESS"},"lastTransitionTime":{"type":"string","format":"date-time","description":"The timestamp of when the build reached this status.","example":"2021-11-29T11:47:16.624Z"}},"required":["status"],"additionalProperties":false,"description":"Details about the status of the most recent build."}},"additionalProperties":false,"description":"Details about the current job status."},"cluster":{"type":"object","properties":{"id":{"type":"string","description":"The id of the cluster associated with this project.","example":"nf-europe-west"},"name":{"type":"string","description":"The name of the cluster associated with this project.","example":"nf-europe-west"},"namespace":{"type":"string","description":"Namespace this resource is located within on the cluster.","example":"ns-8zy2mcjh9zn2"},"loadBalancers":{"type":"array","items":{"type":"string","example":"lb.659200800000000000000000.northflank.com"},"description":"Load balancer DNS for the cluster."}},"required":["id","name"],"additionalProperties":false,"description":"Cluster information"},"createdAt":{"type":"string","format":"date-time","description":"time of creation"},"updatedAt":{"type":"string","format":"date-time","description":"time of update"}},"required":["name","billing","backoffLimit","jobType","id","appId","status","cluster"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Jobs","project"],"security":[],"deprecated":true,"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":52,"description":"The name of the job.","example":"Example Job"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"A description of the job.","example":"A job description"},"stageId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"infrastructure":{"type":"object","properties":{"architecture":{"type":"string","enum":["x86","arm"]}},"additionalProperties":false},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"billing":{"type":"object","properties":{"buildPlan":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The ID of the build plan to use.","example":"nf-compute-200-8"},"deploymentPlan":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The ID of the deployment plan to use.","example":"nf-compute-20"},"gpu":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"gpuType":{"type":"string"},"gpuCount":{"type":"integer"},"timesliced":{"type":"boolean"}},"required":["gpuType"],"additionalProperties":false}},"additionalProperties":false}},"required":["deploymentPlan"],"additionalProperties":false},"deployment":{"oneOf":[{"type":"object","properties":{"buildpack":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customProcess","customCommand","customEntrypointCustomCommand","originalEntrypointCustomCommand"],"description":"Type of buildpack run configuration"},"customProcess":{"type":"string","description":"Custom process which should be run. Required in case where `configType` is `customProcess`"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be run. Required in case where `configType` is `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be run. Required in case where `configType` is `customCommand`, `customEntrypointCustomCommand` or `originalEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of buildpack runtime"},"docker":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customEntrypoint","customCommand","customEntrypointCustomCommand"],"description":"Type of entrypoint & command override configuration","example":"default"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be used. Required in case where `configType` is `customEntrypoint` or `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be used. Required in case where `configType` is `customCommand` or `customEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of docker runtime"},"storage":{"type":"object","properties":{"useHdbStorage":{"type":"boolean"},"usePdSsdStorage":{"type":"boolean"},"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":1024,"description":"Ephemeral storage per container in MB","example":1024}},"additionalProperties":false},"shmSize":{"type":"integer","minimum":64,"description":"Configures the amount of available memory-backed disk space available to /dev/shm"}},"additionalProperties":false},"gpu":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"gpuType":{"type":"string"},"gpuCount":{"type":"integer"},"timesliced":{"type":"boolean"}},"required":["gpuType"],"additionalProperties":false}},"additionalProperties":false},"gracePeriodSeconds":{"type":"integer","minimum":15,"maximum":600,"description":"The 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."},"metadata":{"type":"object","properties":{"labels":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom labels for the workload."},"annotations":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom annotations for the workload as string or object."}},"additionalProperties":false,"description":"Allow setting custom labels and annotations for workloads."},"vcs":{"type":"object","properties":{"projectUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo to build.","example":"https://github.com/northflank/gatsby-with-northflank"},"projectType":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string","minLength":24,"maxLength":24,"description":"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 `vcsLinkId` is provided, Northflank will instead use your linked account with that ID."},"projectBranch":{"type":"string","description":"The name of the branch to use.","example":"master"}},"required":["projectUrl","projectType","projectBranch"],"additionalProperties":false}},"required":["vcs"],"additionalProperties":false,"description":"Deploy from version control"},{"type":"object","properties":{"buildpack":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customProcess","customCommand","customEntrypointCustomCommand","originalEntrypointCustomCommand"],"description":"Type of buildpack run configuration"},"customProcess":{"type":"string","description":"Custom process which should be run. Required in case where `configType` is `customProcess`"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be run. Required in case where `configType` is `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be run. Required in case where `configType` is `customCommand`, `customEntrypointCustomCommand` or `originalEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of buildpack runtime"},"docker":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customEntrypoint","customCommand","customEntrypointCustomCommand"],"description":"Type of entrypoint & command override configuration","example":"default"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be used. Required in case where `configType` is `customEntrypoint` or `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be used. Required in case where `configType` is `customCommand` or `customEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of docker runtime"},"storage":{"type":"object","properties":{"useHdbStorage":{"type":"boolean"},"usePdSsdStorage":{"type":"boolean"},"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":1024,"description":"Ephemeral storage per container in MB","example":1024}},"additionalProperties":false},"shmSize":{"type":"integer","minimum":64,"description":"Configures the amount of available memory-backed disk space available to /dev/shm"}},"additionalProperties":false},"gpu":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"gpuType":{"type":"string"},"gpuCount":{"type":"integer"},"timesliced":{"type":"boolean"}},"required":["gpuType"],"additionalProperties":false}},"additionalProperties":false},"gracePeriodSeconds":{"type":"integer","minimum":15,"maximum":600,"description":"The 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."},"metadata":{"type":"object","properties":{"labels":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom labels for the workload."},"annotations":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom annotations for the workload as string or object."}},"additionalProperties":false,"description":"Allow setting custom labels and annotations for workloads."},"external":{"type":"object","properties":{"imagePath":{"type":"string","pattern":"^(?:(?:https?:\\/\\/)?([a-zA-Z0-9\\-]+\\.[a-zA-Z0-9\\.\\-]+)(\\/v1)?)?(?:\\/)?([a-zA-Z/-9\\.\\-_]+)(?:\\:([a-zA-Z/-9\\.\\-_\\:]+)|\\@([a-zA-Z/-9\\.\\-_\\:]+))$","description":"Image to be deployed. When not deploying from Dockerhub the URL must be specified.","example":"nginx:latest"},"credentials":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"ID of the saved credentials to use to access this external image.","example":"example-credentials"}},"required":["imagePath"],"additionalProperties":false}},"required":["external"],"additionalProperties":false,"description":"Deploy from an external image"},{"type":"object","properties":{"buildpack":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customProcess","customCommand","customEntrypointCustomCommand","originalEntrypointCustomCommand"],"description":"Type of buildpack run configuration"},"customProcess":{"type":"string","description":"Custom process which should be run. Required in case where `configType` is `customProcess`"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be run. Required in case where `configType` is `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be run. Required in case where `configType` is `customCommand`, `customEntrypointCustomCommand` or `originalEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of buildpack runtime"},"docker":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customEntrypoint","customCommand","customEntrypointCustomCommand"],"description":"Type of entrypoint & command override configuration","example":"default"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be used. Required in case where `configType` is `customEntrypoint` or `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be used. Required in case where `configType` is `customCommand` or `customEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of docker runtime"},"storage":{"type":"object","properties":{"useHdbStorage":{"type":"boolean"},"usePdSsdStorage":{"type":"boolean"},"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":1024,"description":"Ephemeral storage per container in MB","example":1024}},"additionalProperties":false},"shmSize":{"type":"integer","minimum":64,"description":"Configures the amount of available memory-backed disk space available to /dev/shm"}},"additionalProperties":false},"gpu":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"gpuType":{"type":"string"},"gpuCount":{"type":"integer"},"timesliced":{"type":"boolean"}},"required":["gpuType"],"additionalProperties":false}},"additionalProperties":false},"gracePeriodSeconds":{"type":"integer","minimum":15,"maximum":600,"description":"The 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."},"metadata":{"type":"object","properties":{"labels":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom labels for the workload."},"annotations":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom annotations for the workload as string or object."}},"additionalProperties":false,"description":"Allow setting custom labels and annotations for workloads."},"internal":{"type":"object","properties":{"id":{"anyOf":[{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":54,"example":"example-build-service"},{"type":"string","example":"example-project/example-build-service"}],"description":"ID of the build service to deploy"},"branch":{"type":"string","description":"Branch to deploy","example":"master"},"buildSHA":{"oneOf":[{"type":"string","minLength":40,"maxLength":40,"description":"A commit sha."},{"type":"string","enum":["latest"],"description":"Latest commit."}],"description":"Commit SHA to deploy, or 'latest' to deploy the most recent commit","example":"latest"},"buildId":{"type":"string","description":"ID of the build that should be deployed","example":"premium-guide-6393"}},"additionalProperties":false}},"required":["internal"],"additionalProperties":false,"description":"Deploy from a Northflank build service"},{"type":"object","properties":{},"additionalProperties":false,"description":"Choose later"}],"description":"Where to deploy the job from."},"disabledCI":{"type":"boolean","description":"Whether CI should be disabled. Only relevant for jobs deploying directly from version control.","default":false},"buildConfiguration":{"type":"object","properties":{"pathIgnoreRules":{"type":"array","items":{"type":"string","maxLength":260,"description":"A path ignore rule, following `.gitignore` syntax. For example, `*.md` will ignore all files ending with `.md`.","example":"README.md"},"maxItems":200,"description":"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."},"isAllowList":{"type":"boolean","description":"If `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`.","example":false},"ciIgnoreFlagsEnabled":{"type":"boolean","description":"If `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":{"type":"array","items":{"type":"string","maxLength":72,"description":"A commit ignore flag.","example":"[skip ci]"},"maxItems":200,"description":"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]\"]`","example":["[skip ci]","[ci skip]","[no ci]","[skip nf]","[nf skip]","[northflank skip]","[skip northflank]"]},"dockerfileTarget":{"type":"string","description":"If your Dockerfile contains multiple build stages, you can specify the target stage by entering its name here."},"dockerCredentials":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The ID of the docker credentials to use.","example":"example-docker-credential"}},"includeGitFolder":{"type":"boolean","description":"Include .git folder inside the build context"},"fullGitClone":{"type":"boolean","description":"Include the entire git history as part of the .git folder. Only relevant if \"includeGitFolder\" is set."},"enableGitLfs":{"type":"boolean","description":"Enable Git LFS support for the build"},"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false}},"additionalProperties":false,"default":{"pathIgnoreRules":[],"isAllowList":false,"ciIgnoreFlagsEnabled":false}},"buildSettings":{"oneOf":[{"type":"object","properties":{"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false},"dockerfile":{"type":"object","properties":{"useCache":{"type":"boolean","description":"DEPRECATED: This field will be removed in the near future and currently has no effect."},"buildEngine":{"type":"string","enum":["buildkit","kaniko"],"description":"Build engine to use. Defaults to recommended build engine `buildkit`","example":"buildkit","default":"buildkit"},"dockerFilePath":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]+$","description":"The file path of the Dockerfile.","example":"/Dockerfile"},"dockerWorkDir":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*$","description":"The working directory of the Dockerfile.","example":"/"},"buildkit":{"type":"object","properties":{"useCache":{"type":"boolean","description":"Use persistent storage to cache build layers.","example":true,"default":false},"cacheStorageSize":{"type":"integer","description":"The amount of persistent storage available to each build in MB.","example":32768},"useInternalCache":{"type":"boolean","description":"DEPRECATED: This field will be removed in the near future.","default":false},"internalCacheStorage":{"type":"number","format":"float","description":"DEPRECATED: This field will be removed in the near future."}},"additionalProperties":false}},"required":["dockerFilePath","dockerWorkDir"],"additionalProperties":false}},"required":["dockerfile"],"additionalProperties":false,"description":"Build from a Dockerfile"},{"type":"object","properties":{"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false},"buildpack":{"type":"object","properties":{"builder":{"type":"string","enum":["HEROKU_24","HEROKU_22","HEROKU_22_CLASSIC","HEROKU_20","HEROKU_18","GOOGLE_22","GOOGLE_V1","CNB_ALPINE","CNB_BIONIC","PAKETO_JAMMY_TINY","PAKETO_JAMMY_BASE","PAKETO_JAMMY_FULL","PAKETO_TINY","PAKETO_BASE","PAKETO_FULL"],"description":"Buildpack stack to use. Defaults to recommended stack `HEROKU_24`.","example":"HEROKU_24","default":"HEROKU_24"},"buildpackLocators":{"type":"array","items":{"type":"string","description":"Url or registry identifier of custom Buildpack.","example":"https://buildpack-registry.heroku.com/cnb/mars/create-react-app"},"description":"Array of custom Buildpacks to use.","default":[]},"buildContext":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*$","description":"The working directory to build in.","example":"/","default":"/"},"useCache":{"type":"boolean","description":"Should build dependencies be cached?","example":false,"default":false}},"additionalProperties":false}},"required":["buildpack"],"additionalProperties":false,"description":"Build from a Buildpack"}],"description":"Build engine"},"runtimeEnvironment":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"An object containing the runtime environment to set for the job. Keys may only contain letters, numbers, hyphens, forward slashes and dots.","example":{"variable1":"abcdef","variable2":"12345"},"default":{}},"runtimeFiles":{"type":"object","properties":{},"description":"Secret files as JSON object, encrypted at rest. File path must be absolute","example":{"/dir/fileName":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"buildArguments":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"An object containing the build arguments to set for the job. Keys may only contain letters, numbers, hyphens, forward slashes and dots.","example":{"variable1":"abcdef","variable2":"12345"},"default":{}},"buildFiles":{"type":"object","properties":{},"description":"Secret files as JSON object, encrypted at rest. File path must be absolute","example":{"/dir/fileName":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"dockerSecretMounts":{"type":"object","properties":{},"description":"Docker secret mount contents as JSON object, encrypted at rest. Must be a valid Docker secret mount identifier","example":{"example-secret-mount_1":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"healthChecks":{"type":"array","items":{"type":"object","properties":{"protocol":{"type":"string","enum":["HTTP","CMD","TCP"],"description":"The protocol to access the health check with.","example":"HTTP"},"type":{"type":"string","enum":["livenessProbe","readinessProbe","startupProbe"],"description":"The type of health check.","example":"readinessProbe"},"path":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*((\\?([a-zA-Z0-9-._]+(=[a-zA-Z0-9-._]+)?)*)(&([a-zA-Z0-9-._]+(=[a-zA-Z0-9-._]+)?)*)*)?$","description":"The path of the health check endpoint. Required when protocol is HTTP.","example":"/health-check"},"cmd":{"type":"string","description":"The command to run for the health check. Required when protocol is CMD"},"port":{"type":"integer","minimum":1,"description":"Port number for the health check endpoint. Required when protocol is HTTP.","example":8080},"initialDelaySeconds":{"type":"integer","minimum":1,"maximum":180,"description":"Initial delay, in seconds, before the health check is first run.","example":10},"periodSeconds":{"type":"integer","minimum":10,"maximum":600,"description":"The time between each check, in seconds.","example":60},"timeoutSeconds":{"type":"integer","minimum":1,"maximum":60,"description":"The time to wait for a response before marking the health check as a failure.","example":1},"failureThreshold":{"type":"integer","minimum":1,"maximum":255,"description":"The maximum number of allowed failures.","example":3},"successThreshold":{"type":"integer","minimum":1,"maximum":255,"description":"The number of successes required to mark the health check as a success.","example":1}},"required":["protocol","type","initialDelaySeconds","periodSeconds","timeoutSeconds","failureThreshold"],"additionalProperties":false,"description":"A health check object."},"description":"An array of health checks."},"backoffLimit":{"type":"integer","minimum":0,"description":"The number of attempts to rerun a job before it is marked as failed.","example":0},"runOnSourceChange":{"type":"string","enum":["never","cd-promote","always"],"description":"Configure when the job should be run if the source image changes.","example":"never","default":"never"},"activeDeadlineSeconds":{"type":"integer","minimum":1,"nullable":true,"description":"The maximum amount of time, in seconds, for a job to run before it is marked as failed.","example":600}},"required":["name","billing","backoffLimit"],"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Project > Jobs > General > Create","x-nf-team-scoped":true,"x-nf-subheading":"create job","x-nf-cli-command":["create","job","manual"],"x-nf-deprecation-replacement":"/jobs/create-job","x-nf-deprecation-message":"Requests should instead use the relevant type-agnostic job endpoint."},"v1-projects--projectId--jobs-manual-put":{"operationId":"putProjectsJobsManual","summary":"Put manual job","description":"Creates or updates a new manual job that only runs when initiated via the UI, CLI, API or JS client.","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}}],"responses":{"200":{"description":"Details about the created or updated job.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":52,"description":"The name of the job.","example":"Example Job"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"A description of the job.","example":"A job description"},"stageId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"infrastructure":{"type":"object","properties":{"architecture":{"type":"string","enum":["x86","arm"]}},"additionalProperties":false},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"billing":{"type":"object","properties":{"buildPlan":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The ID of the build plan to use.","example":"nf-compute-200-8"},"deploymentPlan":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The ID of the deployment plan to use.","example":"nf-compute-20"},"gpu":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"gpuType":{"type":"string"},"gpuCount":{"type":"integer"},"timesliced":{"type":"boolean"}},"required":["gpuType"],"additionalProperties":false}},"additionalProperties":false}},"required":["deploymentPlan"],"additionalProperties":false},"disabledCI":{"type":"boolean","description":"Whether CI should be disabled. Only relevant for jobs deploying directly from version control.","default":false},"buildConfiguration":{"type":"object","properties":{"pathIgnoreRules":{"type":"array","items":{"type":"string","maxLength":260,"description":"A path ignore rule, following `.gitignore` syntax. For example, `*.md` will ignore all files ending with `.md`.","example":"README.md"},"maxItems":200,"description":"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."},"isAllowList":{"type":"boolean","description":"If `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`.","example":false},"ciIgnoreFlagsEnabled":{"type":"boolean","description":"If `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":{"type":"array","items":{"type":"string","maxLength":72,"description":"A commit ignore flag.","example":"[skip ci]"},"maxItems":200,"description":"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]\"]`","example":["[skip ci]","[ci skip]","[no ci]","[skip nf]","[nf skip]","[northflank skip]","[skip northflank]"]},"dockerfileTarget":{"type":"string","description":"If your Dockerfile contains multiple build stages, you can specify the target stage by entering its name here."},"dockerCredentials":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The ID of the docker credentials to use.","example":"example-docker-credential"}},"includeGitFolder":{"type":"boolean","description":"Include .git folder inside the build context"},"fullGitClone":{"type":"boolean","description":"Include the entire git history as part of the .git folder. Only relevant if \"includeGitFolder\" is set."},"enableGitLfs":{"type":"boolean","description":"Enable Git LFS support for the build"},"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false}},"additionalProperties":false,"default":{"pathIgnoreRules":[],"isAllowList":false,"ciIgnoreFlagsEnabled":false}},"buildSettings":{"oneOf":[{"type":"object","properties":{"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false},"dockerfile":{"type":"object","properties":{"useCache":{"type":"boolean","description":"DEPRECATED: This field will be removed in the near future and currently has no effect."},"buildEngine":{"type":"string","enum":["buildkit","kaniko"],"description":"Build engine to use. Defaults to recommended build engine `buildkit`","example":"buildkit","default":"buildkit"},"dockerFilePath":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]+$","description":"The file path of the Dockerfile.","example":"/Dockerfile"},"dockerWorkDir":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*$","description":"The working directory of the Dockerfile.","example":"/"},"buildkit":{"type":"object","properties":{"useCache":{"type":"boolean","description":"Use persistent storage to cache build layers.","example":true,"default":false},"cacheStorageSize":{"type":"integer","description":"The amount of persistent storage available to each build in MB.","example":32768},"useInternalCache":{"type":"boolean","description":"DEPRECATED: This field will be removed in the near future.","default":false},"internalCacheStorage":{"type":"number","format":"float","description":"DEPRECATED: This field will be removed in the near future."}},"additionalProperties":false}},"required":["dockerFilePath","dockerWorkDir"],"additionalProperties":false}},"required":["dockerfile"],"additionalProperties":false,"description":"Build from a Dockerfile"},{"type":"object","properties":{"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false},"buildpack":{"type":"object","properties":{"builder":{"type":"string","enum":["HEROKU_24","HEROKU_22","HEROKU_22_CLASSIC","HEROKU_20","HEROKU_18","GOOGLE_22","GOOGLE_V1","CNB_ALPINE","CNB_BIONIC","PAKETO_JAMMY_TINY","PAKETO_JAMMY_BASE","PAKETO_JAMMY_FULL","PAKETO_TINY","PAKETO_BASE","PAKETO_FULL"],"description":"Buildpack stack to use. Defaults to recommended stack `HEROKU_24`.","example":"HEROKU_24","default":"HEROKU_24"},"buildpackLocators":{"type":"array","items":{"type":"string","description":"Url or registry identifier of custom Buildpack.","example":"https://buildpack-registry.heroku.com/cnb/mars/create-react-app"},"description":"Array of custom Buildpacks to use.","default":[]},"buildContext":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*$","description":"The working directory to build in.","example":"/","default":"/"},"useCache":{"type":"boolean","description":"Should build dependencies be cached?","example":false,"default":false}},"additionalProperties":false}},"required":["buildpack"],"additionalProperties":false,"description":"Build from a Buildpack"}],"description":"Build engine"},"runtimeEnvironment":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"An object containing the runtime environment to set for the job. Keys may only contain letters, numbers, hyphens, forward slashes and dots.","example":{"variable1":"abcdef","variable2":"12345"},"default":{}},"runtimeFiles":{"type":"object","properties":{},"description":"Secret files as JSON object, encrypted at rest. File path must be absolute","example":{"/dir/fileName":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"buildArguments":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"An object containing the build arguments to set for the job. Keys may only contain letters, numbers, hyphens, forward slashes and dots.","example":{"variable1":"abcdef","variable2":"12345"},"default":{}},"buildFiles":{"type":"object","properties":{},"description":"Secret files as JSON object, encrypted at rest. File path must be absolute","example":{"/dir/fileName":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"dockerSecretMounts":{"type":"object","properties":{},"description":"Docker secret mount contents as JSON object, encrypted at rest. Must be a valid Docker secret mount identifier","example":{"example-secret-mount_1":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"healthChecks":{"type":"array","items":{"type":"object","properties":{"protocol":{"type":"string","enum":["HTTP","CMD","TCP"],"description":"The protocol to access the health check with.","example":"HTTP"},"type":{"type":"string","enum":["livenessProbe","readinessProbe","startupProbe"],"description":"The type of health check.","example":"readinessProbe"},"path":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*((\\?([a-zA-Z0-9-._]+(=[a-zA-Z0-9-._]+)?)*)(&([a-zA-Z0-9-._]+(=[a-zA-Z0-9-._]+)?)*)*)?$","description":"The path of the health check endpoint. Required when protocol is HTTP.","example":"/health-check"},"cmd":{"type":"string","description":"The command to run for the health check. Required when protocol is CMD"},"port":{"type":"integer","minimum":1,"description":"Port number for the health check endpoint. Required when protocol is HTTP.","example":8080},"initialDelaySeconds":{"type":"integer","minimum":1,"maximum":180,"description":"Initial delay, in seconds, before the health check is first run.","example":10},"periodSeconds":{"type":"integer","minimum":10,"maximum":600,"description":"The time between each check, in seconds.","example":60},"timeoutSeconds":{"type":"integer","minimum":1,"maximum":60,"description":"The time to wait for a response before marking the health check as a failure.","example":1},"failureThreshold":{"type":"integer","minimum":1,"maximum":255,"description":"The maximum number of allowed failures.","example":3},"successThreshold":{"type":"integer","minimum":1,"maximum":255,"description":"The number of successes required to mark the health check as a success.","example":1}},"required":["protocol","type","initialDelaySeconds","periodSeconds","timeoutSeconds","failureThreshold"],"additionalProperties":false,"description":"A health check object."},"description":"An array of health checks."},"backoffLimit":{"type":"integer","minimum":0,"description":"The number of attempts to rerun a job before it is marked as failed.","example":0},"runOnSourceChange":{"type":"string","enum":["never","cd-promote","always"],"description":"Configure when the job should be run if the source image changes.","example":"never","default":"never"},"activeDeadlineSeconds":{"type":"integer","minimum":1,"nullable":true,"description":"The maximum amount of time, in seconds, for a job to run before it is marked as failed.","example":600},"jobType":{"type":"string","enum":["manual"],"description":"Type of the job (manual or manual)","example":"manual"},"id":{"type":"string","description":"Identifier for the job","example":"example-job"},"appId":{"type":"string","description":"Full identifier used for job deployment","example":"/example-user/default-project/example-job"},"deployment":{"type":"object","properties":{"buildpack":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customProcess","customCommand","customEntrypointCustomCommand","originalEntrypointCustomCommand"],"description":"Type of buildpack run configuration"},"customProcess":{"type":"string","description":"Custom process which should be run. Required in case where `configType` is `customProcess`"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be run. Required in case where `configType` is `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be run. Required in case where `configType` is `customCommand`, `customEntrypointCustomCommand` or `originalEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of buildpack runtime"},"docker":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customEntrypoint","customCommand","customEntrypointCustomCommand"],"description":"Type of entrypoint & command override configuration","example":"default"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be used. Required in case where `configType` is `customEntrypoint` or `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be used. Required in case where `configType` is `customCommand` or `customEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of docker runtime"},"storage":{"type":"object","properties":{"useHdbStorage":{"type":"boolean"},"usePdSsdStorage":{"type":"boolean"},"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":1024,"description":"Ephemeral storage per container in MB","example":1024}},"additionalProperties":false},"shmSize":{"type":"integer","minimum":64,"description":"Configures the amount of available memory-backed disk space available to /dev/shm"}},"additionalProperties":false},"gpu":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"gpuType":{"type":"string"},"gpuCount":{"type":"integer"},"timesliced":{"type":"boolean"}},"required":["gpuType"],"additionalProperties":false}},"additionalProperties":false},"gracePeriodSeconds":{"type":"integer","minimum":15,"maximum":600,"description":"The 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."},"metadata":{"type":"object","properties":{"labels":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom labels for the workload."},"annotations":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom annotations for the workload as string or object."}},"additionalProperties":false,"description":"Allow setting custom labels and annotations for workloads."},"vcs":{"type":"object","properties":{"projectUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo to build.","example":"https://github.com/northflank/gatsby-with-northflank"},"projectType":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string","minLength":24,"maxLength":24,"description":"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 `vcsLinkId` is provided, Northflank will instead use your linked account with that ID."},"projectBranch":{"type":"string","description":"The name of the branch to use.","example":"master"}},"required":["projectUrl","projectType","projectBranch"],"additionalProperties":false},"external":{"type":"object","properties":{"imagePath":{"type":"string","pattern":"^(?:(?:https?:\\/\\/)?([a-zA-Z0-9\\-]+\\.[a-zA-Z0-9\\.\\-]+)(\\/v1)?)?(?:\\/)?([a-zA-Z/-9\\.\\-_]+)(?:\\:([a-zA-Z/-9\\.\\-_\\:]+)|\\@([a-zA-Z/-9\\.\\-_\\:]+))$","description":"Image to be deployed. When not deploying from Dockerhub the URL must be specified.","example":"nginx:latest"},"credentials":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"ID of the saved credentials to use to access this external image.","example":"example-credentials"}},"required":["imagePath"],"additionalProperties":false},"internal":{"type":"object","properties":{"id":{"anyOf":[{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":54,"example":"example-build-service"},{"type":"string","example":"example-project/example-build-service"}],"description":"ID of the build service to deploy"},"branch":{"type":"string","description":"Branch to deploy","example":"master"},"buildSHA":{"oneOf":[{"type":"string","minLength":40,"maxLength":40,"description":"A commit sha."},{"type":"string","enum":["latest"],"description":"Latest commit."}],"description":"Commit SHA to deploy, or 'latest' to deploy the most recent commit","example":"latest"},"buildId":{"type":"string","description":"ID of the build that should be deployed","example":"premium-guide-6393"}},"additionalProperties":false},"imageUrl":{"type":"string","description":"Image registry url of the deployed image."}},"additionalProperties":false,"default":{}},"status":{"type":"object","properties":{"build":{"type":"object","properties":{"status":{"type":"string","enum":["QUEUED","PENDING","UNSCHEDULABLE","STARTING","CLONING","BUILDING","UPLOADING","ABORTED","FAILURE","SUBMISSION_FAILURE","SUCCESS","CRASHED","IN_PROGRESS"],"description":"The current status of the build.","example":"SUCCESS"},"lastTransitionTime":{"type":"string","format":"date-time","description":"The timestamp of when the build reached this status.","example":"2021-11-29T11:47:16.624Z"}},"required":["status"],"additionalProperties":false,"description":"Details about the status of the most recent build."}},"additionalProperties":false,"description":"Details about the current job status."},"cluster":{"type":"object","properties":{"id":{"type":"string","description":"The id of the cluster associated with this project.","example":"nf-europe-west"},"name":{"type":"string","description":"The name of the cluster associated with this project.","example":"nf-europe-west"},"namespace":{"type":"string","description":"Namespace this resource is located within on the cluster.","example":"ns-8zy2mcjh9zn2"},"loadBalancers":{"type":"array","items":{"type":"string","example":"lb.659200800000000000000000.northflank.com"},"description":"Load balancer DNS for the cluster."}},"required":["id","name"],"additionalProperties":false,"description":"Cluster information"},"createdAt":{"type":"string","format":"date-time","description":"time of creation"},"updatedAt":{"type":"string","format":"date-time","description":"time of update"}},"required":["name","billing","backoffLimit","jobType","id","appId","status","cluster"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Jobs","project"],"security":[],"deprecated":true,"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":52,"description":"The name of the job.","example":"Example Job"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"A description of the job.","example":"A job description"},"stageId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"infrastructure":{"type":"object","properties":{"architecture":{"type":"string","enum":["x86","arm"]}},"additionalProperties":false},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"billing":{"type":"object","properties":{"buildPlan":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The ID of the build plan to use.","example":"nf-compute-200-8"},"deploymentPlan":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The ID of the deployment plan to use.","example":"nf-compute-20"},"gpu":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"gpuType":{"type":"string"},"gpuCount":{"type":"integer"},"timesliced":{"type":"boolean"}},"required":["gpuType"],"additionalProperties":false}},"additionalProperties":false}},"required":["deploymentPlan"],"additionalProperties":false},"deployment":{"oneOf":[{"type":"object","properties":{"buildpack":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customProcess","customCommand","customEntrypointCustomCommand","originalEntrypointCustomCommand"],"description":"Type of buildpack run configuration"},"customProcess":{"type":"string","description":"Custom process which should be run. Required in case where `configType` is `customProcess`"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be run. Required in case where `configType` is `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be run. Required in case where `configType` is `customCommand`, `customEntrypointCustomCommand` or `originalEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of buildpack runtime"},"docker":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customEntrypoint","customCommand","customEntrypointCustomCommand"],"description":"Type of entrypoint & command override configuration","example":"default"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be used. Required in case where `configType` is `customEntrypoint` or `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be used. Required in case where `configType` is `customCommand` or `customEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of docker runtime"},"storage":{"type":"object","properties":{"useHdbStorage":{"type":"boolean"},"usePdSsdStorage":{"type":"boolean"},"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":1024,"description":"Ephemeral storage per container in MB","example":1024}},"additionalProperties":false},"shmSize":{"type":"integer","minimum":64,"description":"Configures the amount of available memory-backed disk space available to /dev/shm"}},"additionalProperties":false},"gpu":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"gpuType":{"type":"string"},"gpuCount":{"type":"integer"},"timesliced":{"type":"boolean"}},"required":["gpuType"],"additionalProperties":false}},"additionalProperties":false},"gracePeriodSeconds":{"type":"integer","minimum":15,"maximum":600,"description":"The 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."},"metadata":{"type":"object","properties":{"labels":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom labels for the workload."},"annotations":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom annotations for the workload as string or object."}},"additionalProperties":false,"description":"Allow setting custom labels and annotations for workloads."},"vcs":{"type":"object","properties":{"projectUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo to build.","example":"https://github.com/northflank/gatsby-with-northflank"},"projectType":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string","minLength":24,"maxLength":24,"description":"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 `vcsLinkId` is provided, Northflank will instead use your linked account with that ID."},"projectBranch":{"type":"string","description":"The name of the branch to use.","example":"master"}},"required":["projectUrl","projectType","projectBranch"],"additionalProperties":false}},"required":["vcs"],"additionalProperties":false,"description":"Deploy from version control"},{"type":"object","properties":{"buildpack":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customProcess","customCommand","customEntrypointCustomCommand","originalEntrypointCustomCommand"],"description":"Type of buildpack run configuration"},"customProcess":{"type":"string","description":"Custom process which should be run. Required in case where `configType` is `customProcess`"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be run. Required in case where `configType` is `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be run. Required in case where `configType` is `customCommand`, `customEntrypointCustomCommand` or `originalEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of buildpack runtime"},"docker":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customEntrypoint","customCommand","customEntrypointCustomCommand"],"description":"Type of entrypoint & command override configuration","example":"default"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be used. Required in case where `configType` is `customEntrypoint` or `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be used. Required in case where `configType` is `customCommand` or `customEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of docker runtime"},"storage":{"type":"object","properties":{"useHdbStorage":{"type":"boolean"},"usePdSsdStorage":{"type":"boolean"},"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":1024,"description":"Ephemeral storage per container in MB","example":1024}},"additionalProperties":false},"shmSize":{"type":"integer","minimum":64,"description":"Configures the amount of available memory-backed disk space available to /dev/shm"}},"additionalProperties":false},"gpu":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"gpuType":{"type":"string"},"gpuCount":{"type":"integer"},"timesliced":{"type":"boolean"}},"required":["gpuType"],"additionalProperties":false}},"additionalProperties":false},"gracePeriodSeconds":{"type":"integer","minimum":15,"maximum":600,"description":"The 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."},"metadata":{"type":"object","properties":{"labels":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom labels for the workload."},"annotations":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom annotations for the workload as string or object."}},"additionalProperties":false,"description":"Allow setting custom labels and annotations for workloads."},"external":{"type":"object","properties":{"imagePath":{"type":"string","pattern":"^(?:(?:https?:\\/\\/)?([a-zA-Z0-9\\-]+\\.[a-zA-Z0-9\\.\\-]+)(\\/v1)?)?(?:\\/)?([a-zA-Z/-9\\.\\-_]+)(?:\\:([a-zA-Z/-9\\.\\-_\\:]+)|\\@([a-zA-Z/-9\\.\\-_\\:]+))$","description":"Image to be deployed. When not deploying from Dockerhub the URL must be specified.","example":"nginx:latest"},"credentials":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"ID of the saved credentials to use to access this external image.","example":"example-credentials"}},"required":["imagePath"],"additionalProperties":false}},"required":["external"],"additionalProperties":false,"description":"Deploy from an external image"},{"type":"object","properties":{"buildpack":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customProcess","customCommand","customEntrypointCustomCommand","originalEntrypointCustomCommand"],"description":"Type of buildpack run configuration"},"customProcess":{"type":"string","description":"Custom process which should be run. Required in case where `configType` is `customProcess`"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be run. Required in case where `configType` is `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be run. Required in case where `configType` is `customCommand`, `customEntrypointCustomCommand` or `originalEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of buildpack runtime"},"docker":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customEntrypoint","customCommand","customEntrypointCustomCommand"],"description":"Type of entrypoint & command override configuration","example":"default"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be used. Required in case where `configType` is `customEntrypoint` or `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be used. Required in case where `configType` is `customCommand` or `customEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of docker runtime"},"storage":{"type":"object","properties":{"useHdbStorage":{"type":"boolean"},"usePdSsdStorage":{"type":"boolean"},"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":1024,"description":"Ephemeral storage per container in MB","example":1024}},"additionalProperties":false},"shmSize":{"type":"integer","minimum":64,"description":"Configures the amount of available memory-backed disk space available to /dev/shm"}},"additionalProperties":false},"gpu":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"gpuType":{"type":"string"},"gpuCount":{"type":"integer"},"timesliced":{"type":"boolean"}},"required":["gpuType"],"additionalProperties":false}},"additionalProperties":false},"gracePeriodSeconds":{"type":"integer","minimum":15,"maximum":600,"description":"The 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."},"metadata":{"type":"object","properties":{"labels":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom labels for the workload."},"annotations":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom annotations for the workload as string or object."}},"additionalProperties":false,"description":"Allow setting custom labels and annotations for workloads."},"internal":{"type":"object","properties":{"id":{"anyOf":[{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":54,"example":"example-build-service"},{"type":"string","example":"example-project/example-build-service"}],"description":"ID of the build service to deploy"},"branch":{"type":"string","description":"Branch to deploy","example":"master"},"buildSHA":{"oneOf":[{"type":"string","minLength":40,"maxLength":40,"description":"A commit sha."},{"type":"string","enum":["latest"],"description":"Latest commit."}],"description":"Commit SHA to deploy, or 'latest' to deploy the most recent commit","example":"latest"},"buildId":{"type":"string","description":"ID of the build that should be deployed","example":"premium-guide-6393"}},"additionalProperties":false}},"required":["internal"],"additionalProperties":false,"description":"Deploy from a Northflank build service"},{"type":"object","properties":{},"additionalProperties":false,"description":"Choose later"}],"description":"Where to deploy the job from."},"disabledCI":{"type":"boolean","description":"Whether CI should be disabled. Only relevant for jobs deploying directly from version control.","default":false},"buildConfiguration":{"type":"object","properties":{"pathIgnoreRules":{"type":"array","items":{"type":"string","maxLength":260,"description":"A path ignore rule, following `.gitignore` syntax. For example, `*.md` will ignore all files ending with `.md`.","example":"README.md"},"maxItems":200,"description":"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."},"isAllowList":{"type":"boolean","description":"If `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`.","example":false},"ciIgnoreFlagsEnabled":{"type":"boolean","description":"If `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":{"type":"array","items":{"type":"string","maxLength":72,"description":"A commit ignore flag.","example":"[skip ci]"},"maxItems":200,"description":"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]\"]`","example":["[skip ci]","[ci skip]","[no ci]","[skip nf]","[nf skip]","[northflank skip]","[skip northflank]"]},"dockerfileTarget":{"type":"string","description":"If your Dockerfile contains multiple build stages, you can specify the target stage by entering its name here."},"dockerCredentials":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The ID of the docker credentials to use.","example":"example-docker-credential"}},"includeGitFolder":{"type":"boolean","description":"Include .git folder inside the build context"},"fullGitClone":{"type":"boolean","description":"Include the entire git history as part of the .git folder. Only relevant if \"includeGitFolder\" is set."},"enableGitLfs":{"type":"boolean","description":"Enable Git LFS support for the build"},"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false}},"additionalProperties":false,"default":{"pathIgnoreRules":[],"isAllowList":false,"ciIgnoreFlagsEnabled":false}},"buildSettings":{"oneOf":[{"type":"object","properties":{"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false},"dockerfile":{"type":"object","properties":{"useCache":{"type":"boolean","description":"DEPRECATED: This field will be removed in the near future and currently has no effect."},"buildEngine":{"type":"string","enum":["buildkit","kaniko"],"description":"Build engine to use. Defaults to recommended build engine `buildkit`","example":"buildkit","default":"buildkit"},"dockerFilePath":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]+$","description":"The file path of the Dockerfile.","example":"/Dockerfile"},"dockerWorkDir":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*$","description":"The working directory of the Dockerfile.","example":"/"},"buildkit":{"type":"object","properties":{"useCache":{"type":"boolean","description":"Use persistent storage to cache build layers.","example":true,"default":false},"cacheStorageSize":{"type":"integer","description":"The amount of persistent storage available to each build in MB.","example":32768},"useInternalCache":{"type":"boolean","description":"DEPRECATED: This field will be removed in the near future.","default":false},"internalCacheStorage":{"type":"number","format":"float","description":"DEPRECATED: This field will be removed in the near future."}},"additionalProperties":false}},"required":["dockerFilePath","dockerWorkDir"],"additionalProperties":false}},"required":["dockerfile"],"additionalProperties":false,"description":"Build from a Dockerfile"},{"type":"object","properties":{"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false},"buildpack":{"type":"object","properties":{"builder":{"type":"string","enum":["HEROKU_24","HEROKU_22","HEROKU_22_CLASSIC","HEROKU_20","HEROKU_18","GOOGLE_22","GOOGLE_V1","CNB_ALPINE","CNB_BIONIC","PAKETO_JAMMY_TINY","PAKETO_JAMMY_BASE","PAKETO_JAMMY_FULL","PAKETO_TINY","PAKETO_BASE","PAKETO_FULL"],"description":"Buildpack stack to use. Defaults to recommended stack `HEROKU_24`.","example":"HEROKU_24","default":"HEROKU_24"},"buildpackLocators":{"type":"array","items":{"type":"string","description":"Url or registry identifier of custom Buildpack.","example":"https://buildpack-registry.heroku.com/cnb/mars/create-react-app"},"description":"Array of custom Buildpacks to use.","default":[]},"buildContext":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*$","description":"The working directory to build in.","example":"/","default":"/"},"useCache":{"type":"boolean","description":"Should build dependencies be cached?","example":false,"default":false}},"additionalProperties":false}},"required":["buildpack"],"additionalProperties":false,"description":"Build from a Buildpack"}],"description":"Build engine"},"runtimeEnvironment":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"An object containing the runtime environment to set for the job. Keys may only contain letters, numbers, hyphens, forward slashes and dots.","example":{"variable1":"abcdef","variable2":"12345"},"default":{}},"runtimeFiles":{"type":"object","properties":{},"description":"Secret files as JSON object, encrypted at rest. File path must be absolute","example":{"/dir/fileName":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"buildArguments":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"An object containing the build arguments to set for the job. Keys may only contain letters, numbers, hyphens, forward slashes and dots.","example":{"variable1":"abcdef","variable2":"12345"},"default":{}},"buildFiles":{"type":"object","properties":{},"description":"Secret files as JSON object, encrypted at rest. File path must be absolute","example":{"/dir/fileName":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"dockerSecretMounts":{"type":"object","properties":{},"description":"Docker secret mount contents as JSON object, encrypted at rest. Must be a valid Docker secret mount identifier","example":{"example-secret-mount_1":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"healthChecks":{"type":"array","items":{"type":"object","properties":{"protocol":{"type":"string","enum":["HTTP","CMD","TCP"],"description":"The protocol to access the health check with.","example":"HTTP"},"type":{"type":"string","enum":["livenessProbe","readinessProbe","startupProbe"],"description":"The type of health check.","example":"readinessProbe"},"path":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*((\\?([a-zA-Z0-9-._]+(=[a-zA-Z0-9-._]+)?)*)(&([a-zA-Z0-9-._]+(=[a-zA-Z0-9-._]+)?)*)*)?$","description":"The path of the health check endpoint. Required when protocol is HTTP.","example":"/health-check"},"cmd":{"type":"string","description":"The command to run for the health check. Required when protocol is CMD"},"port":{"type":"integer","minimum":1,"description":"Port number for the health check endpoint. Required when protocol is HTTP.","example":8080},"initialDelaySeconds":{"type":"integer","minimum":1,"maximum":180,"description":"Initial delay, in seconds, before the health check is first run.","example":10},"periodSeconds":{"type":"integer","minimum":10,"maximum":600,"description":"The time between each check, in seconds.","example":60},"timeoutSeconds":{"type":"integer","minimum":1,"maximum":60,"description":"The time to wait for a response before marking the health check as a failure.","example":1},"failureThreshold":{"type":"integer","minimum":1,"maximum":255,"description":"The maximum number of allowed failures.","example":3},"successThreshold":{"type":"integer","minimum":1,"maximum":255,"description":"The number of successes required to mark the health check as a success.","example":1}},"required":["protocol","type","initialDelaySeconds","periodSeconds","timeoutSeconds","failureThreshold"],"additionalProperties":false,"description":"A health check object."},"description":"An array of health checks."},"backoffLimit":{"type":"integer","minimum":0,"description":"The number of attempts to rerun a job before it is marked as failed.","example":0},"runOnSourceChange":{"type":"string","enum":["never","cd-promote","always"],"description":"Configure when the job should be run if the source image changes.","example":"never","default":"never"},"activeDeadlineSeconds":{"type":"integer","minimum":1,"nullable":true,"description":"The maximum amount of time, in seconds, for a job to run before it is marked as failed.","example":600}},"required":["name","billing","backoffLimit"],"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Project > Jobs > General > Create","x-nf-team-scoped":true,"x-nf-subheading":"put job","x-nf-cli-command":["put","job","manual"],"x-nf-deprecation-replacement":"/jobs/put-job","x-nf-deprecation-message":"Requests should instead use the relevant type-agnostic job endpoint."},"v1-projects--projectId--jobs-manual-put-team-scoped":{"operationId":"putProjectsJobsManual","summary":"Put manual job","description":"Creates or updates a new manual job that only runs when initiated via the UI, CLI, API or JS client.","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}}],"responses":{"200":{"description":"Details about the created or updated job.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":52,"description":"The name of the job.","example":"Example Job"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"A description of the job.","example":"A job description"},"stageId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"infrastructure":{"type":"object","properties":{"architecture":{"type":"string","enum":["x86","arm"]}},"additionalProperties":false},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"billing":{"type":"object","properties":{"buildPlan":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The ID of the build plan to use.","example":"nf-compute-200-8"},"deploymentPlan":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The ID of the deployment plan to use.","example":"nf-compute-20"},"gpu":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"gpuType":{"type":"string"},"gpuCount":{"type":"integer"},"timesliced":{"type":"boolean"}},"required":["gpuType"],"additionalProperties":false}},"additionalProperties":false}},"required":["deploymentPlan"],"additionalProperties":false},"disabledCI":{"type":"boolean","description":"Whether CI should be disabled. Only relevant for jobs deploying directly from version control.","default":false},"buildConfiguration":{"type":"object","properties":{"pathIgnoreRules":{"type":"array","items":{"type":"string","maxLength":260,"description":"A path ignore rule, following `.gitignore` syntax. For example, `*.md` will ignore all files ending with `.md`.","example":"README.md"},"maxItems":200,"description":"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."},"isAllowList":{"type":"boolean","description":"If `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`.","example":false},"ciIgnoreFlagsEnabled":{"type":"boolean","description":"If `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":{"type":"array","items":{"type":"string","maxLength":72,"description":"A commit ignore flag.","example":"[skip ci]"},"maxItems":200,"description":"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]\"]`","example":["[skip ci]","[ci skip]","[no ci]","[skip nf]","[nf skip]","[northflank skip]","[skip northflank]"]},"dockerfileTarget":{"type":"string","description":"If your Dockerfile contains multiple build stages, you can specify the target stage by entering its name here."},"dockerCredentials":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The ID of the docker credentials to use.","example":"example-docker-credential"}},"includeGitFolder":{"type":"boolean","description":"Include .git folder inside the build context"},"fullGitClone":{"type":"boolean","description":"Include the entire git history as part of the .git folder. Only relevant if \"includeGitFolder\" is set."},"enableGitLfs":{"type":"boolean","description":"Enable Git LFS support for the build"},"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false}},"additionalProperties":false,"default":{"pathIgnoreRules":[],"isAllowList":false,"ciIgnoreFlagsEnabled":false}},"buildSettings":{"oneOf":[{"type":"object","properties":{"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false},"dockerfile":{"type":"object","properties":{"useCache":{"type":"boolean","description":"DEPRECATED: This field will be removed in the near future and currently has no effect."},"buildEngine":{"type":"string","enum":["buildkit","kaniko"],"description":"Build engine to use. Defaults to recommended build engine `buildkit`","example":"buildkit","default":"buildkit"},"dockerFilePath":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]+$","description":"The file path of the Dockerfile.","example":"/Dockerfile"},"dockerWorkDir":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*$","description":"The working directory of the Dockerfile.","example":"/"},"buildkit":{"type":"object","properties":{"useCache":{"type":"boolean","description":"Use persistent storage to cache build layers.","example":true,"default":false},"cacheStorageSize":{"type":"integer","description":"The amount of persistent storage available to each build in MB.","example":32768},"useInternalCache":{"type":"boolean","description":"DEPRECATED: This field will be removed in the near future.","default":false},"internalCacheStorage":{"type":"number","format":"float","description":"DEPRECATED: This field will be removed in the near future."}},"additionalProperties":false}},"required":["dockerFilePath","dockerWorkDir"],"additionalProperties":false}},"required":["dockerfile"],"additionalProperties":false,"description":"Build from a Dockerfile"},{"type":"object","properties":{"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false},"buildpack":{"type":"object","properties":{"builder":{"type":"string","enum":["HEROKU_24","HEROKU_22","HEROKU_22_CLASSIC","HEROKU_20","HEROKU_18","GOOGLE_22","GOOGLE_V1","CNB_ALPINE","CNB_BIONIC","PAKETO_JAMMY_TINY","PAKETO_JAMMY_BASE","PAKETO_JAMMY_FULL","PAKETO_TINY","PAKETO_BASE","PAKETO_FULL"],"description":"Buildpack stack to use. Defaults to recommended stack `HEROKU_24`.","example":"HEROKU_24","default":"HEROKU_24"},"buildpackLocators":{"type":"array","items":{"type":"string","description":"Url or registry identifier of custom Buildpack.","example":"https://buildpack-registry.heroku.com/cnb/mars/create-react-app"},"description":"Array of custom Buildpacks to use.","default":[]},"buildContext":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*$","description":"The working directory to build in.","example":"/","default":"/"},"useCache":{"type":"boolean","description":"Should build dependencies be cached?","example":false,"default":false}},"additionalProperties":false}},"required":["buildpack"],"additionalProperties":false,"description":"Build from a Buildpack"}],"description":"Build engine"},"runtimeEnvironment":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"An object containing the runtime environment to set for the job. Keys may only contain letters, numbers, hyphens, forward slashes and dots.","example":{"variable1":"abcdef","variable2":"12345"},"default":{}},"runtimeFiles":{"type":"object","properties":{},"description":"Secret files as JSON object, encrypted at rest. File path must be absolute","example":{"/dir/fileName":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"buildArguments":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"An object containing the build arguments to set for the job. Keys may only contain letters, numbers, hyphens, forward slashes and dots.","example":{"variable1":"abcdef","variable2":"12345"},"default":{}},"buildFiles":{"type":"object","properties":{},"description":"Secret files as JSON object, encrypted at rest. File path must be absolute","example":{"/dir/fileName":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"dockerSecretMounts":{"type":"object","properties":{},"description":"Docker secret mount contents as JSON object, encrypted at rest. Must be a valid Docker secret mount identifier","example":{"example-secret-mount_1":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"healthChecks":{"type":"array","items":{"type":"object","properties":{"protocol":{"type":"string","enum":["HTTP","CMD","TCP"],"description":"The protocol to access the health check with.","example":"HTTP"},"type":{"type":"string","enum":["livenessProbe","readinessProbe","startupProbe"],"description":"The type of health check.","example":"readinessProbe"},"path":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*((\\?([a-zA-Z0-9-._]+(=[a-zA-Z0-9-._]+)?)*)(&([a-zA-Z0-9-._]+(=[a-zA-Z0-9-._]+)?)*)*)?$","description":"The path of the health check endpoint. Required when protocol is HTTP.","example":"/health-check"},"cmd":{"type":"string","description":"The command to run for the health check. Required when protocol is CMD"},"port":{"type":"integer","minimum":1,"description":"Port number for the health check endpoint. Required when protocol is HTTP.","example":8080},"initialDelaySeconds":{"type":"integer","minimum":1,"maximum":180,"description":"Initial delay, in seconds, before the health check is first run.","example":10},"periodSeconds":{"type":"integer","minimum":10,"maximum":600,"description":"The time between each check, in seconds.","example":60},"timeoutSeconds":{"type":"integer","minimum":1,"maximum":60,"description":"The time to wait for a response before marking the health check as a failure.","example":1},"failureThreshold":{"type":"integer","minimum":1,"maximum":255,"description":"The maximum number of allowed failures.","example":3},"successThreshold":{"type":"integer","minimum":1,"maximum":255,"description":"The number of successes required to mark the health check as a success.","example":1}},"required":["protocol","type","initialDelaySeconds","periodSeconds","timeoutSeconds","failureThreshold"],"additionalProperties":false,"description":"A health check object."},"description":"An array of health checks."},"backoffLimit":{"type":"integer","minimum":0,"description":"The number of attempts to rerun a job before it is marked as failed.","example":0},"runOnSourceChange":{"type":"string","enum":["never","cd-promote","always"],"description":"Configure when the job should be run if the source image changes.","example":"never","default":"never"},"activeDeadlineSeconds":{"type":"integer","minimum":1,"nullable":true,"description":"The maximum amount of time, in seconds, for a job to run before it is marked as failed.","example":600},"jobType":{"type":"string","enum":["manual"],"description":"Type of the job (manual or manual)","example":"manual"},"id":{"type":"string","description":"Identifier for the job","example":"example-job"},"appId":{"type":"string","description":"Full identifier used for job deployment","example":"/example-user/default-project/example-job"},"deployment":{"type":"object","properties":{"buildpack":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customProcess","customCommand","customEntrypointCustomCommand","originalEntrypointCustomCommand"],"description":"Type of buildpack run configuration"},"customProcess":{"type":"string","description":"Custom process which should be run. Required in case where `configType` is `customProcess`"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be run. Required in case where `configType` is `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be run. Required in case where `configType` is `customCommand`, `customEntrypointCustomCommand` or `originalEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of buildpack runtime"},"docker":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customEntrypoint","customCommand","customEntrypointCustomCommand"],"description":"Type of entrypoint & command override configuration","example":"default"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be used. Required in case where `configType` is `customEntrypoint` or `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be used. Required in case where `configType` is `customCommand` or `customEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of docker runtime"},"storage":{"type":"object","properties":{"useHdbStorage":{"type":"boolean"},"usePdSsdStorage":{"type":"boolean"},"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":1024,"description":"Ephemeral storage per container in MB","example":1024}},"additionalProperties":false},"shmSize":{"type":"integer","minimum":64,"description":"Configures the amount of available memory-backed disk space available to /dev/shm"}},"additionalProperties":false},"gpu":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"gpuType":{"type":"string"},"gpuCount":{"type":"integer"},"timesliced":{"type":"boolean"}},"required":["gpuType"],"additionalProperties":false}},"additionalProperties":false},"gracePeriodSeconds":{"type":"integer","minimum":15,"maximum":600,"description":"The 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."},"metadata":{"type":"object","properties":{"labels":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom labels for the workload."},"annotations":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom annotations for the workload as string or object."}},"additionalProperties":false,"description":"Allow setting custom labels and annotations for workloads."},"vcs":{"type":"object","properties":{"projectUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo to build.","example":"https://github.com/northflank/gatsby-with-northflank"},"projectType":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string","minLength":24,"maxLength":24,"description":"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 `vcsLinkId` is provided, Northflank will instead use your linked account with that ID."},"projectBranch":{"type":"string","description":"The name of the branch to use.","example":"master"}},"required":["projectUrl","projectType","projectBranch"],"additionalProperties":false},"external":{"type":"object","properties":{"imagePath":{"type":"string","pattern":"^(?:(?:https?:\\/\\/)?([a-zA-Z0-9\\-]+\\.[a-zA-Z0-9\\.\\-]+)(\\/v1)?)?(?:\\/)?([a-zA-Z/-9\\.\\-_]+)(?:\\:([a-zA-Z/-9\\.\\-_\\:]+)|\\@([a-zA-Z/-9\\.\\-_\\:]+))$","description":"Image to be deployed. When not deploying from Dockerhub the URL must be specified.","example":"nginx:latest"},"credentials":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"ID of the saved credentials to use to access this external image.","example":"example-credentials"}},"required":["imagePath"],"additionalProperties":false},"internal":{"type":"object","properties":{"id":{"anyOf":[{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":54,"example":"example-build-service"},{"type":"string","example":"example-project/example-build-service"}],"description":"ID of the build service to deploy"},"branch":{"type":"string","description":"Branch to deploy","example":"master"},"buildSHA":{"oneOf":[{"type":"string","minLength":40,"maxLength":40,"description":"A commit sha."},{"type":"string","enum":["latest"],"description":"Latest commit."}],"description":"Commit SHA to deploy, or 'latest' to deploy the most recent commit","example":"latest"},"buildId":{"type":"string","description":"ID of the build that should be deployed","example":"premium-guide-6393"}},"additionalProperties":false},"imageUrl":{"type":"string","description":"Image registry url of the deployed image."}},"additionalProperties":false,"default":{}},"status":{"type":"object","properties":{"build":{"type":"object","properties":{"status":{"type":"string","enum":["QUEUED","PENDING","UNSCHEDULABLE","STARTING","CLONING","BUILDING","UPLOADING","ABORTED","FAILURE","SUBMISSION_FAILURE","SUCCESS","CRASHED","IN_PROGRESS"],"description":"The current status of the build.","example":"SUCCESS"},"lastTransitionTime":{"type":"string","format":"date-time","description":"The timestamp of when the build reached this status.","example":"2021-11-29T11:47:16.624Z"}},"required":["status"],"additionalProperties":false,"description":"Details about the status of the most recent build."}},"additionalProperties":false,"description":"Details about the current job status."},"cluster":{"type":"object","properties":{"id":{"type":"string","description":"The id of the cluster associated with this project.","example":"nf-europe-west"},"name":{"type":"string","description":"The name of the cluster associated with this project.","example":"nf-europe-west"},"namespace":{"type":"string","description":"Namespace this resource is located within on the cluster.","example":"ns-8zy2mcjh9zn2"},"loadBalancers":{"type":"array","items":{"type":"string","example":"lb.659200800000000000000000.northflank.com"},"description":"Load balancer DNS for the cluster."}},"required":["id","name"],"additionalProperties":false,"description":"Cluster information"},"createdAt":{"type":"string","format":"date-time","description":"time of creation"},"updatedAt":{"type":"string","format":"date-time","description":"time of update"}},"required":["name","billing","backoffLimit","jobType","id","appId","status","cluster"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Jobs","project"],"security":[],"deprecated":true,"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":52,"description":"The name of the job.","example":"Example Job"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"A description of the job.","example":"A job description"},"stageId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"infrastructure":{"type":"object","properties":{"architecture":{"type":"string","enum":["x86","arm"]}},"additionalProperties":false},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"billing":{"type":"object","properties":{"buildPlan":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The ID of the build plan to use.","example":"nf-compute-200-8"},"deploymentPlan":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The ID of the deployment plan to use.","example":"nf-compute-20"},"gpu":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"gpuType":{"type":"string"},"gpuCount":{"type":"integer"},"timesliced":{"type":"boolean"}},"required":["gpuType"],"additionalProperties":false}},"additionalProperties":false}},"required":["deploymentPlan"],"additionalProperties":false},"deployment":{"oneOf":[{"type":"object","properties":{"buildpack":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customProcess","customCommand","customEntrypointCustomCommand","originalEntrypointCustomCommand"],"description":"Type of buildpack run configuration"},"customProcess":{"type":"string","description":"Custom process which should be run. Required in case where `configType` is `customProcess`"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be run. Required in case where `configType` is `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be run. Required in case where `configType` is `customCommand`, `customEntrypointCustomCommand` or `originalEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of buildpack runtime"},"docker":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customEntrypoint","customCommand","customEntrypointCustomCommand"],"description":"Type of entrypoint & command override configuration","example":"default"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be used. Required in case where `configType` is `customEntrypoint` or `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be used. Required in case where `configType` is `customCommand` or `customEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of docker runtime"},"storage":{"type":"object","properties":{"useHdbStorage":{"type":"boolean"},"usePdSsdStorage":{"type":"boolean"},"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":1024,"description":"Ephemeral storage per container in MB","example":1024}},"additionalProperties":false},"shmSize":{"type":"integer","minimum":64,"description":"Configures the amount of available memory-backed disk space available to /dev/shm"}},"additionalProperties":false},"gpu":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"gpuType":{"type":"string"},"gpuCount":{"type":"integer"},"timesliced":{"type":"boolean"}},"required":["gpuType"],"additionalProperties":false}},"additionalProperties":false},"gracePeriodSeconds":{"type":"integer","minimum":15,"maximum":600,"description":"The 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."},"metadata":{"type":"object","properties":{"labels":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom labels for the workload."},"annotations":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom annotations for the workload as string or object."}},"additionalProperties":false,"description":"Allow setting custom labels and annotations for workloads."},"vcs":{"type":"object","properties":{"projectUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo to build.","example":"https://github.com/northflank/gatsby-with-northflank"},"projectType":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string","minLength":24,"maxLength":24,"description":"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 `vcsLinkId` is provided, Northflank will instead use your linked account with that ID."},"projectBranch":{"type":"string","description":"The name of the branch to use.","example":"master"}},"required":["projectUrl","projectType","projectBranch"],"additionalProperties":false}},"required":["vcs"],"additionalProperties":false,"description":"Deploy from version control"},{"type":"object","properties":{"buildpack":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customProcess","customCommand","customEntrypointCustomCommand","originalEntrypointCustomCommand"],"description":"Type of buildpack run configuration"},"customProcess":{"type":"string","description":"Custom process which should be run. Required in case where `configType` is `customProcess`"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be run. Required in case where `configType` is `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be run. Required in case where `configType` is `customCommand`, `customEntrypointCustomCommand` or `originalEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of buildpack runtime"},"docker":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customEntrypoint","customCommand","customEntrypointCustomCommand"],"description":"Type of entrypoint & command override configuration","example":"default"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be used. Required in case where `configType` is `customEntrypoint` or `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be used. Required in case where `configType` is `customCommand` or `customEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of docker runtime"},"storage":{"type":"object","properties":{"useHdbStorage":{"type":"boolean"},"usePdSsdStorage":{"type":"boolean"},"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":1024,"description":"Ephemeral storage per container in MB","example":1024}},"additionalProperties":false},"shmSize":{"type":"integer","minimum":64,"description":"Configures the amount of available memory-backed disk space available to /dev/shm"}},"additionalProperties":false},"gpu":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"gpuType":{"type":"string"},"gpuCount":{"type":"integer"},"timesliced":{"type":"boolean"}},"required":["gpuType"],"additionalProperties":false}},"additionalProperties":false},"gracePeriodSeconds":{"type":"integer","minimum":15,"maximum":600,"description":"The 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."},"metadata":{"type":"object","properties":{"labels":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom labels for the workload."},"annotations":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom annotations for the workload as string or object."}},"additionalProperties":false,"description":"Allow setting custom labels and annotations for workloads."},"external":{"type":"object","properties":{"imagePath":{"type":"string","pattern":"^(?:(?:https?:\\/\\/)?([a-zA-Z0-9\\-]+\\.[a-zA-Z0-9\\.\\-]+)(\\/v1)?)?(?:\\/)?([a-zA-Z/-9\\.\\-_]+)(?:\\:([a-zA-Z/-9\\.\\-_\\:]+)|\\@([a-zA-Z/-9\\.\\-_\\:]+))$","description":"Image to be deployed. When not deploying from Dockerhub the URL must be specified.","example":"nginx:latest"},"credentials":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"ID of the saved credentials to use to access this external image.","example":"example-credentials"}},"required":["imagePath"],"additionalProperties":false}},"required":["external"],"additionalProperties":false,"description":"Deploy from an external image"},{"type":"object","properties":{"buildpack":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customProcess","customCommand","customEntrypointCustomCommand","originalEntrypointCustomCommand"],"description":"Type of buildpack run configuration"},"customProcess":{"type":"string","description":"Custom process which should be run. Required in case where `configType` is `customProcess`"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be run. Required in case where `configType` is `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be run. Required in case where `configType` is `customCommand`, `customEntrypointCustomCommand` or `originalEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of buildpack runtime"},"docker":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customEntrypoint","customCommand","customEntrypointCustomCommand"],"description":"Type of entrypoint & command override configuration","example":"default"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be used. Required in case where `configType` is `customEntrypoint` or `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be used. Required in case where `configType` is `customCommand` or `customEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of docker runtime"},"storage":{"type":"object","properties":{"useHdbStorage":{"type":"boolean"},"usePdSsdStorage":{"type":"boolean"},"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":1024,"description":"Ephemeral storage per container in MB","example":1024}},"additionalProperties":false},"shmSize":{"type":"integer","minimum":64,"description":"Configures the amount of available memory-backed disk space available to /dev/shm"}},"additionalProperties":false},"gpu":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"gpuType":{"type":"string"},"gpuCount":{"type":"integer"},"timesliced":{"type":"boolean"}},"required":["gpuType"],"additionalProperties":false}},"additionalProperties":false},"gracePeriodSeconds":{"type":"integer","minimum":15,"maximum":600,"description":"The 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."},"metadata":{"type":"object","properties":{"labels":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom labels for the workload."},"annotations":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom annotations for the workload as string or object."}},"additionalProperties":false,"description":"Allow setting custom labels and annotations for workloads."},"internal":{"type":"object","properties":{"id":{"anyOf":[{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":54,"example":"example-build-service"},{"type":"string","example":"example-project/example-build-service"}],"description":"ID of the build service to deploy"},"branch":{"type":"string","description":"Branch to deploy","example":"master"},"buildSHA":{"oneOf":[{"type":"string","minLength":40,"maxLength":40,"description":"A commit sha."},{"type":"string","enum":["latest"],"description":"Latest commit."}],"description":"Commit SHA to deploy, or 'latest' to deploy the most recent commit","example":"latest"},"buildId":{"type":"string","description":"ID of the build that should be deployed","example":"premium-guide-6393"}},"additionalProperties":false}},"required":["internal"],"additionalProperties":false,"description":"Deploy from a Northflank build service"},{"type":"object","properties":{},"additionalProperties":false,"description":"Choose later"}],"description":"Where to deploy the job from."},"disabledCI":{"type":"boolean","description":"Whether CI should be disabled. Only relevant for jobs deploying directly from version control.","default":false},"buildConfiguration":{"type":"object","properties":{"pathIgnoreRules":{"type":"array","items":{"type":"string","maxLength":260,"description":"A path ignore rule, following `.gitignore` syntax. For example, `*.md` will ignore all files ending with `.md`.","example":"README.md"},"maxItems":200,"description":"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."},"isAllowList":{"type":"boolean","description":"If `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`.","example":false},"ciIgnoreFlagsEnabled":{"type":"boolean","description":"If `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":{"type":"array","items":{"type":"string","maxLength":72,"description":"A commit ignore flag.","example":"[skip ci]"},"maxItems":200,"description":"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]\"]`","example":["[skip ci]","[ci skip]","[no ci]","[skip nf]","[nf skip]","[northflank skip]","[skip northflank]"]},"dockerfileTarget":{"type":"string","description":"If your Dockerfile contains multiple build stages, you can specify the target stage by entering its name here."},"dockerCredentials":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The ID of the docker credentials to use.","example":"example-docker-credential"}},"includeGitFolder":{"type":"boolean","description":"Include .git folder inside the build context"},"fullGitClone":{"type":"boolean","description":"Include the entire git history as part of the .git folder. Only relevant if \"includeGitFolder\" is set."},"enableGitLfs":{"type":"boolean","description":"Enable Git LFS support for the build"},"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false}},"additionalProperties":false,"default":{"pathIgnoreRules":[],"isAllowList":false,"ciIgnoreFlagsEnabled":false}},"buildSettings":{"oneOf":[{"type":"object","properties":{"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false},"dockerfile":{"type":"object","properties":{"useCache":{"type":"boolean","description":"DEPRECATED: This field will be removed in the near future and currently has no effect."},"buildEngine":{"type":"string","enum":["buildkit","kaniko"],"description":"Build engine to use. Defaults to recommended build engine `buildkit`","example":"buildkit","default":"buildkit"},"dockerFilePath":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]+$","description":"The file path of the Dockerfile.","example":"/Dockerfile"},"dockerWorkDir":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*$","description":"The working directory of the Dockerfile.","example":"/"},"buildkit":{"type":"object","properties":{"useCache":{"type":"boolean","description":"Use persistent storage to cache build layers.","example":true,"default":false},"cacheStorageSize":{"type":"integer","description":"The amount of persistent storage available to each build in MB.","example":32768},"useInternalCache":{"type":"boolean","description":"DEPRECATED: This field will be removed in the near future.","default":false},"internalCacheStorage":{"type":"number","format":"float","description":"DEPRECATED: This field will be removed in the near future."}},"additionalProperties":false}},"required":["dockerFilePath","dockerWorkDir"],"additionalProperties":false}},"required":["dockerfile"],"additionalProperties":false,"description":"Build from a Dockerfile"},{"type":"object","properties":{"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false},"buildpack":{"type":"object","properties":{"builder":{"type":"string","enum":["HEROKU_24","HEROKU_22","HEROKU_22_CLASSIC","HEROKU_20","HEROKU_18","GOOGLE_22","GOOGLE_V1","CNB_ALPINE","CNB_BIONIC","PAKETO_JAMMY_TINY","PAKETO_JAMMY_BASE","PAKETO_JAMMY_FULL","PAKETO_TINY","PAKETO_BASE","PAKETO_FULL"],"description":"Buildpack stack to use. Defaults to recommended stack `HEROKU_24`.","example":"HEROKU_24","default":"HEROKU_24"},"buildpackLocators":{"type":"array","items":{"type":"string","description":"Url or registry identifier of custom Buildpack.","example":"https://buildpack-registry.heroku.com/cnb/mars/create-react-app"},"description":"Array of custom Buildpacks to use.","default":[]},"buildContext":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*$","description":"The working directory to build in.","example":"/","default":"/"},"useCache":{"type":"boolean","description":"Should build dependencies be cached?","example":false,"default":false}},"additionalProperties":false}},"required":["buildpack"],"additionalProperties":false,"description":"Build from a Buildpack"}],"description":"Build engine"},"runtimeEnvironment":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"An object containing the runtime environment to set for the job. Keys may only contain letters, numbers, hyphens, forward slashes and dots.","example":{"variable1":"abcdef","variable2":"12345"},"default":{}},"runtimeFiles":{"type":"object","properties":{},"description":"Secret files as JSON object, encrypted at rest. File path must be absolute","example":{"/dir/fileName":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"buildArguments":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"An object containing the build arguments to set for the job. Keys may only contain letters, numbers, hyphens, forward slashes and dots.","example":{"variable1":"abcdef","variable2":"12345"},"default":{}},"buildFiles":{"type":"object","properties":{},"description":"Secret files as JSON object, encrypted at rest. File path must be absolute","example":{"/dir/fileName":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"dockerSecretMounts":{"type":"object","properties":{},"description":"Docker secret mount contents as JSON object, encrypted at rest. Must be a valid Docker secret mount identifier","example":{"example-secret-mount_1":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"healthChecks":{"type":"array","items":{"type":"object","properties":{"protocol":{"type":"string","enum":["HTTP","CMD","TCP"],"description":"The protocol to access the health check with.","example":"HTTP"},"type":{"type":"string","enum":["livenessProbe","readinessProbe","startupProbe"],"description":"The type of health check.","example":"readinessProbe"},"path":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*((\\?([a-zA-Z0-9-._]+(=[a-zA-Z0-9-._]+)?)*)(&([a-zA-Z0-9-._]+(=[a-zA-Z0-9-._]+)?)*)*)?$","description":"The path of the health check endpoint. Required when protocol is HTTP.","example":"/health-check"},"cmd":{"type":"string","description":"The command to run for the health check. Required when protocol is CMD"},"port":{"type":"integer","minimum":1,"description":"Port number for the health check endpoint. Required when protocol is HTTP.","example":8080},"initialDelaySeconds":{"type":"integer","minimum":1,"maximum":180,"description":"Initial delay, in seconds, before the health check is first run.","example":10},"periodSeconds":{"type":"integer","minimum":10,"maximum":600,"description":"The time between each check, in seconds.","example":60},"timeoutSeconds":{"type":"integer","minimum":1,"maximum":60,"description":"The time to wait for a response before marking the health check as a failure.","example":1},"failureThreshold":{"type":"integer","minimum":1,"maximum":255,"description":"The maximum number of allowed failures.","example":3},"successThreshold":{"type":"integer","minimum":1,"maximum":255,"description":"The number of successes required to mark the health check as a success.","example":1}},"required":["protocol","type","initialDelaySeconds","periodSeconds","timeoutSeconds","failureThreshold"],"additionalProperties":false,"description":"A health check object."},"description":"An array of health checks."},"backoffLimit":{"type":"integer","minimum":0,"description":"The number of attempts to rerun a job before it is marked as failed.","example":0},"runOnSourceChange":{"type":"string","enum":["never","cd-promote","always"],"description":"Configure when the job should be run if the source image changes.","example":"never","default":"never"},"activeDeadlineSeconds":{"type":"integer","minimum":1,"nullable":true,"description":"The maximum amount of time, in seconds, for a job to run before it is marked as failed.","example":600}},"required":["name","billing","backoffLimit"],"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Project > Jobs > General > Create","x-nf-team-scoped":true,"x-nf-subheading":"put job","x-nf-cli-command":["put","job","manual"],"x-nf-deprecation-replacement":"/jobs/put-job","x-nf-deprecation-message":"Requests should instead use the relevant type-agnostic job endpoint."},"v1-projects--projectId--jobs-manual--jobId--patch":{"operationId":"patchProjectsJobsManualJobid","summary":"Patch manual job","description":"Updates a new manual job that only runs when initiated via the UI, CLI, API or JS client.","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"jobId","type":"string","required":true,"description":"ID of the job","example":"example-job","in":"path","schema":{"name":"jobId","type":"string","required":true,"description":"ID of the job","example":"example-job","in":"path"}}],"responses":{"200":{"description":"Details about the updated job.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":52,"description":"The name of the job.","example":"Example Job"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"A description of the job.","example":"A job description"},"stageId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"infrastructure":{"type":"object","properties":{"architecture":{"type":"string","enum":["x86","arm"]}},"additionalProperties":false},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"billing":{"type":"object","properties":{"buildPlan":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The ID of the build plan to use.","example":"nf-compute-200-8"},"deploymentPlan":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The ID of the deployment plan to use.","example":"nf-compute-20"},"gpu":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"gpuType":{"type":"string"},"gpuCount":{"type":"integer"},"timesliced":{"type":"boolean"}},"required":["gpuType"],"additionalProperties":false}},"additionalProperties":false}},"required":["deploymentPlan"],"additionalProperties":false},"disabledCI":{"type":"boolean","description":"Whether CI should be disabled. Only relevant for jobs deploying directly from version control.","default":false},"buildConfiguration":{"type":"object","properties":{"pathIgnoreRules":{"type":"array","items":{"type":"string","maxLength":260,"description":"A path ignore rule, following `.gitignore` syntax. For example, `*.md` will ignore all files ending with `.md`.","example":"README.md"},"maxItems":200,"description":"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."},"isAllowList":{"type":"boolean","description":"If `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`.","example":false},"ciIgnoreFlagsEnabled":{"type":"boolean","description":"If `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":{"type":"array","items":{"type":"string","maxLength":72,"description":"A commit ignore flag.","example":"[skip ci]"},"maxItems":200,"description":"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]\"]`","example":["[skip ci]","[ci skip]","[no ci]","[skip nf]","[nf skip]","[northflank skip]","[skip northflank]"]},"dockerfileTarget":{"type":"string","description":"If your Dockerfile contains multiple build stages, you can specify the target stage by entering its name here."},"dockerCredentials":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The ID of the docker credentials to use.","example":"example-docker-credential"}},"includeGitFolder":{"type":"boolean","description":"Include .git folder inside the build context"},"fullGitClone":{"type":"boolean","description":"Include the entire git history as part of the .git folder. Only relevant if \"includeGitFolder\" is set."},"enableGitLfs":{"type":"boolean","description":"Enable Git LFS support for the build"},"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false}},"additionalProperties":false,"default":{"pathIgnoreRules":[],"isAllowList":false,"ciIgnoreFlagsEnabled":false}},"buildSettings":{"oneOf":[{"type":"object","properties":{"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false},"dockerfile":{"type":"object","properties":{"useCache":{"type":"boolean","description":"DEPRECATED: This field will be removed in the near future and currently has no effect."},"buildEngine":{"type":"string","enum":["buildkit","kaniko"],"description":"Build engine to use. Defaults to recommended build engine `buildkit`","example":"buildkit","default":"buildkit"},"dockerFilePath":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]+$","description":"The file path of the Dockerfile.","example":"/Dockerfile"},"dockerWorkDir":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*$","description":"The working directory of the Dockerfile.","example":"/"},"buildkit":{"type":"object","properties":{"useCache":{"type":"boolean","description":"Use persistent storage to cache build layers.","example":true,"default":false},"cacheStorageSize":{"type":"integer","description":"The amount of persistent storage available to each build in MB.","example":32768},"useInternalCache":{"type":"boolean","description":"DEPRECATED: This field will be removed in the near future.","default":false},"internalCacheStorage":{"type":"number","format":"float","description":"DEPRECATED: This field will be removed in the near future."}},"additionalProperties":false}},"required":["dockerFilePath","dockerWorkDir"],"additionalProperties":false}},"required":["dockerfile"],"additionalProperties":false,"description":"Build from a Dockerfile"},{"type":"object","properties":{"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false},"buildpack":{"type":"object","properties":{"builder":{"type":"string","enum":["HEROKU_24","HEROKU_22","HEROKU_22_CLASSIC","HEROKU_20","HEROKU_18","GOOGLE_22","GOOGLE_V1","CNB_ALPINE","CNB_BIONIC","PAKETO_JAMMY_TINY","PAKETO_JAMMY_BASE","PAKETO_JAMMY_FULL","PAKETO_TINY","PAKETO_BASE","PAKETO_FULL"],"description":"Buildpack stack to use. Defaults to recommended stack `HEROKU_24`.","example":"HEROKU_24","default":"HEROKU_24"},"buildpackLocators":{"type":"array","items":{"type":"string","description":"Url or registry identifier of custom Buildpack.","example":"https://buildpack-registry.heroku.com/cnb/mars/create-react-app"},"description":"Array of custom Buildpacks to use.","default":[]},"buildContext":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*$","description":"The working directory to build in.","example":"/","default":"/"},"useCache":{"type":"boolean","description":"Should build dependencies be cached?","example":false,"default":false}},"additionalProperties":false}},"required":["buildpack"],"additionalProperties":false,"description":"Build from a Buildpack"}],"description":"Build engine"},"runtimeEnvironment":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"An object containing the runtime environment to set for the job. Keys may only contain letters, numbers, hyphens, forward slashes and dots.","example":{"variable1":"abcdef","variable2":"12345"},"default":{}},"runtimeFiles":{"type":"object","properties":{},"description":"Secret files as JSON object, encrypted at rest. File path must be absolute","example":{"/dir/fileName":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"buildArguments":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"An object containing the build arguments to set for the job. Keys may only contain letters, numbers, hyphens, forward slashes and dots.","example":{"variable1":"abcdef","variable2":"12345"},"default":{}},"buildFiles":{"type":"object","properties":{},"description":"Secret files as JSON object, encrypted at rest. File path must be absolute","example":{"/dir/fileName":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"dockerSecretMounts":{"type":"object","properties":{},"description":"Docker secret mount contents as JSON object, encrypted at rest. Must be a valid Docker secret mount identifier","example":{"example-secret-mount_1":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"healthChecks":{"type":"array","items":{"type":"object","properties":{"protocol":{"type":"string","enum":["HTTP","CMD","TCP"],"description":"The protocol to access the health check with.","example":"HTTP"},"type":{"type":"string","enum":["livenessProbe","readinessProbe","startupProbe"],"description":"The type of health check.","example":"readinessProbe"},"path":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*((\\?([a-zA-Z0-9-._]+(=[a-zA-Z0-9-._]+)?)*)(&([a-zA-Z0-9-._]+(=[a-zA-Z0-9-._]+)?)*)*)?$","description":"The path of the health check endpoint. Required when protocol is HTTP.","example":"/health-check"},"cmd":{"type":"string","description":"The command to run for the health check. Required when protocol is CMD"},"port":{"type":"integer","minimum":1,"description":"Port number for the health check endpoint. Required when protocol is HTTP.","example":8080},"initialDelaySeconds":{"type":"integer","minimum":1,"maximum":180,"description":"Initial delay, in seconds, before the health check is first run.","example":10},"periodSeconds":{"type":"integer","minimum":10,"maximum":600,"description":"The time between each check, in seconds.","example":60},"timeoutSeconds":{"type":"integer","minimum":1,"maximum":60,"description":"The time to wait for a response before marking the health check as a failure.","example":1},"failureThreshold":{"type":"integer","minimum":1,"maximum":255,"description":"The maximum number of allowed failures.","example":3},"successThreshold":{"type":"integer","minimum":1,"maximum":255,"description":"The number of successes required to mark the health check as a success.","example":1}},"required":["protocol","type","initialDelaySeconds","periodSeconds","timeoutSeconds","failureThreshold"],"additionalProperties":false,"description":"A health check object."},"description":"An array of health checks."},"backoffLimit":{"type":"integer","minimum":0,"description":"The number of attempts to rerun a job before it is marked as failed.","example":0},"runOnSourceChange":{"type":"string","enum":["never","cd-promote","always"],"description":"Configure when the job should be run if the source image changes.","example":"never","default":"never"},"activeDeadlineSeconds":{"type":"integer","minimum":1,"nullable":true,"description":"The maximum amount of time, in seconds, for a job to run before it is marked as failed.","example":600},"jobType":{"type":"string","enum":["manual"],"description":"Type of the job (manual or manual)","example":"manual"},"id":{"type":"string","description":"Identifier for the job","example":"example-job"},"appId":{"type":"string","description":"Full identifier used for job deployment","example":"/example-user/default-project/example-job"},"deployment":{"type":"object","properties":{"buildpack":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customProcess","customCommand","customEntrypointCustomCommand","originalEntrypointCustomCommand"],"description":"Type of buildpack run configuration"},"customProcess":{"type":"string","description":"Custom process which should be run. Required in case where `configType` is `customProcess`"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be run. Required in case where `configType` is `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be run. Required in case where `configType` is `customCommand`, `customEntrypointCustomCommand` or `originalEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of buildpack runtime"},"docker":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customEntrypoint","customCommand","customEntrypointCustomCommand"],"description":"Type of entrypoint & command override configuration","example":"default"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be used. Required in case where `configType` is `customEntrypoint` or `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be used. Required in case where `configType` is `customCommand` or `customEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of docker runtime"},"storage":{"type":"object","properties":{"useHdbStorage":{"type":"boolean"},"usePdSsdStorage":{"type":"boolean"},"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":1024,"description":"Ephemeral storage per container in MB","example":1024}},"additionalProperties":false},"shmSize":{"type":"integer","minimum":64,"description":"Configures the amount of available memory-backed disk space available to /dev/shm"}},"additionalProperties":false},"gpu":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"gpuType":{"type":"string"},"gpuCount":{"type":"integer"},"timesliced":{"type":"boolean"}},"required":["gpuType"],"additionalProperties":false}},"additionalProperties":false},"gracePeriodSeconds":{"type":"integer","minimum":15,"maximum":600,"description":"The 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."},"metadata":{"type":"object","properties":{"labels":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom labels for the workload."},"annotations":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom annotations for the workload as string or object."}},"additionalProperties":false,"description":"Allow setting custom labels and annotations for workloads."},"vcs":{"type":"object","properties":{"projectUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo to build.","example":"https://github.com/northflank/gatsby-with-northflank"},"projectType":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string","minLength":24,"maxLength":24,"description":"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 `vcsLinkId` is provided, Northflank will instead use your linked account with that ID."},"projectBranch":{"type":"string","description":"The name of the branch to use.","example":"master"}},"required":["projectUrl","projectType","projectBranch"],"additionalProperties":false},"external":{"type":"object","properties":{"imagePath":{"type":"string","pattern":"^(?:(?:https?:\\/\\/)?([a-zA-Z0-9\\-]+\\.[a-zA-Z0-9\\.\\-]+)(\\/v1)?)?(?:\\/)?([a-zA-Z/-9\\.\\-_]+)(?:\\:([a-zA-Z/-9\\.\\-_\\:]+)|\\@([a-zA-Z/-9\\.\\-_\\:]+))$","description":"Image to be deployed. When not deploying from Dockerhub the URL must be specified.","example":"nginx:latest"},"credentials":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"ID of the saved credentials to use to access this external image.","example":"example-credentials"}},"required":["imagePath"],"additionalProperties":false},"internal":{"type":"object","properties":{"id":{"anyOf":[{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":54,"example":"example-build-service"},{"type":"string","example":"example-project/example-build-service"}],"description":"ID of the build service to deploy"},"branch":{"type":"string","description":"Branch to deploy","example":"master"},"buildSHA":{"oneOf":[{"type":"string","minLength":40,"maxLength":40,"description":"A commit sha."},{"type":"string","enum":["latest"],"description":"Latest commit."}],"description":"Commit SHA to deploy, or 'latest' to deploy the most recent commit","example":"latest"},"buildId":{"type":"string","description":"ID of the build that should be deployed","example":"premium-guide-6393"}},"additionalProperties":false},"imageUrl":{"type":"string","description":"Image registry url of the deployed image."}},"additionalProperties":false,"default":{}},"status":{"type":"object","properties":{"build":{"type":"object","properties":{"status":{"type":"string","enum":["QUEUED","PENDING","UNSCHEDULABLE","STARTING","CLONING","BUILDING","UPLOADING","ABORTED","FAILURE","SUBMISSION_FAILURE","SUCCESS","CRASHED","IN_PROGRESS"],"description":"The current status of the build.","example":"SUCCESS"},"lastTransitionTime":{"type":"string","format":"date-time","description":"The timestamp of when the build reached this status.","example":"2021-11-29T11:47:16.624Z"}},"required":["status"],"additionalProperties":false,"description":"Details about the status of the most recent build."}},"additionalProperties":false,"description":"Details about the current job status."},"cluster":{"type":"object","properties":{"id":{"type":"string","description":"The id of the cluster associated with this project.","example":"nf-europe-west"},"name":{"type":"string","description":"The name of the cluster associated with this project.","example":"nf-europe-west"},"namespace":{"type":"string","description":"Namespace this resource is located within on the cluster.","example":"ns-8zy2mcjh9zn2"},"loadBalancers":{"type":"array","items":{"type":"string","example":"lb.659200800000000000000000.northflank.com"},"description":"Load balancer DNS for the cluster."}},"required":["id","name"],"additionalProperties":false,"description":"Cluster information"},"createdAt":{"type":"string","format":"date-time","description":"time of creation"},"updatedAt":{"type":"string","format":"date-time","description":"time of update"}},"required":["name","billing","backoffLimit","jobType","id","appId","status","cluster"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Jobs","project"],"security":[],"deprecated":true,"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"A description of the job.","example":"A job description"},"stageId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"nullable":true},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"billing":{"type":"object","properties":{"buildPlan":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The ID of the build plan to use.","example":"nf-compute-200-8"},"deploymentPlan":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The ID of the deployment plan to use.","example":"nf-compute-20"},"gpu":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"gpuType":{"type":"string"},"gpuCount":{"type":"integer"},"timesliced":{"type":"boolean"}},"additionalProperties":false}},"additionalProperties":false}},"additionalProperties":false},"disabledCI":{"type":"boolean","description":"Whether CI should be disabled. Only relevant for jobs deploying directly from version control."},"buildConfiguration":{"type":"object","properties":{"pathIgnoreRules":{"type":"array","items":{"type":"string","maxLength":260,"description":"A path ignore rule, following `.gitignore` syntax. For example, `*.md` will ignore all files ending with `.md`.","example":"README.md"},"maxItems":200,"description":"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."},"isAllowList":{"type":"boolean","description":"If `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`.","example":false},"ciIgnoreFlagsEnabled":{"type":"boolean","description":"If `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":{"type":"array","items":{"type":"string","maxLength":72,"description":"A commit ignore flag.","example":"[skip ci]"},"maxItems":200,"description":"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]\"]`","example":["[skip ci]","[ci skip]","[no ci]","[skip nf]","[nf skip]","[northflank skip]","[skip northflank]"]},"dockerfileTarget":{"type":"string","description":"If your Dockerfile contains multiple build stages, you can specify the target stage by entering its name here."},"dockerCredentials":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The ID of the docker credentials to use.","example":"example-docker-credential"}},"includeGitFolder":{"type":"boolean","description":"Include .git folder inside the build context"},"fullGitClone":{"type":"boolean","description":"Include the entire git history as part of the .git folder. Only relevant if \"includeGitFolder\" is set."},"enableGitLfs":{"type":"boolean","description":"Enable Git LFS support for the build"},"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false}},"additionalProperties":false},"buildSettings":{"type":"object","properties":{"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false},"dockerfile":{"type":"object","properties":{"useCache":{"type":"boolean","description":"DEPRECATED: This field will be removed in the near future and currently has no effect."},"buildEngine":{"type":"string","enum":["buildkit","kaniko"],"description":"Build engine to use. Defaults to recommended build engine `buildkit`","example":"buildkit"},"dockerFilePath":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]+$","description":"The file path of the Dockerfile.","example":"/Dockerfile"},"dockerWorkDir":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*$","description":"The working directory of the Dockerfile.","example":"/"},"buildkit":{"type":"object","properties":{"useCache":{"type":"boolean","description":"Use persistent storage to cache build layers.","example":true},"cacheStorageSize":{"type":"integer","description":"The amount of persistent storage available to each build in MB.","example":32768},"useInternalCache":{"type":"boolean","description":"DEPRECATED: This field will be removed in the near future."},"internalCacheStorage":{"type":"number","format":"float","description":"DEPRECATED: This field will be removed in the near future."}},"additionalProperties":false}},"additionalProperties":false},"buildpack":{"type":"object","properties":{"builder":{"type":"string","enum":["HEROKU_24","HEROKU_22","HEROKU_22_CLASSIC","HEROKU_20","HEROKU_18","GOOGLE_22","GOOGLE_V1","CNB_ALPINE","CNB_BIONIC","PAKETO_JAMMY_TINY","PAKETO_JAMMY_BASE","PAKETO_JAMMY_FULL","PAKETO_TINY","PAKETO_BASE","PAKETO_FULL"],"description":"Buildpack stack to use. Defaults to recommended stack `HEROKU_24`.","example":"HEROKU_24"},"buildpackLocators":{"type":"array","items":{"type":"string","description":"Url or registry identifier of custom Buildpack.","example":"https://buildpack-registry.heroku.com/cnb/mars/create-react-app"},"description":"Array of custom Buildpacks to use."},"buildContext":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*$","description":"The working directory to build in.","example":"/"},"useCache":{"type":"boolean","description":"Should build dependencies be cached?","example":false}},"additionalProperties":false}},"additionalProperties":false},"runtimeEnvironment":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"An object containing the runtime environment to set for the job. Keys may only contain letters, numbers, hyphens, forward slashes and dots.","example":{"variable1":"abcdef","variable2":"12345"}},"runtimeFiles":{"type":"object","properties":{},"description":"Secret files as JSON object, encrypted at rest. File path must be absolute","example":{"/dir/fileName":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"buildArguments":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"An object containing the build arguments to set for the job. Keys may only contain letters, numbers, hyphens, forward slashes and dots.","example":{"variable1":"abcdef","variable2":"12345"}},"buildFiles":{"type":"object","properties":{},"description":"Secret files as JSON object, encrypted at rest. File path must be absolute","example":{"/dir/fileName":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"dockerSecretMounts":{"type":"object","properties":{},"description":"Docker secret mount contents as JSON object, encrypted at rest. Must be a valid Docker secret mount identifier","example":{"example-secret-mount_1":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"healthChecks":{"type":"array","items":{"type":"object","properties":{"protocol":{"type":"string","enum":["HTTP","CMD","TCP"],"description":"The protocol to access the health check with.","example":"HTTP"},"type":{"type":"string","enum":["livenessProbe","readinessProbe","startupProbe"],"description":"The type of health check.","example":"readinessProbe"},"path":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*((\\?([a-zA-Z0-9-._]+(=[a-zA-Z0-9-._]+)?)*)(&([a-zA-Z0-9-._]+(=[a-zA-Z0-9-._]+)?)*)*)?$","description":"The path of the health check endpoint. Required when protocol is HTTP.","example":"/health-check"},"cmd":{"type":"string","description":"The command to run for the health check. Required when protocol is CMD"},"port":{"type":"integer","minimum":1,"description":"Port number for the health check endpoint. Required when protocol is HTTP.","example":8080},"initialDelaySeconds":{"type":"integer","minimum":1,"maximum":180,"description":"Initial delay, in seconds, before the health check is first run.","example":10},"periodSeconds":{"type":"integer","minimum":10,"maximum":600,"description":"The time between each check, in seconds.","example":60},"timeoutSeconds":{"type":"integer","minimum":1,"maximum":60,"description":"The time to wait for a response before marking the health check as a failure.","example":1},"failureThreshold":{"type":"integer","minimum":1,"maximum":255,"description":"The maximum number of allowed failures.","example":3},"successThreshold":{"type":"integer","minimum":1,"maximum":255,"description":"The number of successes required to mark the health check as a success.","example":1}},"required":["protocol","type","initialDelaySeconds","periodSeconds","timeoutSeconds","failureThreshold"],"additionalProperties":false,"description":"A health check object."},"description":"An array of health checks."},"backoffLimit":{"type":"integer","minimum":0,"description":"The number of attempts to rerun a job before it is marked as failed.","example":0},"runOnSourceChange":{"type":"string","enum":["never","cd-promote","always"],"description":"Configure when the job should be run if the source image changes.","example":"never"},"activeDeadlineSeconds":{"type":"integer","minimum":1,"nullable":true,"description":"The maximum amount of time, in seconds, for a job to run before it is marked as failed.","example":600}},"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Project > Jobs > General > Update","x-nf-team-scoped":true,"x-nf-subheading":"patch job","x-nf-cli-command":["patch","job","manual"],"x-nf-deprecation-replacement":"/jobs/patch-job","x-nf-deprecation-message":"Requests should instead use the relevant type-agnostic job endpoint."},"v1-projects--projectId--jobs-manual--jobId--patch-team-scoped":{"operationId":"patchProjectsJobsManualJobid","summary":"Patch manual job","description":"Updates a new manual job that only runs when initiated via the UI, CLI, API or JS client.","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"jobId","type":"string","required":true,"description":"ID of the job","example":"example-job","in":"path","schema":{"name":"jobId","type":"string","required":true,"description":"ID of the job","example":"example-job","in":"path"}}],"responses":{"200":{"description":"Details about the updated job.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":52,"description":"The name of the job.","example":"Example Job"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"A description of the job.","example":"A job description"},"stageId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"infrastructure":{"type":"object","properties":{"architecture":{"type":"string","enum":["x86","arm"]}},"additionalProperties":false},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"billing":{"type":"object","properties":{"buildPlan":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The ID of the build plan to use.","example":"nf-compute-200-8"},"deploymentPlan":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The ID of the deployment plan to use.","example":"nf-compute-20"},"gpu":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"gpuType":{"type":"string"},"gpuCount":{"type":"integer"},"timesliced":{"type":"boolean"}},"required":["gpuType"],"additionalProperties":false}},"additionalProperties":false}},"required":["deploymentPlan"],"additionalProperties":false},"disabledCI":{"type":"boolean","description":"Whether CI should be disabled. Only relevant for jobs deploying directly from version control.","default":false},"buildConfiguration":{"type":"object","properties":{"pathIgnoreRules":{"type":"array","items":{"type":"string","maxLength":260,"description":"A path ignore rule, following `.gitignore` syntax. For example, `*.md` will ignore all files ending with `.md`.","example":"README.md"},"maxItems":200,"description":"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."},"isAllowList":{"type":"boolean","description":"If `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`.","example":false},"ciIgnoreFlagsEnabled":{"type":"boolean","description":"If `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":{"type":"array","items":{"type":"string","maxLength":72,"description":"A commit ignore flag.","example":"[skip ci]"},"maxItems":200,"description":"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]\"]`","example":["[skip ci]","[ci skip]","[no ci]","[skip nf]","[nf skip]","[northflank skip]","[skip northflank]"]},"dockerfileTarget":{"type":"string","description":"If your Dockerfile contains multiple build stages, you can specify the target stage by entering its name here."},"dockerCredentials":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The ID of the docker credentials to use.","example":"example-docker-credential"}},"includeGitFolder":{"type":"boolean","description":"Include .git folder inside the build context"},"fullGitClone":{"type":"boolean","description":"Include the entire git history as part of the .git folder. Only relevant if \"includeGitFolder\" is set."},"enableGitLfs":{"type":"boolean","description":"Enable Git LFS support for the build"},"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false}},"additionalProperties":false,"default":{"pathIgnoreRules":[],"isAllowList":false,"ciIgnoreFlagsEnabled":false}},"buildSettings":{"oneOf":[{"type":"object","properties":{"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false},"dockerfile":{"type":"object","properties":{"useCache":{"type":"boolean","description":"DEPRECATED: This field will be removed in the near future and currently has no effect."},"buildEngine":{"type":"string","enum":["buildkit","kaniko"],"description":"Build engine to use. Defaults to recommended build engine `buildkit`","example":"buildkit","default":"buildkit"},"dockerFilePath":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]+$","description":"The file path of the Dockerfile.","example":"/Dockerfile"},"dockerWorkDir":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*$","description":"The working directory of the Dockerfile.","example":"/"},"buildkit":{"type":"object","properties":{"useCache":{"type":"boolean","description":"Use persistent storage to cache build layers.","example":true,"default":false},"cacheStorageSize":{"type":"integer","description":"The amount of persistent storage available to each build in MB.","example":32768},"useInternalCache":{"type":"boolean","description":"DEPRECATED: This field will be removed in the near future.","default":false},"internalCacheStorage":{"type":"number","format":"float","description":"DEPRECATED: This field will be removed in the near future."}},"additionalProperties":false}},"required":["dockerFilePath","dockerWorkDir"],"additionalProperties":false}},"required":["dockerfile"],"additionalProperties":false,"description":"Build from a Dockerfile"},{"type":"object","properties":{"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false},"buildpack":{"type":"object","properties":{"builder":{"type":"string","enum":["HEROKU_24","HEROKU_22","HEROKU_22_CLASSIC","HEROKU_20","HEROKU_18","GOOGLE_22","GOOGLE_V1","CNB_ALPINE","CNB_BIONIC","PAKETO_JAMMY_TINY","PAKETO_JAMMY_BASE","PAKETO_JAMMY_FULL","PAKETO_TINY","PAKETO_BASE","PAKETO_FULL"],"description":"Buildpack stack to use. Defaults to recommended stack `HEROKU_24`.","example":"HEROKU_24","default":"HEROKU_24"},"buildpackLocators":{"type":"array","items":{"type":"string","description":"Url or registry identifier of custom Buildpack.","example":"https://buildpack-registry.heroku.com/cnb/mars/create-react-app"},"description":"Array of custom Buildpacks to use.","default":[]},"buildContext":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*$","description":"The working directory to build in.","example":"/","default":"/"},"useCache":{"type":"boolean","description":"Should build dependencies be cached?","example":false,"default":false}},"additionalProperties":false}},"required":["buildpack"],"additionalProperties":false,"description":"Build from a Buildpack"}],"description":"Build engine"},"runtimeEnvironment":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"An object containing the runtime environment to set for the job. Keys may only contain letters, numbers, hyphens, forward slashes and dots.","example":{"variable1":"abcdef","variable2":"12345"},"default":{}},"runtimeFiles":{"type":"object","properties":{},"description":"Secret files as JSON object, encrypted at rest. File path must be absolute","example":{"/dir/fileName":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"buildArguments":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"An object containing the build arguments to set for the job. Keys may only contain letters, numbers, hyphens, forward slashes and dots.","example":{"variable1":"abcdef","variable2":"12345"},"default":{}},"buildFiles":{"type":"object","properties":{},"description":"Secret files as JSON object, encrypted at rest. File path must be absolute","example":{"/dir/fileName":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"dockerSecretMounts":{"type":"object","properties":{},"description":"Docker secret mount contents as JSON object, encrypted at rest. Must be a valid Docker secret mount identifier","example":{"example-secret-mount_1":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"healthChecks":{"type":"array","items":{"type":"object","properties":{"protocol":{"type":"string","enum":["HTTP","CMD","TCP"],"description":"The protocol to access the health check with.","example":"HTTP"},"type":{"type":"string","enum":["livenessProbe","readinessProbe","startupProbe"],"description":"The type of health check.","example":"readinessProbe"},"path":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*((\\?([a-zA-Z0-9-._]+(=[a-zA-Z0-9-._]+)?)*)(&([a-zA-Z0-9-._]+(=[a-zA-Z0-9-._]+)?)*)*)?$","description":"The path of the health check endpoint. Required when protocol is HTTP.","example":"/health-check"},"cmd":{"type":"string","description":"The command to run for the health check. Required when protocol is CMD"},"port":{"type":"integer","minimum":1,"description":"Port number for the health check endpoint. Required when protocol is HTTP.","example":8080},"initialDelaySeconds":{"type":"integer","minimum":1,"maximum":180,"description":"Initial delay, in seconds, before the health check is first run.","example":10},"periodSeconds":{"type":"integer","minimum":10,"maximum":600,"description":"The time between each check, in seconds.","example":60},"timeoutSeconds":{"type":"integer","minimum":1,"maximum":60,"description":"The time to wait for a response before marking the health check as a failure.","example":1},"failureThreshold":{"type":"integer","minimum":1,"maximum":255,"description":"The maximum number of allowed failures.","example":3},"successThreshold":{"type":"integer","minimum":1,"maximum":255,"description":"The number of successes required to mark the health check as a success.","example":1}},"required":["protocol","type","initialDelaySeconds","periodSeconds","timeoutSeconds","failureThreshold"],"additionalProperties":false,"description":"A health check object."},"description":"An array of health checks."},"backoffLimit":{"type":"integer","minimum":0,"description":"The number of attempts to rerun a job before it is marked as failed.","example":0},"runOnSourceChange":{"type":"string","enum":["never","cd-promote","always"],"description":"Configure when the job should be run if the source image changes.","example":"never","default":"never"},"activeDeadlineSeconds":{"type":"integer","minimum":1,"nullable":true,"description":"The maximum amount of time, in seconds, for a job to run before it is marked as failed.","example":600},"jobType":{"type":"string","enum":["manual"],"description":"Type of the job (manual or manual)","example":"manual"},"id":{"type":"string","description":"Identifier for the job","example":"example-job"},"appId":{"type":"string","description":"Full identifier used for job deployment","example":"/example-user/default-project/example-job"},"deployment":{"type":"object","properties":{"buildpack":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customProcess","customCommand","customEntrypointCustomCommand","originalEntrypointCustomCommand"],"description":"Type of buildpack run configuration"},"customProcess":{"type":"string","description":"Custom process which should be run. Required in case where `configType` is `customProcess`"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be run. Required in case where `configType` is `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be run. Required in case where `configType` is `customCommand`, `customEntrypointCustomCommand` or `originalEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of buildpack runtime"},"docker":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customEntrypoint","customCommand","customEntrypointCustomCommand"],"description":"Type of entrypoint & command override configuration","example":"default"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be used. Required in case where `configType` is `customEntrypoint` or `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be used. Required in case where `configType` is `customCommand` or `customEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of docker runtime"},"storage":{"type":"object","properties":{"useHdbStorage":{"type":"boolean"},"usePdSsdStorage":{"type":"boolean"},"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":1024,"description":"Ephemeral storage per container in MB","example":1024}},"additionalProperties":false},"shmSize":{"type":"integer","minimum":64,"description":"Configures the amount of available memory-backed disk space available to /dev/shm"}},"additionalProperties":false},"gpu":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"gpuType":{"type":"string"},"gpuCount":{"type":"integer"},"timesliced":{"type":"boolean"}},"required":["gpuType"],"additionalProperties":false}},"additionalProperties":false},"gracePeriodSeconds":{"type":"integer","minimum":15,"maximum":600,"description":"The 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."},"metadata":{"type":"object","properties":{"labels":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom labels for the workload."},"annotations":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom annotations for the workload as string or object."}},"additionalProperties":false,"description":"Allow setting custom labels and annotations for workloads."},"vcs":{"type":"object","properties":{"projectUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo to build.","example":"https://github.com/northflank/gatsby-with-northflank"},"projectType":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string","minLength":24,"maxLength":24,"description":"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 `vcsLinkId` is provided, Northflank will instead use your linked account with that ID."},"projectBranch":{"type":"string","description":"The name of the branch to use.","example":"master"}},"required":["projectUrl","projectType","projectBranch"],"additionalProperties":false},"external":{"type":"object","properties":{"imagePath":{"type":"string","pattern":"^(?:(?:https?:\\/\\/)?([a-zA-Z0-9\\-]+\\.[a-zA-Z0-9\\.\\-]+)(\\/v1)?)?(?:\\/)?([a-zA-Z/-9\\.\\-_]+)(?:\\:([a-zA-Z/-9\\.\\-_\\:]+)|\\@([a-zA-Z/-9\\.\\-_\\:]+))$","description":"Image to be deployed. When not deploying from Dockerhub the URL must be specified.","example":"nginx:latest"},"credentials":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"ID of the saved credentials to use to access this external image.","example":"example-credentials"}},"required":["imagePath"],"additionalProperties":false},"internal":{"type":"object","properties":{"id":{"anyOf":[{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":54,"example":"example-build-service"},{"type":"string","example":"example-project/example-build-service"}],"description":"ID of the build service to deploy"},"branch":{"type":"string","description":"Branch to deploy","example":"master"},"buildSHA":{"oneOf":[{"type":"string","minLength":40,"maxLength":40,"description":"A commit sha."},{"type":"string","enum":["latest"],"description":"Latest commit."}],"description":"Commit SHA to deploy, or 'latest' to deploy the most recent commit","example":"latest"},"buildId":{"type":"string","description":"ID of the build that should be deployed","example":"premium-guide-6393"}},"additionalProperties":false},"imageUrl":{"type":"string","description":"Image registry url of the deployed image."}},"additionalProperties":false,"default":{}},"status":{"type":"object","properties":{"build":{"type":"object","properties":{"status":{"type":"string","enum":["QUEUED","PENDING","UNSCHEDULABLE","STARTING","CLONING","BUILDING","UPLOADING","ABORTED","FAILURE","SUBMISSION_FAILURE","SUCCESS","CRASHED","IN_PROGRESS"],"description":"The current status of the build.","example":"SUCCESS"},"lastTransitionTime":{"type":"string","format":"date-time","description":"The timestamp of when the build reached this status.","example":"2021-11-29T11:47:16.624Z"}},"required":["status"],"additionalProperties":false,"description":"Details about the status of the most recent build."}},"additionalProperties":false,"description":"Details about the current job status."},"cluster":{"type":"object","properties":{"id":{"type":"string","description":"The id of the cluster associated with this project.","example":"nf-europe-west"},"name":{"type":"string","description":"The name of the cluster associated with this project.","example":"nf-europe-west"},"namespace":{"type":"string","description":"Namespace this resource is located within on the cluster.","example":"ns-8zy2mcjh9zn2"},"loadBalancers":{"type":"array","items":{"type":"string","example":"lb.659200800000000000000000.northflank.com"},"description":"Load balancer DNS for the cluster."}},"required":["id","name"],"additionalProperties":false,"description":"Cluster information"},"createdAt":{"type":"string","format":"date-time","description":"time of creation"},"updatedAt":{"type":"string","format":"date-time","description":"time of update"}},"required":["name","billing","backoffLimit","jobType","id","appId","status","cluster"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Jobs","project"],"security":[],"deprecated":true,"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"A description of the job.","example":"A job description"},"stageId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"nullable":true},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"billing":{"type":"object","properties":{"buildPlan":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The ID of the build plan to use.","example":"nf-compute-200-8"},"deploymentPlan":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The ID of the deployment plan to use.","example":"nf-compute-20"},"gpu":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"gpuType":{"type":"string"},"gpuCount":{"type":"integer"},"timesliced":{"type":"boolean"}},"additionalProperties":false}},"additionalProperties":false}},"additionalProperties":false},"disabledCI":{"type":"boolean","description":"Whether CI should be disabled. Only relevant for jobs deploying directly from version control."},"buildConfiguration":{"type":"object","properties":{"pathIgnoreRules":{"type":"array","items":{"type":"string","maxLength":260,"description":"A path ignore rule, following `.gitignore` syntax. For example, `*.md` will ignore all files ending with `.md`.","example":"README.md"},"maxItems":200,"description":"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."},"isAllowList":{"type":"boolean","description":"If `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`.","example":false},"ciIgnoreFlagsEnabled":{"type":"boolean","description":"If `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":{"type":"array","items":{"type":"string","maxLength":72,"description":"A commit ignore flag.","example":"[skip ci]"},"maxItems":200,"description":"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]\"]`","example":["[skip ci]","[ci skip]","[no ci]","[skip nf]","[nf skip]","[northflank skip]","[skip northflank]"]},"dockerfileTarget":{"type":"string","description":"If your Dockerfile contains multiple build stages, you can specify the target stage by entering its name here."},"dockerCredentials":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The ID of the docker credentials to use.","example":"example-docker-credential"}},"includeGitFolder":{"type":"boolean","description":"Include .git folder inside the build context"},"fullGitClone":{"type":"boolean","description":"Include the entire git history as part of the .git folder. Only relevant if \"includeGitFolder\" is set."},"enableGitLfs":{"type":"boolean","description":"Enable Git LFS support for the build"},"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false}},"additionalProperties":false},"buildSettings":{"type":"object","properties":{"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false},"dockerfile":{"type":"object","properties":{"useCache":{"type":"boolean","description":"DEPRECATED: This field will be removed in the near future and currently has no effect."},"buildEngine":{"type":"string","enum":["buildkit","kaniko"],"description":"Build engine to use. Defaults to recommended build engine `buildkit`","example":"buildkit"},"dockerFilePath":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]+$","description":"The file path of the Dockerfile.","example":"/Dockerfile"},"dockerWorkDir":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*$","description":"The working directory of the Dockerfile.","example":"/"},"buildkit":{"type":"object","properties":{"useCache":{"type":"boolean","description":"Use persistent storage to cache build layers.","example":true},"cacheStorageSize":{"type":"integer","description":"The amount of persistent storage available to each build in MB.","example":32768},"useInternalCache":{"type":"boolean","description":"DEPRECATED: This field will be removed in the near future."},"internalCacheStorage":{"type":"number","format":"float","description":"DEPRECATED: This field will be removed in the near future."}},"additionalProperties":false}},"additionalProperties":false},"buildpack":{"type":"object","properties":{"builder":{"type":"string","enum":["HEROKU_24","HEROKU_22","HEROKU_22_CLASSIC","HEROKU_20","HEROKU_18","GOOGLE_22","GOOGLE_V1","CNB_ALPINE","CNB_BIONIC","PAKETO_JAMMY_TINY","PAKETO_JAMMY_BASE","PAKETO_JAMMY_FULL","PAKETO_TINY","PAKETO_BASE","PAKETO_FULL"],"description":"Buildpack stack to use. Defaults to recommended stack `HEROKU_24`.","example":"HEROKU_24"},"buildpackLocators":{"type":"array","items":{"type":"string","description":"Url or registry identifier of custom Buildpack.","example":"https://buildpack-registry.heroku.com/cnb/mars/create-react-app"},"description":"Array of custom Buildpacks to use."},"buildContext":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*$","description":"The working directory to build in.","example":"/"},"useCache":{"type":"boolean","description":"Should build dependencies be cached?","example":false}},"additionalProperties":false}},"additionalProperties":false},"runtimeEnvironment":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"An object containing the runtime environment to set for the job. Keys may only contain letters, numbers, hyphens, forward slashes and dots.","example":{"variable1":"abcdef","variable2":"12345"}},"runtimeFiles":{"type":"object","properties":{},"description":"Secret files as JSON object, encrypted at rest. File path must be absolute","example":{"/dir/fileName":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"buildArguments":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"An object containing the build arguments to set for the job. Keys may only contain letters, numbers, hyphens, forward slashes and dots.","example":{"variable1":"abcdef","variable2":"12345"}},"buildFiles":{"type":"object","properties":{},"description":"Secret files as JSON object, encrypted at rest. File path must be absolute","example":{"/dir/fileName":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"dockerSecretMounts":{"type":"object","properties":{},"description":"Docker secret mount contents as JSON object, encrypted at rest. Must be a valid Docker secret mount identifier","example":{"example-secret-mount_1":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"healthChecks":{"type":"array","items":{"type":"object","properties":{"protocol":{"type":"string","enum":["HTTP","CMD","TCP"],"description":"The protocol to access the health check with.","example":"HTTP"},"type":{"type":"string","enum":["livenessProbe","readinessProbe","startupProbe"],"description":"The type of health check.","example":"readinessProbe"},"path":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*((\\?([a-zA-Z0-9-._]+(=[a-zA-Z0-9-._]+)?)*)(&([a-zA-Z0-9-._]+(=[a-zA-Z0-9-._]+)?)*)*)?$","description":"The path of the health check endpoint. Required when protocol is HTTP.","example":"/health-check"},"cmd":{"type":"string","description":"The command to run for the health check. Required when protocol is CMD"},"port":{"type":"integer","minimum":1,"description":"Port number for the health check endpoint. Required when protocol is HTTP.","example":8080},"initialDelaySeconds":{"type":"integer","minimum":1,"maximum":180,"description":"Initial delay, in seconds, before the health check is first run.","example":10},"periodSeconds":{"type":"integer","minimum":10,"maximum":600,"description":"The time between each check, in seconds.","example":60},"timeoutSeconds":{"type":"integer","minimum":1,"maximum":60,"description":"The time to wait for a response before marking the health check as a failure.","example":1},"failureThreshold":{"type":"integer","minimum":1,"maximum":255,"description":"The maximum number of allowed failures.","example":3},"successThreshold":{"type":"integer","minimum":1,"maximum":255,"description":"The number of successes required to mark the health check as a success.","example":1}},"required":["protocol","type","initialDelaySeconds","periodSeconds","timeoutSeconds","failureThreshold"],"additionalProperties":false,"description":"A health check object."},"description":"An array of health checks."},"backoffLimit":{"type":"integer","minimum":0,"description":"The number of attempts to rerun a job before it is marked as failed.","example":0},"runOnSourceChange":{"type":"string","enum":["never","cd-promote","always"],"description":"Configure when the job should be run if the source image changes.","example":"never"},"activeDeadlineSeconds":{"type":"integer","minimum":1,"nullable":true,"description":"The maximum amount of time, in seconds, for a job to run before it is marked as failed.","example":600}},"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Project > Jobs > General > Update","x-nf-team-scoped":true,"x-nf-subheading":"patch job","x-nf-cli-command":["patch","job","manual"],"x-nf-deprecation-replacement":"/jobs/patch-job","x-nf-deprecation-message":"Requests should instead use the relevant type-agnostic job endpoint."},"v1-projects--projectId--jobs--jobId--get":{"operationId":"getProjectsJobsJobid","summary":"Get job","description":"Gets information about the given job","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"jobId","type":"string","required":true,"description":"ID of the job","example":"example-job","in":"path","schema":{"name":"jobId","type":"string","required":true,"description":"ID of the job","example":"example-job","in":"path"}}],"responses":{"200":{"description":"Details about the job.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","description":"Identifier for the job","example":"example-job"},"appId":{"type":"string","description":"Full identifier used for job deployment","example":"/example-user/default-project/example-job"},"name":{"type":"string","description":"Job name","example":"Example Job"},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"description":{"type":"string","description":"A short description of the job","example":"This is the job description"},"projectId":{"type":"string","description":"ID of the project that the job belongs to","example":"default-project"},"jobType":{"type":"string","enum":["manual","cron"],"description":"Type of the job (manual or cron)","example":"cron"},"createdAt":{"type":"string","format":"date-time","description":"The time the job was created.","example":"2021-01-20T11:19:53.175Z"},"vcsData":{"type":"object","properties":{"projectUrl":{"type":"string","description":"URL of the repository being built","example":"https://github.com/northflank/gatsby-with-northflank"},"projectType":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"VCS provider for the repo being built","example":"github"},"selfHostedVcsId":{"type":"string","description":"ID of the self-hosted VCS, if applicable.","example":"example-team/self-hosted-vcs"},"projectBranch":{"type":"string","description":"Branch of the repo being built","example":"master"},"publicRepo":{"type":"boolean","description":"Whether the repo is being accessed without authentication.","example":false},"dockerWorkDir":{"type":"string","description":"Working directory used by the dockerfile","example":"/"},"dockerFilePath":{"type":"string","description":"File path of the Dockerfile","example":"/Dockerfile"}},"required":["projectUrl","projectType","dockerWorkDir","dockerFilePath"],"additionalProperties":false},"buildConfiguration":{"type":"object","properties":{"pathIgnoreRules":{"type":"array","items":{"type":"string","maxLength":260,"description":"A path ignore rule, following `.gitignore` syntax. For example, `*.md` will ignore all files ending with `.md`.","example":"README.md"},"maxItems":200,"description":"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."},"isAllowList":{"type":"boolean","description":"If `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`.","example":false},"ciIgnoreFlagsEnabled":{"type":"boolean","description":"If `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":{"type":"array","items":{"type":"string","maxLength":72,"description":"A commit ignore flag.","example":"[skip ci]"},"maxItems":200,"description":"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]\"]`","example":["[skip ci]","[ci skip]","[no ci]","[skip nf]","[nf skip]","[northflank skip]","[skip northflank]"]},"dockerfileTarget":{"type":"string","description":"If your Dockerfile contains multiple build stages, you can specify the target stage by entering its name here."},"dockerCredentials":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The ID of the docker credentials to use.","example":"example-docker-credential"}},"includeGitFolder":{"type":"boolean","description":"Include .git folder inside the build context"},"fullGitClone":{"type":"boolean","description":"Include the entire git history as part of the .git folder. Only relevant if \"includeGitFolder\" is set."},"enableGitLfs":{"type":"boolean","description":"Enable Git LFS support for the build"},"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false}},"additionalProperties":false,"default":{"pathIgnoreRules":[],"isAllowList":false,"ciIgnoreFlagsEnabled":false}},"buildEngineConfiguration":{"type":"object","properties":{"buildEngine":{"type":"string","enum":["buildpack","buildkit","kaniko"],"description":"The build engine used.","example":"buildpack"},"buildpack":{"type":"object","properties":{"builder":{"type":"string","enum":["HEROKU_24","HEROKU_22","HEROKU_22_CLASSIC","HEROKU_20","HEROKU_18","GOOGLE_22","GOOGLE_V1","CNB_ALPINE","CNB_BIONIC","PAKETO_JAMMY_TINY","PAKETO_JAMMY_BASE","PAKETO_JAMMY_FULL","PAKETO_TINY","PAKETO_BASE","PAKETO_FULL"],"description":"The Buildpack stack used.","example":"HEROKU_24"},"buildpackLocators":{"type":"array","items":{"type":"string","description":"Url or registry identifier of custom Buildpack.","example":"https://buildpack-registry.heroku.com/cnb/mars/create-react-app"},"description":"Array of custom Buildpacks used.","default":[]},"useCache":{"type":"boolean","description":"Should build dependencies be cached?"}},"additionalProperties":false,"description":"Details about Buildpack settings."},"buildkit":{"type":"object","properties":{"useCache":{"type":"boolean","description":"Should intermediate image layers be cached?"},"useInternalCache":{"type":"boolean","description":"Should use persistent storage to store all layers?"},"internalCacheStorage":{"type":"boolean","description":"Storage size to use for internal cache"}},"additionalProperties":false,"description":"Details about Buildkit settings."},"kaniko":{"type":"object","properties":{"useCache":{"type":"boolean","description":"Should intermediate image layers be cached?"}},"additionalProperties":false,"description":"Details about Kaniko settings."}},"additionalProperties":false},"disabledCI":{"type":"boolean","description":"Whether Continuous Integration is disabled","example":false},"disabledCD":{"type":"boolean","description":"Whether Continuous Deployment is disabled","example":false},"deployment":{"type":"object","properties":{"region":{"type":"string","description":"Region where this job is deployed and built","example":"europe-west"},"buildpack":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customProcess","customCommand","customEntrypointCustomCommand","originalEntrypointCustomCommand"],"description":"Type of buildpack run configuration.","example":"default"},"customProcess":{"type":"string","description":"Custom process which should be run."},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be run."},"customCommand":{"type":"string","description":"Custom command which should be run."}},"required":["configType"],"additionalProperties":false,"description":"Details about the Buildpack overrides for this deployment."},"docker":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customEntrypoint","customCommand","customEntrypointCustomCommand"],"description":"Override configuration which is used at runtime.","example":"default"},"customEntrypoint":{"type":"string","description":"The CMD to run instead of the default if entrypoint override is enabled."},"customCommand":{"type":"string","description":"The CMD to run instead of the default if CMD override is enabled.","examples":["nginx -g","/docker-entrypoint.sh"]}},"required":["configType"],"additionalProperties":false,"description":"Details about the Docker overrides for this deployment."},"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"number","format":"float","description":"Ephemeral storage per container in MB","example":1024}},"required":["storageSize"],"additionalProperties":false,"description":"Details about ephemeral storage settings for this deployment."},"shmSize":{"type":"integer","minimum":64,"description":"Configures the amount of available memory-backed disk space available to /dev/shm"}},"additionalProperties":false,"description":"Details about storage settings for this deployment."}},"additionalProperties":false},"billing":{"type":"object","properties":{"deploymentPlan":{"type":"string","description":"ID of the billing plan used by this job","example":"nf-compute-20"}},"required":["deploymentPlan"],"additionalProperties":false},"suspended":{"type":"boolean","description":"Cron specific. Whether or not the job's automatic scheduling is suspended","example":false},"settings":{"type":"object","properties":{"cron":{"type":"object","properties":{"schedule":{"type":"string","description":"The cron timer scheduling when to run the job.","example":"30 8 * * *"},"concurrencyPolicy":{"type":"string","enum":["Allow","Forbid","Replace"],"description":"Whether this job should run when another instance of the job is already running.","example":"Allow"}},"additionalProperties":false,"description":"Cron job specific settings"},"backoffLimit":{"type":"integer","minimum":0,"description":"The number of attempts to rerun a job before it is marked as failed.","example":0},"activeDeadlineSeconds":{"type":"integer","minimum":1,"description":"The maximum amount of time, in seconds, for a job to run before it is marked as failed.","example":600}},"required":["backoffLimit","activeDeadlineSeconds"],"additionalProperties":false,"description":"Job settings"},"cluster":{"type":"object","properties":{"id":{"type":"string","description":"The id of the cluster associated with this project.","example":"nf-europe-west"},"name":{"type":"string","description":"The name of the cluster associated with this project.","example":"nf-europe-west"},"namespace":{"type":"string","description":"Namespace this resource is located within on the cluster.","example":"ns-8zy2mcjh9zn2"},"loadBalancers":{"type":"array","items":{"type":"string","example":"lb.659200800000000000000000.northflank.com"},"description":"Load balancer DNS for the cluster."}},"required":["id","name"],"additionalProperties":false,"description":"Cluster information"}},"required":["id","appId","name","tags","projectId","jobType","createdAt","disabledCI","disabledCD","billing","settings","cluster"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Jobs","project"],"security":[],"x-nf-permission-required":"Project > Jobs > General > Read","x-nf-team-scoped":true,"x-nf-cli-command":["get","job"]},"v1-projects--projectId--jobs--jobId--get-team-scoped":{"operationId":"getProjectsJobsJobid","summary":"Get job","description":"Gets information about the given job","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"jobId","type":"string","required":true,"description":"ID of the job","example":"example-job","in":"path","schema":{"name":"jobId","type":"string","required":true,"description":"ID of the job","example":"example-job","in":"path"}}],"responses":{"200":{"description":"Details about the job.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","description":"Identifier for the job","example":"example-job"},"appId":{"type":"string","description":"Full identifier used for job deployment","example":"/example-user/default-project/example-job"},"name":{"type":"string","description":"Job name","example":"Example Job"},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"description":{"type":"string","description":"A short description of the job","example":"This is the job description"},"projectId":{"type":"string","description":"ID of the project that the job belongs to","example":"default-project"},"jobType":{"type":"string","enum":["manual","cron"],"description":"Type of the job (manual or cron)","example":"cron"},"createdAt":{"type":"string","format":"date-time","description":"The time the job was created.","example":"2021-01-20T11:19:53.175Z"},"vcsData":{"type":"object","properties":{"projectUrl":{"type":"string","description":"URL of the repository being built","example":"https://github.com/northflank/gatsby-with-northflank"},"projectType":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"VCS provider for the repo being built","example":"github"},"selfHostedVcsId":{"type":"string","description":"ID of the self-hosted VCS, if applicable.","example":"example-team/self-hosted-vcs"},"projectBranch":{"type":"string","description":"Branch of the repo being built","example":"master"},"publicRepo":{"type":"boolean","description":"Whether the repo is being accessed without authentication.","example":false},"dockerWorkDir":{"type":"string","description":"Working directory used by the dockerfile","example":"/"},"dockerFilePath":{"type":"string","description":"File path of the Dockerfile","example":"/Dockerfile"}},"required":["projectUrl","projectType","dockerWorkDir","dockerFilePath"],"additionalProperties":false},"buildConfiguration":{"type":"object","properties":{"pathIgnoreRules":{"type":"array","items":{"type":"string","maxLength":260,"description":"A path ignore rule, following `.gitignore` syntax. For example, `*.md` will ignore all files ending with `.md`.","example":"README.md"},"maxItems":200,"description":"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."},"isAllowList":{"type":"boolean","description":"If `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`.","example":false},"ciIgnoreFlagsEnabled":{"type":"boolean","description":"If `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":{"type":"array","items":{"type":"string","maxLength":72,"description":"A commit ignore flag.","example":"[skip ci]"},"maxItems":200,"description":"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]\"]`","example":["[skip ci]","[ci skip]","[no ci]","[skip nf]","[nf skip]","[northflank skip]","[skip northflank]"]},"dockerfileTarget":{"type":"string","description":"If your Dockerfile contains multiple build stages, you can specify the target stage by entering its name here."},"dockerCredentials":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The ID of the docker credentials to use.","example":"example-docker-credential"}},"includeGitFolder":{"type":"boolean","description":"Include .git folder inside the build context"},"fullGitClone":{"type":"boolean","description":"Include the entire git history as part of the .git folder. Only relevant if \"includeGitFolder\" is set."},"enableGitLfs":{"type":"boolean","description":"Enable Git LFS support for the build"},"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false}},"additionalProperties":false,"default":{"pathIgnoreRules":[],"isAllowList":false,"ciIgnoreFlagsEnabled":false}},"buildEngineConfiguration":{"type":"object","properties":{"buildEngine":{"type":"string","enum":["buildpack","buildkit","kaniko"],"description":"The build engine used.","example":"buildpack"},"buildpack":{"type":"object","properties":{"builder":{"type":"string","enum":["HEROKU_24","HEROKU_22","HEROKU_22_CLASSIC","HEROKU_20","HEROKU_18","GOOGLE_22","GOOGLE_V1","CNB_ALPINE","CNB_BIONIC","PAKETO_JAMMY_TINY","PAKETO_JAMMY_BASE","PAKETO_JAMMY_FULL","PAKETO_TINY","PAKETO_BASE","PAKETO_FULL"],"description":"The Buildpack stack used.","example":"HEROKU_24"},"buildpackLocators":{"type":"array","items":{"type":"string","description":"Url or registry identifier of custom Buildpack.","example":"https://buildpack-registry.heroku.com/cnb/mars/create-react-app"},"description":"Array of custom Buildpacks used.","default":[]},"useCache":{"type":"boolean","description":"Should build dependencies be cached?"}},"additionalProperties":false,"description":"Details about Buildpack settings."},"buildkit":{"type":"object","properties":{"useCache":{"type":"boolean","description":"Should intermediate image layers be cached?"},"useInternalCache":{"type":"boolean","description":"Should use persistent storage to store all layers?"},"internalCacheStorage":{"type":"boolean","description":"Storage size to use for internal cache"}},"additionalProperties":false,"description":"Details about Buildkit settings."},"kaniko":{"type":"object","properties":{"useCache":{"type":"boolean","description":"Should intermediate image layers be cached?"}},"additionalProperties":false,"description":"Details about Kaniko settings."}},"additionalProperties":false},"disabledCI":{"type":"boolean","description":"Whether Continuous Integration is disabled","example":false},"disabledCD":{"type":"boolean","description":"Whether Continuous Deployment is disabled","example":false},"deployment":{"type":"object","properties":{"region":{"type":"string","description":"Region where this job is deployed and built","example":"europe-west"},"buildpack":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customProcess","customCommand","customEntrypointCustomCommand","originalEntrypointCustomCommand"],"description":"Type of buildpack run configuration.","example":"default"},"customProcess":{"type":"string","description":"Custom process which should be run."},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be run."},"customCommand":{"type":"string","description":"Custom command which should be run."}},"required":["configType"],"additionalProperties":false,"description":"Details about the Buildpack overrides for this deployment."},"docker":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customEntrypoint","customCommand","customEntrypointCustomCommand"],"description":"Override configuration which is used at runtime.","example":"default"},"customEntrypoint":{"type":"string","description":"The CMD to run instead of the default if entrypoint override is enabled."},"customCommand":{"type":"string","description":"The CMD to run instead of the default if CMD override is enabled.","examples":["nginx -g","/docker-entrypoint.sh"]}},"required":["configType"],"additionalProperties":false,"description":"Details about the Docker overrides for this deployment."},"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"number","format":"float","description":"Ephemeral storage per container in MB","example":1024}},"required":["storageSize"],"additionalProperties":false,"description":"Details about ephemeral storage settings for this deployment."},"shmSize":{"type":"integer","minimum":64,"description":"Configures the amount of available memory-backed disk space available to /dev/shm"}},"additionalProperties":false,"description":"Details about storage settings for this deployment."}},"additionalProperties":false},"billing":{"type":"object","properties":{"deploymentPlan":{"type":"string","description":"ID of the billing plan used by this job","example":"nf-compute-20"}},"required":["deploymentPlan"],"additionalProperties":false},"suspended":{"type":"boolean","description":"Cron specific. Whether or not the job's automatic scheduling is suspended","example":false},"settings":{"type":"object","properties":{"cron":{"type":"object","properties":{"schedule":{"type":"string","description":"The cron timer scheduling when to run the job.","example":"30 8 * * *"},"concurrencyPolicy":{"type":"string","enum":["Allow","Forbid","Replace"],"description":"Whether this job should run when another instance of the job is already running.","example":"Allow"}},"additionalProperties":false,"description":"Cron job specific settings"},"backoffLimit":{"type":"integer","minimum":0,"description":"The number of attempts to rerun a job before it is marked as failed.","example":0},"activeDeadlineSeconds":{"type":"integer","minimum":1,"description":"The maximum amount of time, in seconds, for a job to run before it is marked as failed.","example":600}},"required":["backoffLimit","activeDeadlineSeconds"],"additionalProperties":false,"description":"Job settings"},"cluster":{"type":"object","properties":{"id":{"type":"string","description":"The id of the cluster associated with this project.","example":"nf-europe-west"},"name":{"type":"string","description":"The name of the cluster associated with this project.","example":"nf-europe-west"},"namespace":{"type":"string","description":"Namespace this resource is located within on the cluster.","example":"ns-8zy2mcjh9zn2"},"loadBalancers":{"type":"array","items":{"type":"string","example":"lb.659200800000000000000000.northflank.com"},"description":"Load balancer DNS for the cluster."}},"required":["id","name"],"additionalProperties":false,"description":"Cluster information"}},"required":["id","appId","name","tags","projectId","jobType","createdAt","disabledCI","disabledCD","billing","settings","cluster"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Jobs","project"],"security":[],"x-nf-permission-required":"Project > Jobs > General > Read","x-nf-team-scoped":true,"x-nf-cli-command":["get","job"]},"v1-projects--projectId--jobs--jobId--patch":{"operationId":"patchProjectsJobsJobid","summary":"Patch job","description":"Updates a job (manual or cron based on current type and settings.cron)","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"jobId","type":"string","required":true,"description":"ID of the job","example":"example-job","in":"path","schema":{"name":"jobId","type":"string","required":true,"description":"ID of the job","example":"example-job","in":"path"}}],"responses":{"200":{"description":"Details about the updated job.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":52,"description":"The name of the job.","example":"Example Job"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"A description of the job.","example":"A job description"},"stageId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"infrastructure":{"type":"object","properties":{"architecture":{"type":"string","enum":["x86","arm"]}},"additionalProperties":false},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"billing":{"type":"object","properties":{"buildPlan":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The ID of the build plan to use.","example":"nf-compute-200-8"},"deploymentPlan":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The ID of the deployment plan to use.","example":"nf-compute-20"},"gpu":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"gpuType":{"type":"string"},"gpuCount":{"type":"integer"},"timesliced":{"type":"boolean"}},"required":["gpuType"],"additionalProperties":false}},"additionalProperties":false}},"required":["deploymentPlan"],"additionalProperties":false},"disabledCI":{"type":"boolean","description":"Whether CI should be disabled. Only relevant for jobs deploying directly from version control.","default":false},"buildConfiguration":{"type":"object","properties":{"pathIgnoreRules":{"type":"array","items":{"type":"string","maxLength":260,"description":"A path ignore rule, following `.gitignore` syntax. For example, `*.md` will ignore all files ending with `.md`.","example":"README.md"},"maxItems":200,"description":"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."},"isAllowList":{"type":"boolean","description":"If `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`.","example":false},"ciIgnoreFlagsEnabled":{"type":"boolean","description":"If `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":{"type":"array","items":{"type":"string","maxLength":72,"description":"A commit ignore flag.","example":"[skip ci]"},"maxItems":200,"description":"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]\"]`","example":["[skip ci]","[ci skip]","[no ci]","[skip nf]","[nf skip]","[northflank skip]","[skip northflank]"]},"dockerfileTarget":{"type":"string","description":"If your Dockerfile contains multiple build stages, you can specify the target stage by entering its name here."},"dockerCredentials":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The ID of the docker credentials to use.","example":"example-docker-credential"}},"includeGitFolder":{"type":"boolean","description":"Include .git folder inside the build context"},"fullGitClone":{"type":"boolean","description":"Include the entire git history as part of the .git folder. Only relevant if \"includeGitFolder\" is set."},"enableGitLfs":{"type":"boolean","description":"Enable Git LFS support for the build"},"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false}},"additionalProperties":false,"default":{"pathIgnoreRules":[],"isAllowList":false,"ciIgnoreFlagsEnabled":false}},"buildSettings":{"oneOf":[{"type":"object","properties":{"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false},"dockerfile":{"type":"object","properties":{"useCache":{"type":"boolean","description":"DEPRECATED: This field will be removed in the near future and currently has no effect."},"buildEngine":{"type":"string","enum":["buildkit","kaniko"],"description":"Build engine to use. Defaults to recommended build engine `buildkit`","example":"buildkit","default":"buildkit"},"dockerFilePath":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]+$","description":"The file path of the Dockerfile.","example":"/Dockerfile"},"dockerWorkDir":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*$","description":"The working directory of the Dockerfile.","example":"/"},"buildkit":{"type":"object","properties":{"useCache":{"type":"boolean","description":"Use persistent storage to cache build layers.","example":true,"default":false},"cacheStorageSize":{"type":"integer","description":"The amount of persistent storage available to each build in MB.","example":32768},"useInternalCache":{"type":"boolean","description":"DEPRECATED: This field will be removed in the near future.","default":false},"internalCacheStorage":{"type":"number","format":"float","description":"DEPRECATED: This field will be removed in the near future."}},"additionalProperties":false}},"required":["dockerFilePath","dockerWorkDir"],"additionalProperties":false}},"required":["dockerfile"],"additionalProperties":false,"description":"Build from a Dockerfile"},{"type":"object","properties":{"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false},"buildpack":{"type":"object","properties":{"builder":{"type":"string","enum":["HEROKU_24","HEROKU_22","HEROKU_22_CLASSIC","HEROKU_20","HEROKU_18","GOOGLE_22","GOOGLE_V1","CNB_ALPINE","CNB_BIONIC","PAKETO_JAMMY_TINY","PAKETO_JAMMY_BASE","PAKETO_JAMMY_FULL","PAKETO_TINY","PAKETO_BASE","PAKETO_FULL"],"description":"Buildpack stack to use. Defaults to recommended stack `HEROKU_24`.","example":"HEROKU_24","default":"HEROKU_24"},"buildpackLocators":{"type":"array","items":{"type":"string","description":"Url or registry identifier of custom Buildpack.","example":"https://buildpack-registry.heroku.com/cnb/mars/create-react-app"},"description":"Array of custom Buildpacks to use.","default":[]},"buildContext":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*$","description":"The working directory to build in.","example":"/","default":"/"},"useCache":{"type":"boolean","description":"Should build dependencies be cached?","example":false,"default":false}},"additionalProperties":false}},"required":["buildpack"],"additionalProperties":false,"description":"Build from a Buildpack"}],"description":"Build engine"},"runtimeEnvironment":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"An object containing the runtime environment to set for the job. Keys may only contain letters, numbers, hyphens, forward slashes and dots.","example":{"variable1":"abcdef","variable2":"12345"},"default":{}},"runtimeFiles":{"type":"object","properties":{},"description":"Secret files as JSON object, encrypted at rest. File path must be absolute","example":{"/dir/fileName":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"buildArguments":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"An object containing the build arguments to set for the job. Keys may only contain letters, numbers, hyphens, forward slashes and dots.","example":{"variable1":"abcdef","variable2":"12345"},"default":{}},"buildFiles":{"type":"object","properties":{},"description":"Secret files as JSON object, encrypted at rest. File path must be absolute","example":{"/dir/fileName":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"dockerSecretMounts":{"type":"object","properties":{},"description":"Docker secret mount contents as JSON object, encrypted at rest. Must be a valid Docker secret mount identifier","example":{"example-secret-mount_1":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"healthChecks":{"type":"array","items":{"type":"object","properties":{"protocol":{"type":"string","enum":["HTTP","CMD","TCP"],"description":"The protocol to access the health check with.","example":"HTTP"},"type":{"type":"string","enum":["livenessProbe","readinessProbe","startupProbe"],"description":"The type of health check.","example":"readinessProbe"},"path":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*((\\?([a-zA-Z0-9-._]+(=[a-zA-Z0-9-._]+)?)*)(&([a-zA-Z0-9-._]+(=[a-zA-Z0-9-._]+)?)*)*)?$","description":"The path of the health check endpoint. Required when protocol is HTTP.","example":"/health-check"},"cmd":{"type":"string","description":"The command to run for the health check. Required when protocol is CMD"},"port":{"type":"integer","minimum":1,"description":"Port number for the health check endpoint. Required when protocol is HTTP.","example":8080},"initialDelaySeconds":{"type":"integer","minimum":1,"maximum":180,"description":"Initial delay, in seconds, before the health check is first run.","example":10},"periodSeconds":{"type":"integer","minimum":10,"maximum":600,"description":"The time between each check, in seconds.","example":60},"timeoutSeconds":{"type":"integer","minimum":1,"maximum":60,"description":"The time to wait for a response before marking the health check as a failure.","example":1},"failureThreshold":{"type":"integer","minimum":1,"maximum":255,"description":"The maximum number of allowed failures.","example":3},"successThreshold":{"type":"integer","minimum":1,"maximum":255,"description":"The number of successes required to mark the health check as a success.","example":1}},"required":["protocol","type","initialDelaySeconds","periodSeconds","timeoutSeconds","failureThreshold"],"additionalProperties":false,"description":"A health check object."},"description":"An array of health checks."},"settings":{"type":"object","properties":{"backoffLimit":{"type":"integer","minimum":0,"description":"The number of attempts to rerun a job before it is marked as failed.","example":0},"runOnSourceChange":{"type":"string","enum":["never","cd-promote","always"],"description":"Configure when the job should be run if the source image changes.","example":"never","default":"never"},"activeDeadlineSeconds":{"type":"integer","minimum":1,"nullable":true,"description":"The maximum amount of time, in seconds, for a job to run before it is marked as failed.","example":600},"cron":{"type":"object","properties":{"schedule":{"type":"string","nullable":true,"description":"The cron timer scheduling when to run the job.","example":"30 8 * * *"},"suspended":{"type":"boolean","description":"Whether the cron's automatic scheduling is suspended","example":false,"default":false},"concurrencyPolicy":{"type":"string","enum":["allow","forbid","replace"],"description":"Whether this job should run when another instance of the job is already running. `allow` will enable multiple instances of this job to run. `forbid` will keep the current instance of the job running and stop a new instance from being run. `replace` will terminate any currently running instance of the job and start a new one.","example":"forbid","default":"forbid"}},"additionalProperties":false}},"required":["backoffLimit"],"additionalProperties":false},"jobType":{"type":"string","enum":["cron"],"description":"Type of the job (manual or cron)","example":"cron"},"id":{"type":"string","description":"Identifier for the job","example":"example-job"},"appId":{"type":"string","description":"Full identifier used for job deployment","example":"/example-user/default-project/example-job"},"deployment":{"type":"object","properties":{"buildpack":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customProcess","customCommand","customEntrypointCustomCommand","originalEntrypointCustomCommand"],"description":"Type of buildpack run configuration"},"customProcess":{"type":"string","description":"Custom process which should be run. Required in case where `configType` is `customProcess`"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be run. Required in case where `configType` is `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be run. Required in case where `configType` is `customCommand`, `customEntrypointCustomCommand` or `originalEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of buildpack runtime"},"docker":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customEntrypoint","customCommand","customEntrypointCustomCommand"],"description":"Type of entrypoint & command override configuration","example":"default"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be used. Required in case where `configType` is `customEntrypoint` or `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be used. Required in case where `configType` is `customCommand` or `customEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of docker runtime"},"storage":{"type":"object","properties":{"useHdbStorage":{"type":"boolean"},"usePdSsdStorage":{"type":"boolean"},"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":1024,"description":"Ephemeral storage per container in MB","example":1024}},"additionalProperties":false},"shmSize":{"type":"integer","minimum":64,"description":"Configures the amount of available memory-backed disk space available to /dev/shm"}},"additionalProperties":false},"gpu":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"gpuType":{"type":"string"},"gpuCount":{"type":"integer"},"timesliced":{"type":"boolean"}},"required":["gpuType"],"additionalProperties":false}},"additionalProperties":false},"gracePeriodSeconds":{"type":"integer","minimum":15,"maximum":600,"description":"The 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."},"metadata":{"type":"object","properties":{"labels":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom labels for the workload."},"annotations":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom annotations for the workload as string or object."}},"additionalProperties":false,"description":"Allow setting custom labels and annotations for workloads."},"vcs":{"type":"object","properties":{"projectUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo to build.","example":"https://github.com/northflank/gatsby-with-northflank"},"projectType":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string","minLength":24,"maxLength":24,"description":"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 `vcsLinkId` is provided, Northflank will instead use your linked account with that ID."},"projectBranch":{"type":"string","description":"The name of the branch to use.","example":"master"}},"required":["projectUrl","projectType","projectBranch"],"additionalProperties":false},"external":{"type":"object","properties":{"imagePath":{"type":"string","pattern":"^(?:(?:https?:\\/\\/)?([a-zA-Z0-9\\-]+\\.[a-zA-Z0-9\\.\\-]+)(\\/v1)?)?(?:\\/)?([a-zA-Z/-9\\.\\-_]+)(?:\\:([a-zA-Z/-9\\.\\-_\\:]+)|\\@([a-zA-Z/-9\\.\\-_\\:]+))$","description":"Image to be deployed. When not deploying from Dockerhub the URL must be specified.","example":"nginx:latest"},"credentials":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"ID of the saved credentials to use to access this external image.","example":"example-credentials"}},"required":["imagePath"],"additionalProperties":false},"internal":{"type":"object","properties":{"id":{"anyOf":[{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":54,"example":"example-build-service"},{"type":"string","example":"example-project/example-build-service"}],"description":"ID of the build service to deploy"},"branch":{"type":"string","description":"Branch to deploy","example":"master"},"buildSHA":{"oneOf":[{"type":"string","minLength":40,"maxLength":40,"description":"A commit sha."},{"type":"string","enum":["latest"],"description":"Latest commit."}],"description":"Commit SHA to deploy, or 'latest' to deploy the most recent commit","example":"latest"},"buildId":{"type":"string","description":"ID of the build that should be deployed","example":"premium-guide-6393"}},"additionalProperties":false},"imageUrl":{"type":"string","description":"Image registry url of the deployed image."}},"additionalProperties":false,"default":{}},"status":{"type":"object","properties":{"build":{"type":"object","properties":{"status":{"type":"string","enum":["QUEUED","PENDING","UNSCHEDULABLE","STARTING","CLONING","BUILDING","UPLOADING","ABORTED","FAILURE","SUBMISSION_FAILURE","SUCCESS","CRASHED","IN_PROGRESS"],"description":"The current status of the build.","example":"SUCCESS"},"lastTransitionTime":{"type":"string","format":"date-time","description":"The timestamp of when the build reached this status.","example":"2021-11-29T11:47:16.624Z"}},"required":["status"],"additionalProperties":false,"description":"Details about the status of the most recent build."}},"additionalProperties":false,"description":"Details about the current job status."},"cluster":{"type":"object","properties":{"id":{"type":"string","description":"The id of the cluster associated with this project.","example":"nf-europe-west"},"name":{"type":"string","description":"The name of the cluster associated with this project.","example":"nf-europe-west"},"namespace":{"type":"string","description":"Namespace this resource is located within on the cluster.","example":"ns-8zy2mcjh9zn2"},"loadBalancers":{"type":"array","items":{"type":"string","example":"lb.659200800000000000000000.northflank.com"},"description":"Load balancer DNS for the cluster."}},"required":["id","name"],"additionalProperties":false,"description":"Cluster information"},"createdAt":{"type":"string","format":"date-time","description":"time of creation"},"updatedAt":{"type":"string","format":"date-time","description":"time of update"}},"required":["name","billing","jobType","id","appId","status","cluster"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Jobs","project"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"A description of the job.","example":"A job description"},"stageId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"nullable":true},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"billing":{"type":"object","properties":{"buildPlan":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The ID of the build plan to use.","example":"nf-compute-200-8"},"deploymentPlan":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The ID of the deployment plan to use.","example":"nf-compute-20"},"gpu":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"gpuType":{"type":"string"},"gpuCount":{"type":"integer"},"timesliced":{"type":"boolean"}},"additionalProperties":false}},"additionalProperties":false}},"additionalProperties":false},"disabledCI":{"type":"boolean","description":"Whether CI should be disabled. Only relevant for jobs deploying directly from version control."},"buildConfiguration":{"type":"object","properties":{"pathIgnoreRules":{"type":"array","items":{"type":"string","maxLength":260,"description":"A path ignore rule, following `.gitignore` syntax. For example, `*.md` will ignore all files ending with `.md`.","example":"README.md"},"maxItems":200,"description":"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."},"isAllowList":{"type":"boolean","description":"If `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`.","example":false},"ciIgnoreFlagsEnabled":{"type":"boolean","description":"If `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":{"type":"array","items":{"type":"string","maxLength":72,"description":"A commit ignore flag.","example":"[skip ci]"},"maxItems":200,"description":"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]\"]`","example":["[skip ci]","[ci skip]","[no ci]","[skip nf]","[nf skip]","[northflank skip]","[skip northflank]"]},"dockerfileTarget":{"type":"string","description":"If your Dockerfile contains multiple build stages, you can specify the target stage by entering its name here."},"dockerCredentials":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The ID of the docker credentials to use.","example":"example-docker-credential"}},"includeGitFolder":{"type":"boolean","description":"Include .git folder inside the build context"},"fullGitClone":{"type":"boolean","description":"Include the entire git history as part of the .git folder. Only relevant if \"includeGitFolder\" is set."},"enableGitLfs":{"type":"boolean","description":"Enable Git LFS support for the build"},"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false}},"additionalProperties":false},"buildSettings":{"type":"object","properties":{"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false},"dockerfile":{"type":"object","properties":{"useCache":{"type":"boolean","description":"DEPRECATED: This field will be removed in the near future and currently has no effect."},"buildEngine":{"type":"string","enum":["buildkit","kaniko"],"description":"Build engine to use. Defaults to recommended build engine `buildkit`","example":"buildkit"},"dockerFilePath":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]+$","description":"The file path of the Dockerfile.","example":"/Dockerfile"},"dockerWorkDir":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*$","description":"The working directory of the Dockerfile.","example":"/"},"buildkit":{"type":"object","properties":{"useCache":{"type":"boolean","description":"Use persistent storage to cache build layers.","example":true},"cacheStorageSize":{"type":"integer","description":"The amount of persistent storage available to each build in MB.","example":32768},"useInternalCache":{"type":"boolean","description":"DEPRECATED: This field will be removed in the near future."},"internalCacheStorage":{"type":"number","format":"float","description":"DEPRECATED: This field will be removed in the near future."}},"additionalProperties":false}},"additionalProperties":false},"buildpack":{"type":"object","properties":{"builder":{"type":"string","enum":["HEROKU_24","HEROKU_22","HEROKU_22_CLASSIC","HEROKU_20","HEROKU_18","GOOGLE_22","GOOGLE_V1","CNB_ALPINE","CNB_BIONIC","PAKETO_JAMMY_TINY","PAKETO_JAMMY_BASE","PAKETO_JAMMY_FULL","PAKETO_TINY","PAKETO_BASE","PAKETO_FULL"],"description":"Buildpack stack to use. Defaults to recommended stack `HEROKU_24`.","example":"HEROKU_24"},"buildpackLocators":{"type":"array","items":{"type":"string","description":"Url or registry identifier of custom Buildpack.","example":"https://buildpack-registry.heroku.com/cnb/mars/create-react-app"},"description":"Array of custom Buildpacks to use."},"buildContext":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*$","description":"The working directory to build in.","example":"/"},"useCache":{"type":"boolean","description":"Should build dependencies be cached?","example":false}},"additionalProperties":false}},"additionalProperties":false},"runtimeEnvironment":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"An object containing the runtime environment to set for the job. Keys may only contain letters, numbers, hyphens, forward slashes and dots.","example":{"variable1":"abcdef","variable2":"12345"}},"runtimeFiles":{"type":"object","properties":{},"description":"Secret files as JSON object, encrypted at rest. File path must be absolute","example":{"/dir/fileName":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"buildArguments":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"An object containing the build arguments to set for the job. Keys may only contain letters, numbers, hyphens, forward slashes and dots.","example":{"variable1":"abcdef","variable2":"12345"}},"buildFiles":{"type":"object","properties":{},"description":"Secret files as JSON object, encrypted at rest. File path must be absolute","example":{"/dir/fileName":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"dockerSecretMounts":{"type":"object","properties":{},"description":"Docker secret mount contents as JSON object, encrypted at rest. Must be a valid Docker secret mount identifier","example":{"example-secret-mount_1":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"healthChecks":{"type":"array","items":{"type":"object","properties":{"protocol":{"type":"string","enum":["HTTP","CMD","TCP"],"description":"The protocol to access the health check with.","example":"HTTP"},"type":{"type":"string","enum":["livenessProbe","readinessProbe","startupProbe"],"description":"The type of health check.","example":"readinessProbe"},"path":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*((\\?([a-zA-Z0-9-._]+(=[a-zA-Z0-9-._]+)?)*)(&([a-zA-Z0-9-._]+(=[a-zA-Z0-9-._]+)?)*)*)?$","description":"The path of the health check endpoint. Required when protocol is HTTP.","example":"/health-check"},"cmd":{"type":"string","description":"The command to run for the health check. Required when protocol is CMD"},"port":{"type":"integer","minimum":1,"description":"Port number for the health check endpoint. Required when protocol is HTTP.","example":8080},"initialDelaySeconds":{"type":"integer","minimum":1,"maximum":180,"description":"Initial delay, in seconds, before the health check is first run.","example":10},"periodSeconds":{"type":"integer","minimum":10,"maximum":600,"description":"The time between each check, in seconds.","example":60},"timeoutSeconds":{"type":"integer","minimum":1,"maximum":60,"description":"The time to wait for a response before marking the health check as a failure.","example":1},"failureThreshold":{"type":"integer","minimum":1,"maximum":255,"description":"The maximum number of allowed failures.","example":3},"successThreshold":{"type":"integer","minimum":1,"maximum":255,"description":"The number of successes required to mark the health check as a success.","example":1}},"required":["protocol","type","initialDelaySeconds","periodSeconds","timeoutSeconds","failureThreshold"],"additionalProperties":false,"description":"A health check object."},"description":"An array of health checks."},"settings":{"type":"object","properties":{"backoffLimit":{"type":"integer","minimum":0,"description":"The number of attempts to rerun a job before it is marked as failed.","example":0},"runOnSourceChange":{"type":"string","enum":["never","cd-promote","always"],"description":"Configure when the job should be run if the source image changes.","example":"never"},"activeDeadlineSeconds":{"type":"integer","minimum":1,"nullable":true,"description":"The maximum amount of time, in seconds, for a job to run before it is marked as failed.","example":600},"cron":{"type":"object","properties":{"schedule":{"type":"string","pattern":"(@(annually|yearly|monthly|weekly|daily|hourly))|((((\\d+,)+\\d+|(\\d+(\\/|-)\\d+)|\\d+|\\*) ?){5})","nullable":true,"description":"The cron timer scheduling when to run the job.","example":"30 8 * * *"},"suspended":{"type":"boolean","description":"Whether the cron's automatic scheduling is suspended","example":false},"concurrencyPolicy":{"type":"string","enum":["allow","forbid","replace"],"description":"Whether this job should run when another instance of the job is already running. `allow` will enable multiple instances of this job to run. `forbid` will keep the current instance of the job running and stop a new instance from being run. `replace` will terminate any currently running instance of the job and start a new one.","example":"forbid"}},"additionalProperties":false}},"additionalProperties":false}},"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Project > Jobs > General > Update","x-nf-team-scoped":true,"x-nf-cli-command":["patch","job"]},"v1-projects--projectId--jobs--jobId--patch-team-scoped":{"operationId":"patchProjectsJobsJobid","summary":"Patch job","description":"Updates a job (manual or cron based on current type and settings.cron)","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"jobId","type":"string","required":true,"description":"ID of the job","example":"example-job","in":"path","schema":{"name":"jobId","type":"string","required":true,"description":"ID of the job","example":"example-job","in":"path"}}],"responses":{"200":{"description":"Details about the updated job.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":52,"description":"The name of the job.","example":"Example Job"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"A description of the job.","example":"A job description"},"stageId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"infrastructure":{"type":"object","properties":{"architecture":{"type":"string","enum":["x86","arm"]}},"additionalProperties":false},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"billing":{"type":"object","properties":{"buildPlan":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The ID of the build plan to use.","example":"nf-compute-200-8"},"deploymentPlan":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The ID of the deployment plan to use.","example":"nf-compute-20"},"gpu":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"gpuType":{"type":"string"},"gpuCount":{"type":"integer"},"timesliced":{"type":"boolean"}},"required":["gpuType"],"additionalProperties":false}},"additionalProperties":false}},"required":["deploymentPlan"],"additionalProperties":false},"disabledCI":{"type":"boolean","description":"Whether CI should be disabled. Only relevant for jobs deploying directly from version control.","default":false},"buildConfiguration":{"type":"object","properties":{"pathIgnoreRules":{"type":"array","items":{"type":"string","maxLength":260,"description":"A path ignore rule, following `.gitignore` syntax. For example, `*.md` will ignore all files ending with `.md`.","example":"README.md"},"maxItems":200,"description":"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."},"isAllowList":{"type":"boolean","description":"If `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`.","example":false},"ciIgnoreFlagsEnabled":{"type":"boolean","description":"If `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":{"type":"array","items":{"type":"string","maxLength":72,"description":"A commit ignore flag.","example":"[skip ci]"},"maxItems":200,"description":"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]\"]`","example":["[skip ci]","[ci skip]","[no ci]","[skip nf]","[nf skip]","[northflank skip]","[skip northflank]"]},"dockerfileTarget":{"type":"string","description":"If your Dockerfile contains multiple build stages, you can specify the target stage by entering its name here."},"dockerCredentials":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The ID of the docker credentials to use.","example":"example-docker-credential"}},"includeGitFolder":{"type":"boolean","description":"Include .git folder inside the build context"},"fullGitClone":{"type":"boolean","description":"Include the entire git history as part of the .git folder. Only relevant if \"includeGitFolder\" is set."},"enableGitLfs":{"type":"boolean","description":"Enable Git LFS support for the build"},"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false}},"additionalProperties":false,"default":{"pathIgnoreRules":[],"isAllowList":false,"ciIgnoreFlagsEnabled":false}},"buildSettings":{"oneOf":[{"type":"object","properties":{"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false},"dockerfile":{"type":"object","properties":{"useCache":{"type":"boolean","description":"DEPRECATED: This field will be removed in the near future and currently has no effect."},"buildEngine":{"type":"string","enum":["buildkit","kaniko"],"description":"Build engine to use. Defaults to recommended build engine `buildkit`","example":"buildkit","default":"buildkit"},"dockerFilePath":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]+$","description":"The file path of the Dockerfile.","example":"/Dockerfile"},"dockerWorkDir":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*$","description":"The working directory of the Dockerfile.","example":"/"},"buildkit":{"type":"object","properties":{"useCache":{"type":"boolean","description":"Use persistent storage to cache build layers.","example":true,"default":false},"cacheStorageSize":{"type":"integer","description":"The amount of persistent storage available to each build in MB.","example":32768},"useInternalCache":{"type":"boolean","description":"DEPRECATED: This field will be removed in the near future.","default":false},"internalCacheStorage":{"type":"number","format":"float","description":"DEPRECATED: This field will be removed in the near future."}},"additionalProperties":false}},"required":["dockerFilePath","dockerWorkDir"],"additionalProperties":false}},"required":["dockerfile"],"additionalProperties":false,"description":"Build from a Dockerfile"},{"type":"object","properties":{"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false},"buildpack":{"type":"object","properties":{"builder":{"type":"string","enum":["HEROKU_24","HEROKU_22","HEROKU_22_CLASSIC","HEROKU_20","HEROKU_18","GOOGLE_22","GOOGLE_V1","CNB_ALPINE","CNB_BIONIC","PAKETO_JAMMY_TINY","PAKETO_JAMMY_BASE","PAKETO_JAMMY_FULL","PAKETO_TINY","PAKETO_BASE","PAKETO_FULL"],"description":"Buildpack stack to use. Defaults to recommended stack `HEROKU_24`.","example":"HEROKU_24","default":"HEROKU_24"},"buildpackLocators":{"type":"array","items":{"type":"string","description":"Url or registry identifier of custom Buildpack.","example":"https://buildpack-registry.heroku.com/cnb/mars/create-react-app"},"description":"Array of custom Buildpacks to use.","default":[]},"buildContext":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*$","description":"The working directory to build in.","example":"/","default":"/"},"useCache":{"type":"boolean","description":"Should build dependencies be cached?","example":false,"default":false}},"additionalProperties":false}},"required":["buildpack"],"additionalProperties":false,"description":"Build from a Buildpack"}],"description":"Build engine"},"runtimeEnvironment":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"An object containing the runtime environment to set for the job. Keys may only contain letters, numbers, hyphens, forward slashes and dots.","example":{"variable1":"abcdef","variable2":"12345"},"default":{}},"runtimeFiles":{"type":"object","properties":{},"description":"Secret files as JSON object, encrypted at rest. File path must be absolute","example":{"/dir/fileName":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"buildArguments":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"An object containing the build arguments to set for the job. Keys may only contain letters, numbers, hyphens, forward slashes and dots.","example":{"variable1":"abcdef","variable2":"12345"},"default":{}},"buildFiles":{"type":"object","properties":{},"description":"Secret files as JSON object, encrypted at rest. File path must be absolute","example":{"/dir/fileName":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"dockerSecretMounts":{"type":"object","properties":{},"description":"Docker secret mount contents as JSON object, encrypted at rest. Must be a valid Docker secret mount identifier","example":{"example-secret-mount_1":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"healthChecks":{"type":"array","items":{"type":"object","properties":{"protocol":{"type":"string","enum":["HTTP","CMD","TCP"],"description":"The protocol to access the health check with.","example":"HTTP"},"type":{"type":"string","enum":["livenessProbe","readinessProbe","startupProbe"],"description":"The type of health check.","example":"readinessProbe"},"path":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*((\\?([a-zA-Z0-9-._]+(=[a-zA-Z0-9-._]+)?)*)(&([a-zA-Z0-9-._]+(=[a-zA-Z0-9-._]+)?)*)*)?$","description":"The path of the health check endpoint. Required when protocol is HTTP.","example":"/health-check"},"cmd":{"type":"string","description":"The command to run for the health check. Required when protocol is CMD"},"port":{"type":"integer","minimum":1,"description":"Port number for the health check endpoint. Required when protocol is HTTP.","example":8080},"initialDelaySeconds":{"type":"integer","minimum":1,"maximum":180,"description":"Initial delay, in seconds, before the health check is first run.","example":10},"periodSeconds":{"type":"integer","minimum":10,"maximum":600,"description":"The time between each check, in seconds.","example":60},"timeoutSeconds":{"type":"integer","minimum":1,"maximum":60,"description":"The time to wait for a response before marking the health check as a failure.","example":1},"failureThreshold":{"type":"integer","minimum":1,"maximum":255,"description":"The maximum number of allowed failures.","example":3},"successThreshold":{"type":"integer","minimum":1,"maximum":255,"description":"The number of successes required to mark the health check as a success.","example":1}},"required":["protocol","type","initialDelaySeconds","periodSeconds","timeoutSeconds","failureThreshold"],"additionalProperties":false,"description":"A health check object."},"description":"An array of health checks."},"settings":{"type":"object","properties":{"backoffLimit":{"type":"integer","minimum":0,"description":"The number of attempts to rerun a job before it is marked as failed.","example":0},"runOnSourceChange":{"type":"string","enum":["never","cd-promote","always"],"description":"Configure when the job should be run if the source image changes.","example":"never","default":"never"},"activeDeadlineSeconds":{"type":"integer","minimum":1,"nullable":true,"description":"The maximum amount of time, in seconds, for a job to run before it is marked as failed.","example":600},"cron":{"type":"object","properties":{"schedule":{"type":"string","nullable":true,"description":"The cron timer scheduling when to run the job.","example":"30 8 * * *"},"suspended":{"type":"boolean","description":"Whether the cron's automatic scheduling is suspended","example":false,"default":false},"concurrencyPolicy":{"type":"string","enum":["allow","forbid","replace"],"description":"Whether this job should run when another instance of the job is already running. `allow` will enable multiple instances of this job to run. `forbid` will keep the current instance of the job running and stop a new instance from being run. `replace` will terminate any currently running instance of the job and start a new one.","example":"forbid","default":"forbid"}},"additionalProperties":false}},"required":["backoffLimit"],"additionalProperties":false},"jobType":{"type":"string","enum":["cron"],"description":"Type of the job (manual or cron)","example":"cron"},"id":{"type":"string","description":"Identifier for the job","example":"example-job"},"appId":{"type":"string","description":"Full identifier used for job deployment","example":"/example-user/default-project/example-job"},"deployment":{"type":"object","properties":{"buildpack":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customProcess","customCommand","customEntrypointCustomCommand","originalEntrypointCustomCommand"],"description":"Type of buildpack run configuration"},"customProcess":{"type":"string","description":"Custom process which should be run. Required in case where `configType` is `customProcess`"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be run. Required in case where `configType` is `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be run. Required in case where `configType` is `customCommand`, `customEntrypointCustomCommand` or `originalEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of buildpack runtime"},"docker":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customEntrypoint","customCommand","customEntrypointCustomCommand"],"description":"Type of entrypoint & command override configuration","example":"default"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be used. Required in case where `configType` is `customEntrypoint` or `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be used. Required in case where `configType` is `customCommand` or `customEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of docker runtime"},"storage":{"type":"object","properties":{"useHdbStorage":{"type":"boolean"},"usePdSsdStorage":{"type":"boolean"},"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":1024,"description":"Ephemeral storage per container in MB","example":1024}},"additionalProperties":false},"shmSize":{"type":"integer","minimum":64,"description":"Configures the amount of available memory-backed disk space available to /dev/shm"}},"additionalProperties":false},"gpu":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"gpuType":{"type":"string"},"gpuCount":{"type":"integer"},"timesliced":{"type":"boolean"}},"required":["gpuType"],"additionalProperties":false}},"additionalProperties":false},"gracePeriodSeconds":{"type":"integer","minimum":15,"maximum":600,"description":"The 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."},"metadata":{"type":"object","properties":{"labels":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom labels for the workload."},"annotations":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom annotations for the workload as string or object."}},"additionalProperties":false,"description":"Allow setting custom labels and annotations for workloads."},"vcs":{"type":"object","properties":{"projectUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo to build.","example":"https://github.com/northflank/gatsby-with-northflank"},"projectType":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string","minLength":24,"maxLength":24,"description":"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 `vcsLinkId` is provided, Northflank will instead use your linked account with that ID."},"projectBranch":{"type":"string","description":"The name of the branch to use.","example":"master"}},"required":["projectUrl","projectType","projectBranch"],"additionalProperties":false},"external":{"type":"object","properties":{"imagePath":{"type":"string","pattern":"^(?:(?:https?:\\/\\/)?([a-zA-Z0-9\\-]+\\.[a-zA-Z0-9\\.\\-]+)(\\/v1)?)?(?:\\/)?([a-zA-Z/-9\\.\\-_]+)(?:\\:([a-zA-Z/-9\\.\\-_\\:]+)|\\@([a-zA-Z/-9\\.\\-_\\:]+))$","description":"Image to be deployed. When not deploying from Dockerhub the URL must be specified.","example":"nginx:latest"},"credentials":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"ID of the saved credentials to use to access this external image.","example":"example-credentials"}},"required":["imagePath"],"additionalProperties":false},"internal":{"type":"object","properties":{"id":{"anyOf":[{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":54,"example":"example-build-service"},{"type":"string","example":"example-project/example-build-service"}],"description":"ID of the build service to deploy"},"branch":{"type":"string","description":"Branch to deploy","example":"master"},"buildSHA":{"oneOf":[{"type":"string","minLength":40,"maxLength":40,"description":"A commit sha."},{"type":"string","enum":["latest"],"description":"Latest commit."}],"description":"Commit SHA to deploy, or 'latest' to deploy the most recent commit","example":"latest"},"buildId":{"type":"string","description":"ID of the build that should be deployed","example":"premium-guide-6393"}},"additionalProperties":false},"imageUrl":{"type":"string","description":"Image registry url of the deployed image."}},"additionalProperties":false,"default":{}},"status":{"type":"object","properties":{"build":{"type":"object","properties":{"status":{"type":"string","enum":["QUEUED","PENDING","UNSCHEDULABLE","STARTING","CLONING","BUILDING","UPLOADING","ABORTED","FAILURE","SUBMISSION_FAILURE","SUCCESS","CRASHED","IN_PROGRESS"],"description":"The current status of the build.","example":"SUCCESS"},"lastTransitionTime":{"type":"string","format":"date-time","description":"The timestamp of when the build reached this status.","example":"2021-11-29T11:47:16.624Z"}},"required":["status"],"additionalProperties":false,"description":"Details about the status of the most recent build."}},"additionalProperties":false,"description":"Details about the current job status."},"cluster":{"type":"object","properties":{"id":{"type":"string","description":"The id of the cluster associated with this project.","example":"nf-europe-west"},"name":{"type":"string","description":"The name of the cluster associated with this project.","example":"nf-europe-west"},"namespace":{"type":"string","description":"Namespace this resource is located within on the cluster.","example":"ns-8zy2mcjh9zn2"},"loadBalancers":{"type":"array","items":{"type":"string","example":"lb.659200800000000000000000.northflank.com"},"description":"Load balancer DNS for the cluster."}},"required":["id","name"],"additionalProperties":false,"description":"Cluster information"},"createdAt":{"type":"string","format":"date-time","description":"time of creation"},"updatedAt":{"type":"string","format":"date-time","description":"time of update"}},"required":["name","billing","jobType","id","appId","status","cluster"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Jobs","project"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"A description of the job.","example":"A job description"},"stageId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"nullable":true},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"billing":{"type":"object","properties":{"buildPlan":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The ID of the build plan to use.","example":"nf-compute-200-8"},"deploymentPlan":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The ID of the deployment plan to use.","example":"nf-compute-20"},"gpu":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"gpuType":{"type":"string"},"gpuCount":{"type":"integer"},"timesliced":{"type":"boolean"}},"additionalProperties":false}},"additionalProperties":false}},"additionalProperties":false},"disabledCI":{"type":"boolean","description":"Whether CI should be disabled. Only relevant for jobs deploying directly from version control."},"buildConfiguration":{"type":"object","properties":{"pathIgnoreRules":{"type":"array","items":{"type":"string","maxLength":260,"description":"A path ignore rule, following `.gitignore` syntax. For example, `*.md` will ignore all files ending with `.md`.","example":"README.md"},"maxItems":200,"description":"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."},"isAllowList":{"type":"boolean","description":"If `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`.","example":false},"ciIgnoreFlagsEnabled":{"type":"boolean","description":"If `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":{"type":"array","items":{"type":"string","maxLength":72,"description":"A commit ignore flag.","example":"[skip ci]"},"maxItems":200,"description":"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]\"]`","example":["[skip ci]","[ci skip]","[no ci]","[skip nf]","[nf skip]","[northflank skip]","[skip northflank]"]},"dockerfileTarget":{"type":"string","description":"If your Dockerfile contains multiple build stages, you can specify the target stage by entering its name here."},"dockerCredentials":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The ID of the docker credentials to use.","example":"example-docker-credential"}},"includeGitFolder":{"type":"boolean","description":"Include .git folder inside the build context"},"fullGitClone":{"type":"boolean","description":"Include the entire git history as part of the .git folder. Only relevant if \"includeGitFolder\" is set."},"enableGitLfs":{"type":"boolean","description":"Enable Git LFS support for the build"},"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false}},"additionalProperties":false},"buildSettings":{"type":"object","properties":{"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false},"dockerfile":{"type":"object","properties":{"useCache":{"type":"boolean","description":"DEPRECATED: This field will be removed in the near future and currently has no effect."},"buildEngine":{"type":"string","enum":["buildkit","kaniko"],"description":"Build engine to use. Defaults to recommended build engine `buildkit`","example":"buildkit"},"dockerFilePath":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]+$","description":"The file path of the Dockerfile.","example":"/Dockerfile"},"dockerWorkDir":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*$","description":"The working directory of the Dockerfile.","example":"/"},"buildkit":{"type":"object","properties":{"useCache":{"type":"boolean","description":"Use persistent storage to cache build layers.","example":true},"cacheStorageSize":{"type":"integer","description":"The amount of persistent storage available to each build in MB.","example":32768},"useInternalCache":{"type":"boolean","description":"DEPRECATED: This field will be removed in the near future."},"internalCacheStorage":{"type":"number","format":"float","description":"DEPRECATED: This field will be removed in the near future."}},"additionalProperties":false}},"additionalProperties":false},"buildpack":{"type":"object","properties":{"builder":{"type":"string","enum":["HEROKU_24","HEROKU_22","HEROKU_22_CLASSIC","HEROKU_20","HEROKU_18","GOOGLE_22","GOOGLE_V1","CNB_ALPINE","CNB_BIONIC","PAKETO_JAMMY_TINY","PAKETO_JAMMY_BASE","PAKETO_JAMMY_FULL","PAKETO_TINY","PAKETO_BASE","PAKETO_FULL"],"description":"Buildpack stack to use. Defaults to recommended stack `HEROKU_24`.","example":"HEROKU_24"},"buildpackLocators":{"type":"array","items":{"type":"string","description":"Url or registry identifier of custom Buildpack.","example":"https://buildpack-registry.heroku.com/cnb/mars/create-react-app"},"description":"Array of custom Buildpacks to use."},"buildContext":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*$","description":"The working directory to build in.","example":"/"},"useCache":{"type":"boolean","description":"Should build dependencies be cached?","example":false}},"additionalProperties":false}},"additionalProperties":false},"runtimeEnvironment":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"An object containing the runtime environment to set for the job. Keys may only contain letters, numbers, hyphens, forward slashes and dots.","example":{"variable1":"abcdef","variable2":"12345"}},"runtimeFiles":{"type":"object","properties":{},"description":"Secret files as JSON object, encrypted at rest. File path must be absolute","example":{"/dir/fileName":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"buildArguments":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"An object containing the build arguments to set for the job. Keys may only contain letters, numbers, hyphens, forward slashes and dots.","example":{"variable1":"abcdef","variable2":"12345"}},"buildFiles":{"type":"object","properties":{},"description":"Secret files as JSON object, encrypted at rest. File path must be absolute","example":{"/dir/fileName":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"dockerSecretMounts":{"type":"object","properties":{},"description":"Docker secret mount contents as JSON object, encrypted at rest. Must be a valid Docker secret mount identifier","example":{"example-secret-mount_1":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"healthChecks":{"type":"array","items":{"type":"object","properties":{"protocol":{"type":"string","enum":["HTTP","CMD","TCP"],"description":"The protocol to access the health check with.","example":"HTTP"},"type":{"type":"string","enum":["livenessProbe","readinessProbe","startupProbe"],"description":"The type of health check.","example":"readinessProbe"},"path":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*((\\?([a-zA-Z0-9-._]+(=[a-zA-Z0-9-._]+)?)*)(&([a-zA-Z0-9-._]+(=[a-zA-Z0-9-._]+)?)*)*)?$","description":"The path of the health check endpoint. Required when protocol is HTTP.","example":"/health-check"},"cmd":{"type":"string","description":"The command to run for the health check. Required when protocol is CMD"},"port":{"type":"integer","minimum":1,"description":"Port number for the health check endpoint. Required when protocol is HTTP.","example":8080},"initialDelaySeconds":{"type":"integer","minimum":1,"maximum":180,"description":"Initial delay, in seconds, before the health check is first run.","example":10},"periodSeconds":{"type":"integer","minimum":10,"maximum":600,"description":"The time between each check, in seconds.","example":60},"timeoutSeconds":{"type":"integer","minimum":1,"maximum":60,"description":"The time to wait for a response before marking the health check as a failure.","example":1},"failureThreshold":{"type":"integer","minimum":1,"maximum":255,"description":"The maximum number of allowed failures.","example":3},"successThreshold":{"type":"integer","minimum":1,"maximum":255,"description":"The number of successes required to mark the health check as a success.","example":1}},"required":["protocol","type","initialDelaySeconds","periodSeconds","timeoutSeconds","failureThreshold"],"additionalProperties":false,"description":"A health check object."},"description":"An array of health checks."},"settings":{"type":"object","properties":{"backoffLimit":{"type":"integer","minimum":0,"description":"The number of attempts to rerun a job before it is marked as failed.","example":0},"runOnSourceChange":{"type":"string","enum":["never","cd-promote","always"],"description":"Configure when the job should be run if the source image changes.","example":"never"},"activeDeadlineSeconds":{"type":"integer","minimum":1,"nullable":true,"description":"The maximum amount of time, in seconds, for a job to run before it is marked as failed.","example":600},"cron":{"type":"object","properties":{"schedule":{"type":"string","pattern":"(@(annually|yearly|monthly|weekly|daily|hourly))|((((\\d+,)+\\d+|(\\d+(\\/|-)\\d+)|\\d+|\\*) ?){5})","nullable":true,"description":"The cron timer scheduling when to run the job.","example":"30 8 * * *"},"suspended":{"type":"boolean","description":"Whether the cron's automatic scheduling is suspended","example":false},"concurrencyPolicy":{"type":"string","enum":["allow","forbid","replace"],"description":"Whether this job should run when another instance of the job is already running. `allow` will enable multiple instances of this job to run. `forbid` will keep the current instance of the job running and stop a new instance from being run. `replace` will terminate any currently running instance of the job and start a new one.","example":"forbid"}},"additionalProperties":false}},"additionalProperties":false}},"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Project > Jobs > General > Update","x-nf-team-scoped":true,"x-nf-cli-command":["patch","job"]},"v1-projects--projectId--jobs--jobId--delete":{"operationId":"deleteProjectsJobsJobid","summary":"Delete job","description":"Deletes the given job.","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"jobId","type":"string","required":true,"description":"ID of the job","example":"example-job","in":"path","schema":{"name":"jobId","type":"string","required":true,"description":"ID of the job","example":"example-job","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Jobs","project"],"security":[],"x-nf-permission-required":"Project > Jobs > General > Delete","x-nf-team-scoped":true,"x-nf-cli-command":["delete","job"]},"v1-projects--projectId--jobs--jobId--delete-team-scoped":{"operationId":"deleteProjectsJobsJobid","summary":"Delete job","description":"Deletes the given job.","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"jobId","type":"string","required":true,"description":"ID of the job","example":"example-job","in":"path","schema":{"name":"jobId","type":"string","required":true,"description":"ID of the job","example":"example-job","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Jobs","project"],"security":[],"x-nf-permission-required":"Project > Jobs > General > Delete","x-nf-team-scoped":true,"x-nf-cli-command":["delete","job"]},"v1-projects--projectId--jobs--jobId--branches-get":{"operationId":"getProjectsJobsJobidBranches","summary":"Get job branches","description":"Gets information about the branches of the given job.","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"jobId","type":"string","required":true,"description":"ID of the job","example":"example-job","in":"path","schema":{"name":"jobId","type":"string","required":true,"description":"ID of the job","example":"example-job","in":"path"}},{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query","schema":{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query"}},{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query","schema":{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query"}},{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query","schema":{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query"}}],"responses":{"200":{"description":"Data about the job's available branches.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"branches":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Name of the branch.","example":"main"},"id":{"type":"string","example":"MDM6UmVmMzA0MDU5MzM0OnJlZnMvaGVhZHMvbWFpbg="},"commit":{"type":"object","properties":{"sha":{"type":"string","description":"SHA identifier of the commit.","example":"f8aca180e989be62cba71db629d2ede05f2d10c4"},"author":{"type":"object","properties":{"login":{"type":"string","description":"The login of the commit author.","example":"northflank"}},"required":["login"],"additionalProperties":false,"description":"Details about the commit author."},"message":{"type":"string","description":"Commit message of the commit.","example":"Initial commit"},"date":{"type":"string","format":"date-time","description":"Timestamp of the commit.","example":"2021-09-17T14:04:39.000Z"}},"required":["sha","author"],"additionalProperties":false,"description":"Details about the most recent commit on the branch."}},"required":["name","id","commit"],"additionalProperties":false,"description":"Details about a branch."},"description":"A list of branches for this repository."}},"additionalProperties":false,"description":"Result data."},"pagination":{"type":"object","properties":{"hasNextPage":{"type":"boolean","description":"Is there another page of results available?","example":false},"cursor":{"type":"string","description":"The cursor to access the next page of results."},"count":{"type":"number","format":"float","description":"The number of results returned by this request.","example":1}},"required":["hasNextPage","count"],"additionalProperties":false,"description":"Data about the endpoint pagination."}},"required":["data","pagination"],"additionalProperties":false,"description":"Response object."}}},"tags":["Jobs","project"],"security":[],"x-nf-permission-required":"Project > Jobs > General > Read","x-nf-team-scoped":true,"x-nf-cli-command":["get","job","branches"]},"v1-projects--projectId--jobs--jobId--branches-get-team-scoped":{"operationId":"getProjectsJobsJobidBranches","summary":"Get job branches","description":"Gets information about the branches of the given job.","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"jobId","type":"string","required":true,"description":"ID of the job","example":"example-job","in":"path","schema":{"name":"jobId","type":"string","required":true,"description":"ID of the job","example":"example-job","in":"path"}},{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query","schema":{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query"}},{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query","schema":{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query"}},{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query","schema":{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query"}}],"responses":{"200":{"description":"Data about the job's available branches.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"branches":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Name of the branch.","example":"main"},"id":{"type":"string","example":"MDM6UmVmMzA0MDU5MzM0OnJlZnMvaGVhZHMvbWFpbg="},"commit":{"type":"object","properties":{"sha":{"type":"string","description":"SHA identifier of the commit.","example":"f8aca180e989be62cba71db629d2ede05f2d10c4"},"author":{"type":"object","properties":{"login":{"type":"string","description":"The login of the commit author.","example":"northflank"}},"required":["login"],"additionalProperties":false,"description":"Details about the commit author."},"message":{"type":"string","description":"Commit message of the commit.","example":"Initial commit"},"date":{"type":"string","format":"date-time","description":"Timestamp of the commit.","example":"2021-09-17T14:04:39.000Z"}},"required":["sha","author"],"additionalProperties":false,"description":"Details about the most recent commit on the branch."}},"required":["name","id","commit"],"additionalProperties":false,"description":"Details about a branch."},"description":"A list of branches for this repository."}},"additionalProperties":false,"description":"Result data."},"pagination":{"type":"object","properties":{"hasNextPage":{"type":"boolean","description":"Is there another page of results available?","example":false},"cursor":{"type":"string","description":"The cursor to access the next page of results."},"count":{"type":"number","format":"float","description":"The number of results returned by this request.","example":1}},"required":["hasNextPage","count"],"additionalProperties":false,"description":"Data about the endpoint pagination."}},"required":["data","pagination"],"additionalProperties":false,"description":"Response object."}}},"tags":["Jobs","project"],"security":[],"x-nf-permission-required":"Project > Jobs > General > Read","x-nf-team-scoped":true,"x-nf-cli-command":["get","job","branches"]},"v1-projects--projectId--jobs--jobId--build-get":{"operationId":"getProjectsJobsJobidBuild","summary":"List job builds","description":"Lists builds for the given job.","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"jobId","type":"string","required":true,"description":"ID of the job","example":"example-job","in":"path","schema":{"name":"jobId","type":"string","required":true,"description":"ID of the job","example":"example-job","in":"path"}},{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query","schema":{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query"}},{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query","schema":{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query"}},{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query","schema":{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query"}}],"responses":{"200":{"description":"Returns a list of builds for the given job.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"builds":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"ID of the build.","example":"joyous-view-6290"},"branch":{"type":"string","description":"Name of the branch the built commit belongs to.","example":"main"},"pullRequestId":{"type":"number","format":"float","nullable":true,"description":"ID of the pull request the commit belongs to."},"status":{"type":"string","enum":["QUEUED","PENDING","UNSCHEDULABLE","STARTING","CLONING","BUILDING","UPLOADING","ABORTED","FAILURE","SUBMISSION_FAILURE","SUCCESS","CRASHED","IN_PROGRESS"],"description":"The status of the build.","example":"SUCCESS"},"sha":{"type":"string","description":"The sha of the built commit.","example":"12c15e7ee25fd78f567ebf87f9178b8ad70025b3"},"registry":{"type":"object","properties":{"uri":{"type":"string","description":"URI of that can be used to pull the image from the registry"}},"additionalProperties":false},"concluded":{"type":"boolean","description":"Whether the build has finished.","example":true},"createdAt":{"type":"string","description":"Timestamp of the build initiation.","example":"2021-07-28T15:55:38.296Z"},"success":{"type":"boolean","description":"Whether the build was successful.","example":true},"message":{"type":"string","nullable":true,"description":"Description of the build status.","example":"Image successfully built"},"buildConcludedAt":{"type":"number","format":"float","description":"Timestamp of the build concluding.","example":1606237973}},"required":["id"],"additionalProperties":false},"description":"An array of builds."}},"required":["builds"],"additionalProperties":false,"description":"Result data."},"pagination":{"type":"object","properties":{"hasNextPage":{"type":"boolean","description":"Is there another page of results available?","example":false},"cursor":{"type":"string","description":"The cursor to access the next page of results."},"count":{"type":"number","format":"float","description":"The number of results returned by this request.","example":1}},"required":["hasNextPage","count"],"additionalProperties":false,"description":"Data about the endpoint pagination."}},"required":["data","pagination"],"additionalProperties":false,"description":"Response object."}}},"tags":["Jobs","project"],"security":[],"x-nf-permission-required":"Project > Jobs > General > Read","x-nf-team-scoped":true,"x-nf-cli-command":["get","job","builds"]},"v1-projects--projectId--jobs--jobId--build-get-team-scoped":{"operationId":"getProjectsJobsJobidBuild","summary":"List job builds","description":"Lists builds for the given job.","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"jobId","type":"string","required":true,"description":"ID of the job","example":"example-job","in":"path","schema":{"name":"jobId","type":"string","required":true,"description":"ID of the job","example":"example-job","in":"path"}},{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query","schema":{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query"}},{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query","schema":{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query"}},{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query","schema":{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query"}}],"responses":{"200":{"description":"Returns a list of builds for the given job.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"builds":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"ID of the build.","example":"joyous-view-6290"},"branch":{"type":"string","description":"Name of the branch the built commit belongs to.","example":"main"},"pullRequestId":{"type":"number","format":"float","nullable":true,"description":"ID of the pull request the commit belongs to."},"status":{"type":"string","enum":["QUEUED","PENDING","UNSCHEDULABLE","STARTING","CLONING","BUILDING","UPLOADING","ABORTED","FAILURE","SUBMISSION_FAILURE","SUCCESS","CRASHED","IN_PROGRESS"],"description":"The status of the build.","example":"SUCCESS"},"sha":{"type":"string","description":"The sha of the built commit.","example":"12c15e7ee25fd78f567ebf87f9178b8ad70025b3"},"registry":{"type":"object","properties":{"uri":{"type":"string","description":"URI of that can be used to pull the image from the registry"}},"additionalProperties":false},"concluded":{"type":"boolean","description":"Whether the build has finished.","example":true},"createdAt":{"type":"string","description":"Timestamp of the build initiation.","example":"2021-07-28T15:55:38.296Z"},"success":{"type":"boolean","description":"Whether the build was successful.","example":true},"message":{"type":"string","nullable":true,"description":"Description of the build status.","example":"Image successfully built"},"buildConcludedAt":{"type":"number","format":"float","description":"Timestamp of the build concluding.","example":1606237973}},"required":["id"],"additionalProperties":false},"description":"An array of builds."}},"required":["builds"],"additionalProperties":false,"description":"Result data."},"pagination":{"type":"object","properties":{"hasNextPage":{"type":"boolean","description":"Is there another page of results available?","example":false},"cursor":{"type":"string","description":"The cursor to access the next page of results."},"count":{"type":"number","format":"float","description":"The number of results returned by this request.","example":1}},"required":["hasNextPage","count"],"additionalProperties":false,"description":"Data about the endpoint pagination."}},"required":["data","pagination"],"additionalProperties":false,"description":"Response object."}}},"tags":["Jobs","project"],"security":[],"x-nf-permission-required":"Project > Jobs > General > Read","x-nf-team-scoped":true,"x-nf-cli-command":["get","job","builds"]},"v1-projects--projectId--jobs--jobId--build-post":{"operationId":"postProjectsJobsJobidBuild","summary":"Start job build","description":"Start a new build for the given job. Given a commit sha, it will build that commit.","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"jobId","type":"string","required":true,"description":"ID of the job","example":"example-job","in":"path","schema":{"name":"jobId","type":"string","required":true,"description":"ID of the job","example":"example-job","in":"path"}}],"responses":{"200":{"description":"Returns data about the build initiated","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","description":"ID of the build.","example":"joyous-view-6290"},"branch":{"type":"string","description":"Name of the branch the built commit belongs to.","example":"main"},"pullRequestId":{"type":"number","format":"float","nullable":true,"description":"ID of the pull request the commit belongs to."},"sha":{"type":"string","description":"The sha of the built commit.","example":"12c15e7ee25fd78f567ebf87f9178b8ad70025b3"},"registry":{"type":"object","properties":{"uri":{"type":"string","description":"URI of that can be used to pull the image from the registry"}},"additionalProperties":false},"createdAt":{"type":"string","description":"Timestamp of the build initiation.","example":"2021-07-28T15:55:38.296Z"},"status":{"type":"string","description":"The status of the build.","example":"PENDING"},"concluded":{"type":"boolean","description":"Whether the build has finished.","example":false}},"required":["id"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Jobs","project"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"sha":{"type":"string","minLength":40,"maxLength":40,"description":"Commit sha to build. If not provided, will build the most recent commit of the job's branch.","example":"262ed9817b3cad5142fbceabe0c9e371e390d616"}},"additionalProperties":false,"description":"Start a build with the current settings"},{"type":"object","properties":{"sha":{"type":"string","minLength":40,"maxLength":40,"description":"Commit sha to build. If not provided, will build the most recent commit of the job's branch.","example":"262ed9817b3cad5142fbceabe0c9e371e390d616"},"overrides":{"type":"object","properties":{"buildArguments":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Build arguments that will be set on this build only. In case of conflicts these values take precedence.","example":{"ARGUMENT_1":"abcdef","ARGUMENT_2":"12345"}},"buildFiles":{"type":"object","properties":{},"description":"Secret files as JSON object, encrypted at rest. File path must be absolute","example":{"/dir/fileName":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"dockerSecretMounts":{"type":"object","properties":{},"description":"Docker secret mount contents as JSON object, encrypted at rest. Must be a valid Docker secret mount identifier","example":{"example-secret-mount_1":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"docker":{"type":"object","properties":{"dockerFilePath":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]+$","description":"The file path of the Dockerfile.","example":"/Dockerfile"},"dockerWorkDir":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*$","description":"The working directory of the Dockerfile.","example":"/"},"dockerfileTarget":{"type":"string","pattern":"^[a-zA-Z0-9-_]+$","description":"If your Dockerfile contains multiple build stages, you can specify the target stage by entering its name here."}},"additionalProperties":false,"description":"Overrides for docker build settings."}},"additionalProperties":false,"description":"An optional object that may specify several different overrides on the build level."}},"additionalProperties":false,"description":"Start a build with overrides for the current settings"}],"description":"Start a job build"}}},"required":true},"x-nf-permission-required":"Project > Jobs > Deployment > Deploy Build","x-nf-team-scoped":true,"x-nf-cli-command":["start","job","build"]},"v1-projects--projectId--jobs--jobId--build-post-team-scoped":{"operationId":"postProjectsJobsJobidBuild","summary":"Start job build","description":"Start a new build for the given job. Given a commit sha, it will build that commit.","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"jobId","type":"string","required":true,"description":"ID of the job","example":"example-job","in":"path","schema":{"name":"jobId","type":"string","required":true,"description":"ID of the job","example":"example-job","in":"path"}}],"responses":{"200":{"description":"Returns data about the build initiated","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","description":"ID of the build.","example":"joyous-view-6290"},"branch":{"type":"string","description":"Name of the branch the built commit belongs to.","example":"main"},"pullRequestId":{"type":"number","format":"float","nullable":true,"description":"ID of the pull request the commit belongs to."},"sha":{"type":"string","description":"The sha of the built commit.","example":"12c15e7ee25fd78f567ebf87f9178b8ad70025b3"},"registry":{"type":"object","properties":{"uri":{"type":"string","description":"URI of that can be used to pull the image from the registry"}},"additionalProperties":false},"createdAt":{"type":"string","description":"Timestamp of the build initiation.","example":"2021-07-28T15:55:38.296Z"},"status":{"type":"string","description":"The status of the build.","example":"PENDING"},"concluded":{"type":"boolean","description":"Whether the build has finished.","example":false}},"required":["id"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Jobs","project"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"sha":{"type":"string","minLength":40,"maxLength":40,"description":"Commit sha to build. If not provided, will build the most recent commit of the job's branch.","example":"262ed9817b3cad5142fbceabe0c9e371e390d616"}},"additionalProperties":false,"description":"Start a build with the current settings"},{"type":"object","properties":{"sha":{"type":"string","minLength":40,"maxLength":40,"description":"Commit sha to build. If not provided, will build the most recent commit of the job's branch.","example":"262ed9817b3cad5142fbceabe0c9e371e390d616"},"overrides":{"type":"object","properties":{"buildArguments":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Build arguments that will be set on this build only. In case of conflicts these values take precedence.","example":{"ARGUMENT_1":"abcdef","ARGUMENT_2":"12345"}},"buildFiles":{"type":"object","properties":{},"description":"Secret files as JSON object, encrypted at rest. File path must be absolute","example":{"/dir/fileName":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"dockerSecretMounts":{"type":"object","properties":{},"description":"Docker secret mount contents as JSON object, encrypted at rest. Must be a valid Docker secret mount identifier","example":{"example-secret-mount_1":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"docker":{"type":"object","properties":{"dockerFilePath":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]+$","description":"The file path of the Dockerfile.","example":"/Dockerfile"},"dockerWorkDir":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*$","description":"The working directory of the Dockerfile.","example":"/"},"dockerfileTarget":{"type":"string","pattern":"^[a-zA-Z0-9-_]+$","description":"If your Dockerfile contains multiple build stages, you can specify the target stage by entering its name here."}},"additionalProperties":false,"description":"Overrides for docker build settings."}},"additionalProperties":false,"description":"An optional object that may specify several different overrides on the build level."}},"additionalProperties":false,"description":"Start a build with overrides for the current settings"}],"description":"Start a job build"}}},"required":true},"x-nf-permission-required":"Project > Jobs > Deployment > Deploy Build","x-nf-team-scoped":true,"x-nf-cli-command":["start","job","build"]},"v1-projects--projectId--jobs--jobId--build-arguments-get":{"operationId":"getProjectsJobsJobidBuildArguments","summary":"Get job build arguments","description":"Gets the build arguments of the given job. If the API key does not have the permission 'Project > Secrets > General > Read', secrets inherited from secret groups will not be displayed.","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"jobId","type":"string","required":true,"description":"ID of the job","example":"example-job","in":"path","schema":{"name":"jobId","type":"string","required":true,"description":"ID of the job","example":"example-job","in":"path"}},{"name":"show","type":"string","enum":["this","inherited","all"],"description":"Which secrets to display - if set to `this` only the group's secrets are displayed, if set to `inherited` only secrets from linked addons are displayed, if set to `all` or not provided, both are displayed.","example":"all","in":"query","schema":{"name":"show","type":"string","enum":["this","inherited","all"],"description":"Which secrets to display - if set to `this` only the group's secrets are displayed, if set to `inherited` only secrets from linked addons are displayed, if set to `all` or not provided, both are displayed.","example":"all","in":"query"}},{"name":"replaceTemplatedValues","type":"string","enum":["true"],"description":"If templated secrets should be replaced with their inferred value rather than returned as template strings.","example":"true","in":"query","schema":{"name":"replaceTemplatedValues","type":"string","enum":["true"],"description":"If templated secrets should be replaced with their inferred value rather than returned as template strings.","example":"true","in":"query"}}],"responses":{"200":{"description":"The build arguments for the job.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"buildArguments":{"type":"object","properties":{},"additionalProperties":false,"description":"The build arguments, formatted as a JSON object. If the `show` parameter is set to `this`, this will only contain secrets saved to this entity. If the `show` parameter is set to `inherited`, this will only contain secrets inherited from linked secret groups. Otherwise, this will contain both.","example":{"ARGUMENT_1":"abcdef","ARGUMENT_2":"12345"}},"buildFiles":{"type":"object","properties":{},"additionalProperties":false,"description":"The build secret files, formatted as a JSON object. If the `show` parameter is set to `this`, this will only contain files saved to this entity. If the `show` parameter is set to `inherited`, this will only contain files inherited from linked secret groups. Otherwise, this will contain both.","example":{"/dir/fileName":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}}},"required":["buildArguments","buildFiles"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Jobs","project"],"security":[],"deprecated":true,"x-nf-permission-required":"Project > Secrets > Jobs > Read","x-nf-team-scoped":true,"x-nf-cli-command":["get","job","build-arguments"],"x-nf-deprecation-replacement":"/jobs/get-job","x-nf-deprecation-message":"Requests should instead use the relevant GET endpoint."},"v1-projects--projectId--jobs--jobId--build-arguments-get-team-scoped":{"operationId":"getProjectsJobsJobidBuildArguments","summary":"Get job build arguments","description":"Gets the build arguments of the given job. If the API key does not have the permission 'Project > Secrets > General > Read', secrets inherited from secret groups will not be displayed.","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"jobId","type":"string","required":true,"description":"ID of the job","example":"example-job","in":"path","schema":{"name":"jobId","type":"string","required":true,"description":"ID of the job","example":"example-job","in":"path"}},{"name":"show","type":"string","enum":["this","inherited","all"],"description":"Which secrets to display - if set to `this` only the group's secrets are displayed, if set to `inherited` only secrets from linked addons are displayed, if set to `all` or not provided, both are displayed.","example":"all","in":"query","schema":{"name":"show","type":"string","enum":["this","inherited","all"],"description":"Which secrets to display - if set to `this` only the group's secrets are displayed, if set to `inherited` only secrets from linked addons are displayed, if set to `all` or not provided, both are displayed.","example":"all","in":"query"}},{"name":"replaceTemplatedValues","type":"string","enum":["true"],"description":"If templated secrets should be replaced with their inferred value rather than returned as template strings.","example":"true","in":"query","schema":{"name":"replaceTemplatedValues","type":"string","enum":["true"],"description":"If templated secrets should be replaced with their inferred value rather than returned as template strings.","example":"true","in":"query"}}],"responses":{"200":{"description":"The build arguments for the job.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"buildArguments":{"type":"object","properties":{},"additionalProperties":false,"description":"The build arguments, formatted as a JSON object. If the `show` parameter is set to `this`, this will only contain secrets saved to this entity. If the `show` parameter is set to `inherited`, this will only contain secrets inherited from linked secret groups. Otherwise, this will contain both.","example":{"ARGUMENT_1":"abcdef","ARGUMENT_2":"12345"}},"buildFiles":{"type":"object","properties":{},"additionalProperties":false,"description":"The build secret files, formatted as a JSON object. If the `show` parameter is set to `this`, this will only contain files saved to this entity. If the `show` parameter is set to `inherited`, this will only contain files inherited from linked secret groups. Otherwise, this will contain both.","example":{"/dir/fileName":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}}},"required":["buildArguments","buildFiles"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Jobs","project"],"security":[],"deprecated":true,"x-nf-permission-required":"Project > Secrets > Jobs > Read","x-nf-team-scoped":true,"x-nf-cli-command":["get","job","build-arguments"],"x-nf-deprecation-replacement":"/jobs/get-job","x-nf-deprecation-message":"Requests should instead use the relevant GET endpoint."},"v1-projects--projectId--jobs--jobId--build-arguments-post":{"operationId":"postProjectsJobsJobidBuildArguments","summary":"Edit job build arguments","description":"Sets build arguments for the given job.","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"jobId","type":"string","required":true,"description":"ID of the job","example":"example-job","in":"path","schema":{"name":"jobId","type":"string","required":true,"description":"ID of the job","example":"example-job","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Jobs","project"],"security":[],"deprecated":true,"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"buildArguments":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"An object containing the all of the build arguments to set for the service. Keys may only contain letters, numbers, hyphens, forward slashes and dots.","example":{"ARGUMENT_1":"abcdef","ARGUMENT_2":"12345"}},"buildFiles":{"type":"object","properties":{},"description":"Secret files as JSON object, encrypted at rest. File path must be absolute","example":{"/dir/fileName":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"dockerSecretMounts":{"type":"object","properties":{},"description":"Docker secret mount contents as JSON object, encrypted at rest. Must be a valid Docker secret mount identifier","example":{"example-secret-mount_1":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}}},"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Project > Secrets > Jobs > Update","x-nf-team-scoped":true,"x-nf-cli-command":["update","job","build-arguments"],"x-nf-deprecation-replacement":"/jobs/patch-job","x-nf-deprecation-message":"Requests should instead use the relevant PATCH endpoint."},"v1-projects--projectId--jobs--jobId--build-arguments-post-team-scoped":{"operationId":"postProjectsJobsJobidBuildArguments","summary":"Edit job build arguments","description":"Sets build arguments for the given job.","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"jobId","type":"string","required":true,"description":"ID of the job","example":"example-job","in":"path","schema":{"name":"jobId","type":"string","required":true,"description":"ID of the job","example":"example-job","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Jobs","project"],"security":[],"deprecated":true,"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"buildArguments":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"An object containing the all of the build arguments to set for the service. Keys may only contain letters, numbers, hyphens, forward slashes and dots.","example":{"ARGUMENT_1":"abcdef","ARGUMENT_2":"12345"}},"buildFiles":{"type":"object","properties":{},"description":"Secret files as JSON object, encrypted at rest. File path must be absolute","example":{"/dir/fileName":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"dockerSecretMounts":{"type":"object","properties":{},"description":"Docker secret mount contents as JSON object, encrypted at rest. Must be a valid Docker secret mount identifier","example":{"example-secret-mount_1":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}}},"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Project > Secrets > Jobs > Update","x-nf-team-scoped":true,"x-nf-cli-command":["update","job","build-arguments"],"x-nf-deprecation-replacement":"/jobs/patch-job","x-nf-deprecation-message":"Requests should instead use the relevant PATCH endpoint."},"v1-projects--projectId--jobs--jobId--build-arguments-details-get":{"operationId":"getProjectsJobsJobidBuildArgumentsDetails","summary":"Get job build argument details","description":"Get details about the build arguments accessible by the given job. Also requires the permission 'Project > Secrets > General > Read'","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"jobId","type":"string","required":true,"description":"ID of the job","example":"example-job","in":"path","schema":{"name":"jobId","type":"string","required":true,"description":"ID of the job","example":"example-job","in":"path"}}],"responses":{"200":{"description":"Details of the build arguments of the job.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"buildArguments":{"type":"object","properties":{"MY_VARIABLE_NAME":{"type":"object","properties":{"value":{"description":"The value of the secret.","example":"abcdef123456"},"inheritedFrom":{"type":"string","description":"The ID of the secret group the secret is inherited from, if applicable.","example":"example-secret"},"addonId":{"type":"string","description":"The ID of the addon the secret is inherited from, if applicable.","example":"example-addon"},"priority":{"type":"integer","description":"The priority of the secret group the secret is inherited from, if applicable.","example":10},"overriding":{"type":"array","items":{"type":"object","properties":{"value":{"description":"The value of the secret.","example":"ffffffffffff"},"inheritedFrom":{"type":"string","description":"The ID of the secret group the secret is inherited from.","example":"secret-2"},"addonId":{"type":"string","description":"The ID of the addon the secret is inherited from, if applicable.","example":"addon-2"},"priority":{"type":"integer","description":"The priority of the secret group the secret is inherited from.","example":0}},"required":["value","inheritedFrom","priority"],"additionalProperties":false,"description":"Data about an overridden secret."},"description":"An array containing data about other places the secret has been inherited from, but that are not being used as a secret with the same key exists with a higher priority."}},"required":["value","overriding"],"additionalProperties":false,"description":"A stored secret and details about it and its value. This can have the name of any saved secret."}},"description":"Details about all the secrets accessible by the service."},"buildFiles":{"type":"object","properties":{"/dir/fileName":{"type":"object","properties":{"value":{"type":"object","properties":{"data":{"type":"string","description":"base64 encoded string of the file contents","example":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU="},"encoding":{"type":"string","description":"Original encoding of the file","example":"utf-8"}},"additionalProperties":false,"description":"The value of the secret.","example":{"/dir/fileName":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"inheritedFrom":{"type":"string","description":"The ID of the secret group the secret is inherited from, if applicable.","example":"example-secret"},"priority":{"type":"integer","description":"The priority of the secret group the secret is inherited from, if applicable.","example":10},"overriding":{"type":"array","items":{"type":"object","properties":{"value":{"description":"The value of the secret.","example":"ffffffffffff"},"inheritedFrom":{"type":"string","description":"The ID of the secret group the secret is inherited from.","example":"secret-2"},"priority":{"type":"integer","description":"The priority of the secret group the secret is inherited from.","example":0}},"required":["value","inheritedFrom","priority"],"additionalProperties":false,"description":"Data about an overridden secret."},"description":"An array containing data about other places the file has been inherited from, but that are not being used as a secret with the same file path exists with a higher priority."}},"required":["value","overriding"],"additionalProperties":false,"description":"A stored secret and details about it and its value. This can have the name of any saved secret."}},"description":"Details about all the secrets accessible by the service."}},"required":["buildArguments","buildFiles"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Jobs","project"],"security":[],"deprecated":true,"x-nf-permission-required":"Project > Secrets > Jobs > Read","x-nf-team-scoped":true,"x-nf-cli-command":["get","job","build-argument-details"],"x-nf-deprecation-replacement":"/jobs/get-job","x-nf-deprecation-message":"Requests should instead use the relevant GET endpoint."},"v1-projects--projectId--jobs--jobId--build-arguments-details-get-team-scoped":{"operationId":"getProjectsJobsJobidBuildArgumentsDetails","summary":"Get job build argument details","description":"Get details about the build arguments accessible by the given job. Also requires the permission 'Project > Secrets > General > Read'","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"jobId","type":"string","required":true,"description":"ID of the job","example":"example-job","in":"path","schema":{"name":"jobId","type":"string","required":true,"description":"ID of the job","example":"example-job","in":"path"}}],"responses":{"200":{"description":"Details of the build arguments of the job.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"buildArguments":{"type":"object","properties":{"MY_VARIABLE_NAME":{"type":"object","properties":{"value":{"description":"The value of the secret.","example":"abcdef123456"},"inheritedFrom":{"type":"string","description":"The ID of the secret group the secret is inherited from, if applicable.","example":"example-secret"},"addonId":{"type":"string","description":"The ID of the addon the secret is inherited from, if applicable.","example":"example-addon"},"priority":{"type":"integer","description":"The priority of the secret group the secret is inherited from, if applicable.","example":10},"overriding":{"type":"array","items":{"type":"object","properties":{"value":{"description":"The value of the secret.","example":"ffffffffffff"},"inheritedFrom":{"type":"string","description":"The ID of the secret group the secret is inherited from.","example":"secret-2"},"addonId":{"type":"string","description":"The ID of the addon the secret is inherited from, if applicable.","example":"addon-2"},"priority":{"type":"integer","description":"The priority of the secret group the secret is inherited from.","example":0}},"required":["value","inheritedFrom","priority"],"additionalProperties":false,"description":"Data about an overridden secret."},"description":"An array containing data about other places the secret has been inherited from, but that are not being used as a secret with the same key exists with a higher priority."}},"required":["value","overriding"],"additionalProperties":false,"description":"A stored secret and details about it and its value. This can have the name of any saved secret."}},"description":"Details about all the secrets accessible by the service."},"buildFiles":{"type":"object","properties":{"/dir/fileName":{"type":"object","properties":{"value":{"type":"object","properties":{"data":{"type":"string","description":"base64 encoded string of the file contents","example":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU="},"encoding":{"type":"string","description":"Original encoding of the file","example":"utf-8"}},"additionalProperties":false,"description":"The value of the secret.","example":{"/dir/fileName":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"inheritedFrom":{"type":"string","description":"The ID of the secret group the secret is inherited from, if applicable.","example":"example-secret"},"priority":{"type":"integer","description":"The priority of the secret group the secret is inherited from, if applicable.","example":10},"overriding":{"type":"array","items":{"type":"object","properties":{"value":{"description":"The value of the secret.","example":"ffffffffffff"},"inheritedFrom":{"type":"string","description":"The ID of the secret group the secret is inherited from.","example":"secret-2"},"priority":{"type":"integer","description":"The priority of the secret group the secret is inherited from.","example":0}},"required":["value","inheritedFrom","priority"],"additionalProperties":false,"description":"Data about an overridden secret."},"description":"An array containing data about other places the file has been inherited from, but that are not being used as a secret with the same file path exists with a higher priority."}},"required":["value","overriding"],"additionalProperties":false,"description":"A stored secret and details about it and its value. This can have the name of any saved secret."}},"description":"Details about all the secrets accessible by the service."}},"required":["buildArguments","buildFiles"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Jobs","project"],"security":[],"deprecated":true,"x-nf-permission-required":"Project > Secrets > Jobs > Read","x-nf-team-scoped":true,"x-nf-cli-command":["get","job","build-argument-details"],"x-nf-deprecation-replacement":"/jobs/get-job","x-nf-deprecation-message":"Requests should instead use the relevant GET endpoint."},"v1-projects--projectId--jobs--jobId--build-logs-get":{"operationId":"getProjectsJobsJobidBuildLogs","summary":"Get job build logs","description":"Get logs for a job build","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"jobId","type":"string","required":true,"description":"ID of the job","example":"example-job","in":"path","schema":{"name":"jobId","type":"string","required":true,"description":"ID of the job","example":"example-job","in":"path"}},{"name":"buildId","type":"string","description":"Selects logs for specific build.","example":"fantastic-build-2345","in":"query","schema":{"name":"buildId","type":"string","description":"Selects logs for specific build.","example":"fantastic-build-2345","in":"query"}},{"name":"queryType","type":"string","enum":["range"],"description":"`range` selects a log range and returns immediately.","example":"range","default":"range","in":"query","schema":{"name":"queryType","type":"string","enum":["range"],"description":"`range` selects a log range and returns immediately.","example":"range","default":"range","in":"query"}},{"name":"startTime","type":"string","format":"date-time","description":"Fetch logs generated after this timestamp.","example":"2023-02-16T14:00:00.000Z","in":"query","schema":{"name":"startTime","type":"string","format":"date-time","description":"Fetch logs generated after this timestamp.","example":"2023-02-16T14:00:00.000Z","in":"query"}},{"name":"endTime","type":"string","format":"date-time","description":"Fetch logs generated before this timestamp.","example":"2023-02-16T15:00:00.000Z","in":"query","schema":{"name":"endTime","type":"string","format":"date-time","description":"Fetch logs generated before this timestamp.","example":"2023-02-16T15:00:00.000Z","in":"query"}},{"name":"duration","type":"integer","description":"Range duration in seconds. If set, only one of `startTime` or `endTime` can be set.","example":600,"in":"query","schema":{"name":"duration","type":"integer","description":"Range duration in seconds. If set, only one of `startTime` or `endTime` can be set.","example":600,"in":"query"}},{"name":"lineLimit","type":"number","format":"float","minimum":0,"maximum":1000,"description":"Number of log lines to fetch.","example":250,"in":"query","schema":{"name":"lineLimit","type":"number","format":"float","minimum":0,"maximum":1000,"description":"Number of log lines to fetch.","example":250,"in":"query"}},{"name":"direction","type":"string","enum":["backward","forward"],"description":"Ordering of log lines","example":"backward","default":"backward","in":"query","schema":{"name":"direction","type":"string","enum":["backward","forward"],"description":"Ordering of log lines","example":"backward","default":"backward","in":"query"}},{"name":"textIncludes","type":"string","minLength":1,"maxLength":100,"description":"Filter log lines to match this search string","example":"myvalue","in":"query","schema":{"name":"textIncludes","type":"string","minLength":1,"maxLength":100,"description":"Filter log lines to match this search string","example":"myvalue","in":"query"}},{"name":"textNotIncludes","type":"string","minLength":1,"maxLength":100,"description":"Filter log lines to not match this search string","example":"myvalue","in":"query","schema":{"name":"textNotIncludes","type":"string","minLength":1,"maxLength":100,"description":"Filter log lines to not match this search string","example":"myvalue","in":"query"}},{"name":"regexIncludes","type":"string","minLength":1,"maxLength":100,"description":"Filter log lines to match this regular expression","example":"my.*value","in":"query","schema":{"name":"regexIncludes","type":"string","minLength":1,"maxLength":100,"description":"Filter log lines to match this regular expression","example":"my.*value","in":"query"}},{"name":"regexNotIncludes","type":"string","minLength":1,"maxLength":100,"description":"Filter log lines to not match this regular expression","example":"my.*value","in":"query","schema":{"name":"regexNotIncludes","type":"string","minLength":1,"maxLength":100,"description":"Filter log lines to not match this regular expression","example":"my.*value","in":"query"}}],"responses":{"200":{"description":"List of logs values","schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"containerId":{"type":"string"},"log":{"example":"stdout F This is a log line"},"ts":{"type":"string","format":"date-time","example":"2023-03-21T15:01:17.310Z"}},"required":["containerId","log","ts"],"additionalProperties":false},"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Jobs","project"],"security":[],"x-nf-link":"undefined/v1/api/log-tailing","x-nf-link-description":"For more information on live log tailing, see our documentation page.","x-nf-permission-required":"Project > Jobs > Deployment > View Instance Logs","x-nf-team-scoped":true,"x-nf-cli-command":["get","job","build-logs"]},"v1-projects--projectId--jobs--jobId--build-logs-get-team-scoped":{"operationId":"getProjectsJobsJobidBuildLogs","summary":"Get job build logs","description":"Get logs for a job build","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"jobId","type":"string","required":true,"description":"ID of the job","example":"example-job","in":"path","schema":{"name":"jobId","type":"string","required":true,"description":"ID of the job","example":"example-job","in":"path"}},{"name":"buildId","type":"string","description":"Selects logs for specific build.","example":"fantastic-build-2345","in":"query","schema":{"name":"buildId","type":"string","description":"Selects logs for specific build.","example":"fantastic-build-2345","in":"query"}},{"name":"queryType","type":"string","enum":["range"],"description":"`range` selects a log range and returns immediately.","example":"range","default":"range","in":"query","schema":{"name":"queryType","type":"string","enum":["range"],"description":"`range` selects a log range and returns immediately.","example":"range","default":"range","in":"query"}},{"name":"startTime","type":"string","format":"date-time","description":"Fetch logs generated after this timestamp.","example":"2023-02-16T14:00:00.000Z","in":"query","schema":{"name":"startTime","type":"string","format":"date-time","description":"Fetch logs generated after this timestamp.","example":"2023-02-16T14:00:00.000Z","in":"query"}},{"name":"endTime","type":"string","format":"date-time","description":"Fetch logs generated before this timestamp.","example":"2023-02-16T15:00:00.000Z","in":"query","schema":{"name":"endTime","type":"string","format":"date-time","description":"Fetch logs generated before this timestamp.","example":"2023-02-16T15:00:00.000Z","in":"query"}},{"name":"duration","type":"integer","description":"Range duration in seconds. If set, only one of `startTime` or `endTime` can be set.","example":600,"in":"query","schema":{"name":"duration","type":"integer","description":"Range duration in seconds. If set, only one of `startTime` or `endTime` can be set.","example":600,"in":"query"}},{"name":"lineLimit","type":"number","format":"float","minimum":0,"maximum":1000,"description":"Number of log lines to fetch.","example":250,"in":"query","schema":{"name":"lineLimit","type":"number","format":"float","minimum":0,"maximum":1000,"description":"Number of log lines to fetch.","example":250,"in":"query"}},{"name":"direction","type":"string","enum":["backward","forward"],"description":"Ordering of log lines","example":"backward","default":"backward","in":"query","schema":{"name":"direction","type":"string","enum":["backward","forward"],"description":"Ordering of log lines","example":"backward","default":"backward","in":"query"}},{"name":"textIncludes","type":"string","minLength":1,"maxLength":100,"description":"Filter log lines to match this search string","example":"myvalue","in":"query","schema":{"name":"textIncludes","type":"string","minLength":1,"maxLength":100,"description":"Filter log lines to match this search string","example":"myvalue","in":"query"}},{"name":"textNotIncludes","type":"string","minLength":1,"maxLength":100,"description":"Filter log lines to not match this search string","example":"myvalue","in":"query","schema":{"name":"textNotIncludes","type":"string","minLength":1,"maxLength":100,"description":"Filter log lines to not match this search string","example":"myvalue","in":"query"}},{"name":"regexIncludes","type":"string","minLength":1,"maxLength":100,"description":"Filter log lines to match this regular expression","example":"my.*value","in":"query","schema":{"name":"regexIncludes","type":"string","minLength":1,"maxLength":100,"description":"Filter log lines to match this regular expression","example":"my.*value","in":"query"}},{"name":"regexNotIncludes","type":"string","minLength":1,"maxLength":100,"description":"Filter log lines to not match this regular expression","example":"my.*value","in":"query","schema":{"name":"regexNotIncludes","type":"string","minLength":1,"maxLength":100,"description":"Filter log lines to not match this regular expression","example":"my.*value","in":"query"}}],"responses":{"200":{"description":"List of logs values","schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"containerId":{"type":"string"},"log":{"example":"stdout F This is a log line"},"ts":{"type":"string","format":"date-time","example":"2023-03-21T15:01:17.310Z"}},"required":["containerId","log","ts"],"additionalProperties":false},"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Jobs","project"],"security":[],"x-nf-link":"undefined/v1/api/log-tailing","x-nf-link-description":"For more information on live log tailing, see our documentation page.","x-nf-permission-required":"Project > Jobs > Deployment > View Instance Logs","x-nf-team-scoped":true,"x-nf-cli-command":["get","job","build-logs"]},"v1-projects--projectId--jobs--jobId--build-metrics-get":{"operationId":"getProjectsJobsJobidBuildMetrics","summary":"Get job build metrics","description":"Get metrics for a job build","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"jobId","type":"string","required":true,"description":"ID of the job","example":"example-job","in":"path","schema":{"name":"jobId","type":"string","required":true,"description":"ID of the job","example":"example-job","in":"path"}},{"name":"buildId","type":"string","description":"Selects metrics for specific build.","examples":["fantastic-build-2345","fantastic-build-2345"],"in":"query","schema":{"name":"buildId","type":"string","description":"Selects metrics for specific build.","examples":["fantastic-build-2345","fantastic-build-2345"],"in":"query"}},{"name":"queryType","type":"string","enum":["range","single"],"description":"Selects metrics for specified timestamp.","examples":["range","single"],"default":"single","in":"query","schema":{"name":"queryType","type":"string","enum":["range","single"],"description":"Selects metrics for specified timestamp.","examples":["range","single"],"default":"single","in":"query"}},{"name":"metricTypes","type":"string","enum":["cpu","memory","networkIngress","networkEgress","tcpConnectionsOpen","diskUsage","requests","http4xxResponses","http5xxResponses","bandwidth","bandwidthVolume"],"description":"Type of metric. Multiple metric types can be selected by specifying the query parameter repeatedly.","in":"query","schema":{"name":"metricTypes","type":"string","enum":["cpu","memory","networkIngress","networkEgress","tcpConnectionsOpen","diskUsage","requests","http4xxResponses","http5xxResponses","bandwidth","bandwidthVolume"],"description":"Type of metric. Multiple metric types can be selected by specifying the query parameter repeatedly.","in":"query"}},{"name":"startTime","type":"string","format":"date-time","description":"Fetch metrics generated after this timestamp. Only valid for queryType: `range`.","example":"2023-02-16T14:00:00.000Z","in":"query","schema":{"name":"startTime","type":"string","format":"date-time","description":"Fetch metrics generated after this timestamp. Only valid for queryType: `range`.","example":"2023-02-16T14:00:00.000Z","in":"query"}},{"name":"endTime","type":"string","format":"date-time","description":"Fetch metrics generated before this timestamp. Only valid for queryType: `range`.","example":"2023-02-16T15:00:00.000Z","in":"query","schema":{"name":"endTime","type":"string","format":"date-time","description":"Fetch metrics generated before this timestamp. Only valid for queryType: `range`.","example":"2023-02-16T15:00:00.000Z","in":"query"}},{"name":"duration","type":"integer","description":"Range duration in seconds. If set, only one of `startTime` or `endTime` can be set.","example":600,"in":"query","schema":{"name":"duration","type":"integer","description":"Range duration in seconds. If set, only one of `startTime` or `endTime` can be set.","example":600,"in":"query"}},{"name":"time","type":"string","format":"date-time","description":"Fetch metrics at this timestamp. If not provided will use current time. Only valid for queryType: `single`.","example":"2023-02-16T14:00:00.000Z","in":"query","schema":{"name":"time","type":"string","format":"date-time","description":"Fetch metrics at this timestamp. If not provided will use current time. Only valid for queryType: `single`.","example":"2023-02-16T14:00:00.000Z","in":"query"}}],"responses":{"200":{"description":"List of metrics values","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"cpu":{"type":"object","properties":{"metricInfo":{"type":"object","properties":{"metricId":{"type":"string","enum":["cpu","memory","networkIngress","networkEgress","tcpConnectionsOpen","diskUsage","requests","http4xxResponses","http5xxResponses","bandwidth","bandwidthVolume"],"description":"Type of metric to fetch"},"metricUnit":{"type":"string","enum":["pct","vCPU","mb","kbps","rps","count"],"example":"pct"},"metricResolution":{"type":"number","format":"float","example":10}},"required":["metricId","metricUnit"],"additionalProperties":false},"values":{"type":"array","items":{"type":"object","properties":{"metadata":{"type":"object","properties":{"containerId":{"type":"string","example":"nginx-669cc865b7-5458n"},"volumeId":{"type":"string","example":"data-volume-1"}},"required":["containerId"],"additionalProperties":false},"data":{"type":"array","items":{"type":"object","properties":{"value":{"type":"number","format":"float","example":0.5},"ts":{"type":"string","format":"date-time","example":"2023-03-21T15:01:17.310Z"}},"required":["value","ts"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}},"required":["values"],"additionalProperties":false},"memory":{"type":"object","properties":{"metricInfo":{"type":"object","properties":{"metricId":{"type":"string","enum":["cpu","memory","networkIngress","networkEgress","tcpConnectionsOpen","diskUsage","requests","http4xxResponses","http5xxResponses","bandwidth","bandwidthVolume"],"description":"Type of metric to fetch"},"metricUnit":{"type":"string","enum":["pct","vCPU","mb","kbps","rps","count"],"example":"pct"},"metricResolution":{"type":"number","format":"float","example":10}},"required":["metricId","metricUnit"],"additionalProperties":false},"values":{"type":"array","items":{"type":"object","properties":{"metadata":{"type":"object","properties":{"containerId":{"type":"string","example":"nginx-669cc865b7-5458n"},"volumeId":{"type":"string","example":"data-volume-1"}},"required":["containerId"],"additionalProperties":false},"data":{"type":"array","items":{"type":"object","properties":{"value":{"type":"number","format":"float","example":0.5},"ts":{"type":"string","format":"date-time","example":"2023-03-21T15:01:17.310Z"}},"required":["value","ts"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}},"required":["values"],"additionalProperties":false},"networkIngress":{"type":"object","properties":{"metricInfo":{"type":"object","properties":{"metricId":{"type":"string","enum":["cpu","memory","networkIngress","networkEgress","tcpConnectionsOpen","diskUsage","requests","http4xxResponses","http5xxResponses","bandwidth","bandwidthVolume"],"description":"Type of metric to fetch"},"metricUnit":{"type":"string","enum":["pct","vCPU","mb","kbps","rps","count"],"example":"pct"},"metricResolution":{"type":"number","format":"float","example":10}},"required":["metricId","metricUnit"],"additionalProperties":false},"values":{"type":"array","items":{"type":"object","properties":{"metadata":{"type":"object","properties":{"containerId":{"type":"string","example":"nginx-669cc865b7-5458n"},"volumeId":{"type":"string","example":"data-volume-1"}},"required":["containerId"],"additionalProperties":false},"data":{"type":"array","items":{"type":"object","properties":{"value":{"type":"number","format":"float","example":0.5},"ts":{"type":"string","format":"date-time","example":"2023-03-21T15:01:17.310Z"}},"required":["value","ts"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}},"required":["values"],"additionalProperties":false},"networkEgress":{"type":"object","properties":{"metricInfo":{"type":"object","properties":{"metricId":{"type":"string","enum":["cpu","memory","networkIngress","networkEgress","tcpConnectionsOpen","diskUsage","requests","http4xxResponses","http5xxResponses","bandwidth","bandwidthVolume"],"description":"Type of metric to fetch"},"metricUnit":{"type":"string","enum":["pct","vCPU","mb","kbps","rps","count"],"example":"pct"},"metricResolution":{"type":"number","format":"float","example":10}},"required":["metricId","metricUnit"],"additionalProperties":false},"values":{"type":"array","items":{"type":"object","properties":{"metadata":{"type":"object","properties":{"containerId":{"type":"string","example":"nginx-669cc865b7-5458n"},"volumeId":{"type":"string","example":"data-volume-1"}},"required":["containerId"],"additionalProperties":false},"data":{"type":"array","items":{"type":"object","properties":{"value":{"type":"number","format":"float","example":0.5},"ts":{"type":"string","format":"date-time","example":"2023-03-21T15:01:17.310Z"}},"required":["value","ts"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}},"required":["values"],"additionalProperties":false},"tcpConnectionsOpen":{"type":"object","properties":{"metricInfo":{"type":"object","properties":{"metricId":{"type":"string","enum":["cpu","memory","networkIngress","networkEgress","tcpConnectionsOpen","diskUsage","requests","http4xxResponses","http5xxResponses","bandwidth","bandwidthVolume"],"description":"Type of metric to fetch"},"metricUnit":{"type":"string","enum":["pct","vCPU","mb","kbps","rps","count"],"example":"pct"},"metricResolution":{"type":"number","format":"float","example":10}},"required":["metricId","metricUnit"],"additionalProperties":false},"values":{"type":"array","items":{"type":"object","properties":{"metadata":{"type":"object","properties":{"containerId":{"type":"string","example":"nginx-669cc865b7-5458n"},"volumeId":{"type":"string","example":"data-volume-1"}},"required":["containerId"],"additionalProperties":false},"data":{"type":"array","items":{"type":"object","properties":{"value":{"type":"number","format":"float","example":0.5},"ts":{"type":"string","format":"date-time","example":"2023-03-21T15:01:17.310Z"}},"required":["value","ts"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}},"required":["values"],"additionalProperties":false},"diskUsage":{"type":"object","properties":{"metricInfo":{"type":"object","properties":{"metricId":{"type":"string","enum":["cpu","memory","networkIngress","networkEgress","tcpConnectionsOpen","diskUsage","requests","http4xxResponses","http5xxResponses","bandwidth","bandwidthVolume"],"description":"Type of metric to fetch"},"metricUnit":{"type":"string","enum":["pct","vCPU","mb","kbps","rps","count"],"example":"pct"},"metricResolution":{"type":"number","format":"float","example":10}},"required":["metricId","metricUnit"],"additionalProperties":false},"values":{"type":"array","items":{"type":"object","properties":{"metadata":{"type":"object","properties":{"containerId":{"type":"string","example":"nginx-669cc865b7-5458n"},"volumeId":{"type":"string","example":"data-volume-1"}},"required":["containerId"],"additionalProperties":false},"data":{"type":"array","items":{"type":"object","properties":{"value":{"type":"number","format":"float","example":0.5},"ts":{"type":"string","format":"date-time","example":"2023-03-21T15:01:17.310Z"}},"required":["value","ts"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}},"required":["values"],"additionalProperties":false},"requests":{"type":"object","properties":{"metricInfo":{"type":"object","properties":{"metricId":{"type":"string","enum":["cpu","memory","networkIngress","networkEgress","tcpConnectionsOpen","diskUsage","requests","http4xxResponses","http5xxResponses","bandwidth","bandwidthVolume"],"description":"Type of metric to fetch"},"metricUnit":{"type":"string","enum":["pct","vCPU","mb","kbps","rps","count"],"example":"pct"},"metricResolution":{"type":"number","format":"float","example":10}},"required":["metricId","metricUnit"],"additionalProperties":false},"values":{"type":"array","items":{"type":"object","properties":{"metadata":{"type":"object","properties":{"containerId":{"type":"string","example":"nginx-669cc865b7-5458n"},"volumeId":{"type":"string","example":"data-volume-1"}},"required":["containerId"],"additionalProperties":false},"data":{"type":"array","items":{"type":"object","properties":{"value":{"type":"number","format":"float","example":0.5},"ts":{"type":"string","format":"date-time","example":"2023-03-21T15:01:17.310Z"}},"required":["value","ts"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}},"required":["values"],"additionalProperties":false},"http4xxResponses":{"type":"object","properties":{"metricInfo":{"type":"object","properties":{"metricId":{"type":"string","enum":["cpu","memory","networkIngress","networkEgress","tcpConnectionsOpen","diskUsage","requests","http4xxResponses","http5xxResponses","bandwidth","bandwidthVolume"],"description":"Type of metric to fetch"},"metricUnit":{"type":"string","enum":["pct","vCPU","mb","kbps","rps","count"],"example":"pct"},"metricResolution":{"type":"number","format":"float","example":10}},"required":["metricId","metricUnit"],"additionalProperties":false},"values":{"type":"array","items":{"type":"object","properties":{"metadata":{"type":"object","properties":{"containerId":{"type":"string","example":"nginx-669cc865b7-5458n"},"volumeId":{"type":"string","example":"data-volume-1"}},"required":["containerId"],"additionalProperties":false},"data":{"type":"array","items":{"type":"object","properties":{"value":{"type":"number","format":"float","example":0.5},"ts":{"type":"string","format":"date-time","example":"2023-03-21T15:01:17.310Z"}},"required":["value","ts"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}},"required":["values"],"additionalProperties":false},"http5xxResponses":{"type":"object","properties":{"metricInfo":{"type":"object","properties":{"metricId":{"type":"string","enum":["cpu","memory","networkIngress","networkEgress","tcpConnectionsOpen","diskUsage","requests","http4xxResponses","http5xxResponses","bandwidth","bandwidthVolume"],"description":"Type of metric to fetch"},"metricUnit":{"type":"string","enum":["pct","vCPU","mb","kbps","rps","count"],"example":"pct"},"metricResolution":{"type":"number","format":"float","example":10}},"required":["metricId","metricUnit"],"additionalProperties":false},"values":{"type":"array","items":{"type":"object","properties":{"metadata":{"type":"object","properties":{"containerId":{"type":"string","example":"nginx-669cc865b7-5458n"},"volumeId":{"type":"string","example":"data-volume-1"}},"required":["containerId"],"additionalProperties":false},"data":{"type":"array","items":{"type":"object","properties":{"value":{"type":"number","format":"float","example":0.5},"ts":{"type":"string","format":"date-time","example":"2023-03-21T15:01:17.310Z"}},"required":["value","ts"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}},"required":["values"],"additionalProperties":false},"bandwidth":{"type":"object","properties":{"metricInfo":{"type":"object","properties":{"metricId":{"type":"string","enum":["cpu","memory","networkIngress","networkEgress","tcpConnectionsOpen","diskUsage","requests","http4xxResponses","http5xxResponses","bandwidth","bandwidthVolume"],"description":"Type of metric to fetch"},"metricUnit":{"type":"string","enum":["pct","vCPU","mb","kbps","rps","count"],"example":"pct"},"metricResolution":{"type":"number","format":"float","example":10}},"required":["metricId","metricUnit"],"additionalProperties":false},"values":{"type":"array","items":{"type":"object","properties":{"metadata":{"type":"object","properties":{"containerId":{"type":"string","example":"nginx-669cc865b7-5458n"},"volumeId":{"type":"string","example":"data-volume-1"}},"required":["containerId"],"additionalProperties":false},"data":{"type":"array","items":{"type":"object","properties":{"value":{"type":"number","format":"float","example":0.5},"ts":{"type":"string","format":"date-time","example":"2023-03-21T15:01:17.310Z"}},"required":["value","ts"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}},"required":["values"],"additionalProperties":false},"bandwidthVolume":{"type":"object","properties":{"metricInfo":{"type":"object","properties":{"metricId":{"type":"string","enum":["cpu","memory","networkIngress","networkEgress","tcpConnectionsOpen","diskUsage","requests","http4xxResponses","http5xxResponses","bandwidth","bandwidthVolume"],"description":"Type of metric to fetch"},"metricUnit":{"type":"string","enum":["pct","vCPU","mb","kbps","rps","count"],"example":"pct"},"metricResolution":{"type":"number","format":"float","example":10}},"required":["metricId","metricUnit"],"additionalProperties":false},"values":{"type":"array","items":{"type":"object","properties":{"metadata":{"type":"object","properties":{"containerId":{"type":"string","example":"nginx-669cc865b7-5458n"},"volumeId":{"type":"string","example":"data-volume-1"}},"required":["containerId"],"additionalProperties":false},"data":{"type":"array","items":{"type":"object","properties":{"value":{"type":"number","format":"float","example":0.5},"ts":{"type":"string","format":"date-time","example":"2023-03-21T15:01:17.310Z"}},"required":["value","ts"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}},"required":["values"],"additionalProperties":false}},"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Jobs","project"],"security":[],"x-nf-jsclient":[{"title":"Range","description":"Query over a range","schema":{"type":"object","properties":{"buildId":{"type":"string","description":"Selects metrics for specific build.","example":"fantastic-build-2345"},"metricTypes":{"type":"string","enum":["cpu","memory","networkIngress","networkEgress","tcpConnectionsOpen","diskUsage","requests","http4xxResponses","http5xxResponses","bandwidth","bandwidthVolume"],"description":"Type of metric. Multiple metric types can be selected by specifying the query parameter repeatedly."},"startTime":{"type":"string","format":"date-time","description":"Fetch metrics generated after this timestamp. Only valid for queryType: `range`.","example":"2023-02-16T14:00:00.000Z"},"endTime":{"type":"string","format":"date-time","description":"Fetch metrics generated before this timestamp. Only valid for queryType: `range`.","example":"2023-02-16T15:00:00.000Z"},"duration":{"type":"integer","description":"Range duration in seconds. If set, only one of `startTime` or `endTime` can be set.","example":600}},"additionalProperties":false},"x-nf-cli-command":["get","job","build-metrics-range"]},{"title":"Single","description":"Query a specific timestamp","schema":{"type":"object","properties":{"buildId":{"type":"string","description":"Selects metrics for specific build.","example":"fantastic-build-2345"},"metricTypes":{"type":"string","enum":["cpu","memory","networkIngress","networkEgress","tcpConnectionsOpen","diskUsage","requests","http4xxResponses","http5xxResponses","bandwidth","bandwidthVolume"],"description":"Type of metric. Multiple metric types can be selected by specifying the query parameter repeatedly."},"timestamp":{"type":"string","format":"date-time","description":"Fetch metrics at this timestamp. If not provided will use current time. Only valid for queryType: `single`.","example":"2023-02-16T14:00:00.000Z"}},"additionalProperties":false},"x-nf-cli-command":["get","job","build-metrics"]}],"x-nf-permission-required":"Project > Jobs > Deployment > View Instance Metrics","x-nf-team-scoped":true,"x-nf-cli-command":["get","job","build-metrics"]},"v1-projects--projectId--jobs--jobId--build-metrics-get-team-scoped":{"operationId":"getProjectsJobsJobidBuildMetrics","summary":"Get job build metrics","description":"Get metrics for a job build","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"jobId","type":"string","required":true,"description":"ID of the job","example":"example-job","in":"path","schema":{"name":"jobId","type":"string","required":true,"description":"ID of the job","example":"example-job","in":"path"}},{"name":"buildId","type":"string","description":"Selects metrics for specific build.","examples":["fantastic-build-2345","fantastic-build-2345"],"in":"query","schema":{"name":"buildId","type":"string","description":"Selects metrics for specific build.","examples":["fantastic-build-2345","fantastic-build-2345"],"in":"query"}},{"name":"queryType","type":"string","enum":["range","single"],"description":"Selects metrics for specified timestamp.","examples":["range","single"],"default":"single","in":"query","schema":{"name":"queryType","type":"string","enum":["range","single"],"description":"Selects metrics for specified timestamp.","examples":["range","single"],"default":"single","in":"query"}},{"name":"metricTypes","type":"string","enum":["cpu","memory","networkIngress","networkEgress","tcpConnectionsOpen","diskUsage","requests","http4xxResponses","http5xxResponses","bandwidth","bandwidthVolume"],"description":"Type of metric. Multiple metric types can be selected by specifying the query parameter repeatedly.","in":"query","schema":{"name":"metricTypes","type":"string","enum":["cpu","memory","networkIngress","networkEgress","tcpConnectionsOpen","diskUsage","requests","http4xxResponses","http5xxResponses","bandwidth","bandwidthVolume"],"description":"Type of metric. Multiple metric types can be selected by specifying the query parameter repeatedly.","in":"query"}},{"name":"startTime","type":"string","format":"date-time","description":"Fetch metrics generated after this timestamp. Only valid for queryType: `range`.","example":"2023-02-16T14:00:00.000Z","in":"query","schema":{"name":"startTime","type":"string","format":"date-time","description":"Fetch metrics generated after this timestamp. Only valid for queryType: `range`.","example":"2023-02-16T14:00:00.000Z","in":"query"}},{"name":"endTime","type":"string","format":"date-time","description":"Fetch metrics generated before this timestamp. Only valid for queryType: `range`.","example":"2023-02-16T15:00:00.000Z","in":"query","schema":{"name":"endTime","type":"string","format":"date-time","description":"Fetch metrics generated before this timestamp. Only valid for queryType: `range`.","example":"2023-02-16T15:00:00.000Z","in":"query"}},{"name":"duration","type":"integer","description":"Range duration in seconds. If set, only one of `startTime` or `endTime` can be set.","example":600,"in":"query","schema":{"name":"duration","type":"integer","description":"Range duration in seconds. If set, only one of `startTime` or `endTime` can be set.","example":600,"in":"query"}},{"name":"time","type":"string","format":"date-time","description":"Fetch metrics at this timestamp. If not provided will use current time. Only valid for queryType: `single`.","example":"2023-02-16T14:00:00.000Z","in":"query","schema":{"name":"time","type":"string","format":"date-time","description":"Fetch metrics at this timestamp. If not provided will use current time. Only valid for queryType: `single`.","example":"2023-02-16T14:00:00.000Z","in":"query"}}],"responses":{"200":{"description":"List of metrics values","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"cpu":{"type":"object","properties":{"metricInfo":{"type":"object","properties":{"metricId":{"type":"string","enum":["cpu","memory","networkIngress","networkEgress","tcpConnectionsOpen","diskUsage","requests","http4xxResponses","http5xxResponses","bandwidth","bandwidthVolume"],"description":"Type of metric to fetch"},"metricUnit":{"type":"string","enum":["pct","vCPU","mb","kbps","rps","count"],"example":"pct"},"metricResolution":{"type":"number","format":"float","example":10}},"required":["metricId","metricUnit"],"additionalProperties":false},"values":{"type":"array","items":{"type":"object","properties":{"metadata":{"type":"object","properties":{"containerId":{"type":"string","example":"nginx-669cc865b7-5458n"},"volumeId":{"type":"string","example":"data-volume-1"}},"required":["containerId"],"additionalProperties":false},"data":{"type":"array","items":{"type":"object","properties":{"value":{"type":"number","format":"float","example":0.5},"ts":{"type":"string","format":"date-time","example":"2023-03-21T15:01:17.310Z"}},"required":["value","ts"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}},"required":["values"],"additionalProperties":false},"memory":{"type":"object","properties":{"metricInfo":{"type":"object","properties":{"metricId":{"type":"string","enum":["cpu","memory","networkIngress","networkEgress","tcpConnectionsOpen","diskUsage","requests","http4xxResponses","http5xxResponses","bandwidth","bandwidthVolume"],"description":"Type of metric to fetch"},"metricUnit":{"type":"string","enum":["pct","vCPU","mb","kbps","rps","count"],"example":"pct"},"metricResolution":{"type":"number","format":"float","example":10}},"required":["metricId","metricUnit"],"additionalProperties":false},"values":{"type":"array","items":{"type":"object","properties":{"metadata":{"type":"object","properties":{"containerId":{"type":"string","example":"nginx-669cc865b7-5458n"},"volumeId":{"type":"string","example":"data-volume-1"}},"required":["containerId"],"additionalProperties":false},"data":{"type":"array","items":{"type":"object","properties":{"value":{"type":"number","format":"float","example":0.5},"ts":{"type":"string","format":"date-time","example":"2023-03-21T15:01:17.310Z"}},"required":["value","ts"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}},"required":["values"],"additionalProperties":false},"networkIngress":{"type":"object","properties":{"metricInfo":{"type":"object","properties":{"metricId":{"type":"string","enum":["cpu","memory","networkIngress","networkEgress","tcpConnectionsOpen","diskUsage","requests","http4xxResponses","http5xxResponses","bandwidth","bandwidthVolume"],"description":"Type of metric to fetch"},"metricUnit":{"type":"string","enum":["pct","vCPU","mb","kbps","rps","count"],"example":"pct"},"metricResolution":{"type":"number","format":"float","example":10}},"required":["metricId","metricUnit"],"additionalProperties":false},"values":{"type":"array","items":{"type":"object","properties":{"metadata":{"type":"object","properties":{"containerId":{"type":"string","example":"nginx-669cc865b7-5458n"},"volumeId":{"type":"string","example":"data-volume-1"}},"required":["containerId"],"additionalProperties":false},"data":{"type":"array","items":{"type":"object","properties":{"value":{"type":"number","format":"float","example":0.5},"ts":{"type":"string","format":"date-time","example":"2023-03-21T15:01:17.310Z"}},"required":["value","ts"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}},"required":["values"],"additionalProperties":false},"networkEgress":{"type":"object","properties":{"metricInfo":{"type":"object","properties":{"metricId":{"type":"string","enum":["cpu","memory","networkIngress","networkEgress","tcpConnectionsOpen","diskUsage","requests","http4xxResponses","http5xxResponses","bandwidth","bandwidthVolume"],"description":"Type of metric to fetch"},"metricUnit":{"type":"string","enum":["pct","vCPU","mb","kbps","rps","count"],"example":"pct"},"metricResolution":{"type":"number","format":"float","example":10}},"required":["metricId","metricUnit"],"additionalProperties":false},"values":{"type":"array","items":{"type":"object","properties":{"metadata":{"type":"object","properties":{"containerId":{"type":"string","example":"nginx-669cc865b7-5458n"},"volumeId":{"type":"string","example":"data-volume-1"}},"required":["containerId"],"additionalProperties":false},"data":{"type":"array","items":{"type":"object","properties":{"value":{"type":"number","format":"float","example":0.5},"ts":{"type":"string","format":"date-time","example":"2023-03-21T15:01:17.310Z"}},"required":["value","ts"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}},"required":["values"],"additionalProperties":false},"tcpConnectionsOpen":{"type":"object","properties":{"metricInfo":{"type":"object","properties":{"metricId":{"type":"string","enum":["cpu","memory","networkIngress","networkEgress","tcpConnectionsOpen","diskUsage","requests","http4xxResponses","http5xxResponses","bandwidth","bandwidthVolume"],"description":"Type of metric to fetch"},"metricUnit":{"type":"string","enum":["pct","vCPU","mb","kbps","rps","count"],"example":"pct"},"metricResolution":{"type":"number","format":"float","example":10}},"required":["metricId","metricUnit"],"additionalProperties":false},"values":{"type":"array","items":{"type":"object","properties":{"metadata":{"type":"object","properties":{"containerId":{"type":"string","example":"nginx-669cc865b7-5458n"},"volumeId":{"type":"string","example":"data-volume-1"}},"required":["containerId"],"additionalProperties":false},"data":{"type":"array","items":{"type":"object","properties":{"value":{"type":"number","format":"float","example":0.5},"ts":{"type":"string","format":"date-time","example":"2023-03-21T15:01:17.310Z"}},"required":["value","ts"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}},"required":["values"],"additionalProperties":false},"diskUsage":{"type":"object","properties":{"metricInfo":{"type":"object","properties":{"metricId":{"type":"string","enum":["cpu","memory","networkIngress","networkEgress","tcpConnectionsOpen","diskUsage","requests","http4xxResponses","http5xxResponses","bandwidth","bandwidthVolume"],"description":"Type of metric to fetch"},"metricUnit":{"type":"string","enum":["pct","vCPU","mb","kbps","rps","count"],"example":"pct"},"metricResolution":{"type":"number","format":"float","example":10}},"required":["metricId","metricUnit"],"additionalProperties":false},"values":{"type":"array","items":{"type":"object","properties":{"metadata":{"type":"object","properties":{"containerId":{"type":"string","example":"nginx-669cc865b7-5458n"},"volumeId":{"type":"string","example":"data-volume-1"}},"required":["containerId"],"additionalProperties":false},"data":{"type":"array","items":{"type":"object","properties":{"value":{"type":"number","format":"float","example":0.5},"ts":{"type":"string","format":"date-time","example":"2023-03-21T15:01:17.310Z"}},"required":["value","ts"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}},"required":["values"],"additionalProperties":false},"requests":{"type":"object","properties":{"metricInfo":{"type":"object","properties":{"metricId":{"type":"string","enum":["cpu","memory","networkIngress","networkEgress","tcpConnectionsOpen","diskUsage","requests","http4xxResponses","http5xxResponses","bandwidth","bandwidthVolume"],"description":"Type of metric to fetch"},"metricUnit":{"type":"string","enum":["pct","vCPU","mb","kbps","rps","count"],"example":"pct"},"metricResolution":{"type":"number","format":"float","example":10}},"required":["metricId","metricUnit"],"additionalProperties":false},"values":{"type":"array","items":{"type":"object","properties":{"metadata":{"type":"object","properties":{"containerId":{"type":"string","example":"nginx-669cc865b7-5458n"},"volumeId":{"type":"string","example":"data-volume-1"}},"required":["containerId"],"additionalProperties":false},"data":{"type":"array","items":{"type":"object","properties":{"value":{"type":"number","format":"float","example":0.5},"ts":{"type":"string","format":"date-time","example":"2023-03-21T15:01:17.310Z"}},"required":["value","ts"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}},"required":["values"],"additionalProperties":false},"http4xxResponses":{"type":"object","properties":{"metricInfo":{"type":"object","properties":{"metricId":{"type":"string","enum":["cpu","memory","networkIngress","networkEgress","tcpConnectionsOpen","diskUsage","requests","http4xxResponses","http5xxResponses","bandwidth","bandwidthVolume"],"description":"Type of metric to fetch"},"metricUnit":{"type":"string","enum":["pct","vCPU","mb","kbps","rps","count"],"example":"pct"},"metricResolution":{"type":"number","format":"float","example":10}},"required":["metricId","metricUnit"],"additionalProperties":false},"values":{"type":"array","items":{"type":"object","properties":{"metadata":{"type":"object","properties":{"containerId":{"type":"string","example":"nginx-669cc865b7-5458n"},"volumeId":{"type":"string","example":"data-volume-1"}},"required":["containerId"],"additionalProperties":false},"data":{"type":"array","items":{"type":"object","properties":{"value":{"type":"number","format":"float","example":0.5},"ts":{"type":"string","format":"date-time","example":"2023-03-21T15:01:17.310Z"}},"required":["value","ts"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}},"required":["values"],"additionalProperties":false},"http5xxResponses":{"type":"object","properties":{"metricInfo":{"type":"object","properties":{"metricId":{"type":"string","enum":["cpu","memory","networkIngress","networkEgress","tcpConnectionsOpen","diskUsage","requests","http4xxResponses","http5xxResponses","bandwidth","bandwidthVolume"],"description":"Type of metric to fetch"},"metricUnit":{"type":"string","enum":["pct","vCPU","mb","kbps","rps","count"],"example":"pct"},"metricResolution":{"type":"number","format":"float","example":10}},"required":["metricId","metricUnit"],"additionalProperties":false},"values":{"type":"array","items":{"type":"object","properties":{"metadata":{"type":"object","properties":{"containerId":{"type":"string","example":"nginx-669cc865b7-5458n"},"volumeId":{"type":"string","example":"data-volume-1"}},"required":["containerId"],"additionalProperties":false},"data":{"type":"array","items":{"type":"object","properties":{"value":{"type":"number","format":"float","example":0.5},"ts":{"type":"string","format":"date-time","example":"2023-03-21T15:01:17.310Z"}},"required":["value","ts"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}},"required":["values"],"additionalProperties":false},"bandwidth":{"type":"object","properties":{"metricInfo":{"type":"object","properties":{"metricId":{"type":"string","enum":["cpu","memory","networkIngress","networkEgress","tcpConnectionsOpen","diskUsage","requests","http4xxResponses","http5xxResponses","bandwidth","bandwidthVolume"],"description":"Type of metric to fetch"},"metricUnit":{"type":"string","enum":["pct","vCPU","mb","kbps","rps","count"],"example":"pct"},"metricResolution":{"type":"number","format":"float","example":10}},"required":["metricId","metricUnit"],"additionalProperties":false},"values":{"type":"array","items":{"type":"object","properties":{"metadata":{"type":"object","properties":{"containerId":{"type":"string","example":"nginx-669cc865b7-5458n"},"volumeId":{"type":"string","example":"data-volume-1"}},"required":["containerId"],"additionalProperties":false},"data":{"type":"array","items":{"type":"object","properties":{"value":{"type":"number","format":"float","example":0.5},"ts":{"type":"string","format":"date-time","example":"2023-03-21T15:01:17.310Z"}},"required":["value","ts"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}},"required":["values"],"additionalProperties":false},"bandwidthVolume":{"type":"object","properties":{"metricInfo":{"type":"object","properties":{"metricId":{"type":"string","enum":["cpu","memory","networkIngress","networkEgress","tcpConnectionsOpen","diskUsage","requests","http4xxResponses","http5xxResponses","bandwidth","bandwidthVolume"],"description":"Type of metric to fetch"},"metricUnit":{"type":"string","enum":["pct","vCPU","mb","kbps","rps","count"],"example":"pct"},"metricResolution":{"type":"number","format":"float","example":10}},"required":["metricId","metricUnit"],"additionalProperties":false},"values":{"type":"array","items":{"type":"object","properties":{"metadata":{"type":"object","properties":{"containerId":{"type":"string","example":"nginx-669cc865b7-5458n"},"volumeId":{"type":"string","example":"data-volume-1"}},"required":["containerId"],"additionalProperties":false},"data":{"type":"array","items":{"type":"object","properties":{"value":{"type":"number","format":"float","example":0.5},"ts":{"type":"string","format":"date-time","example":"2023-03-21T15:01:17.310Z"}},"required":["value","ts"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}},"required":["values"],"additionalProperties":false}},"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Jobs","project"],"security":[],"x-nf-jsclient":[{"title":"Range","description":"Query over a range","schema":{"type":"object","properties":{"buildId":{"type":"string","description":"Selects metrics for specific build.","example":"fantastic-build-2345"},"metricTypes":{"type":"string","enum":["cpu","memory","networkIngress","networkEgress","tcpConnectionsOpen","diskUsage","requests","http4xxResponses","http5xxResponses","bandwidth","bandwidthVolume"],"description":"Type of metric. Multiple metric types can be selected by specifying the query parameter repeatedly."},"startTime":{"type":"string","format":"date-time","description":"Fetch metrics generated after this timestamp. Only valid for queryType: `range`.","example":"2023-02-16T14:00:00.000Z"},"endTime":{"type":"string","format":"date-time","description":"Fetch metrics generated before this timestamp. Only valid for queryType: `range`.","example":"2023-02-16T15:00:00.000Z"},"duration":{"type":"integer","description":"Range duration in seconds. If set, only one of `startTime` or `endTime` can be set.","example":600}},"additionalProperties":false},"x-nf-cli-command":["get","job","build-metrics-range"]},{"title":"Single","description":"Query a specific timestamp","schema":{"type":"object","properties":{"buildId":{"type":"string","description":"Selects metrics for specific build.","example":"fantastic-build-2345"},"metricTypes":{"type":"string","enum":["cpu","memory","networkIngress","networkEgress","tcpConnectionsOpen","diskUsage","requests","http4xxResponses","http5xxResponses","bandwidth","bandwidthVolume"],"description":"Type of metric. Multiple metric types can be selected by specifying the query parameter repeatedly."},"timestamp":{"type":"string","format":"date-time","description":"Fetch metrics at this timestamp. If not provided will use current time. Only valid for queryType: `single`.","example":"2023-02-16T14:00:00.000Z"}},"additionalProperties":false},"x-nf-cli-command":["get","job","build-metrics"]}],"x-nf-permission-required":"Project > Jobs > Deployment > View Instance Metrics","x-nf-team-scoped":true,"x-nf-cli-command":["get","job","build-metrics"]},"v1-projects--projectId--jobs--jobId--build-options-post":{"operationId":"postProjectsJobsJobidBuildOptions","summary":"Update job build options","description":"Updates the build options for a given job.","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"jobId","type":"string","required":true,"description":"ID of the job","example":"example-job","in":"path","schema":{"name":"jobId","type":"string","required":true,"description":"ID of the job","example":"example-job","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Jobs","project"],"security":[],"deprecated":true,"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"dockerfile":{"type":"object","properties":{"buildEngine":{"type":"string","enum":["buildkit","kaniko"],"description":"Build engine to use. Defaults to recommended build engine `buildkit`","example":"buildkit"},"dockerFilePath":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]+$","description":"The file path of the Dockerfile.","example":"/Dockerfile"},"dockerWorkDir":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*$","description":"The working directory of the Dockerfile.","example":"/"},"buildkit":{"type":"object","properties":{"useCache":{"type":"boolean","description":"Use persistent storage to cache build layers.","default":false},"cacheStorageSize":{"type":"integer","description":"The amount of persistent storage available to each build in MB."},"useInternalCache":{"type":"boolean","description":"DEPRECATED: This field will be removed in the near future.","default":false},"internalCacheStorage":{"type":"integer","description":"DEPRECATED: This field will be removed in the near future."}},"additionalProperties":false}},"additionalProperties":false},"pathIgnoreRules":{"type":"array","items":{"type":"string","maxLength":260,"description":"A path ignore rule, following `.gitignore` syntax. For example, `*.md` will ignore all files ending with `.md`.","example":"README.md"},"maxItems":200,"description":"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."},"isAllowList":{"type":"boolean","description":"If `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`.","example":false},"ciIgnoreFlagsEnabled":{"type":"boolean","description":"If `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":{"type":"array","items":{"type":"string","maxLength":72,"description":"A commit ignore flag.","example":"[skip ci]"},"maxItems":200,"description":"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]\"]`","example":["[skip ci]","[ci skip]","[no ci]","[skip nf]","[nf skip]","[northflank skip]","[skip northflank]"]},"dockerfileTarget":{"type":"string","description":"If your Dockerfile contains multiple build stages, you can specify the target stage by entering its name here."},"dockerCredentials":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The ID of the docker credentials to use.","example":"example-docker-credential"}},"includeGitFolder":{"type":"boolean","description":"Include .git folder inside the build context"},"fullGitClone":{"type":"boolean","description":"Include the entire git history as part of the .git folder. Only relevant if \"includeGitFolder\" is set."},"enableGitLfs":{"type":"boolean","description":"Enable Git LFS support for the build"},"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false}},"required":["dockerfile"],"additionalProperties":false,"description":"Build from a Dockerfile"},{"type":"object","properties":{"buildpack":{"type":"object","properties":{"builder":{"type":"string","enum":["HEROKU_24","HEROKU_22","HEROKU_22_CLASSIC","HEROKU_20","HEROKU_18","GOOGLE_22","GOOGLE_V1","CNB_ALPINE","CNB_BIONIC","PAKETO_JAMMY_TINY","PAKETO_JAMMY_BASE","PAKETO_JAMMY_FULL","PAKETO_TINY","PAKETO_BASE","PAKETO_FULL"],"description":"Buildpack stack to use. Defaults to recommended stack `HEROKU_24`.","example":"HEROKU_24"},"buildpackLocators":{"type":"array","items":{"type":"string","description":"Url or registry identifier of custom buildpack.","example":"https://buildpack-registry.heroku.com/cnb/mars/create-react-app"},"description":"Array of custom buildpacks to use."},"buildContext":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*$","description":"The working directory to build in.","example":"/"},"useCache":{"type":"boolean","description":"Should build dependencies be cached?","example":false}},"additionalProperties":false},"pathIgnoreRules":{"type":"array","items":{"type":"string","maxLength":260,"description":"A path ignore rule, following `.gitignore` syntax. For example, `*.md` will ignore all files ending with `.md`.","example":"README.md"},"maxItems":200,"description":"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."},"isAllowList":{"type":"boolean","description":"If `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`.","example":false},"ciIgnoreFlagsEnabled":{"type":"boolean","description":"If `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":{"type":"array","items":{"type":"string","maxLength":72,"description":"A commit ignore flag.","example":"[skip ci]"},"maxItems":200,"description":"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]\"]`","example":["[skip ci]","[ci skip]","[no ci]","[skip nf]","[nf skip]","[northflank skip]","[skip northflank]"]}},"required":["buildpack"],"additionalProperties":false,"description":"Build from a Buildpack"},{"type":"object","properties":{"pathIgnoreRules":{"type":"array","items":{"type":"string","maxLength":260,"description":"A path ignore rule, following `.gitignore` syntax. For example, `*.md` will ignore all files ending with `.md`.","example":"README.md"},"maxItems":200,"description":"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."},"isAllowList":{"type":"boolean","description":"If `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`.","example":false},"ciIgnoreFlagsEnabled":{"type":"boolean","description":"If `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":{"type":"array","items":{"type":"string","maxLength":72,"description":"A commit ignore flag.","example":"[skip ci]"},"maxItems":200,"description":"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]\"]`","example":["[skip ci]","[ci skip]","[no ci]","[skip nf]","[nf skip]","[northflank skip]","[skip northflank]"]},"dockerfileTarget":{"type":"string","description":"If your Dockerfile contains multiple build stages, you can specify the target stage by entering its name here."},"dockerCredentials":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The ID of the docker credentials to use.","example":"example-docker-credential"}},"includeGitFolder":{"type":"boolean","description":"Include .git folder inside the build context"},"fullGitClone":{"type":"boolean","description":"Include the entire git history as part of the .git folder. Only relevant if \"includeGitFolder\" is set."},"enableGitLfs":{"type":"boolean","description":"Enable Git LFS support for the build"},"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false}},"additionalProperties":false,"description":"Don't modify build type settings"}],"description":"Update job build settings"}}},"required":true},"x-nf-permission-required":"Project > Jobs > General > Update","x-nf-team-scoped":true,"x-nf-cli-command":["update","job","build-options"],"x-nf-deprecation-replacement":"/jobs/patch-job","x-nf-deprecation-message":"Requests should instead use the relevant PATCH endpoint."},"v1-projects--projectId--jobs--jobId--build-options-post-team-scoped":{"operationId":"postProjectsJobsJobidBuildOptions","summary":"Update job build options","description":"Updates the build options for a given job.","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"jobId","type":"string","required":true,"description":"ID of the job","example":"example-job","in":"path","schema":{"name":"jobId","type":"string","required":true,"description":"ID of the job","example":"example-job","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Jobs","project"],"security":[],"deprecated":true,"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"dockerfile":{"type":"object","properties":{"buildEngine":{"type":"string","enum":["buildkit","kaniko"],"description":"Build engine to use. Defaults to recommended build engine `buildkit`","example":"buildkit"},"dockerFilePath":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]+$","description":"The file path of the Dockerfile.","example":"/Dockerfile"},"dockerWorkDir":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*$","description":"The working directory of the Dockerfile.","example":"/"},"buildkit":{"type":"object","properties":{"useCache":{"type":"boolean","description":"Use persistent storage to cache build layers.","default":false},"cacheStorageSize":{"type":"integer","description":"The amount of persistent storage available to each build in MB."},"useInternalCache":{"type":"boolean","description":"DEPRECATED: This field will be removed in the near future.","default":false},"internalCacheStorage":{"type":"integer","description":"DEPRECATED: This field will be removed in the near future."}},"additionalProperties":false}},"additionalProperties":false},"pathIgnoreRules":{"type":"array","items":{"type":"string","maxLength":260,"description":"A path ignore rule, following `.gitignore` syntax. For example, `*.md` will ignore all files ending with `.md`.","example":"README.md"},"maxItems":200,"description":"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."},"isAllowList":{"type":"boolean","description":"If `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`.","example":false},"ciIgnoreFlagsEnabled":{"type":"boolean","description":"If `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":{"type":"array","items":{"type":"string","maxLength":72,"description":"A commit ignore flag.","example":"[skip ci]"},"maxItems":200,"description":"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]\"]`","example":["[skip ci]","[ci skip]","[no ci]","[skip nf]","[nf skip]","[northflank skip]","[skip northflank]"]},"dockerfileTarget":{"type":"string","description":"If your Dockerfile contains multiple build stages, you can specify the target stage by entering its name here."},"dockerCredentials":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The ID of the docker credentials to use.","example":"example-docker-credential"}},"includeGitFolder":{"type":"boolean","description":"Include .git folder inside the build context"},"fullGitClone":{"type":"boolean","description":"Include the entire git history as part of the .git folder. Only relevant if \"includeGitFolder\" is set."},"enableGitLfs":{"type":"boolean","description":"Enable Git LFS support for the build"},"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false}},"required":["dockerfile"],"additionalProperties":false,"description":"Build from a Dockerfile"},{"type":"object","properties":{"buildpack":{"type":"object","properties":{"builder":{"type":"string","enum":["HEROKU_24","HEROKU_22","HEROKU_22_CLASSIC","HEROKU_20","HEROKU_18","GOOGLE_22","GOOGLE_V1","CNB_ALPINE","CNB_BIONIC","PAKETO_JAMMY_TINY","PAKETO_JAMMY_BASE","PAKETO_JAMMY_FULL","PAKETO_TINY","PAKETO_BASE","PAKETO_FULL"],"description":"Buildpack stack to use. Defaults to recommended stack `HEROKU_24`.","example":"HEROKU_24"},"buildpackLocators":{"type":"array","items":{"type":"string","description":"Url or registry identifier of custom buildpack.","example":"https://buildpack-registry.heroku.com/cnb/mars/create-react-app"},"description":"Array of custom buildpacks to use."},"buildContext":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*$","description":"The working directory to build in.","example":"/"},"useCache":{"type":"boolean","description":"Should build dependencies be cached?","example":false}},"additionalProperties":false},"pathIgnoreRules":{"type":"array","items":{"type":"string","maxLength":260,"description":"A path ignore rule, following `.gitignore` syntax. For example, `*.md` will ignore all files ending with `.md`.","example":"README.md"},"maxItems":200,"description":"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."},"isAllowList":{"type":"boolean","description":"If `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`.","example":false},"ciIgnoreFlagsEnabled":{"type":"boolean","description":"If `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":{"type":"array","items":{"type":"string","maxLength":72,"description":"A commit ignore flag.","example":"[skip ci]"},"maxItems":200,"description":"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]\"]`","example":["[skip ci]","[ci skip]","[no ci]","[skip nf]","[nf skip]","[northflank skip]","[skip northflank]"]}},"required":["buildpack"],"additionalProperties":false,"description":"Build from a Buildpack"},{"type":"object","properties":{"pathIgnoreRules":{"type":"array","items":{"type":"string","maxLength":260,"description":"A path ignore rule, following `.gitignore` syntax. For example, `*.md` will ignore all files ending with `.md`.","example":"README.md"},"maxItems":200,"description":"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."},"isAllowList":{"type":"boolean","description":"If `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`.","example":false},"ciIgnoreFlagsEnabled":{"type":"boolean","description":"If `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":{"type":"array","items":{"type":"string","maxLength":72,"description":"A commit ignore flag.","example":"[skip ci]"},"maxItems":200,"description":"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]\"]`","example":["[skip ci]","[ci skip]","[no ci]","[skip nf]","[nf skip]","[northflank skip]","[skip northflank]"]},"dockerfileTarget":{"type":"string","description":"If your Dockerfile contains multiple build stages, you can specify the target stage by entering its name here."},"dockerCredentials":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The ID of the docker credentials to use.","example":"example-docker-credential"}},"includeGitFolder":{"type":"boolean","description":"Include .git folder inside the build context"},"fullGitClone":{"type":"boolean","description":"Include the entire git history as part of the .git folder. Only relevant if \"includeGitFolder\" is set."},"enableGitLfs":{"type":"boolean","description":"Enable Git LFS support for the build"},"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false}},"additionalProperties":false,"description":"Don't modify build type settings"}],"description":"Update job build settings"}}},"required":true},"x-nf-permission-required":"Project > Jobs > General > Update","x-nf-team-scoped":true,"x-nf-cli-command":["update","job","build-options"],"x-nf-deprecation-replacement":"/jobs/patch-job","x-nf-deprecation-message":"Requests should instead use the relevant PATCH endpoint."},"v1-projects--projectId--jobs--jobId--build-source-post":{"operationId":"postProjectsJobsJobidBuildSource","summary":"Update job build source","description":"Updates the version control source for a given job.","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"jobId","type":"string","required":true,"description":"ID of the job","example":"example-job","in":"path","schema":{"name":"jobId","type":"string","required":true,"description":"ID of the job","example":"example-job","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Jobs","project"],"security":[],"deprecated":true,"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"projectUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo to build.","example":"https://github.com/northflank/gatsby-with-northflank"},"projectType":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"projectBranch":{"type":"string","description":"The name of the branch to use.","example":"master"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"}},"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Project > Jobs > General > Update","x-nf-team-scoped":true,"x-nf-cli-command":["update","job","build-source"],"x-nf-deprecation-replacement":"/jobs/patch-job","x-nf-deprecation-message":"Requests should instead use the relevant PATCH endpoint."},"v1-projects--projectId--jobs--jobId--build-source-post-team-scoped":{"operationId":"postProjectsJobsJobidBuildSource","summary":"Update job build source","description":"Updates the version control source for a given job.","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"jobId","type":"string","required":true,"description":"ID of the job","example":"example-job","in":"path","schema":{"name":"jobId","type":"string","required":true,"description":"ID of the job","example":"example-job","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Jobs","project"],"security":[],"deprecated":true,"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"projectUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo to build.","example":"https://github.com/northflank/gatsby-with-northflank"},"projectType":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"projectBranch":{"type":"string","description":"The name of the branch to use.","example":"master"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"}},"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Project > Jobs > General > Update","x-nf-team-scoped":true,"x-nf-cli-command":["update","job","build-source"],"x-nf-deprecation-replacement":"/jobs/patch-job","x-nf-deprecation-message":"Requests should instead use the relevant PATCH endpoint."},"v1-projects--projectId--jobs--jobId--build--buildId--get":{"operationId":"getProjectsJobsJobidBuildBuildid","summary":"Get job build","description":"Gets information about a build for the job","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"jobId","type":"string","required":true,"description":"ID of the job","example":"example-job","in":"path","schema":{"name":"jobId","type":"string","required":true,"description":"ID of the job","example":"example-job","in":"path"}},{"name":"buildId","type":"string","required":true,"description":"ID of the job build","example":"joyous-view-6290","in":"path","schema":{"name":"buildId","type":"string","required":true,"description":"ID of the job build","example":"joyous-view-6290","in":"path"}}],"responses":{"200":{"description":"Returns data about the specified build.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","description":"ID of the build.","example":"joyous-view-6290"},"branch":{"type":"string","description":"Name of the branch the built commit belongs to.","example":"main"},"pullRequestId":{"type":"number","format":"float","nullable":true,"description":"ID of the pull request the commit belongs to."},"status":{"type":"string","enum":["QUEUED","PENDING","UNSCHEDULABLE","STARTING","CLONING","BUILDING","UPLOADING","ABORTED","FAILURE","SUBMISSION_FAILURE","SUCCESS","CRASHED","IN_PROGRESS"],"description":"The status of the build.","example":"SUCCESS"},"sha":{"type":"string","description":"The sha of the built commit.","example":"12c15e7ee25fd78f567ebf87f9178b8ad70025b3"},"registry":{"type":"object","properties":{"uri":{"type":"string","description":"URI of that can be used to pull the image from the registry"}},"additionalProperties":false},"concluded":{"type":"boolean","description":"Whether the build has finished.","example":true},"createdAt":{"type":"string","description":"Timestamp of the build initiation.","example":"2021-07-28T15:55:38.296Z"},"success":{"type":"boolean","description":"Whether the build was successful.","example":true},"message":{"type":"string","nullable":true,"description":"Description of the build status.","example":"Image successfully built"},"buildConcludedAt":{"type":"number","format":"float","description":"Timestamp of the build concluding.","example":1606237973}},"required":["id"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Jobs","project"],"security":[],"x-nf-permission-required":"Project > Jobs > Deployment > Deploy Build","x-nf-team-scoped":true,"x-nf-cli-command":["get","job","build"]},"v1-projects--projectId--jobs--jobId--build--buildId--get-team-scoped":{"operationId":"getProjectsJobsJobidBuildBuildid","summary":"Get job build","description":"Gets information about a build for the job","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"jobId","type":"string","required":true,"description":"ID of the job","example":"example-job","in":"path","schema":{"name":"jobId","type":"string","required":true,"description":"ID of the job","example":"example-job","in":"path"}},{"name":"buildId","type":"string","required":true,"description":"ID of the job build","example":"joyous-view-6290","in":"path","schema":{"name":"buildId","type":"string","required":true,"description":"ID of the job build","example":"joyous-view-6290","in":"path"}}],"responses":{"200":{"description":"Returns data about the specified build.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","description":"ID of the build.","example":"joyous-view-6290"},"branch":{"type":"string","description":"Name of the branch the built commit belongs to.","example":"main"},"pullRequestId":{"type":"number","format":"float","nullable":true,"description":"ID of the pull request the commit belongs to."},"status":{"type":"string","enum":["QUEUED","PENDING","UNSCHEDULABLE","STARTING","CLONING","BUILDING","UPLOADING","ABORTED","FAILURE","SUBMISSION_FAILURE","SUCCESS","CRASHED","IN_PROGRESS"],"description":"The status of the build.","example":"SUCCESS"},"sha":{"type":"string","description":"The sha of the built commit.","example":"12c15e7ee25fd78f567ebf87f9178b8ad70025b3"},"registry":{"type":"object","properties":{"uri":{"type":"string","description":"URI of that can be used to pull the image from the registry"}},"additionalProperties":false},"concluded":{"type":"boolean","description":"Whether the build has finished.","example":true},"createdAt":{"type":"string","description":"Timestamp of the build initiation.","example":"2021-07-28T15:55:38.296Z"},"success":{"type":"boolean","description":"Whether the build was successful.","example":true},"message":{"type":"string","nullable":true,"description":"Description of the build status.","example":"Image successfully built"},"buildConcludedAt":{"type":"number","format":"float","description":"Timestamp of the build concluding.","example":1606237973}},"required":["id"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Jobs","project"],"security":[],"x-nf-permission-required":"Project > Jobs > Deployment > Deploy Build","x-nf-team-scoped":true,"x-nf-cli-command":["get","job","build"]},"v1-projects--projectId--jobs--jobId--build--buildId--delete":{"operationId":"deleteProjectsJobsJobidBuildBuildid","summary":"Abort job build","description":"Aborts the given job build","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"jobId","type":"string","required":true,"description":"ID of the job","example":"example-job","in":"path","schema":{"name":"jobId","type":"string","required":true,"description":"ID of the job","example":"example-job","in":"path"}},{"name":"buildId","type":"string","required":true,"description":"ID of the job build","example":"joyous-view-6290","in":"path","schema":{"name":"buildId","type":"string","required":true,"description":"ID of the job build","example":"joyous-view-6290","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Jobs","project"],"security":[],"x-nf-permission-required":"Project > Jobs > Deployment > Deploy Build","x-nf-team-scoped":true,"x-nf-cli-command":["abort","job","build"]},"v1-projects--projectId--jobs--jobId--build--buildId--delete-team-scoped":{"operationId":"deleteProjectsJobsJobidBuildBuildid","summary":"Abort job build","description":"Aborts the given job build","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"jobId","type":"string","required":true,"description":"ID of the job","example":"example-job","in":"path","schema":{"name":"jobId","type":"string","required":true,"description":"ID of the job","example":"example-job","in":"path"}},{"name":"buildId","type":"string","required":true,"description":"ID of the job build","example":"joyous-view-6290","in":"path","schema":{"name":"buildId","type":"string","required":true,"description":"ID of the job build","example":"joyous-view-6290","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Jobs","project"],"security":[],"x-nf-permission-required":"Project > Jobs > Deployment > Deploy Build","x-nf-team-scoped":true,"x-nf-cli-command":["abort","job","build"]},"v1-projects--projectId--jobs--jobId--containers-get":{"operationId":"getProjectsJobsJobidContainers","summary":"List job containers","description":"Gets a list of containers for the given job.","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"jobId","type":"string","required":true,"description":"ID of the job","example":"example-job","in":"path","schema":{"name":"jobId","type":"string","required":true,"description":"ID of the job","example":"example-job","in":"path"}},{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query","schema":{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query"}},{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query","schema":{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query"}},{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query","schema":{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query"}},{"name":"runId","type":"string","description":"If provided, only returns containers for this specific job run.","example":"00000676-9be8-41dd-b0f7-ba7df935cf27","in":"query","schema":{"name":"runId","type":"string","description":"If provided, only returns containers for this specific job run.","example":"00000676-9be8-41dd-b0f7-ba7df935cf27","in":"query"}}],"responses":{"200":{"description":"Details about the job's containers.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"containers":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"The name of the container.","example":"example-service-78b4d4459d-sbtn8"},"createdAt":{"type":"integer","minimum":1,"description":"The timestamp the container was created.","example":1611241087},"status":{"type":"string","enum":["TASK_RUNNING","TASK_STARTING","TASK_STAGING","TASK_KILLING","TASK_KILLED","TASK_FAILED","TASK_FINISHED"],"description":"The current status of the container.","example":"TASK_RUNNING"},"nodeName":{"type":"string","description":"BYOC only: the name of the node the container was scheduled to"},"nodePoolUserId":{"type":"string","description":"BYOC only: the user facing ID of the node pool that the container was scheduled to"},"nodePoolProviderId":{"type":"string","description":"BYOC only: the provider facing ID of the node pool that the container was scheduled to"},"host":{"type":"string","description":"BYOC only: the host address of the node the container was scheduled to"},"ipAddresses":{"type":"array","items":{"type":"string"},"description":"BYOC only: the IP addresses mapping to the container"},"updatedAt":{"type":"integer","minimum":1,"description":"The timestamp the container was last updated.","example":1611241087}},"required":["name","createdAt","status","updatedAt"],"additionalProperties":false,"description":"Data about a container."}},"runId":{"type":"string","description":"The id of the associated job run.","example":"00000676-9be8-41dd-b0f7-ba7df935cf27"}},"required":["runId"],"additionalProperties":false,"description":"Result data."},"pagination":{"type":"object","properties":{"hasNextPage":{"type":"boolean","description":"Is there another page of results available?","example":false},"cursor":{"type":"string","description":"The cursor to access the next page of results."},"count":{"type":"number","format":"float","description":"The number of results returned by this request.","example":1}},"required":["hasNextPage","count"],"additionalProperties":false,"description":"Data about the endpoint pagination."}},"required":["data","pagination"],"additionalProperties":false,"description":"Response object."}}},"tags":["Jobs","project"],"security":[],"x-nf-permission-required":"Project > Jobs > Deployment > View Instance Logs","x-nf-team-scoped":true,"x-nf-cli-command":["get","job","containers"]},"v1-projects--projectId--jobs--jobId--containers-get-team-scoped":{"operationId":"getProjectsJobsJobidContainers","summary":"List job containers","description":"Gets a list of containers for the given job.","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"jobId","type":"string","required":true,"description":"ID of the job","example":"example-job","in":"path","schema":{"name":"jobId","type":"string","required":true,"description":"ID of the job","example":"example-job","in":"path"}},{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query","schema":{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query"}},{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query","schema":{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query"}},{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query","schema":{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query"}},{"name":"runId","type":"string","description":"If provided, only returns containers for this specific job run.","example":"00000676-9be8-41dd-b0f7-ba7df935cf27","in":"query","schema":{"name":"runId","type":"string","description":"If provided, only returns containers for this specific job run.","example":"00000676-9be8-41dd-b0f7-ba7df935cf27","in":"query"}}],"responses":{"200":{"description":"Details about the job's containers.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"containers":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"The name of the container.","example":"example-service-78b4d4459d-sbtn8"},"createdAt":{"type":"integer","minimum":1,"description":"The timestamp the container was created.","example":1611241087},"status":{"type":"string","enum":["TASK_RUNNING","TASK_STARTING","TASK_STAGING","TASK_KILLING","TASK_KILLED","TASK_FAILED","TASK_FINISHED"],"description":"The current status of the container.","example":"TASK_RUNNING"},"nodeName":{"type":"string","description":"BYOC only: the name of the node the container was scheduled to"},"nodePoolUserId":{"type":"string","description":"BYOC only: the user facing ID of the node pool that the container was scheduled to"},"nodePoolProviderId":{"type":"string","description":"BYOC only: the provider facing ID of the node pool that the container was scheduled to"},"host":{"type":"string","description":"BYOC only: the host address of the node the container was scheduled to"},"ipAddresses":{"type":"array","items":{"type":"string"},"description":"BYOC only: the IP addresses mapping to the container"},"updatedAt":{"type":"integer","minimum":1,"description":"The timestamp the container was last updated.","example":1611241087}},"required":["name","createdAt","status","updatedAt"],"additionalProperties":false,"description":"Data about a container."}},"runId":{"type":"string","description":"The id of the associated job run.","example":"00000676-9be8-41dd-b0f7-ba7df935cf27"}},"required":["runId"],"additionalProperties":false,"description":"Result data."},"pagination":{"type":"object","properties":{"hasNextPage":{"type":"boolean","description":"Is there another page of results available?","example":false},"cursor":{"type":"string","description":"The cursor to access the next page of results."},"count":{"type":"number","format":"float","description":"The number of results returned by this request.","example":1}},"required":["hasNextPage","count"],"additionalProperties":false,"description":"Data about the endpoint pagination."}},"required":["data","pagination"],"additionalProperties":false,"description":"Response object."}}},"tags":["Jobs","project"],"security":[],"x-nf-permission-required":"Project > Jobs > Deployment > View Instance Logs","x-nf-team-scoped":true,"x-nf-cli-command":["get","job","containers"]},"v1-projects--projectId--jobs--jobId--deployment-get":{"operationId":"getProjectsJobsJobidDeployment","summary":"Get job deployment","description":"Gets information about the deployment of the given job.","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"jobId","type":"string","required":true,"description":"ID of the job","example":"example-job","in":"path","schema":{"name":"jobId","type":"string","required":true,"description":"ID of the job","example":"example-job","in":"path"}}],"responses":{"200":{"description":"Data about the job deployment.","schema":{"type":"object","properties":{"data":{"oneOf":[{"type":"object","properties":{"region":{"type":"string","description":"Region where this service is deployed and/or built","example":"europe-west"},"instances":{"type":"integer","description":"Number of instances/replicas running","example":1},"docker":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customEntrypoint","customCommand","customEntrypointCustomCommand"],"description":"Override configuration which is used at runtime.","example":"default"},"customEntrypoint":{"type":"string","description":"The CMD to run instead of the default if entrypoint override is enabled."},"customCommand":{"type":"string","description":"The CMD to run instead of the default if CMD override is enabled.","examples":["nginx -g","/docker-entrypoint.sh"]}},"required":["configType"],"additionalProperties":false,"description":"Details about the Docker overrides for this deployment."},"buildpack":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customProcess","customCommand","customEntrypointCustomCommand","originalEntrypointCustomCommand"],"description":"Type of buildpack run configuration.","example":"default"},"customProcess":{"type":"string","description":"Custom process which should be run."},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be run."},"customCommand":{"type":"string","description":"Custom command which should be run."}},"required":["configType"],"additionalProperties":false,"description":"Details about the Buildpack overrides for this deployment."},"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"number","format":"float","description":"Ephemeral storage per container in MB","example":1024}},"required":["storageSize"],"additionalProperties":false,"description":"Details about ephemeral storage settings for this deployment."},"shmSize":{"type":"integer","minimum":64,"description":"Configures the amount of available memory-backed disk space available to /dev/shm"}},"additionalProperties":false,"description":"Details about storage settings for this deployment."},"internal":{"type":"object","properties":{"appId":{"type":"string","description":"Full identifier of deployed entity","example":"/example-user/default-project/example-service"},"nfObjectId":{"type":"string","description":"ID of deployed entity","example":"example-service"},"repository":{"type":"string","description":"URL of the repository being deployed","example":"https://github.com/northflank/gatsby-with-northflank"},"branch":{"type":"string","description":"Branch of the repo being deployed","example":"master"},"buildId":{"type":"string","description":"ID of the build currently deployed.","example":"incredible-land-3266"},"buildSHA":{"type":"string","description":"Commit SHA being deployed. `latest` means the latest commit is automatically being deployed.","example":"latest"},"deployedSHA":{"type":"string","description":"Currently deployed commit SHA. If buildSHA is set to `latest`, this will show the SHA of the latest commit.","example":"262ed9817b3cad5142fbceabe0c9e371e390d616"},"nfObjectType":{"type":"string","enum":["service","job"],"description":"Type of deployed entity","example":"service"}},"required":["appId","nfObjectId","repository","branch","buildId","buildSHA","nfObjectType"],"additionalProperties":false}},"required":["internal"],"additionalProperties":false,"description":"Job deploying a Northflank entity","x-required":true},{"type":"object","properties":{"region":{"type":"string","description":"Region where this service is deployed and/or built","example":"europe-west"},"instances":{"type":"integer","description":"Number of instances/replicas running","example":1},"docker":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customEntrypoint","customCommand","customEntrypointCustomCommand"],"description":"Override configuration which is used at runtime.","example":"default"},"customEntrypoint":{"type":"string","description":"The CMD to run instead of the default if entrypoint override is enabled."},"customCommand":{"type":"string","description":"The CMD to run instead of the default if CMD override is enabled.","examples":["nginx -g","/docker-entrypoint.sh"]}},"required":["configType"],"additionalProperties":false,"description":"Details about the Docker overrides for this deployment."},"buildpack":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customProcess","customCommand","customEntrypointCustomCommand","originalEntrypointCustomCommand"],"description":"Type of buildpack run configuration.","example":"default"},"customProcess":{"type":"string","description":"Custom process which should be run."},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be run."},"customCommand":{"type":"string","description":"Custom command which should be run."}},"required":["configType"],"additionalProperties":false,"description":"Details about the Buildpack overrides for this deployment."},"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"number","format":"float","description":"Ephemeral storage per container in MB","example":1024}},"required":["storageSize"],"additionalProperties":false,"description":"Details about ephemeral storage settings for this deployment."},"shmSize":{"type":"integer","minimum":64,"description":"Configures the amount of available memory-backed disk space available to /dev/shm"}},"additionalProperties":false,"description":"Details about storage settings for this deployment."},"external":{"type":"object","properties":{"imagePath":{"type":"string","description":"Path of the external image excluding the hostname","example":"nginx:latest"},"registryProvider":{"type":"string","enum":["acr","ecr","gar","dockerhub","dhi","github","gitlab","custom","legacy"],"description":"Registry provider hosting the external image","example":"dockerhub"},"privateImage":{"type":"boolean","description":"Does the image require authentication","example":false}},"required":["imagePath","registryProvider","privateImage"],"additionalProperties":false}},"required":["external"],"additionalProperties":false,"description":"Service deploying an external image","x-required":true}],"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Jobs","project"],"security":[],"deprecated":true,"x-nf-permission-required":"Project > Jobs > General > Read","x-nf-team-scoped":true,"x-nf-cli-command":["get","job","deployment"],"x-nf-deprecation-replacement":"/jobs/get-job","x-nf-deprecation-message":"Requests should instead use the relevant GET endpoint."},"v1-projects--projectId--jobs--jobId--deployment-get-team-scoped":{"operationId":"getProjectsJobsJobidDeployment","summary":"Get job deployment","description":"Gets information about the deployment of the given job.","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"jobId","type":"string","required":true,"description":"ID of the job","example":"example-job","in":"path","schema":{"name":"jobId","type":"string","required":true,"description":"ID of the job","example":"example-job","in":"path"}}],"responses":{"200":{"description":"Data about the job deployment.","schema":{"type":"object","properties":{"data":{"oneOf":[{"type":"object","properties":{"region":{"type":"string","description":"Region where this service is deployed and/or built","example":"europe-west"},"instances":{"type":"integer","description":"Number of instances/replicas running","example":1},"docker":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customEntrypoint","customCommand","customEntrypointCustomCommand"],"description":"Override configuration which is used at runtime.","example":"default"},"customEntrypoint":{"type":"string","description":"The CMD to run instead of the default if entrypoint override is enabled."},"customCommand":{"type":"string","description":"The CMD to run instead of the default if CMD override is enabled.","examples":["nginx -g","/docker-entrypoint.sh"]}},"required":["configType"],"additionalProperties":false,"description":"Details about the Docker overrides for this deployment."},"buildpack":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customProcess","customCommand","customEntrypointCustomCommand","originalEntrypointCustomCommand"],"description":"Type of buildpack run configuration.","example":"default"},"customProcess":{"type":"string","description":"Custom process which should be run."},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be run."},"customCommand":{"type":"string","description":"Custom command which should be run."}},"required":["configType"],"additionalProperties":false,"description":"Details about the Buildpack overrides for this deployment."},"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"number","format":"float","description":"Ephemeral storage per container in MB","example":1024}},"required":["storageSize"],"additionalProperties":false,"description":"Details about ephemeral storage settings for this deployment."},"shmSize":{"type":"integer","minimum":64,"description":"Configures the amount of available memory-backed disk space available to /dev/shm"}},"additionalProperties":false,"description":"Details about storage settings for this deployment."},"internal":{"type":"object","properties":{"appId":{"type":"string","description":"Full identifier of deployed entity","example":"/example-user/default-project/example-service"},"nfObjectId":{"type":"string","description":"ID of deployed entity","example":"example-service"},"repository":{"type":"string","description":"URL of the repository being deployed","example":"https://github.com/northflank/gatsby-with-northflank"},"branch":{"type":"string","description":"Branch of the repo being deployed","example":"master"},"buildId":{"type":"string","description":"ID of the build currently deployed.","example":"incredible-land-3266"},"buildSHA":{"type":"string","description":"Commit SHA being deployed. `latest` means the latest commit is automatically being deployed.","example":"latest"},"deployedSHA":{"type":"string","description":"Currently deployed commit SHA. If buildSHA is set to `latest`, this will show the SHA of the latest commit.","example":"262ed9817b3cad5142fbceabe0c9e371e390d616"},"nfObjectType":{"type":"string","enum":["service","job"],"description":"Type of deployed entity","example":"service"}},"required":["appId","nfObjectId","repository","branch","buildId","buildSHA","nfObjectType"],"additionalProperties":false}},"required":["internal"],"additionalProperties":false,"description":"Job deploying a Northflank entity","x-required":true},{"type":"object","properties":{"region":{"type":"string","description":"Region where this service is deployed and/or built","example":"europe-west"},"instances":{"type":"integer","description":"Number of instances/replicas running","example":1},"docker":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customEntrypoint","customCommand","customEntrypointCustomCommand"],"description":"Override configuration which is used at runtime.","example":"default"},"customEntrypoint":{"type":"string","description":"The CMD to run instead of the default if entrypoint override is enabled."},"customCommand":{"type":"string","description":"The CMD to run instead of the default if CMD override is enabled.","examples":["nginx -g","/docker-entrypoint.sh"]}},"required":["configType"],"additionalProperties":false,"description":"Details about the Docker overrides for this deployment."},"buildpack":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customProcess","customCommand","customEntrypointCustomCommand","originalEntrypointCustomCommand"],"description":"Type of buildpack run configuration.","example":"default"},"customProcess":{"type":"string","description":"Custom process which should be run."},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be run."},"customCommand":{"type":"string","description":"Custom command which should be run."}},"required":["configType"],"additionalProperties":false,"description":"Details about the Buildpack overrides for this deployment."},"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"number","format":"float","description":"Ephemeral storage per container in MB","example":1024}},"required":["storageSize"],"additionalProperties":false,"description":"Details about ephemeral storage settings for this deployment."},"shmSize":{"type":"integer","minimum":64,"description":"Configures the amount of available memory-backed disk space available to /dev/shm"}},"additionalProperties":false,"description":"Details about storage settings for this deployment."},"external":{"type":"object","properties":{"imagePath":{"type":"string","description":"Path of the external image excluding the hostname","example":"nginx:latest"},"registryProvider":{"type":"string","enum":["acr","ecr","gar","dockerhub","dhi","github","gitlab","custom","legacy"],"description":"Registry provider hosting the external image","example":"dockerhub"},"privateImage":{"type":"boolean","description":"Does the image require authentication","example":false}},"required":["imagePath","registryProvider","privateImage"],"additionalProperties":false}},"required":["external"],"additionalProperties":false,"description":"Service deploying an external image","x-required":true}],"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Jobs","project"],"security":[],"deprecated":true,"x-nf-permission-required":"Project > Jobs > General > Read","x-nf-team-scoped":true,"x-nf-cli-command":["get","job","deployment"],"x-nf-deprecation-replacement":"/jobs/get-job","x-nf-deprecation-message":"Requests should instead use the relevant GET endpoint."},"v1-projects--projectId--jobs--jobId--deployment-post":{"operationId":"postProjectsJobsJobidDeployment","summary":"Update job deployment","description":"Updates the deployment settings of the given job.","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"jobId","type":"string","required":true,"description":"ID of the job","example":"example-job","in":"path","schema":{"name":"jobId","type":"string","required":true,"description":"ID of the job","example":"example-job","in":"path"}}],"responses":{"200":{"description":"success"}},"tags":["Jobs","project"],"security":[],"deprecated":true,"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"external":{"type":"object","properties":{"imagePath":{"type":"string","pattern":"^(?:(?:https?:\\/\\/)?([a-zA-Z0-9\\-]+\\.[a-zA-Z0-9\\.\\-]+)(\\/v1)?)?(?:\\/)?([a-zA-Z/-9\\.\\-_]+)(?:\\:([a-zA-Z/-9\\.\\-_\\:]+)|\\@([a-zA-Z/-9\\.\\-_\\:]+))$","description":"Image to be deployed. When not deploying from Dockerhub the URL must be specified.","example":"nginx:latest"},"credentials":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"ID of the saved credentials to use to access this external image.","example":"example-credentials"}},"required":["imagePath"],"additionalProperties":false},"docker":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customEntrypoint","customCommand","customEntrypointCustomCommand"],"description":"Type of entrypoint & command override configuration","example":"default"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be used. Required in case where `configType` is `customEntrypoint` or `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be used. Required in case where `configType` is `customCommand` or `customEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of docker runtime"}},"required":["external"],"additionalProperties":false,"description":"An external deployment"},{"type":"object","properties":{"internal":{"type":"object","properties":{"id":{"anyOf":[{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":54,"example":"example-build-service"},{"type":"string","example":"example-project/example-build-service"}],"description":"ID of the build service to deploy"},"branch":{"type":"string","description":"Branch to deploy","example":"master"},"buildSHA":{"oneOf":[{"type":"string","minLength":40,"maxLength":40,"description":"A commit sha."},{"type":"string","enum":["latest"],"description":"Latest commit."}],"description":"Commit SHA to deploy, or 'latest' to deploy the most recent commit","example":"latest"},"buildId":{"type":"string","description":"ID of the build that should be deployed","example":"premium-guide-6393"}},"additionalProperties":false},"buildpack":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customProcess","customCommand","customEntrypointCustomCommand","originalEntrypointCustomCommand"],"description":"Type of buildpack run configuration"},"customProcess":{"type":"string","description":"Custom process which should be run. Required in case where `configType` is `customProcess`"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be run. Required in case where `configType` is `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be run. Required in case where `configType` is `customCommand`, `customEntrypointCustomCommand` or `originalEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of buildpack runtime"},"docker":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customEntrypoint","customCommand","customEntrypointCustomCommand"],"description":"Type of entrypoint & command override configuration","example":"default"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be used. Required in case where `configType` is `customEntrypoint` or `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be used. Required in case where `configType` is `customCommand` or `customEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of docker runtime"}},"required":["internal"],"additionalProperties":false,"description":"An internal deployment"},{"type":"object","properties":{"buildpack":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customProcess","customCommand","customEntrypointCustomCommand","originalEntrypointCustomCommand"],"description":"Type of buildpack run configuration"},"customProcess":{"type":"string","description":"Custom process which should be run. Required in case where `configType` is `customProcess`"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be run. Required in case where `configType` is `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be run. Required in case where `configType` is `customCommand`, `customEntrypointCustomCommand` or `originalEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of buildpack runtime"},"docker":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customEntrypoint","customCommand","customEntrypointCustomCommand"],"description":"Type of entrypoint & command override configuration","example":"default"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be used. Required in case where `configType` is `customEntrypoint` or `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be used. Required in case where `configType` is `customCommand` or `customEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of docker runtime"}},"additionalProperties":false,"description":"Don't modify the deployment."}],"description":"Deployment type"}}},"required":true},"x-nf-permission-required":"Project > Services > Deployment > Update Deployment","x-nf-team-scoped":true,"x-nf-cli-command":["update","job","deployment"],"x-nf-deprecation-replacement":"/jobs/patch-job","x-nf-deprecation-message":"Requests should instead use the relevant PATCH endpoint."},"v1-projects--projectId--jobs--jobId--deployment-post-team-scoped":{"operationId":"postProjectsJobsJobidDeployment","summary":"Update job deployment","description":"Updates the deployment settings of the given job.","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"jobId","type":"string","required":true,"description":"ID of the job","example":"example-job","in":"path","schema":{"name":"jobId","type":"string","required":true,"description":"ID of the job","example":"example-job","in":"path"}}],"responses":{"200":{"description":"success"}},"tags":["Jobs","project"],"security":[],"deprecated":true,"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"external":{"type":"object","properties":{"imagePath":{"type":"string","pattern":"^(?:(?:https?:\\/\\/)?([a-zA-Z0-9\\-]+\\.[a-zA-Z0-9\\.\\-]+)(\\/v1)?)?(?:\\/)?([a-zA-Z/-9\\.\\-_]+)(?:\\:([a-zA-Z/-9\\.\\-_\\:]+)|\\@([a-zA-Z/-9\\.\\-_\\:]+))$","description":"Image to be deployed. When not deploying from Dockerhub the URL must be specified.","example":"nginx:latest"},"credentials":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"ID of the saved credentials to use to access this external image.","example":"example-credentials"}},"required":["imagePath"],"additionalProperties":false},"docker":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customEntrypoint","customCommand","customEntrypointCustomCommand"],"description":"Type of entrypoint & command override configuration","example":"default"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be used. Required in case where `configType` is `customEntrypoint` or `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be used. Required in case where `configType` is `customCommand` or `customEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of docker runtime"}},"required":["external"],"additionalProperties":false,"description":"An external deployment"},{"type":"object","properties":{"internal":{"type":"object","properties":{"id":{"anyOf":[{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":54,"example":"example-build-service"},{"type":"string","example":"example-project/example-build-service"}],"description":"ID of the build service to deploy"},"branch":{"type":"string","description":"Branch to deploy","example":"master"},"buildSHA":{"oneOf":[{"type":"string","minLength":40,"maxLength":40,"description":"A commit sha."},{"type":"string","enum":["latest"],"description":"Latest commit."}],"description":"Commit SHA to deploy, or 'latest' to deploy the most recent commit","example":"latest"},"buildId":{"type":"string","description":"ID of the build that should be deployed","example":"premium-guide-6393"}},"additionalProperties":false},"buildpack":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customProcess","customCommand","customEntrypointCustomCommand","originalEntrypointCustomCommand"],"description":"Type of buildpack run configuration"},"customProcess":{"type":"string","description":"Custom process which should be run. Required in case where `configType` is `customProcess`"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be run. Required in case where `configType` is `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be run. Required in case where `configType` is `customCommand`, `customEntrypointCustomCommand` or `originalEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of buildpack runtime"},"docker":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customEntrypoint","customCommand","customEntrypointCustomCommand"],"description":"Type of entrypoint & command override configuration","example":"default"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be used. Required in case where `configType` is `customEntrypoint` or `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be used. Required in case where `configType` is `customCommand` or `customEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of docker runtime"}},"required":["internal"],"additionalProperties":false,"description":"An internal deployment"},{"type":"object","properties":{"buildpack":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customProcess","customCommand","customEntrypointCustomCommand","originalEntrypointCustomCommand"],"description":"Type of buildpack run configuration"},"customProcess":{"type":"string","description":"Custom process which should be run. Required in case where `configType` is `customProcess`"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be run. Required in case where `configType` is `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be run. Required in case where `configType` is `customCommand`, `customEntrypointCustomCommand` or `originalEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of buildpack runtime"},"docker":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customEntrypoint","customCommand","customEntrypointCustomCommand"],"description":"Type of entrypoint & command override configuration","example":"default"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be used. Required in case where `configType` is `customEntrypoint` or `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be used. Required in case where `configType` is `customCommand` or `customEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of docker runtime"}},"additionalProperties":false,"description":"Don't modify the deployment."}],"description":"Deployment type"}}},"required":true},"x-nf-permission-required":"Project > Services > Deployment > Update Deployment","x-nf-team-scoped":true,"x-nf-cli-command":["update","job","deployment"],"x-nf-deprecation-replacement":"/jobs/patch-job","x-nf-deprecation-message":"Requests should instead use the relevant PATCH endpoint."},"v1-projects--projectId--jobs--jobId--health-checks-get":{"operationId":"getProjectsJobsJobidHealthChecks","summary":"Get job health checks","description":"Lists the health checks for the given job.","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"jobId","type":"string","required":true,"description":"ID of the job","example":"example-job","in":"path","schema":{"name":"jobId","type":"string","required":true,"description":"ID of the job","example":"example-job","in":"path"}}],"responses":{"200":{"description":"Details about the health checks for the job.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"healthChecks":{"type":"array","items":{"type":"object","properties":{"protocol":{"type":"string","enum":["HTTP","CMD","TCP"],"description":"The protocol to access the health check with.","example":"HTTP"},"type":{"type":"string","enum":["livenessProbe","readinessProbe"],"description":"The type of health check.","example":"readinessProbe"},"path":{"type":"string","nullable":true,"description":"The path of the health check endpoint.","example":"/health-check"},"cmd":{"description":"The command to run for the health check."},"httpPort":{"description":"HTTP port number for the health check endpoint.","example":3000},"tcpSocketPort":{"description":"TCP port number for the health check endpoint."},"initialDelaySeconds":{"type":"integer","minimum":1,"description":"Initial delay, in seconds, before the health check is first run.","example":10},"periodSeconds":{"type":"integer","minimum":1,"description":"The time between each check, in seconds.","example":60},"timeoutSeconds":{"type":"integer","minimum":1,"description":"The time to wait for a response before marking the health check as a failure.","example":1},"failureThreshold":{"type":"integer","minimum":1,"description":"The maximum number of allowed failures.","example":3},"successThreshold":{"description":"The number of successes required to mark the health check as a success.","example":1}},"required":["protocol","type","initialDelaySeconds","periodSeconds","timeoutSeconds","failureThreshold"],"additionalProperties":false},"description":"An array of health checks."}},"required":["healthChecks"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Jobs","project"],"security":[],"deprecated":true,"x-nf-permission-required":"Project > Jobs > General > Read","x-nf-team-scoped":true,"x-nf-cli-command":["get","job","health-checks"],"x-nf-deprecation-replacement":"/jobs/get-job","x-nf-deprecation-message":"Requests should instead use the relevant GET endpoint."},"v1-projects--projectId--jobs--jobId--health-checks-get-team-scoped":{"operationId":"getProjectsJobsJobidHealthChecks","summary":"Get job health checks","description":"Lists the health checks for the given job.","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"jobId","type":"string","required":true,"description":"ID of the job","example":"example-job","in":"path","schema":{"name":"jobId","type":"string","required":true,"description":"ID of the job","example":"example-job","in":"path"}}],"responses":{"200":{"description":"Details about the health checks for the job.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"healthChecks":{"type":"array","items":{"type":"object","properties":{"protocol":{"type":"string","enum":["HTTP","CMD","TCP"],"description":"The protocol to access the health check with.","example":"HTTP"},"type":{"type":"string","enum":["livenessProbe","readinessProbe"],"description":"The type of health check.","example":"readinessProbe"},"path":{"type":"string","nullable":true,"description":"The path of the health check endpoint.","example":"/health-check"},"cmd":{"description":"The command to run for the health check."},"httpPort":{"description":"HTTP port number for the health check endpoint.","example":3000},"tcpSocketPort":{"description":"TCP port number for the health check endpoint."},"initialDelaySeconds":{"type":"integer","minimum":1,"description":"Initial delay, in seconds, before the health check is first run.","example":10},"periodSeconds":{"type":"integer","minimum":1,"description":"The time between each check, in seconds.","example":60},"timeoutSeconds":{"type":"integer","minimum":1,"description":"The time to wait for a response before marking the health check as a failure.","example":1},"failureThreshold":{"type":"integer","minimum":1,"description":"The maximum number of allowed failures.","example":3},"successThreshold":{"description":"The number of successes required to mark the health check as a success.","example":1}},"required":["protocol","type","initialDelaySeconds","periodSeconds","timeoutSeconds","failureThreshold"],"additionalProperties":false},"description":"An array of health checks."}},"required":["healthChecks"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Jobs","project"],"security":[],"deprecated":true,"x-nf-permission-required":"Project > Jobs > General > Read","x-nf-team-scoped":true,"x-nf-cli-command":["get","job","health-checks"],"x-nf-deprecation-replacement":"/jobs/get-job","x-nf-deprecation-message":"Requests should instead use the relevant GET endpoint."},"v1-projects--projectId--jobs--jobId--health-checks-post":{"operationId":"postProjectsJobsJobidHealthChecks","summary":"Update job health checks","description":"Updates health checks for the given job.","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"jobId","type":"string","required":true,"description":"ID of the job","example":"example-job","in":"path","schema":{"name":"jobId","type":"string","required":true,"description":"ID of the job","example":"example-job","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Jobs","project"],"security":[],"deprecated":true,"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"healthChecks":{"type":"array","items":{"type":"object","properties":{"protocol":{"type":"string","enum":["HTTP","CMD","TCP"],"description":"The protocol to access the health check with.","example":"HTTP"},"type":{"type":"string","enum":["livenessProbe","readinessProbe","startupProbe"],"description":"The type of health check.","example":"readinessProbe"},"path":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*((\\?([a-zA-Z0-9-._]+(=[a-zA-Z0-9-._]+)?)*)(&([a-zA-Z0-9-._]+(=[a-zA-Z0-9-._]+)?)*)*)?$","description":"The path of the health check endpoint. Required when protocol is HTTP.","example":"/health-check"},"cmd":{"type":"string","description":"The command to run for the health check. Required when protocol is CMD"},"port":{"type":"integer","minimum":1,"description":"Port number for the health check endpoint. Required when protocol is HTTP.","example":8080},"initialDelaySeconds":{"type":"integer","minimum":1,"maximum":180,"description":"Initial delay, in seconds, before the health check is first run.","example":10},"periodSeconds":{"type":"integer","minimum":10,"maximum":600,"description":"The time between each check, in seconds.","example":60},"timeoutSeconds":{"type":"integer","minimum":1,"maximum":60,"description":"The time to wait for a response before marking the health check as a failure.","example":1},"failureThreshold":{"type":"integer","minimum":1,"maximum":255,"description":"The maximum number of allowed failures.","example":3},"successThreshold":{"type":"integer","minimum":1,"maximum":255,"description":"The number of successes required to mark the health check as a success.","example":1}},"required":["protocol","type","initialDelaySeconds","periodSeconds","timeoutSeconds","failureThreshold"],"additionalProperties":false,"description":"A health check object."},"description":"An array of health checks."}},"required":["healthChecks"],"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Project > Jobs > General > Update","x-nf-team-scoped":true,"x-nf-cli-command":["update","job","health-checks"],"x-nf-deprecation-replacement":"/jobs/patch-job","x-nf-deprecation-message":"Requests should instead use the relevant PATCH endpoint."},"v1-projects--projectId--jobs--jobId--health-checks-post-team-scoped":{"operationId":"postProjectsJobsJobidHealthChecks","summary":"Update job health checks","description":"Updates health checks for the given job.","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"jobId","type":"string","required":true,"description":"ID of the job","example":"example-job","in":"path","schema":{"name":"jobId","type":"string","required":true,"description":"ID of the job","example":"example-job","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Jobs","project"],"security":[],"deprecated":true,"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"healthChecks":{"type":"array","items":{"type":"object","properties":{"protocol":{"type":"string","enum":["HTTP","CMD","TCP"],"description":"The protocol to access the health check with.","example":"HTTP"},"type":{"type":"string","enum":["livenessProbe","readinessProbe","startupProbe"],"description":"The type of health check.","example":"readinessProbe"},"path":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*((\\?([a-zA-Z0-9-._]+(=[a-zA-Z0-9-._]+)?)*)(&([a-zA-Z0-9-._]+(=[a-zA-Z0-9-._]+)?)*)*)?$","description":"The path of the health check endpoint. Required when protocol is HTTP.","example":"/health-check"},"cmd":{"type":"string","description":"The command to run for the health check. Required when protocol is CMD"},"port":{"type":"integer","minimum":1,"description":"Port number for the health check endpoint. Required when protocol is HTTP.","example":8080},"initialDelaySeconds":{"type":"integer","minimum":1,"maximum":180,"description":"Initial delay, in seconds, before the health check is first run.","example":10},"periodSeconds":{"type":"integer","minimum":10,"maximum":600,"description":"The time between each check, in seconds.","example":60},"timeoutSeconds":{"type":"integer","minimum":1,"maximum":60,"description":"The time to wait for a response before marking the health check as a failure.","example":1},"failureThreshold":{"type":"integer","minimum":1,"maximum":255,"description":"The maximum number of allowed failures.","example":3},"successThreshold":{"type":"integer","minimum":1,"maximum":255,"description":"The number of successes required to mark the health check as a success.","example":1}},"required":["protocol","type","initialDelaySeconds","periodSeconds","timeoutSeconds","failureThreshold"],"additionalProperties":false,"description":"A health check object."},"description":"An array of health checks."}},"required":["healthChecks"],"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Project > Jobs > General > Update","x-nf-team-scoped":true,"x-nf-cli-command":["update","job","health-checks"],"x-nf-deprecation-replacement":"/jobs/patch-job","x-nf-deprecation-message":"Requests should instead use the relevant PATCH endpoint."},"v1-projects--projectId--jobs--jobId--logs-get":{"operationId":"getProjectsJobsJobidLogs","summary":"Get job logs","description":"Get logs for a job","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"jobId","type":"string","required":true,"description":"ID of the job","example":"example-job","in":"path","schema":{"name":"jobId","type":"string","required":true,"description":"ID of the job","example":"example-job","in":"path"}},{"name":"runId","type":"string","minLength":36,"maxLength":36,"description":"Limits metrics to a specific job run id.","example":"93ec9390-b9bd-47f0-9bd1-b5983c42a6f2","in":"query","schema":{"name":"runId","type":"string","minLength":36,"maxLength":36,"description":"Limits metrics to a specific job run id.","example":"93ec9390-b9bd-47f0-9bd1-b5983c42a6f2","in":"query"}},{"name":"type","type":"string","enum":["cdn","mesh","ingress","runtime","build","backup","restore"],"description":"Type of log. Multiple log types can be selected by specifying the query parameter repeatedly.","in":"query","schema":{"name":"type","type":"string","enum":["cdn","mesh","ingress","runtime","build","backup","restore"],"description":"Type of log. Multiple log types can be selected by specifying the query parameter repeatedly.","in":"query"}},{"name":"containerName","type":"string","minLength":3,"maxLength":64,"description":"Limits logs to a specific container.","example":"my-container-67d6d748c5-kgvwh","default":"all","in":"query","schema":{"name":"containerName","type":"string","minLength":3,"maxLength":64,"description":"Limits logs to a specific container.","example":"my-container-67d6d748c5-kgvwh","default":"all","in":"query"}},{"name":"queryType","type":"string","enum":["range"],"description":"`range` selects a log range and returns immediately.","example":"range","default":"range","in":"query","schema":{"name":"queryType","type":"string","enum":["range"],"description":"`range` selects a log range and returns immediately.","example":"range","default":"range","in":"query"}},{"name":"startTime","type":"string","format":"date-time","description":"Fetch logs generated after this timestamp.","example":"2023-02-16T14:00:00.000Z","in":"query","schema":{"name":"startTime","type":"string","format":"date-time","description":"Fetch logs generated after this timestamp.","example":"2023-02-16T14:00:00.000Z","in":"query"}},{"name":"endTime","type":"string","format":"date-time","description":"Fetch logs generated before this timestamp.","example":"2023-02-16T15:00:00.000Z","in":"query","schema":{"name":"endTime","type":"string","format":"date-time","description":"Fetch logs generated before this timestamp.","example":"2023-02-16T15:00:00.000Z","in":"query"}},{"name":"duration","type":"integer","description":"Range duration in seconds. If set, only one of `startTime` or `endTime` can be set.","example":600,"in":"query","schema":{"name":"duration","type":"integer","description":"Range duration in seconds. If set, only one of `startTime` or `endTime` can be set.","example":600,"in":"query"}},{"name":"lineLimit","type":"number","format":"float","minimum":0,"maximum":1000,"description":"Number of log lines to fetch.","example":250,"in":"query","schema":{"name":"lineLimit","type":"number","format":"float","minimum":0,"maximum":1000,"description":"Number of log lines to fetch.","example":250,"in":"query"}},{"name":"direction","type":"string","enum":["backward","forward"],"description":"Ordering of log lines","example":"backward","default":"backward","in":"query","schema":{"name":"direction","type":"string","enum":["backward","forward"],"description":"Ordering of log lines","example":"backward","default":"backward","in":"query"}},{"name":"textIncludes","type":"string","minLength":1,"maxLength":100,"description":"Filter log lines to match this search string","example":"myvalue","in":"query","schema":{"name":"textIncludes","type":"string","minLength":1,"maxLength":100,"description":"Filter log lines to match this search string","example":"myvalue","in":"query"}},{"name":"textNotIncludes","type":"string","minLength":1,"maxLength":100,"description":"Filter log lines to not match this search string","example":"myvalue","in":"query","schema":{"name":"textNotIncludes","type":"string","minLength":1,"maxLength":100,"description":"Filter log lines to not match this search string","example":"myvalue","in":"query"}},{"name":"regexIncludes","type":"string","minLength":1,"maxLength":100,"description":"Filter log lines to match this regular expression","example":"my.*value","in":"query","schema":{"name":"regexIncludes","type":"string","minLength":1,"maxLength":100,"description":"Filter log lines to match this regular expression","example":"my.*value","in":"query"}},{"name":"regexNotIncludes","type":"string","minLength":1,"maxLength":100,"description":"Filter log lines to not match this regular expression","example":"my.*value","in":"query","schema":{"name":"regexNotIncludes","type":"string","minLength":1,"maxLength":100,"description":"Filter log lines to not match this regular expression","example":"my.*value","in":"query"}}],"responses":{"200":{"description":"List of logs values","schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"containerId":{"type":"string"},"log":{"example":"stdout F This is a log line"},"ts":{"type":"string","format":"date-time","example":"2023-03-21T15:01:17.310Z"}},"required":["containerId","log","ts"],"additionalProperties":false},"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Jobs","project"],"security":[],"x-nf-link":"undefined/v1/api/log-tailing","x-nf-link-description":"For more information on live log tailing, see our documentation page.","x-nf-permission-required":"Project > Jobs > Deployment > View Instance Logs","x-nf-team-scoped":true,"x-nf-cli-command":["get","job","logs"]},"v1-projects--projectId--jobs--jobId--logs-get-team-scoped":{"operationId":"getProjectsJobsJobidLogs","summary":"Get job logs","description":"Get logs for a job","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"jobId","type":"string","required":true,"description":"ID of the job","example":"example-job","in":"path","schema":{"name":"jobId","type":"string","required":true,"description":"ID of the job","example":"example-job","in":"path"}},{"name":"runId","type":"string","minLength":36,"maxLength":36,"description":"Limits metrics to a specific job run id.","example":"93ec9390-b9bd-47f0-9bd1-b5983c42a6f2","in":"query","schema":{"name":"runId","type":"string","minLength":36,"maxLength":36,"description":"Limits metrics to a specific job run id.","example":"93ec9390-b9bd-47f0-9bd1-b5983c42a6f2","in":"query"}},{"name":"type","type":"string","enum":["cdn","mesh","ingress","runtime","build","backup","restore"],"description":"Type of log. Multiple log types can be selected by specifying the query parameter repeatedly.","in":"query","schema":{"name":"type","type":"string","enum":["cdn","mesh","ingress","runtime","build","backup","restore"],"description":"Type of log. Multiple log types can be selected by specifying the query parameter repeatedly.","in":"query"}},{"name":"containerName","type":"string","minLength":3,"maxLength":64,"description":"Limits logs to a specific container.","example":"my-container-67d6d748c5-kgvwh","default":"all","in":"query","schema":{"name":"containerName","type":"string","minLength":3,"maxLength":64,"description":"Limits logs to a specific container.","example":"my-container-67d6d748c5-kgvwh","default":"all","in":"query"}},{"name":"queryType","type":"string","enum":["range"],"description":"`range` selects a log range and returns immediately.","example":"range","default":"range","in":"query","schema":{"name":"queryType","type":"string","enum":["range"],"description":"`range` selects a log range and returns immediately.","example":"range","default":"range","in":"query"}},{"name":"startTime","type":"string","format":"date-time","description":"Fetch logs generated after this timestamp.","example":"2023-02-16T14:00:00.000Z","in":"query","schema":{"name":"startTime","type":"string","format":"date-time","description":"Fetch logs generated after this timestamp.","example":"2023-02-16T14:00:00.000Z","in":"query"}},{"name":"endTime","type":"string","format":"date-time","description":"Fetch logs generated before this timestamp.","example":"2023-02-16T15:00:00.000Z","in":"query","schema":{"name":"endTime","type":"string","format":"date-time","description":"Fetch logs generated before this timestamp.","example":"2023-02-16T15:00:00.000Z","in":"query"}},{"name":"duration","type":"integer","description":"Range duration in seconds. If set, only one of `startTime` or `endTime` can be set.","example":600,"in":"query","schema":{"name":"duration","type":"integer","description":"Range duration in seconds. If set, only one of `startTime` or `endTime` can be set.","example":600,"in":"query"}},{"name":"lineLimit","type":"number","format":"float","minimum":0,"maximum":1000,"description":"Number of log lines to fetch.","example":250,"in":"query","schema":{"name":"lineLimit","type":"number","format":"float","minimum":0,"maximum":1000,"description":"Number of log lines to fetch.","example":250,"in":"query"}},{"name":"direction","type":"string","enum":["backward","forward"],"description":"Ordering of log lines","example":"backward","default":"backward","in":"query","schema":{"name":"direction","type":"string","enum":["backward","forward"],"description":"Ordering of log lines","example":"backward","default":"backward","in":"query"}},{"name":"textIncludes","type":"string","minLength":1,"maxLength":100,"description":"Filter log lines to match this search string","example":"myvalue","in":"query","schema":{"name":"textIncludes","type":"string","minLength":1,"maxLength":100,"description":"Filter log lines to match this search string","example":"myvalue","in":"query"}},{"name":"textNotIncludes","type":"string","minLength":1,"maxLength":100,"description":"Filter log lines to not match this search string","example":"myvalue","in":"query","schema":{"name":"textNotIncludes","type":"string","minLength":1,"maxLength":100,"description":"Filter log lines to not match this search string","example":"myvalue","in":"query"}},{"name":"regexIncludes","type":"string","minLength":1,"maxLength":100,"description":"Filter log lines to match this regular expression","example":"my.*value","in":"query","schema":{"name":"regexIncludes","type":"string","minLength":1,"maxLength":100,"description":"Filter log lines to match this regular expression","example":"my.*value","in":"query"}},{"name":"regexNotIncludes","type":"string","minLength":1,"maxLength":100,"description":"Filter log lines to not match this regular expression","example":"my.*value","in":"query","schema":{"name":"regexNotIncludes","type":"string","minLength":1,"maxLength":100,"description":"Filter log lines to not match this regular expression","example":"my.*value","in":"query"}}],"responses":{"200":{"description":"List of logs values","schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"containerId":{"type":"string"},"log":{"example":"stdout F This is a log line"},"ts":{"type":"string","format":"date-time","example":"2023-03-21T15:01:17.310Z"}},"required":["containerId","log","ts"],"additionalProperties":false},"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Jobs","project"],"security":[],"x-nf-link":"undefined/v1/api/log-tailing","x-nf-link-description":"For more information on live log tailing, see our documentation page.","x-nf-permission-required":"Project > Jobs > Deployment > View Instance Logs","x-nf-team-scoped":true,"x-nf-cli-command":["get","job","logs"]},"v1-projects--projectId--jobs--jobId--metrics-get":{"operationId":"getProjectsJobsJobidMetrics","summary":"Get job metrics","description":"Get metrics for a job","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"jobId","type":"string","required":true,"description":"ID of the job","example":"example-job","in":"path","schema":{"name":"jobId","type":"string","required":true,"description":"ID of the job","example":"example-job","in":"path"}},{"name":"runId","type":"string","minLength":36,"maxLength":36,"description":"Limits metrics to a specific job run id.","examples":["93ec9390-b9bd-47f0-9bd1-b5983c42a6f2","93ec9390-b9bd-47f0-9bd1-b5983c42a6f2"],"in":"query","schema":{"name":"runId","type":"string","minLength":36,"maxLength":36,"description":"Limits metrics to a specific job run id.","examples":["93ec9390-b9bd-47f0-9bd1-b5983c42a6f2","93ec9390-b9bd-47f0-9bd1-b5983c42a6f2"],"in":"query"}},{"name":"containerName","type":"string","minLength":3,"maxLength":64,"description":"Limits metrics to a specific container.","examples":["my-container-67d6d748c5-kgvwh","my-container-67d6d748c5-kgvwh"],"default":"all","in":"query","schema":{"name":"containerName","type":"string","minLength":3,"maxLength":64,"description":"Limits metrics to a specific container.","examples":["my-container-67d6d748c5-kgvwh","my-container-67d6d748c5-kgvwh"],"default":"all","in":"query"}},{"name":"queryType","type":"string","enum":["range","single"],"description":"Selects metrics for specified timestamp.","examples":["range","single"],"default":"single","in":"query","schema":{"name":"queryType","type":"string","enum":["range","single"],"description":"Selects metrics for specified timestamp.","examples":["range","single"],"default":"single","in":"query"}},{"name":"metricTypes","type":"string","enum":["cpu","memory","networkIngress","networkEgress","tcpConnectionsOpen","diskUsage","requests","http4xxResponses","http5xxResponses","bandwidth","bandwidthVolume"],"description":"Type of metric. Multiple metric types can be selected by specifying the query parameter repeatedly.","in":"query","schema":{"name":"metricTypes","type":"string","enum":["cpu","memory","networkIngress","networkEgress","tcpConnectionsOpen","diskUsage","requests","http4xxResponses","http5xxResponses","bandwidth","bandwidthVolume"],"description":"Type of metric. Multiple metric types can be selected by specifying the query parameter repeatedly.","in":"query"}},{"name":"startTime","type":"string","format":"date-time","description":"Fetch metrics generated after this timestamp. Only valid for queryType: `range`.","example":"2023-02-16T14:00:00.000Z","in":"query","schema":{"name":"startTime","type":"string","format":"date-time","description":"Fetch metrics generated after this timestamp. Only valid for queryType: `range`.","example":"2023-02-16T14:00:00.000Z","in":"query"}},{"name":"endTime","type":"string","format":"date-time","description":"Fetch metrics generated before this timestamp. Only valid for queryType: `range`.","example":"2023-02-16T15:00:00.000Z","in":"query","schema":{"name":"endTime","type":"string","format":"date-time","description":"Fetch metrics generated before this timestamp. Only valid for queryType: `range`.","example":"2023-02-16T15:00:00.000Z","in":"query"}},{"name":"duration","type":"integer","description":"Range duration in seconds. If set, only one of `startTime` or `endTime` can be set.","example":600,"in":"query","schema":{"name":"duration","type":"integer","description":"Range duration in seconds. If set, only one of `startTime` or `endTime` can be set.","example":600,"in":"query"}},{"name":"time","type":"string","format":"date-time","description":"Fetch metrics at this timestamp. If not provided will use current time. Only valid for queryType: `single`.","example":"2023-02-16T14:00:00.000Z","in":"query","schema":{"name":"time","type":"string","format":"date-time","description":"Fetch metrics at this timestamp. If not provided will use current time. Only valid for queryType: `single`.","example":"2023-02-16T14:00:00.000Z","in":"query"}}],"responses":{"200":{"description":"List of metrics values","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"cpu":{"type":"object","properties":{"metricInfo":{"type":"object","properties":{"metricId":{"type":"string","enum":["cpu","memory","networkIngress","networkEgress","tcpConnectionsOpen","diskUsage","requests","http4xxResponses","http5xxResponses","bandwidth","bandwidthVolume"],"description":"Type of metric to fetch"},"metricUnit":{"type":"string","enum":["pct","vCPU","mb","kbps","rps","count"],"example":"pct"},"metricResolution":{"type":"number","format":"float","example":10}},"required":["metricId","metricUnit"],"additionalProperties":false},"values":{"type":"array","items":{"type":"object","properties":{"metadata":{"type":"object","properties":{"containerId":{"type":"string","example":"nginx-669cc865b7-5458n"},"volumeId":{"type":"string","example":"data-volume-1"}},"required":["containerId"],"additionalProperties":false},"data":{"type":"array","items":{"type":"object","properties":{"value":{"type":"number","format":"float","example":0.5},"ts":{"type":"string","format":"date-time","example":"2023-03-21T15:01:17.310Z"}},"required":["value","ts"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}},"required":["values"],"additionalProperties":false},"memory":{"type":"object","properties":{"metricInfo":{"type":"object","properties":{"metricId":{"type":"string","enum":["cpu","memory","networkIngress","networkEgress","tcpConnectionsOpen","diskUsage","requests","http4xxResponses","http5xxResponses","bandwidth","bandwidthVolume"],"description":"Type of metric to fetch"},"metricUnit":{"type":"string","enum":["pct","vCPU","mb","kbps","rps","count"],"example":"pct"},"metricResolution":{"type":"number","format":"float","example":10}},"required":["metricId","metricUnit"],"additionalProperties":false},"values":{"type":"array","items":{"type":"object","properties":{"metadata":{"type":"object","properties":{"containerId":{"type":"string","example":"nginx-669cc865b7-5458n"},"volumeId":{"type":"string","example":"data-volume-1"}},"required":["containerId"],"additionalProperties":false},"data":{"type":"array","items":{"type":"object","properties":{"value":{"type":"number","format":"float","example":0.5},"ts":{"type":"string","format":"date-time","example":"2023-03-21T15:01:17.310Z"}},"required":["value","ts"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}},"required":["values"],"additionalProperties":false},"networkIngress":{"type":"object","properties":{"metricInfo":{"type":"object","properties":{"metricId":{"type":"string","enum":["cpu","memory","networkIngress","networkEgress","tcpConnectionsOpen","diskUsage","requests","http4xxResponses","http5xxResponses","bandwidth","bandwidthVolume"],"description":"Type of metric to fetch"},"metricUnit":{"type":"string","enum":["pct","vCPU","mb","kbps","rps","count"],"example":"pct"},"metricResolution":{"type":"number","format":"float","example":10}},"required":["metricId","metricUnit"],"additionalProperties":false},"values":{"type":"array","items":{"type":"object","properties":{"metadata":{"type":"object","properties":{"containerId":{"type":"string","example":"nginx-669cc865b7-5458n"},"volumeId":{"type":"string","example":"data-volume-1"}},"required":["containerId"],"additionalProperties":false},"data":{"type":"array","items":{"type":"object","properties":{"value":{"type":"number","format":"float","example":0.5},"ts":{"type":"string","format":"date-time","example":"2023-03-21T15:01:17.310Z"}},"required":["value","ts"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}},"required":["values"],"additionalProperties":false},"networkEgress":{"type":"object","properties":{"metricInfo":{"type":"object","properties":{"metricId":{"type":"string","enum":["cpu","memory","networkIngress","networkEgress","tcpConnectionsOpen","diskUsage","requests","http4xxResponses","http5xxResponses","bandwidth","bandwidthVolume"],"description":"Type of metric to fetch"},"metricUnit":{"type":"string","enum":["pct","vCPU","mb","kbps","rps","count"],"example":"pct"},"metricResolution":{"type":"number","format":"float","example":10}},"required":["metricId","metricUnit"],"additionalProperties":false},"values":{"type":"array","items":{"type":"object","properties":{"metadata":{"type":"object","properties":{"containerId":{"type":"string","example":"nginx-669cc865b7-5458n"},"volumeId":{"type":"string","example":"data-volume-1"}},"required":["containerId"],"additionalProperties":false},"data":{"type":"array","items":{"type":"object","properties":{"value":{"type":"number","format":"float","example":0.5},"ts":{"type":"string","format":"date-time","example":"2023-03-21T15:01:17.310Z"}},"required":["value","ts"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}},"required":["values"],"additionalProperties":false},"tcpConnectionsOpen":{"type":"object","properties":{"metricInfo":{"type":"object","properties":{"metricId":{"type":"string","enum":["cpu","memory","networkIngress","networkEgress","tcpConnectionsOpen","diskUsage","requests","http4xxResponses","http5xxResponses","bandwidth","bandwidthVolume"],"description":"Type of metric to fetch"},"metricUnit":{"type":"string","enum":["pct","vCPU","mb","kbps","rps","count"],"example":"pct"},"metricResolution":{"type":"number","format":"float","example":10}},"required":["metricId","metricUnit"],"additionalProperties":false},"values":{"type":"array","items":{"type":"object","properties":{"metadata":{"type":"object","properties":{"containerId":{"type":"string","example":"nginx-669cc865b7-5458n"},"volumeId":{"type":"string","example":"data-volume-1"}},"required":["containerId"],"additionalProperties":false},"data":{"type":"array","items":{"type":"object","properties":{"value":{"type":"number","format":"float","example":0.5},"ts":{"type":"string","format":"date-time","example":"2023-03-21T15:01:17.310Z"}},"required":["value","ts"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}},"required":["values"],"additionalProperties":false},"diskUsage":{"type":"object","properties":{"metricInfo":{"type":"object","properties":{"metricId":{"type":"string","enum":["cpu","memory","networkIngress","networkEgress","tcpConnectionsOpen","diskUsage","requests","http4xxResponses","http5xxResponses","bandwidth","bandwidthVolume"],"description":"Type of metric to fetch"},"metricUnit":{"type":"string","enum":["pct","vCPU","mb","kbps","rps","count"],"example":"pct"},"metricResolution":{"type":"number","format":"float","example":10}},"required":["metricId","metricUnit"],"additionalProperties":false},"values":{"type":"array","items":{"type":"object","properties":{"metadata":{"type":"object","properties":{"containerId":{"type":"string","example":"nginx-669cc865b7-5458n"},"volumeId":{"type":"string","example":"data-volume-1"}},"required":["containerId"],"additionalProperties":false},"data":{"type":"array","items":{"type":"object","properties":{"value":{"type":"number","format":"float","example":0.5},"ts":{"type":"string","format":"date-time","example":"2023-03-21T15:01:17.310Z"}},"required":["value","ts"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}},"required":["values"],"additionalProperties":false},"requests":{"type":"object","properties":{"metricInfo":{"type":"object","properties":{"metricId":{"type":"string","enum":["cpu","memory","networkIngress","networkEgress","tcpConnectionsOpen","diskUsage","requests","http4xxResponses","http5xxResponses","bandwidth","bandwidthVolume"],"description":"Type of metric to fetch"},"metricUnit":{"type":"string","enum":["pct","vCPU","mb","kbps","rps","count"],"example":"pct"},"metricResolution":{"type":"number","format":"float","example":10}},"required":["metricId","metricUnit"],"additionalProperties":false},"values":{"type":"array","items":{"type":"object","properties":{"metadata":{"type":"object","properties":{"containerId":{"type":"string","example":"nginx-669cc865b7-5458n"},"volumeId":{"type":"string","example":"data-volume-1"}},"required":["containerId"],"additionalProperties":false},"data":{"type":"array","items":{"type":"object","properties":{"value":{"type":"number","format":"float","example":0.5},"ts":{"type":"string","format":"date-time","example":"2023-03-21T15:01:17.310Z"}},"required":["value","ts"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}},"required":["values"],"additionalProperties":false},"http4xxResponses":{"type":"object","properties":{"metricInfo":{"type":"object","properties":{"metricId":{"type":"string","enum":["cpu","memory","networkIngress","networkEgress","tcpConnectionsOpen","diskUsage","requests","http4xxResponses","http5xxResponses","bandwidth","bandwidthVolume"],"description":"Type of metric to fetch"},"metricUnit":{"type":"string","enum":["pct","vCPU","mb","kbps","rps","count"],"example":"pct"},"metricResolution":{"type":"number","format":"float","example":10}},"required":["metricId","metricUnit"],"additionalProperties":false},"values":{"type":"array","items":{"type":"object","properties":{"metadata":{"type":"object","properties":{"containerId":{"type":"string","example":"nginx-669cc865b7-5458n"},"volumeId":{"type":"string","example":"data-volume-1"}},"required":["containerId"],"additionalProperties":false},"data":{"type":"array","items":{"type":"object","properties":{"value":{"type":"number","format":"float","example":0.5},"ts":{"type":"string","format":"date-time","example":"2023-03-21T15:01:17.310Z"}},"required":["value","ts"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}},"required":["values"],"additionalProperties":false},"http5xxResponses":{"type":"object","properties":{"metricInfo":{"type":"object","properties":{"metricId":{"type":"string","enum":["cpu","memory","networkIngress","networkEgress","tcpConnectionsOpen","diskUsage","requests","http4xxResponses","http5xxResponses","bandwidth","bandwidthVolume"],"description":"Type of metric to fetch"},"metricUnit":{"type":"string","enum":["pct","vCPU","mb","kbps","rps","count"],"example":"pct"},"metricResolution":{"type":"number","format":"float","example":10}},"required":["metricId","metricUnit"],"additionalProperties":false},"values":{"type":"array","items":{"type":"object","properties":{"metadata":{"type":"object","properties":{"containerId":{"type":"string","example":"nginx-669cc865b7-5458n"},"volumeId":{"type":"string","example":"data-volume-1"}},"required":["containerId"],"additionalProperties":false},"data":{"type":"array","items":{"type":"object","properties":{"value":{"type":"number","format":"float","example":0.5},"ts":{"type":"string","format":"date-time","example":"2023-03-21T15:01:17.310Z"}},"required":["value","ts"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}},"required":["values"],"additionalProperties":false},"bandwidth":{"type":"object","properties":{"metricInfo":{"type":"object","properties":{"metricId":{"type":"string","enum":["cpu","memory","networkIngress","networkEgress","tcpConnectionsOpen","diskUsage","requests","http4xxResponses","http5xxResponses","bandwidth","bandwidthVolume"],"description":"Type of metric to fetch"},"metricUnit":{"type":"string","enum":["pct","vCPU","mb","kbps","rps","count"],"example":"pct"},"metricResolution":{"type":"number","format":"float","example":10}},"required":["metricId","metricUnit"],"additionalProperties":false},"values":{"type":"array","items":{"type":"object","properties":{"metadata":{"type":"object","properties":{"containerId":{"type":"string","example":"nginx-669cc865b7-5458n"},"volumeId":{"type":"string","example":"data-volume-1"}},"required":["containerId"],"additionalProperties":false},"data":{"type":"array","items":{"type":"object","properties":{"value":{"type":"number","format":"float","example":0.5},"ts":{"type":"string","format":"date-time","example":"2023-03-21T15:01:17.310Z"}},"required":["value","ts"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}},"required":["values"],"additionalProperties":false},"bandwidthVolume":{"type":"object","properties":{"metricInfo":{"type":"object","properties":{"metricId":{"type":"string","enum":["cpu","memory","networkIngress","networkEgress","tcpConnectionsOpen","diskUsage","requests","http4xxResponses","http5xxResponses","bandwidth","bandwidthVolume"],"description":"Type of metric to fetch"},"metricUnit":{"type":"string","enum":["pct","vCPU","mb","kbps","rps","count"],"example":"pct"},"metricResolution":{"type":"number","format":"float","example":10}},"required":["metricId","metricUnit"],"additionalProperties":false},"values":{"type":"array","items":{"type":"object","properties":{"metadata":{"type":"object","properties":{"containerId":{"type":"string","example":"nginx-669cc865b7-5458n"},"volumeId":{"type":"string","example":"data-volume-1"}},"required":["containerId"],"additionalProperties":false},"data":{"type":"array","items":{"type":"object","properties":{"value":{"type":"number","format":"float","example":0.5},"ts":{"type":"string","format":"date-time","example":"2023-03-21T15:01:17.310Z"}},"required":["value","ts"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}},"required":["values"],"additionalProperties":false}},"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Jobs","project"],"security":[],"x-nf-jsclient":[{"title":"Range","description":"Query over a range","schema":{"type":"object","properties":{"runId":{"type":"string","minLength":36,"maxLength":36,"description":"Limits metrics to a specific job run id.","example":"93ec9390-b9bd-47f0-9bd1-b5983c42a6f2"},"containerName":{"type":"string","minLength":3,"maxLength":64,"description":"Limits metrics to a specific container.","example":"my-container-67d6d748c5-kgvwh","default":"all"},"metricTypes":{"type":"string","enum":["cpu","memory","networkIngress","networkEgress","tcpConnectionsOpen","diskUsage","requests","http4xxResponses","http5xxResponses","bandwidth","bandwidthVolume"],"description":"Type of metric. Multiple metric types can be selected by specifying the query parameter repeatedly."},"startTime":{"type":"string","format":"date-time","description":"Fetch metrics generated after this timestamp. Only valid for queryType: `range`.","example":"2023-02-16T14:00:00.000Z"},"endTime":{"type":"string","format":"date-time","description":"Fetch metrics generated before this timestamp. Only valid for queryType: `range`.","example":"2023-02-16T15:00:00.000Z"},"duration":{"type":"integer","description":"Range duration in seconds. If set, only one of `startTime` or `endTime` can be set.","example":600}},"additionalProperties":false},"x-nf-cli-command":["get","job","metrics-range"]},{"title":"Single","description":"Query a specific timestamp","schema":{"type":"object","properties":{"runId":{"type":"string","minLength":36,"maxLength":36,"description":"Limits metrics to a specific job run id.","example":"93ec9390-b9bd-47f0-9bd1-b5983c42a6f2"},"containerName":{"type":"string","minLength":3,"maxLength":64,"description":"Limits metrics to a specific container.","example":"my-container-67d6d748c5-kgvwh","default":"all"},"metricTypes":{"type":"string","enum":["cpu","memory","networkIngress","networkEgress","tcpConnectionsOpen","diskUsage","requests","http4xxResponses","http5xxResponses","bandwidth","bandwidthVolume"],"description":"Type of metric. Multiple metric types can be selected by specifying the query parameter repeatedly."},"timestamp":{"type":"string","format":"date-time","description":"Fetch metrics at this timestamp. If not provided will use current time. Only valid for queryType: `single`.","example":"2023-02-16T14:00:00.000Z"}},"additionalProperties":false},"x-nf-cli-command":["get","job","metrics"]}],"x-nf-permission-required":"Project > Jobs > Deployment > View Instance Metrics","x-nf-team-scoped":true,"x-nf-cli-command":["get","job","metrics"]},"v1-projects--projectId--jobs--jobId--metrics-get-team-scoped":{"operationId":"getProjectsJobsJobidMetrics","summary":"Get job metrics","description":"Get metrics for a job","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"jobId","type":"string","required":true,"description":"ID of the job","example":"example-job","in":"path","schema":{"name":"jobId","type":"string","required":true,"description":"ID of the job","example":"example-job","in":"path"}},{"name":"runId","type":"string","minLength":36,"maxLength":36,"description":"Limits metrics to a specific job run id.","examples":["93ec9390-b9bd-47f0-9bd1-b5983c42a6f2","93ec9390-b9bd-47f0-9bd1-b5983c42a6f2"],"in":"query","schema":{"name":"runId","type":"string","minLength":36,"maxLength":36,"description":"Limits metrics to a specific job run id.","examples":["93ec9390-b9bd-47f0-9bd1-b5983c42a6f2","93ec9390-b9bd-47f0-9bd1-b5983c42a6f2"],"in":"query"}},{"name":"containerName","type":"string","minLength":3,"maxLength":64,"description":"Limits metrics to a specific container.","examples":["my-container-67d6d748c5-kgvwh","my-container-67d6d748c5-kgvwh"],"default":"all","in":"query","schema":{"name":"containerName","type":"string","minLength":3,"maxLength":64,"description":"Limits metrics to a specific container.","examples":["my-container-67d6d748c5-kgvwh","my-container-67d6d748c5-kgvwh"],"default":"all","in":"query"}},{"name":"queryType","type":"string","enum":["range","single"],"description":"Selects metrics for specified timestamp.","examples":["range","single"],"default":"single","in":"query","schema":{"name":"queryType","type":"string","enum":["range","single"],"description":"Selects metrics for specified timestamp.","examples":["range","single"],"default":"single","in":"query"}},{"name":"metricTypes","type":"string","enum":["cpu","memory","networkIngress","networkEgress","tcpConnectionsOpen","diskUsage","requests","http4xxResponses","http5xxResponses","bandwidth","bandwidthVolume"],"description":"Type of metric. Multiple metric types can be selected by specifying the query parameter repeatedly.","in":"query","schema":{"name":"metricTypes","type":"string","enum":["cpu","memory","networkIngress","networkEgress","tcpConnectionsOpen","diskUsage","requests","http4xxResponses","http5xxResponses","bandwidth","bandwidthVolume"],"description":"Type of metric. Multiple metric types can be selected by specifying the query parameter repeatedly.","in":"query"}},{"name":"startTime","type":"string","format":"date-time","description":"Fetch metrics generated after this timestamp. Only valid for queryType: `range`.","example":"2023-02-16T14:00:00.000Z","in":"query","schema":{"name":"startTime","type":"string","format":"date-time","description":"Fetch metrics generated after this timestamp. Only valid for queryType: `range`.","example":"2023-02-16T14:00:00.000Z","in":"query"}},{"name":"endTime","type":"string","format":"date-time","description":"Fetch metrics generated before this timestamp. Only valid for queryType: `range`.","example":"2023-02-16T15:00:00.000Z","in":"query","schema":{"name":"endTime","type":"string","format":"date-time","description":"Fetch metrics generated before this timestamp. Only valid for queryType: `range`.","example":"2023-02-16T15:00:00.000Z","in":"query"}},{"name":"duration","type":"integer","description":"Range duration in seconds. If set, only one of `startTime` or `endTime` can be set.","example":600,"in":"query","schema":{"name":"duration","type":"integer","description":"Range duration in seconds. If set, only one of `startTime` or `endTime` can be set.","example":600,"in":"query"}},{"name":"time","type":"string","format":"date-time","description":"Fetch metrics at this timestamp. If not provided will use current time. Only valid for queryType: `single`.","example":"2023-02-16T14:00:00.000Z","in":"query","schema":{"name":"time","type":"string","format":"date-time","description":"Fetch metrics at this timestamp. If not provided will use current time. Only valid for queryType: `single`.","example":"2023-02-16T14:00:00.000Z","in":"query"}}],"responses":{"200":{"description":"List of metrics values","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"cpu":{"type":"object","properties":{"metricInfo":{"type":"object","properties":{"metricId":{"type":"string","enum":["cpu","memory","networkIngress","networkEgress","tcpConnectionsOpen","diskUsage","requests","http4xxResponses","http5xxResponses","bandwidth","bandwidthVolume"],"description":"Type of metric to fetch"},"metricUnit":{"type":"string","enum":["pct","vCPU","mb","kbps","rps","count"],"example":"pct"},"metricResolution":{"type":"number","format":"float","example":10}},"required":["metricId","metricUnit"],"additionalProperties":false},"values":{"type":"array","items":{"type":"object","properties":{"metadata":{"type":"object","properties":{"containerId":{"type":"string","example":"nginx-669cc865b7-5458n"},"volumeId":{"type":"string","example":"data-volume-1"}},"required":["containerId"],"additionalProperties":false},"data":{"type":"array","items":{"type":"object","properties":{"value":{"type":"number","format":"float","example":0.5},"ts":{"type":"string","format":"date-time","example":"2023-03-21T15:01:17.310Z"}},"required":["value","ts"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}},"required":["values"],"additionalProperties":false},"memory":{"type":"object","properties":{"metricInfo":{"type":"object","properties":{"metricId":{"type":"string","enum":["cpu","memory","networkIngress","networkEgress","tcpConnectionsOpen","diskUsage","requests","http4xxResponses","http5xxResponses","bandwidth","bandwidthVolume"],"description":"Type of metric to fetch"},"metricUnit":{"type":"string","enum":["pct","vCPU","mb","kbps","rps","count"],"example":"pct"},"metricResolution":{"type":"number","format":"float","example":10}},"required":["metricId","metricUnit"],"additionalProperties":false},"values":{"type":"array","items":{"type":"object","properties":{"metadata":{"type":"object","properties":{"containerId":{"type":"string","example":"nginx-669cc865b7-5458n"},"volumeId":{"type":"string","example":"data-volume-1"}},"required":["containerId"],"additionalProperties":false},"data":{"type":"array","items":{"type":"object","properties":{"value":{"type":"number","format":"float","example":0.5},"ts":{"type":"string","format":"date-time","example":"2023-03-21T15:01:17.310Z"}},"required":["value","ts"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}},"required":["values"],"additionalProperties":false},"networkIngress":{"type":"object","properties":{"metricInfo":{"type":"object","properties":{"metricId":{"type":"string","enum":["cpu","memory","networkIngress","networkEgress","tcpConnectionsOpen","diskUsage","requests","http4xxResponses","http5xxResponses","bandwidth","bandwidthVolume"],"description":"Type of metric to fetch"},"metricUnit":{"type":"string","enum":["pct","vCPU","mb","kbps","rps","count"],"example":"pct"},"metricResolution":{"type":"number","format":"float","example":10}},"required":["metricId","metricUnit"],"additionalProperties":false},"values":{"type":"array","items":{"type":"object","properties":{"metadata":{"type":"object","properties":{"containerId":{"type":"string","example":"nginx-669cc865b7-5458n"},"volumeId":{"type":"string","example":"data-volume-1"}},"required":["containerId"],"additionalProperties":false},"data":{"type":"array","items":{"type":"object","properties":{"value":{"type":"number","format":"float","example":0.5},"ts":{"type":"string","format":"date-time","example":"2023-03-21T15:01:17.310Z"}},"required":["value","ts"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}},"required":["values"],"additionalProperties":false},"networkEgress":{"type":"object","properties":{"metricInfo":{"type":"object","properties":{"metricId":{"type":"string","enum":["cpu","memory","networkIngress","networkEgress","tcpConnectionsOpen","diskUsage","requests","http4xxResponses","http5xxResponses","bandwidth","bandwidthVolume"],"description":"Type of metric to fetch"},"metricUnit":{"type":"string","enum":["pct","vCPU","mb","kbps","rps","count"],"example":"pct"},"metricResolution":{"type":"number","format":"float","example":10}},"required":["metricId","metricUnit"],"additionalProperties":false},"values":{"type":"array","items":{"type":"object","properties":{"metadata":{"type":"object","properties":{"containerId":{"type":"string","example":"nginx-669cc865b7-5458n"},"volumeId":{"type":"string","example":"data-volume-1"}},"required":["containerId"],"additionalProperties":false},"data":{"type":"array","items":{"type":"object","properties":{"value":{"type":"number","format":"float","example":0.5},"ts":{"type":"string","format":"date-time","example":"2023-03-21T15:01:17.310Z"}},"required":["value","ts"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}},"required":["values"],"additionalProperties":false},"tcpConnectionsOpen":{"type":"object","properties":{"metricInfo":{"type":"object","properties":{"metricId":{"type":"string","enum":["cpu","memory","networkIngress","networkEgress","tcpConnectionsOpen","diskUsage","requests","http4xxResponses","http5xxResponses","bandwidth","bandwidthVolume"],"description":"Type of metric to fetch"},"metricUnit":{"type":"string","enum":["pct","vCPU","mb","kbps","rps","count"],"example":"pct"},"metricResolution":{"type":"number","format":"float","example":10}},"required":["metricId","metricUnit"],"additionalProperties":false},"values":{"type":"array","items":{"type":"object","properties":{"metadata":{"type":"object","properties":{"containerId":{"type":"string","example":"nginx-669cc865b7-5458n"},"volumeId":{"type":"string","example":"data-volume-1"}},"required":["containerId"],"additionalProperties":false},"data":{"type":"array","items":{"type":"object","properties":{"value":{"type":"number","format":"float","example":0.5},"ts":{"type":"string","format":"date-time","example":"2023-03-21T15:01:17.310Z"}},"required":["value","ts"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}},"required":["values"],"additionalProperties":false},"diskUsage":{"type":"object","properties":{"metricInfo":{"type":"object","properties":{"metricId":{"type":"string","enum":["cpu","memory","networkIngress","networkEgress","tcpConnectionsOpen","diskUsage","requests","http4xxResponses","http5xxResponses","bandwidth","bandwidthVolume"],"description":"Type of metric to fetch"},"metricUnit":{"type":"string","enum":["pct","vCPU","mb","kbps","rps","count"],"example":"pct"},"metricResolution":{"type":"number","format":"float","example":10}},"required":["metricId","metricUnit"],"additionalProperties":false},"values":{"type":"array","items":{"type":"object","properties":{"metadata":{"type":"object","properties":{"containerId":{"type":"string","example":"nginx-669cc865b7-5458n"},"volumeId":{"type":"string","example":"data-volume-1"}},"required":["containerId"],"additionalProperties":false},"data":{"type":"array","items":{"type":"object","properties":{"value":{"type":"number","format":"float","example":0.5},"ts":{"type":"string","format":"date-time","example":"2023-03-21T15:01:17.310Z"}},"required":["value","ts"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}},"required":["values"],"additionalProperties":false},"requests":{"type":"object","properties":{"metricInfo":{"type":"object","properties":{"metricId":{"type":"string","enum":["cpu","memory","networkIngress","networkEgress","tcpConnectionsOpen","diskUsage","requests","http4xxResponses","http5xxResponses","bandwidth","bandwidthVolume"],"description":"Type of metric to fetch"},"metricUnit":{"type":"string","enum":["pct","vCPU","mb","kbps","rps","count"],"example":"pct"},"metricResolution":{"type":"number","format":"float","example":10}},"required":["metricId","metricUnit"],"additionalProperties":false},"values":{"type":"array","items":{"type":"object","properties":{"metadata":{"type":"object","properties":{"containerId":{"type":"string","example":"nginx-669cc865b7-5458n"},"volumeId":{"type":"string","example":"data-volume-1"}},"required":["containerId"],"additionalProperties":false},"data":{"type":"array","items":{"type":"object","properties":{"value":{"type":"number","format":"float","example":0.5},"ts":{"type":"string","format":"date-time","example":"2023-03-21T15:01:17.310Z"}},"required":["value","ts"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}},"required":["values"],"additionalProperties":false},"http4xxResponses":{"type":"object","properties":{"metricInfo":{"type":"object","properties":{"metricId":{"type":"string","enum":["cpu","memory","networkIngress","networkEgress","tcpConnectionsOpen","diskUsage","requests","http4xxResponses","http5xxResponses","bandwidth","bandwidthVolume"],"description":"Type of metric to fetch"},"metricUnit":{"type":"string","enum":["pct","vCPU","mb","kbps","rps","count"],"example":"pct"},"metricResolution":{"type":"number","format":"float","example":10}},"required":["metricId","metricUnit"],"additionalProperties":false},"values":{"type":"array","items":{"type":"object","properties":{"metadata":{"type":"object","properties":{"containerId":{"type":"string","example":"nginx-669cc865b7-5458n"},"volumeId":{"type":"string","example":"data-volume-1"}},"required":["containerId"],"additionalProperties":false},"data":{"type":"array","items":{"type":"object","properties":{"value":{"type":"number","format":"float","example":0.5},"ts":{"type":"string","format":"date-time","example":"2023-03-21T15:01:17.310Z"}},"required":["value","ts"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}},"required":["values"],"additionalProperties":false},"http5xxResponses":{"type":"object","properties":{"metricInfo":{"type":"object","properties":{"metricId":{"type":"string","enum":["cpu","memory","networkIngress","networkEgress","tcpConnectionsOpen","diskUsage","requests","http4xxResponses","http5xxResponses","bandwidth","bandwidthVolume"],"description":"Type of metric to fetch"},"metricUnit":{"type":"string","enum":["pct","vCPU","mb","kbps","rps","count"],"example":"pct"},"metricResolution":{"type":"number","format":"float","example":10}},"required":["metricId","metricUnit"],"additionalProperties":false},"values":{"type":"array","items":{"type":"object","properties":{"metadata":{"type":"object","properties":{"containerId":{"type":"string","example":"nginx-669cc865b7-5458n"},"volumeId":{"type":"string","example":"data-volume-1"}},"required":["containerId"],"additionalProperties":false},"data":{"type":"array","items":{"type":"object","properties":{"value":{"type":"number","format":"float","example":0.5},"ts":{"type":"string","format":"date-time","example":"2023-03-21T15:01:17.310Z"}},"required":["value","ts"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}},"required":["values"],"additionalProperties":false},"bandwidth":{"type":"object","properties":{"metricInfo":{"type":"object","properties":{"metricId":{"type":"string","enum":["cpu","memory","networkIngress","networkEgress","tcpConnectionsOpen","diskUsage","requests","http4xxResponses","http5xxResponses","bandwidth","bandwidthVolume"],"description":"Type of metric to fetch"},"metricUnit":{"type":"string","enum":["pct","vCPU","mb","kbps","rps","count"],"example":"pct"},"metricResolution":{"type":"number","format":"float","example":10}},"required":["metricId","metricUnit"],"additionalProperties":false},"values":{"type":"array","items":{"type":"object","properties":{"metadata":{"type":"object","properties":{"containerId":{"type":"string","example":"nginx-669cc865b7-5458n"},"volumeId":{"type":"string","example":"data-volume-1"}},"required":["containerId"],"additionalProperties":false},"data":{"type":"array","items":{"type":"object","properties":{"value":{"type":"number","format":"float","example":0.5},"ts":{"type":"string","format":"date-time","example":"2023-03-21T15:01:17.310Z"}},"required":["value","ts"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}},"required":["values"],"additionalProperties":false},"bandwidthVolume":{"type":"object","properties":{"metricInfo":{"type":"object","properties":{"metricId":{"type":"string","enum":["cpu","memory","networkIngress","networkEgress","tcpConnectionsOpen","diskUsage","requests","http4xxResponses","http5xxResponses","bandwidth","bandwidthVolume"],"description":"Type of metric to fetch"},"metricUnit":{"type":"string","enum":["pct","vCPU","mb","kbps","rps","count"],"example":"pct"},"metricResolution":{"type":"number","format":"float","example":10}},"required":["metricId","metricUnit"],"additionalProperties":false},"values":{"type":"array","items":{"type":"object","properties":{"metadata":{"type":"object","properties":{"containerId":{"type":"string","example":"nginx-669cc865b7-5458n"},"volumeId":{"type":"string","example":"data-volume-1"}},"required":["containerId"],"additionalProperties":false},"data":{"type":"array","items":{"type":"object","properties":{"value":{"type":"number","format":"float","example":0.5},"ts":{"type":"string","format":"date-time","example":"2023-03-21T15:01:17.310Z"}},"required":["value","ts"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}},"required":["values"],"additionalProperties":false}},"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Jobs","project"],"security":[],"x-nf-jsclient":[{"title":"Range","description":"Query over a range","schema":{"type":"object","properties":{"runId":{"type":"string","minLength":36,"maxLength":36,"description":"Limits metrics to a specific job run id.","example":"93ec9390-b9bd-47f0-9bd1-b5983c42a6f2"},"containerName":{"type":"string","minLength":3,"maxLength":64,"description":"Limits metrics to a specific container.","example":"my-container-67d6d748c5-kgvwh","default":"all"},"metricTypes":{"type":"string","enum":["cpu","memory","networkIngress","networkEgress","tcpConnectionsOpen","diskUsage","requests","http4xxResponses","http5xxResponses","bandwidth","bandwidthVolume"],"description":"Type of metric. Multiple metric types can be selected by specifying the query parameter repeatedly."},"startTime":{"type":"string","format":"date-time","description":"Fetch metrics generated after this timestamp. Only valid for queryType: `range`.","example":"2023-02-16T14:00:00.000Z"},"endTime":{"type":"string","format":"date-time","description":"Fetch metrics generated before this timestamp. Only valid for queryType: `range`.","example":"2023-02-16T15:00:00.000Z"},"duration":{"type":"integer","description":"Range duration in seconds. If set, only one of `startTime` or `endTime` can be set.","example":600}},"additionalProperties":false},"x-nf-cli-command":["get","job","metrics-range"]},{"title":"Single","description":"Query a specific timestamp","schema":{"type":"object","properties":{"runId":{"type":"string","minLength":36,"maxLength":36,"description":"Limits metrics to a specific job run id.","example":"93ec9390-b9bd-47f0-9bd1-b5983c42a6f2"},"containerName":{"type":"string","minLength":3,"maxLength":64,"description":"Limits metrics to a specific container.","example":"my-container-67d6d748c5-kgvwh","default":"all"},"metricTypes":{"type":"string","enum":["cpu","memory","networkIngress","networkEgress","tcpConnectionsOpen","diskUsage","requests","http4xxResponses","http5xxResponses","bandwidth","bandwidthVolume"],"description":"Type of metric. Multiple metric types can be selected by specifying the query parameter repeatedly."},"timestamp":{"type":"string","format":"date-time","description":"Fetch metrics at this timestamp. If not provided will use current time. Only valid for queryType: `single`.","example":"2023-02-16T14:00:00.000Z"}},"additionalProperties":false},"x-nf-cli-command":["get","job","metrics"]}],"x-nf-permission-required":"Project > Jobs > Deployment > View Instance Metrics","x-nf-team-scoped":true,"x-nf-cli-command":["get","job","metrics"]},"v1-projects--projectId--jobs--jobId--pause-post":{"operationId":"postProjectsJobsJobidPause","summary":"Pause job","description":"Pause the given job.","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"jobId","type":"string","required":true,"description":"ID of the job","example":"example-job","in":"path","schema":{"name":"jobId","type":"string","required":true,"description":"ID of the job","example":"example-job","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Jobs","project"],"security":[],"x-nf-permission-required":"Project > Jobs > General > Update","x-nf-team-scoped":true,"x-nf-cli-command":["pause","job"]},"v1-projects--projectId--jobs--jobId--pause-post-team-scoped":{"operationId":"postProjectsJobsJobidPause","summary":"Pause job","description":"Pause the given job.","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"jobId","type":"string","required":true,"description":"ID of the job","example":"example-job","in":"path","schema":{"name":"jobId","type":"string","required":true,"description":"ID of the job","example":"example-job","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Jobs","project"],"security":[],"x-nf-permission-required":"Project > Jobs > General > Update","x-nf-team-scoped":true,"x-nf-cli-command":["pause","job"]},"v1-projects--projectId--jobs--jobId--pull-requests-get":{"operationId":"getProjectsJobsJobidPullRequests","summary":"Get job pull requests","description":"Gets information about the pull-requests of the given job.","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"jobId","type":"string","required":true,"description":"ID of the job","example":"example-job","in":"path","schema":{"name":"jobId","type":"string","required":true,"description":"ID of the job","example":"example-job","in":"path"}},{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query","schema":{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query"}},{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query","schema":{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query"}},{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query","schema":{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query"}}],"responses":{"200":{"description":"Data about the job's available pull requests.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"pullRequests":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","description":"ID number of the pull request.","example":1},"state":{"type":"string","description":"Status of the pull request.","example":"OPEN"},"title":{"type":"string","description":"Title of the pull request.","example":"Add new feature handling"},"source":{"type":"string","description":"Name of the branch the pull request is merging from.","example":"feature/new-feature"},"destination":{"type":"string","description":"Name of the branch the pull request is being merged into.","example":"main"},"sha":{"type":"string","description":"SHA of the most recent commit of the pull request.","example":"4f101d8821aeb3e4f81f95f3e886a2759ba7b9db"},"created_at":{"type":"string","format":"date-time","description":"The timestamp the pull request was opened.","example":"2021-03-22T11:05:52.000Z"},"updated_at":{"type":"string","format":"date-time","description":"The timestamp the pull request was last updated at.","example":"2021-05-11T16:05:43.000Z"},"html_url":{"type":"string"}},"required":["id","state","title","source","destination","sha","created_at","updated_at","html_url"],"additionalProperties":false,"description":"Details about a pull request."},"description":"A list of pull requests for this repository."}},"additionalProperties":false,"description":"Result data."},"pagination":{"type":"object","properties":{"hasNextPage":{"type":"boolean","description":"Is there another page of results available?","example":false},"cursor":{"type":"string","description":"The cursor to access the next page of results."},"count":{"type":"number","format":"float","description":"The number of results returned by this request.","example":1}},"required":["hasNextPage","count"],"additionalProperties":false,"description":"Data about the endpoint pagination."}},"required":["data","pagination"],"additionalProperties":false,"description":"Response object."}}},"tags":["Jobs","project"],"security":[],"x-nf-permission-required":"Project > Jobs > General > Read","x-nf-team-scoped":true,"x-nf-cli-command":["get","job","pull-requests"]},"v1-projects--projectId--jobs--jobId--pull-requests-get-team-scoped":{"operationId":"getProjectsJobsJobidPullRequests","summary":"Get job pull requests","description":"Gets information about the pull-requests of the given job.","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"jobId","type":"string","required":true,"description":"ID of the job","example":"example-job","in":"path","schema":{"name":"jobId","type":"string","required":true,"description":"ID of the job","example":"example-job","in":"path"}},{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query","schema":{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query"}},{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query","schema":{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query"}},{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query","schema":{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query"}}],"responses":{"200":{"description":"Data about the job's available pull requests.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"pullRequests":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","description":"ID number of the pull request.","example":1},"state":{"type":"string","description":"Status of the pull request.","example":"OPEN"},"title":{"type":"string","description":"Title of the pull request.","example":"Add new feature handling"},"source":{"type":"string","description":"Name of the branch the pull request is merging from.","example":"feature/new-feature"},"destination":{"type":"string","description":"Name of the branch the pull request is being merged into.","example":"main"},"sha":{"type":"string","description":"SHA of the most recent commit of the pull request.","example":"4f101d8821aeb3e4f81f95f3e886a2759ba7b9db"},"created_at":{"type":"string","format":"date-time","description":"The timestamp the pull request was opened.","example":"2021-03-22T11:05:52.000Z"},"updated_at":{"type":"string","format":"date-time","description":"The timestamp the pull request was last updated at.","example":"2021-05-11T16:05:43.000Z"},"html_url":{"type":"string"}},"required":["id","state","title","source","destination","sha","created_at","updated_at","html_url"],"additionalProperties":false,"description":"Details about a pull request."},"description":"A list of pull requests for this repository."}},"additionalProperties":false,"description":"Result data."},"pagination":{"type":"object","properties":{"hasNextPage":{"type":"boolean","description":"Is there another page of results available?","example":false},"cursor":{"type":"string","description":"The cursor to access the next page of results."},"count":{"type":"number","format":"float","description":"The number of results returned by this request.","example":1}},"required":["hasNextPage","count"],"additionalProperties":false,"description":"Data about the endpoint pagination."}},"required":["data","pagination"],"additionalProperties":false,"description":"Response object."}}},"tags":["Jobs","project"],"security":[],"x-nf-permission-required":"Project > Jobs > General > Read","x-nf-team-scoped":true,"x-nf-cli-command":["get","job","pull-requests"]},"v1-projects--projectId--jobs--jobId--resume-post":{"operationId":"postProjectsJobsJobidResume","summary":"Resume job","description":"Resumes the given job. Optionally takes several arguments to override resumed settings.","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"jobId","type":"string","required":true,"description":"ID of the job","example":"example-job","in":"path","schema":{"name":"jobId","type":"string","required":true,"description":"ID of the job","example":"example-job","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}},"409":{"description":"The job could not be resumed as it is not paused."}},"tags":["Jobs","project"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"suspended":{"type":"boolean","description":"In the case of cron jobs, whether scheduling should be paused.","example":false},"disabledCI":{"type":"boolean","description":"Whether CI should be disabled","example":false},"disabledCD":{"type":"boolean","description":"Whether CD should be disabled","example":false}},"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Project > Jobs > General > Update","x-nf-team-scoped":true,"x-nf-cli-command":["resume","job"]},"v1-projects--projectId--jobs--jobId--resume-post-team-scoped":{"operationId":"postProjectsJobsJobidResume","summary":"Resume job","description":"Resumes the given job. Optionally takes several arguments to override resumed settings.","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"jobId","type":"string","required":true,"description":"ID of the job","example":"example-job","in":"path","schema":{"name":"jobId","type":"string","required":true,"description":"ID of the job","example":"example-job","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}},"409":{"description":"The job could not be resumed as it is not paused."}},"tags":["Jobs","project"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"suspended":{"type":"boolean","description":"In the case of cron jobs, whether scheduling should be paused.","example":false},"disabledCI":{"type":"boolean","description":"Whether CI should be disabled","example":false},"disabledCD":{"type":"boolean","description":"Whether CD should be disabled","example":false}},"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Project > Jobs > General > Update","x-nf-team-scoped":true,"x-nf-cli-command":["resume","job"]},"v1-projects--projectId--jobs--jobId--runs-get":{"operationId":"getProjectsJobsJobidRuns","summary":"Get job runs","description":"Fetches run history for the given job","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"jobId","type":"string","required":true,"description":"ID of the job","example":"example-job","in":"path","schema":{"name":"jobId","type":"string","required":true,"description":"ID of the job","example":"example-job","in":"path"}},{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query","schema":{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query"}},{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query","schema":{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query"}},{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query","schema":{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query"}}],"responses":{"200":{"description":"A list of runs for this job.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"runs":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the job run","example":"d34582a4-35bd-4c71-8e7c-e36999b88723"},"active":{"type":"integer","enum":[0,1],"description":"Whether the run is currently in progress","example":0},"backoffLimit":{"type":"integer","minimum":0,"description":"The number of attempts to retry this job run before it is marked as failed.","example":0},"completions":{"type":"integer","minimum":0,"description":"The number of times this job run has concluded successfully or with an error.","example":1},"concluded":{"type":"boolean","description":"Has the job run finished?","example":true},"failed":{"type":"integer","enum":[0,1],"description":"Whether this job run failed to complete successfully","example":0},"runName":{"type":"string","description":"The name of the job run","example":"example-job-5fcf67bc56e1913e21d49504"},"status":{"type":"string","enum":["SUCCESS","RUNNING","FAILED"],"description":"A string representing the status of the job. Either SUCCESS, RUNNING or FAILED","example":"SUCCESS"},"succeeded":{"type":"integer","enum":[0,1],"description":"Whether this job run completed successfully","example":0},"startedAt":{"type":"string","description":"The timestamp when the job run started.","example":"2020-12-08T11:47:08Z"},"concludedAt":{"type":"string","description":"The timestamp when the job run concluded.","example":"2020-12-08T11:52:08Z"}},"required":["id","active","backoffLimit","completions","concluded","failed","runName","status","succeeded","startedAt","concludedAt"],"additionalProperties":false},"description":"An array of job run objects."}},"required":["runs"],"additionalProperties":false,"description":"Result data."},"pagination":{"type":"object","properties":{"hasNextPage":{"type":"boolean","description":"Is there another page of results available?","example":false},"cursor":{"type":"string","description":"The cursor to access the next page of results."},"count":{"type":"number","format":"float","description":"The number of results returned by this request.","example":1}},"required":["hasNextPage","count"],"additionalProperties":false,"description":"Data about the endpoint pagination."}},"required":["data","pagination"],"additionalProperties":false,"description":"Response object."}}},"tags":["Jobs","project"],"security":[],"x-nf-permission-required":"Project > Jobs > General > Read","x-nf-team-scoped":true,"x-nf-cli-command":["get","job","runs"]},"v1-projects--projectId--jobs--jobId--runs-get-team-scoped":{"operationId":"getProjectsJobsJobidRuns","summary":"Get job runs","description":"Fetches run history for the given job","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"jobId","type":"string","required":true,"description":"ID of the job","example":"example-job","in":"path","schema":{"name":"jobId","type":"string","required":true,"description":"ID of the job","example":"example-job","in":"path"}},{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query","schema":{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query"}},{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query","schema":{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query"}},{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query","schema":{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query"}}],"responses":{"200":{"description":"A list of runs for this job.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"runs":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the job run","example":"d34582a4-35bd-4c71-8e7c-e36999b88723"},"active":{"type":"integer","enum":[0,1],"description":"Whether the run is currently in progress","example":0},"backoffLimit":{"type":"integer","minimum":0,"description":"The number of attempts to retry this job run before it is marked as failed.","example":0},"completions":{"type":"integer","minimum":0,"description":"The number of times this job run has concluded successfully or with an error.","example":1},"concluded":{"type":"boolean","description":"Has the job run finished?","example":true},"failed":{"type":"integer","enum":[0,1],"description":"Whether this job run failed to complete successfully","example":0},"runName":{"type":"string","description":"The name of the job run","example":"example-job-5fcf67bc56e1913e21d49504"},"status":{"type":"string","enum":["SUCCESS","RUNNING","FAILED"],"description":"A string representing the status of the job. Either SUCCESS, RUNNING or FAILED","example":"SUCCESS"},"succeeded":{"type":"integer","enum":[0,1],"description":"Whether this job run completed successfully","example":0},"startedAt":{"type":"string","description":"The timestamp when the job run started.","example":"2020-12-08T11:47:08Z"},"concludedAt":{"type":"string","description":"The timestamp when the job run concluded.","example":"2020-12-08T11:52:08Z"}},"required":["id","active","backoffLimit","completions","concluded","failed","runName","status","succeeded","startedAt","concludedAt"],"additionalProperties":false},"description":"An array of job run objects."}},"required":["runs"],"additionalProperties":false,"description":"Result data."},"pagination":{"type":"object","properties":{"hasNextPage":{"type":"boolean","description":"Is there another page of results available?","example":false},"cursor":{"type":"string","description":"The cursor to access the next page of results."},"count":{"type":"number","format":"float","description":"The number of results returned by this request.","example":1}},"required":["hasNextPage","count"],"additionalProperties":false,"description":"Data about the endpoint pagination."}},"required":["data","pagination"],"additionalProperties":false,"description":"Response object."}}},"tags":["Jobs","project"],"security":[],"x-nf-permission-required":"Project > Jobs > General > Read","x-nf-team-scoped":true,"x-nf-cli-command":["get","job","runs"]},"v1-projects--projectId--jobs--jobId--runs-post":{"operationId":"postProjectsJobsJobidRuns","summary":"Run job","description":"Starts a new job run for the given job","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"jobId","type":"string","required":true,"description":"ID of the job","example":"example-job","in":"path","schema":{"name":"jobId","type":"string","required":true,"description":"ID of the job","example":"example-job","in":"path"}}],"responses":{"200":{"description":"Details about the new job run.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the job run","example":"d34582a4-35bd-4c71-8e7c-e36999b88723"},"runName":{"type":"string","description":"The name of the job run","example":"example-job-5fcf67bc56e1913e21d49504"}},"required":["id","runName"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Jobs","project"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"runtimeEnvironment":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"An object containing the environment variables overrides to use when running the job. Keys may only contain letters, numbers, hyphens, forward slashes and dots.","example":{"VARIABLE_1":"abcdef","VARIABLE_2":"12345"}},"runtimeFiles":{"type":"object","properties":{},"description":"Secret files as JSON object, encrypted at rest. File path must be absolute","example":{"/dir/fileName":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"dockerSecretMounts":{"type":"object","properties":{},"description":"Docker secret mount contents as JSON object, encrypted at rest. Must be a valid Docker secret mount identifier","example":{"example-secret-mount_1":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"billing":{"type":"object","properties":{"deploymentPlan":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The ID of the deployment plan override to use.","example":"nf-compute-20"}},"additionalProperties":false},"deployment":{"oneOf":[{"type":"object","properties":{"docker":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customEntrypoint","customCommand","customEntrypointCustomCommand"],"description":"Type of entrypoint & command override configuration","example":"default"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be used. Required in case where `configType` is `customEntrypoint` or `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be used. Required in case where `configType` is `customCommand` or `customEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of docker runtime"},"buildpack":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customProcess","customCommand","customEntrypointCustomCommand","originalEntrypointCustomCommand"],"description":"Type of buildpack run configuration"},"customProcess":{"type":"string","description":"Custom process which should be run. Required in case where `configType` is `customProcess`"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be run. Required in case where `configType` is `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be run. Required in case where `configType` is `customCommand`, `customEntrypointCustomCommand` or `originalEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of buildpack runtime"},"storage":{"type":"object","properties":{"useHdbStorage":{"type":"boolean"},"usePdSsdStorage":{"type":"boolean"},"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":1024,"description":"Ephemeral storage per container in MB","example":1024}},"additionalProperties":false},"shmSize":{"type":"integer","minimum":64,"description":"Configures the amount of available memory-backed disk space available to /dev/shm"}},"additionalProperties":false},"internal":{"type":"object","properties":{"id":{"anyOf":[{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":54,"example":"example-build-service"},{"type":"string","example":"example-project/example-build-service"}],"description":"ID of the build service to deploy"},"branch":{"type":"string","description":"Branch to deploy","example":"master"},"buildSHA":{"oneOf":[{"type":"string","minLength":40,"maxLength":40,"description":"A commit sha."},{"type":"string","enum":["latest"],"description":"Latest commit."}],"description":"Commit SHA to deploy, or 'latest' to deploy the most recent commit","example":"latest"},"buildId":{"type":"string","description":"ID of the build that should be deployed","example":"premium-guide-6393"}},"additionalProperties":false,"description":"Optional: Specify the commit to run"}},"additionalProperties":false,"description":"Optional: Override the run to use a previously built commit"},{"type":"object","properties":{"docker":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customEntrypoint","customCommand","customEntrypointCustomCommand"],"description":"Type of entrypoint & command override configuration","example":"default"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be used. Required in case where `configType` is `customEntrypoint` or `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be used. Required in case where `configType` is `customCommand` or `customEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of docker runtime"},"buildpack":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customProcess","customCommand","customEntrypointCustomCommand","originalEntrypointCustomCommand"],"description":"Type of buildpack run configuration"},"customProcess":{"type":"string","description":"Custom process which should be run. Required in case where `configType` is `customProcess`"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be run. Required in case where `configType` is `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be run. Required in case where `configType` is `customCommand`, `customEntrypointCustomCommand` or `originalEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of buildpack runtime"},"storage":{"type":"object","properties":{"useHdbStorage":{"type":"boolean"},"usePdSsdStorage":{"type":"boolean"},"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":1024,"description":"Ephemeral storage per container in MB","example":1024}},"additionalProperties":false},"shmSize":{"type":"integer","minimum":64,"description":"Configures the amount of available memory-backed disk space available to /dev/shm"}},"additionalProperties":false},"external":{"type":"object","properties":{"imagePath":{"type":"string","pattern":"^(?:(?:https?:\\/\\/)?([a-zA-Z0-9\\-]+\\.[a-zA-Z0-9\\.\\-]+)(\\/v1)?)?(?:\\/)?([a-zA-Z/-9\\.\\-_]+)(?:\\:([a-zA-Z/-9\\.\\-_\\:]+)|\\@([a-zA-Z/-9\\.\\-_\\:]+))$","description":"Image to be deployed. When not deploying from Dockerhub the URL must be specified.","example":"nginx:latest"},"credentials":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"ID of the saved credentials to use to access this external image.","example":"example-credentials"}},"required":["imagePath"],"additionalProperties":false,"description":"Optional: Specify the external image to run"}},"additionalProperties":false,"description":"Optional: Override the run to use an external image"}],"description":"Override the job run deployment source."}},"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Project > Jobs > General > Read","x-nf-team-scoped":true,"x-nf-cli-command":["start","job","run"]},"v1-projects--projectId--jobs--jobId--runs-post-team-scoped":{"operationId":"postProjectsJobsJobidRuns","summary":"Run job","description":"Starts a new job run for the given job","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"jobId","type":"string","required":true,"description":"ID of the job","example":"example-job","in":"path","schema":{"name":"jobId","type":"string","required":true,"description":"ID of the job","example":"example-job","in":"path"}}],"responses":{"200":{"description":"Details about the new job run.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the job run","example":"d34582a4-35bd-4c71-8e7c-e36999b88723"},"runName":{"type":"string","description":"The name of the job run","example":"example-job-5fcf67bc56e1913e21d49504"}},"required":["id","runName"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Jobs","project"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"runtimeEnvironment":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"An object containing the environment variables overrides to use when running the job. Keys may only contain letters, numbers, hyphens, forward slashes and dots.","example":{"VARIABLE_1":"abcdef","VARIABLE_2":"12345"}},"runtimeFiles":{"type":"object","properties":{},"description":"Secret files as JSON object, encrypted at rest. File path must be absolute","example":{"/dir/fileName":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"dockerSecretMounts":{"type":"object","properties":{},"description":"Docker secret mount contents as JSON object, encrypted at rest. Must be a valid Docker secret mount identifier","example":{"example-secret-mount_1":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"billing":{"type":"object","properties":{"deploymentPlan":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The ID of the deployment plan override to use.","example":"nf-compute-20"}},"additionalProperties":false},"deployment":{"oneOf":[{"type":"object","properties":{"docker":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customEntrypoint","customCommand","customEntrypointCustomCommand"],"description":"Type of entrypoint & command override configuration","example":"default"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be used. Required in case where `configType` is `customEntrypoint` or `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be used. Required in case where `configType` is `customCommand` or `customEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of docker runtime"},"buildpack":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customProcess","customCommand","customEntrypointCustomCommand","originalEntrypointCustomCommand"],"description":"Type of buildpack run configuration"},"customProcess":{"type":"string","description":"Custom process which should be run. Required in case where `configType` is `customProcess`"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be run. Required in case where `configType` is `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be run. Required in case where `configType` is `customCommand`, `customEntrypointCustomCommand` or `originalEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of buildpack runtime"},"storage":{"type":"object","properties":{"useHdbStorage":{"type":"boolean"},"usePdSsdStorage":{"type":"boolean"},"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":1024,"description":"Ephemeral storage per container in MB","example":1024}},"additionalProperties":false},"shmSize":{"type":"integer","minimum":64,"description":"Configures the amount of available memory-backed disk space available to /dev/shm"}},"additionalProperties":false},"internal":{"type":"object","properties":{"id":{"anyOf":[{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":54,"example":"example-build-service"},{"type":"string","example":"example-project/example-build-service"}],"description":"ID of the build service to deploy"},"branch":{"type":"string","description":"Branch to deploy","example":"master"},"buildSHA":{"oneOf":[{"type":"string","minLength":40,"maxLength":40,"description":"A commit sha."},{"type":"string","enum":["latest"],"description":"Latest commit."}],"description":"Commit SHA to deploy, or 'latest' to deploy the most recent commit","example":"latest"},"buildId":{"type":"string","description":"ID of the build that should be deployed","example":"premium-guide-6393"}},"additionalProperties":false,"description":"Optional: Specify the commit to run"}},"additionalProperties":false,"description":"Optional: Override the run to use a previously built commit"},{"type":"object","properties":{"docker":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customEntrypoint","customCommand","customEntrypointCustomCommand"],"description":"Type of entrypoint & command override configuration","example":"default"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be used. Required in case where `configType` is `customEntrypoint` or `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be used. Required in case where `configType` is `customCommand` or `customEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of docker runtime"},"buildpack":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customProcess","customCommand","customEntrypointCustomCommand","originalEntrypointCustomCommand"],"description":"Type of buildpack run configuration"},"customProcess":{"type":"string","description":"Custom process which should be run. Required in case where `configType` is `customProcess`"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be run. Required in case where `configType` is `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be run. Required in case where `configType` is `customCommand`, `customEntrypointCustomCommand` or `originalEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of buildpack runtime"},"storage":{"type":"object","properties":{"useHdbStorage":{"type":"boolean"},"usePdSsdStorage":{"type":"boolean"},"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":1024,"description":"Ephemeral storage per container in MB","example":1024}},"additionalProperties":false},"shmSize":{"type":"integer","minimum":64,"description":"Configures the amount of available memory-backed disk space available to /dev/shm"}},"additionalProperties":false},"external":{"type":"object","properties":{"imagePath":{"type":"string","pattern":"^(?:(?:https?:\\/\\/)?([a-zA-Z0-9\\-]+\\.[a-zA-Z0-9\\.\\-]+)(\\/v1)?)?(?:\\/)?([a-zA-Z/-9\\.\\-_]+)(?:\\:([a-zA-Z/-9\\.\\-_\\:]+)|\\@([a-zA-Z/-9\\.\\-_\\:]+))$","description":"Image to be deployed. When not deploying from Dockerhub the URL must be specified.","example":"nginx:latest"},"credentials":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"ID of the saved credentials to use to access this external image.","example":"example-credentials"}},"required":["imagePath"],"additionalProperties":false,"description":"Optional: Specify the external image to run"}},"additionalProperties":false,"description":"Optional: Override the run to use an external image"}],"description":"Override the job run deployment source."}},"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Project > Jobs > General > Read","x-nf-team-scoped":true,"x-nf-cli-command":["start","job","run"]},"v1-projects--projectId--jobs--jobId--runs--runId--get":{"operationId":"getProjectsJobsJobidRunsRunid","summary":"Get run details","description":"Returns data about the given job run","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"jobId","type":"string","required":true,"description":"ID of the job","example":"example-job","in":"path","schema":{"name":"jobId","type":"string","required":true,"description":"ID of the job","example":"example-job","in":"path"}},{"name":"runId","type":"string","required":true,"description":"ID of the job run","example":"d34582a4-35bd-4c71-8e7c-e36999b88723","in":"path","schema":{"name":"runId","type":"string","required":true,"description":"ID of the job run","example":"d34582a4-35bd-4c71-8e7c-e36999b88723","in":"path"}}],"responses":{"200":{"description":"Details about the given job run.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the job run","example":"d34582a4-35bd-4c71-8e7c-e36999b88723"},"active":{"type":"integer","enum":[0,1],"description":"Whether the run is currently in progress","example":0},"backoffLimit":{"type":"integer","minimum":0,"description":"The number of attempts to retry this job run before it is marked as failed.","example":0},"completions":{"type":"integer","minimum":0,"description":"The number of times this job run has concluded successfully or with an error.","example":1},"concluded":{"type":"boolean","description":"Has the job run finished?","example":true},"failed":{"type":"integer","enum":[0,1],"description":"Whether this job run failed to complete successfully","example":0},"runName":{"type":"string","description":"The name of the job run","example":"example-job-5fcf67bc56e1913e21d49504"},"status":{"type":"string","enum":["SUCCESS","RUNNING","FAILED"],"description":"A string representing the status of the job. Either SUCCESS, RUNNING or FAILED","example":"SUCCESS"},"succeeded":{"type":"integer","enum":[0,1],"description":"Whether this job run completed successfully","example":0},"startedAt":{"type":"string","description":"The timestamp when the job run started.","example":"2020-12-08T11:47:08Z"},"concludedAt":{"type":"string","description":"The timestamp when the job run concluded.","example":"2020-12-08T11:52:08Z"}},"required":["id","active","backoffLimit","completions","concluded","failed","runName","status","succeeded","startedAt","concludedAt"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Jobs","project"],"security":[],"x-nf-permission-required":"Project > Jobs > General > Read","x-nf-team-scoped":true,"x-nf-cli-command":["get","job","run"]},"v1-projects--projectId--jobs--jobId--runs--runId--get-team-scoped":{"operationId":"getProjectsJobsJobidRunsRunid","summary":"Get run details","description":"Returns data about the given job run","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"jobId","type":"string","required":true,"description":"ID of the job","example":"example-job","in":"path","schema":{"name":"jobId","type":"string","required":true,"description":"ID of the job","example":"example-job","in":"path"}},{"name":"runId","type":"string","required":true,"description":"ID of the job run","example":"d34582a4-35bd-4c71-8e7c-e36999b88723","in":"path","schema":{"name":"runId","type":"string","required":true,"description":"ID of the job run","example":"d34582a4-35bd-4c71-8e7c-e36999b88723","in":"path"}}],"responses":{"200":{"description":"Details about the given job run.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the job run","example":"d34582a4-35bd-4c71-8e7c-e36999b88723"},"active":{"type":"integer","enum":[0,1],"description":"Whether the run is currently in progress","example":0},"backoffLimit":{"type":"integer","minimum":0,"description":"The number of attempts to retry this job run before it is marked as failed.","example":0},"completions":{"type":"integer","minimum":0,"description":"The number of times this job run has concluded successfully or with an error.","example":1},"concluded":{"type":"boolean","description":"Has the job run finished?","example":true},"failed":{"type":"integer","enum":[0,1],"description":"Whether this job run failed to complete successfully","example":0},"runName":{"type":"string","description":"The name of the job run","example":"example-job-5fcf67bc56e1913e21d49504"},"status":{"type":"string","enum":["SUCCESS","RUNNING","FAILED"],"description":"A string representing the status of the job. Either SUCCESS, RUNNING or FAILED","example":"SUCCESS"},"succeeded":{"type":"integer","enum":[0,1],"description":"Whether this job run completed successfully","example":0},"startedAt":{"type":"string","description":"The timestamp when the job run started.","example":"2020-12-08T11:47:08Z"},"concludedAt":{"type":"string","description":"The timestamp when the job run concluded.","example":"2020-12-08T11:52:08Z"}},"required":["id","active","backoffLimit","completions","concluded","failed","runName","status","succeeded","startedAt","concludedAt"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Jobs","project"],"security":[],"x-nf-permission-required":"Project > Jobs > General > Read","x-nf-team-scoped":true,"x-nf-cli-command":["get","job","run"]},"v1-projects--projectId--jobs--jobId--runs--runId--delete":{"operationId":"deleteProjectsJobsJobidRunsRunid","summary":"Abort job run","description":"Aborts the given job run","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"jobId","type":"string","required":true,"description":"ID of the job","example":"example-job","in":"path","schema":{"name":"jobId","type":"string","required":true,"description":"ID of the job","example":"example-job","in":"path"}},{"name":"runId","type":"string","required":true,"description":"ID of the job run","example":"d34582a4-35bd-4c71-8e7c-e36999b88723","in":"path","schema":{"name":"runId","type":"string","required":true,"description":"ID of the job run","example":"d34582a4-35bd-4c71-8e7c-e36999b88723","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Jobs","project"],"security":[],"x-nf-permission-required":"Project > Jobs > Deployment > Deploy Build","x-nf-team-scoped":true,"x-nf-cli-command":["abort","job","run"]},"v1-projects--projectId--jobs--jobId--runs--runId--delete-team-scoped":{"operationId":"deleteProjectsJobsJobidRunsRunid","summary":"Abort job run","description":"Aborts the given job run","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"jobId","type":"string","required":true,"description":"ID of the job","example":"example-job","in":"path","schema":{"name":"jobId","type":"string","required":true,"description":"ID of the job","example":"example-job","in":"path"}},{"name":"runId","type":"string","required":true,"description":"ID of the job run","example":"d34582a4-35bd-4c71-8e7c-e36999b88723","in":"path","schema":{"name":"runId","type":"string","required":true,"description":"ID of the job run","example":"d34582a4-35bd-4c71-8e7c-e36999b88723","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Jobs","project"],"security":[],"x-nf-permission-required":"Project > Jobs > Deployment > Deploy Build","x-nf-team-scoped":true,"x-nf-cli-command":["abort","job","run"]},"v1-projects--projectId--jobs--jobId--runtime-environment-get":{"operationId":"getProjectsJobsJobidRuntimeEnvironment","summary":"Get job runtime environment","description":"Returns the runtime environment for the given job. If the API key does not have the permission 'Project > Secrets > General > Read', secrets inherited from secret groups will not be displayed.","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"jobId","type":"string","required":true,"description":"ID of the job","example":"example-job","in":"path","schema":{"name":"jobId","type":"string","required":true,"description":"ID of the job","example":"example-job","in":"path"}},{"name":"show","type":"string","enum":["this","inherited","all"],"description":"Which secrets to display - if set to `this` only the group's secrets are displayed, if set to `inherited` only secrets from linked addons are displayed, if set to `all` or not provided, both are displayed.","example":"all","in":"query","schema":{"name":"show","type":"string","enum":["this","inherited","all"],"description":"Which secrets to display - if set to `this` only the group's secrets are displayed, if set to `inherited` only secrets from linked addons are displayed, if set to `all` or not provided, both are displayed.","example":"all","in":"query"}},{"name":"replaceTemplatedValues","type":"string","enum":["true"],"description":"If templated secrets should be replaced with their inferred value rather than returned as template strings.","example":"true","in":"query","schema":{"name":"replaceTemplatedValues","type":"string","enum":["true"],"description":"If templated secrets should be replaced with their inferred value rather than returned as template strings.","example":"true","in":"query"}}],"responses":{"200":{"description":"The runtime environment of the job.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"runtimeEnvironment":{"type":"object","properties":{},"additionalProperties":false,"description":"The runtime environment variables, formatted as a JSON object. If the `show` parameter is set to `this`, this will only contain secrets saved to this entity. If the `show` parameter is set to `inherited`, this will only contain secrets inherited from linked secret groups. Otherwise, this will contain both.","example":{"VARIABLE_1":"abcdef","VARIABLE_2":"12345"}},"runtimeFiles":{"type":"object","properties":{},"additionalProperties":false,"description":"The runtime secret files, formatted as a JSON object. If the `show` parameter is set to `this`, this will only contain files saved to this entity. If the `show` parameter is set to `inherited`, this will only contain files inherited from linked secret groups. Otherwise, this will contain both.","example":{"/dir/fileName":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}}},"required":["runtimeEnvironment","runtimeFiles"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Jobs","project"],"security":[],"deprecated":true,"x-nf-permission-required":"Project > Secrets > Jobs > Read","x-nf-team-scoped":true,"x-nf-cli-command":["get","job","runtime-environment"],"x-nf-deprecation-replacement":"/jobs/get-job","x-nf-deprecation-message":"Requests should instead use the relevant GET endpoint."},"v1-projects--projectId--jobs--jobId--runtime-environment-get-team-scoped":{"operationId":"getProjectsJobsJobidRuntimeEnvironment","summary":"Get job runtime environment","description":"Returns the runtime environment for the given job. If the API key does not have the permission 'Project > Secrets > General > Read', secrets inherited from secret groups will not be displayed.","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"jobId","type":"string","required":true,"description":"ID of the job","example":"example-job","in":"path","schema":{"name":"jobId","type":"string","required":true,"description":"ID of the job","example":"example-job","in":"path"}},{"name":"show","type":"string","enum":["this","inherited","all"],"description":"Which secrets to display - if set to `this` only the group's secrets are displayed, if set to `inherited` only secrets from linked addons are displayed, if set to `all` or not provided, both are displayed.","example":"all","in":"query","schema":{"name":"show","type":"string","enum":["this","inherited","all"],"description":"Which secrets to display - if set to `this` only the group's secrets are displayed, if set to `inherited` only secrets from linked addons are displayed, if set to `all` or not provided, both are displayed.","example":"all","in":"query"}},{"name":"replaceTemplatedValues","type":"string","enum":["true"],"description":"If templated secrets should be replaced with their inferred value rather than returned as template strings.","example":"true","in":"query","schema":{"name":"replaceTemplatedValues","type":"string","enum":["true"],"description":"If templated secrets should be replaced with their inferred value rather than returned as template strings.","example":"true","in":"query"}}],"responses":{"200":{"description":"The runtime environment of the job.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"runtimeEnvironment":{"type":"object","properties":{},"additionalProperties":false,"description":"The runtime environment variables, formatted as a JSON object. If the `show` parameter is set to `this`, this will only contain secrets saved to this entity. If the `show` parameter is set to `inherited`, this will only contain secrets inherited from linked secret groups. Otherwise, this will contain both.","example":{"VARIABLE_1":"abcdef","VARIABLE_2":"12345"}},"runtimeFiles":{"type":"object","properties":{},"additionalProperties":false,"description":"The runtime secret files, formatted as a JSON object. If the `show` parameter is set to `this`, this will only contain files saved to this entity. If the `show` parameter is set to `inherited`, this will only contain files inherited from linked secret groups. Otherwise, this will contain both.","example":{"/dir/fileName":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}}},"required":["runtimeEnvironment","runtimeFiles"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Jobs","project"],"security":[],"deprecated":true,"x-nf-permission-required":"Project > Secrets > Jobs > Read","x-nf-team-scoped":true,"x-nf-cli-command":["get","job","runtime-environment"],"x-nf-deprecation-replacement":"/jobs/get-job","x-nf-deprecation-message":"Requests should instead use the relevant GET endpoint."},"v1-projects--projectId--jobs--jobId--runtime-environment-post":{"operationId":"postProjectsJobsJobidRuntimeEnvironment","summary":"Edit job runtime environment","description":"Sets the runtime environment for the given job.","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"jobId","type":"string","required":true,"description":"ID of the job","example":"example-job","in":"path","schema":{"name":"jobId","type":"string","required":true,"description":"ID of the job","example":"example-job","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Jobs","project"],"security":[],"deprecated":true,"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"runtimeEnvironment":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"An object containing the all of the environment variables to set for the service. Keys may only contain letters, numbers, hyphens, forward slashes and dots.","example":{"VARIABLE_1":"abcdef","VARIABLE_2":"12345"}},"runtimeFiles":{"type":"object","properties":{},"description":"Secret files as JSON object, encrypted at rest. File path must be absolute","example":{"/dir/fileName":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}}},"required":["runtimeEnvironment"],"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Project > Secrets > Jobs > Update","x-nf-team-scoped":true,"x-nf-cli-command":["update","job","runtime-environment"],"x-nf-deprecation-replacement":"/jobs/patch-job","x-nf-deprecation-message":"Requests should instead use the relevant PATCH endpoint."},"v1-projects--projectId--jobs--jobId--runtime-environment-post-team-scoped":{"operationId":"postProjectsJobsJobidRuntimeEnvironment","summary":"Edit job runtime environment","description":"Sets the runtime environment for the given job.","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"jobId","type":"string","required":true,"description":"ID of the job","example":"example-job","in":"path","schema":{"name":"jobId","type":"string","required":true,"description":"ID of the job","example":"example-job","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Jobs","project"],"security":[],"deprecated":true,"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"runtimeEnvironment":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"An object containing the all of the environment variables to set for the service. Keys may only contain letters, numbers, hyphens, forward slashes and dots.","example":{"VARIABLE_1":"abcdef","VARIABLE_2":"12345"}},"runtimeFiles":{"type":"object","properties":{},"description":"Secret files as JSON object, encrypted at rest. File path must be absolute","example":{"/dir/fileName":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}}},"required":["runtimeEnvironment"],"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Project > Secrets > Jobs > Update","x-nf-team-scoped":true,"x-nf-cli-command":["update","job","runtime-environment"],"x-nf-deprecation-replacement":"/jobs/patch-job","x-nf-deprecation-message":"Requests should instead use the relevant PATCH endpoint."},"v1-projects--projectId--jobs--jobId--runtime-environment-details-get":{"operationId":"getProjectsJobsJobidRuntimeEnvironmentDetails","summary":"Get job runtime environment details","description":"Get details about the runtime environment accessible by the given job. Also requires the permission 'Project > Secrets > General > Read'","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"jobId","type":"string","required":true,"description":"ID of the job","example":"example-job","in":"path","schema":{"name":"jobId","type":"string","required":true,"description":"ID of the job","example":"example-job","in":"path"}}],"responses":{"200":{"description":"Details of the runtime environment of the job.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"runtimeEnvironment":{"type":"object","properties":{"MY_VARIABLE_NAME":{"type":"object","properties":{"value":{"description":"The value of the secret.","example":"abcdef123456"},"inheritedFrom":{"type":"string","description":"The ID of the secret group the secret is inherited from, if applicable.","example":"example-secret"},"addonId":{"type":"string","description":"The ID of the addon the secret is inherited from, if applicable.","example":"example-addon"},"priority":{"type":"integer","description":"The priority of the secret group the secret is inherited from, if applicable.","example":10},"overriding":{"type":"array","items":{"type":"object","properties":{"value":{"description":"The value of the secret.","example":"ffffffffffff"},"inheritedFrom":{"type":"string","description":"The ID of the secret group the secret is inherited from.","example":"secret-2"},"addonId":{"type":"string","description":"The ID of the addon the secret is inherited from, if applicable.","example":"addon-2"},"priority":{"type":"integer","description":"The priority of the secret group the secret is inherited from.","example":0}},"required":["value","inheritedFrom","priority"],"additionalProperties":false,"description":"Data about an overridden secret."},"description":"An array containing data about other places the secret has been inherited from, but that are not being used as a secret with the same key exists with a higher priority."}},"required":["value","overriding"],"additionalProperties":false,"description":"A stored secret and details about it and its value. This can have the name of any saved secret."}},"description":"Details about all the secrets accessible by the service."},"runtimeFiles":{"type":"object","properties":{"/dir/fileName":{"type":"object","properties":{"value":{"type":"object","properties":{"data":{"type":"string","description":"base64 encoded string of the file contents","example":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU="},"encoding":{"type":"string","description":"Original encoding of the file","example":"utf-8"}},"additionalProperties":false,"description":"The value of the secret.","example":{"/dir/fileName":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"inheritedFrom":{"type":"string","description":"The ID of the secret group the secret is inherited from, if applicable.","example":"example-secret"},"priority":{"type":"integer","description":"The priority of the secret group the secret is inherited from, if applicable.","example":10},"overriding":{"type":"array","items":{"type":"object","properties":{"value":{"description":"The value of the secret.","example":"ffffffffffff"},"inheritedFrom":{"type":"string","description":"The ID of the secret group the secret is inherited from.","example":"secret-2"},"priority":{"type":"integer","description":"The priority of the secret group the secret is inherited from.","example":0}},"required":["value","inheritedFrom","priority"],"additionalProperties":false,"description":"Data about an overridden secret."},"description":"An array containing data about other places the file has been inherited from, but that are not being used as a secret with the same file path exists with a higher priority."}},"required":["value","overriding"],"additionalProperties":false,"description":"A stored secret and details about it and its value. This can have the name of any saved secret."}},"description":"Details about all the secrets accessible by the service."}},"required":["runtimeEnvironment","runtimeFiles"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Jobs","project"],"security":[],"deprecated":true,"x-nf-permission-required":"Project > Secrets > Jobs > Read","x-nf-team-scoped":true,"x-nf-cli-command":["get","job","runtime-environment-details"],"x-nf-deprecation-replacement":"/jobs/get-job","x-nf-deprecation-message":"Requests should instead use the relevant GET endpoint."},"v1-projects--projectId--jobs--jobId--runtime-environment-details-get-team-scoped":{"operationId":"getProjectsJobsJobidRuntimeEnvironmentDetails","summary":"Get job runtime environment details","description":"Get details about the runtime environment accessible by the given job. Also requires the permission 'Project > Secrets > General > Read'","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"jobId","type":"string","required":true,"description":"ID of the job","example":"example-job","in":"path","schema":{"name":"jobId","type":"string","required":true,"description":"ID of the job","example":"example-job","in":"path"}}],"responses":{"200":{"description":"Details of the runtime environment of the job.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"runtimeEnvironment":{"type":"object","properties":{"MY_VARIABLE_NAME":{"type":"object","properties":{"value":{"description":"The value of the secret.","example":"abcdef123456"},"inheritedFrom":{"type":"string","description":"The ID of the secret group the secret is inherited from, if applicable.","example":"example-secret"},"addonId":{"type":"string","description":"The ID of the addon the secret is inherited from, if applicable.","example":"example-addon"},"priority":{"type":"integer","description":"The priority of the secret group the secret is inherited from, if applicable.","example":10},"overriding":{"type":"array","items":{"type":"object","properties":{"value":{"description":"The value of the secret.","example":"ffffffffffff"},"inheritedFrom":{"type":"string","description":"The ID of the secret group the secret is inherited from.","example":"secret-2"},"addonId":{"type":"string","description":"The ID of the addon the secret is inherited from, if applicable.","example":"addon-2"},"priority":{"type":"integer","description":"The priority of the secret group the secret is inherited from.","example":0}},"required":["value","inheritedFrom","priority"],"additionalProperties":false,"description":"Data about an overridden secret."},"description":"An array containing data about other places the secret has been inherited from, but that are not being used as a secret with the same key exists with a higher priority."}},"required":["value","overriding"],"additionalProperties":false,"description":"A stored secret and details about it and its value. This can have the name of any saved secret."}},"description":"Details about all the secrets accessible by the service."},"runtimeFiles":{"type":"object","properties":{"/dir/fileName":{"type":"object","properties":{"value":{"type":"object","properties":{"data":{"type":"string","description":"base64 encoded string of the file contents","example":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU="},"encoding":{"type":"string","description":"Original encoding of the file","example":"utf-8"}},"additionalProperties":false,"description":"The value of the secret.","example":{"/dir/fileName":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"inheritedFrom":{"type":"string","description":"The ID of the secret group the secret is inherited from, if applicable.","example":"example-secret"},"priority":{"type":"integer","description":"The priority of the secret group the secret is inherited from, if applicable.","example":10},"overriding":{"type":"array","items":{"type":"object","properties":{"value":{"description":"The value of the secret.","example":"ffffffffffff"},"inheritedFrom":{"type":"string","description":"The ID of the secret group the secret is inherited from.","example":"secret-2"},"priority":{"type":"integer","description":"The priority of the secret group the secret is inherited from.","example":0}},"required":["value","inheritedFrom","priority"],"additionalProperties":false,"description":"Data about an overridden secret."},"description":"An array containing data about other places the file has been inherited from, but that are not being used as a secret with the same file path exists with a higher priority."}},"required":["value","overriding"],"additionalProperties":false,"description":"A stored secret and details about it and its value. This can have the name of any saved secret."}},"description":"Details about all the secrets accessible by the service."}},"required":["runtimeEnvironment","runtimeFiles"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Jobs","project"],"security":[],"deprecated":true,"x-nf-permission-required":"Project > Secrets > Jobs > Read","x-nf-team-scoped":true,"x-nf-cli-command":["get","job","runtime-environment-details"],"x-nf-deprecation-replacement":"/jobs/get-job","x-nf-deprecation-message":"Requests should instead use the relevant GET endpoint."},"v1-projects--projectId--jobs--jobId--scale-post":{"operationId":"postProjectsJobsJobidScale","summary":"Scale job","description":"Modifies the scaling settings for the given job.","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"jobId","type":"string","required":true,"description":"ID of the job","example":"example-job","in":"path","schema":{"name":"jobId","type":"string","required":true,"description":"ID of the job","example":"example-job","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Jobs","project"],"security":[],"deprecated":true,"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"deploymentPlan":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"ID of the deployment plan to switch to.","example":"nf-compute-20"},"storage":{"type":"object","properties":{"useHdbStorage":{"type":"boolean"},"usePdSsdStorage":{"type":"boolean"},"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":1024,"description":"Ephemeral storage per container in MB","example":1024}},"additionalProperties":false},"shmSize":{"type":"integer","minimum":64,"description":"Configures the amount of available memory-backed disk space available to /dev/shm"}},"additionalProperties":false}},"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Project > Jobs > Deployment > Scale Job","x-nf-team-scoped":true,"x-nf-cli-command":["scale","job"],"x-nf-deprecation-replacement":"/jobs/patch-job","x-nf-deprecation-message":"Requests should instead use the relevant PATCH endpoint."},"v1-projects--projectId--jobs--jobId--scale-post-team-scoped":{"operationId":"postProjectsJobsJobidScale","summary":"Scale job","description":"Modifies the scaling settings for the given job.","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"jobId","type":"string","required":true,"description":"ID of the job","example":"example-job","in":"path","schema":{"name":"jobId","type":"string","required":true,"description":"ID of the job","example":"example-job","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Jobs","project"],"security":[],"deprecated":true,"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"deploymentPlan":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"ID of the deployment plan to switch to.","example":"nf-compute-20"},"storage":{"type":"object","properties":{"useHdbStorage":{"type":"boolean"},"usePdSsdStorage":{"type":"boolean"},"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":1024,"description":"Ephemeral storage per container in MB","example":1024}},"additionalProperties":false},"shmSize":{"type":"integer","minimum":64,"description":"Configures the amount of available memory-backed disk space available to /dev/shm"}},"additionalProperties":false}},"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Project > Jobs > Deployment > Scale Job","x-nf-team-scoped":true,"x-nf-cli-command":["scale","job"],"x-nf-deprecation-replacement":"/jobs/patch-job","x-nf-deprecation-message":"Requests should instead use the relevant PATCH endpoint."},"v1-projects--projectId--jobs--jobId--settings-post":{"operationId":"postProjectsJobsJobidSettings","summary":"Update job settings","description":"Updates settings for the job","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"jobId","type":"string","required":true,"description":"ID of the job","example":"example-job","in":"path","schema":{"name":"jobId","type":"string","required":true,"description":"ID of the job","example":"example-job","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Jobs","project"],"security":[],"deprecated":true,"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"backoffLimit":{"type":"integer","minimum":0,"description":"The number of attempts to rerun a job before it is marked as failed.","example":0},"runOnSourceChange":{"type":"string","enum":["never","cd-promote","always"],"description":"Configure when the job should be run if the source image changes.","example":"never"},"activeDeadlineSeconds":{"type":"integer","minimum":1,"description":"The maximum amount of time, in seconds, for a job to run before it is marked as failed.","example":600},"schedule":{"type":"string","pattern":"(@(annually|yearly|monthly|weekly|daily|hourly))|((((\\d+,)+\\d+|(\\d+(\\/|-)\\d+)|\\d+|\\*) ?){5})","description":"The cron timer scheduling when to run the job. Required for cron jobs and unavailable for other job types.","example":"30 8 * * *"},"concurrencyPolicy":{"type":"string","enum":["allow","forbid","replace"],"description":"Whether this job should run when another instance of the job is already running. Only available for cron jobs. `allow` will enable multiple instances of this job to run. `forbid` will keep the current instance of the job running and stop a new instance from being run. `replace` will terminate any currently running instance of the job and start a new one.","example":"allow"}},"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Project > Jobs > General > Update","x-nf-team-scoped":true,"x-nf-cli-command":["update","job","settings"],"x-nf-deprecation-replacement":"/jobs/patch-job","x-nf-deprecation-message":"Requests should instead use the relevant PATCH endpoint."},"v1-projects--projectId--jobs--jobId--settings-post-team-scoped":{"operationId":"postProjectsJobsJobidSettings","summary":"Update job settings","description":"Updates settings for the job","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"jobId","type":"string","required":true,"description":"ID of the job","example":"example-job","in":"path","schema":{"name":"jobId","type":"string","required":true,"description":"ID of the job","example":"example-job","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Jobs","project"],"security":[],"deprecated":true,"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"backoffLimit":{"type":"integer","minimum":0,"description":"The number of attempts to rerun a job before it is marked as failed.","example":0},"runOnSourceChange":{"type":"string","enum":["never","cd-promote","always"],"description":"Configure when the job should be run if the source image changes.","example":"never"},"activeDeadlineSeconds":{"type":"integer","minimum":1,"description":"The maximum amount of time, in seconds, for a job to run before it is marked as failed.","example":600},"schedule":{"type":"string","pattern":"(@(annually|yearly|monthly|weekly|daily|hourly))|((((\\d+,)+\\d+|(\\d+(\\/|-)\\d+)|\\d+|\\*) ?){5})","description":"The cron timer scheduling when to run the job. Required for cron jobs and unavailable for other job types.","example":"30 8 * * *"},"concurrencyPolicy":{"type":"string","enum":["allow","forbid","replace"],"description":"Whether this job should run when another instance of the job is already running. Only available for cron jobs. `allow` will enable multiple instances of this job to run. `forbid` will keep the current instance of the job running and stop a new instance from being run. `replace` will terminate any currently running instance of the job and start a new one.","example":"allow"}},"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Project > Jobs > General > Update","x-nf-team-scoped":true,"x-nf-cli-command":["update","job","settings"],"x-nf-deprecation-replacement":"/jobs/patch-job","x-nf-deprecation-message":"Requests should instead use the relevant PATCH endpoint."},"v1-projects--projectId--jobs--jobId--suspend-post":{"operationId":"postProjectsJobsJobidSuspend","summary":"Suspend job","description":"Modify cron job to toggle suspending of its schedule.","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"jobId","type":"string","required":true,"description":"ID of the job","example":"example-job","in":"path","schema":{"name":"jobId","type":"string","required":true,"description":"ID of the job","example":"example-job","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}},"409":{"description":"Setting can only be modified for cron jobs."}},"tags":["Jobs","project"],"security":[],"deprecated":true,"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"suspended":{"type":"boolean","description":"In the case of cron jobs, whether scheduling should be paused.","example":true}},"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Project > Jobs > General > Update","x-nf-team-scoped":true,"x-nf-cli-command":["suspend","job"],"x-nf-deprecation-replacement":"/jobs/patch-job","x-nf-deprecation-message":"Requests should instead use the relevant PATCH endpoint."},"v1-projects--projectId--jobs--jobId--suspend-post-team-scoped":{"operationId":"postProjectsJobsJobidSuspend","summary":"Suspend job","description":"Modify cron job to toggle suspending of its schedule.","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"jobId","type":"string","required":true,"description":"ID of the job","example":"example-job","in":"path","schema":{"name":"jobId","type":"string","required":true,"description":"ID of the job","example":"example-job","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}},"409":{"description":"Setting can only be modified for cron jobs."}},"tags":["Jobs","project"],"security":[],"deprecated":true,"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"suspended":{"type":"boolean","description":"In the case of cron jobs, whether scheduling should be paused.","example":true}},"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Project > Jobs > General > Update","x-nf-team-scoped":true,"x-nf-cli-command":["suspend","job"],"x-nf-deprecation-replacement":"/jobs/patch-job","x-nf-deprecation-message":"Requests should instead use the relevant PATCH endpoint."},"v1-projects--projectId--llm-model-deployments-get":{"operationId":"getProjectsLlmModelDeployments","summary":"List AI models","description":"Lists all AI models for a project","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query","schema":{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query"}},{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query","schema":{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query"}},{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query","schema":{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query"}}],"responses":{"200":{"description":"A list of AI models that belong to the project.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"llmModelDeployments":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The name of the AI model.","example":"deepseek-v3-deployment"},"description":{"type":"string","pattern":"^[\\s\\S]*$","maxLength":1024,"description":"A description of the AI model.","example":"A deployment for DeepSeek V3 model"},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"spec":{"type":"object","properties":{"type":{"type":"string","enum":["custom"],"description":"Type of model spec - custom for user-defined configuration"},"configuration":{"type":"object","properties":{"name":{"type":"string"},"engine":{"type":"string","enum":["vllm"]},"revision":{"type":"string"},"nodeConfiguration":{"type":"object","properties":{"gpu":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"gpuType":{"type":"string"},"gpuCount":{"type":"integer","minimum":1},"timesliced":{"type":"boolean"}},"additionalProperties":false}},"additionalProperties":false},"storage":{"type":"object","properties":{"accessMode":{"type":"string","enum":["ReadWriteMany"]},"storageClass":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The type of the storage.","example":"nvme","default":"nvme"},"storageSize":{"type":"integer","minimum":1,"description":"The size of the storage, in megabytes. Configurable sizes depend on the storage class.","example":6144},"shmSize":{"type":"integer","minimum":0,"nullable":true}},"required":["storageSize"],"additionalProperties":false}},"additionalProperties":false},"architecture":{"type":"object","properties":{"type":{"type":"string","enum":["aggregated"]},"workerConfig":{"type":"object","properties":{"replicas":{"type":"integer","minimum":0,"maximum":5},"parallelismConfig":{"type":"object","properties":{"tensorParallelism":{"type":"integer"},"pipelineParallelism":{"type":"integer"},"expertParallelism":{"type":"integer"}},"additionalProperties":false},"sequenceLengthConfig":{"type":"object","properties":{"maxModelLength":{"anyOf":[{"type":"integer","minimum":1},{"type":"string","enum":["auto"]}]},"maxInputLength":{"type":"integer","minimum":1},"maxOutputLength":{"type":"integer","minimum":1}},"additionalProperties":false},"batchingConfig":{"type":"object","properties":{"maxNumSeqs":{"type":"integer","minimum":1},"maxNumBatchedTokens":{"type":"integer","minimum":1}},"additionalProperties":false},"enableChunkedPrefill":{"type":"boolean"},"enablePrefixCaching":{"type":"boolean"},"enforceEager":{"type":"boolean"},"enableAsyncScheduling":{"type":"boolean"},"gpuMemoryUtilization":{"type":"number","format":"float","minimum":0.1,"maximum":1},"trustRemoteCode":{"type":"boolean"},"dataType":{"type":"string","enum":["auto","float16","bfloat16"]},"kvCacheDataType":{"type":"string","enum":["fp8","fp8_e5m2","fp8_e4m3"]},"quantization":{"type":"string","enum":["fp8","awq","gptq","int4"]}},"additionalProperties":false}},"additionalProperties":false}},"additionalProperties":false,"description":"LLM model configuration including engine, architecture, and compute settings"}},"required":["type","configuration"],"additionalProperties":false},"id":{"type":"string","description":"The unique identifier of the AI model."},"projectId":{"type":"string","description":"ID of the project that the AI model belongs to","example":"default-project"},"entityId":{"type":"string","description":"The entity ID (team) this deployment belongs to."},"entityType":{"type":"string","enum":["user","team","org"]},"creatorId":{"type":"string","description":"The user who created this deployment."},"dns":{"type":"object","properties":{"base":{"type":"string","pattern":"^([a-zA-Z0-9-]{2,}\\.){2,}[a-zA-Z]{2,}$"},"zone":{"type":"string"}},"required":["base","zone"],"additionalProperties":false,"description":"DNS configuration for the AI model."},"ports":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^[a-z]-?[a-z0-9]+(-[a-z0-9]+)*$","description":"The id used to identify the port across requests."},"name":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","description":"The name of the port used in the public url and UI."},"internalPort":{"type":"integer","description":"The port number."},"protocol":{"type":"string","description":"The protocol used by the port."},"public":{"type":"boolean","description":"If true, the port is exposed publicly."},"dns":{"type":"string","description":"DNS entry for this port."},"disableNfDomain":{"type":"boolean","description":"Disable routing on the default code.run domain for public HTTP ports with custom domains."}},"required":["id","name","internalPort","protocol","public"],"additionalProperties":false},"description":"An array of ports for the AI model."},"status":{"type":"string","enum":["pending","provisioning","starting","crashed","paused","running","deleting"],"description":"The current status of the AI model."},"deploymentConfiguration":{"type":"object","properties":{"id":{"type":"string","description":"The deployment configuration identifier."},"createdAt":{"type":"string","format":"date-time","description":"time of creation"}},"required":["id"],"additionalProperties":false,"description":"Details of the latest deployment configuration."},"createdAt":{"type":"string","format":"date-time","description":"time of creation"},"updatedAt":{"type":"string","format":"date-time","description":"time of update"}},"required":["name","spec","id","projectId","entityId","entityType","creatorId","dns","ports","status"],"additionalProperties":false,"description":"An AI model."},"description":"An array of AI models in this project."}},"required":["llmModelDeployments"],"additionalProperties":false,"description":"Result data."},"pagination":{"type":"object","properties":{"hasNextPage":{"type":"boolean","description":"Is there another page of results available?","example":false},"cursor":{"type":"string","description":"The cursor to access the next page of results."},"count":{"type":"number","format":"float","description":"The number of results returned by this request.","example":1}},"required":["hasNextPage","count"],"additionalProperties":false,"description":"Data about the endpoint pagination."}},"required":["data","pagination"],"additionalProperties":false,"description":"Response object."}}},"tags":["AI Models","project"],"security":[],"x-nf-permission-required":"Project > AiModels > General > Read","x-nf-team-scoped":true,"x-nf-cli-command":["list","llm-model-deployments"]},"v1-projects--projectId--llm-model-deployments-get-team-scoped":{"operationId":"getProjectsLlmModelDeployments","summary":"List AI models","description":"Lists all AI models for a project","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query","schema":{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query"}},{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query","schema":{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query"}},{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query","schema":{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query"}}],"responses":{"200":{"description":"A list of AI models that belong to the project.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"llmModelDeployments":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The name of the AI model.","example":"deepseek-v3-deployment"},"description":{"type":"string","pattern":"^[\\s\\S]*$","maxLength":1024,"description":"A description of the AI model.","example":"A deployment for DeepSeek V3 model"},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"spec":{"type":"object","properties":{"type":{"type":"string","enum":["custom"],"description":"Type of model spec - custom for user-defined configuration"},"configuration":{"type":"object","properties":{"name":{"type":"string"},"engine":{"type":"string","enum":["vllm"]},"revision":{"type":"string"},"nodeConfiguration":{"type":"object","properties":{"gpu":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"gpuType":{"type":"string"},"gpuCount":{"type":"integer","minimum":1},"timesliced":{"type":"boolean"}},"additionalProperties":false}},"additionalProperties":false},"storage":{"type":"object","properties":{"accessMode":{"type":"string","enum":["ReadWriteMany"]},"storageClass":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The type of the storage.","example":"nvme","default":"nvme"},"storageSize":{"type":"integer","minimum":1,"description":"The size of the storage, in megabytes. Configurable sizes depend on the storage class.","example":6144},"shmSize":{"type":"integer","minimum":0,"nullable":true}},"required":["storageSize"],"additionalProperties":false}},"additionalProperties":false},"architecture":{"type":"object","properties":{"type":{"type":"string","enum":["aggregated"]},"workerConfig":{"type":"object","properties":{"replicas":{"type":"integer","minimum":0,"maximum":5},"parallelismConfig":{"type":"object","properties":{"tensorParallelism":{"type":"integer"},"pipelineParallelism":{"type":"integer"},"expertParallelism":{"type":"integer"}},"additionalProperties":false},"sequenceLengthConfig":{"type":"object","properties":{"maxModelLength":{"anyOf":[{"type":"integer","minimum":1},{"type":"string","enum":["auto"]}]},"maxInputLength":{"type":"integer","minimum":1},"maxOutputLength":{"type":"integer","minimum":1}},"additionalProperties":false},"batchingConfig":{"type":"object","properties":{"maxNumSeqs":{"type":"integer","minimum":1},"maxNumBatchedTokens":{"type":"integer","minimum":1}},"additionalProperties":false},"enableChunkedPrefill":{"type":"boolean"},"enablePrefixCaching":{"type":"boolean"},"enforceEager":{"type":"boolean"},"enableAsyncScheduling":{"type":"boolean"},"gpuMemoryUtilization":{"type":"number","format":"float","minimum":0.1,"maximum":1},"trustRemoteCode":{"type":"boolean"},"dataType":{"type":"string","enum":["auto","float16","bfloat16"]},"kvCacheDataType":{"type":"string","enum":["fp8","fp8_e5m2","fp8_e4m3"]},"quantization":{"type":"string","enum":["fp8","awq","gptq","int4"]}},"additionalProperties":false}},"additionalProperties":false}},"additionalProperties":false,"description":"LLM model configuration including engine, architecture, and compute settings"}},"required":["type","configuration"],"additionalProperties":false},"id":{"type":"string","description":"The unique identifier of the AI model."},"projectId":{"type":"string","description":"ID of the project that the AI model belongs to","example":"default-project"},"entityId":{"type":"string","description":"The entity ID (team) this deployment belongs to."},"entityType":{"type":"string","enum":["user","team","org"]},"creatorId":{"type":"string","description":"The user who created this deployment."},"dns":{"type":"object","properties":{"base":{"type":"string","pattern":"^([a-zA-Z0-9-]{2,}\\.){2,}[a-zA-Z]{2,}$"},"zone":{"type":"string"}},"required":["base","zone"],"additionalProperties":false,"description":"DNS configuration for the AI model."},"ports":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^[a-z]-?[a-z0-9]+(-[a-z0-9]+)*$","description":"The id used to identify the port across requests."},"name":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","description":"The name of the port used in the public url and UI."},"internalPort":{"type":"integer","description":"The port number."},"protocol":{"type":"string","description":"The protocol used by the port."},"public":{"type":"boolean","description":"If true, the port is exposed publicly."},"dns":{"type":"string","description":"DNS entry for this port."},"disableNfDomain":{"type":"boolean","description":"Disable routing on the default code.run domain for public HTTP ports with custom domains."}},"required":["id","name","internalPort","protocol","public"],"additionalProperties":false},"description":"An array of ports for the AI model."},"status":{"type":"string","enum":["pending","provisioning","starting","crashed","paused","running","deleting"],"description":"The current status of the AI model."},"deploymentConfiguration":{"type":"object","properties":{"id":{"type":"string","description":"The deployment configuration identifier."},"createdAt":{"type":"string","format":"date-time","description":"time of creation"}},"required":["id"],"additionalProperties":false,"description":"Details of the latest deployment configuration."},"createdAt":{"type":"string","format":"date-time","description":"time of creation"},"updatedAt":{"type":"string","format":"date-time","description":"time of update"}},"required":["name","spec","id","projectId","entityId","entityType","creatorId","dns","ports","status"],"additionalProperties":false,"description":"An AI model."},"description":"An array of AI models in this project."}},"required":["llmModelDeployments"],"additionalProperties":false,"description":"Result data."},"pagination":{"type":"object","properties":{"hasNextPage":{"type":"boolean","description":"Is there another page of results available?","example":false},"cursor":{"type":"string","description":"The cursor to access the next page of results."},"count":{"type":"number","format":"float","description":"The number of results returned by this request.","example":1}},"required":["hasNextPage","count"],"additionalProperties":false,"description":"Data about the endpoint pagination."}},"required":["data","pagination"],"additionalProperties":false,"description":"Response object."}}},"tags":["AI Models","project"],"security":[],"x-nf-permission-required":"Project > AiModels > General > Read","x-nf-team-scoped":true,"x-nf-cli-command":["list","llm-model-deployments"]},"v1-projects--projectId--llm-model-deployments-post":{"operationId":"postProjectsLlmModelDeployments","summary":"Create AI model","description":"Create an AI model","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}}],"responses":{"200":{"description":"success"}},"tags":["AI Models","project"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The name of the AI model.","example":"deepseek-v3-deployment"},"description":{"type":"string","pattern":"^[\\s\\S]*$","maxLength":1024,"description":"A description of the AI model.","example":"A deployment for DeepSeek V3 model"},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"ports":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":1,"maxLength":8,"description":"The name used to identify the port."},"internalPort":{"type":"integer","minimum":1,"maximum":65535,"description":"The port number."},"public":{"type":"boolean","description":"If true, the port will be exposed publicly.","default":false},"domains":{"type":"array","items":{"type":"string","description":"A domain to redirect to this port."},"description":"An array of domains to redirect to this port. Each domain must first be verified and registered to your account.","default":[]},"disableNfDomain":{"type":"boolean","description":"Disable routing on the default code.run domain for public HTTP ports with custom domains.","default":false},"protocol":{"type":"string","enum":["HTTP","HTTP/2","TCP","UDP"],"description":"The protocol to use for the port."}},"required":["name","internalPort","protocol"],"additionalProperties":false}},"spec":{"type":"object","properties":{"type":{"type":"string","enum":["custom"],"description":"Type of model spec - custom for user-defined configuration"},"configuration":{"type":"object","properties":{"name":{"type":"string"},"engine":{"type":"string","enum":["vllm"]},"revision":{"type":"string"},"nodeConfiguration":{"type":"object","properties":{"gpu":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"gpuType":{"type":"string"},"gpuCount":{"type":"integer","minimum":1},"timesliced":{"type":"boolean"}},"additionalProperties":false}},"additionalProperties":false},"storage":{"type":"object","properties":{"accessMode":{"type":"string","enum":["ReadWriteMany"]},"storageClass":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The type of the storage.","example":"nvme","default":"nvme"},"storageSize":{"type":"integer","minimum":1,"description":"The size of the storage, in megabytes. Configurable sizes depend on the storage class.","example":6144},"shmSize":{"type":"integer","minimum":0,"nullable":true}},"required":["storageSize"],"additionalProperties":false}},"additionalProperties":false},"architecture":{"type":"object","properties":{"type":{"type":"string","enum":["aggregated"]},"workerConfig":{"type":"object","properties":{"replicas":{"type":"integer","minimum":0,"maximum":5},"parallelismConfig":{"type":"object","properties":{"tensorParallelism":{"type":"integer"},"pipelineParallelism":{"type":"integer"},"expertParallelism":{"type":"integer"}},"additionalProperties":false},"sequenceLengthConfig":{"type":"object","properties":{"maxModelLength":{"anyOf":[{"type":"integer","minimum":1},{"type":"string","enum":["auto"]}]},"maxInputLength":{"type":"integer","minimum":1},"maxOutputLength":{"type":"integer","minimum":1}},"additionalProperties":false},"batchingConfig":{"type":"object","properties":{"maxNumSeqs":{"type":"integer","minimum":1},"maxNumBatchedTokens":{"type":"integer","minimum":1}},"additionalProperties":false},"enableChunkedPrefill":{"type":"boolean"},"enablePrefixCaching":{"type":"boolean"},"enforceEager":{"type":"boolean"},"enableAsyncScheduling":{"type":"boolean"},"gpuMemoryUtilization":{"type":"number","format":"float","minimum":0.1,"maximum":1},"trustRemoteCode":{"type":"boolean"},"dataType":{"type":"string","enum":["auto","float16","bfloat16"]},"kvCacheDataType":{"type":"string","enum":["fp8","fp8_e5m2","fp8_e4m3"]},"quantization":{"type":"string","enum":["fp8","awq","gptq","int4"]}},"additionalProperties":false}},"additionalProperties":false}},"additionalProperties":false,"description":"LLM model configuration including engine, architecture, and compute settings"}},"required":["type","configuration"],"additionalProperties":false}},"required":["name","spec"],"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Project > AiModels > General > Create","x-nf-team-scoped":true,"x-nf-cli-command":["create","llm-model-deployment"]},"v1-projects--projectId--llm-model-deployments-post-team-scoped":{"operationId":"postProjectsLlmModelDeployments","summary":"Create AI model","description":"Create an AI model","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}}],"responses":{"200":{"description":"success"}},"tags":["AI Models","project"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The name of the AI model.","example":"deepseek-v3-deployment"},"description":{"type":"string","pattern":"^[\\s\\S]*$","maxLength":1024,"description":"A description of the AI model.","example":"A deployment for DeepSeek V3 model"},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"ports":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":1,"maxLength":8,"description":"The name used to identify the port."},"internalPort":{"type":"integer","minimum":1,"maximum":65535,"description":"The port number."},"public":{"type":"boolean","description":"If true, the port will be exposed publicly.","default":false},"domains":{"type":"array","items":{"type":"string","description":"A domain to redirect to this port."},"description":"An array of domains to redirect to this port. Each domain must first be verified and registered to your account.","default":[]},"disableNfDomain":{"type":"boolean","description":"Disable routing on the default code.run domain for public HTTP ports with custom domains.","default":false},"protocol":{"type":"string","enum":["HTTP","HTTP/2","TCP","UDP"],"description":"The protocol to use for the port."}},"required":["name","internalPort","protocol"],"additionalProperties":false}},"spec":{"type":"object","properties":{"type":{"type":"string","enum":["custom"],"description":"Type of model spec - custom for user-defined configuration"},"configuration":{"type":"object","properties":{"name":{"type":"string"},"engine":{"type":"string","enum":["vllm"]},"revision":{"type":"string"},"nodeConfiguration":{"type":"object","properties":{"gpu":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"gpuType":{"type":"string"},"gpuCount":{"type":"integer","minimum":1},"timesliced":{"type":"boolean"}},"additionalProperties":false}},"additionalProperties":false},"storage":{"type":"object","properties":{"accessMode":{"type":"string","enum":["ReadWriteMany"]},"storageClass":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The type of the storage.","example":"nvme","default":"nvme"},"storageSize":{"type":"integer","minimum":1,"description":"The size of the storage, in megabytes. Configurable sizes depend on the storage class.","example":6144},"shmSize":{"type":"integer","minimum":0,"nullable":true}},"required":["storageSize"],"additionalProperties":false}},"additionalProperties":false},"architecture":{"type":"object","properties":{"type":{"type":"string","enum":["aggregated"]},"workerConfig":{"type":"object","properties":{"replicas":{"type":"integer","minimum":0,"maximum":5},"parallelismConfig":{"type":"object","properties":{"tensorParallelism":{"type":"integer"},"pipelineParallelism":{"type":"integer"},"expertParallelism":{"type":"integer"}},"additionalProperties":false},"sequenceLengthConfig":{"type":"object","properties":{"maxModelLength":{"anyOf":[{"type":"integer","minimum":1},{"type":"string","enum":["auto"]}]},"maxInputLength":{"type":"integer","minimum":1},"maxOutputLength":{"type":"integer","minimum":1}},"additionalProperties":false},"batchingConfig":{"type":"object","properties":{"maxNumSeqs":{"type":"integer","minimum":1},"maxNumBatchedTokens":{"type":"integer","minimum":1}},"additionalProperties":false},"enableChunkedPrefill":{"type":"boolean"},"enablePrefixCaching":{"type":"boolean"},"enforceEager":{"type":"boolean"},"enableAsyncScheduling":{"type":"boolean"},"gpuMemoryUtilization":{"type":"number","format":"float","minimum":0.1,"maximum":1},"trustRemoteCode":{"type":"boolean"},"dataType":{"type":"string","enum":["auto","float16","bfloat16"]},"kvCacheDataType":{"type":"string","enum":["fp8","fp8_e5m2","fp8_e4m3"]},"quantization":{"type":"string","enum":["fp8","awq","gptq","int4"]}},"additionalProperties":false}},"additionalProperties":false}},"additionalProperties":false,"description":"LLM model configuration including engine, architecture, and compute settings"}},"required":["type","configuration"],"additionalProperties":false}},"required":["name","spec"],"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Project > AiModels > General > Create","x-nf-team-scoped":true,"x-nf-cli-command":["create","llm-model-deployment"]},"v1-projects--projectId--llm-model-deployments--llmModelDeploymentId--get":{"operationId":"getProjectsLlmModelDeploymentsLlmmodeldeploymentid","summary":"Get AI model","description":"Gets details about an AI model","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"llmModelDeploymentId","type":"string","required":true,"description":"ID of the AI model","example":"deepseek-v3-deployment","in":"path","schema":{"name":"llmModelDeploymentId","type":"string","required":true,"description":"ID of the AI model","example":"deepseek-v3-deployment","in":"path"}}],"responses":{"200":{"description":"Details about an AI model.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The name of the AI model.","example":"deepseek-v3-deployment"},"description":{"type":"string","pattern":"^[\\s\\S]*$","maxLength":1024,"description":"A description of the AI model.","example":"A deployment for DeepSeek V3 model"},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"spec":{"type":"object","properties":{"type":{"type":"string","enum":["custom"],"description":"Type of model spec - custom for user-defined configuration"},"configuration":{"type":"object","properties":{"name":{"type":"string"},"engine":{"type":"string","enum":["vllm"]},"revision":{"type":"string"},"nodeConfiguration":{"type":"object","properties":{"gpu":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"gpuType":{"type":"string"},"gpuCount":{"type":"integer","minimum":1},"timesliced":{"type":"boolean"}},"additionalProperties":false}},"additionalProperties":false},"storage":{"type":"object","properties":{"accessMode":{"type":"string","enum":["ReadWriteMany"]},"storageClass":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The type of the storage.","example":"nvme","default":"nvme"},"storageSize":{"type":"integer","minimum":1,"description":"The size of the storage, in megabytes. Configurable sizes depend on the storage class.","example":6144},"shmSize":{"type":"integer","minimum":0,"nullable":true}},"required":["storageSize"],"additionalProperties":false}},"additionalProperties":false},"architecture":{"type":"object","properties":{"type":{"type":"string","enum":["aggregated"]},"workerConfig":{"type":"object","properties":{"replicas":{"type":"integer","minimum":0,"maximum":5},"parallelismConfig":{"type":"object","properties":{"tensorParallelism":{"type":"integer"},"pipelineParallelism":{"type":"integer"},"expertParallelism":{"type":"integer"}},"additionalProperties":false},"sequenceLengthConfig":{"type":"object","properties":{"maxModelLength":{"anyOf":[{"type":"integer","minimum":1},{"type":"string","enum":["auto"]}]},"maxInputLength":{"type":"integer","minimum":1},"maxOutputLength":{"type":"integer","minimum":1}},"additionalProperties":false},"batchingConfig":{"type":"object","properties":{"maxNumSeqs":{"type":"integer","minimum":1},"maxNumBatchedTokens":{"type":"integer","minimum":1}},"additionalProperties":false},"enableChunkedPrefill":{"type":"boolean"},"enablePrefixCaching":{"type":"boolean"},"enforceEager":{"type":"boolean"},"enableAsyncScheduling":{"type":"boolean"},"gpuMemoryUtilization":{"type":"number","format":"float","minimum":0.1,"maximum":1},"trustRemoteCode":{"type":"boolean"},"dataType":{"type":"string","enum":["auto","float16","bfloat16"]},"kvCacheDataType":{"type":"string","enum":["fp8","fp8_e5m2","fp8_e4m3"]},"quantization":{"type":"string","enum":["fp8","awq","gptq","int4"]}},"additionalProperties":false}},"additionalProperties":false}},"additionalProperties":false,"description":"LLM model configuration including engine, architecture, and compute settings"}},"required":["type","configuration"],"additionalProperties":false},"id":{"type":"string","description":"The unique identifier of the AI model."},"projectId":{"type":"string","description":"ID of the project that the AI model belongs to","example":"default-project"},"entityId":{"type":"string","description":"The entity ID (team) this deployment belongs to."},"entityType":{"type":"string","enum":["user","team","org"]},"creatorId":{"type":"string","description":"The user who created this deployment."},"dns":{"type":"object","properties":{"base":{"type":"string","pattern":"^([a-zA-Z0-9-]{2,}\\.){2,}[a-zA-Z]{2,}$"},"zone":{"type":"string"}},"required":["base","zone"],"additionalProperties":false,"description":"DNS configuration for the AI model."},"ports":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^[a-z]-?[a-z0-9]+(-[a-z0-9]+)*$","description":"The id used to identify the port across requests."},"name":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","description":"The name of the port used in the public url and UI."},"internalPort":{"type":"integer","description":"The port number."},"protocol":{"type":"string","description":"The protocol used by the port."},"public":{"type":"boolean","description":"If true, the port is exposed publicly."},"dns":{"type":"string","description":"DNS entry for this port."},"disableNfDomain":{"type":"boolean","description":"Disable routing on the default code.run domain for public HTTP ports with custom domains."}},"required":["id","name","internalPort","protocol","public"],"additionalProperties":false},"description":"An array of ports for the AI model."},"status":{"type":"string","enum":["pending","provisioning","starting","crashed","paused","running","deleting"],"description":"The current status of the AI model."},"deploymentConfiguration":{"type":"object","properties":{"id":{"type":"string","description":"The deployment configuration identifier."},"createdAt":{"type":"string","format":"date-time","description":"time of creation"}},"required":["id"],"additionalProperties":false,"description":"Details of the latest deployment configuration."},"createdAt":{"type":"string","format":"date-time","description":"time of creation"},"updatedAt":{"type":"string","format":"date-time","description":"time of update"}},"required":["name","spec","id","projectId","entityId","entityType","creatorId","dns","ports","status"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["AI Models","project"],"security":[],"x-nf-permission-required":"Project > AiModels > General > Read","x-nf-team-scoped":true,"x-nf-cli-command":["get","llm-model-deployment"]},"v1-projects--projectId--llm-model-deployments--llmModelDeploymentId--get-team-scoped":{"operationId":"getProjectsLlmModelDeploymentsLlmmodeldeploymentid","summary":"Get AI model","description":"Gets details about an AI model","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"llmModelDeploymentId","type":"string","required":true,"description":"ID of the AI model","example":"deepseek-v3-deployment","in":"path","schema":{"name":"llmModelDeploymentId","type":"string","required":true,"description":"ID of the AI model","example":"deepseek-v3-deployment","in":"path"}}],"responses":{"200":{"description":"Details about an AI model.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The name of the AI model.","example":"deepseek-v3-deployment"},"description":{"type":"string","pattern":"^[\\s\\S]*$","maxLength":1024,"description":"A description of the AI model.","example":"A deployment for DeepSeek V3 model"},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"spec":{"type":"object","properties":{"type":{"type":"string","enum":["custom"],"description":"Type of model spec - custom for user-defined configuration"},"configuration":{"type":"object","properties":{"name":{"type":"string"},"engine":{"type":"string","enum":["vllm"]},"revision":{"type":"string"},"nodeConfiguration":{"type":"object","properties":{"gpu":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"gpuType":{"type":"string"},"gpuCount":{"type":"integer","minimum":1},"timesliced":{"type":"boolean"}},"additionalProperties":false}},"additionalProperties":false},"storage":{"type":"object","properties":{"accessMode":{"type":"string","enum":["ReadWriteMany"]},"storageClass":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The type of the storage.","example":"nvme","default":"nvme"},"storageSize":{"type":"integer","minimum":1,"description":"The size of the storage, in megabytes. Configurable sizes depend on the storage class.","example":6144},"shmSize":{"type":"integer","minimum":0,"nullable":true}},"required":["storageSize"],"additionalProperties":false}},"additionalProperties":false},"architecture":{"type":"object","properties":{"type":{"type":"string","enum":["aggregated"]},"workerConfig":{"type":"object","properties":{"replicas":{"type":"integer","minimum":0,"maximum":5},"parallelismConfig":{"type":"object","properties":{"tensorParallelism":{"type":"integer"},"pipelineParallelism":{"type":"integer"},"expertParallelism":{"type":"integer"}},"additionalProperties":false},"sequenceLengthConfig":{"type":"object","properties":{"maxModelLength":{"anyOf":[{"type":"integer","minimum":1},{"type":"string","enum":["auto"]}]},"maxInputLength":{"type":"integer","minimum":1},"maxOutputLength":{"type":"integer","minimum":1}},"additionalProperties":false},"batchingConfig":{"type":"object","properties":{"maxNumSeqs":{"type":"integer","minimum":1},"maxNumBatchedTokens":{"type":"integer","minimum":1}},"additionalProperties":false},"enableChunkedPrefill":{"type":"boolean"},"enablePrefixCaching":{"type":"boolean"},"enforceEager":{"type":"boolean"},"enableAsyncScheduling":{"type":"boolean"},"gpuMemoryUtilization":{"type":"number","format":"float","minimum":0.1,"maximum":1},"trustRemoteCode":{"type":"boolean"},"dataType":{"type":"string","enum":["auto","float16","bfloat16"]},"kvCacheDataType":{"type":"string","enum":["fp8","fp8_e5m2","fp8_e4m3"]},"quantization":{"type":"string","enum":["fp8","awq","gptq","int4"]}},"additionalProperties":false}},"additionalProperties":false}},"additionalProperties":false,"description":"LLM model configuration including engine, architecture, and compute settings"}},"required":["type","configuration"],"additionalProperties":false},"id":{"type":"string","description":"The unique identifier of the AI model."},"projectId":{"type":"string","description":"ID of the project that the AI model belongs to","example":"default-project"},"entityId":{"type":"string","description":"The entity ID (team) this deployment belongs to."},"entityType":{"type":"string","enum":["user","team","org"]},"creatorId":{"type":"string","description":"The user who created this deployment."},"dns":{"type":"object","properties":{"base":{"type":"string","pattern":"^([a-zA-Z0-9-]{2,}\\.){2,}[a-zA-Z]{2,}$"},"zone":{"type":"string"}},"required":["base","zone"],"additionalProperties":false,"description":"DNS configuration for the AI model."},"ports":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^[a-z]-?[a-z0-9]+(-[a-z0-9]+)*$","description":"The id used to identify the port across requests."},"name":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","description":"The name of the port used in the public url and UI."},"internalPort":{"type":"integer","description":"The port number."},"protocol":{"type":"string","description":"The protocol used by the port."},"public":{"type":"boolean","description":"If true, the port is exposed publicly."},"dns":{"type":"string","description":"DNS entry for this port."},"disableNfDomain":{"type":"boolean","description":"Disable routing on the default code.run domain for public HTTP ports with custom domains."}},"required":["id","name","internalPort","protocol","public"],"additionalProperties":false},"description":"An array of ports for the AI model."},"status":{"type":"string","enum":["pending","provisioning","starting","crashed","paused","running","deleting"],"description":"The current status of the AI model."},"deploymentConfiguration":{"type":"object","properties":{"id":{"type":"string","description":"The deployment configuration identifier."},"createdAt":{"type":"string","format":"date-time","description":"time of creation"}},"required":["id"],"additionalProperties":false,"description":"Details of the latest deployment configuration."},"createdAt":{"type":"string","format":"date-time","description":"time of creation"},"updatedAt":{"type":"string","format":"date-time","description":"time of update"}},"required":["name","spec","id","projectId","entityId","entityType","creatorId","dns","ports","status"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["AI Models","project"],"security":[],"x-nf-permission-required":"Project > AiModels > General > Read","x-nf-team-scoped":true,"x-nf-cli-command":["get","llm-model-deployment"]},"v1-projects--projectId--llm-model-deployments--llmModelDeploymentId--post":{"operationId":"postProjectsLlmModelDeploymentsLlmmodeldeploymentid","summary":"Update AI model","description":"Updates an AI model","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"llmModelDeploymentId","type":"string","required":true,"description":"ID of the AI model","example":"deepseek-v3-deployment","in":"path","schema":{"name":"llmModelDeploymentId","type":"string","required":true,"description":"ID of the AI model","example":"deepseek-v3-deployment","in":"path"}}],"responses":{"200":{"description":"success"}},"tags":["AI Models","project"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The name of the AI model.","example":"deepseek-v3-deployment"},"description":{"type":"string","pattern":"^[\\s\\S]*$","maxLength":1024,"description":"A description of the AI model.","example":"A deployment for DeepSeek V3 model"},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"ports":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":1,"maxLength":8,"description":"The name used to identify the port."},"internalPort":{"type":"integer","minimum":1,"maximum":65535,"description":"The port number."},"public":{"type":"boolean","description":"If true, the port will be exposed publicly.","default":false},"domains":{"type":"array","items":{"type":"string","description":"A domain to redirect to this port."},"description":"An array of domains to redirect to this port. Each domain must first be verified and registered to your account.","default":[]},"disableNfDomain":{"type":"boolean","description":"Disable routing on the default code.run domain for public HTTP ports with custom domains.","default":false},"protocol":{"type":"string","enum":["HTTP","HTTP/2","TCP","UDP"],"description":"The protocol to use for the port."}},"required":["name","internalPort","protocol"],"additionalProperties":false}},"spec":{"type":"object","properties":{"configuration":{"type":"object","properties":{"name":{"type":"string"},"engine":{"type":"string","enum":["vllm"]},"revision":{"type":"string"},"nodeConfiguration":{"type":"object","properties":{"gpu":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"gpuType":{"type":"string"},"gpuCount":{"type":"integer","minimum":1},"timesliced":{"type":"boolean"}},"additionalProperties":false}},"additionalProperties":false},"storage":{"type":"object","properties":{"accessMode":{"type":"string","enum":["ReadWriteMany"]},"storageClass":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The type of the storage.","example":"nvme"},"storageSize":{"type":"integer","minimum":1,"description":"The size of the storage, in megabytes. Configurable sizes depend on the storage class.","example":6144},"shmSize":{"type":"integer","minimum":0,"nullable":true}},"additionalProperties":false}},"additionalProperties":false},"architecture":{"type":"object","properties":{"type":{"type":"string","enum":["aggregated"]},"workerConfig":{"type":"object","properties":{"replicas":{"type":"integer","minimum":0,"maximum":5},"parallelismConfig":{"type":"object","properties":{"tensorParallelism":{"type":"integer"},"pipelineParallelism":{"type":"integer"},"expertParallelism":{"type":"integer"}},"additionalProperties":false},"sequenceLengthConfig":{"type":"object","properties":{"maxModelLength":{"anyOf":[{"type":"integer","minimum":1},{"type":"string","enum":["auto"]}]},"maxInputLength":{"type":"integer","minimum":1},"maxOutputLength":{"type":"integer","minimum":1}},"additionalProperties":false},"batchingConfig":{"type":"object","properties":{"maxNumSeqs":{"type":"integer","minimum":1},"maxNumBatchedTokens":{"type":"integer","minimum":1}},"additionalProperties":false},"enableChunkedPrefill":{"type":"boolean"},"enablePrefixCaching":{"type":"boolean"},"enforceEager":{"type":"boolean"},"enableAsyncScheduling":{"type":"boolean"},"gpuMemoryUtilization":{"type":"number","format":"float","minimum":0.1,"maximum":1},"trustRemoteCode":{"type":"boolean"},"dataType":{"type":"string","enum":["auto","float16","bfloat16"]},"kvCacheDataType":{"type":"string","enum":["fp8","fp8_e5m2","fp8_e4m3"]},"quantization":{"type":"string","enum":["fp8","awq","gptq","int4"]}},"additionalProperties":false}},"additionalProperties":false}},"additionalProperties":false}},"additionalProperties":false}},"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Project > AiModels > General > Update","x-nf-team-scoped":true,"x-nf-cli-command":["update","llm-model-deployment"]},"v1-projects--projectId--llm-model-deployments--llmModelDeploymentId--post-team-scoped":{"operationId":"postProjectsLlmModelDeploymentsLlmmodeldeploymentid","summary":"Update AI model","description":"Updates an AI model","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"llmModelDeploymentId","type":"string","required":true,"description":"ID of the AI model","example":"deepseek-v3-deployment","in":"path","schema":{"name":"llmModelDeploymentId","type":"string","required":true,"description":"ID of the AI model","example":"deepseek-v3-deployment","in":"path"}}],"responses":{"200":{"description":"success"}},"tags":["AI Models","project"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The name of the AI model.","example":"deepseek-v3-deployment"},"description":{"type":"string","pattern":"^[\\s\\S]*$","maxLength":1024,"description":"A description of the AI model.","example":"A deployment for DeepSeek V3 model"},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"ports":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":1,"maxLength":8,"description":"The name used to identify the port."},"internalPort":{"type":"integer","minimum":1,"maximum":65535,"description":"The port number."},"public":{"type":"boolean","description":"If true, the port will be exposed publicly.","default":false},"domains":{"type":"array","items":{"type":"string","description":"A domain to redirect to this port."},"description":"An array of domains to redirect to this port. Each domain must first be verified and registered to your account.","default":[]},"disableNfDomain":{"type":"boolean","description":"Disable routing on the default code.run domain for public HTTP ports with custom domains.","default":false},"protocol":{"type":"string","enum":["HTTP","HTTP/2","TCP","UDP"],"description":"The protocol to use for the port."}},"required":["name","internalPort","protocol"],"additionalProperties":false}},"spec":{"type":"object","properties":{"configuration":{"type":"object","properties":{"name":{"type":"string"},"engine":{"type":"string","enum":["vllm"]},"revision":{"type":"string"},"nodeConfiguration":{"type":"object","properties":{"gpu":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"gpuType":{"type":"string"},"gpuCount":{"type":"integer","minimum":1},"timesliced":{"type":"boolean"}},"additionalProperties":false}},"additionalProperties":false},"storage":{"type":"object","properties":{"accessMode":{"type":"string","enum":["ReadWriteMany"]},"storageClass":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The type of the storage.","example":"nvme"},"storageSize":{"type":"integer","minimum":1,"description":"The size of the storage, in megabytes. Configurable sizes depend on the storage class.","example":6144},"shmSize":{"type":"integer","minimum":0,"nullable":true}},"additionalProperties":false}},"additionalProperties":false},"architecture":{"type":"object","properties":{"type":{"type":"string","enum":["aggregated"]},"workerConfig":{"type":"object","properties":{"replicas":{"type":"integer","minimum":0,"maximum":5},"parallelismConfig":{"type":"object","properties":{"tensorParallelism":{"type":"integer"},"pipelineParallelism":{"type":"integer"},"expertParallelism":{"type":"integer"}},"additionalProperties":false},"sequenceLengthConfig":{"type":"object","properties":{"maxModelLength":{"anyOf":[{"type":"integer","minimum":1},{"type":"string","enum":["auto"]}]},"maxInputLength":{"type":"integer","minimum":1},"maxOutputLength":{"type":"integer","minimum":1}},"additionalProperties":false},"batchingConfig":{"type":"object","properties":{"maxNumSeqs":{"type":"integer","minimum":1},"maxNumBatchedTokens":{"type":"integer","minimum":1}},"additionalProperties":false},"enableChunkedPrefill":{"type":"boolean"},"enablePrefixCaching":{"type":"boolean"},"enforceEager":{"type":"boolean"},"enableAsyncScheduling":{"type":"boolean"},"gpuMemoryUtilization":{"type":"number","format":"float","minimum":0.1,"maximum":1},"trustRemoteCode":{"type":"boolean"},"dataType":{"type":"string","enum":["auto","float16","bfloat16"]},"kvCacheDataType":{"type":"string","enum":["fp8","fp8_e5m2","fp8_e4m3"]},"quantization":{"type":"string","enum":["fp8","awq","gptq","int4"]}},"additionalProperties":false}},"additionalProperties":false}},"additionalProperties":false}},"additionalProperties":false}},"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Project > AiModels > General > Update","x-nf-team-scoped":true,"x-nf-cli-command":["update","llm-model-deployment"]},"v1-projects--projectId--llm-model-deployments--llmModelDeploymentId--delete":{"operationId":"deleteProjectsLlmModelDeploymentsLlmmodeldeploymentid","summary":"Delete AI model","description":"Delete an AI model","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"llmModelDeploymentId","type":"string","required":true,"description":"ID of the AI model","example":"deepseek-v3-deployment","in":"path","schema":{"name":"llmModelDeploymentId","type":"string","required":true,"description":"ID of the AI model","example":"deepseek-v3-deployment","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["AI Models","project"],"security":[],"x-nf-permission-required":"Project > AiModels > General > Delete","x-nf-team-scoped":true,"x-nf-cli-command":["delete","llm-model-deployment"]},"v1-projects--projectId--llm-model-deployments--llmModelDeploymentId--delete-team-scoped":{"operationId":"deleteProjectsLlmModelDeploymentsLlmmodeldeploymentid","summary":"Delete AI model","description":"Delete an AI model","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"llmModelDeploymentId","type":"string","required":true,"description":"ID of the AI model","example":"deepseek-v3-deployment","in":"path","schema":{"name":"llmModelDeploymentId","type":"string","required":true,"description":"ID of the AI model","example":"deepseek-v3-deployment","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["AI Models","project"],"security":[],"x-nf-permission-required":"Project > AiModels > General > Delete","x-nf-team-scoped":true,"x-nf-cli-command":["delete","llm-model-deployment"]},"v1-projects--projectId--pipelines-get":{"operationId":"getProjectsPipelines","summary":"List pipelines","description":"Lists all pipelines for a project","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query","schema":{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query"}},{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query","schema":{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query"}},{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query","schema":{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query"}}],"responses":{"200":{"description":"A list of pipelines belong to the project.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"pipelines":{"type":"array","items":{"type":"object","properties":{"name":{"oneOf":[{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The name of the pipeline.","example":"example-pipeline","x-required":true},{"type":"string","pattern":".*\\${.*}.*","description":"A string containing one or more references that resolve to the name of the pipeline."}],"description":"The name of the pipeline."},"description":{"oneOf":[{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"A description of the pipeline."},{"type":"string","pattern":".*\\${.*}.*","description":"A string containing one or more references that resolve to a description of the pipeline."}],"description":"A description of the pipeline."},"id":{"type":"string","description":"Identifier for the pipeline","example":"example-pipeline"},"createdAt":{"type":"string","format":"date-time","description":"time of creation"},"updatedAt":{"type":"string","format":"date-time","description":"time of update"}},"required":["name","id"],"additionalProperties":false,"description":"A pipeline."},"description":"An array of pipelines in this project."}},"required":["pipelines"],"additionalProperties":false,"description":"Result data."},"pagination":{"type":"object","properties":{"hasNextPage":{"type":"boolean","description":"Is there another page of results available?","example":false},"cursor":{"type":"string","description":"The cursor to access the next page of results."},"count":{"type":"number","format":"float","description":"The number of results returned by this request.","example":1}},"required":["hasNextPage","count"],"additionalProperties":false,"description":"Data about the endpoint pagination."}},"required":["data","pagination"],"additionalProperties":false,"description":"Response object."}}},"tags":["Pipelines","project"],"security":[],"x-nf-permission-required":"Project > Pipelines > General > Read","x-nf-team-scoped":true,"x-nf-cli-command":["list","pipelines"]},"v1-projects--projectId--pipelines-get-team-scoped":{"operationId":"getProjectsPipelines","summary":"List pipelines","description":"Lists all pipelines for a project","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query","schema":{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query"}},{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query","schema":{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query"}},{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query","schema":{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query"}}],"responses":{"200":{"description":"A list of pipelines belong to the project.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"pipelines":{"type":"array","items":{"type":"object","properties":{"name":{"oneOf":[{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The name of the pipeline.","example":"example-pipeline","x-required":true},{"type":"string","pattern":".*\\${.*}.*","description":"A string containing one or more references that resolve to the name of the pipeline."}],"description":"The name of the pipeline."},"description":{"oneOf":[{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"A description of the pipeline."},{"type":"string","pattern":".*\\${.*}.*","description":"A string containing one or more references that resolve to a description of the pipeline."}],"description":"A description of the pipeline."},"id":{"type":"string","description":"Identifier for the pipeline","example":"example-pipeline"},"createdAt":{"type":"string","format":"date-time","description":"time of creation"},"updatedAt":{"type":"string","format":"date-time","description":"time of update"}},"required":["name","id"],"additionalProperties":false,"description":"A pipeline."},"description":"An array of pipelines in this project."}},"required":["pipelines"],"additionalProperties":false,"description":"Result data."},"pagination":{"type":"object","properties":{"hasNextPage":{"type":"boolean","description":"Is there another page of results available?","example":false},"cursor":{"type":"string","description":"The cursor to access the next page of results."},"count":{"type":"number","format":"float","description":"The number of results returned by this request.","example":1}},"required":["hasNextPage","count"],"additionalProperties":false,"description":"Data about the endpoint pagination."}},"required":["data","pagination"],"additionalProperties":false,"description":"Response object."}}},"tags":["Pipelines","project"],"security":[],"x-nf-permission-required":"Project > Pipelines > General > Read","x-nf-team-scoped":true,"x-nf-cli-command":["list","pipelines"]},"v1-projects--projectId--pipelines--pipelineId--get":{"operationId":"getProjectsPipelinesPipelineid","summary":"Get pipeline","description":"Get details about a pipeline","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"pipelineId","type":"string","required":true,"description":"ID of the pipeline","example":"example-pipeline","in":"path","schema":{"name":"pipelineId","type":"string","required":true,"description":"ID of the pipeline","example":"example-pipeline","in":"path"}}],"responses":{"200":{"description":"Details about a pipeline.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"name":{"oneOf":[{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The name of the pipeline.","example":"example-pipeline","x-required":true},{"type":"string","pattern":".*\\${.*}.*","description":"A string containing one or more references that resolve to the name of the pipeline."}],"description":"The name of the pipeline."},"description":{"oneOf":[{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"A description of the pipeline."},{"type":"string","pattern":".*\\${.*}.*","description":"A string containing one or more references that resolve to a description of the pipeline."}],"description":"A description of the pipeline."},"preview":{"type":"object","properties":{},"additionalProperties":false},"stages":{"type":"array","items":{}},"nfObjects":{"type":"array","items":{"type":"object","properties":{"id":{"oneOf":[{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The ID of the service, job or addon to include in the pipeline.","example":"example-service","x-required":true},{"type":"string","pattern":".*\\${.*}.*","description":"A string containing one or more references that resolve to the ID of the service, job or addon to include in the pipeline."}],"description":"The ID of the service, job or addon to include in the pipeline."},"type":{"type":"string","enum":["service","job","addon"],"description":"The type of the resource to include in the pipeline.","example":"service"},"stage":{"type":"string","enum":["Development","Staging","Production"],"description":"The stage in the pipeline to include the resource.","example":"Production"}},"required":["id","type","stage"],"additionalProperties":false},"description":"A list of services, jobs and addons to include in the pipeline."}},"required":["name"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Pipelines","project"],"security":[],"x-nf-permission-required":"Project > Pipelines > General > Read","x-nf-team-scoped":true,"x-nf-cli-command":["get","pipeline"]},"v1-projects--projectId--pipelines--pipelineId--get-team-scoped":{"operationId":"getProjectsPipelinesPipelineid","summary":"Get pipeline","description":"Get details about a pipeline","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"pipelineId","type":"string","required":true,"description":"ID of the pipeline","example":"example-pipeline","in":"path","schema":{"name":"pipelineId","type":"string","required":true,"description":"ID of the pipeline","example":"example-pipeline","in":"path"}}],"responses":{"200":{"description":"Details about a pipeline.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"name":{"oneOf":[{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The name of the pipeline.","example":"example-pipeline","x-required":true},{"type":"string","pattern":".*\\${.*}.*","description":"A string containing one or more references that resolve to the name of the pipeline."}],"description":"The name of the pipeline."},"description":{"oneOf":[{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"A description of the pipeline."},{"type":"string","pattern":".*\\${.*}.*","description":"A string containing one or more references that resolve to a description of the pipeline."}],"description":"A description of the pipeline."},"preview":{"type":"object","properties":{},"additionalProperties":false},"stages":{"type":"array","items":{}},"nfObjects":{"type":"array","items":{"type":"object","properties":{"id":{"oneOf":[{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The ID of the service, job or addon to include in the pipeline.","example":"example-service","x-required":true},{"type":"string","pattern":".*\\${.*}.*","description":"A string containing one or more references that resolve to the ID of the service, job or addon to include in the pipeline."}],"description":"The ID of the service, job or addon to include in the pipeline."},"type":{"type":"string","enum":["service","job","addon"],"description":"The type of the resource to include in the pipeline.","example":"service"},"stage":{"type":"string","enum":["Development","Staging","Production"],"description":"The stage in the pipeline to include the resource.","example":"Production"}},"required":["id","type","stage"],"additionalProperties":false},"description":"A list of services, jobs and addons to include in the pipeline."}},"required":["name"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Pipelines","project"],"security":[],"x-nf-permission-required":"Project > Pipelines > General > Read","x-nf-team-scoped":true,"x-nf-cli-command":["get","pipeline"]},"v1-projects--projectId--pipelines--pipelineId--preview-envs-get":{"operationId":"getProjectsPipelinesPipelineidPreviewEnvs","summary":"Get preview template","description":"Get information about the given preview template.","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"pipelineId","type":"string","required":true,"description":"ID of the pipeline","example":"example-pipeline","in":"path","schema":{"name":"pipelineId","type":"string","required":true,"description":"ID of the pipeline","example":"example-pipeline","in":"path"}},{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query","schema":{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query"}},{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query","schema":{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query"}},{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query","schema":{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query"}}],"responses":{"200":{"description":"Details about the preview template.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"apiVersion":{"type":"string","enum":["v1.2"],"description":"The version of the Northflank API to run the template against.","example":"v1.2"},"arguments":{"type":"object","properties":{},"description":"A set of arguments that can be referenced in a template using '${args.argumentName}'."},"triggers":{"type":"array","items":{"type":"object","properties":{"ref":{"type":"string","description":"A reference that can be used to access the output of this trigger in the template."},"vcsService":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If vcsService is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string"},"repoUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo that will trigger the template.","example":"https://github.com/northflank-examples/remix-postgres-redis-demo"},"branchRestrictions":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z/*0-9%\\-.#_!'();,&=+]*$"},"default":[]},"prRestrictions":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z/*0-9%\\-.#_!'();,&=+]*$"},"default":[]},"pathIgnoreRules":{"type":"array","items":{"type":"string","maxLength":260,"description":"A path ignore rule, following `.gitignore` syntax. For example, `*.md` will ignore all files ending with `.md`.","example":"README.md"},"maxItems":200,"description":"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.","default":[]},"ciIgnoreFlags":{"type":"array","items":{"type":"string","maxLength":72,"description":"A commit ignore flag.","example":"[skip ci]"},"maxItems":200,"description":"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]\"]`","example":["[skip ci]","[ci skip]","[no ci]","[skip nf]","[nf skip]","[northflank skip]","[skip northflank]"],"default":[]},"ciIgnoreFlagsEnabled":{"type":"boolean","default":false},"isAllowList":{"type":"boolean","default":false},"ignoreDrafts":{"type":"boolean","description":"If `true`, draft pull requests from this repo will not trigger the template.","default":false},"type":{"type":"string","enum":["git"],"description":"Type of trigger"},"manualOnly":{"type":"boolean","description":"Should the git trigger only be triggered manually?","default":false}},"required":["vcsService","repoUrl"],"additionalProperties":false},"default":[]},"gitops":{"type":"object","properties":{"vcsService":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string","description":"Legacy key. Please used accountLogin instead."},"repoUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo to sync the file with.","example":"https://github.com/northflank-examples/remix-postgres-redis-demo"},"branch":{"type":"string","description":"The name of the branch to use.","example":"main"},"filePath":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]+$","description":"The file path in the repository. If using an existing file, it should be in JSON format.","examples":["/Dockerfile","northflank.json"]}},"required":["vcsService","repoUrl","branch","filePath"],"additionalProperties":false},"$schema":{"type":"string"},"spec":{"$ref":"#/components/schemas/V1PreviewEnvTemplateNodeSchema"},"id":{"type":"string","description":"Identifier for the template","example":"example-template"},"paused":{"type":"boolean","description":"Whether triggers are paused for this preview template. If `true`, Git triggers and webhook triggers will not create or update previews.","example":false},"options":{"type":"object","properties":{},"additionalProperties":false},"createdAt":{"type":"string","format":"date-time","description":"time of creation"},"updatedAt":{"type":"string","format":"date-time","description":"time of update"}},"required":["apiVersion","spec","id","options"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Pipelines","project"],"security":[],"x-nf-permission-required":"Account > Templates > General > Read","x-nf-team-scoped":true,"x-nf-cli-command":["get","preview-template"]},"v1-projects--projectId--pipelines--pipelineId--preview-envs-get-team-scoped":{"operationId":"getProjectsPipelinesPipelineidPreviewEnvs","summary":"Get preview template","description":"Get information about the given preview template.","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"pipelineId","type":"string","required":true,"description":"ID of the pipeline","example":"example-pipeline","in":"path","schema":{"name":"pipelineId","type":"string","required":true,"description":"ID of the pipeline","example":"example-pipeline","in":"path"}},{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query","schema":{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query"}},{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query","schema":{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query"}},{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query","schema":{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query"}}],"responses":{"200":{"description":"Details about the preview template.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"apiVersion":{"type":"string","enum":["v1.2"],"description":"The version of the Northflank API to run the template against.","example":"v1.2"},"arguments":{"type":"object","properties":{},"description":"A set of arguments that can be referenced in a template using '${args.argumentName}'."},"triggers":{"type":"array","items":{"type":"object","properties":{"ref":{"type":"string","description":"A reference that can be used to access the output of this trigger in the template."},"vcsService":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If vcsService is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string"},"repoUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo that will trigger the template.","example":"https://github.com/northflank-examples/remix-postgres-redis-demo"},"branchRestrictions":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z/*0-9%\\-.#_!'();,&=+]*$"},"default":[]},"prRestrictions":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z/*0-9%\\-.#_!'();,&=+]*$"},"default":[]},"pathIgnoreRules":{"type":"array","items":{"type":"string","maxLength":260,"description":"A path ignore rule, following `.gitignore` syntax. For example, `*.md` will ignore all files ending with `.md`.","example":"README.md"},"maxItems":200,"description":"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.","default":[]},"ciIgnoreFlags":{"type":"array","items":{"type":"string","maxLength":72,"description":"A commit ignore flag.","example":"[skip ci]"},"maxItems":200,"description":"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]\"]`","example":["[skip ci]","[ci skip]","[no ci]","[skip nf]","[nf skip]","[northflank skip]","[skip northflank]"],"default":[]},"ciIgnoreFlagsEnabled":{"type":"boolean","default":false},"isAllowList":{"type":"boolean","default":false},"ignoreDrafts":{"type":"boolean","description":"If `true`, draft pull requests from this repo will not trigger the template.","default":false},"type":{"type":"string","enum":["git"],"description":"Type of trigger"},"manualOnly":{"type":"boolean","description":"Should the git trigger only be triggered manually?","default":false}},"required":["vcsService","repoUrl"],"additionalProperties":false},"default":[]},"gitops":{"type":"object","properties":{"vcsService":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string","description":"Legacy key. Please used accountLogin instead."},"repoUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo to sync the file with.","example":"https://github.com/northflank-examples/remix-postgres-redis-demo"},"branch":{"type":"string","description":"The name of the branch to use.","example":"main"},"filePath":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]+$","description":"The file path in the repository. If using an existing file, it should be in JSON format.","examples":["/Dockerfile","northflank.json"]}},"required":["vcsService","repoUrl","branch","filePath"],"additionalProperties":false},"$schema":{"type":"string"},"spec":{"$ref":"#/components/schemas/V1PreviewEnvTemplateNodeSchema"},"id":{"type":"string","description":"Identifier for the template","example":"example-template"},"paused":{"type":"boolean","description":"Whether triggers are paused for this preview template. If `true`, Git triggers and webhook triggers will not create or update previews.","example":false},"options":{"type":"object","properties":{},"additionalProperties":false},"createdAt":{"type":"string","format":"date-time","description":"time of creation"},"updatedAt":{"type":"string","format":"date-time","description":"time of update"}},"required":["apiVersion","spec","id","options"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Pipelines","project"],"security":[],"x-nf-permission-required":"Account > Templates > General > Read","x-nf-team-scoped":true,"x-nf-cli-command":["get","preview-template"]},"v1-projects--projectId--pipelines--pipelineId--preview-envs-post":{"operationId":"postProjectsPipelinesPipelineidPreviewEnvs","summary":"Update preview template","description":"Update a given preview template.","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"pipelineId","type":"string","required":true,"description":"ID of the pipeline","example":"example-pipeline","in":"path","schema":{"name":"pipelineId","type":"string","required":true,"description":"ID of the pipeline","example":"example-pipeline","in":"path"}}],"responses":{"200":{"description":"success"}},"tags":["Pipelines","project"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"apiVersion":{"type":"string","enum":["v1.2"],"description":"The version of the Northflank API to run the template against.","example":"v1.2"},"options":{"type":"object","properties":{"concurrencyPolicy":{"type":"string","enum":["allow","queue","forbid","latest","replace"],"description":"Defines the concurrency behaviour of the template with respect to parallel runs.","example":"allow"},"nameFormat":{"type":"string","description":"The format of the automatically generated preview name. This is a parsed ref string."},"prefixName":{"type":"boolean","description":"If true, the preview name will default to the front of the resource name."},"useBranchContents":{"type":"boolean","description":"If true, and gitops is enabled, the preview will run based on the contents of the branch that triggered it, rather than the set branch."},"schedule":{"type":"object","properties":{"mon":{"type":"object","properties":{"startTime":{"type":"integer","minimum":0,"maximum":2400},"endTime":{"type":"integer","minimum":0,"maximum":2400}},"additionalProperties":false},"tue":{"type":"object","properties":{"startTime":{"type":"integer","minimum":0,"maximum":2400},"endTime":{"type":"integer","minimum":0,"maximum":2400}},"additionalProperties":false},"wed":{"type":"object","properties":{"startTime":{"type":"integer","minimum":0,"maximum":2400},"endTime":{"type":"integer","minimum":0,"maximum":2400}},"additionalProperties":false},"thu":{"type":"object","properties":{"startTime":{"type":"integer","minimum":0,"maximum":2400},"endTime":{"type":"integer","minimum":0,"maximum":2400}},"additionalProperties":false},"fri":{"type":"object","properties":{"startTime":{"type":"integer","minimum":0,"maximum":2400},"endTime":{"type":"integer","minimum":0,"maximum":2400}},"additionalProperties":false},"sat":{"type":"object","properties":{"startTime":{"type":"integer","minimum":0,"maximum":2400},"endTime":{"type":"integer","minimum":0,"maximum":2400}},"additionalProperties":false},"sun":{"type":"object","properties":{"startTime":{"type":"integer","minimum":0,"maximum":2400},"endTime":{"type":"integer","minimum":0,"maximum":2400}},"additionalProperties":false}},"additionalProperties":false,"description":"Options regarding which hours preview environments should be active. Only available for BYOC projects."},"expiry":{"type":"object","properties":{"previewLifetime":{"type":"integer","minimum":1,"description":"If set, preview environments will be automatically deleted after this many minutes since their last update."},"resetOnUpdate":{"type":"boolean","description":"If `true`, the expiry time for an existing preview will be reset when it is ran again."}},"additionalProperties":false,"description":"Settings regarding the automatic deletion of previews."}},"additionalProperties":false,"description":"Options regarding how the template is run."},"arguments":{"type":"object","properties":{},"description":"A set of arguments that can be referenced in a template using '${args.argumentName}'."},"gitops":{"type":"object","properties":{"vcsService":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string","description":"Legacy key. Please used accountLogin instead."},"repoUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo to sync the file with.","example":"https://github.com/northflank-examples/remix-postgres-redis-demo"},"branch":{"type":"string","description":"The name of the branch to use.","example":"main"},"filePath":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]+$","description":"The file path in the repository. If using an existing file, it should be in JSON format.","examples":["/Dockerfile","northflank.json"]}},"required":["vcsService","repoUrl","branch","filePath"],"additionalProperties":false},"$schema":{"type":"string"},"spec":{"$ref":"#/components/schemas/V1PreviewEnvTemplateNodeSchema"},"paused":{"type":"boolean","description":"Whether triggers are paused for this preview template. If `true`, Git triggers and webhook triggers will not create or update previews.","example":false},"triggers":{"type":"array","items":{"type":"object","properties":{"ref":{"type":"string","description":"A reference that can be used to access the output of this trigger in the template."},"vcsService":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If vcsService is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string"},"repoUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo that will trigger the template.","example":"https://github.com/northflank-examples/remix-postgres-redis-demo"},"branchRestrictions":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z/*0-9%\\-.#_!'();,&=+]*$"},"default":[]},"prRestrictions":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z/*0-9%\\-.#_!'();,&=+]*$"},"default":[]},"pathIgnoreRules":{"type":"array","items":{"type":"string","maxLength":260,"description":"A path ignore rule, following `.gitignore` syntax. For example, `*.md` will ignore all files ending with `.md`.","example":"README.md"},"maxItems":200,"description":"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.","default":[]},"ciIgnoreFlags":{"type":"array","items":{"type":"string","maxLength":72,"description":"A commit ignore flag.","example":"[skip ci]"},"maxItems":200,"description":"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]\"]`","example":["[skip ci]","[ci skip]","[no ci]","[skip nf]","[nf skip]","[northflank skip]","[skip northflank]"],"default":[]},"ciIgnoreFlagsEnabled":{"type":"boolean","default":false},"isAllowList":{"type":"boolean","default":false},"ignoreDrafts":{"type":"boolean","description":"If `true`, draft pull requests from this repo will not trigger the template.","default":false},"type":{"type":"string","enum":["git"],"description":"Type of trigger"},"manualOnly":{"type":"boolean","description":"Should the git trigger only be triggered manually?","default":false}},"required":["vcsService","repoUrl"],"additionalProperties":false},"default":[]},"webhook":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether this template can be ran using a webhook endpoint trigger.","example":true},"regenerate":{"type":"boolean","description":"If true, the webhook endpoint will be regenerated if one already exists.","example":false}},"additionalProperties":false}},"required":["apiVersion","spec"],"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Account > Templates > General > Create","x-nf-team-scoped":true,"x-nf-cli-command":["update","preview-template"]},"v1-projects--projectId--pipelines--pipelineId--preview-envs-post-team-scoped":{"operationId":"postProjectsPipelinesPipelineidPreviewEnvs","summary":"Update preview template","description":"Update a given preview template.","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"pipelineId","type":"string","required":true,"description":"ID of the pipeline","example":"example-pipeline","in":"path","schema":{"name":"pipelineId","type":"string","required":true,"description":"ID of the pipeline","example":"example-pipeline","in":"path"}}],"responses":{"200":{"description":"success"}},"tags":["Pipelines","project"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"apiVersion":{"type":"string","enum":["v1.2"],"description":"The version of the Northflank API to run the template against.","example":"v1.2"},"options":{"type":"object","properties":{"concurrencyPolicy":{"type":"string","enum":["allow","queue","forbid","latest","replace"],"description":"Defines the concurrency behaviour of the template with respect to parallel runs.","example":"allow"},"nameFormat":{"type":"string","description":"The format of the automatically generated preview name. This is a parsed ref string."},"prefixName":{"type":"boolean","description":"If true, the preview name will default to the front of the resource name."},"useBranchContents":{"type":"boolean","description":"If true, and gitops is enabled, the preview will run based on the contents of the branch that triggered it, rather than the set branch."},"schedule":{"type":"object","properties":{"mon":{"type":"object","properties":{"startTime":{"type":"integer","minimum":0,"maximum":2400},"endTime":{"type":"integer","minimum":0,"maximum":2400}},"additionalProperties":false},"tue":{"type":"object","properties":{"startTime":{"type":"integer","minimum":0,"maximum":2400},"endTime":{"type":"integer","minimum":0,"maximum":2400}},"additionalProperties":false},"wed":{"type":"object","properties":{"startTime":{"type":"integer","minimum":0,"maximum":2400},"endTime":{"type":"integer","minimum":0,"maximum":2400}},"additionalProperties":false},"thu":{"type":"object","properties":{"startTime":{"type":"integer","minimum":0,"maximum":2400},"endTime":{"type":"integer","minimum":0,"maximum":2400}},"additionalProperties":false},"fri":{"type":"object","properties":{"startTime":{"type":"integer","minimum":0,"maximum":2400},"endTime":{"type":"integer","minimum":0,"maximum":2400}},"additionalProperties":false},"sat":{"type":"object","properties":{"startTime":{"type":"integer","minimum":0,"maximum":2400},"endTime":{"type":"integer","minimum":0,"maximum":2400}},"additionalProperties":false},"sun":{"type":"object","properties":{"startTime":{"type":"integer","minimum":0,"maximum":2400},"endTime":{"type":"integer","minimum":0,"maximum":2400}},"additionalProperties":false}},"additionalProperties":false,"description":"Options regarding which hours preview environments should be active. Only available for BYOC projects."},"expiry":{"type":"object","properties":{"previewLifetime":{"type":"integer","minimum":1,"description":"If set, preview environments will be automatically deleted after this many minutes since their last update."},"resetOnUpdate":{"type":"boolean","description":"If `true`, the expiry time for an existing preview will be reset when it is ran again."}},"additionalProperties":false,"description":"Settings regarding the automatic deletion of previews."}},"additionalProperties":false,"description":"Options regarding how the template is run."},"arguments":{"type":"object","properties":{},"description":"A set of arguments that can be referenced in a template using '${args.argumentName}'."},"gitops":{"type":"object","properties":{"vcsService":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string","description":"Legacy key. Please used accountLogin instead."},"repoUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo to sync the file with.","example":"https://github.com/northflank-examples/remix-postgres-redis-demo"},"branch":{"type":"string","description":"The name of the branch to use.","example":"main"},"filePath":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]+$","description":"The file path in the repository. If using an existing file, it should be in JSON format.","examples":["/Dockerfile","northflank.json"]}},"required":["vcsService","repoUrl","branch","filePath"],"additionalProperties":false},"$schema":{"type":"string"},"spec":{"$ref":"#/components/schemas/V1PreviewEnvTemplateNodeSchema"},"paused":{"type":"boolean","description":"Whether triggers are paused for this preview template. If `true`, Git triggers and webhook triggers will not create or update previews.","example":false},"triggers":{"type":"array","items":{"type":"object","properties":{"ref":{"type":"string","description":"A reference that can be used to access the output of this trigger in the template."},"vcsService":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If vcsService is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string"},"repoUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo that will trigger the template.","example":"https://github.com/northflank-examples/remix-postgres-redis-demo"},"branchRestrictions":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z/*0-9%\\-.#_!'();,&=+]*$"},"default":[]},"prRestrictions":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z/*0-9%\\-.#_!'();,&=+]*$"},"default":[]},"pathIgnoreRules":{"type":"array","items":{"type":"string","maxLength":260,"description":"A path ignore rule, following `.gitignore` syntax. For example, `*.md` will ignore all files ending with `.md`.","example":"README.md"},"maxItems":200,"description":"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.","default":[]},"ciIgnoreFlags":{"type":"array","items":{"type":"string","maxLength":72,"description":"A commit ignore flag.","example":"[skip ci]"},"maxItems":200,"description":"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]\"]`","example":["[skip ci]","[ci skip]","[no ci]","[skip nf]","[nf skip]","[northflank skip]","[skip northflank]"],"default":[]},"ciIgnoreFlagsEnabled":{"type":"boolean","default":false},"isAllowList":{"type":"boolean","default":false},"ignoreDrafts":{"type":"boolean","description":"If `true`, draft pull requests from this repo will not trigger the template.","default":false},"type":{"type":"string","enum":["git"],"description":"Type of trigger"},"manualOnly":{"type":"boolean","description":"Should the git trigger only be triggered manually?","default":false}},"required":["vcsService","repoUrl"],"additionalProperties":false},"default":[]},"webhook":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether this template can be ran using a webhook endpoint trigger.","example":true},"regenerate":{"type":"boolean","description":"If true, the webhook endpoint will be regenerated if one already exists.","example":false}},"additionalProperties":false}},"required":["apiVersion","spec"],"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Account > Templates > General > Create","x-nf-team-scoped":true,"x-nf-cli-command":["update","preview-template"]},"v1-projects--projectId--pipelines--pipelineId--preview-envs-previews-get":{"operationId":"getProjectsPipelinesPipelineidPreviewEnvsPreviews","summary":"List preview environments","description":"Get a list of active preview environments for a template","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"pipelineId","type":"string","required":true,"description":"ID of the pipeline","example":"example-pipeline","in":"path","schema":{"name":"pipelineId","type":"string","required":true,"description":"ID of the pipeline","example":"example-pipeline","in":"path"}},{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query","schema":{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query"}},{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query","schema":{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query"}},{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query","schema":{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query"}}],"responses":{"200":{"description":"A list of preview environments for the template.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"previewEnvironments":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Identifier for the preview template environment","example":"clean-step"},"vcsData":{"type":"object","properties":{"repoUrl":{"type":"string"}},"required":["repoUrl"],"additionalProperties":false,"description":"Data about the version control action that triggered environment creation"},"paused":{"type":"boolean","description":"Whether the preview environment has been paused.","example":false},"createdAt":{"type":"string","format":"date-time","description":"time of creation"},"updatedAt":{"type":"string","format":"date-time","description":"time of update"}},"required":["id","vcsData"],"additionalProperties":false},"description":"A list of currently available preview environments for the template."}},"required":["previewEnvironments"],"additionalProperties":false,"description":"Result data."},"pagination":{"type":"object","properties":{"hasNextPage":{"type":"boolean","description":"Is there another page of results available?","example":false},"cursor":{"type":"string","description":"The cursor to access the next page of results."},"count":{"type":"number","format":"float","description":"The number of results returned by this request.","example":1}},"required":["hasNextPage","count"],"additionalProperties":false,"description":"Data about the endpoint pagination."}},"required":["data","pagination"],"additionalProperties":false,"description":"Response object."}}},"tags":["Pipelines","project"],"security":[],"x-nf-permission-required":"Account > Templates > General > Read","x-nf-team-scoped":true,"x-nf-cli-command":["list","pipeline-template-previews"]},"v1-projects--projectId--pipelines--pipelineId--preview-envs-previews-get-team-scoped":{"operationId":"getProjectsPipelinesPipelineidPreviewEnvsPreviews","summary":"List preview environments","description":"Get a list of active preview environments for a template","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"pipelineId","type":"string","required":true,"description":"ID of the pipeline","example":"example-pipeline","in":"path","schema":{"name":"pipelineId","type":"string","required":true,"description":"ID of the pipeline","example":"example-pipeline","in":"path"}},{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query","schema":{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query"}},{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query","schema":{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query"}},{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query","schema":{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query"}}],"responses":{"200":{"description":"A list of preview environments for the template.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"previewEnvironments":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Identifier for the preview template environment","example":"clean-step"},"vcsData":{"type":"object","properties":{"repoUrl":{"type":"string"}},"required":["repoUrl"],"additionalProperties":false,"description":"Data about the version control action that triggered environment creation"},"paused":{"type":"boolean","description":"Whether the preview environment has been paused.","example":false},"createdAt":{"type":"string","format":"date-time","description":"time of creation"},"updatedAt":{"type":"string","format":"date-time","description":"time of update"}},"required":["id","vcsData"],"additionalProperties":false},"description":"A list of currently available preview environments for the template."}},"required":["previewEnvironments"],"additionalProperties":false,"description":"Result data."},"pagination":{"type":"object","properties":{"hasNextPage":{"type":"boolean","description":"Is there another page of results available?","example":false},"cursor":{"type":"string","description":"The cursor to access the next page of results."},"count":{"type":"number","format":"float","description":"The number of results returned by this request.","example":1}},"required":["hasNextPage","count"],"additionalProperties":false,"description":"Data about the endpoint pagination."}},"required":["data","pagination"],"additionalProperties":false,"description":"Response object."}}},"tags":["Pipelines","project"],"security":[],"x-nf-permission-required":"Account > Templates > General > Read","x-nf-team-scoped":true,"x-nf-cli-command":["list","pipeline-template-previews"]},"v1-projects--projectId--pipelines--pipelineId--preview-envs-previews--previewId--delete":{"operationId":"deleteProjectsPipelinesPipelineidPreviewEnvsPreviewsPreviewid","summary":"Delete preview environment","description":"Delete a preview environment generated by a preview template.","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"pipelineId","type":"string","required":true,"description":"ID of the pipeline","example":"example-pipeline","in":"path","schema":{"name":"pipelineId","type":"string","required":true,"description":"ID of the pipeline","example":"example-pipeline","in":"path"}},{"name":"previewId","type":"string","required":true,"description":"ID of the preview environment","example":"different-ray","in":"path","schema":{"name":"previewId","type":"string","required":true,"description":"ID of the preview environment","example":"different-ray","in":"path"}},{"name":"skipTeardown","type":"boolean","description":"If `true`, the teardown spec will not be run when deleting the preview environment.","default":false,"in":"query","schema":{"name":"skipTeardown","type":"boolean","description":"If `true`, the teardown spec will not be run when deleting the preview environment.","default":false,"in":"query"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Pipelines","project"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"teardownArgumentOverrides":{"type":"object","properties":{},"description":"Argument overrides to pass to the teardown spec when deleting the preview environment."}},"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Account > Templates > General > Delete","x-nf-team-scoped":true,"x-nf-cli-command":["delete","pipeline-template-preview"]},"v1-projects--projectId--pipelines--pipelineId--preview-envs-previews--previewId--delete-team-scoped":{"operationId":"deleteProjectsPipelinesPipelineidPreviewEnvsPreviewsPreviewid","summary":"Delete preview environment","description":"Delete a preview environment generated by a preview template.","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"pipelineId","type":"string","required":true,"description":"ID of the pipeline","example":"example-pipeline","in":"path","schema":{"name":"pipelineId","type":"string","required":true,"description":"ID of the pipeline","example":"example-pipeline","in":"path"}},{"name":"previewId","type":"string","required":true,"description":"ID of the preview environment","example":"different-ray","in":"path","schema":{"name":"previewId","type":"string","required":true,"description":"ID of the preview environment","example":"different-ray","in":"path"}},{"name":"skipTeardown","type":"boolean","description":"If `true`, the teardown spec will not be run when deleting the preview environment.","default":false,"in":"query","schema":{"name":"skipTeardown","type":"boolean","description":"If `true`, the teardown spec will not be run when deleting the preview environment.","default":false,"in":"query"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Pipelines","project"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"teardownArgumentOverrides":{"type":"object","properties":{},"description":"Argument overrides to pass to the teardown spec when deleting the preview environment."}},"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Account > Templates > General > Delete","x-nf-team-scoped":true,"x-nf-cli-command":["delete","pipeline-template-preview"]},"v1-projects--projectId--pipelines--pipelineId--preview-envs-runs-post":{"operationId":"postProjectsPipelinesPipelineidPreviewEnvsRuns","summary":"Run preview environment","description":"Run the given preview template.","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"pipelineId","type":"string","required":true,"description":"ID of the pipeline","example":"example-pipeline","in":"path","schema":{"name":"pipelineId","type":"string","required":true,"description":"ID of the pipeline","example":"example-pipeline","in":"path"}}],"responses":{"200":{"description":"Details about the preview template run.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"Name of the template.","example":"Example Template"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"Description of the template.","example":"This is a sample template."},"apiVersion":{"type":"string","enum":["v1.2"],"description":"The version of the Northflank API to run the template against.","example":"v1.2"},"arguments":{"type":"object","properties":{},"description":"A set of arguments that can be referenced in a template using '${args.argumentName}'."},"$schema":{"type":"string"},"spec":{"$ref":"#/components/schemas/V1TemplateNodeSchema"},"teardownSpec":{"type":"object","properties":{"spec":{"$ref":"#/components/schemas/V1TeardownNodeSchema"},"failurePolicy":{"type":"string","enum":["ignore","block"],"description":"Controls what happens if the teardown spec fails or times out. `ignore` (default) — proceed with resource deletion regardless. `block` — halt deletion and set the environment to `teardown_failed`","default":"ignore"}},"required":["spec"],"additionalProperties":false,"nullable":true,"description":"Optional spec to run when the template is deleted."},"id":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"Identifier for the template","example":"example-template"},"gitops":{"type":"object","properties":{"vcsService":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string","description":"Legacy key. Please used accountLogin instead."},"repoUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo to sync the file with.","example":"https://github.com/northflank-examples/remix-postgres-redis-demo"},"branch":{"type":"string","description":"The name of the branch to use.","example":"main"},"filePath":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]+$","description":"The file path in the repository. If using an existing file, it should be in JSON format.","examples":["/Dockerfile","northflank.json"]},"templateSha":{"type":"string","description":"The SHA of the current commit that is being used for the template.","example":"8c7e040ee3737ddc3a713363ae72bbe960e9fb16"}},"required":["vcsService","repoUrl","branch","filePath","templateSha"],"additionalProperties":false},"concurrencyPolicy":{"type":"string","enum":["allow","queue","forbid","latest","replace"],"description":"Defines the concurrency behaviour of the template with respect to parallel runs.","example":"allow"},"options":{"type":"object","properties":{"autorun":{"type":"boolean","description":"Whether autorun is enabled"}},"required":["autorun"],"additionalProperties":false},"createdAt":{"type":"string","format":"date-time","description":"time of creation"},"updatedAt":{"type":"string","format":"date-time","description":"time of update"}},"required":["name","apiVersion","spec","id","options"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Pipelines","project"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"},"arguments":{"type":"object","properties":{},"description":"A set of arguments that can be referenced in a template using '${args.argumentName}'."},"triggers":{"type":"object","properties":{},"additionalProperties":false}},"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Account > Templates > General > Create","x-nf-team-scoped":true,"x-nf-cli-command":["run","preview-template"]},"v1-projects--projectId--pipelines--pipelineId--preview-envs-runs-post-team-scoped":{"operationId":"postProjectsPipelinesPipelineidPreviewEnvsRuns","summary":"Run preview environment","description":"Run the given preview template.","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"pipelineId","type":"string","required":true,"description":"ID of the pipeline","example":"example-pipeline","in":"path","schema":{"name":"pipelineId","type":"string","required":true,"description":"ID of the pipeline","example":"example-pipeline","in":"path"}}],"responses":{"200":{"description":"Details about the preview template run.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"Name of the template.","example":"Example Template"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"Description of the template.","example":"This is a sample template."},"apiVersion":{"type":"string","enum":["v1.2"],"description":"The version of the Northflank API to run the template against.","example":"v1.2"},"arguments":{"type":"object","properties":{},"description":"A set of arguments that can be referenced in a template using '${args.argumentName}'."},"$schema":{"type":"string"},"spec":{"$ref":"#/components/schemas/V1TemplateNodeSchema"},"teardownSpec":{"type":"object","properties":{"spec":{"$ref":"#/components/schemas/V1TeardownNodeSchema"},"failurePolicy":{"type":"string","enum":["ignore","block"],"description":"Controls what happens if the teardown spec fails or times out. `ignore` (default) — proceed with resource deletion regardless. `block` — halt deletion and set the environment to `teardown_failed`","default":"ignore"}},"required":["spec"],"additionalProperties":false,"nullable":true,"description":"Optional spec to run when the template is deleted."},"id":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"Identifier for the template","example":"example-template"},"gitops":{"type":"object","properties":{"vcsService":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string","description":"Legacy key. Please used accountLogin instead."},"repoUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo to sync the file with.","example":"https://github.com/northflank-examples/remix-postgres-redis-demo"},"branch":{"type":"string","description":"The name of the branch to use.","example":"main"},"filePath":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]+$","description":"The file path in the repository. If using an existing file, it should be in JSON format.","examples":["/Dockerfile","northflank.json"]},"templateSha":{"type":"string","description":"The SHA of the current commit that is being used for the template.","example":"8c7e040ee3737ddc3a713363ae72bbe960e9fb16"}},"required":["vcsService","repoUrl","branch","filePath","templateSha"],"additionalProperties":false},"concurrencyPolicy":{"type":"string","enum":["allow","queue","forbid","latest","replace"],"description":"Defines the concurrency behaviour of the template with respect to parallel runs.","example":"allow"},"options":{"type":"object","properties":{"autorun":{"type":"boolean","description":"Whether autorun is enabled"}},"required":["autorun"],"additionalProperties":false},"createdAt":{"type":"string","format":"date-time","description":"time of creation"},"updatedAt":{"type":"string","format":"date-time","description":"time of update"}},"required":["name","apiVersion","spec","id","options"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Pipelines","project"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"},"arguments":{"type":"object","properties":{},"description":"A set of arguments that can be referenced in a template using '${args.argumentName}'."},"triggers":{"type":"object","properties":{},"additionalProperties":false}},"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Account > Templates > General > Create","x-nf-team-scoped":true,"x-nf-cli-command":["run","preview-template"]},"v1-projects--projectId--pipelines--pipelineId--preview-envs-runs-get":{"operationId":"getProjectsPipelinesPipelineidPreviewEnvsRuns","summary":"List preview template runs","description":"Get a list of preview template runs","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"pipelineId","type":"string","required":true,"description":"ID of the pipeline","example":"example-pipeline","in":"path","schema":{"name":"pipelineId","type":"string","required":true,"description":"ID of the pipeline","example":"example-pipeline","in":"path"}},{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query","schema":{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query"}},{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query","schema":{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query"}},{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query","schema":{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query"}},{"name":"status","type":"string","enum":["pending","running","success","failure","aborted","aborting","queued","unknown","skipped","waiting","retrying","async_wait","approval_wait"],"description":"Filter by template status.","example":"success","default":"pending","in":"query","schema":{"name":"status","type":"string","enum":["pending","running","success","failure","aborted","aborting","queued","unknown","skipped","waiting","retrying","async_wait","approval_wait"],"description":"Filter by template status.","example":"success","default":"pending","in":"query"}},{"name":"concluded","type":"boolean","description":"Filter by whether the template is concluded.","in":"query","schema":{"name":"concluded","type":"boolean","description":"Filter by whether the template is concluded.","in":"query"}}],"responses":{"200":{"description":"A list of preview template runs.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"previewTemplateRuns":{"type":"array","items":{"type":"object","properties":{"apiVersion":{"type":"string","enum":["v1.2"],"description":"The version of the Northflank API to run the template against.","example":"v1.2"},"options":{"type":"object","properties":{"concurrencyPolicy":{"type":"string","enum":["allow","queue","forbid","latest","replace"],"description":"Defines the concurrency behaviour of the template with respect to parallel runs.","example":"allow"},"nameFormat":{"type":"string","description":"The format of the automatically generated preview name. This is a parsed ref string."},"prefixName":{"type":"boolean","description":"If true, the preview name will default to the front of the resource name."},"useBranchContents":{"type":"boolean","description":"If true, and gitops is enabled, the preview will run based on the contents of the branch that triggered it, rather than the set branch."},"schedule":{"type":"object","properties":{"mon":{"type":"object","properties":{"startTime":{"type":"integer","minimum":0,"maximum":2400},"endTime":{"type":"integer","minimum":0,"maximum":2400}},"additionalProperties":false},"tue":{"type":"object","properties":{"startTime":{"type":"integer","minimum":0,"maximum":2400},"endTime":{"type":"integer","minimum":0,"maximum":2400}},"additionalProperties":false},"wed":{"type":"object","properties":{"startTime":{"type":"integer","minimum":0,"maximum":2400},"endTime":{"type":"integer","minimum":0,"maximum":2400}},"additionalProperties":false},"thu":{"type":"object","properties":{"startTime":{"type":"integer","minimum":0,"maximum":2400},"endTime":{"type":"integer","minimum":0,"maximum":2400}},"additionalProperties":false},"fri":{"type":"object","properties":{"startTime":{"type":"integer","minimum":0,"maximum":2400},"endTime":{"type":"integer","minimum":0,"maximum":2400}},"additionalProperties":false},"sat":{"type":"object","properties":{"startTime":{"type":"integer","minimum":0,"maximum":2400},"endTime":{"type":"integer","minimum":0,"maximum":2400}},"additionalProperties":false},"sun":{"type":"object","properties":{"startTime":{"type":"integer","minimum":0,"maximum":2400},"endTime":{"type":"integer","minimum":0,"maximum":2400}},"additionalProperties":false}},"additionalProperties":false,"description":"Options regarding which hours preview environments should be active. Only available for BYOC projects."},"expiry":{"type":"object","properties":{"previewLifetime":{"type":"integer","minimum":1,"description":"If set, preview environments will be automatically deleted after this many minutes since their last update."},"resetOnUpdate":{"type":"boolean","description":"If `true`, the expiry time for an existing preview will be reset when it is ran again."}},"additionalProperties":false,"description":"Settings regarding the automatic deletion of previews."}},"additionalProperties":false,"description":"Options regarding how the template is run."},"id":{"type":"string","description":"Identifier for the template run","example":"3dd592f6-ce63-45ee-acf8-13dc5ec5235c"},"templateId":{"type":"string","description":"Identifier for the template","example":"example-template"},"status":{"type":"string","enum":["pending","running","success","failure"],"description":"Status of the template run","example":"pending"},"createdAt":{"type":"string","format":"date-time","description":"time of creation"},"updatedAt":{"type":"string","format":"date-time","description":"time of update"}},"required":["apiVersion","id","templateId","status"],"additionalProperties":false},"description":"An array of template run objects."}},"required":["previewTemplateRuns"],"additionalProperties":false,"description":"Result data."},"pagination":{"type":"object","properties":{"hasNextPage":{"type":"boolean","description":"Is there another page of results available?","example":false},"cursor":{"type":"string","description":"The cursor to access the next page of results."},"count":{"type":"number","format":"float","description":"The number of results returned by this request.","example":1}},"required":["hasNextPage","count"],"additionalProperties":false,"description":"Data about the endpoint pagination."}},"required":["data","pagination"],"additionalProperties":false,"description":"Response object."}}},"tags":["Pipelines","project"],"security":[],"x-nf-permission-required":"Account > Templates > General > Read","x-nf-team-scoped":true,"x-nf-cli-command":["list","preview-template-runs"]},"v1-projects--projectId--pipelines--pipelineId--preview-envs-runs-get-team-scoped":{"operationId":"getProjectsPipelinesPipelineidPreviewEnvsRuns","summary":"List preview template runs","description":"Get a list of preview template runs","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"pipelineId","type":"string","required":true,"description":"ID of the pipeline","example":"example-pipeline","in":"path","schema":{"name":"pipelineId","type":"string","required":true,"description":"ID of the pipeline","example":"example-pipeline","in":"path"}},{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query","schema":{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query"}},{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query","schema":{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query"}},{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query","schema":{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query"}},{"name":"status","type":"string","enum":["pending","running","success","failure","aborted","aborting","queued","unknown","skipped","waiting","retrying","async_wait","approval_wait"],"description":"Filter by template status.","example":"success","default":"pending","in":"query","schema":{"name":"status","type":"string","enum":["pending","running","success","failure","aborted","aborting","queued","unknown","skipped","waiting","retrying","async_wait","approval_wait"],"description":"Filter by template status.","example":"success","default":"pending","in":"query"}},{"name":"concluded","type":"boolean","description":"Filter by whether the template is concluded.","in":"query","schema":{"name":"concluded","type":"boolean","description":"Filter by whether the template is concluded.","in":"query"}}],"responses":{"200":{"description":"A list of preview template runs.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"previewTemplateRuns":{"type":"array","items":{"type":"object","properties":{"apiVersion":{"type":"string","enum":["v1.2"],"description":"The version of the Northflank API to run the template against.","example":"v1.2"},"options":{"type":"object","properties":{"concurrencyPolicy":{"type":"string","enum":["allow","queue","forbid","latest","replace"],"description":"Defines the concurrency behaviour of the template with respect to parallel runs.","example":"allow"},"nameFormat":{"type":"string","description":"The format of the automatically generated preview name. This is a parsed ref string."},"prefixName":{"type":"boolean","description":"If true, the preview name will default to the front of the resource name."},"useBranchContents":{"type":"boolean","description":"If true, and gitops is enabled, the preview will run based on the contents of the branch that triggered it, rather than the set branch."},"schedule":{"type":"object","properties":{"mon":{"type":"object","properties":{"startTime":{"type":"integer","minimum":0,"maximum":2400},"endTime":{"type":"integer","minimum":0,"maximum":2400}},"additionalProperties":false},"tue":{"type":"object","properties":{"startTime":{"type":"integer","minimum":0,"maximum":2400},"endTime":{"type":"integer","minimum":0,"maximum":2400}},"additionalProperties":false},"wed":{"type":"object","properties":{"startTime":{"type":"integer","minimum":0,"maximum":2400},"endTime":{"type":"integer","minimum":0,"maximum":2400}},"additionalProperties":false},"thu":{"type":"object","properties":{"startTime":{"type":"integer","minimum":0,"maximum":2400},"endTime":{"type":"integer","minimum":0,"maximum":2400}},"additionalProperties":false},"fri":{"type":"object","properties":{"startTime":{"type":"integer","minimum":0,"maximum":2400},"endTime":{"type":"integer","minimum":0,"maximum":2400}},"additionalProperties":false},"sat":{"type":"object","properties":{"startTime":{"type":"integer","minimum":0,"maximum":2400},"endTime":{"type":"integer","minimum":0,"maximum":2400}},"additionalProperties":false},"sun":{"type":"object","properties":{"startTime":{"type":"integer","minimum":0,"maximum":2400},"endTime":{"type":"integer","minimum":0,"maximum":2400}},"additionalProperties":false}},"additionalProperties":false,"description":"Options regarding which hours preview environments should be active. Only available for BYOC projects."},"expiry":{"type":"object","properties":{"previewLifetime":{"type":"integer","minimum":1,"description":"If set, preview environments will be automatically deleted after this many minutes since their last update."},"resetOnUpdate":{"type":"boolean","description":"If `true`, the expiry time for an existing preview will be reset when it is ran again."}},"additionalProperties":false,"description":"Settings regarding the automatic deletion of previews."}},"additionalProperties":false,"description":"Options regarding how the template is run."},"id":{"type":"string","description":"Identifier for the template run","example":"3dd592f6-ce63-45ee-acf8-13dc5ec5235c"},"templateId":{"type":"string","description":"Identifier for the template","example":"example-template"},"status":{"type":"string","enum":["pending","running","success","failure"],"description":"Status of the template run","example":"pending"},"createdAt":{"type":"string","format":"date-time","description":"time of creation"},"updatedAt":{"type":"string","format":"date-time","description":"time of update"}},"required":["apiVersion","id","templateId","status"],"additionalProperties":false},"description":"An array of template run objects."}},"required":["previewTemplateRuns"],"additionalProperties":false,"description":"Result data."},"pagination":{"type":"object","properties":{"hasNextPage":{"type":"boolean","description":"Is there another page of results available?","example":false},"cursor":{"type":"string","description":"The cursor to access the next page of results."},"count":{"type":"number","format":"float","description":"The number of results returned by this request.","example":1}},"required":["hasNextPage","count"],"additionalProperties":false,"description":"Data about the endpoint pagination."}},"required":["data","pagination"],"additionalProperties":false,"description":"Response object."}}},"tags":["Pipelines","project"],"security":[],"x-nf-permission-required":"Account > Templates > General > Read","x-nf-team-scoped":true,"x-nf-cli-command":["list","preview-template-runs"]},"v1-projects--projectId--pipelines--pipelineId--preview-envs-runs--templateRunId--get":{"operationId":"getProjectsPipelinesPipelineidPreviewEnvsRunsTemplaterunid","summary":"Get preview template run","description":"Get information about the given preview template run.","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"pipelineId","type":"string","required":true,"description":"ID of the pipeline","example":"example-pipeline","in":"path","schema":{"name":"pipelineId","type":"string","required":true,"description":"ID of the pipeline","example":"example-pipeline","in":"path"}},{"name":"templateRunId","type":"string","required":true,"description":"ID of the template run","example":"16cf800b-ab28-421a-8ff9-a935b5ee89ad","in":"path","schema":{"name":"templateRunId","type":"string","required":true,"description":"ID of the template run","example":"16cf800b-ab28-421a-8ff9-a935b5ee89ad","in":"path"}}],"responses":{"200":{"description":"Details about the preview template run.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"apiVersion":{"type":"string","enum":["v1.2"],"description":"The version of the Northflank API to run the template against.","example":"v1.2"},"options":{"type":"object","properties":{"concurrencyPolicy":{"type":"string","enum":["allow","queue","forbid","latest","replace"],"description":"Defines the concurrency behaviour of the template with respect to parallel runs.","example":"allow"},"nameFormat":{"type":"string","description":"The format of the automatically generated preview name. This is a parsed ref string."},"prefixName":{"type":"boolean","description":"If true, the preview name will default to the front of the resource name."},"useBranchContents":{"type":"boolean","description":"If true, and gitops is enabled, the preview will run based on the contents of the branch that triggered it, rather than the set branch."},"schedule":{"type":"object","properties":{"mon":{"type":"object","properties":{"startTime":{"type":"integer","minimum":0,"maximum":2400},"endTime":{"type":"integer","minimum":0,"maximum":2400}},"additionalProperties":false},"tue":{"type":"object","properties":{"startTime":{"type":"integer","minimum":0,"maximum":2400},"endTime":{"type":"integer","minimum":0,"maximum":2400}},"additionalProperties":false},"wed":{"type":"object","properties":{"startTime":{"type":"integer","minimum":0,"maximum":2400},"endTime":{"type":"integer","minimum":0,"maximum":2400}},"additionalProperties":false},"thu":{"type":"object","properties":{"startTime":{"type":"integer","minimum":0,"maximum":2400},"endTime":{"type":"integer","minimum":0,"maximum":2400}},"additionalProperties":false},"fri":{"type":"object","properties":{"startTime":{"type":"integer","minimum":0,"maximum":2400},"endTime":{"type":"integer","minimum":0,"maximum":2400}},"additionalProperties":false},"sat":{"type":"object","properties":{"startTime":{"type":"integer","minimum":0,"maximum":2400},"endTime":{"type":"integer","minimum":0,"maximum":2400}},"additionalProperties":false},"sun":{"type":"object","properties":{"startTime":{"type":"integer","minimum":0,"maximum":2400},"endTime":{"type":"integer","minimum":0,"maximum":2400}},"additionalProperties":false}},"additionalProperties":false,"description":"Options regarding which hours preview environments should be active. Only available for BYOC projects."},"expiry":{"type":"object","properties":{"previewLifetime":{"type":"integer","minimum":1,"description":"If set, preview environments will be automatically deleted after this many minutes since their last update."},"resetOnUpdate":{"type":"boolean","description":"If `true`, the expiry time for an existing preview will be reset when it is ran again."}},"additionalProperties":false,"description":"Settings regarding the automatic deletion of previews."}},"additionalProperties":false,"description":"Options regarding how the template is run."},"arguments":{"type":"object","properties":{},"description":"A set of arguments that can be referenced in a template using '${args.argumentName}'."},"triggers":{"type":"array","items":{"type":"object","properties":{"ref":{"type":"string","description":"A reference that can be used to access the output of this trigger in the template."},"vcsService":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If vcsService is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string"},"repoUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo that will trigger the template.","example":"https://github.com/northflank-examples/remix-postgres-redis-demo"},"branchRestrictions":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z/*0-9%\\-.#_!'();,&=+]*$"},"default":[]},"prRestrictions":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z/*0-9%\\-.#_!'();,&=+]*$"},"default":[]},"pathIgnoreRules":{"type":"array","items":{"type":"string","maxLength":260,"description":"A path ignore rule, following `.gitignore` syntax. For example, `*.md` will ignore all files ending with `.md`.","example":"README.md"},"maxItems":200,"description":"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.","default":[]},"ciIgnoreFlags":{"type":"array","items":{"type":"string","maxLength":72,"description":"A commit ignore flag.","example":"[skip ci]"},"maxItems":200,"description":"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]\"]`","example":["[skip ci]","[ci skip]","[no ci]","[skip nf]","[nf skip]","[northflank skip]","[skip northflank]"],"default":[]},"ciIgnoreFlagsEnabled":{"type":"boolean","default":false},"isAllowList":{"type":"boolean","default":false},"ignoreDrafts":{"type":"boolean","description":"If `true`, draft pull requests from this repo will not trigger the template.","default":false},"type":{"type":"string","enum":["git"],"description":"Type of trigger"},"manualOnly":{"type":"boolean","description":"Should the git trigger only be triggered manually?","default":false}},"required":["vcsService","repoUrl"],"additionalProperties":false},"default":[]},"gitops":{"type":"object","properties":{"vcsService":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string","description":"Legacy key. Please used accountLogin instead."},"repoUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo to sync the file with.","example":"https://github.com/northflank-examples/remix-postgres-redis-demo"},"branch":{"type":"string","description":"The name of the branch to use.","example":"main"},"filePath":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]+$","description":"The file path in the repository. If using an existing file, it should be in JSON format.","examples":["/Dockerfile","northflank.json"]}},"required":["vcsService","repoUrl","branch","filePath"],"additionalProperties":false},"$schema":{"type":"string"},"spec":{"$ref":"#/components/schemas/V1PreviewEnvTemplateNodeRunSchema"},"refs":{"type":"object","properties":{},"additionalProperties":false},"id":{"type":"string","description":"Identifier for the template run","example":"3dd592f6-ce63-45ee-acf8-13dc5ec5235c"},"templateId":{"type":"string","description":"Identifier for the template","example":"example-template"},"status":{"type":"string","enum":["pending","running","success","failure"],"description":"Status of the template run","example":"pending"},"createdAt":{"type":"string","format":"date-time","description":"time of creation"},"updatedAt":{"type":"string","format":"date-time","description":"time of update"}},"required":["apiVersion","spec","id","templateId","status"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Pipelines","project"],"security":[],"x-nf-permission-required":"Account > Templates > General > Read","x-nf-team-scoped":true,"x-nf-cli-command":["get","preview-template-run"]},"v1-projects--projectId--pipelines--pipelineId--preview-envs-runs--templateRunId--get-team-scoped":{"operationId":"getProjectsPipelinesPipelineidPreviewEnvsRunsTemplaterunid","summary":"Get preview template run","description":"Get information about the given preview template run.","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"pipelineId","type":"string","required":true,"description":"ID of the pipeline","example":"example-pipeline","in":"path","schema":{"name":"pipelineId","type":"string","required":true,"description":"ID of the pipeline","example":"example-pipeline","in":"path"}},{"name":"templateRunId","type":"string","required":true,"description":"ID of the template run","example":"16cf800b-ab28-421a-8ff9-a935b5ee89ad","in":"path","schema":{"name":"templateRunId","type":"string","required":true,"description":"ID of the template run","example":"16cf800b-ab28-421a-8ff9-a935b5ee89ad","in":"path"}}],"responses":{"200":{"description":"Details about the preview template run.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"apiVersion":{"type":"string","enum":["v1.2"],"description":"The version of the Northflank API to run the template against.","example":"v1.2"},"options":{"type":"object","properties":{"concurrencyPolicy":{"type":"string","enum":["allow","queue","forbid","latest","replace"],"description":"Defines the concurrency behaviour of the template with respect to parallel runs.","example":"allow"},"nameFormat":{"type":"string","description":"The format of the automatically generated preview name. This is a parsed ref string."},"prefixName":{"type":"boolean","description":"If true, the preview name will default to the front of the resource name."},"useBranchContents":{"type":"boolean","description":"If true, and gitops is enabled, the preview will run based on the contents of the branch that triggered it, rather than the set branch."},"schedule":{"type":"object","properties":{"mon":{"type":"object","properties":{"startTime":{"type":"integer","minimum":0,"maximum":2400},"endTime":{"type":"integer","minimum":0,"maximum":2400}},"additionalProperties":false},"tue":{"type":"object","properties":{"startTime":{"type":"integer","minimum":0,"maximum":2400},"endTime":{"type":"integer","minimum":0,"maximum":2400}},"additionalProperties":false},"wed":{"type":"object","properties":{"startTime":{"type":"integer","minimum":0,"maximum":2400},"endTime":{"type":"integer","minimum":0,"maximum":2400}},"additionalProperties":false},"thu":{"type":"object","properties":{"startTime":{"type":"integer","minimum":0,"maximum":2400},"endTime":{"type":"integer","minimum":0,"maximum":2400}},"additionalProperties":false},"fri":{"type":"object","properties":{"startTime":{"type":"integer","minimum":0,"maximum":2400},"endTime":{"type":"integer","minimum":0,"maximum":2400}},"additionalProperties":false},"sat":{"type":"object","properties":{"startTime":{"type":"integer","minimum":0,"maximum":2400},"endTime":{"type":"integer","minimum":0,"maximum":2400}},"additionalProperties":false},"sun":{"type":"object","properties":{"startTime":{"type":"integer","minimum":0,"maximum":2400},"endTime":{"type":"integer","minimum":0,"maximum":2400}},"additionalProperties":false}},"additionalProperties":false,"description":"Options regarding which hours preview environments should be active. Only available for BYOC projects."},"expiry":{"type":"object","properties":{"previewLifetime":{"type":"integer","minimum":1,"description":"If set, preview environments will be automatically deleted after this many minutes since their last update."},"resetOnUpdate":{"type":"boolean","description":"If `true`, the expiry time for an existing preview will be reset when it is ran again."}},"additionalProperties":false,"description":"Settings regarding the automatic deletion of previews."}},"additionalProperties":false,"description":"Options regarding how the template is run."},"arguments":{"type":"object","properties":{},"description":"A set of arguments that can be referenced in a template using '${args.argumentName}'."},"triggers":{"type":"array","items":{"type":"object","properties":{"ref":{"type":"string","description":"A reference that can be used to access the output of this trigger in the template."},"vcsService":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If vcsService is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string"},"repoUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo that will trigger the template.","example":"https://github.com/northflank-examples/remix-postgres-redis-demo"},"branchRestrictions":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z/*0-9%\\-.#_!'();,&=+]*$"},"default":[]},"prRestrictions":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z/*0-9%\\-.#_!'();,&=+]*$"},"default":[]},"pathIgnoreRules":{"type":"array","items":{"type":"string","maxLength":260,"description":"A path ignore rule, following `.gitignore` syntax. For example, `*.md` will ignore all files ending with `.md`.","example":"README.md"},"maxItems":200,"description":"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.","default":[]},"ciIgnoreFlags":{"type":"array","items":{"type":"string","maxLength":72,"description":"A commit ignore flag.","example":"[skip ci]"},"maxItems":200,"description":"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]\"]`","example":["[skip ci]","[ci skip]","[no ci]","[skip nf]","[nf skip]","[northflank skip]","[skip northflank]"],"default":[]},"ciIgnoreFlagsEnabled":{"type":"boolean","default":false},"isAllowList":{"type":"boolean","default":false},"ignoreDrafts":{"type":"boolean","description":"If `true`, draft pull requests from this repo will not trigger the template.","default":false},"type":{"type":"string","enum":["git"],"description":"Type of trigger"},"manualOnly":{"type":"boolean","description":"Should the git trigger only be triggered manually?","default":false}},"required":["vcsService","repoUrl"],"additionalProperties":false},"default":[]},"gitops":{"type":"object","properties":{"vcsService":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string","description":"Legacy key. Please used accountLogin instead."},"repoUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo to sync the file with.","example":"https://github.com/northflank-examples/remix-postgres-redis-demo"},"branch":{"type":"string","description":"The name of the branch to use.","example":"main"},"filePath":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]+$","description":"The file path in the repository. If using an existing file, it should be in JSON format.","examples":["/Dockerfile","northflank.json"]}},"required":["vcsService","repoUrl","branch","filePath"],"additionalProperties":false},"$schema":{"type":"string"},"spec":{"$ref":"#/components/schemas/V1PreviewEnvTemplateNodeRunSchema"},"refs":{"type":"object","properties":{},"additionalProperties":false},"id":{"type":"string","description":"Identifier for the template run","example":"3dd592f6-ce63-45ee-acf8-13dc5ec5235c"},"templateId":{"type":"string","description":"Identifier for the template","example":"example-template"},"status":{"type":"string","enum":["pending","running","success","failure"],"description":"Status of the template run","example":"pending"},"createdAt":{"type":"string","format":"date-time","description":"time of creation"},"updatedAt":{"type":"string","format":"date-time","description":"time of update"}},"required":["apiVersion","spec","id","templateId","status"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Pipelines","project"],"security":[],"x-nf-permission-required":"Account > Templates > General > Read","x-nf-team-scoped":true,"x-nf-cli-command":["get","preview-template-run"]},"v1-projects--projectId--pipelines--pipelineId--release-flows--stage--get":{"operationId":"getProjectsPipelinesPipelineidReleaseFlowsStage","summary":"Get release flow","description":"Gets details about a release flow","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"pipelineId","type":"string","required":true,"description":"ID of the pipeline","example":"example-pipeline","in":"path","schema":{"name":"pipelineId","type":"string","required":true,"description":"ID of the pipeline","example":"example-pipeline","in":"path"}},{"name":"stage","type":"string","required":true,"description":"Stage of the pipeline","example":"development","in":"path","schema":{"name":"stage","type":"string","required":true,"description":"Stage of the pipeline","example":"development","in":"path"}}],"responses":{"200":{"description":"Details about a release flow.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"apiVersion":{"type":"string","enum":["v1.2"],"description":"The version of the Northflank API to run the template against.","example":"v1.2"},"arguments":{"type":"object","properties":{},"description":"A set of arguments that can be referenced in a template using '${args.argumentName}'."},"triggers":{"type":"array","items":{"type":"object","properties":{"ref":{"type":"string","description":"A reference that can be used to access the output of this trigger in the template."},"vcsService":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If vcsService is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string"},"repoUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo that will trigger the template.","example":"https://github.com/northflank-examples/remix-postgres-redis-demo"},"branchRestrictions":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z/*0-9%\\-.#_!'();,&=+]*$"},"default":[]},"prRestrictions":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z/*0-9%\\-.#_!'();,&=+]*$"},"default":[]},"pathIgnoreRules":{"type":"array","items":{"type":"string","maxLength":260,"description":"A path ignore rule, following `.gitignore` syntax. For example, `*.md` will ignore all files ending with `.md`.","example":"README.md"},"maxItems":200,"description":"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.","default":[]},"ciIgnoreFlags":{"type":"array","items":{"type":"string","maxLength":72,"description":"A commit ignore flag.","example":"[skip ci]"},"maxItems":200,"description":"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]\"]`","example":["[skip ci]","[ci skip]","[no ci]","[skip nf]","[nf skip]","[northflank skip]","[skip northflank]"],"default":[]},"ciIgnoreFlagsEnabled":{"type":"boolean","default":false},"isAllowList":{"type":"boolean","default":false},"ignoreDrafts":{"type":"boolean","description":"If `true`, draft pull requests from this repo will not trigger the template.","default":false}},"required":["vcsService","repoUrl"],"additionalProperties":false},"default":[]},"options":{"type":"object","properties":{"concurrencyPolicy":{"type":"string","enum":["allow","queue","forbid","latest","replace"],"description":"Defines the concurrency behaviour of the template with respect to parallel runs.","example":"allow"},"paused":{"type":"boolean","description":"If `true`, the template will not run when triggered by git.","example":false}},"additionalProperties":false,"description":"Options regarding how the template is run."},"gitops":{"type":"object","properties":{"vcsService":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string","description":"Legacy key. Please used accountLogin instead."},"repoUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo to sync the file with.","example":"https://github.com/northflank-examples/remix-postgres-redis-demo"},"branch":{"type":"string","description":"The name of the branch to use.","example":"main"},"filePath":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]+$","description":"The file path in the repository. If using an existing file, it should be in JSON format.","examples":["/Dockerfile","northflank.json"]}},"required":["vcsService","repoUrl","branch","filePath"],"additionalProperties":false},"$schema":{"type":"string"},"richInputs":{"type":"array","items":{"$ref":"#/components/schemas/V1ReleaseFlowRichInputSchema"},"description":"An array of rich UI override inputs for the Release Flow template."},"spec":{"$ref":"#/components/schemas/V1ReleaseFlowTemplateNodeSchema"},"teardownSpec":{"type":"object","properties":{"spec":{"$ref":"#/components/schemas/V1TeardownNodeSchema"},"failurePolicy":{"type":"string","enum":["ignore","block"],"description":"Controls what happens if the teardown spec fails or times out. `ignore` (default) — proceed with resource deletion regardless. `block` — halt deletion and set the environment to `teardown_failed`","default":"ignore"}},"required":["spec"],"additionalProperties":false,"nullable":true,"description":"Optional spec to run when the template is deleted."},"concurrencyPolicy":{"type":"string","enum":["allow","queue","forbid","latest","replace"],"description":"Defines the concurrency behaviour of the template with respect to parallel runs.","example":"allow"},"stage":{"type":"string","description":"The stage of the pipeline this release flow belongs to.","example":"Development"},"status":{"type":"string","enum":["pending","running","success","failure","aborted","aborting","queued","unknown","skipped","waiting","retrying","async_wait","approval_wait"],"description":"Status of the template run","example":"success","default":"pending"},"paused":{"type":"boolean","description":"Whether triggers are paused for this release flow. If `true`, Git triggers and webhook triggers will not run the release flow.","example":false},"createdAt":{"type":"string","format":"date-time","description":"Timestamp the template was created at.","example":"2021-01-01 12:00:00.000Z"},"updatedAt":{"type":"string","format":"date-time","description":"Timestamp the template was last updated at.","example":"2021-01-01 12:00:00.000Z"}},"required":["apiVersion","spec","status","paused","createdAt","updatedAt"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Pipelines","project"],"security":[],"x-nf-permission-required":"Project > Pipelines > General > Read","x-nf-team-scoped":true,"x-nf-cli-command":["get","release-flow"]},"v1-projects--projectId--pipelines--pipelineId--release-flows--stage--get-team-scoped":{"operationId":"getProjectsPipelinesPipelineidReleaseFlowsStage","summary":"Get release flow","description":"Gets details about a release flow","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"pipelineId","type":"string","required":true,"description":"ID of the pipeline","example":"example-pipeline","in":"path","schema":{"name":"pipelineId","type":"string","required":true,"description":"ID of the pipeline","example":"example-pipeline","in":"path"}},{"name":"stage","type":"string","required":true,"description":"Stage of the pipeline","example":"development","in":"path","schema":{"name":"stage","type":"string","required":true,"description":"Stage of the pipeline","example":"development","in":"path"}}],"responses":{"200":{"description":"Details about a release flow.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"apiVersion":{"type":"string","enum":["v1.2"],"description":"The version of the Northflank API to run the template against.","example":"v1.2"},"arguments":{"type":"object","properties":{},"description":"A set of arguments that can be referenced in a template using '${args.argumentName}'."},"triggers":{"type":"array","items":{"type":"object","properties":{"ref":{"type":"string","description":"A reference that can be used to access the output of this trigger in the template."},"vcsService":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If vcsService is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string"},"repoUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo that will trigger the template.","example":"https://github.com/northflank-examples/remix-postgres-redis-demo"},"branchRestrictions":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z/*0-9%\\-.#_!'();,&=+]*$"},"default":[]},"prRestrictions":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z/*0-9%\\-.#_!'();,&=+]*$"},"default":[]},"pathIgnoreRules":{"type":"array","items":{"type":"string","maxLength":260,"description":"A path ignore rule, following `.gitignore` syntax. For example, `*.md` will ignore all files ending with `.md`.","example":"README.md"},"maxItems":200,"description":"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.","default":[]},"ciIgnoreFlags":{"type":"array","items":{"type":"string","maxLength":72,"description":"A commit ignore flag.","example":"[skip ci]"},"maxItems":200,"description":"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]\"]`","example":["[skip ci]","[ci skip]","[no ci]","[skip nf]","[nf skip]","[northflank skip]","[skip northflank]"],"default":[]},"ciIgnoreFlagsEnabled":{"type":"boolean","default":false},"isAllowList":{"type":"boolean","default":false},"ignoreDrafts":{"type":"boolean","description":"If `true`, draft pull requests from this repo will not trigger the template.","default":false}},"required":["vcsService","repoUrl"],"additionalProperties":false},"default":[]},"options":{"type":"object","properties":{"concurrencyPolicy":{"type":"string","enum":["allow","queue","forbid","latest","replace"],"description":"Defines the concurrency behaviour of the template with respect to parallel runs.","example":"allow"},"paused":{"type":"boolean","description":"If `true`, the template will not run when triggered by git.","example":false}},"additionalProperties":false,"description":"Options regarding how the template is run."},"gitops":{"type":"object","properties":{"vcsService":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string","description":"Legacy key. Please used accountLogin instead."},"repoUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo to sync the file with.","example":"https://github.com/northflank-examples/remix-postgres-redis-demo"},"branch":{"type":"string","description":"The name of the branch to use.","example":"main"},"filePath":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]+$","description":"The file path in the repository. If using an existing file, it should be in JSON format.","examples":["/Dockerfile","northflank.json"]}},"required":["vcsService","repoUrl","branch","filePath"],"additionalProperties":false},"$schema":{"type":"string"},"richInputs":{"type":"array","items":{"$ref":"#/components/schemas/V1ReleaseFlowRichInputSchema"},"description":"An array of rich UI override inputs for the Release Flow template."},"spec":{"$ref":"#/components/schemas/V1ReleaseFlowTemplateNodeSchema"},"teardownSpec":{"type":"object","properties":{"spec":{"$ref":"#/components/schemas/V1TeardownNodeSchema"},"failurePolicy":{"type":"string","enum":["ignore","block"],"description":"Controls what happens if the teardown spec fails or times out. `ignore` (default) — proceed with resource deletion regardless. `block` — halt deletion and set the environment to `teardown_failed`","default":"ignore"}},"required":["spec"],"additionalProperties":false,"nullable":true,"description":"Optional spec to run when the template is deleted."},"concurrencyPolicy":{"type":"string","enum":["allow","queue","forbid","latest","replace"],"description":"Defines the concurrency behaviour of the template with respect to parallel runs.","example":"allow"},"stage":{"type":"string","description":"The stage of the pipeline this release flow belongs to.","example":"Development"},"status":{"type":"string","enum":["pending","running","success","failure","aborted","aborting","queued","unknown","skipped","waiting","retrying","async_wait","approval_wait"],"description":"Status of the template run","example":"success","default":"pending"},"paused":{"type":"boolean","description":"Whether triggers are paused for this release flow. If `true`, Git triggers and webhook triggers will not run the release flow.","example":false},"createdAt":{"type":"string","format":"date-time","description":"Timestamp the template was created at.","example":"2021-01-01 12:00:00.000Z"},"updatedAt":{"type":"string","format":"date-time","description":"Timestamp the template was last updated at.","example":"2021-01-01 12:00:00.000Z"}},"required":["apiVersion","spec","status","paused","createdAt","updatedAt"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Pipelines","project"],"security":[],"x-nf-permission-required":"Project > Pipelines > General > Read","x-nf-team-scoped":true,"x-nf-cli-command":["get","release-flow"]},"v1-projects--projectId--pipelines--pipelineId--release-flows--stage--post":{"operationId":"postProjectsPipelinesPipelineidReleaseFlowsStage","summary":"Update release flow","description":"Updates a release flow","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"pipelineId","type":"string","required":true,"description":"ID of the pipeline","example":"example-pipeline","in":"path","schema":{"name":"pipelineId","type":"string","required":true,"description":"ID of the pipeline","example":"example-pipeline","in":"path"}},{"name":"stage","type":"string","required":true,"description":"Stage of the pipeline","example":"development","in":"path","schema":{"name":"stage","type":"string","required":true,"description":"Stage of the pipeline","example":"development","in":"path"}}],"responses":{"200":{"description":"success"}},"tags":["Pipelines","project"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"arguments":{"type":"object","properties":{},"description":"A set of arguments that can be referenced in a template using '${args.argumentName}'."},"triggers":{"type":"array","items":{"type":"object","properties":{"ref":{"type":"string","description":"A reference that can be used to access the output of this trigger in the template."},"vcsService":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If vcsService is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string"},"repoUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo that will trigger the template.","example":"https://github.com/northflank-examples/remix-postgres-redis-demo"},"branchRestrictions":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z/*0-9%\\-.#_!'();,&=+]*$"},"default":[]},"prRestrictions":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z/*0-9%\\-.#_!'();,&=+]*$"},"default":[]},"pathIgnoreRules":{"type":"array","items":{"type":"string","maxLength":260,"description":"A path ignore rule, following `.gitignore` syntax. For example, `*.md` will ignore all files ending with `.md`.","example":"README.md"},"maxItems":200,"description":"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.","default":[]},"ciIgnoreFlags":{"type":"array","items":{"type":"string","maxLength":72,"description":"A commit ignore flag.","example":"[skip ci]"},"maxItems":200,"description":"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]\"]`","example":["[skip ci]","[ci skip]","[no ci]","[skip nf]","[nf skip]","[northflank skip]","[skip northflank]"],"default":[]},"ciIgnoreFlagsEnabled":{"type":"boolean","default":false},"isAllowList":{"type":"boolean","default":false},"ignoreDrafts":{"type":"boolean","description":"If `true`, draft pull requests from this repo will not trigger the template.","default":false}},"required":["vcsService","repoUrl"],"additionalProperties":false},"default":[]},"options":{"type":"object","properties":{"concurrencyPolicy":{"type":"string","enum":["allow","queue","forbid","latest","replace"],"description":"Defines the concurrency behaviour of the template with respect to parallel runs.","example":"allow"},"paused":{"type":"boolean","description":"If `true`, the template will not run when triggered by git.","example":false}},"additionalProperties":false,"description":"Options regarding how the template is run."},"gitops":{"type":"object","properties":{"vcsService":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string","description":"Legacy key. Please used accountLogin instead."},"repoUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo to sync the file with.","example":"https://github.com/northflank-examples/remix-postgres-redis-demo"},"branch":{"type":"string","description":"The name of the branch to use.","example":"main"},"filePath":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]+$","description":"The file path in the repository. If using an existing file, it should be in JSON format.","examples":["/Dockerfile","northflank.json"]}},"required":["vcsService","repoUrl","branch","filePath"],"additionalProperties":false},"$schema":{"type":"string"},"richInputs":{"type":"array","items":{"$ref":"#/components/schemas/V1ReleaseFlowRichInputSchema"},"description":"An array of rich UI override inputs for the Release Flow template."},"teardownSpec":{"type":"object","properties":{"spec":{"$ref":"#/components/schemas/V1TeardownNodeSchema"},"failurePolicy":{"type":"string","enum":["ignore","block"],"description":"Controls what happens if the teardown spec fails or times out. `ignore` (default) — proceed with resource deletion regardless. `block` — halt deletion and set the environment to `teardown_failed`","default":"ignore"}},"required":["spec"],"additionalProperties":false,"nullable":true,"description":"Optional spec to run when the template is deleted."},"apiVersion":{"type":"string"},"project":{"type":"object","properties":{}},"spec":{"type":"object","properties":{}}},"required":["apiVersion","spec"],"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Project > Pipelines > General > Update","x-nf-team-scoped":true,"x-nf-cli-command":["update","release-flow"]},"v1-projects--projectId--pipelines--pipelineId--release-flows--stage--post-team-scoped":{"operationId":"postProjectsPipelinesPipelineidReleaseFlowsStage","summary":"Update release flow","description":"Updates a release flow","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"pipelineId","type":"string","required":true,"description":"ID of the pipeline","example":"example-pipeline","in":"path","schema":{"name":"pipelineId","type":"string","required":true,"description":"ID of the pipeline","example":"example-pipeline","in":"path"}},{"name":"stage","type":"string","required":true,"description":"Stage of the pipeline","example":"development","in":"path","schema":{"name":"stage","type":"string","required":true,"description":"Stage of the pipeline","example":"development","in":"path"}}],"responses":{"200":{"description":"success"}},"tags":["Pipelines","project"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"arguments":{"type":"object","properties":{},"description":"A set of arguments that can be referenced in a template using '${args.argumentName}'."},"triggers":{"type":"array","items":{"type":"object","properties":{"ref":{"type":"string","description":"A reference that can be used to access the output of this trigger in the template."},"vcsService":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If vcsService is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string"},"repoUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo that will trigger the template.","example":"https://github.com/northflank-examples/remix-postgres-redis-demo"},"branchRestrictions":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z/*0-9%\\-.#_!'();,&=+]*$"},"default":[]},"prRestrictions":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z/*0-9%\\-.#_!'();,&=+]*$"},"default":[]},"pathIgnoreRules":{"type":"array","items":{"type":"string","maxLength":260,"description":"A path ignore rule, following `.gitignore` syntax. For example, `*.md` will ignore all files ending with `.md`.","example":"README.md"},"maxItems":200,"description":"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.","default":[]},"ciIgnoreFlags":{"type":"array","items":{"type":"string","maxLength":72,"description":"A commit ignore flag.","example":"[skip ci]"},"maxItems":200,"description":"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]\"]`","example":["[skip ci]","[ci skip]","[no ci]","[skip nf]","[nf skip]","[northflank skip]","[skip northflank]"],"default":[]},"ciIgnoreFlagsEnabled":{"type":"boolean","default":false},"isAllowList":{"type":"boolean","default":false},"ignoreDrafts":{"type":"boolean","description":"If `true`, draft pull requests from this repo will not trigger the template.","default":false}},"required":["vcsService","repoUrl"],"additionalProperties":false},"default":[]},"options":{"type":"object","properties":{"concurrencyPolicy":{"type":"string","enum":["allow","queue","forbid","latest","replace"],"description":"Defines the concurrency behaviour of the template with respect to parallel runs.","example":"allow"},"paused":{"type":"boolean","description":"If `true`, the template will not run when triggered by git.","example":false}},"additionalProperties":false,"description":"Options regarding how the template is run."},"gitops":{"type":"object","properties":{"vcsService":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string","description":"Legacy key. Please used accountLogin instead."},"repoUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo to sync the file with.","example":"https://github.com/northflank-examples/remix-postgres-redis-demo"},"branch":{"type":"string","description":"The name of the branch to use.","example":"main"},"filePath":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]+$","description":"The file path in the repository. If using an existing file, it should be in JSON format.","examples":["/Dockerfile","northflank.json"]}},"required":["vcsService","repoUrl","branch","filePath"],"additionalProperties":false},"$schema":{"type":"string"},"richInputs":{"type":"array","items":{"$ref":"#/components/schemas/V1ReleaseFlowRichInputSchema"},"description":"An array of rich UI override inputs for the Release Flow template."},"teardownSpec":{"type":"object","properties":{"spec":{"$ref":"#/components/schemas/V1TeardownNodeSchema"},"failurePolicy":{"type":"string","enum":["ignore","block"],"description":"Controls what happens if the teardown spec fails or times out. `ignore` (default) — proceed with resource deletion regardless. `block` — halt deletion and set the environment to `teardown_failed`","default":"ignore"}},"required":["spec"],"additionalProperties":false,"nullable":true,"description":"Optional spec to run when the template is deleted."},"apiVersion":{"type":"string"},"project":{"type":"object","properties":{}},"spec":{"type":"object","properties":{}}},"required":["apiVersion","spec"],"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Project > Pipelines > General > Update","x-nf-team-scoped":true,"x-nf-cli-command":["update","release-flow"]},"v1-projects--projectId--pipelines--pipelineId--release-flows--stage--runs-post":{"operationId":"postProjectsPipelinesPipelineidReleaseFlowsStageRuns","summary":"Run release flow","description":"Runs a given release flow with given arguments. This endpoint can be used as part of a CI pipeline to automatically trigger a release process.","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"pipelineId","type":"string","required":true,"description":"ID of the pipeline","example":"example-pipeline","in":"path","schema":{"name":"pipelineId","type":"string","required":true,"description":"ID of the pipeline","example":"example-pipeline","in":"path"}},{"name":"stage","type":"string","required":true,"description":"Stage of the pipeline","example":"development","in":"path","schema":{"name":"stage","type":"string","required":true,"description":"Stage of the pipeline","example":"development","in":"path"}}],"responses":{"200":{"description":"success"}},"tags":["Pipelines","project"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The optional name of the release-flow run.","example":"Example Run"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"The optional description of the release-flow run.","example":"This is a description for the release-flow run."},"arguments":{"type":"object","properties":{},"description":"A set of arguments that can be referenced in a template using '${args.argumentName}'.","example":{"ARG_1":"value"}},"overrides":{"type":"object","properties":{},"additionalProperties":false,"description":"Overrides for specific reference values. This should be an object where each key corresponds to a ref defined in the template. The values of each of these keys should also be an object, where each key value pair provided will overwrite the value for that key in the given ref. For example, the value `{ 'example-ref': { 'branch': 'devel' } }` would set the `branch` field to `devel` for the node with ref `example-ref`.","example":{"example-ref":{"branch":"devel"}}},"releaseNodeOverrides":{"type":"object","properties":{},"additionalProperties":false,"description":"Overrides for release nodes. This should be an object where each key is the id of a deployment service used in a release node. The value of each of these keys should be also be an object containing the new spec of the release for that deployment service.","example":{"example-service":{"type":"registry","origin":{"imagePath":"nginx:latest"}}}}},"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Project > Pipelines > General > Update","x-nf-team-scoped":true,"x-nf-cli-command":["run","release-flow"]},"v1-projects--projectId--pipelines--pipelineId--release-flows--stage--runs-post-team-scoped":{"operationId":"postProjectsPipelinesPipelineidReleaseFlowsStageRuns","summary":"Run release flow","description":"Runs a given release flow with given arguments. This endpoint can be used as part of a CI pipeline to automatically trigger a release process.","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"pipelineId","type":"string","required":true,"description":"ID of the pipeline","example":"example-pipeline","in":"path","schema":{"name":"pipelineId","type":"string","required":true,"description":"ID of the pipeline","example":"example-pipeline","in":"path"}},{"name":"stage","type":"string","required":true,"description":"Stage of the pipeline","example":"development","in":"path","schema":{"name":"stage","type":"string","required":true,"description":"Stage of the pipeline","example":"development","in":"path"}}],"responses":{"200":{"description":"success"}},"tags":["Pipelines","project"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The optional name of the release-flow run.","example":"Example Run"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"The optional description of the release-flow run.","example":"This is a description for the release-flow run."},"arguments":{"type":"object","properties":{},"description":"A set of arguments that can be referenced in a template using '${args.argumentName}'.","example":{"ARG_1":"value"}},"overrides":{"type":"object","properties":{},"additionalProperties":false,"description":"Overrides for specific reference values. This should be an object where each key corresponds to a ref defined in the template. The values of each of these keys should also be an object, where each key value pair provided will overwrite the value for that key in the given ref. For example, the value `{ 'example-ref': { 'branch': 'devel' } }` would set the `branch` field to `devel` for the node with ref `example-ref`.","example":{"example-ref":{"branch":"devel"}}},"releaseNodeOverrides":{"type":"object","properties":{},"additionalProperties":false,"description":"Overrides for release nodes. This should be an object where each key is the id of a deployment service used in a release node. The value of each of these keys should be also be an object containing the new spec of the release for that deployment service.","example":{"example-service":{"type":"registry","origin":{"imagePath":"nginx:latest"}}}}},"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Project > Pipelines > General > Update","x-nf-team-scoped":true,"x-nf-cli-command":["run","release-flow"]},"v1-projects--projectId--pipelines--pipelineId--release-flows--stage--runs-get":{"operationId":"getProjectsPipelinesPipelineidReleaseFlowsStageRuns","summary":"List release flow runs","description":"Lists runs of a release flow","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"pipelineId","type":"string","required":true,"description":"ID of the pipeline","example":"example-pipeline","in":"path","schema":{"name":"pipelineId","type":"string","required":true,"description":"ID of the pipeline","example":"example-pipeline","in":"path"}},{"name":"stage","type":"string","required":true,"description":"Stage of the pipeline","example":"development","in":"path","schema":{"name":"stage","type":"string","required":true,"description":"Stage of the pipeline","example":"development","in":"path"}},{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query","schema":{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query"}},{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query","schema":{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query"}},{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query","schema":{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query"}},{"name":"status","type":"string","enum":["pending","running","success","failure","aborted","aborting","queued","unknown","skipped","waiting","retrying","async_wait","approval_wait"],"description":"Filter by template status.","example":"success","default":"pending","in":"query","schema":{"name":"status","type":"string","enum":["pending","running","success","failure","aborted","aborting","queued","unknown","skipped","waiting","retrying","async_wait","approval_wait"],"description":"Filter by template status.","example":"success","default":"pending","in":"query"}},{"name":"concluded","type":"boolean","description":"Filter by whether the template is concluded.","in":"query","schema":{"name":"concluded","type":"boolean","description":"Filter by whether the template is concluded.","in":"query"}}],"responses":{"200":{"description":"A list of runs for this release flow.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"runs":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"ID of the release flow run","example":"110ddb52-bdcd-482d-8ac2-05ba580afe2f"},"name":{"type":"string","description":"Optional name for the release flow run","example":"Example run"},"description":{"type":"string","description":"Optional description for the release flow run","example":"This is an example description"},"status":{"type":"string","enum":["pending","running","success","failure","aborted","aborting","queued","unknown","skipped","waiting","retrying","async_wait","approval_wait"],"description":"Status of the template run","example":"success","default":"pending"},"startedAt":{"type":"string","format":"date-time","description":"Timestamp the run started at.","example":"2021-01-01 12:01:00.000Z"},"concluded":{"type":"boolean","description":"Whether the run has concluded (aborted, success, failed)","example":true,"default":false},"concludedAt":{"type":"string","format":"date-time","description":"Timestamp the run concluded at.","example":"2021-01-01 12:10:00.000Z"},"createdAt":{"type":"string","format":"date-time","description":"Timestamp the run was created at.","example":"2021-01-01 12:00:00.000Z"},"updatedAt":{"type":"string","format":"date-time","description":"Timestamp the run was last updated at.","example":"2021-01-01 12:00:00.000Z"}},"required":["id","status","concluded","createdAt","updatedAt"],"additionalProperties":false},"description":"A release flow run"}},"additionalProperties":false,"description":"Result data."},"pagination":{"type":"object","properties":{"hasNextPage":{"type":"boolean","description":"Is there another page of results available?","example":false},"cursor":{"type":"string","description":"The cursor to access the next page of results."},"count":{"type":"number","format":"float","description":"The number of results returned by this request.","example":1}},"required":["hasNextPage","count"],"additionalProperties":false,"description":"Data about the endpoint pagination."}},"required":["data","pagination"],"additionalProperties":false,"description":"Response object."}}},"tags":["Pipelines","project"],"security":[],"x-nf-permission-required":"Project > Pipelines > General > Read","x-nf-team-scoped":true,"x-nf-cli-command":["list","release-flow-runs"]},"v1-projects--projectId--pipelines--pipelineId--release-flows--stage--runs-get-team-scoped":{"operationId":"getProjectsPipelinesPipelineidReleaseFlowsStageRuns","summary":"List release flow runs","description":"Lists runs of a release flow","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"pipelineId","type":"string","required":true,"description":"ID of the pipeline","example":"example-pipeline","in":"path","schema":{"name":"pipelineId","type":"string","required":true,"description":"ID of the pipeline","example":"example-pipeline","in":"path"}},{"name":"stage","type":"string","required":true,"description":"Stage of the pipeline","example":"development","in":"path","schema":{"name":"stage","type":"string","required":true,"description":"Stage of the pipeline","example":"development","in":"path"}},{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query","schema":{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query"}},{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query","schema":{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query"}},{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query","schema":{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query"}},{"name":"status","type":"string","enum":["pending","running","success","failure","aborted","aborting","queued","unknown","skipped","waiting","retrying","async_wait","approval_wait"],"description":"Filter by template status.","example":"success","default":"pending","in":"query","schema":{"name":"status","type":"string","enum":["pending","running","success","failure","aborted","aborting","queued","unknown","skipped","waiting","retrying","async_wait","approval_wait"],"description":"Filter by template status.","example":"success","default":"pending","in":"query"}},{"name":"concluded","type":"boolean","description":"Filter by whether the template is concluded.","in":"query","schema":{"name":"concluded","type":"boolean","description":"Filter by whether the template is concluded.","in":"query"}}],"responses":{"200":{"description":"A list of runs for this release flow.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"runs":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"ID of the release flow run","example":"110ddb52-bdcd-482d-8ac2-05ba580afe2f"},"name":{"type":"string","description":"Optional name for the release flow run","example":"Example run"},"description":{"type":"string","description":"Optional description for the release flow run","example":"This is an example description"},"status":{"type":"string","enum":["pending","running","success","failure","aborted","aborting","queued","unknown","skipped","waiting","retrying","async_wait","approval_wait"],"description":"Status of the template run","example":"success","default":"pending"},"startedAt":{"type":"string","format":"date-time","description":"Timestamp the run started at.","example":"2021-01-01 12:01:00.000Z"},"concluded":{"type":"boolean","description":"Whether the run has concluded (aborted, success, failed)","example":true,"default":false},"concludedAt":{"type":"string","format":"date-time","description":"Timestamp the run concluded at.","example":"2021-01-01 12:10:00.000Z"},"createdAt":{"type":"string","format":"date-time","description":"Timestamp the run was created at.","example":"2021-01-01 12:00:00.000Z"},"updatedAt":{"type":"string","format":"date-time","description":"Timestamp the run was last updated at.","example":"2021-01-01 12:00:00.000Z"}},"required":["id","status","concluded","createdAt","updatedAt"],"additionalProperties":false},"description":"A release flow run"}},"additionalProperties":false,"description":"Result data."},"pagination":{"type":"object","properties":{"hasNextPage":{"type":"boolean","description":"Is there another page of results available?","example":false},"cursor":{"type":"string","description":"The cursor to access the next page of results."},"count":{"type":"number","format":"float","description":"The number of results returned by this request.","example":1}},"required":["hasNextPage","count"],"additionalProperties":false,"description":"Data about the endpoint pagination."}},"required":["data","pagination"],"additionalProperties":false,"description":"Response object."}}},"tags":["Pipelines","project"],"security":[],"x-nf-permission-required":"Project > Pipelines > General > Read","x-nf-team-scoped":true,"x-nf-cli-command":["list","release-flow-runs"]},"v1-projects--projectId--pipelines--pipelineId--release-flows--stage--runs--runId--get":{"operationId":"getProjectsPipelinesPipelineidReleaseFlowsStageRunsRunid","summary":"Get release flow run details","description":"Get information about the given release flow run","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"pipelineId","type":"string","required":true,"description":"ID of the pipeline","example":"example-pipeline","in":"path","schema":{"name":"pipelineId","type":"string","required":true,"description":"ID of the pipeline","example":"example-pipeline","in":"path"}},{"name":"stage","type":"string","required":true,"description":"Stage of the pipeline","example":"development","in":"path","schema":{"name":"stage","type":"string","required":true,"description":"Stage of the pipeline","example":"development","in":"path"}},{"name":"runId","type":"string","required":true,"description":"ID of the release flow run","example":"development","in":"path","schema":{"name":"runId","type":"string","required":true,"description":"ID of the release flow run","example":"development","in":"path"}}],"responses":{"200":{"description":"Details about a release flow run.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"apiVersion":{"type":"string","enum":["v1.2"],"description":"The version of the Northflank API to run the template against.","example":"v1.2"},"arguments":{"type":"object","properties":{},"description":"A set of arguments that can be referenced in a template using '${args.argumentName}'."},"triggers":{"type":"array","items":{"type":"object","properties":{"ref":{"type":"string","description":"A reference that can be used to access the output of this trigger in the template."},"vcsService":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If vcsService is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string"},"repoUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo that will trigger the template.","example":"https://github.com/northflank-examples/remix-postgres-redis-demo"},"branchRestrictions":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z/*0-9%\\-.#_!'();,&=+]*$"},"default":[]},"prRestrictions":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z/*0-9%\\-.#_!'();,&=+]*$"},"default":[]},"pathIgnoreRules":{"type":"array","items":{"type":"string","maxLength":260,"description":"A path ignore rule, following `.gitignore` syntax. For example, `*.md` will ignore all files ending with `.md`.","example":"README.md"},"maxItems":200,"description":"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.","default":[]},"ciIgnoreFlags":{"type":"array","items":{"type":"string","maxLength":72,"description":"A commit ignore flag.","example":"[skip ci]"},"maxItems":200,"description":"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]\"]`","example":["[skip ci]","[ci skip]","[no ci]","[skip nf]","[nf skip]","[northflank skip]","[skip northflank]"],"default":[]},"ciIgnoreFlagsEnabled":{"type":"boolean","default":false},"isAllowList":{"type":"boolean","default":false},"ignoreDrafts":{"type":"boolean","description":"If `true`, draft pull requests from this repo will not trigger the template.","default":false}},"required":["vcsService","repoUrl"],"additionalProperties":false},"default":[]},"options":{"type":"object","properties":{"concurrencyPolicy":{"type":"string","enum":["allow","queue","forbid","latest","replace"],"description":"Defines the concurrency behaviour of the template with respect to parallel runs.","example":"allow"},"paused":{"type":"boolean","description":"If `true`, the template will not run when triggered by git.","example":false}},"additionalProperties":false,"description":"Options regarding how the template is run."},"gitops":{"type":"object","properties":{"vcsService":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string","description":"Legacy key. Please used accountLogin instead."},"repoUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo to sync the file with.","example":"https://github.com/northflank-examples/remix-postgres-redis-demo"},"branch":{"type":"string","description":"The name of the branch to use.","example":"main"},"filePath":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]+$","description":"The file path in the repository. If using an existing file, it should be in JSON format.","examples":["/Dockerfile","northflank.json"]}},"required":["vcsService","repoUrl","branch","filePath"],"additionalProperties":false},"$schema":{"type":"string"},"spec":{"$ref":"#/components/schemas/V1ReleaseFlowTemplateNodeRunSchema"},"refs":{"type":"object","properties":{},"additionalProperties":false},"id":{"type":"string","description":"ID of the release flow run","example":"110ddb52-bdcd-482d-8ac2-05ba580afe2f"},"name":{"type":"string","description":"Optional name for the release flow run","example":"Example run"},"description":{"type":"string","description":"Optional description for the release flow run","example":"This is an example description"},"status":{"type":"string","enum":["pending","running","success","failure","aborted","aborting","queued","unknown","skipped","waiting","retrying","async_wait","approval_wait"],"description":"Status of the template run","example":"success","default":"pending"},"startedAt":{"type":"string","format":"date-time","description":"Timestamp the run started at.","example":"2021-01-01 12:01:00.000Z"},"concluded":{"type":"boolean","description":"Whether the run has concluded (aborted, success, failed)","example":true,"default":false},"concludedAt":{"type":"string","format":"date-time","description":"Timestamp the run concluded at.","example":"2021-01-01 12:10:00.000Z"},"createdAt":{"type":"string","format":"date-time","description":"Timestamp the run was created at.","example":"2021-01-01 12:00:00.000Z"},"updatedAt":{"type":"string","format":"date-time","description":"Timestamp the run was last updated at.","example":"2021-01-01 12:00:00.000Z"}},"required":["apiVersion","spec","id","status","concluded","createdAt","updatedAt"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Pipelines","project"],"security":[],"x-nf-permission-required":"Project > Pipelines > General > Read","x-nf-team-scoped":true,"x-nf-cli-command":["get","release-flow-run"]},"v1-projects--projectId--pipelines--pipelineId--release-flows--stage--runs--runId--get-team-scoped":{"operationId":"getProjectsPipelinesPipelineidReleaseFlowsStageRunsRunid","summary":"Get release flow run details","description":"Get information about the given release flow run","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"pipelineId","type":"string","required":true,"description":"ID of the pipeline","example":"example-pipeline","in":"path","schema":{"name":"pipelineId","type":"string","required":true,"description":"ID of the pipeline","example":"example-pipeline","in":"path"}},{"name":"stage","type":"string","required":true,"description":"Stage of the pipeline","example":"development","in":"path","schema":{"name":"stage","type":"string","required":true,"description":"Stage of the pipeline","example":"development","in":"path"}},{"name":"runId","type":"string","required":true,"description":"ID of the release flow run","example":"development","in":"path","schema":{"name":"runId","type":"string","required":true,"description":"ID of the release flow run","example":"development","in":"path"}}],"responses":{"200":{"description":"Details about a release flow run.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"apiVersion":{"type":"string","enum":["v1.2"],"description":"The version of the Northflank API to run the template against.","example":"v1.2"},"arguments":{"type":"object","properties":{},"description":"A set of arguments that can be referenced in a template using '${args.argumentName}'."},"triggers":{"type":"array","items":{"type":"object","properties":{"ref":{"type":"string","description":"A reference that can be used to access the output of this trigger in the template."},"vcsService":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If vcsService is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string"},"repoUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo that will trigger the template.","example":"https://github.com/northflank-examples/remix-postgres-redis-demo"},"branchRestrictions":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z/*0-9%\\-.#_!'();,&=+]*$"},"default":[]},"prRestrictions":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z/*0-9%\\-.#_!'();,&=+]*$"},"default":[]},"pathIgnoreRules":{"type":"array","items":{"type":"string","maxLength":260,"description":"A path ignore rule, following `.gitignore` syntax. For example, `*.md` will ignore all files ending with `.md`.","example":"README.md"},"maxItems":200,"description":"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.","default":[]},"ciIgnoreFlags":{"type":"array","items":{"type":"string","maxLength":72,"description":"A commit ignore flag.","example":"[skip ci]"},"maxItems":200,"description":"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]\"]`","example":["[skip ci]","[ci skip]","[no ci]","[skip nf]","[nf skip]","[northflank skip]","[skip northflank]"],"default":[]},"ciIgnoreFlagsEnabled":{"type":"boolean","default":false},"isAllowList":{"type":"boolean","default":false},"ignoreDrafts":{"type":"boolean","description":"If `true`, draft pull requests from this repo will not trigger the template.","default":false}},"required":["vcsService","repoUrl"],"additionalProperties":false},"default":[]},"options":{"type":"object","properties":{"concurrencyPolicy":{"type":"string","enum":["allow","queue","forbid","latest","replace"],"description":"Defines the concurrency behaviour of the template with respect to parallel runs.","example":"allow"},"paused":{"type":"boolean","description":"If `true`, the template will not run when triggered by git.","example":false}},"additionalProperties":false,"description":"Options regarding how the template is run."},"gitops":{"type":"object","properties":{"vcsService":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string","description":"Legacy key. Please used accountLogin instead."},"repoUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo to sync the file with.","example":"https://github.com/northflank-examples/remix-postgres-redis-demo"},"branch":{"type":"string","description":"The name of the branch to use.","example":"main"},"filePath":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]+$","description":"The file path in the repository. If using an existing file, it should be in JSON format.","examples":["/Dockerfile","northflank.json"]}},"required":["vcsService","repoUrl","branch","filePath"],"additionalProperties":false},"$schema":{"type":"string"},"spec":{"$ref":"#/components/schemas/V1ReleaseFlowTemplateNodeRunSchema"},"refs":{"type":"object","properties":{},"additionalProperties":false},"id":{"type":"string","description":"ID of the release flow run","example":"110ddb52-bdcd-482d-8ac2-05ba580afe2f"},"name":{"type":"string","description":"Optional name for the release flow run","example":"Example run"},"description":{"type":"string","description":"Optional description for the release flow run","example":"This is an example description"},"status":{"type":"string","enum":["pending","running","success","failure","aborted","aborting","queued","unknown","skipped","waiting","retrying","async_wait","approval_wait"],"description":"Status of the template run","example":"success","default":"pending"},"startedAt":{"type":"string","format":"date-time","description":"Timestamp the run started at.","example":"2021-01-01 12:01:00.000Z"},"concluded":{"type":"boolean","description":"Whether the run has concluded (aborted, success, failed)","example":true,"default":false},"concludedAt":{"type":"string","format":"date-time","description":"Timestamp the run concluded at.","example":"2021-01-01 12:10:00.000Z"},"createdAt":{"type":"string","format":"date-time","description":"Timestamp the run was created at.","example":"2021-01-01 12:00:00.000Z"},"updatedAt":{"type":"string","format":"date-time","description":"Timestamp the run was last updated at.","example":"2021-01-01 12:00:00.000Z"}},"required":["apiVersion","spec","id","status","concluded","createdAt","updatedAt"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Pipelines","project"],"security":[],"x-nf-permission-required":"Project > Pipelines > General > Read","x-nf-team-scoped":true,"x-nf-cli-command":["get","release-flow-run"]},"v1-projects--projectId--pipelines--pipelineId--release-flows--stage--runs--runId--abort-post":{"operationId":"postProjectsPipelinesPipelineidReleaseFlowsStageRunsRunidAbort","summary":"Abort release flow run","description":"Abort the given release flow run","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"pipelineId","type":"string","required":true,"description":"ID of the pipeline","example":"example-pipeline","in":"path","schema":{"name":"pipelineId","type":"string","required":true,"description":"ID of the pipeline","example":"example-pipeline","in":"path"}},{"name":"stage","type":"string","required":true,"description":"Stage of the pipeline","example":"development","in":"path","schema":{"name":"stage","type":"string","required":true,"description":"Stage of the pipeline","example":"development","in":"path"}},{"name":"runId","type":"string","required":true,"description":"ID of the release flow run","example":"development","in":"path","schema":{"name":"runId","type":"string","required":true,"description":"ID of the release flow run","example":"development","in":"path"}}],"responses":{"200":{"description":"Details about the aborting run.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"apiVersion":{"type":"string","enum":["v1.2"],"description":"The version of the Northflank API to run the template against.","example":"v1.2"},"arguments":{"type":"object","properties":{},"description":"A set of arguments that can be referenced in a template using '${args.argumentName}'."},"triggers":{"type":"array","items":{"type":"object","properties":{"ref":{"type":"string","description":"A reference that can be used to access the output of this trigger in the template."},"vcsService":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If vcsService is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string"},"repoUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo that will trigger the template.","example":"https://github.com/northflank-examples/remix-postgres-redis-demo"},"branchRestrictions":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z/*0-9%\\-.#_!'();,&=+]*$"},"default":[]},"prRestrictions":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z/*0-9%\\-.#_!'();,&=+]*$"},"default":[]},"pathIgnoreRules":{"type":"array","items":{"type":"string","maxLength":260,"description":"A path ignore rule, following `.gitignore` syntax. For example, `*.md` will ignore all files ending with `.md`.","example":"README.md"},"maxItems":200,"description":"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.","default":[]},"ciIgnoreFlags":{"type":"array","items":{"type":"string","maxLength":72,"description":"A commit ignore flag.","example":"[skip ci]"},"maxItems":200,"description":"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]\"]`","example":["[skip ci]","[ci skip]","[no ci]","[skip nf]","[nf skip]","[northflank skip]","[skip northflank]"],"default":[]},"ciIgnoreFlagsEnabled":{"type":"boolean","default":false},"isAllowList":{"type":"boolean","default":false},"ignoreDrafts":{"type":"boolean","description":"If `true`, draft pull requests from this repo will not trigger the template.","default":false}},"required":["vcsService","repoUrl"],"additionalProperties":false},"default":[]},"options":{"type":"object","properties":{"concurrencyPolicy":{"type":"string","enum":["allow","queue","forbid","latest","replace"],"description":"Defines the concurrency behaviour of the template with respect to parallel runs.","example":"allow"},"paused":{"type":"boolean","description":"If `true`, the template will not run when triggered by git.","example":false}},"additionalProperties":false,"description":"Options regarding how the template is run."},"gitops":{"type":"object","properties":{"vcsService":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string","description":"Legacy key. Please used accountLogin instead."},"repoUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo to sync the file with.","example":"https://github.com/northflank-examples/remix-postgres-redis-demo"},"branch":{"type":"string","description":"The name of the branch to use.","example":"main"},"filePath":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]+$","description":"The file path in the repository. If using an existing file, it should be in JSON format.","examples":["/Dockerfile","northflank.json"]}},"required":["vcsService","repoUrl","branch","filePath"],"additionalProperties":false},"$schema":{"type":"string"},"spec":{"$ref":"#/components/schemas/V1ReleaseFlowTemplateNodeRunSchema"},"refs":{"type":"object","properties":{},"additionalProperties":false},"id":{"type":"string","description":"ID of the release flow run","example":"110ddb52-bdcd-482d-8ac2-05ba580afe2f"},"name":{"type":"string","description":"Optional name for the release flow run","example":"Example run"},"description":{"type":"string","description":"Optional description for the release flow run","example":"This is an example description"},"status":{"type":"string","enum":["pending","running","success","failure","aborted","aborting","queued","unknown","skipped","waiting","retrying","async_wait","approval_wait"],"description":"Status of the template run","example":"success","default":"pending"},"startedAt":{"type":"string","format":"date-time","description":"Timestamp the run started at.","example":"2021-01-01 12:01:00.000Z"},"concluded":{"type":"boolean","description":"Whether the run has concluded (aborted, success, failed)","example":true,"default":false},"concludedAt":{"type":"string","format":"date-time","description":"Timestamp the run concluded at.","example":"2021-01-01 12:10:00.000Z"},"createdAt":{"type":"string","format":"date-time","description":"Timestamp the run was created at.","example":"2021-01-01 12:00:00.000Z"},"updatedAt":{"type":"string","format":"date-time","description":"Timestamp the run was last updated at.","example":"2021-01-01 12:00:00.000Z"}},"required":["apiVersion","spec","id","status","concluded","createdAt","updatedAt"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Pipelines","project"],"security":[],"x-nf-permission-required":"Project > Pipelines > General > Update","x-nf-team-scoped":true,"x-nf-cli-command":["abort","release-flow-run"]},"v1-projects--projectId--pipelines--pipelineId--release-flows--stage--runs--runId--abort-post-team-scoped":{"operationId":"postProjectsPipelinesPipelineidReleaseFlowsStageRunsRunidAbort","summary":"Abort release flow run","description":"Abort the given release flow run","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"pipelineId","type":"string","required":true,"description":"ID of the pipeline","example":"example-pipeline","in":"path","schema":{"name":"pipelineId","type":"string","required":true,"description":"ID of the pipeline","example":"example-pipeline","in":"path"}},{"name":"stage","type":"string","required":true,"description":"Stage of the pipeline","example":"development","in":"path","schema":{"name":"stage","type":"string","required":true,"description":"Stage of the pipeline","example":"development","in":"path"}},{"name":"runId","type":"string","required":true,"description":"ID of the release flow run","example":"development","in":"path","schema":{"name":"runId","type":"string","required":true,"description":"ID of the release flow run","example":"development","in":"path"}}],"responses":{"200":{"description":"Details about the aborting run.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"apiVersion":{"type":"string","enum":["v1.2"],"description":"The version of the Northflank API to run the template against.","example":"v1.2"},"arguments":{"type":"object","properties":{},"description":"A set of arguments that can be referenced in a template using '${args.argumentName}'."},"triggers":{"type":"array","items":{"type":"object","properties":{"ref":{"type":"string","description":"A reference that can be used to access the output of this trigger in the template."},"vcsService":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If vcsService is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string"},"repoUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo that will trigger the template.","example":"https://github.com/northflank-examples/remix-postgres-redis-demo"},"branchRestrictions":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z/*0-9%\\-.#_!'();,&=+]*$"},"default":[]},"prRestrictions":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z/*0-9%\\-.#_!'();,&=+]*$"},"default":[]},"pathIgnoreRules":{"type":"array","items":{"type":"string","maxLength":260,"description":"A path ignore rule, following `.gitignore` syntax. For example, `*.md` will ignore all files ending with `.md`.","example":"README.md"},"maxItems":200,"description":"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.","default":[]},"ciIgnoreFlags":{"type":"array","items":{"type":"string","maxLength":72,"description":"A commit ignore flag.","example":"[skip ci]"},"maxItems":200,"description":"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]\"]`","example":["[skip ci]","[ci skip]","[no ci]","[skip nf]","[nf skip]","[northflank skip]","[skip northflank]"],"default":[]},"ciIgnoreFlagsEnabled":{"type":"boolean","default":false},"isAllowList":{"type":"boolean","default":false},"ignoreDrafts":{"type":"boolean","description":"If `true`, draft pull requests from this repo will not trigger the template.","default":false}},"required":["vcsService","repoUrl"],"additionalProperties":false},"default":[]},"options":{"type":"object","properties":{"concurrencyPolicy":{"type":"string","enum":["allow","queue","forbid","latest","replace"],"description":"Defines the concurrency behaviour of the template with respect to parallel runs.","example":"allow"},"paused":{"type":"boolean","description":"If `true`, the template will not run when triggered by git.","example":false}},"additionalProperties":false,"description":"Options regarding how the template is run."},"gitops":{"type":"object","properties":{"vcsService":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string","description":"Legacy key. Please used accountLogin instead."},"repoUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo to sync the file with.","example":"https://github.com/northflank-examples/remix-postgres-redis-demo"},"branch":{"type":"string","description":"The name of the branch to use.","example":"main"},"filePath":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]+$","description":"The file path in the repository. If using an existing file, it should be in JSON format.","examples":["/Dockerfile","northflank.json"]}},"required":["vcsService","repoUrl","branch","filePath"],"additionalProperties":false},"$schema":{"type":"string"},"spec":{"$ref":"#/components/schemas/V1ReleaseFlowTemplateNodeRunSchema"},"refs":{"type":"object","properties":{},"additionalProperties":false},"id":{"type":"string","description":"ID of the release flow run","example":"110ddb52-bdcd-482d-8ac2-05ba580afe2f"},"name":{"type":"string","description":"Optional name for the release flow run","example":"Example run"},"description":{"type":"string","description":"Optional description for the release flow run","example":"This is an example description"},"status":{"type":"string","enum":["pending","running","success","failure","aborted","aborting","queued","unknown","skipped","waiting","retrying","async_wait","approval_wait"],"description":"Status of the template run","example":"success","default":"pending"},"startedAt":{"type":"string","format":"date-time","description":"Timestamp the run started at.","example":"2021-01-01 12:01:00.000Z"},"concluded":{"type":"boolean","description":"Whether the run has concluded (aborted, success, failed)","example":true,"default":false},"concludedAt":{"type":"string","format":"date-time","description":"Timestamp the run concluded at.","example":"2021-01-01 12:10:00.000Z"},"createdAt":{"type":"string","format":"date-time","description":"Timestamp the run was created at.","example":"2021-01-01 12:00:00.000Z"},"updatedAt":{"type":"string","format":"date-time","description":"Timestamp the run was last updated at.","example":"2021-01-01 12:00:00.000Z"}},"required":["apiVersion","spec","id","status","concluded","createdAt","updatedAt"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Pipelines","project"],"security":[],"x-nf-permission-required":"Project > Pipelines > General > Update","x-nf-team-scoped":true,"x-nf-cli-command":["abort","release-flow-run"]},"v1-projects--projectId--preview-blueprints-get":{"operationId":"getProjectsPreviewBlueprints","summary":"List preview blueprints","description":"Lists all preview blueprints for a project","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query","schema":{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query"}},{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query","schema":{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query"}},{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query","schema":{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query"}}],"responses":{"200":{"description":"A list of preview blueprints that belong to the project.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"pipelines":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"Name of the template.","example":"Example Template"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"Description of the template.","example":"This is a sample template."},"apiVersion":{"type":"string","enum":["v1.2"],"description":"The version of the Northflank API to run the template against.","example":"v1.2"},"options":{"type":"object","properties":{"autorun":{"type":"boolean","description":"If true, the template will run automatically whenever a change is made to it.","example":false},"concurrencyPolicy":{"type":"string","enum":["allow","queue","forbid","latest","replace"],"description":"Defines the concurrency behaviour of the template with respect to parallel runs.","example":"allow"}},"additionalProperties":false,"description":"Options regarding how the template is run."},"id":{"type":"string","description":"Identifier for the preview blueprint","example":"example-workflow"},"createdAt":{"type":"string","format":"date-time","description":"time of creation"},"updatedAt":{"type":"string","format":"date-time","description":"time of update"}},"required":["name","apiVersion","id"],"additionalProperties":false,"description":"A preview blueprint."},"description":"An array of preview blueprints in this project."}},"required":["pipelines"],"additionalProperties":false,"description":"Result data."},"pagination":{"type":"object","properties":{"hasNextPage":{"type":"boolean","description":"Is there another page of results available?","example":false},"cursor":{"type":"string","description":"The cursor to access the next page of results."},"count":{"type":"number","format":"float","description":"The number of results returned by this request.","example":1}},"required":["hasNextPage","count"],"additionalProperties":false,"description":"Data about the endpoint pagination."}},"required":["data","pagination"],"additionalProperties":false,"description":"Response object."}}},"tags":["Preview Blueprints","project"],"security":[],"x-nf-permission-required":"Project > PreviewBlueprints > General > Read","x-nf-team-scoped":true,"x-nf-cli-command":["list","preview-blueprints"]},"v1-projects--projectId--preview-blueprints-get-team-scoped":{"operationId":"getProjectsPreviewBlueprints","summary":"List preview blueprints","description":"Lists all preview blueprints for a project","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query","schema":{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query"}},{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query","schema":{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query"}},{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query","schema":{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query"}}],"responses":{"200":{"description":"A list of preview blueprints that belong to the project.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"pipelines":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"Name of the template.","example":"Example Template"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"Description of the template.","example":"This is a sample template."},"apiVersion":{"type":"string","enum":["v1.2"],"description":"The version of the Northflank API to run the template against.","example":"v1.2"},"options":{"type":"object","properties":{"autorun":{"type":"boolean","description":"If true, the template will run automatically whenever a change is made to it.","example":false},"concurrencyPolicy":{"type":"string","enum":["allow","queue","forbid","latest","replace"],"description":"Defines the concurrency behaviour of the template with respect to parallel runs.","example":"allow"}},"additionalProperties":false,"description":"Options regarding how the template is run."},"id":{"type":"string","description":"Identifier for the preview blueprint","example":"example-workflow"},"createdAt":{"type":"string","format":"date-time","description":"time of creation"},"updatedAt":{"type":"string","format":"date-time","description":"time of update"}},"required":["name","apiVersion","id"],"additionalProperties":false,"description":"A preview blueprint."},"description":"An array of preview blueprints in this project."}},"required":["pipelines"],"additionalProperties":false,"description":"Result data."},"pagination":{"type":"object","properties":{"hasNextPage":{"type":"boolean","description":"Is there another page of results available?","example":false},"cursor":{"type":"string","description":"The cursor to access the next page of results."},"count":{"type":"number","format":"float","description":"The number of results returned by this request.","example":1}},"required":["hasNextPage","count"],"additionalProperties":false,"description":"Data about the endpoint pagination."}},"required":["data","pagination"],"additionalProperties":false,"description":"Response object."}}},"tags":["Preview Blueprints","project"],"security":[],"x-nf-permission-required":"Project > PreviewBlueprints > General > Read","x-nf-team-scoped":true,"x-nf-cli-command":["list","preview-blueprints"]},"v1-projects--projectId--preview-blueprints-post":{"operationId":"postProjectsPreviewBlueprints","summary":"Create preview blueprint","description":"Create a preview blueprint","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"previewBlueprintId","type":"string","required":true,"description":"ID of the preview blueprint","example":"development","in":"path","schema":{"name":"previewBlueprintId","type":"string","required":true,"description":"ID of the preview blueprint","example":"development","in":"path"}}],"responses":{"200":{"description":"success"}},"tags":["Preview Blueprints","project"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"arguments":{"type":"object","properties":{},"description":"A set of arguments that can be referenced in a template using '${args.argumentName}'."},"gitops":{"type":"object","properties":{"vcsService":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string","description":"Legacy key. Please used accountLogin instead."},"repoUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo to sync the file with.","example":"https://github.com/northflank-examples/remix-postgres-redis-demo"},"branch":{"type":"string","description":"The name of the branch to use.","example":"main"},"filePath":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]+$","description":"The file path in the repository. If using an existing file, it should be in JSON format.","examples":["/Dockerfile","northflank.json"]}},"required":["vcsService","repoUrl","branch","filePath"],"additionalProperties":false},"$schema":{"type":"string"},"name":{"oneOf":[{"type":"string","pattern":"^[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"x-required":true},{"type":"string","pattern":".*\\${.*}.*"}]},"description":{"oneOf":[{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200},{"type":"string","pattern":".*\\${.*}.*"}]},"options":{"type":"object","properties":{"concurrencyPolicy":{"type":"string","enum":["allow","queue","forbid","latest","replace"],"description":"Defines the concurrency behaviour of the template with respect to parallel runs.","examples":["allow","allow"]},"nameFormat":{"type":"string","description":"The format of the automatically generated preview name. This is a parsed ref string."},"prefixName":{"type":"boolean","description":"If true, the preview name will default to the front of the resource name."},"useBranchContents":{"type":"boolean","description":"If true, and gitops is enabled, the preview will run based on the contents of the branch that triggered it, rather than the set branch."},"schedule":{"type":"object","properties":{"mon":{"type":"object","properties":{"startTime":{"type":"integer","minimum":0,"maximum":2400},"endTime":{"type":"integer","minimum":0,"maximum":2400}},"additionalProperties":false},"tue":{"type":"object","properties":{"startTime":{"type":"integer","minimum":0,"maximum":2400},"endTime":{"type":"integer","minimum":0,"maximum":2400}},"additionalProperties":false},"wed":{"type":"object","properties":{"startTime":{"type":"integer","minimum":0,"maximum":2400},"endTime":{"type":"integer","minimum":0,"maximum":2400}},"additionalProperties":false},"thu":{"type":"object","properties":{"startTime":{"type":"integer","minimum":0,"maximum":2400},"endTime":{"type":"integer","minimum":0,"maximum":2400}},"additionalProperties":false},"fri":{"type":"object","properties":{"startTime":{"type":"integer","minimum":0,"maximum":2400},"endTime":{"type":"integer","minimum":0,"maximum":2400}},"additionalProperties":false},"sat":{"type":"object","properties":{"startTime":{"type":"integer","minimum":0,"maximum":2400},"endTime":{"type":"integer","minimum":0,"maximum":2400}},"additionalProperties":false},"sun":{"type":"object","properties":{"startTime":{"type":"integer","minimum":0,"maximum":2400},"endTime":{"type":"integer","minimum":0,"maximum":2400}},"additionalProperties":false}},"additionalProperties":false,"description":"Options regarding which hours preview environments should be active. Only available for BYOC projects."},"expiry":{"type":"object","properties":{"previewLifetime":{"type":"integer","minimum":1,"description":"If set, preview environments will be automatically deleted after this many minutes since their last update."},"resetOnUpdate":{"type":"boolean","description":"If `true`, the expiry time for an existing preview will be reset when it is ran again."}},"additionalProperties":false,"description":"Settings regarding the automatic deletion of previews."},"autorun":{"type":"boolean","description":"If true, the template will run automatically whenever a change is made to it.","example":false}},"additionalProperties":false,"description":"Options regarding how the template is run."},"argumentOverrides":{"type":"object","properties":{},"description":"A set of arguments that can be referenced in a template using '${args.argumentName}'."},"teardownSpec":{"type":"object","properties":{"spec":{"description":"The root node of the teardown workflow."},"failurePolicy":{"type":"string","enum":["ignore","block"],"description":"Controls what happens if the teardown spec fails or times out. `ignore` (default) — proceed with resource deletion regardless. `block` — halt deletion and set the environment to `teardown_failed`","default":"ignore"}},"required":["spec"],"additionalProperties":false,"nullable":true,"description":"Optional spec to run when the template is deleted."},"triggers":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"kind":{"type":"string","enum":["vcs-push"]},"spec":{"type":"object","properties":{"vcs":{"type":"object","properties":{"vcsService":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string"},"repoUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo that will trigger the template.","example":"https://github.com/northflank-examples/remix-postgres-redis-demo"}},"required":["vcsService","repoUrl"]},"branchNamePatterns":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z/*0-9%\\-.#_!'();,&=+]*$"},"default":[]},"commitMessageFlags":{"type":"object","properties":{"enabled":{"type":"boolean","default":false},"flags":{"type":"array","items":{"type":"string","maxLength":72,"description":"A commit ignore flag.","example":"[skip ci]"},"maxItems":200,"description":"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]\"]`","example":["[skip ci]","[ci skip]","[no ci]","[skip nf]","[nf skip]","[northflank skip]","[skip northflank]"],"default":[]}},"additionalProperties":false},"filePaths":{"type":"object","properties":{"enabled":{"type":"boolean","default":false},"allowList":{"type":"boolean","default":false},"paths":{"type":"array","items":{"type":"string","maxLength":260,"description":"A path ignore rule, following `.gitignore` syntax. For example, `*.md` will ignore all files ending with `.md`.","example":"README.md"},"maxItems":200,"description":"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.","default":[]}},"additionalProperties":false}},"additionalProperties":false},"ref":{"type":"string","description":"A reference that can be used to access the output of this trigger in the template."},"id":{"type":"string"}},"required":["kind","spec"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["vcs-pr"]},"spec":{"type":"object","properties":{"vcs":{"type":"object","properties":{"vcsService":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string"},"repoUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo that will trigger the template.","example":"https://github.com/northflank-examples/remix-postgres-redis-demo"}},"required":["vcsService","repoUrl"]},"branchNamePatterns":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z/*0-9%\\-.#_!'();,&=+]*$"},"default":[]},"commitMessageFlags":{"type":"object","properties":{"enabled":{"type":"boolean","default":false},"flags":{"type":"array","items":{"type":"string","maxLength":72,"description":"A commit ignore flag.","example":"[skip ci]"},"maxItems":200,"description":"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]\"]`","example":["[skip ci]","[ci skip]","[no ci]","[skip nf]","[nf skip]","[northflank skip]","[skip northflank]"],"default":[]}},"additionalProperties":false},"filePaths":{"type":"object","properties":{"enabled":{"type":"boolean","default":false},"allowList":{"type":"boolean","default":false},"paths":{"type":"array","items":{"type":"string","maxLength":260,"description":"A path ignore rule, following `.gitignore` syntax. For example, `*.md` will ignore all files ending with `.md`.","example":"README.md"},"maxItems":200,"description":"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.","default":[]}},"additionalProperties":false},"ignoreDrafts":{"type":"boolean","description":"If `true`, draft pull requests from this repo will not trigger the template.","default":false}},"additionalProperties":false},"ref":{"type":"string","description":"A reference that can be used to access the output of this trigger in the template."},"id":{"type":"string"}},"required":["kind","spec"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["webhook"]},"spec":{"type":"object","properties":{"token":{"type":"string"}},"required":["token"],"additionalProperties":false},"ref":{"type":"string","description":"A reference that can be used to access the output of this trigger in the template."},"id":{"type":"string"}},"required":["kind","spec"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["vcs-release"]},"spec":{"type":"object","properties":{"vcs":{"type":"object","properties":{"vcsService":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string"},"repoUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo that will trigger the template.","example":"https://github.com/northflank-examples/remix-postgres-redis-demo"}},"required":["vcsService","repoUrl"]}},"additionalProperties":false},"ref":{"type":"string","description":"A reference that can be used to access the output of this trigger in the template."},"id":{"type":"string"}},"required":["kind","spec"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["vcs-pr-label"]},"spec":{"type":"object","properties":{"vcs":{"type":"object","properties":{"vcsService":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string"},"repoUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo that will trigger the template.","example":"https://github.com/northflank-examples/remix-postgres-redis-demo"}},"required":["vcsService","repoUrl"]},"labelNamePatterns":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z/*0-9%\\-.#_!'();,&=+]*$"},"default":[]},"branchNamePatterns":{"type":"object","properties":{"enabled":{"type":"boolean","default":false},"names":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z/*0-9%\\-.#_!'();,&=+]*$"},"default":[]}},"additionalProperties":false},"commitMessageFlags":{"type":"object","properties":{"enabled":{"type":"boolean","default":false},"flags":{"type":"array","items":{"type":"string","maxLength":72,"description":"A commit ignore flag.","example":"[skip ci]"},"maxItems":200,"description":"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]\"]`","example":["[skip ci]","[ci skip]","[no ci]","[skip nf]","[nf skip]","[northflank skip]","[skip northflank]"],"default":[]}},"additionalProperties":false},"filePaths":{"type":"object","properties":{"enabled":{"type":"boolean","default":false},"allowList":{"type":"boolean","default":false},"paths":{"type":"array","items":{"type":"string","maxLength":260,"description":"A path ignore rule, following `.gitignore` syntax. For example, `*.md` will ignore all files ending with `.md`.","example":"README.md"},"maxItems":200,"description":"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.","default":[]}},"additionalProperties":false},"ignoreDrafts":{"type":"boolean","description":"If `true`, draft pull requests from this repo will not trigger the template.","default":false}},"additionalProperties":false},"ref":{"type":"string","description":"A reference that can be used to access the output of this trigger in the template."},"id":{"type":"string"}},"required":["kind","spec"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["cron"]},"spec":{"type":"object","properties":{"cron":{"type":"string","description":"A cron expression that defines the schedule on which the template will be executed.","example":"0 * * * *"}},"required":["cron"],"additionalProperties":false},"ref":{"type":"string","description":"A reference that can be used to access the output of this trigger in the template."},"id":{"type":"string"}},"required":["kind","spec"],"additionalProperties":false}]},"default":[]},"apiVersion":{"type":"string"},"project":{"type":"object","properties":{}},"spec":{"type":"object","properties":{}}},"required":["name","apiVersion","spec"],"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Project > PreviewBlueprints > General > Create","x-nf-team-scoped":true,"x-nf-cli-command":["create","preview-blueprint"]},"v1-projects--projectId--preview-blueprints-post-team-scoped":{"operationId":"postProjectsPreviewBlueprints","summary":"Create preview blueprint","description":"Create a preview blueprint","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"previewBlueprintId","type":"string","required":true,"description":"ID of the preview blueprint","example":"development","in":"path","schema":{"name":"previewBlueprintId","type":"string","required":true,"description":"ID of the preview blueprint","example":"development","in":"path"}}],"responses":{"200":{"description":"success"}},"tags":["Preview Blueprints","project"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"arguments":{"type":"object","properties":{},"description":"A set of arguments that can be referenced in a template using '${args.argumentName}'."},"gitops":{"type":"object","properties":{"vcsService":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string","description":"Legacy key. Please used accountLogin instead."},"repoUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo to sync the file with.","example":"https://github.com/northflank-examples/remix-postgres-redis-demo"},"branch":{"type":"string","description":"The name of the branch to use.","example":"main"},"filePath":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]+$","description":"The file path in the repository. If using an existing file, it should be in JSON format.","examples":["/Dockerfile","northflank.json"]}},"required":["vcsService","repoUrl","branch","filePath"],"additionalProperties":false},"$schema":{"type":"string"},"name":{"oneOf":[{"type":"string","pattern":"^[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"x-required":true},{"type":"string","pattern":".*\\${.*}.*"}]},"description":{"oneOf":[{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200},{"type":"string","pattern":".*\\${.*}.*"}]},"options":{"type":"object","properties":{"concurrencyPolicy":{"type":"string","enum":["allow","queue","forbid","latest","replace"],"description":"Defines the concurrency behaviour of the template with respect to parallel runs.","examples":["allow","allow"]},"nameFormat":{"type":"string","description":"The format of the automatically generated preview name. This is a parsed ref string."},"prefixName":{"type":"boolean","description":"If true, the preview name will default to the front of the resource name."},"useBranchContents":{"type":"boolean","description":"If true, and gitops is enabled, the preview will run based on the contents of the branch that triggered it, rather than the set branch."},"schedule":{"type":"object","properties":{"mon":{"type":"object","properties":{"startTime":{"type":"integer","minimum":0,"maximum":2400},"endTime":{"type":"integer","minimum":0,"maximum":2400}},"additionalProperties":false},"tue":{"type":"object","properties":{"startTime":{"type":"integer","minimum":0,"maximum":2400},"endTime":{"type":"integer","minimum":0,"maximum":2400}},"additionalProperties":false},"wed":{"type":"object","properties":{"startTime":{"type":"integer","minimum":0,"maximum":2400},"endTime":{"type":"integer","minimum":0,"maximum":2400}},"additionalProperties":false},"thu":{"type":"object","properties":{"startTime":{"type":"integer","minimum":0,"maximum":2400},"endTime":{"type":"integer","minimum":0,"maximum":2400}},"additionalProperties":false},"fri":{"type":"object","properties":{"startTime":{"type":"integer","minimum":0,"maximum":2400},"endTime":{"type":"integer","minimum":0,"maximum":2400}},"additionalProperties":false},"sat":{"type":"object","properties":{"startTime":{"type":"integer","minimum":0,"maximum":2400},"endTime":{"type":"integer","minimum":0,"maximum":2400}},"additionalProperties":false},"sun":{"type":"object","properties":{"startTime":{"type":"integer","minimum":0,"maximum":2400},"endTime":{"type":"integer","minimum":0,"maximum":2400}},"additionalProperties":false}},"additionalProperties":false,"description":"Options regarding which hours preview environments should be active. Only available for BYOC projects."},"expiry":{"type":"object","properties":{"previewLifetime":{"type":"integer","minimum":1,"description":"If set, preview environments will be automatically deleted after this many minutes since their last update."},"resetOnUpdate":{"type":"boolean","description":"If `true`, the expiry time for an existing preview will be reset when it is ran again."}},"additionalProperties":false,"description":"Settings regarding the automatic deletion of previews."},"autorun":{"type":"boolean","description":"If true, the template will run automatically whenever a change is made to it.","example":false}},"additionalProperties":false,"description":"Options regarding how the template is run."},"argumentOverrides":{"type":"object","properties":{},"description":"A set of arguments that can be referenced in a template using '${args.argumentName}'."},"teardownSpec":{"type":"object","properties":{"spec":{"description":"The root node of the teardown workflow."},"failurePolicy":{"type":"string","enum":["ignore","block"],"description":"Controls what happens if the teardown spec fails or times out. `ignore` (default) — proceed with resource deletion regardless. `block` — halt deletion and set the environment to `teardown_failed`","default":"ignore"}},"required":["spec"],"additionalProperties":false,"nullable":true,"description":"Optional spec to run when the template is deleted."},"triggers":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"kind":{"type":"string","enum":["vcs-push"]},"spec":{"type":"object","properties":{"vcs":{"type":"object","properties":{"vcsService":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string"},"repoUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo that will trigger the template.","example":"https://github.com/northflank-examples/remix-postgres-redis-demo"}},"required":["vcsService","repoUrl"]},"branchNamePatterns":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z/*0-9%\\-.#_!'();,&=+]*$"},"default":[]},"commitMessageFlags":{"type":"object","properties":{"enabled":{"type":"boolean","default":false},"flags":{"type":"array","items":{"type":"string","maxLength":72,"description":"A commit ignore flag.","example":"[skip ci]"},"maxItems":200,"description":"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]\"]`","example":["[skip ci]","[ci skip]","[no ci]","[skip nf]","[nf skip]","[northflank skip]","[skip northflank]"],"default":[]}},"additionalProperties":false},"filePaths":{"type":"object","properties":{"enabled":{"type":"boolean","default":false},"allowList":{"type":"boolean","default":false},"paths":{"type":"array","items":{"type":"string","maxLength":260,"description":"A path ignore rule, following `.gitignore` syntax. For example, `*.md` will ignore all files ending with `.md`.","example":"README.md"},"maxItems":200,"description":"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.","default":[]}},"additionalProperties":false}},"additionalProperties":false},"ref":{"type":"string","description":"A reference that can be used to access the output of this trigger in the template."},"id":{"type":"string"}},"required":["kind","spec"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["vcs-pr"]},"spec":{"type":"object","properties":{"vcs":{"type":"object","properties":{"vcsService":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string"},"repoUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo that will trigger the template.","example":"https://github.com/northflank-examples/remix-postgres-redis-demo"}},"required":["vcsService","repoUrl"]},"branchNamePatterns":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z/*0-9%\\-.#_!'();,&=+]*$"},"default":[]},"commitMessageFlags":{"type":"object","properties":{"enabled":{"type":"boolean","default":false},"flags":{"type":"array","items":{"type":"string","maxLength":72,"description":"A commit ignore flag.","example":"[skip ci]"},"maxItems":200,"description":"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]\"]`","example":["[skip ci]","[ci skip]","[no ci]","[skip nf]","[nf skip]","[northflank skip]","[skip northflank]"],"default":[]}},"additionalProperties":false},"filePaths":{"type":"object","properties":{"enabled":{"type":"boolean","default":false},"allowList":{"type":"boolean","default":false},"paths":{"type":"array","items":{"type":"string","maxLength":260,"description":"A path ignore rule, following `.gitignore` syntax. For example, `*.md` will ignore all files ending with `.md`.","example":"README.md"},"maxItems":200,"description":"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.","default":[]}},"additionalProperties":false},"ignoreDrafts":{"type":"boolean","description":"If `true`, draft pull requests from this repo will not trigger the template.","default":false}},"additionalProperties":false},"ref":{"type":"string","description":"A reference that can be used to access the output of this trigger in the template."},"id":{"type":"string"}},"required":["kind","spec"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["webhook"]},"spec":{"type":"object","properties":{"token":{"type":"string"}},"required":["token"],"additionalProperties":false},"ref":{"type":"string","description":"A reference that can be used to access the output of this trigger in the template."},"id":{"type":"string"}},"required":["kind","spec"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["vcs-release"]},"spec":{"type":"object","properties":{"vcs":{"type":"object","properties":{"vcsService":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string"},"repoUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo that will trigger the template.","example":"https://github.com/northflank-examples/remix-postgres-redis-demo"}},"required":["vcsService","repoUrl"]}},"additionalProperties":false},"ref":{"type":"string","description":"A reference that can be used to access the output of this trigger in the template."},"id":{"type":"string"}},"required":["kind","spec"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["vcs-pr-label"]},"spec":{"type":"object","properties":{"vcs":{"type":"object","properties":{"vcsService":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string"},"repoUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo that will trigger the template.","example":"https://github.com/northflank-examples/remix-postgres-redis-demo"}},"required":["vcsService","repoUrl"]},"labelNamePatterns":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z/*0-9%\\-.#_!'();,&=+]*$"},"default":[]},"branchNamePatterns":{"type":"object","properties":{"enabled":{"type":"boolean","default":false},"names":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z/*0-9%\\-.#_!'();,&=+]*$"},"default":[]}},"additionalProperties":false},"commitMessageFlags":{"type":"object","properties":{"enabled":{"type":"boolean","default":false},"flags":{"type":"array","items":{"type":"string","maxLength":72,"description":"A commit ignore flag.","example":"[skip ci]"},"maxItems":200,"description":"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]\"]`","example":["[skip ci]","[ci skip]","[no ci]","[skip nf]","[nf skip]","[northflank skip]","[skip northflank]"],"default":[]}},"additionalProperties":false},"filePaths":{"type":"object","properties":{"enabled":{"type":"boolean","default":false},"allowList":{"type":"boolean","default":false},"paths":{"type":"array","items":{"type":"string","maxLength":260,"description":"A path ignore rule, following `.gitignore` syntax. For example, `*.md` will ignore all files ending with `.md`.","example":"README.md"},"maxItems":200,"description":"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.","default":[]}},"additionalProperties":false},"ignoreDrafts":{"type":"boolean","description":"If `true`, draft pull requests from this repo will not trigger the template.","default":false}},"additionalProperties":false},"ref":{"type":"string","description":"A reference that can be used to access the output of this trigger in the template."},"id":{"type":"string"}},"required":["kind","spec"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["cron"]},"spec":{"type":"object","properties":{"cron":{"type":"string","description":"A cron expression that defines the schedule on which the template will be executed.","example":"0 * * * *"}},"required":["cron"],"additionalProperties":false},"ref":{"type":"string","description":"A reference that can be used to access the output of this trigger in the template."},"id":{"type":"string"}},"required":["kind","spec"],"additionalProperties":false}]},"default":[]},"apiVersion":{"type":"string"},"project":{"type":"object","properties":{}},"spec":{"type":"object","properties":{}}},"required":["name","apiVersion","spec"],"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Project > PreviewBlueprints > General > Create","x-nf-team-scoped":true,"x-nf-cli-command":["create","preview-blueprint"]},"v1-projects--projectId--preview-blueprints--previewBlueprintId--get":{"operationId":"getProjectsPreviewBlueprintsPreviewblueprintid","summary":"Get preview blueprint","description":"Gets details about a preview blueprint","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"previewBlueprintId","type":"string","required":true,"description":"ID of the preview blueprint","example":"development","in":"path","schema":{"name":"previewBlueprintId","type":"string","required":true,"description":"ID of the preview blueprint","example":"development","in":"path"}}],"responses":{"200":{"description":"Details about a preview blueprint.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"apiVersion":{"type":"string","enum":["v1.2"],"description":"The version of the Northflank API to run the template against.","example":"v1.2"},"arguments":{"type":"object","properties":{},"description":"A set of arguments that can be referenced in a template using '${args.argumentName}'."},"gitops":{"type":"object","properties":{"vcsService":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string","description":"Legacy key. Please used accountLogin instead."},"repoUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo to sync the file with.","example":"https://github.com/northflank-examples/remix-postgres-redis-demo"},"branch":{"type":"string","description":"The name of the branch to use.","example":"main"},"filePath":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]+$","description":"The file path in the repository. If using an existing file, it should be in JSON format.","examples":["/Dockerfile","northflank.json"]}},"required":["vcsService","repoUrl","branch","filePath"],"additionalProperties":false},"$schema":{"type":"string"},"name":{"oneOf":[{"type":"string","pattern":"^[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"x-required":true},{"type":"string","pattern":".*\\${.*}.*"}]},"description":{"oneOf":[{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200},{"type":"string","pattern":".*\\${.*}.*"}]},"spec":{"$ref":"#/components/schemas/V1PreviewEnvTemplateNodeSchema"},"options":{"type":"object","properties":{"concurrencyPolicy":{"type":"string","enum":["allow","queue","forbid","latest","replace"],"description":"Defines the concurrency behaviour of the template with respect to parallel runs.","examples":["allow","allow"]},"nameFormat":{"type":"string","description":"The format of the automatically generated preview name. This is a parsed ref string."},"prefixName":{"type":"boolean","description":"If true, the preview name will default to the front of the resource name."},"useBranchContents":{"type":"boolean","description":"If true, and gitops is enabled, the preview will run based on the contents of the branch that triggered it, rather than the set branch."},"schedule":{"type":"object","properties":{"mon":{"type":"object","properties":{"startTime":{"type":"integer","minimum":0,"maximum":2400},"endTime":{"type":"integer","minimum":0,"maximum":2400}},"additionalProperties":false},"tue":{"type":"object","properties":{"startTime":{"type":"integer","minimum":0,"maximum":2400},"endTime":{"type":"integer","minimum":0,"maximum":2400}},"additionalProperties":false},"wed":{"type":"object","properties":{"startTime":{"type":"integer","minimum":0,"maximum":2400},"endTime":{"type":"integer","minimum":0,"maximum":2400}},"additionalProperties":false},"thu":{"type":"object","properties":{"startTime":{"type":"integer","minimum":0,"maximum":2400},"endTime":{"type":"integer","minimum":0,"maximum":2400}},"additionalProperties":false},"fri":{"type":"object","properties":{"startTime":{"type":"integer","minimum":0,"maximum":2400},"endTime":{"type":"integer","minimum":0,"maximum":2400}},"additionalProperties":false},"sat":{"type":"object","properties":{"startTime":{"type":"integer","minimum":0,"maximum":2400},"endTime":{"type":"integer","minimum":0,"maximum":2400}},"additionalProperties":false},"sun":{"type":"object","properties":{"startTime":{"type":"integer","minimum":0,"maximum":2400},"endTime":{"type":"integer","minimum":0,"maximum":2400}},"additionalProperties":false}},"additionalProperties":false,"description":"Options regarding which hours preview environments should be active. Only available for BYOC projects."},"expiry":{"type":"object","properties":{"previewLifetime":{"type":"integer","minimum":1,"description":"If set, preview environments will be automatically deleted after this many minutes since their last update."},"resetOnUpdate":{"type":"boolean","description":"If `true`, the expiry time for an existing preview will be reset when it is ran again."}},"additionalProperties":false,"description":"Settings regarding the automatic deletion of previews."},"autorun":{"type":"boolean","description":"If true, the template will run automatically whenever a change is made to it.","example":false}},"additionalProperties":false,"description":"Options regarding how the template is run."},"argumentOverrides":{"type":"object","properties":{},"description":"A set of arguments that can be referenced in a template using '${args.argumentName}'."},"teardownSpec":{"type":"object","properties":{"spec":{"description":"The root node of the teardown workflow."},"failurePolicy":{"type":"string","enum":["ignore","block"],"description":"Controls what happens if the teardown spec fails or times out. `ignore` (default) — proceed with resource deletion regardless. `block` — halt deletion and set the environment to `teardown_failed`","default":"ignore"}},"required":["spec"],"additionalProperties":false,"nullable":true,"description":"Optional spec to run when the template is deleted."},"triggers":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"kind":{"type":"string","enum":["vcs-push"]},"spec":{"type":"object","properties":{"vcs":{"type":"object","properties":{"vcsService":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string"},"repoUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo that will trigger the template.","example":"https://github.com/northflank-examples/remix-postgres-redis-demo"}},"required":["vcsService","repoUrl"]},"branchNamePatterns":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z/*0-9%\\-.#_!'();,&=+]*$"},"default":[]},"commitMessageFlags":{"type":"object","properties":{"enabled":{"type":"boolean","default":false},"flags":{"type":"array","items":{"type":"string","maxLength":72,"description":"A commit ignore flag.","example":"[skip ci]"},"maxItems":200,"description":"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]\"]`","example":["[skip ci]","[ci skip]","[no ci]","[skip nf]","[nf skip]","[northflank skip]","[skip northflank]"],"default":[]}},"additionalProperties":false},"filePaths":{"type":"object","properties":{"enabled":{"type":"boolean","default":false},"allowList":{"type":"boolean","default":false},"paths":{"type":"array","items":{"type":"string","maxLength":260,"description":"A path ignore rule, following `.gitignore` syntax. For example, `*.md` will ignore all files ending with `.md`.","example":"README.md"},"maxItems":200,"description":"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.","default":[]}},"additionalProperties":false}},"additionalProperties":false},"ref":{"type":"string","description":"A reference that can be used to access the output of this trigger in the template."},"id":{"type":"string"}},"required":["kind","spec"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["vcs-pr"]},"spec":{"type":"object","properties":{"vcs":{"type":"object","properties":{"vcsService":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string"},"repoUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo that will trigger the template.","example":"https://github.com/northflank-examples/remix-postgres-redis-demo"}},"required":["vcsService","repoUrl"]},"branchNamePatterns":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z/*0-9%\\-.#_!'();,&=+]*$"},"default":[]},"commitMessageFlags":{"type":"object","properties":{"enabled":{"type":"boolean","default":false},"flags":{"type":"array","items":{"type":"string","maxLength":72,"description":"A commit ignore flag.","example":"[skip ci]"},"maxItems":200,"description":"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]\"]`","example":["[skip ci]","[ci skip]","[no ci]","[skip nf]","[nf skip]","[northflank skip]","[skip northflank]"],"default":[]}},"additionalProperties":false},"filePaths":{"type":"object","properties":{"enabled":{"type":"boolean","default":false},"allowList":{"type":"boolean","default":false},"paths":{"type":"array","items":{"type":"string","maxLength":260,"description":"A path ignore rule, following `.gitignore` syntax. For example, `*.md` will ignore all files ending with `.md`.","example":"README.md"},"maxItems":200,"description":"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.","default":[]}},"additionalProperties":false},"ignoreDrafts":{"type":"boolean","description":"If `true`, draft pull requests from this repo will not trigger the template.","default":false}},"additionalProperties":false},"ref":{"type":"string","description":"A reference that can be used to access the output of this trigger in the template."},"id":{"type":"string"}},"required":["kind","spec"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["webhook"]},"spec":{"type":"object","properties":{"token":{"type":"string"}},"required":["token"],"additionalProperties":false},"ref":{"type":"string","description":"A reference that can be used to access the output of this trigger in the template."},"id":{"type":"string"}},"required":["kind","spec"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["vcs-release"]},"spec":{"type":"object","properties":{"vcs":{"type":"object","properties":{"vcsService":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string"},"repoUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo that will trigger the template.","example":"https://github.com/northflank-examples/remix-postgres-redis-demo"}},"required":["vcsService","repoUrl"]}},"additionalProperties":false},"ref":{"type":"string","description":"A reference that can be used to access the output of this trigger in the template."},"id":{"type":"string"}},"required":["kind","spec"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["vcs-pr-label"]},"spec":{"type":"object","properties":{"vcs":{"type":"object","properties":{"vcsService":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string"},"repoUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo that will trigger the template.","example":"https://github.com/northflank-examples/remix-postgres-redis-demo"}},"required":["vcsService","repoUrl"]},"labelNamePatterns":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z/*0-9%\\-.#_!'();,&=+]*$"},"default":[]},"branchNamePatterns":{"type":"object","properties":{"enabled":{"type":"boolean","default":false},"names":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z/*0-9%\\-.#_!'();,&=+]*$"},"default":[]}},"additionalProperties":false},"commitMessageFlags":{"type":"object","properties":{"enabled":{"type":"boolean","default":false},"flags":{"type":"array","items":{"type":"string","maxLength":72,"description":"A commit ignore flag.","example":"[skip ci]"},"maxItems":200,"description":"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]\"]`","example":["[skip ci]","[ci skip]","[no ci]","[skip nf]","[nf skip]","[northflank skip]","[skip northflank]"],"default":[]}},"additionalProperties":false},"filePaths":{"type":"object","properties":{"enabled":{"type":"boolean","default":false},"allowList":{"type":"boolean","default":false},"paths":{"type":"array","items":{"type":"string","maxLength":260,"description":"A path ignore rule, following `.gitignore` syntax. For example, `*.md` will ignore all files ending with `.md`.","example":"README.md"},"maxItems":200,"description":"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.","default":[]}},"additionalProperties":false},"ignoreDrafts":{"type":"boolean","description":"If `true`, draft pull requests from this repo will not trigger the template.","default":false}},"additionalProperties":false},"ref":{"type":"string","description":"A reference that can be used to access the output of this trigger in the template."},"id":{"type":"string"}},"required":["kind","spec"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["cron"]},"spec":{"type":"object","properties":{"cron":{"type":"string","description":"A cron expression that defines the schedule on which the template will be executed.","example":"0 * * * *"}},"required":["cron"],"additionalProperties":false},"ref":{"type":"string","description":"A reference that can be used to access the output of this trigger in the template."},"id":{"type":"string"}},"required":["kind","spec"],"additionalProperties":false}]},"default":[]},"concurrencyPolicy":{"type":"string","enum":["allow","queue","forbid","latest","replace"],"description":"Defines the concurrency behaviour of the template with respect to parallel runs.","example":"allow"},"status":{"type":"string","enum":["pending","running","success","failure","aborted","aborting","queued","unknown","skipped","waiting","retrying","async_wait","approval_wait"],"description":"Status of the template run","example":"success","default":"pending"},"paused":{"type":"boolean","description":"Whether triggers are paused for this preview blueprint. If `true`, Git triggers and webhook triggers will not run the preview blueprint.","example":false},"createdAt":{"type":"string","format":"date-time","description":"Timestamp the template was created at.","example":"2021-01-01 12:00:00.000Z"},"updatedAt":{"type":"string","format":"date-time","description":"Timestamp the template was last updated at.","example":"2021-01-01 12:00:00.000Z"}},"required":["apiVersion","name","status","paused","createdAt","updatedAt"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Preview Blueprints","project"],"security":[],"x-nf-permission-required":"Project > PreviewBlueprints > General > Read","x-nf-team-scoped":true,"x-nf-cli-command":["get","preview-blueprint"]},"v1-projects--projectId--preview-blueprints--previewBlueprintId--get-team-scoped":{"operationId":"getProjectsPreviewBlueprintsPreviewblueprintid","summary":"Get preview blueprint","description":"Gets details about a preview blueprint","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"previewBlueprintId","type":"string","required":true,"description":"ID of the preview blueprint","example":"development","in":"path","schema":{"name":"previewBlueprintId","type":"string","required":true,"description":"ID of the preview blueprint","example":"development","in":"path"}}],"responses":{"200":{"description":"Details about a preview blueprint.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"apiVersion":{"type":"string","enum":["v1.2"],"description":"The version of the Northflank API to run the template against.","example":"v1.2"},"arguments":{"type":"object","properties":{},"description":"A set of arguments that can be referenced in a template using '${args.argumentName}'."},"gitops":{"type":"object","properties":{"vcsService":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string","description":"Legacy key. Please used accountLogin instead."},"repoUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo to sync the file with.","example":"https://github.com/northflank-examples/remix-postgres-redis-demo"},"branch":{"type":"string","description":"The name of the branch to use.","example":"main"},"filePath":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]+$","description":"The file path in the repository. If using an existing file, it should be in JSON format.","examples":["/Dockerfile","northflank.json"]}},"required":["vcsService","repoUrl","branch","filePath"],"additionalProperties":false},"$schema":{"type":"string"},"name":{"oneOf":[{"type":"string","pattern":"^[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"x-required":true},{"type":"string","pattern":".*\\${.*}.*"}]},"description":{"oneOf":[{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200},{"type":"string","pattern":".*\\${.*}.*"}]},"spec":{"$ref":"#/components/schemas/V1PreviewEnvTemplateNodeSchema"},"options":{"type":"object","properties":{"concurrencyPolicy":{"type":"string","enum":["allow","queue","forbid","latest","replace"],"description":"Defines the concurrency behaviour of the template with respect to parallel runs.","examples":["allow","allow"]},"nameFormat":{"type":"string","description":"The format of the automatically generated preview name. This is a parsed ref string."},"prefixName":{"type":"boolean","description":"If true, the preview name will default to the front of the resource name."},"useBranchContents":{"type":"boolean","description":"If true, and gitops is enabled, the preview will run based on the contents of the branch that triggered it, rather than the set branch."},"schedule":{"type":"object","properties":{"mon":{"type":"object","properties":{"startTime":{"type":"integer","minimum":0,"maximum":2400},"endTime":{"type":"integer","minimum":0,"maximum":2400}},"additionalProperties":false},"tue":{"type":"object","properties":{"startTime":{"type":"integer","minimum":0,"maximum":2400},"endTime":{"type":"integer","minimum":0,"maximum":2400}},"additionalProperties":false},"wed":{"type":"object","properties":{"startTime":{"type":"integer","minimum":0,"maximum":2400},"endTime":{"type":"integer","minimum":0,"maximum":2400}},"additionalProperties":false},"thu":{"type":"object","properties":{"startTime":{"type":"integer","minimum":0,"maximum":2400},"endTime":{"type":"integer","minimum":0,"maximum":2400}},"additionalProperties":false},"fri":{"type":"object","properties":{"startTime":{"type":"integer","minimum":0,"maximum":2400},"endTime":{"type":"integer","minimum":0,"maximum":2400}},"additionalProperties":false},"sat":{"type":"object","properties":{"startTime":{"type":"integer","minimum":0,"maximum":2400},"endTime":{"type":"integer","minimum":0,"maximum":2400}},"additionalProperties":false},"sun":{"type":"object","properties":{"startTime":{"type":"integer","minimum":0,"maximum":2400},"endTime":{"type":"integer","minimum":0,"maximum":2400}},"additionalProperties":false}},"additionalProperties":false,"description":"Options regarding which hours preview environments should be active. Only available for BYOC projects."},"expiry":{"type":"object","properties":{"previewLifetime":{"type":"integer","minimum":1,"description":"If set, preview environments will be automatically deleted after this many minutes since their last update."},"resetOnUpdate":{"type":"boolean","description":"If `true`, the expiry time for an existing preview will be reset when it is ran again."}},"additionalProperties":false,"description":"Settings regarding the automatic deletion of previews."},"autorun":{"type":"boolean","description":"If true, the template will run automatically whenever a change is made to it.","example":false}},"additionalProperties":false,"description":"Options regarding how the template is run."},"argumentOverrides":{"type":"object","properties":{},"description":"A set of arguments that can be referenced in a template using '${args.argumentName}'."},"teardownSpec":{"type":"object","properties":{"spec":{"description":"The root node of the teardown workflow."},"failurePolicy":{"type":"string","enum":["ignore","block"],"description":"Controls what happens if the teardown spec fails or times out. `ignore` (default) — proceed with resource deletion regardless. `block` — halt deletion and set the environment to `teardown_failed`","default":"ignore"}},"required":["spec"],"additionalProperties":false,"nullable":true,"description":"Optional spec to run when the template is deleted."},"triggers":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"kind":{"type":"string","enum":["vcs-push"]},"spec":{"type":"object","properties":{"vcs":{"type":"object","properties":{"vcsService":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string"},"repoUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo that will trigger the template.","example":"https://github.com/northflank-examples/remix-postgres-redis-demo"}},"required":["vcsService","repoUrl"]},"branchNamePatterns":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z/*0-9%\\-.#_!'();,&=+]*$"},"default":[]},"commitMessageFlags":{"type":"object","properties":{"enabled":{"type":"boolean","default":false},"flags":{"type":"array","items":{"type":"string","maxLength":72,"description":"A commit ignore flag.","example":"[skip ci]"},"maxItems":200,"description":"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]\"]`","example":["[skip ci]","[ci skip]","[no ci]","[skip nf]","[nf skip]","[northflank skip]","[skip northflank]"],"default":[]}},"additionalProperties":false},"filePaths":{"type":"object","properties":{"enabled":{"type":"boolean","default":false},"allowList":{"type":"boolean","default":false},"paths":{"type":"array","items":{"type":"string","maxLength":260,"description":"A path ignore rule, following `.gitignore` syntax. For example, `*.md` will ignore all files ending with `.md`.","example":"README.md"},"maxItems":200,"description":"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.","default":[]}},"additionalProperties":false}},"additionalProperties":false},"ref":{"type":"string","description":"A reference that can be used to access the output of this trigger in the template."},"id":{"type":"string"}},"required":["kind","spec"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["vcs-pr"]},"spec":{"type":"object","properties":{"vcs":{"type":"object","properties":{"vcsService":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string"},"repoUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo that will trigger the template.","example":"https://github.com/northflank-examples/remix-postgres-redis-demo"}},"required":["vcsService","repoUrl"]},"branchNamePatterns":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z/*0-9%\\-.#_!'();,&=+]*$"},"default":[]},"commitMessageFlags":{"type":"object","properties":{"enabled":{"type":"boolean","default":false},"flags":{"type":"array","items":{"type":"string","maxLength":72,"description":"A commit ignore flag.","example":"[skip ci]"},"maxItems":200,"description":"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]\"]`","example":["[skip ci]","[ci skip]","[no ci]","[skip nf]","[nf skip]","[northflank skip]","[skip northflank]"],"default":[]}},"additionalProperties":false},"filePaths":{"type":"object","properties":{"enabled":{"type":"boolean","default":false},"allowList":{"type":"boolean","default":false},"paths":{"type":"array","items":{"type":"string","maxLength":260,"description":"A path ignore rule, following `.gitignore` syntax. For example, `*.md` will ignore all files ending with `.md`.","example":"README.md"},"maxItems":200,"description":"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.","default":[]}},"additionalProperties":false},"ignoreDrafts":{"type":"boolean","description":"If `true`, draft pull requests from this repo will not trigger the template.","default":false}},"additionalProperties":false},"ref":{"type":"string","description":"A reference that can be used to access the output of this trigger in the template."},"id":{"type":"string"}},"required":["kind","spec"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["webhook"]},"spec":{"type":"object","properties":{"token":{"type":"string"}},"required":["token"],"additionalProperties":false},"ref":{"type":"string","description":"A reference that can be used to access the output of this trigger in the template."},"id":{"type":"string"}},"required":["kind","spec"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["vcs-release"]},"spec":{"type":"object","properties":{"vcs":{"type":"object","properties":{"vcsService":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string"},"repoUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo that will trigger the template.","example":"https://github.com/northflank-examples/remix-postgres-redis-demo"}},"required":["vcsService","repoUrl"]}},"additionalProperties":false},"ref":{"type":"string","description":"A reference that can be used to access the output of this trigger in the template."},"id":{"type":"string"}},"required":["kind","spec"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["vcs-pr-label"]},"spec":{"type":"object","properties":{"vcs":{"type":"object","properties":{"vcsService":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string"},"repoUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo that will trigger the template.","example":"https://github.com/northflank-examples/remix-postgres-redis-demo"}},"required":["vcsService","repoUrl"]},"labelNamePatterns":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z/*0-9%\\-.#_!'();,&=+]*$"},"default":[]},"branchNamePatterns":{"type":"object","properties":{"enabled":{"type":"boolean","default":false},"names":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z/*0-9%\\-.#_!'();,&=+]*$"},"default":[]}},"additionalProperties":false},"commitMessageFlags":{"type":"object","properties":{"enabled":{"type":"boolean","default":false},"flags":{"type":"array","items":{"type":"string","maxLength":72,"description":"A commit ignore flag.","example":"[skip ci]"},"maxItems":200,"description":"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]\"]`","example":["[skip ci]","[ci skip]","[no ci]","[skip nf]","[nf skip]","[northflank skip]","[skip northflank]"],"default":[]}},"additionalProperties":false},"filePaths":{"type":"object","properties":{"enabled":{"type":"boolean","default":false},"allowList":{"type":"boolean","default":false},"paths":{"type":"array","items":{"type":"string","maxLength":260,"description":"A path ignore rule, following `.gitignore` syntax. For example, `*.md` will ignore all files ending with `.md`.","example":"README.md"},"maxItems":200,"description":"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.","default":[]}},"additionalProperties":false},"ignoreDrafts":{"type":"boolean","description":"If `true`, draft pull requests from this repo will not trigger the template.","default":false}},"additionalProperties":false},"ref":{"type":"string","description":"A reference that can be used to access the output of this trigger in the template."},"id":{"type":"string"}},"required":["kind","spec"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["cron"]},"spec":{"type":"object","properties":{"cron":{"type":"string","description":"A cron expression that defines the schedule on which the template will be executed.","example":"0 * * * *"}},"required":["cron"],"additionalProperties":false},"ref":{"type":"string","description":"A reference that can be used to access the output of this trigger in the template."},"id":{"type":"string"}},"required":["kind","spec"],"additionalProperties":false}]},"default":[]},"concurrencyPolicy":{"type":"string","enum":["allow","queue","forbid","latest","replace"],"description":"Defines the concurrency behaviour of the template with respect to parallel runs.","example":"allow"},"status":{"type":"string","enum":["pending","running","success","failure","aborted","aborting","queued","unknown","skipped","waiting","retrying","async_wait","approval_wait"],"description":"Status of the template run","example":"success","default":"pending"},"paused":{"type":"boolean","description":"Whether triggers are paused for this preview blueprint. If `true`, Git triggers and webhook triggers will not run the preview blueprint.","example":false},"createdAt":{"type":"string","format":"date-time","description":"Timestamp the template was created at.","example":"2021-01-01 12:00:00.000Z"},"updatedAt":{"type":"string","format":"date-time","description":"Timestamp the template was last updated at.","example":"2021-01-01 12:00:00.000Z"}},"required":["apiVersion","name","status","paused","createdAt","updatedAt"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Preview Blueprints","project"],"security":[],"x-nf-permission-required":"Project > PreviewBlueprints > General > Read","x-nf-team-scoped":true,"x-nf-cli-command":["get","preview-blueprint"]},"v1-projects--projectId--preview-blueprints--previewBlueprintId--post":{"operationId":"postProjectsPreviewBlueprintsPreviewblueprintid","summary":"Update preview blueprint","description":"Updates a preview blueprint","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"previewBlueprintId","type":"string","required":true,"description":"ID of the preview blueprint","example":"development","in":"path","schema":{"name":"previewBlueprintId","type":"string","required":true,"description":"ID of the preview blueprint","example":"development","in":"path"}}],"responses":{"200":{"description":"success"}},"tags":["Preview Blueprints","project"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"arguments":{"type":"object","properties":{},"description":"A set of arguments that can be referenced in a template using '${args.argumentName}'."},"gitops":{"type":"object","properties":{"vcsService":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string","description":"Legacy key. Please used accountLogin instead."},"repoUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo to sync the file with.","example":"https://github.com/northflank-examples/remix-postgres-redis-demo"},"branch":{"type":"string","description":"The name of the branch to use.","example":"main"},"filePath":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]+$","description":"The file path in the repository. If using an existing file, it should be in JSON format.","examples":["/Dockerfile","northflank.json"]}},"required":["vcsService","repoUrl","branch","filePath"],"additionalProperties":false},"$schema":{"type":"string"},"name":{"oneOf":[{"type":"string","pattern":"^[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"x-required":true},{"type":"string","pattern":".*\\${.*}.*"}]},"description":{"oneOf":[{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200},{"type":"string","pattern":".*\\${.*}.*"}]},"options":{"type":"object","properties":{"concurrencyPolicy":{"type":"string","enum":["allow","queue","forbid","latest","replace"],"description":"Defines the concurrency behaviour of the template with respect to parallel runs.","examples":["allow","allow"]},"nameFormat":{"type":"string","description":"The format of the automatically generated preview name. This is a parsed ref string."},"prefixName":{"type":"boolean","description":"If true, the preview name will default to the front of the resource name."},"useBranchContents":{"type":"boolean","description":"If true, and gitops is enabled, the preview will run based on the contents of the branch that triggered it, rather than the set branch."},"schedule":{"type":"object","properties":{"mon":{"type":"object","properties":{"startTime":{"type":"integer","minimum":0,"maximum":2400},"endTime":{"type":"integer","minimum":0,"maximum":2400}},"additionalProperties":false},"tue":{"type":"object","properties":{"startTime":{"type":"integer","minimum":0,"maximum":2400},"endTime":{"type":"integer","minimum":0,"maximum":2400}},"additionalProperties":false},"wed":{"type":"object","properties":{"startTime":{"type":"integer","minimum":0,"maximum":2400},"endTime":{"type":"integer","minimum":0,"maximum":2400}},"additionalProperties":false},"thu":{"type":"object","properties":{"startTime":{"type":"integer","minimum":0,"maximum":2400},"endTime":{"type":"integer","minimum":0,"maximum":2400}},"additionalProperties":false},"fri":{"type":"object","properties":{"startTime":{"type":"integer","minimum":0,"maximum":2400},"endTime":{"type":"integer","minimum":0,"maximum":2400}},"additionalProperties":false},"sat":{"type":"object","properties":{"startTime":{"type":"integer","minimum":0,"maximum":2400},"endTime":{"type":"integer","minimum":0,"maximum":2400}},"additionalProperties":false},"sun":{"type":"object","properties":{"startTime":{"type":"integer","minimum":0,"maximum":2400},"endTime":{"type":"integer","minimum":0,"maximum":2400}},"additionalProperties":false}},"additionalProperties":false,"description":"Options regarding which hours preview environments should be active. Only available for BYOC projects."},"expiry":{"type":"object","properties":{"previewLifetime":{"type":"integer","minimum":1,"description":"If set, preview environments will be automatically deleted after this many minutes since their last update."},"resetOnUpdate":{"type":"boolean","description":"If `true`, the expiry time for an existing preview will be reset when it is ran again."}},"additionalProperties":false,"description":"Settings regarding the automatic deletion of previews."},"autorun":{"type":"boolean","description":"If true, the template will run automatically whenever a change is made to it.","example":false}},"additionalProperties":false,"description":"Options regarding how the template is run."},"argumentOverrides":{"type":"object","properties":{},"description":"A set of arguments that can be referenced in a template using '${args.argumentName}'."},"teardownSpec":{"type":"object","properties":{"spec":{"description":"The root node of the teardown workflow."},"failurePolicy":{"type":"string","enum":["ignore","block"],"description":"Controls what happens if the teardown spec fails or times out. `ignore` (default) — proceed with resource deletion regardless. `block` — halt deletion and set the environment to `teardown_failed`","default":"ignore"}},"required":["spec"],"additionalProperties":false,"nullable":true,"description":"Optional spec to run when the template is deleted."},"triggers":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"kind":{"type":"string","enum":["vcs-push"]},"spec":{"type":"object","properties":{"vcs":{"type":"object","properties":{"vcsService":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string"},"repoUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo that will trigger the template.","example":"https://github.com/northflank-examples/remix-postgres-redis-demo"}},"required":["vcsService","repoUrl"]},"branchNamePatterns":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z/*0-9%\\-.#_!'();,&=+]*$"},"default":[]},"commitMessageFlags":{"type":"object","properties":{"enabled":{"type":"boolean","default":false},"flags":{"type":"array","items":{"type":"string","maxLength":72,"description":"A commit ignore flag.","example":"[skip ci]"},"maxItems":200,"description":"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]\"]`","example":["[skip ci]","[ci skip]","[no ci]","[skip nf]","[nf skip]","[northflank skip]","[skip northflank]"],"default":[]}},"additionalProperties":false},"filePaths":{"type":"object","properties":{"enabled":{"type":"boolean","default":false},"allowList":{"type":"boolean","default":false},"paths":{"type":"array","items":{"type":"string","maxLength":260,"description":"A path ignore rule, following `.gitignore` syntax. For example, `*.md` will ignore all files ending with `.md`.","example":"README.md"},"maxItems":200,"description":"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.","default":[]}},"additionalProperties":false}},"additionalProperties":false},"ref":{"type":"string","description":"A reference that can be used to access the output of this trigger in the template."},"id":{"type":"string"}},"required":["kind","spec"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["vcs-pr"]},"spec":{"type":"object","properties":{"vcs":{"type":"object","properties":{"vcsService":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string"},"repoUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo that will trigger the template.","example":"https://github.com/northflank-examples/remix-postgres-redis-demo"}},"required":["vcsService","repoUrl"]},"branchNamePatterns":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z/*0-9%\\-.#_!'();,&=+]*$"},"default":[]},"commitMessageFlags":{"type":"object","properties":{"enabled":{"type":"boolean","default":false},"flags":{"type":"array","items":{"type":"string","maxLength":72,"description":"A commit ignore flag.","example":"[skip ci]"},"maxItems":200,"description":"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]\"]`","example":["[skip ci]","[ci skip]","[no ci]","[skip nf]","[nf skip]","[northflank skip]","[skip northflank]"],"default":[]}},"additionalProperties":false},"filePaths":{"type":"object","properties":{"enabled":{"type":"boolean","default":false},"allowList":{"type":"boolean","default":false},"paths":{"type":"array","items":{"type":"string","maxLength":260,"description":"A path ignore rule, following `.gitignore` syntax. For example, `*.md` will ignore all files ending with `.md`.","example":"README.md"},"maxItems":200,"description":"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.","default":[]}},"additionalProperties":false},"ignoreDrafts":{"type":"boolean","description":"If `true`, draft pull requests from this repo will not trigger the template.","default":false}},"additionalProperties":false},"ref":{"type":"string","description":"A reference that can be used to access the output of this trigger in the template."},"id":{"type":"string"}},"required":["kind","spec"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["webhook"]},"spec":{"type":"object","properties":{"token":{"type":"string"}},"required":["token"],"additionalProperties":false},"ref":{"type":"string","description":"A reference that can be used to access the output of this trigger in the template."},"id":{"type":"string"}},"required":["kind","spec"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["vcs-release"]},"spec":{"type":"object","properties":{"vcs":{"type":"object","properties":{"vcsService":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string"},"repoUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo that will trigger the template.","example":"https://github.com/northflank-examples/remix-postgres-redis-demo"}},"required":["vcsService","repoUrl"]}},"additionalProperties":false},"ref":{"type":"string","description":"A reference that can be used to access the output of this trigger in the template."},"id":{"type":"string"}},"required":["kind","spec"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["vcs-pr-label"]},"spec":{"type":"object","properties":{"vcs":{"type":"object","properties":{"vcsService":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string"},"repoUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo that will trigger the template.","example":"https://github.com/northflank-examples/remix-postgres-redis-demo"}},"required":["vcsService","repoUrl"]},"labelNamePatterns":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z/*0-9%\\-.#_!'();,&=+]*$"},"default":[]},"branchNamePatterns":{"type":"object","properties":{"enabled":{"type":"boolean","default":false},"names":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z/*0-9%\\-.#_!'();,&=+]*$"},"default":[]}},"additionalProperties":false},"commitMessageFlags":{"type":"object","properties":{"enabled":{"type":"boolean","default":false},"flags":{"type":"array","items":{"type":"string","maxLength":72,"description":"A commit ignore flag.","example":"[skip ci]"},"maxItems":200,"description":"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]\"]`","example":["[skip ci]","[ci skip]","[no ci]","[skip nf]","[nf skip]","[northflank skip]","[skip northflank]"],"default":[]}},"additionalProperties":false},"filePaths":{"type":"object","properties":{"enabled":{"type":"boolean","default":false},"allowList":{"type":"boolean","default":false},"paths":{"type":"array","items":{"type":"string","maxLength":260,"description":"A path ignore rule, following `.gitignore` syntax. For example, `*.md` will ignore all files ending with `.md`.","example":"README.md"},"maxItems":200,"description":"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.","default":[]}},"additionalProperties":false},"ignoreDrafts":{"type":"boolean","description":"If `true`, draft pull requests from this repo will not trigger the template.","default":false}},"additionalProperties":false},"ref":{"type":"string","description":"A reference that can be used to access the output of this trigger in the template."},"id":{"type":"string"}},"required":["kind","spec"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["cron"]},"spec":{"type":"object","properties":{"cron":{"type":"string","description":"A cron expression that defines the schedule on which the template will be executed.","example":"0 * * * *"}},"required":["cron"],"additionalProperties":false},"ref":{"type":"string","description":"A reference that can be used to access the output of this trigger in the template."},"id":{"type":"string"}},"required":["kind","spec"],"additionalProperties":false}]},"default":[]},"apiVersion":{"type":"string"},"project":{"type":"object","properties":{}},"spec":{"type":"object","properties":{}}},"required":["name","apiVersion","spec"],"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Project > PreviewBlueprints > General > Update","x-nf-team-scoped":true,"x-nf-cli-command":["update","preview-blueprint"]},"v1-projects--projectId--preview-blueprints--previewBlueprintId--post-team-scoped":{"operationId":"postProjectsPreviewBlueprintsPreviewblueprintid","summary":"Update preview blueprint","description":"Updates a preview blueprint","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"previewBlueprintId","type":"string","required":true,"description":"ID of the preview blueprint","example":"development","in":"path","schema":{"name":"previewBlueprintId","type":"string","required":true,"description":"ID of the preview blueprint","example":"development","in":"path"}}],"responses":{"200":{"description":"success"}},"tags":["Preview Blueprints","project"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"arguments":{"type":"object","properties":{},"description":"A set of arguments that can be referenced in a template using '${args.argumentName}'."},"gitops":{"type":"object","properties":{"vcsService":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string","description":"Legacy key. Please used accountLogin instead."},"repoUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo to sync the file with.","example":"https://github.com/northflank-examples/remix-postgres-redis-demo"},"branch":{"type":"string","description":"The name of the branch to use.","example":"main"},"filePath":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]+$","description":"The file path in the repository. If using an existing file, it should be in JSON format.","examples":["/Dockerfile","northflank.json"]}},"required":["vcsService","repoUrl","branch","filePath"],"additionalProperties":false},"$schema":{"type":"string"},"name":{"oneOf":[{"type":"string","pattern":"^[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"x-required":true},{"type":"string","pattern":".*\\${.*}.*"}]},"description":{"oneOf":[{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200},{"type":"string","pattern":".*\\${.*}.*"}]},"options":{"type":"object","properties":{"concurrencyPolicy":{"type":"string","enum":["allow","queue","forbid","latest","replace"],"description":"Defines the concurrency behaviour of the template with respect to parallel runs.","examples":["allow","allow"]},"nameFormat":{"type":"string","description":"The format of the automatically generated preview name. This is a parsed ref string."},"prefixName":{"type":"boolean","description":"If true, the preview name will default to the front of the resource name."},"useBranchContents":{"type":"boolean","description":"If true, and gitops is enabled, the preview will run based on the contents of the branch that triggered it, rather than the set branch."},"schedule":{"type":"object","properties":{"mon":{"type":"object","properties":{"startTime":{"type":"integer","minimum":0,"maximum":2400},"endTime":{"type":"integer","minimum":0,"maximum":2400}},"additionalProperties":false},"tue":{"type":"object","properties":{"startTime":{"type":"integer","minimum":0,"maximum":2400},"endTime":{"type":"integer","minimum":0,"maximum":2400}},"additionalProperties":false},"wed":{"type":"object","properties":{"startTime":{"type":"integer","minimum":0,"maximum":2400},"endTime":{"type":"integer","minimum":0,"maximum":2400}},"additionalProperties":false},"thu":{"type":"object","properties":{"startTime":{"type":"integer","minimum":0,"maximum":2400},"endTime":{"type":"integer","minimum":0,"maximum":2400}},"additionalProperties":false},"fri":{"type":"object","properties":{"startTime":{"type":"integer","minimum":0,"maximum":2400},"endTime":{"type":"integer","minimum":0,"maximum":2400}},"additionalProperties":false},"sat":{"type":"object","properties":{"startTime":{"type":"integer","minimum":0,"maximum":2400},"endTime":{"type":"integer","minimum":0,"maximum":2400}},"additionalProperties":false},"sun":{"type":"object","properties":{"startTime":{"type":"integer","minimum":0,"maximum":2400},"endTime":{"type":"integer","minimum":0,"maximum":2400}},"additionalProperties":false}},"additionalProperties":false,"description":"Options regarding which hours preview environments should be active. Only available for BYOC projects."},"expiry":{"type":"object","properties":{"previewLifetime":{"type":"integer","minimum":1,"description":"If set, preview environments will be automatically deleted after this many minutes since their last update."},"resetOnUpdate":{"type":"boolean","description":"If `true`, the expiry time for an existing preview will be reset when it is ran again."}},"additionalProperties":false,"description":"Settings regarding the automatic deletion of previews."},"autorun":{"type":"boolean","description":"If true, the template will run automatically whenever a change is made to it.","example":false}},"additionalProperties":false,"description":"Options regarding how the template is run."},"argumentOverrides":{"type":"object","properties":{},"description":"A set of arguments that can be referenced in a template using '${args.argumentName}'."},"teardownSpec":{"type":"object","properties":{"spec":{"description":"The root node of the teardown workflow."},"failurePolicy":{"type":"string","enum":["ignore","block"],"description":"Controls what happens if the teardown spec fails or times out. `ignore` (default) — proceed with resource deletion regardless. `block` — halt deletion and set the environment to `teardown_failed`","default":"ignore"}},"required":["spec"],"additionalProperties":false,"nullable":true,"description":"Optional spec to run when the template is deleted."},"triggers":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"kind":{"type":"string","enum":["vcs-push"]},"spec":{"type":"object","properties":{"vcs":{"type":"object","properties":{"vcsService":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string"},"repoUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo that will trigger the template.","example":"https://github.com/northflank-examples/remix-postgres-redis-demo"}},"required":["vcsService","repoUrl"]},"branchNamePatterns":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z/*0-9%\\-.#_!'();,&=+]*$"},"default":[]},"commitMessageFlags":{"type":"object","properties":{"enabled":{"type":"boolean","default":false},"flags":{"type":"array","items":{"type":"string","maxLength":72,"description":"A commit ignore flag.","example":"[skip ci]"},"maxItems":200,"description":"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]\"]`","example":["[skip ci]","[ci skip]","[no ci]","[skip nf]","[nf skip]","[northflank skip]","[skip northflank]"],"default":[]}},"additionalProperties":false},"filePaths":{"type":"object","properties":{"enabled":{"type":"boolean","default":false},"allowList":{"type":"boolean","default":false},"paths":{"type":"array","items":{"type":"string","maxLength":260,"description":"A path ignore rule, following `.gitignore` syntax. For example, `*.md` will ignore all files ending with `.md`.","example":"README.md"},"maxItems":200,"description":"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.","default":[]}},"additionalProperties":false}},"additionalProperties":false},"ref":{"type":"string","description":"A reference that can be used to access the output of this trigger in the template."},"id":{"type":"string"}},"required":["kind","spec"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["vcs-pr"]},"spec":{"type":"object","properties":{"vcs":{"type":"object","properties":{"vcsService":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string"},"repoUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo that will trigger the template.","example":"https://github.com/northflank-examples/remix-postgres-redis-demo"}},"required":["vcsService","repoUrl"]},"branchNamePatterns":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z/*0-9%\\-.#_!'();,&=+]*$"},"default":[]},"commitMessageFlags":{"type":"object","properties":{"enabled":{"type":"boolean","default":false},"flags":{"type":"array","items":{"type":"string","maxLength":72,"description":"A commit ignore flag.","example":"[skip ci]"},"maxItems":200,"description":"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]\"]`","example":["[skip ci]","[ci skip]","[no ci]","[skip nf]","[nf skip]","[northflank skip]","[skip northflank]"],"default":[]}},"additionalProperties":false},"filePaths":{"type":"object","properties":{"enabled":{"type":"boolean","default":false},"allowList":{"type":"boolean","default":false},"paths":{"type":"array","items":{"type":"string","maxLength":260,"description":"A path ignore rule, following `.gitignore` syntax. For example, `*.md` will ignore all files ending with `.md`.","example":"README.md"},"maxItems":200,"description":"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.","default":[]}},"additionalProperties":false},"ignoreDrafts":{"type":"boolean","description":"If `true`, draft pull requests from this repo will not trigger the template.","default":false}},"additionalProperties":false},"ref":{"type":"string","description":"A reference that can be used to access the output of this trigger in the template."},"id":{"type":"string"}},"required":["kind","spec"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["webhook"]},"spec":{"type":"object","properties":{"token":{"type":"string"}},"required":["token"],"additionalProperties":false},"ref":{"type":"string","description":"A reference that can be used to access the output of this trigger in the template."},"id":{"type":"string"}},"required":["kind","spec"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["vcs-release"]},"spec":{"type":"object","properties":{"vcs":{"type":"object","properties":{"vcsService":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string"},"repoUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo that will trigger the template.","example":"https://github.com/northflank-examples/remix-postgres-redis-demo"}},"required":["vcsService","repoUrl"]}},"additionalProperties":false},"ref":{"type":"string","description":"A reference that can be used to access the output of this trigger in the template."},"id":{"type":"string"}},"required":["kind","spec"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["vcs-pr-label"]},"spec":{"type":"object","properties":{"vcs":{"type":"object","properties":{"vcsService":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string"},"repoUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo that will trigger the template.","example":"https://github.com/northflank-examples/remix-postgres-redis-demo"}},"required":["vcsService","repoUrl"]},"labelNamePatterns":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z/*0-9%\\-.#_!'();,&=+]*$"},"default":[]},"branchNamePatterns":{"type":"object","properties":{"enabled":{"type":"boolean","default":false},"names":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z/*0-9%\\-.#_!'();,&=+]*$"},"default":[]}},"additionalProperties":false},"commitMessageFlags":{"type":"object","properties":{"enabled":{"type":"boolean","default":false},"flags":{"type":"array","items":{"type":"string","maxLength":72,"description":"A commit ignore flag.","example":"[skip ci]"},"maxItems":200,"description":"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]\"]`","example":["[skip ci]","[ci skip]","[no ci]","[skip nf]","[nf skip]","[northflank skip]","[skip northflank]"],"default":[]}},"additionalProperties":false},"filePaths":{"type":"object","properties":{"enabled":{"type":"boolean","default":false},"allowList":{"type":"boolean","default":false},"paths":{"type":"array","items":{"type":"string","maxLength":260,"description":"A path ignore rule, following `.gitignore` syntax. For example, `*.md` will ignore all files ending with `.md`.","example":"README.md"},"maxItems":200,"description":"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.","default":[]}},"additionalProperties":false},"ignoreDrafts":{"type":"boolean","description":"If `true`, draft pull requests from this repo will not trigger the template.","default":false}},"additionalProperties":false},"ref":{"type":"string","description":"A reference that can be used to access the output of this trigger in the template."},"id":{"type":"string"}},"required":["kind","spec"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["cron"]},"spec":{"type":"object","properties":{"cron":{"type":"string","description":"A cron expression that defines the schedule on which the template will be executed.","example":"0 * * * *"}},"required":["cron"],"additionalProperties":false},"ref":{"type":"string","description":"A reference that can be used to access the output of this trigger in the template."},"id":{"type":"string"}},"required":["kind","spec"],"additionalProperties":false}]},"default":[]},"apiVersion":{"type":"string"},"project":{"type":"object","properties":{}},"spec":{"type":"object","properties":{}}},"required":["name","apiVersion","spec"],"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Project > PreviewBlueprints > General > Update","x-nf-team-scoped":true,"x-nf-cli-command":["update","preview-blueprint"]},"v1-projects--projectId--preview-blueprints--previewBlueprintId--delete":{"operationId":"deleteProjectsPreviewBlueprintsPreviewblueprintid","summary":"Delete preview blueprint","description":"Delete a preview blueprint","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"previewBlueprintId","type":"string","required":true,"description":"ID of the preview blueprint","example":"development","in":"path","schema":{"name":"previewBlueprintId","type":"string","required":true,"description":"ID of the preview blueprint","example":"development","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Preview Blueprints","project"],"security":[],"x-nf-permission-required":"Project > PreviewBlueprints > General > Delete","x-nf-team-scoped":true,"x-nf-cli-command":["delete","preview-blueprint"]},"v1-projects--projectId--preview-blueprints--previewBlueprintId--delete-team-scoped":{"operationId":"deleteProjectsPreviewBlueprintsPreviewblueprintid","summary":"Delete preview blueprint","description":"Delete a preview blueprint","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"previewBlueprintId","type":"string","required":true,"description":"ID of the preview blueprint","example":"development","in":"path","schema":{"name":"previewBlueprintId","type":"string","required":true,"description":"ID of the preview blueprint","example":"development","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Preview Blueprints","project"],"security":[],"x-nf-permission-required":"Project > PreviewBlueprints > General > Delete","x-nf-team-scoped":true,"x-nf-cli-command":["delete","preview-blueprint"]},"v1-projects--projectId--preview-blueprints--previewBlueprintId--previews-get":{"operationId":"getProjectsPreviewBlueprintsPreviewblueprintidPreviews","summary":"List preview environments","description":"Get a list of active previews for a preview blueprint.","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"previewBlueprintId","type":"string","required":true,"description":"ID of the preview blueprint","example":"development","in":"path","schema":{"name":"previewBlueprintId","type":"string","required":true,"description":"ID of the preview blueprint","example":"development","in":"path"}},{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query","schema":{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query"}},{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query","schema":{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query"}},{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query","schema":{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query"}}],"responses":{"200":{"description":"A list of previews currently active for the blueprint.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"previewEnvironments":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Identifier for the preview template environment","example":"clean-step"},"vcsData":{"type":"object","properties":{"repoUrl":{"type":"string"}},"required":["repoUrl"],"additionalProperties":false,"description":"Data about the version control action that triggered environment creation"},"paused":{"type":"boolean","description":"Whether the preview environment has been paused.","example":false},"createdAt":{"type":"string","format":"date-time","description":"time of creation"},"updatedAt":{"type":"string","format":"date-time","description":"time of update"}},"required":["id","vcsData"],"additionalProperties":false},"description":"A list of currently available preview environments for the template."}},"required":["previewEnvironments"],"additionalProperties":false,"description":"Result data."},"pagination":{"type":"object","properties":{"hasNextPage":{"type":"boolean","description":"Is there another page of results available?","example":false},"cursor":{"type":"string","description":"The cursor to access the next page of results."},"count":{"type":"number","format":"float","description":"The number of results returned by this request.","example":1}},"required":["hasNextPage","count"],"additionalProperties":false,"description":"Data about the endpoint pagination."}},"required":["data","pagination"],"additionalProperties":false,"description":"Response object."}}},"tags":["Preview Blueprints","project"],"security":[],"x-nf-permission-required":"Project > PreviewBlueprints > General > Read","x-nf-team-scoped":true,"x-nf-cli-command":["list","blueprint-template-previews"]},"v1-projects--projectId--preview-blueprints--previewBlueprintId--previews-get-team-scoped":{"operationId":"getProjectsPreviewBlueprintsPreviewblueprintidPreviews","summary":"List preview environments","description":"Get a list of active previews for a preview blueprint.","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"previewBlueprintId","type":"string","required":true,"description":"ID of the preview blueprint","example":"development","in":"path","schema":{"name":"previewBlueprintId","type":"string","required":true,"description":"ID of the preview blueprint","example":"development","in":"path"}},{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query","schema":{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query"}},{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query","schema":{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query"}},{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query","schema":{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query"}}],"responses":{"200":{"description":"A list of previews currently active for the blueprint.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"previewEnvironments":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Identifier for the preview template environment","example":"clean-step"},"vcsData":{"type":"object","properties":{"repoUrl":{"type":"string"}},"required":["repoUrl"],"additionalProperties":false,"description":"Data about the version control action that triggered environment creation"},"paused":{"type":"boolean","description":"Whether the preview environment has been paused.","example":false},"createdAt":{"type":"string","format":"date-time","description":"time of creation"},"updatedAt":{"type":"string","format":"date-time","description":"time of update"}},"required":["id","vcsData"],"additionalProperties":false},"description":"A list of currently available preview environments for the template."}},"required":["previewEnvironments"],"additionalProperties":false,"description":"Result data."},"pagination":{"type":"object","properties":{"hasNextPage":{"type":"boolean","description":"Is there another page of results available?","example":false},"cursor":{"type":"string","description":"The cursor to access the next page of results."},"count":{"type":"number","format":"float","description":"The number of results returned by this request.","example":1}},"required":["hasNextPage","count"],"additionalProperties":false,"description":"Data about the endpoint pagination."}},"required":["data","pagination"],"additionalProperties":false,"description":"Response object."}}},"tags":["Preview Blueprints","project"],"security":[],"x-nf-permission-required":"Project > PreviewBlueprints > General > Read","x-nf-team-scoped":true,"x-nf-cli-command":["list","blueprint-template-previews"]},"v1-projects--projectId--preview-blueprints--previewBlueprintId--previews--previewId--delete":{"operationId":"deleteProjectsPreviewBlueprintsPreviewblueprintidPreviewsPreviewid","summary":"Delete preview environment","description":"Delete a preview environment generated by a preview blueprint.","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"previewBlueprintId","type":"string","required":true,"description":"ID of the preview blueprint","example":"development","in":"path","schema":{"name":"previewBlueprintId","type":"string","required":true,"description":"ID of the preview blueprint","example":"development","in":"path"}},{"name":"previewId","type":"string","required":true,"description":"ID of the preview","example":"example-preview","in":"path","schema":{"name":"previewId","type":"string","required":true,"description":"ID of the preview","example":"example-preview","in":"path"}},{"name":"skipTeardown","type":"boolean","description":"If `true`, the teardown spec will not be run when deleting the preview environment.","default":false,"in":"query","schema":{"name":"skipTeardown","type":"boolean","description":"If `true`, the teardown spec will not be run when deleting the preview environment.","default":false,"in":"query"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Preview Blueprints","project"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"teardownArgumentOverrides":{"type":"object","properties":{},"description":"Argument overrides to pass to the teardown spec when deleting the preview environment."}},"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Project > PreviewBlueprints > Previews > Delete","x-nf-team-scoped":true,"x-nf-cli-command":["delete","blueprint-template-preview"]},"v1-projects--projectId--preview-blueprints--previewBlueprintId--previews--previewId--delete-team-scoped":{"operationId":"deleteProjectsPreviewBlueprintsPreviewblueprintidPreviewsPreviewid","summary":"Delete preview environment","description":"Delete a preview environment generated by a preview blueprint.","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"previewBlueprintId","type":"string","required":true,"description":"ID of the preview blueprint","example":"development","in":"path","schema":{"name":"previewBlueprintId","type":"string","required":true,"description":"ID of the preview blueprint","example":"development","in":"path"}},{"name":"previewId","type":"string","required":true,"description":"ID of the preview","example":"example-preview","in":"path","schema":{"name":"previewId","type":"string","required":true,"description":"ID of the preview","example":"example-preview","in":"path"}},{"name":"skipTeardown","type":"boolean","description":"If `true`, the teardown spec will not be run when deleting the preview environment.","default":false,"in":"query","schema":{"name":"skipTeardown","type":"boolean","description":"If `true`, the teardown spec will not be run when deleting the preview environment.","default":false,"in":"query"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Preview Blueprints","project"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"teardownArgumentOverrides":{"type":"object","properties":{},"description":"Argument overrides to pass to the teardown spec when deleting the preview environment."}},"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Project > PreviewBlueprints > Previews > Delete","x-nf-team-scoped":true,"x-nf-cli-command":["delete","blueprint-template-preview"]},"v1-projects--projectId--preview-blueprints--previewBlueprintId--previews--previewId--pause-post":{"operationId":"postProjectsPreviewBlueprintsPreviewblueprintidPreviewsPreviewidPause","summary":"Pause preview environment","description":"Pause a preview environment generated by a preview blueprint.","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"previewBlueprintId","type":"string","required":true,"description":"ID of the preview blueprint","example":"development","in":"path","schema":{"name":"previewBlueprintId","type":"string","required":true,"description":"ID of the preview blueprint","example":"development","in":"path"}},{"name":"previewId","type":"string","required":true,"description":"ID of the preview","example":"example-preview","in":"path","schema":{"name":"previewId","type":"string","required":true,"description":"ID of the preview","example":"example-preview","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Preview Blueprints","project"],"security":[],"x-nf-permission-required":"Project > PreviewBlueprints > Previews > Pause","x-nf-team-scoped":true,"x-nf-cli-command":["pause","blueprint-template-preview"]},"v1-projects--projectId--preview-blueprints--previewBlueprintId--previews--previewId--pause-post-team-scoped":{"operationId":"postProjectsPreviewBlueprintsPreviewblueprintidPreviewsPreviewidPause","summary":"Pause preview environment","description":"Pause a preview environment generated by a preview blueprint.","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"previewBlueprintId","type":"string","required":true,"description":"ID of the preview blueprint","example":"development","in":"path","schema":{"name":"previewBlueprintId","type":"string","required":true,"description":"ID of the preview blueprint","example":"development","in":"path"}},{"name":"previewId","type":"string","required":true,"description":"ID of the preview","example":"example-preview","in":"path","schema":{"name":"previewId","type":"string","required":true,"description":"ID of the preview","example":"example-preview","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Preview Blueprints","project"],"security":[],"x-nf-permission-required":"Project > PreviewBlueprints > Previews > Pause","x-nf-team-scoped":true,"x-nf-cli-command":["pause","blueprint-template-preview"]},"v1-projects--projectId--preview-blueprints--previewBlueprintId--previews--previewId--reset-post":{"operationId":"postProjectsPreviewBlueprintsPreviewblueprintidPreviewsPreviewidReset","summary":"Reset preview environment expiry","description":"Reset the expiry of a preview environment generated by a preview blueprint.","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"previewBlueprintId","type":"string","required":true,"description":"ID of the preview blueprint","example":"development","in":"path","schema":{"name":"previewBlueprintId","type":"string","required":true,"description":"ID of the preview blueprint","example":"development","in":"path"}},{"name":"previewId","type":"string","required":true,"description":"ID of the preview","example":"example-preview","in":"path","schema":{"name":"previewId","type":"string","required":true,"description":"ID of the preview","example":"example-preview","in":"path"}}],"responses":{"200":{"description":"Response indicating the updated expiry for the preview environment.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"expiryTime":{"type":"string","format":"date-time","description":"The time the preview will expire."}},"required":["expiryTime"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Preview Blueprints","project"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"lifetime":{"type":"integer","minimum":1,"description":"If provided, the preview environment will expire after this amount of time, in minutes."}},"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Project > PreviewBlueprints > General > Update","x-nf-team-scoped":true,"x-nf-cli-command":["reset","blueprint-template-preview"]},"v1-projects--projectId--preview-blueprints--previewBlueprintId--previews--previewId--reset-post-team-scoped":{"operationId":"postProjectsPreviewBlueprintsPreviewblueprintidPreviewsPreviewidReset","summary":"Reset preview environment expiry","description":"Reset the expiry of a preview environment generated by a preview blueprint.","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"previewBlueprintId","type":"string","required":true,"description":"ID of the preview blueprint","example":"development","in":"path","schema":{"name":"previewBlueprintId","type":"string","required":true,"description":"ID of the preview blueprint","example":"development","in":"path"}},{"name":"previewId","type":"string","required":true,"description":"ID of the preview","example":"example-preview","in":"path","schema":{"name":"previewId","type":"string","required":true,"description":"ID of the preview","example":"example-preview","in":"path"}}],"responses":{"200":{"description":"Response indicating the updated expiry for the preview environment.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"expiryTime":{"type":"string","format":"date-time","description":"The time the preview will expire."}},"required":["expiryTime"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Preview Blueprints","project"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"lifetime":{"type":"integer","minimum":1,"description":"If provided, the preview environment will expire after this amount of time, in minutes."}},"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Project > PreviewBlueprints > General > Update","x-nf-team-scoped":true,"x-nf-cli-command":["reset","blueprint-template-preview"]},"v1-projects--projectId--preview-blueprints--previewBlueprintId--previews--previewId--resume-post":{"operationId":"postProjectsPreviewBlueprintsPreviewblueprintidPreviewsPreviewidResume","summary":"Resume preview environment","description":"Resume a preview environment generated by a preview blueprint.","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"previewBlueprintId","type":"string","required":true,"description":"ID of the preview blueprint","example":"development","in":"path","schema":{"name":"previewBlueprintId","type":"string","required":true,"description":"ID of the preview blueprint","example":"development","in":"path"}},{"name":"previewId","type":"string","required":true,"description":"ID of the preview","example":"example-preview","in":"path","schema":{"name":"previewId","type":"string","required":true,"description":"ID of the preview","example":"example-preview","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Preview Blueprints","project"],"security":[],"x-nf-permission-required":"Project > PreviewBlueprints > Previews > Resume","x-nf-team-scoped":true,"x-nf-cli-command":["resume","blueprint-template-preview"]},"v1-projects--projectId--preview-blueprints--previewBlueprintId--previews--previewId--resume-post-team-scoped":{"operationId":"postProjectsPreviewBlueprintsPreviewblueprintidPreviewsPreviewidResume","summary":"Resume preview environment","description":"Resume a preview environment generated by a preview blueprint.","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"previewBlueprintId","type":"string","required":true,"description":"ID of the preview blueprint","example":"development","in":"path","schema":{"name":"previewBlueprintId","type":"string","required":true,"description":"ID of the preview blueprint","example":"development","in":"path"}},{"name":"previewId","type":"string","required":true,"description":"ID of the preview","example":"example-preview","in":"path","schema":{"name":"previewId","type":"string","required":true,"description":"ID of the preview","example":"example-preview","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Preview Blueprints","project"],"security":[],"x-nf-permission-required":"Project > PreviewBlueprints > Previews > Resume","x-nf-team-scoped":true,"x-nf-cli-command":["resume","blueprint-template-preview"]},"v1-projects--projectId--preview-blueprints--previewBlueprintId--runs-post":{"operationId":"postProjectsPreviewBlueprintsPreviewblueprintidRuns","summary":"Run preview blueprint","description":"Runs a given preview blueprint with given arguments. This endpoint can be used as part of a CI pipeline to automatically create a preview environment.","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"previewBlueprintId","type":"string","required":true,"description":"ID of the preview blueprint","example":"development","in":"path","schema":{"name":"previewBlueprintId","type":"string","required":true,"description":"ID of the preview blueprint","example":"development","in":"path"}}],"responses":{"200":{"description":"success"}},"tags":["Preview Blueprints","project"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The optional name of the preview blueprint run.","example":"Example Run"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"The optional description of the preview blueprint run.","example":"This is a description for the preview blueprint run."},"arguments":{"type":"object","properties":{},"description":"A set of arguments that can be referenced in a template using '${args.argumentName}'.","example":{"ARG_1":"value"}},"triggers":{"type":"object","properties":{},"additionalProperties":false,"description":"Values passed in as blueprint triggers. This should be an object where each key corresponds to a trigger ref in the template. The values of each of these keys should also be an object, where each key value pair provided will set the value for that key in the given trigger. For example, the value `{ 'example-trigger': { 'branch': 'devel' } }` would set the `branch` field to `devel` for the trigger with ref `example-trigger`.","example":{"example-trigger":{"branch":"devel"}}}},"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Project > PreviewBlueprints > Runs > Start","x-nf-team-scoped":true,"x-nf-cli-command":["run","preview-blueprint"]},"v1-projects--projectId--preview-blueprints--previewBlueprintId--runs-post-team-scoped":{"operationId":"postProjectsPreviewBlueprintsPreviewblueprintidRuns","summary":"Run preview blueprint","description":"Runs a given preview blueprint with given arguments. This endpoint can be used as part of a CI pipeline to automatically create a preview environment.","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"previewBlueprintId","type":"string","required":true,"description":"ID of the preview blueprint","example":"development","in":"path","schema":{"name":"previewBlueprintId","type":"string","required":true,"description":"ID of the preview blueprint","example":"development","in":"path"}}],"responses":{"200":{"description":"success"}},"tags":["Preview Blueprints","project"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The optional name of the preview blueprint run.","example":"Example Run"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"The optional description of the preview blueprint run.","example":"This is a description for the preview blueprint run."},"arguments":{"type":"object","properties":{},"description":"A set of arguments that can be referenced in a template using '${args.argumentName}'.","example":{"ARG_1":"value"}},"triggers":{"type":"object","properties":{},"additionalProperties":false,"description":"Values passed in as blueprint triggers. This should be an object where each key corresponds to a trigger ref in the template. The values of each of these keys should also be an object, where each key value pair provided will set the value for that key in the given trigger. For example, the value `{ 'example-trigger': { 'branch': 'devel' } }` would set the `branch` field to `devel` for the trigger with ref `example-trigger`.","example":{"example-trigger":{"branch":"devel"}}}},"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Project > PreviewBlueprints > Runs > Start","x-nf-team-scoped":true,"x-nf-cli-command":["run","preview-blueprint"]},"v1-projects--projectId--preview-blueprints--previewBlueprintId--runs-get":{"operationId":"getProjectsPreviewBlueprintsPreviewblueprintidRuns","summary":"List preview blueprint runs","description":"Lists runs of a previewBlueprint","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"previewBlueprintId","type":"string","required":true,"description":"ID of the preview blueprint","example":"development","in":"path","schema":{"name":"previewBlueprintId","type":"string","required":true,"description":"ID of the preview blueprint","example":"development","in":"path"}},{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query","schema":{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query"}},{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query","schema":{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query"}},{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query","schema":{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query"}},{"name":"status","type":"string","enum":["pending","running","success","failure","aborted","aborting","queued","unknown","skipped","waiting","retrying","async_wait","approval_wait"],"description":"Filter by template status.","example":"success","default":"pending","in":"query","schema":{"name":"status","type":"string","enum":["pending","running","success","failure","aborted","aborting","queued","unknown","skipped","waiting","retrying","async_wait","approval_wait"],"description":"Filter by template status.","example":"success","default":"pending","in":"query"}},{"name":"concluded","type":"boolean","description":"Filter by whether the template is concluded.","in":"query","schema":{"name":"concluded","type":"boolean","description":"Filter by whether the template is concluded.","in":"query"}}],"responses":{"200":{"description":"A list of runs for this preview blueprint.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"runs":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"ID of the preview blueprint run","example":"110ddb52-bdcd-482d-8ac2-05ba580afe2f"},"name":{"type":"string","description":"Optional name for the preview blueprint run","example":"Example run"},"description":{"type":"string","description":"Optional description for the preview blueprint run","example":"This is an example description"},"status":{"type":"string","enum":["pending","running","success","failure","aborted","aborting","queued","unknown","skipped","waiting","retrying","async_wait","approval_wait"],"description":"Status of the template run","example":"success","default":"pending"},"startedAt":{"type":"string","format":"date-time","description":"Timestamp the run started at.","example":"2021-01-01 12:01:00.000Z"},"concluded":{"type":"boolean","description":"Whether the run has concluded (aborted, success, failed)","example":true,"default":false},"concludedAt":{"type":"string","format":"date-time","description":"Timestamp the run concluded at.","example":"2021-01-01 12:10:00.000Z"},"createdAt":{"type":"string","format":"date-time","description":"Timestamp the run was created at.","example":"2021-01-01 12:00:00.000Z"},"updatedAt":{"type":"string","format":"date-time","description":"Timestamp the run was last updated at.","example":"2021-01-01 12:00:00.000Z"}},"required":["id","status","concluded","createdAt","updatedAt"],"additionalProperties":false},"description":"A preview blueprint run"}},"additionalProperties":false,"description":"Result data."},"pagination":{"type":"object","properties":{"hasNextPage":{"type":"boolean","description":"Is there another page of results available?","example":false},"cursor":{"type":"string","description":"The cursor to access the next page of results."},"count":{"type":"number","format":"float","description":"The number of results returned by this request.","example":1}},"required":["hasNextPage","count"],"additionalProperties":false,"description":"Data about the endpoint pagination."}},"required":["data","pagination"],"additionalProperties":false,"description":"Response object."}}},"tags":["Preview Blueprints","project"],"security":[],"x-nf-permission-required":"Project > PreviewBlueprints > Runs > Read","x-nf-team-scoped":true,"x-nf-cli-command":["list","preview-blueprint-runs"]},"v1-projects--projectId--preview-blueprints--previewBlueprintId--runs-get-team-scoped":{"operationId":"getProjectsPreviewBlueprintsPreviewblueprintidRuns","summary":"List preview blueprint runs","description":"Lists runs of a previewBlueprint","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"previewBlueprintId","type":"string","required":true,"description":"ID of the preview blueprint","example":"development","in":"path","schema":{"name":"previewBlueprintId","type":"string","required":true,"description":"ID of the preview blueprint","example":"development","in":"path"}},{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query","schema":{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query"}},{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query","schema":{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query"}},{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query","schema":{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query"}},{"name":"status","type":"string","enum":["pending","running","success","failure","aborted","aborting","queued","unknown","skipped","waiting","retrying","async_wait","approval_wait"],"description":"Filter by template status.","example":"success","default":"pending","in":"query","schema":{"name":"status","type":"string","enum":["pending","running","success","failure","aborted","aborting","queued","unknown","skipped","waiting","retrying","async_wait","approval_wait"],"description":"Filter by template status.","example":"success","default":"pending","in":"query"}},{"name":"concluded","type":"boolean","description":"Filter by whether the template is concluded.","in":"query","schema":{"name":"concluded","type":"boolean","description":"Filter by whether the template is concluded.","in":"query"}}],"responses":{"200":{"description":"A list of runs for this preview blueprint.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"runs":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"ID of the preview blueprint run","example":"110ddb52-bdcd-482d-8ac2-05ba580afe2f"},"name":{"type":"string","description":"Optional name for the preview blueprint run","example":"Example run"},"description":{"type":"string","description":"Optional description for the preview blueprint run","example":"This is an example description"},"status":{"type":"string","enum":["pending","running","success","failure","aborted","aborting","queued","unknown","skipped","waiting","retrying","async_wait","approval_wait"],"description":"Status of the template run","example":"success","default":"pending"},"startedAt":{"type":"string","format":"date-time","description":"Timestamp the run started at.","example":"2021-01-01 12:01:00.000Z"},"concluded":{"type":"boolean","description":"Whether the run has concluded (aborted, success, failed)","example":true,"default":false},"concludedAt":{"type":"string","format":"date-time","description":"Timestamp the run concluded at.","example":"2021-01-01 12:10:00.000Z"},"createdAt":{"type":"string","format":"date-time","description":"Timestamp the run was created at.","example":"2021-01-01 12:00:00.000Z"},"updatedAt":{"type":"string","format":"date-time","description":"Timestamp the run was last updated at.","example":"2021-01-01 12:00:00.000Z"}},"required":["id","status","concluded","createdAt","updatedAt"],"additionalProperties":false},"description":"A preview blueprint run"}},"additionalProperties":false,"description":"Result data."},"pagination":{"type":"object","properties":{"hasNextPage":{"type":"boolean","description":"Is there another page of results available?","example":false},"cursor":{"type":"string","description":"The cursor to access the next page of results."},"count":{"type":"number","format":"float","description":"The number of results returned by this request.","example":1}},"required":["hasNextPage","count"],"additionalProperties":false,"description":"Data about the endpoint pagination."}},"required":["data","pagination"],"additionalProperties":false,"description":"Response object."}}},"tags":["Preview Blueprints","project"],"security":[],"x-nf-permission-required":"Project > PreviewBlueprints > Runs > Read","x-nf-team-scoped":true,"x-nf-cli-command":["list","preview-blueprint-runs"]},"v1-projects--projectId--preview-blueprints--previewBlueprintId--runs--runId--get":{"operationId":"getProjectsPreviewBlueprintsPreviewblueprintidRunsRunid","summary":"Get preview blueprint run details","description":"Get information about the given preview blueprint run","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"previewBlueprintId","type":"string","required":true,"description":"ID of the preview blueprint","example":"development","in":"path","schema":{"name":"previewBlueprintId","type":"string","required":true,"description":"ID of the preview blueprint","example":"development","in":"path"}},{"name":"runId","type":"string","required":true,"description":"ID of the preview blueprint run","example":"development","in":"path","schema":{"name":"runId","type":"string","required":true,"description":"ID of the preview blueprint run","example":"development","in":"path"}}],"responses":{"200":{"description":"Details about a preview blueprint run.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"apiVersion":{"type":"string","enum":["v1.2"],"description":"The version of the Northflank API to run the template against.","example":"v1.2"},"arguments":{"type":"object","properties":{},"description":"A set of arguments that can be referenced in a template using '${args.argumentName}'."},"triggers":{"type":"array","items":{"type":"object","properties":{"ref":{"type":"string","description":"A reference that can be used to access the output of this trigger in the template."},"vcsService":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If vcsService is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string"},"repoUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo that will trigger the template.","example":"https://github.com/northflank-examples/remix-postgres-redis-demo"},"branchRestrictions":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z/*0-9%\\-.#_!'();,&=+]*$"},"default":[]},"prRestrictions":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z/*0-9%\\-.#_!'();,&=+]*$"},"default":[]},"pathIgnoreRules":{"type":"array","items":{"type":"string","maxLength":260,"description":"A path ignore rule, following `.gitignore` syntax. For example, `*.md` will ignore all files ending with `.md`.","example":"README.md"},"maxItems":200,"description":"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.","default":[]},"ciIgnoreFlags":{"type":"array","items":{"type":"string","maxLength":72,"description":"A commit ignore flag.","example":"[skip ci]"},"maxItems":200,"description":"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]\"]`","example":["[skip ci]","[ci skip]","[no ci]","[skip nf]","[nf skip]","[northflank skip]","[skip northflank]"],"default":[]},"ciIgnoreFlagsEnabled":{"type":"boolean","default":false},"isAllowList":{"type":"boolean","default":false},"ignoreDrafts":{"type":"boolean","description":"If `true`, draft pull requests from this repo will not trigger the template.","default":false}},"required":["vcsService","repoUrl"],"additionalProperties":false},"default":[]},"options":{"type":"object","properties":{"concurrencyPolicy":{"type":"string","enum":["allow","queue","forbid","latest","replace"],"description":"Defines the concurrency behaviour of the template with respect to parallel runs.","example":"allow"},"paused":{"type":"boolean","description":"If `true`, the template will not run when triggered by git.","example":false}},"additionalProperties":false,"description":"Options regarding how the template is run."},"gitops":{"type":"object","properties":{"vcsService":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string","description":"Legacy key. Please used accountLogin instead."},"repoUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo to sync the file with.","example":"https://github.com/northflank-examples/remix-postgres-redis-demo"},"branch":{"type":"string","description":"The name of the branch to use.","example":"main"},"filePath":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]+$","description":"The file path in the repository. If using an existing file, it should be in JSON format.","examples":["/Dockerfile","northflank.json"]}},"required":["vcsService","repoUrl","branch","filePath"],"additionalProperties":false},"$schema":{"type":"string"},"spec":{"$ref":"#/components/schemas/V1ReleaseFlowTemplateNodeRunSchema"},"refs":{"type":"object","properties":{},"additionalProperties":false},"id":{"type":"string","description":"ID of the preview blueprint run","example":"110ddb52-bdcd-482d-8ac2-05ba580afe2f"},"name":{"type":"string","description":"Optional name for the preview blueprint run","example":"Example run"},"description":{"type":"string","description":"Optional description for the preview blueprint run","example":"This is an example description"},"status":{"type":"string","enum":["pending","running","success","failure","aborted","aborting","queued","unknown","skipped","waiting","retrying","async_wait","approval_wait"],"description":"Status of the template run","example":"success","default":"pending"},"startedAt":{"type":"string","format":"date-time","description":"Timestamp the run started at.","example":"2021-01-01 12:01:00.000Z"},"concluded":{"type":"boolean","description":"Whether the run has concluded (aborted, success, failed)","example":true,"default":false},"concludedAt":{"type":"string","format":"date-time","description":"Timestamp the run concluded at.","example":"2021-01-01 12:10:00.000Z"},"createdAt":{"type":"string","format":"date-time","description":"Timestamp the run was created at.","example":"2021-01-01 12:00:00.000Z"},"updatedAt":{"type":"string","format":"date-time","description":"Timestamp the run was last updated at.","example":"2021-01-01 12:00:00.000Z"}},"required":["apiVersion","spec","id","status","concluded","createdAt","updatedAt"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Preview Blueprints","project"],"security":[],"x-nf-permission-required":"Project > PreviewBlueprints > Runs > Read","x-nf-team-scoped":true,"x-nf-cli-command":["get","preview-blueprint-run"]},"v1-projects--projectId--preview-blueprints--previewBlueprintId--runs--runId--get-team-scoped":{"operationId":"getProjectsPreviewBlueprintsPreviewblueprintidRunsRunid","summary":"Get preview blueprint run details","description":"Get information about the given preview blueprint run","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"previewBlueprintId","type":"string","required":true,"description":"ID of the preview blueprint","example":"development","in":"path","schema":{"name":"previewBlueprintId","type":"string","required":true,"description":"ID of the preview blueprint","example":"development","in":"path"}},{"name":"runId","type":"string","required":true,"description":"ID of the preview blueprint run","example":"development","in":"path","schema":{"name":"runId","type":"string","required":true,"description":"ID of the preview blueprint run","example":"development","in":"path"}}],"responses":{"200":{"description":"Details about a preview blueprint run.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"apiVersion":{"type":"string","enum":["v1.2"],"description":"The version of the Northflank API to run the template against.","example":"v1.2"},"arguments":{"type":"object","properties":{},"description":"A set of arguments that can be referenced in a template using '${args.argumentName}'."},"triggers":{"type":"array","items":{"type":"object","properties":{"ref":{"type":"string","description":"A reference that can be used to access the output of this trigger in the template."},"vcsService":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If vcsService is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string"},"repoUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo that will trigger the template.","example":"https://github.com/northflank-examples/remix-postgres-redis-demo"},"branchRestrictions":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z/*0-9%\\-.#_!'();,&=+]*$"},"default":[]},"prRestrictions":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z/*0-9%\\-.#_!'();,&=+]*$"},"default":[]},"pathIgnoreRules":{"type":"array","items":{"type":"string","maxLength":260,"description":"A path ignore rule, following `.gitignore` syntax. For example, `*.md` will ignore all files ending with `.md`.","example":"README.md"},"maxItems":200,"description":"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.","default":[]},"ciIgnoreFlags":{"type":"array","items":{"type":"string","maxLength":72,"description":"A commit ignore flag.","example":"[skip ci]"},"maxItems":200,"description":"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]\"]`","example":["[skip ci]","[ci skip]","[no ci]","[skip nf]","[nf skip]","[northflank skip]","[skip northflank]"],"default":[]},"ciIgnoreFlagsEnabled":{"type":"boolean","default":false},"isAllowList":{"type":"boolean","default":false},"ignoreDrafts":{"type":"boolean","description":"If `true`, draft pull requests from this repo will not trigger the template.","default":false}},"required":["vcsService","repoUrl"],"additionalProperties":false},"default":[]},"options":{"type":"object","properties":{"concurrencyPolicy":{"type":"string","enum":["allow","queue","forbid","latest","replace"],"description":"Defines the concurrency behaviour of the template with respect to parallel runs.","example":"allow"},"paused":{"type":"boolean","description":"If `true`, the template will not run when triggered by git.","example":false}},"additionalProperties":false,"description":"Options regarding how the template is run."},"gitops":{"type":"object","properties":{"vcsService":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string","description":"Legacy key. Please used accountLogin instead."},"repoUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo to sync the file with.","example":"https://github.com/northflank-examples/remix-postgres-redis-demo"},"branch":{"type":"string","description":"The name of the branch to use.","example":"main"},"filePath":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]+$","description":"The file path in the repository. If using an existing file, it should be in JSON format.","examples":["/Dockerfile","northflank.json"]}},"required":["vcsService","repoUrl","branch","filePath"],"additionalProperties":false},"$schema":{"type":"string"},"spec":{"$ref":"#/components/schemas/V1ReleaseFlowTemplateNodeRunSchema"},"refs":{"type":"object","properties":{},"additionalProperties":false},"id":{"type":"string","description":"ID of the preview blueprint run","example":"110ddb52-bdcd-482d-8ac2-05ba580afe2f"},"name":{"type":"string","description":"Optional name for the preview blueprint run","example":"Example run"},"description":{"type":"string","description":"Optional description for the preview blueprint run","example":"This is an example description"},"status":{"type":"string","enum":["pending","running","success","failure","aborted","aborting","queued","unknown","skipped","waiting","retrying","async_wait","approval_wait"],"description":"Status of the template run","example":"success","default":"pending"},"startedAt":{"type":"string","format":"date-time","description":"Timestamp the run started at.","example":"2021-01-01 12:01:00.000Z"},"concluded":{"type":"boolean","description":"Whether the run has concluded (aborted, success, failed)","example":true,"default":false},"concludedAt":{"type":"string","format":"date-time","description":"Timestamp the run concluded at.","example":"2021-01-01 12:10:00.000Z"},"createdAt":{"type":"string","format":"date-time","description":"Timestamp the run was created at.","example":"2021-01-01 12:00:00.000Z"},"updatedAt":{"type":"string","format":"date-time","description":"Timestamp the run was last updated at.","example":"2021-01-01 12:00:00.000Z"}},"required":["apiVersion","spec","id","status","concluded","createdAt","updatedAt"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Preview Blueprints","project"],"security":[],"x-nf-permission-required":"Project > PreviewBlueprints > Runs > Read","x-nf-team-scoped":true,"x-nf-cli-command":["get","preview-blueprint-run"]},"v1-projects--projectId--preview-blueprints--previewBlueprintId--runs--runId--abort-post":{"operationId":"postProjectsPreviewBlueprintsPreviewblueprintidRunsRunidAbort","summary":"Abort preview blueprint run","description":"Abort the given preview blueprint run","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"previewBlueprintId","type":"string","required":true,"description":"ID of the preview blueprint","example":"development","in":"path","schema":{"name":"previewBlueprintId","type":"string","required":true,"description":"ID of the preview blueprint","example":"development","in":"path"}},{"name":"runId","type":"string","required":true,"description":"ID of the preview blueprint run","example":"development","in":"path","schema":{"name":"runId","type":"string","required":true,"description":"ID of the preview blueprint run","example":"development","in":"path"}}],"responses":{"200":{"description":"Details about the aborting run.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"apiVersion":{"type":"string","enum":["v1.2"],"description":"The version of the Northflank API to run the template against.","example":"v1.2"},"arguments":{"type":"object","properties":{},"description":"A set of arguments that can be referenced in a template using '${args.argumentName}'."},"triggers":{"type":"array","items":{"type":"object","properties":{"ref":{"type":"string","description":"A reference that can be used to access the output of this trigger in the template."},"vcsService":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If vcsService is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string"},"repoUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo that will trigger the template.","example":"https://github.com/northflank-examples/remix-postgres-redis-demo"},"branchRestrictions":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z/*0-9%\\-.#_!'();,&=+]*$"},"default":[]},"prRestrictions":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z/*0-9%\\-.#_!'();,&=+]*$"},"default":[]},"pathIgnoreRules":{"type":"array","items":{"type":"string","maxLength":260,"description":"A path ignore rule, following `.gitignore` syntax. For example, `*.md` will ignore all files ending with `.md`.","example":"README.md"},"maxItems":200,"description":"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.","default":[]},"ciIgnoreFlags":{"type":"array","items":{"type":"string","maxLength":72,"description":"A commit ignore flag.","example":"[skip ci]"},"maxItems":200,"description":"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]\"]`","example":["[skip ci]","[ci skip]","[no ci]","[skip nf]","[nf skip]","[northflank skip]","[skip northflank]"],"default":[]},"ciIgnoreFlagsEnabled":{"type":"boolean","default":false},"isAllowList":{"type":"boolean","default":false},"ignoreDrafts":{"type":"boolean","description":"If `true`, draft pull requests from this repo will not trigger the template.","default":false}},"required":["vcsService","repoUrl"],"additionalProperties":false},"default":[]},"options":{"type":"object","properties":{"concurrencyPolicy":{"type":"string","enum":["allow","queue","forbid","latest","replace"],"description":"Defines the concurrency behaviour of the template with respect to parallel runs.","example":"allow"},"paused":{"type":"boolean","description":"If `true`, the template will not run when triggered by git.","example":false}},"additionalProperties":false,"description":"Options regarding how the template is run."},"gitops":{"type":"object","properties":{"vcsService":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string","description":"Legacy key. Please used accountLogin instead."},"repoUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo to sync the file with.","example":"https://github.com/northflank-examples/remix-postgres-redis-demo"},"branch":{"type":"string","description":"The name of the branch to use.","example":"main"},"filePath":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]+$","description":"The file path in the repository. If using an existing file, it should be in JSON format.","examples":["/Dockerfile","northflank.json"]}},"required":["vcsService","repoUrl","branch","filePath"],"additionalProperties":false},"$schema":{"type":"string"},"spec":{"$ref":"#/components/schemas/V1ReleaseFlowTemplateNodeRunSchema"},"refs":{"type":"object","properties":{},"additionalProperties":false},"id":{"type":"string","description":"ID of the preview blueprint run","example":"110ddb52-bdcd-482d-8ac2-05ba580afe2f"},"name":{"type":"string","description":"Optional name for the preview blueprint run","example":"Example run"},"description":{"type":"string","description":"Optional description for the preview blueprint run","example":"This is an example description"},"status":{"type":"string","enum":["pending","running","success","failure","aborted","aborting","queued","unknown","skipped","waiting","retrying","async_wait","approval_wait"],"description":"Status of the template run","example":"success","default":"pending"},"startedAt":{"type":"string","format":"date-time","description":"Timestamp the run started at.","example":"2021-01-01 12:01:00.000Z"},"concluded":{"type":"boolean","description":"Whether the run has concluded (aborted, success, failed)","example":true,"default":false},"concludedAt":{"type":"string","format":"date-time","description":"Timestamp the run concluded at.","example":"2021-01-01 12:10:00.000Z"},"createdAt":{"type":"string","format":"date-time","description":"Timestamp the run was created at.","example":"2021-01-01 12:00:00.000Z"},"updatedAt":{"type":"string","format":"date-time","description":"Timestamp the run was last updated at.","example":"2021-01-01 12:00:00.000Z"}},"required":["apiVersion","spec","id","status","concluded","createdAt","updatedAt"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Preview Blueprints","project"],"security":[],"x-nf-permission-required":"Project > PreviewBlueprints > Runs > Abort","x-nf-team-scoped":true,"x-nf-cli-command":["abort","preview-blueprint-run"]},"v1-projects--projectId--preview-blueprints--previewBlueprintId--runs--runId--abort-post-team-scoped":{"operationId":"postProjectsPreviewBlueprintsPreviewblueprintidRunsRunidAbort","summary":"Abort preview blueprint run","description":"Abort the given preview blueprint run","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"previewBlueprintId","type":"string","required":true,"description":"ID of the preview blueprint","example":"development","in":"path","schema":{"name":"previewBlueprintId","type":"string","required":true,"description":"ID of the preview blueprint","example":"development","in":"path"}},{"name":"runId","type":"string","required":true,"description":"ID of the preview blueprint run","example":"development","in":"path","schema":{"name":"runId","type":"string","required":true,"description":"ID of the preview blueprint run","example":"development","in":"path"}}],"responses":{"200":{"description":"Details about the aborting run.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"apiVersion":{"type":"string","enum":["v1.2"],"description":"The version of the Northflank API to run the template against.","example":"v1.2"},"arguments":{"type":"object","properties":{},"description":"A set of arguments that can be referenced in a template using '${args.argumentName}'."},"triggers":{"type":"array","items":{"type":"object","properties":{"ref":{"type":"string","description":"A reference that can be used to access the output of this trigger in the template."},"vcsService":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If vcsService is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string"},"repoUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo that will trigger the template.","example":"https://github.com/northflank-examples/remix-postgres-redis-demo"},"branchRestrictions":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z/*0-9%\\-.#_!'();,&=+]*$"},"default":[]},"prRestrictions":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z/*0-9%\\-.#_!'();,&=+]*$"},"default":[]},"pathIgnoreRules":{"type":"array","items":{"type":"string","maxLength":260,"description":"A path ignore rule, following `.gitignore` syntax. For example, `*.md` will ignore all files ending with `.md`.","example":"README.md"},"maxItems":200,"description":"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.","default":[]},"ciIgnoreFlags":{"type":"array","items":{"type":"string","maxLength":72,"description":"A commit ignore flag.","example":"[skip ci]"},"maxItems":200,"description":"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]\"]`","example":["[skip ci]","[ci skip]","[no ci]","[skip nf]","[nf skip]","[northflank skip]","[skip northflank]"],"default":[]},"ciIgnoreFlagsEnabled":{"type":"boolean","default":false},"isAllowList":{"type":"boolean","default":false},"ignoreDrafts":{"type":"boolean","description":"If `true`, draft pull requests from this repo will not trigger the template.","default":false}},"required":["vcsService","repoUrl"],"additionalProperties":false},"default":[]},"options":{"type":"object","properties":{"concurrencyPolicy":{"type":"string","enum":["allow","queue","forbid","latest","replace"],"description":"Defines the concurrency behaviour of the template with respect to parallel runs.","example":"allow"},"paused":{"type":"boolean","description":"If `true`, the template will not run when triggered by git.","example":false}},"additionalProperties":false,"description":"Options regarding how the template is run."},"gitops":{"type":"object","properties":{"vcsService":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string","description":"Legacy key. Please used accountLogin instead."},"repoUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo to sync the file with.","example":"https://github.com/northflank-examples/remix-postgres-redis-demo"},"branch":{"type":"string","description":"The name of the branch to use.","example":"main"},"filePath":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]+$","description":"The file path in the repository. If using an existing file, it should be in JSON format.","examples":["/Dockerfile","northflank.json"]}},"required":["vcsService","repoUrl","branch","filePath"],"additionalProperties":false},"$schema":{"type":"string"},"spec":{"$ref":"#/components/schemas/V1ReleaseFlowTemplateNodeRunSchema"},"refs":{"type":"object","properties":{},"additionalProperties":false},"id":{"type":"string","description":"ID of the preview blueprint run","example":"110ddb52-bdcd-482d-8ac2-05ba580afe2f"},"name":{"type":"string","description":"Optional name for the preview blueprint run","example":"Example run"},"description":{"type":"string","description":"Optional description for the preview blueprint run","example":"This is an example description"},"status":{"type":"string","enum":["pending","running","success","failure","aborted","aborting","queued","unknown","skipped","waiting","retrying","async_wait","approval_wait"],"description":"Status of the template run","example":"success","default":"pending"},"startedAt":{"type":"string","format":"date-time","description":"Timestamp the run started at.","example":"2021-01-01 12:01:00.000Z"},"concluded":{"type":"boolean","description":"Whether the run has concluded (aborted, success, failed)","example":true,"default":false},"concludedAt":{"type":"string","format":"date-time","description":"Timestamp the run concluded at.","example":"2021-01-01 12:10:00.000Z"},"createdAt":{"type":"string","format":"date-time","description":"Timestamp the run was created at.","example":"2021-01-01 12:00:00.000Z"},"updatedAt":{"type":"string","format":"date-time","description":"Timestamp the run was last updated at.","example":"2021-01-01 12:00:00.000Z"}},"required":["apiVersion","spec","id","status","concluded","createdAt","updatedAt"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Preview Blueprints","project"],"security":[],"x-nf-permission-required":"Project > PreviewBlueprints > Runs > Abort","x-nf-team-scoped":true,"x-nf-cli-command":["abort","preview-blueprint-run"]},"v1-projects--projectId--secrets-get":{"operationId":"getProjectsSecrets","summary":"List project secrets","description":"Gets a list of project secrets belonging to the project","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query","schema":{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query"}},{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query","schema":{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query"}},{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query","schema":{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query"}}],"responses":{"200":{"description":"The list of secrets.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"secrets":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Identifier for the secret group","example":"example-secret-group"},"projectId":{"type":"string","description":"ID of the project that the secret group belongs to","example":"default-project"},"name":{"type":"string","description":"Secret group name","example":"Example secret group"},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"description":{"type":"string","description":"A short description of the secret group","example":"This is the secret group description"},"type":{"type":"string","enum":["secret","config"],"description":"The permission type of the secret group.","example":"secret"},"secretType":{"type":"string","enum":["environment-arguments","environment","arguments"],"description":"The type of the secret group","example":"environment"},"priority":{"type":"integer","minimum":0,"maximum":100,"description":"The priority with which different secret groups will be merged","example":10},"restrictions":{"type":"object","properties":{"restricted":{"type":"boolean","description":"Whether the secret is restricted to specific resources. If this is `true`, only resources listed in `nfObjects` or with a tag listed in `tags` will have access to these secrets. Otherwise, all resources in the project will be able to access it.","example":true,"default":false},"nfObjects":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"ID of the entity the secret is restricted to.","example":"example-service"},"type":{"type":"string","enum":["service","job"],"description":"Type of the entity the secret is restricted to.","example":"service"}},"required":["id","type"],"additionalProperties":false},"uniqueItems":true,"description":"List of Northflank services & jobs the secret is restricted to","default":[]},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"uniqueItems":true,"description":"List of tags the secret is restricted to.","default":[]},"tagMatchCondition":{"type":"string","enum":["and","or"],"description":"If all or any of the tags must be present on the target for it to match the condition.","example":"or"}},"additionalProperties":false,"description":"Restriction settings of the secret"}},"required":["id","projectId","name","tags","type","secretType","priority","restrictions"],"additionalProperties":false,"description":"A secret group object"},"description":"An array of secret groups"}},"required":["secrets"],"additionalProperties":false,"description":"Result data."},"pagination":{"type":"object","properties":{"hasNextPage":{"type":"boolean","description":"Is there another page of results available?","example":false},"cursor":{"type":"string","description":"The cursor to access the next page of results."},"count":{"type":"number","format":"float","description":"The number of results returned by this request.","example":1}},"required":["hasNextPage","count"],"additionalProperties":false,"description":"Data about the endpoint pagination."}},"required":["data","pagination"],"additionalProperties":false,"description":"Response object."}}},"tags":["Secrets","project"],"security":[],"x-nf-team-scoped":true,"x-nf-cli-command":["list","secrets"]},"v1-projects--projectId--secrets-get-team-scoped":{"operationId":"getProjectsSecrets","summary":"List project secrets","description":"Gets a list of project secrets belonging to the project","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query","schema":{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query"}},{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query","schema":{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query"}},{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query","schema":{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query"}}],"responses":{"200":{"description":"The list of secrets.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"secrets":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Identifier for the secret group","example":"example-secret-group"},"projectId":{"type":"string","description":"ID of the project that the secret group belongs to","example":"default-project"},"name":{"type":"string","description":"Secret group name","example":"Example secret group"},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"description":{"type":"string","description":"A short description of the secret group","example":"This is the secret group description"},"type":{"type":"string","enum":["secret","config"],"description":"The permission type of the secret group.","example":"secret"},"secretType":{"type":"string","enum":["environment-arguments","environment","arguments"],"description":"The type of the secret group","example":"environment"},"priority":{"type":"integer","minimum":0,"maximum":100,"description":"The priority with which different secret groups will be merged","example":10},"restrictions":{"type":"object","properties":{"restricted":{"type":"boolean","description":"Whether the secret is restricted to specific resources. If this is `true`, only resources listed in `nfObjects` or with a tag listed in `tags` will have access to these secrets. Otherwise, all resources in the project will be able to access it.","example":true,"default":false},"nfObjects":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"ID of the entity the secret is restricted to.","example":"example-service"},"type":{"type":"string","enum":["service","job"],"description":"Type of the entity the secret is restricted to.","example":"service"}},"required":["id","type"],"additionalProperties":false},"uniqueItems":true,"description":"List of Northflank services & jobs the secret is restricted to","default":[]},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"uniqueItems":true,"description":"List of tags the secret is restricted to.","default":[]},"tagMatchCondition":{"type":"string","enum":["and","or"],"description":"If all or any of the tags must be present on the target for it to match the condition.","example":"or"}},"additionalProperties":false,"description":"Restriction settings of the secret"}},"required":["id","projectId","name","tags","type","secretType","priority","restrictions"],"additionalProperties":false,"description":"A secret group object"},"description":"An array of secret groups"}},"required":["secrets"],"additionalProperties":false,"description":"Result data."},"pagination":{"type":"object","properties":{"hasNextPage":{"type":"boolean","description":"Is there another page of results available?","example":false},"cursor":{"type":"string","description":"The cursor to access the next page of results."},"count":{"type":"number","format":"float","description":"The number of results returned by this request.","example":1}},"required":["hasNextPage","count"],"additionalProperties":false,"description":"Data about the endpoint pagination."}},"required":["data","pagination"],"additionalProperties":false,"description":"Response object."}}},"tags":["Secrets","project"],"security":[],"x-nf-team-scoped":true,"x-nf-cli-command":["list","secrets"]},"v1-projects--projectId--secrets-post":{"operationId":"postProjectsSecrets","summary":"Create project secret","description":"Creates a project secret with the specified payload","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}}],"responses":{"200":{"description":"Details about the newly created secret.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The name of the secret.","example":"Example Secret"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"A description of the secret.","example":"A description"},"stageId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"type":{"type":"string","enum":["secret","config"],"description":"The hierarchy type of the created secret.","example":"secret"},"secretType":{"type":"string","enum":["environment-arguments","environment","arguments"],"description":"The injection scope of the created secret","example":"environment"},"priority":{"type":"integer","minimum":0,"maximum":100,"description":"The priority with which different secrets will be merged.","example":10},"restrictions":{"type":"object","properties":{"restricted":{"type":"boolean","description":"Whether the secret is restricted to specific resources. If this is `true`, only resources listed in `nfObjects` or with a tag listed in `tags` will have access to these secrets. Otherwise, all resources in the project will be able to access it.","example":true,"default":false},"nfObjects":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"ID of the entity the secret is restricted to.","example":"example-service"},"type":{"type":"string","enum":["service","job"],"description":"Type of the entity the secret is restricted to.","example":"service"}},"required":["id","type"],"additionalProperties":false},"uniqueItems":true,"description":"List of Northflank services & jobs the secret is restricted to","default":[]},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"uniqueItems":true,"description":"List of tags the secret is restricted to.","default":[]},"tagMatchCondition":{"type":"string","enum":["and","or"],"description":"If all or any of the tags must be present on the target for it to match the condition.","example":"or"}},"additionalProperties":false,"description":"Restriction settings of the secret"},"addonDependencies":{"type":"array","items":{"type":"object","properties":{"addonId":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The id of the addon to link.","example":"example-addon"},"keys":{"type":"array","items":{"type":"object","properties":{"keyName":{"type":"string","pattern":"[a-zA-Z]+","description":"The name of the key to link.","example":"USERNAME"},"aliases":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9_./-]*$","description":"The name of the alias. Keys may only contain letters, numbers, hyphens, forward slashes and dots.","example":"MONGO_USERNAME"},"uniqueItems":true,"description":"An array of aliases for the key.","default":[]}},"required":["keyName"],"additionalProperties":false,"description":"Details about the key to link to this secret group."},"uniqueItems":true,"description":"An array of objects containing details about the keys to link to this secret group.","default":[]}},"required":["addonId","keys"],"additionalProperties":false,"description":"An object containing data about the addon to link."},"uniqueItems":true,"description":"An array of addons to link to this secret group."},"externalAddonDependencies":{"type":"array","items":{"type":"object","properties":{"addonId":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The id of the external addon to link.","example":"example-addon"},"keys":{"type":"array","items":{"type":"object","properties":{"keyName":{"type":"string","pattern":"[a-zA-Z]+","description":"The name of the key to link.","example":"USERNAME"},"aliases":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9_./-]*$","description":"The name of the alias. Keys may only contain letters, numbers, hyphens, forward slashes and dots.","example":"MONGO_USERNAME"},"uniqueItems":true,"description":"An array of aliases for the key.","default":[]}},"required":["keyName"],"additionalProperties":false,"description":"Details about the key to link to this secret group."},"uniqueItems":true,"description":"An array of objects containing details about the keys to link to this secret group.","default":[]}},"required":["addonId","keys"],"additionalProperties":false,"description":"An object containing data about the external addon to link."},"uniqueItems":true,"description":"An array of external addons to link to this secret group."},"secrets":{"type":"object","properties":{"variables":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Secret variables as JSON object, encrypted at rest. Keys may only contain letters, numbers, hyphens, forward slashes and dots.","example":{"NODE_ENV":"production","MONGO_DB":"some_connection_string"}},"files":{"type":"object","properties":{},"description":"Secret files as JSON object, encrypted at rest. File path must be absolute","example":{"/dir/fileName":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"dockerSecretMounts":{"type":"object","properties":{},"description":"Docker secret mount contents as JSON object, encrypted at rest. Must be a valid Docker secret mount identifier","example":{"example-secret-mount_1":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}}},"additionalProperties":false},"id":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"Identifier for the secret group","example":"example-secret-group"},"createdAt":{"type":"string","format":"date-time","description":"time of creation"},"updatedAt":{"type":"string","format":"date-time","description":"time of update"}},"required":["name","secretType","priority","id"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}},"409":{"description":"There is already a secret with the same derived identifier"}},"tags":["Secrets","project"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The name of the secret.","example":"Example Secret"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"A description of the secret.","example":"A description"},"stageId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"type":{"type":"string","enum":["secret","config"],"description":"The hierarchy type of the created secret.","example":"secret"},"secretType":{"type":"string","enum":["environment-arguments","environment","arguments"],"description":"The injection scope of the created secret","example":"environment"},"priority":{"type":"integer","minimum":0,"maximum":100,"description":"The priority with which different secrets will be merged.","example":10},"restrictions":{"type":"object","properties":{"restricted":{"type":"boolean","description":"Whether the secret is restricted to specific resources. If this is `true`, only resources listed in `nfObjects` or with a tag listed in `tags` will have access to these secrets. Otherwise, all resources in the project will be able to access it.","example":true,"default":false},"nfObjects":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"ID of the entity the secret is restricted to.","example":"example-service"},"type":{"type":"string","enum":["service","job"],"description":"Type of the entity the secret is restricted to.","example":"service"}},"required":["id","type"],"additionalProperties":false},"uniqueItems":true,"description":"List of Northflank services & jobs the secret is restricted to","default":[]},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"uniqueItems":true,"description":"List of tags the secret is restricted to.","default":[]},"tagMatchCondition":{"type":"string","enum":["and","or"],"description":"If all or any of the tags must be present on the target for it to match the condition.","example":"or"}},"additionalProperties":false,"description":"Restriction settings of the secret"},"addonDependencies":{"type":"array","items":{"type":"object","properties":{"addonId":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The id of the addon to link.","example":"example-addon"},"keys":{"type":"array","items":{"type":"object","properties":{"keyName":{"type":"string","pattern":"[a-zA-Z]+","description":"The name of the key to link.","example":"USERNAME"},"aliases":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9_./-]*$","description":"The name of the alias. Keys may only contain letters, numbers, hyphens, forward slashes and dots.","example":"MONGO_USERNAME"},"uniqueItems":true,"description":"An array of aliases for the key.","default":[]}},"required":["keyName"],"additionalProperties":false,"description":"Details about the key to link to this secret group."},"uniqueItems":true,"description":"An array of objects containing details about the keys to link to this secret group.","default":[]}},"required":["addonId","keys"],"additionalProperties":false,"description":"An object containing data about the addon to link."},"uniqueItems":true,"description":"An array of addons to link to this secret group."},"externalAddonDependencies":{"type":"array","items":{"type":"object","properties":{"addonId":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The id of the external addon to link.","example":"example-addon"},"keys":{"type":"array","items":{"type":"object","properties":{"keyName":{"type":"string","pattern":"[a-zA-Z]+","description":"The name of the key to link.","example":"USERNAME"},"aliases":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9_./-]*$","description":"The name of the alias. Keys may only contain letters, numbers, hyphens, forward slashes and dots.","example":"MONGO_USERNAME"},"uniqueItems":true,"description":"An array of aliases for the key.","default":[]}},"required":["keyName"],"additionalProperties":false,"description":"Details about the key to link to this secret group."},"uniqueItems":true,"description":"An array of objects containing details about the keys to link to this secret group.","default":[]}},"required":["addonId","keys"],"additionalProperties":false,"description":"An object containing data about the external addon to link."},"uniqueItems":true,"description":"An array of external addons to link to this secret group."},"secrets":{"type":"object","properties":{"variables":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Secret variables as JSON object, encrypted at rest. Keys may only contain letters, numbers, hyphens, forward slashes and dots.","example":{"NODE_ENV":"production","MONGO_DB":"some_connection_string"}},"files":{"type":"object","properties":{},"description":"Secret files as JSON object, encrypted at rest. File path must be absolute","example":{"/dir/fileName":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"dockerSecretMounts":{"type":"object","properties":{},"description":"Docker secret mount contents as JSON object, encrypted at rest. Must be a valid Docker secret mount identifier","example":{"example-secret-mount_1":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}}},"additionalProperties":false}},"required":["name","secretType","priority"],"additionalProperties":false}}},"required":true},"x-nf-team-scoped":true,"x-nf-cli-command":["create","secret"]},"v1-projects--projectId--secrets-post-team-scoped":{"operationId":"postProjectsSecrets","summary":"Create project secret","description":"Creates a project secret with the specified payload","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}}],"responses":{"200":{"description":"Details about the newly created secret.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The name of the secret.","example":"Example Secret"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"A description of the secret.","example":"A description"},"stageId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"type":{"type":"string","enum":["secret","config"],"description":"The hierarchy type of the created secret.","example":"secret"},"secretType":{"type":"string","enum":["environment-arguments","environment","arguments"],"description":"The injection scope of the created secret","example":"environment"},"priority":{"type":"integer","minimum":0,"maximum":100,"description":"The priority with which different secrets will be merged.","example":10},"restrictions":{"type":"object","properties":{"restricted":{"type":"boolean","description":"Whether the secret is restricted to specific resources. If this is `true`, only resources listed in `nfObjects` or with a tag listed in `tags` will have access to these secrets. Otherwise, all resources in the project will be able to access it.","example":true,"default":false},"nfObjects":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"ID of the entity the secret is restricted to.","example":"example-service"},"type":{"type":"string","enum":["service","job"],"description":"Type of the entity the secret is restricted to.","example":"service"}},"required":["id","type"],"additionalProperties":false},"uniqueItems":true,"description":"List of Northflank services & jobs the secret is restricted to","default":[]},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"uniqueItems":true,"description":"List of tags the secret is restricted to.","default":[]},"tagMatchCondition":{"type":"string","enum":["and","or"],"description":"If all or any of the tags must be present on the target for it to match the condition.","example":"or"}},"additionalProperties":false,"description":"Restriction settings of the secret"},"addonDependencies":{"type":"array","items":{"type":"object","properties":{"addonId":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The id of the addon to link.","example":"example-addon"},"keys":{"type":"array","items":{"type":"object","properties":{"keyName":{"type":"string","pattern":"[a-zA-Z]+","description":"The name of the key to link.","example":"USERNAME"},"aliases":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9_./-]*$","description":"The name of the alias. Keys may only contain letters, numbers, hyphens, forward slashes and dots.","example":"MONGO_USERNAME"},"uniqueItems":true,"description":"An array of aliases for the key.","default":[]}},"required":["keyName"],"additionalProperties":false,"description":"Details about the key to link to this secret group."},"uniqueItems":true,"description":"An array of objects containing details about the keys to link to this secret group.","default":[]}},"required":["addonId","keys"],"additionalProperties":false,"description":"An object containing data about the addon to link."},"uniqueItems":true,"description":"An array of addons to link to this secret group."},"externalAddonDependencies":{"type":"array","items":{"type":"object","properties":{"addonId":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The id of the external addon to link.","example":"example-addon"},"keys":{"type":"array","items":{"type":"object","properties":{"keyName":{"type":"string","pattern":"[a-zA-Z]+","description":"The name of the key to link.","example":"USERNAME"},"aliases":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9_./-]*$","description":"The name of the alias. Keys may only contain letters, numbers, hyphens, forward slashes and dots.","example":"MONGO_USERNAME"},"uniqueItems":true,"description":"An array of aliases for the key.","default":[]}},"required":["keyName"],"additionalProperties":false,"description":"Details about the key to link to this secret group."},"uniqueItems":true,"description":"An array of objects containing details about the keys to link to this secret group.","default":[]}},"required":["addonId","keys"],"additionalProperties":false,"description":"An object containing data about the external addon to link."},"uniqueItems":true,"description":"An array of external addons to link to this secret group."},"secrets":{"type":"object","properties":{"variables":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Secret variables as JSON object, encrypted at rest. Keys may only contain letters, numbers, hyphens, forward slashes and dots.","example":{"NODE_ENV":"production","MONGO_DB":"some_connection_string"}},"files":{"type":"object","properties":{},"description":"Secret files as JSON object, encrypted at rest. File path must be absolute","example":{"/dir/fileName":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"dockerSecretMounts":{"type":"object","properties":{},"description":"Docker secret mount contents as JSON object, encrypted at rest. Must be a valid Docker secret mount identifier","example":{"example-secret-mount_1":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}}},"additionalProperties":false},"id":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"Identifier for the secret group","example":"example-secret-group"},"createdAt":{"type":"string","format":"date-time","description":"time of creation"},"updatedAt":{"type":"string","format":"date-time","description":"time of update"}},"required":["name","secretType","priority","id"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}},"409":{"description":"There is already a secret with the same derived identifier"}},"tags":["Secrets","project"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The name of the secret.","example":"Example Secret"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"A description of the secret.","example":"A description"},"stageId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"type":{"type":"string","enum":["secret","config"],"description":"The hierarchy type of the created secret.","example":"secret"},"secretType":{"type":"string","enum":["environment-arguments","environment","arguments"],"description":"The injection scope of the created secret","example":"environment"},"priority":{"type":"integer","minimum":0,"maximum":100,"description":"The priority with which different secrets will be merged.","example":10},"restrictions":{"type":"object","properties":{"restricted":{"type":"boolean","description":"Whether the secret is restricted to specific resources. If this is `true`, only resources listed in `nfObjects` or with a tag listed in `tags` will have access to these secrets. Otherwise, all resources in the project will be able to access it.","example":true,"default":false},"nfObjects":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"ID of the entity the secret is restricted to.","example":"example-service"},"type":{"type":"string","enum":["service","job"],"description":"Type of the entity the secret is restricted to.","example":"service"}},"required":["id","type"],"additionalProperties":false},"uniqueItems":true,"description":"List of Northflank services & jobs the secret is restricted to","default":[]},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"uniqueItems":true,"description":"List of tags the secret is restricted to.","default":[]},"tagMatchCondition":{"type":"string","enum":["and","or"],"description":"If all or any of the tags must be present on the target for it to match the condition.","example":"or"}},"additionalProperties":false,"description":"Restriction settings of the secret"},"addonDependencies":{"type":"array","items":{"type":"object","properties":{"addonId":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The id of the addon to link.","example":"example-addon"},"keys":{"type":"array","items":{"type":"object","properties":{"keyName":{"type":"string","pattern":"[a-zA-Z]+","description":"The name of the key to link.","example":"USERNAME"},"aliases":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9_./-]*$","description":"The name of the alias. Keys may only contain letters, numbers, hyphens, forward slashes and dots.","example":"MONGO_USERNAME"},"uniqueItems":true,"description":"An array of aliases for the key.","default":[]}},"required":["keyName"],"additionalProperties":false,"description":"Details about the key to link to this secret group."},"uniqueItems":true,"description":"An array of objects containing details about the keys to link to this secret group.","default":[]}},"required":["addonId","keys"],"additionalProperties":false,"description":"An object containing data about the addon to link."},"uniqueItems":true,"description":"An array of addons to link to this secret group."},"externalAddonDependencies":{"type":"array","items":{"type":"object","properties":{"addonId":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The id of the external addon to link.","example":"example-addon"},"keys":{"type":"array","items":{"type":"object","properties":{"keyName":{"type":"string","pattern":"[a-zA-Z]+","description":"The name of the key to link.","example":"USERNAME"},"aliases":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9_./-]*$","description":"The name of the alias. Keys may only contain letters, numbers, hyphens, forward slashes and dots.","example":"MONGO_USERNAME"},"uniqueItems":true,"description":"An array of aliases for the key.","default":[]}},"required":["keyName"],"additionalProperties":false,"description":"Details about the key to link to this secret group."},"uniqueItems":true,"description":"An array of objects containing details about the keys to link to this secret group.","default":[]}},"required":["addonId","keys"],"additionalProperties":false,"description":"An object containing data about the external addon to link."},"uniqueItems":true,"description":"An array of external addons to link to this secret group."},"secrets":{"type":"object","properties":{"variables":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Secret variables as JSON object, encrypted at rest. Keys may only contain letters, numbers, hyphens, forward slashes and dots.","example":{"NODE_ENV":"production","MONGO_DB":"some_connection_string"}},"files":{"type":"object","properties":{},"description":"Secret files as JSON object, encrypted at rest. File path must be absolute","example":{"/dir/fileName":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"dockerSecretMounts":{"type":"object","properties":{},"description":"Docker secret mount contents as JSON object, encrypted at rest. Must be a valid Docker secret mount identifier","example":{"example-secret-mount_1":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}}},"additionalProperties":false}},"required":["name","secretType","priority"],"additionalProperties":false}}},"required":true},"x-nf-team-scoped":true,"x-nf-cli-command":["create","secret"]},"v1-projects--projectId--secrets-put":{"operationId":"putProjectsSecrets","summary":"Put project secret","description":"Creates or updates a project secret with the specified payload","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}}],"responses":{"200":{"description":"Details about the created or updated secret.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The name of the secret.","example":"Example Secret"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"A description of the secret.","example":"A description"},"stageId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"type":{"type":"string","enum":["secret","config"],"description":"The hierarchy type of the created secret.","example":"secret"},"secretType":{"type":"string","enum":["environment-arguments","environment","arguments"],"description":"The injection scope of the created secret","example":"environment"},"priority":{"type":"integer","minimum":0,"maximum":100,"description":"The priority with which different secrets will be merged.","example":10},"restrictions":{"type":"object","properties":{"restricted":{"type":"boolean","description":"Whether the secret is restricted to specific resources. If this is `true`, only resources listed in `nfObjects` or with a tag listed in `tags` will have access to these secrets. Otherwise, all resources in the project will be able to access it.","example":true,"default":false},"nfObjects":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"ID of the entity the secret is restricted to.","example":"example-service"},"type":{"type":"string","enum":["service","job"],"description":"Type of the entity the secret is restricted to.","example":"service"}},"required":["id","type"],"additionalProperties":false},"uniqueItems":true,"description":"List of Northflank services & jobs the secret is restricted to","default":[]},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"uniqueItems":true,"description":"List of tags the secret is restricted to.","default":[]},"tagMatchCondition":{"type":"string","enum":["and","or"],"description":"If all or any of the tags must be present on the target for it to match the condition.","example":"or"}},"additionalProperties":false,"description":"Restriction settings of the secret"},"addonDependencies":{"type":"array","items":{"type":"object","properties":{"addonId":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The id of the addon to link.","example":"example-addon"},"keys":{"type":"array","items":{"type":"object","properties":{"keyName":{"type":"string","pattern":"[a-zA-Z]+","description":"The name of the key to link.","example":"USERNAME"},"aliases":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9_./-]*$","description":"The name of the alias. Keys may only contain letters, numbers, hyphens, forward slashes and dots.","example":"MONGO_USERNAME"},"uniqueItems":true,"description":"An array of aliases for the key.","default":[]}},"required":["keyName"],"additionalProperties":false,"description":"Details about the key to link to this secret group."},"uniqueItems":true,"description":"An array of objects containing details about the keys to link to this secret group.","default":[]}},"required":["addonId","keys"],"additionalProperties":false,"description":"An object containing data about the addon to link."},"uniqueItems":true,"description":"An array of addons to link to this secret group."},"externalAddonDependencies":{"type":"array","items":{"type":"object","properties":{"addonId":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The id of the external addon to link.","example":"example-addon"},"keys":{"type":"array","items":{"type":"object","properties":{"keyName":{"type":"string","pattern":"[a-zA-Z]+","description":"The name of the key to link.","example":"USERNAME"},"aliases":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9_./-]*$","description":"The name of the alias. Keys may only contain letters, numbers, hyphens, forward slashes and dots.","example":"MONGO_USERNAME"},"uniqueItems":true,"description":"An array of aliases for the key.","default":[]}},"required":["keyName"],"additionalProperties":false,"description":"Details about the key to link to this secret group."},"uniqueItems":true,"description":"An array of objects containing details about the keys to link to this secret group.","default":[]}},"required":["addonId","keys"],"additionalProperties":false,"description":"An object containing data about the external addon to link."},"uniqueItems":true,"description":"An array of external addons to link to this secret group."},"secrets":{"type":"object","properties":{"variables":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Secret variables as JSON object, encrypted at rest. Keys may only contain letters, numbers, hyphens, forward slashes and dots.","example":{"NODE_ENV":"production","MONGO_DB":"some_connection_string"}},"files":{"type":"object","properties":{},"description":"Secret files as JSON object, encrypted at rest. File path must be absolute","example":{"/dir/fileName":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"dockerSecretMounts":{"type":"object","properties":{},"description":"Docker secret mount contents as JSON object, encrypted at rest. Must be a valid Docker secret mount identifier","example":{"example-secret-mount_1":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}}},"additionalProperties":false},"id":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"Identifier for the secret group","example":"example-secret-group"},"createdAt":{"type":"string","format":"date-time","description":"time of creation"},"updatedAt":{"type":"string","format":"date-time","description":"time of update"}},"required":["name","secretType","priority","id"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Secrets","project"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The name of the secret.","example":"Example Secret"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"A description of the secret.","example":"A description"},"stageId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"type":{"type":"string","enum":["secret","config"],"description":"The hierarchy type of the created secret.","example":"secret"},"secretType":{"type":"string","enum":["environment-arguments","environment","arguments"],"description":"The injection scope of the created secret","example":"environment"},"priority":{"type":"integer","minimum":0,"maximum":100,"description":"The priority with which different secrets will be merged.","example":10},"restrictions":{"type":"object","properties":{"restricted":{"type":"boolean","description":"Whether the secret is restricted to specific resources. If this is `true`, only resources listed in `nfObjects` or with a tag listed in `tags` will have access to these secrets. Otherwise, all resources in the project will be able to access it.","example":true,"default":false},"nfObjects":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"ID of the entity the secret is restricted to.","example":"example-service"},"type":{"type":"string","enum":["service","job"],"description":"Type of the entity the secret is restricted to.","example":"service"}},"required":["id","type"],"additionalProperties":false},"uniqueItems":true,"description":"List of Northflank services & jobs the secret is restricted to","default":[]},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"uniqueItems":true,"description":"List of tags the secret is restricted to.","default":[]},"tagMatchCondition":{"type":"string","enum":["and","or"],"description":"If all or any of the tags must be present on the target for it to match the condition.","example":"or"}},"additionalProperties":false,"description":"Restriction settings of the secret"},"addonDependencies":{"type":"array","items":{"type":"object","properties":{"addonId":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The id of the addon to link.","example":"example-addon"},"keys":{"type":"array","items":{"type":"object","properties":{"keyName":{"type":"string","pattern":"[a-zA-Z]+","description":"The name of the key to link.","example":"USERNAME"},"aliases":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9_./-]*$","description":"The name of the alias. Keys may only contain letters, numbers, hyphens, forward slashes and dots.","example":"MONGO_USERNAME"},"uniqueItems":true,"description":"An array of aliases for the key.","default":[]}},"required":["keyName"],"additionalProperties":false,"description":"Details about the key to link to this secret group."},"uniqueItems":true,"description":"An array of objects containing details about the keys to link to this secret group.","default":[]}},"required":["addonId","keys"],"additionalProperties":false,"description":"An object containing data about the addon to link."},"uniqueItems":true,"description":"An array of addons to link to this secret group."},"externalAddonDependencies":{"type":"array","items":{"type":"object","properties":{"addonId":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The id of the external addon to link.","example":"example-addon"},"keys":{"type":"array","items":{"type":"object","properties":{"keyName":{"type":"string","pattern":"[a-zA-Z]+","description":"The name of the key to link.","example":"USERNAME"},"aliases":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9_./-]*$","description":"The name of the alias. Keys may only contain letters, numbers, hyphens, forward slashes and dots.","example":"MONGO_USERNAME"},"uniqueItems":true,"description":"An array of aliases for the key.","default":[]}},"required":["keyName"],"additionalProperties":false,"description":"Details about the key to link to this secret group."},"uniqueItems":true,"description":"An array of objects containing details about the keys to link to this secret group.","default":[]}},"required":["addonId","keys"],"additionalProperties":false,"description":"An object containing data about the external addon to link."},"uniqueItems":true,"description":"An array of external addons to link to this secret group."},"secrets":{"type":"object","properties":{"variables":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Secret variables as JSON object, encrypted at rest. Keys may only contain letters, numbers, hyphens, forward slashes and dots.","example":{"NODE_ENV":"production","MONGO_DB":"some_connection_string"}},"files":{"type":"object","properties":{},"description":"Secret files as JSON object, encrypted at rest. File path must be absolute","example":{"/dir/fileName":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"dockerSecretMounts":{"type":"object","properties":{},"description":"Docker secret mount contents as JSON object, encrypted at rest. Must be a valid Docker secret mount identifier","example":{"example-secret-mount_1":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}}},"additionalProperties":false}},"required":["name","secretType","priority"],"additionalProperties":false}}},"required":true},"x-nf-team-scoped":true,"x-nf-cli-command":["put","secret"]},"v1-projects--projectId--secrets-put-team-scoped":{"operationId":"putProjectsSecrets","summary":"Put project secret","description":"Creates or updates a project secret with the specified payload","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}}],"responses":{"200":{"description":"Details about the created or updated secret.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The name of the secret.","example":"Example Secret"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"A description of the secret.","example":"A description"},"stageId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"type":{"type":"string","enum":["secret","config"],"description":"The hierarchy type of the created secret.","example":"secret"},"secretType":{"type":"string","enum":["environment-arguments","environment","arguments"],"description":"The injection scope of the created secret","example":"environment"},"priority":{"type":"integer","minimum":0,"maximum":100,"description":"The priority with which different secrets will be merged.","example":10},"restrictions":{"type":"object","properties":{"restricted":{"type":"boolean","description":"Whether the secret is restricted to specific resources. If this is `true`, only resources listed in `nfObjects` or with a tag listed in `tags` will have access to these secrets. Otherwise, all resources in the project will be able to access it.","example":true,"default":false},"nfObjects":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"ID of the entity the secret is restricted to.","example":"example-service"},"type":{"type":"string","enum":["service","job"],"description":"Type of the entity the secret is restricted to.","example":"service"}},"required":["id","type"],"additionalProperties":false},"uniqueItems":true,"description":"List of Northflank services & jobs the secret is restricted to","default":[]},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"uniqueItems":true,"description":"List of tags the secret is restricted to.","default":[]},"tagMatchCondition":{"type":"string","enum":["and","or"],"description":"If all or any of the tags must be present on the target for it to match the condition.","example":"or"}},"additionalProperties":false,"description":"Restriction settings of the secret"},"addonDependencies":{"type":"array","items":{"type":"object","properties":{"addonId":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The id of the addon to link.","example":"example-addon"},"keys":{"type":"array","items":{"type":"object","properties":{"keyName":{"type":"string","pattern":"[a-zA-Z]+","description":"The name of the key to link.","example":"USERNAME"},"aliases":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9_./-]*$","description":"The name of the alias. Keys may only contain letters, numbers, hyphens, forward slashes and dots.","example":"MONGO_USERNAME"},"uniqueItems":true,"description":"An array of aliases for the key.","default":[]}},"required":["keyName"],"additionalProperties":false,"description":"Details about the key to link to this secret group."},"uniqueItems":true,"description":"An array of objects containing details about the keys to link to this secret group.","default":[]}},"required":["addonId","keys"],"additionalProperties":false,"description":"An object containing data about the addon to link."},"uniqueItems":true,"description":"An array of addons to link to this secret group."},"externalAddonDependencies":{"type":"array","items":{"type":"object","properties":{"addonId":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The id of the external addon to link.","example":"example-addon"},"keys":{"type":"array","items":{"type":"object","properties":{"keyName":{"type":"string","pattern":"[a-zA-Z]+","description":"The name of the key to link.","example":"USERNAME"},"aliases":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9_./-]*$","description":"The name of the alias. Keys may only contain letters, numbers, hyphens, forward slashes and dots.","example":"MONGO_USERNAME"},"uniqueItems":true,"description":"An array of aliases for the key.","default":[]}},"required":["keyName"],"additionalProperties":false,"description":"Details about the key to link to this secret group."},"uniqueItems":true,"description":"An array of objects containing details about the keys to link to this secret group.","default":[]}},"required":["addonId","keys"],"additionalProperties":false,"description":"An object containing data about the external addon to link."},"uniqueItems":true,"description":"An array of external addons to link to this secret group."},"secrets":{"type":"object","properties":{"variables":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Secret variables as JSON object, encrypted at rest. Keys may only contain letters, numbers, hyphens, forward slashes and dots.","example":{"NODE_ENV":"production","MONGO_DB":"some_connection_string"}},"files":{"type":"object","properties":{},"description":"Secret files as JSON object, encrypted at rest. File path must be absolute","example":{"/dir/fileName":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"dockerSecretMounts":{"type":"object","properties":{},"description":"Docker secret mount contents as JSON object, encrypted at rest. Must be a valid Docker secret mount identifier","example":{"example-secret-mount_1":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}}},"additionalProperties":false},"id":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"Identifier for the secret group","example":"example-secret-group"},"createdAt":{"type":"string","format":"date-time","description":"time of creation"},"updatedAt":{"type":"string","format":"date-time","description":"time of update"}},"required":["name","secretType","priority","id"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Secrets","project"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The name of the secret.","example":"Example Secret"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"A description of the secret.","example":"A description"},"stageId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"type":{"type":"string","enum":["secret","config"],"description":"The hierarchy type of the created secret.","example":"secret"},"secretType":{"type":"string","enum":["environment-arguments","environment","arguments"],"description":"The injection scope of the created secret","example":"environment"},"priority":{"type":"integer","minimum":0,"maximum":100,"description":"The priority with which different secrets will be merged.","example":10},"restrictions":{"type":"object","properties":{"restricted":{"type":"boolean","description":"Whether the secret is restricted to specific resources. If this is `true`, only resources listed in `nfObjects` or with a tag listed in `tags` will have access to these secrets. Otherwise, all resources in the project will be able to access it.","example":true,"default":false},"nfObjects":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"ID of the entity the secret is restricted to.","example":"example-service"},"type":{"type":"string","enum":["service","job"],"description":"Type of the entity the secret is restricted to.","example":"service"}},"required":["id","type"],"additionalProperties":false},"uniqueItems":true,"description":"List of Northflank services & jobs the secret is restricted to","default":[]},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"uniqueItems":true,"description":"List of tags the secret is restricted to.","default":[]},"tagMatchCondition":{"type":"string","enum":["and","or"],"description":"If all or any of the tags must be present on the target for it to match the condition.","example":"or"}},"additionalProperties":false,"description":"Restriction settings of the secret"},"addonDependencies":{"type":"array","items":{"type":"object","properties":{"addonId":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The id of the addon to link.","example":"example-addon"},"keys":{"type":"array","items":{"type":"object","properties":{"keyName":{"type":"string","pattern":"[a-zA-Z]+","description":"The name of the key to link.","example":"USERNAME"},"aliases":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9_./-]*$","description":"The name of the alias. Keys may only contain letters, numbers, hyphens, forward slashes and dots.","example":"MONGO_USERNAME"},"uniqueItems":true,"description":"An array of aliases for the key.","default":[]}},"required":["keyName"],"additionalProperties":false,"description":"Details about the key to link to this secret group."},"uniqueItems":true,"description":"An array of objects containing details about the keys to link to this secret group.","default":[]}},"required":["addonId","keys"],"additionalProperties":false,"description":"An object containing data about the addon to link."},"uniqueItems":true,"description":"An array of addons to link to this secret group."},"externalAddonDependencies":{"type":"array","items":{"type":"object","properties":{"addonId":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The id of the external addon to link.","example":"example-addon"},"keys":{"type":"array","items":{"type":"object","properties":{"keyName":{"type":"string","pattern":"[a-zA-Z]+","description":"The name of the key to link.","example":"USERNAME"},"aliases":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9_./-]*$","description":"The name of the alias. Keys may only contain letters, numbers, hyphens, forward slashes and dots.","example":"MONGO_USERNAME"},"uniqueItems":true,"description":"An array of aliases for the key.","default":[]}},"required":["keyName"],"additionalProperties":false,"description":"Details about the key to link to this secret group."},"uniqueItems":true,"description":"An array of objects containing details about the keys to link to this secret group.","default":[]}},"required":["addonId","keys"],"additionalProperties":false,"description":"An object containing data about the external addon to link."},"uniqueItems":true,"description":"An array of external addons to link to this secret group."},"secrets":{"type":"object","properties":{"variables":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Secret variables as JSON object, encrypted at rest. Keys may only contain letters, numbers, hyphens, forward slashes and dots.","example":{"NODE_ENV":"production","MONGO_DB":"some_connection_string"}},"files":{"type":"object","properties":{},"description":"Secret files as JSON object, encrypted at rest. File path must be absolute","example":{"/dir/fileName":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"dockerSecretMounts":{"type":"object","properties":{},"description":"Docker secret mount contents as JSON object, encrypted at rest. Must be a valid Docker secret mount identifier","example":{"example-secret-mount_1":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}}},"additionalProperties":false}},"required":["name","secretType","priority"],"additionalProperties":false}}},"required":true},"x-nf-team-scoped":true,"x-nf-cli-command":["put","secret"]},"v1-projects--projectId--secrets--secretId--patch":{"operationId":"patchProjectsSecretsSecretid","summary":"Patch project secret","description":"Updates a project secret with the specified payload","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"secretId","type":"string","required":true,"description":"ID of the project secret","example":"example-secret","in":"path","schema":{"name":"secretId","type":"string","required":true,"description":"ID of the project secret","example":"example-secret","in":"path"}}],"responses":{"200":{"description":"Details about the updated secret.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The name of the secret.","example":"Example Secret"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"A description of the secret.","example":"A description"},"stageId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"type":{"type":"string","enum":["secret","config"],"description":"The hierarchy type of the created secret.","example":"secret"},"secretType":{"type":"string","enum":["environment-arguments","environment","arguments"],"description":"The injection scope of the created secret","example":"environment"},"priority":{"type":"integer","minimum":0,"maximum":100,"description":"The priority with which different secrets will be merged.","example":10},"restrictions":{"type":"object","properties":{"restricted":{"type":"boolean","description":"Whether the secret is restricted to specific resources. If this is `true`, only resources listed in `nfObjects` or with a tag listed in `tags` will have access to these secrets. Otherwise, all resources in the project will be able to access it.","example":true,"default":false},"nfObjects":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"ID of the entity the secret is restricted to.","example":"example-service"},"type":{"type":"string","enum":["service","job"],"description":"Type of the entity the secret is restricted to.","example":"service"}},"required":["id","type"],"additionalProperties":false},"uniqueItems":true,"description":"List of Northflank services & jobs the secret is restricted to","default":[]},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"uniqueItems":true,"description":"List of tags the secret is restricted to.","default":[]},"tagMatchCondition":{"type":"string","enum":["and","or"],"description":"If all or any of the tags must be present on the target for it to match the condition.","example":"or"}},"additionalProperties":false,"description":"Restriction settings of the secret"},"addonDependencies":{"type":"array","items":{"type":"object","properties":{"addonId":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The id of the addon to link.","example":"example-addon"},"keys":{"type":"array","items":{"type":"object","properties":{"keyName":{"type":"string","pattern":"[a-zA-Z]+","description":"The name of the key to link.","example":"USERNAME"},"aliases":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9_./-]*$","description":"The name of the alias. Keys may only contain letters, numbers, hyphens, forward slashes and dots.","example":"MONGO_USERNAME"},"uniqueItems":true,"description":"An array of aliases for the key.","default":[]}},"required":["keyName"],"additionalProperties":false,"description":"Details about the key to link to this secret group."},"uniqueItems":true,"description":"An array of objects containing details about the keys to link to this secret group.","default":[]}},"required":["addonId","keys"],"additionalProperties":false,"description":"An object containing data about the addon to link."},"uniqueItems":true,"description":"An array of addons to link to this secret group."},"externalAddonDependencies":{"type":"array","items":{"type":"object","properties":{"addonId":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The id of the external addon to link.","example":"example-addon"},"keys":{"type":"array","items":{"type":"object","properties":{"keyName":{"type":"string","pattern":"[a-zA-Z]+","description":"The name of the key to link.","example":"USERNAME"},"aliases":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9_./-]*$","description":"The name of the alias. Keys may only contain letters, numbers, hyphens, forward slashes and dots.","example":"MONGO_USERNAME"},"uniqueItems":true,"description":"An array of aliases for the key.","default":[]}},"required":["keyName"],"additionalProperties":false,"description":"Details about the key to link to this secret group."},"uniqueItems":true,"description":"An array of objects containing details about the keys to link to this secret group.","default":[]}},"required":["addonId","keys"],"additionalProperties":false,"description":"An object containing data about the external addon to link."},"uniqueItems":true,"description":"An array of external addons to link to this secret group."},"secrets":{"type":"object","properties":{"variables":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Secret variables as JSON object, encrypted at rest. Keys may only contain letters, numbers, hyphens, forward slashes and dots.","example":{"NODE_ENV":"production","MONGO_DB":"some_connection_string"}},"files":{"type":"object","properties":{},"description":"Secret files as JSON object, encrypted at rest. File path must be absolute","example":{"/dir/fileName":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"dockerSecretMounts":{"type":"object","properties":{},"description":"Docker secret mount contents as JSON object, encrypted at rest. Must be a valid Docker secret mount identifier","example":{"example-secret-mount_1":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}}},"additionalProperties":false},"id":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"Identifier for the secret group","example":"example-secret-group"},"createdAt":{"type":"string","format":"date-time","description":"time of creation"},"updatedAt":{"type":"string","format":"date-time","description":"time of update"}},"required":["name","secretType","priority","id"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Secrets","project"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"A description of the secret.","example":"A description"},"stageId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"nullable":true},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"type":{"type":"string","enum":["secret","config"],"description":"The hierarchy type of the created secret.","example":"secret"},"secretType":{"type":"string","enum":["environment-arguments","environment","arguments"],"description":"The injection scope of the created secret","example":"environment"},"priority":{"type":"integer","minimum":0,"maximum":100,"description":"The priority with which different secrets will be merged.","example":10},"restrictions":{"type":"object","properties":{"restricted":{"type":"boolean","description":"Whether the secret is restricted to specific resources. If this is `true`, only resources listed in `nfObjects` or with a tag listed in `tags` will have access to these secrets. Otherwise, all resources in the project will be able to access it.","example":true},"nfObjects":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"ID of the entity the secret is restricted to.","example":"example-service"},"type":{"type":"string","enum":["service","job"],"description":"Type of the entity the secret is restricted to.","example":"service"}},"required":["id","type"],"additionalProperties":false},"uniqueItems":true,"description":"List of Northflank services & jobs the secret is restricted to"},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"uniqueItems":true,"description":"List of tags the secret is restricted to."},"tagMatchCondition":{"type":"string","enum":["and","or"],"description":"If all or any of the tags must be present on the target for it to match the condition.","example":"or"}},"additionalProperties":false},"addonDependencies":{"type":"array","items":{"type":"object","properties":{"addonId":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The id of the addon to link.","example":"example-addon"},"keys":{"type":"array","items":{"type":"object","properties":{"keyName":{"type":"string","pattern":"[a-zA-Z]+","description":"The name of the key to link.","example":"USERNAME"},"aliases":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9_./-]*$","description":"The name of the alias. Keys may only contain letters, numbers, hyphens, forward slashes and dots.","example":"MONGO_USERNAME"},"uniqueItems":true,"description":"An array of aliases for the key.","default":[]}},"required":["keyName"],"additionalProperties":false,"description":"Details about the key to link to this secret group."},"uniqueItems":true,"description":"An array of objects containing details about the keys to link to this secret group.","default":[]}},"required":["addonId","keys"],"additionalProperties":false,"description":"An object containing data about the addon to link."},"uniqueItems":true,"description":"An array of addons to link to this secret group."},"externalAddonDependencies":{"type":"array","items":{"type":"object","properties":{"addonId":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The id of the external addon to link.","example":"example-addon"},"keys":{"type":"array","items":{"type":"object","properties":{"keyName":{"type":"string","pattern":"[a-zA-Z]+","description":"The name of the key to link.","example":"USERNAME"},"aliases":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9_./-]*$","description":"The name of the alias. Keys may only contain letters, numbers, hyphens, forward slashes and dots.","example":"MONGO_USERNAME"},"uniqueItems":true,"description":"An array of aliases for the key.","default":[]}},"required":["keyName"],"additionalProperties":false,"description":"Details about the key to link to this secret group."},"uniqueItems":true,"description":"An array of objects containing details about the keys to link to this secret group.","default":[]}},"required":["addonId","keys"],"additionalProperties":false,"description":"An object containing data about the external addon to link."},"uniqueItems":true,"description":"An array of external addons to link to this secret group."},"secrets":{"type":"object","properties":{"variables":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Secret variables as JSON object, encrypted at rest. Keys may only contain letters, numbers, hyphens, forward slashes and dots.","example":{"NODE_ENV":"production","MONGO_DB":"some_connection_string"}},"files":{"type":"object","properties":{},"description":"Secret files as JSON object, encrypted at rest. File path must be absolute","example":{"/dir/fileName":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"dockerSecretMounts":{"type":"object","properties":{},"description":"Docker secret mount contents as JSON object, encrypted at rest. Must be a valid Docker secret mount identifier","example":{"example-secret-mount_1":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}}},"additionalProperties":false}},"additionalProperties":false}}},"required":true},"x-nf-team-scoped":true,"x-nf-cli-command":["patch","secret"]},"v1-projects--projectId--secrets--secretId--patch-team-scoped":{"operationId":"patchProjectsSecretsSecretid","summary":"Patch project secret","description":"Updates a project secret with the specified payload","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"secretId","type":"string","required":true,"description":"ID of the project secret","example":"example-secret","in":"path","schema":{"name":"secretId","type":"string","required":true,"description":"ID of the project secret","example":"example-secret","in":"path"}}],"responses":{"200":{"description":"Details about the updated secret.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The name of the secret.","example":"Example Secret"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"A description of the secret.","example":"A description"},"stageId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"type":{"type":"string","enum":["secret","config"],"description":"The hierarchy type of the created secret.","example":"secret"},"secretType":{"type":"string","enum":["environment-arguments","environment","arguments"],"description":"The injection scope of the created secret","example":"environment"},"priority":{"type":"integer","minimum":0,"maximum":100,"description":"The priority with which different secrets will be merged.","example":10},"restrictions":{"type":"object","properties":{"restricted":{"type":"boolean","description":"Whether the secret is restricted to specific resources. If this is `true`, only resources listed in `nfObjects` or with a tag listed in `tags` will have access to these secrets. Otherwise, all resources in the project will be able to access it.","example":true,"default":false},"nfObjects":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"ID of the entity the secret is restricted to.","example":"example-service"},"type":{"type":"string","enum":["service","job"],"description":"Type of the entity the secret is restricted to.","example":"service"}},"required":["id","type"],"additionalProperties":false},"uniqueItems":true,"description":"List of Northflank services & jobs the secret is restricted to","default":[]},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"uniqueItems":true,"description":"List of tags the secret is restricted to.","default":[]},"tagMatchCondition":{"type":"string","enum":["and","or"],"description":"If all or any of the tags must be present on the target for it to match the condition.","example":"or"}},"additionalProperties":false,"description":"Restriction settings of the secret"},"addonDependencies":{"type":"array","items":{"type":"object","properties":{"addonId":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The id of the addon to link.","example":"example-addon"},"keys":{"type":"array","items":{"type":"object","properties":{"keyName":{"type":"string","pattern":"[a-zA-Z]+","description":"The name of the key to link.","example":"USERNAME"},"aliases":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9_./-]*$","description":"The name of the alias. Keys may only contain letters, numbers, hyphens, forward slashes and dots.","example":"MONGO_USERNAME"},"uniqueItems":true,"description":"An array of aliases for the key.","default":[]}},"required":["keyName"],"additionalProperties":false,"description":"Details about the key to link to this secret group."},"uniqueItems":true,"description":"An array of objects containing details about the keys to link to this secret group.","default":[]}},"required":["addonId","keys"],"additionalProperties":false,"description":"An object containing data about the addon to link."},"uniqueItems":true,"description":"An array of addons to link to this secret group."},"externalAddonDependencies":{"type":"array","items":{"type":"object","properties":{"addonId":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The id of the external addon to link.","example":"example-addon"},"keys":{"type":"array","items":{"type":"object","properties":{"keyName":{"type":"string","pattern":"[a-zA-Z]+","description":"The name of the key to link.","example":"USERNAME"},"aliases":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9_./-]*$","description":"The name of the alias. Keys may only contain letters, numbers, hyphens, forward slashes and dots.","example":"MONGO_USERNAME"},"uniqueItems":true,"description":"An array of aliases for the key.","default":[]}},"required":["keyName"],"additionalProperties":false,"description":"Details about the key to link to this secret group."},"uniqueItems":true,"description":"An array of objects containing details about the keys to link to this secret group.","default":[]}},"required":["addonId","keys"],"additionalProperties":false,"description":"An object containing data about the external addon to link."},"uniqueItems":true,"description":"An array of external addons to link to this secret group."},"secrets":{"type":"object","properties":{"variables":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Secret variables as JSON object, encrypted at rest. Keys may only contain letters, numbers, hyphens, forward slashes and dots.","example":{"NODE_ENV":"production","MONGO_DB":"some_connection_string"}},"files":{"type":"object","properties":{},"description":"Secret files as JSON object, encrypted at rest. File path must be absolute","example":{"/dir/fileName":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"dockerSecretMounts":{"type":"object","properties":{},"description":"Docker secret mount contents as JSON object, encrypted at rest. Must be a valid Docker secret mount identifier","example":{"example-secret-mount_1":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}}},"additionalProperties":false},"id":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"Identifier for the secret group","example":"example-secret-group"},"createdAt":{"type":"string","format":"date-time","description":"time of creation"},"updatedAt":{"type":"string","format":"date-time","description":"time of update"}},"required":["name","secretType","priority","id"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Secrets","project"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"A description of the secret.","example":"A description"},"stageId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"nullable":true},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"type":{"type":"string","enum":["secret","config"],"description":"The hierarchy type of the created secret.","example":"secret"},"secretType":{"type":"string","enum":["environment-arguments","environment","arguments"],"description":"The injection scope of the created secret","example":"environment"},"priority":{"type":"integer","minimum":0,"maximum":100,"description":"The priority with which different secrets will be merged.","example":10},"restrictions":{"type":"object","properties":{"restricted":{"type":"boolean","description":"Whether the secret is restricted to specific resources. If this is `true`, only resources listed in `nfObjects` or with a tag listed in `tags` will have access to these secrets. Otherwise, all resources in the project will be able to access it.","example":true},"nfObjects":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"ID of the entity the secret is restricted to.","example":"example-service"},"type":{"type":"string","enum":["service","job"],"description":"Type of the entity the secret is restricted to.","example":"service"}},"required":["id","type"],"additionalProperties":false},"uniqueItems":true,"description":"List of Northflank services & jobs the secret is restricted to"},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"uniqueItems":true,"description":"List of tags the secret is restricted to."},"tagMatchCondition":{"type":"string","enum":["and","or"],"description":"If all or any of the tags must be present on the target for it to match the condition.","example":"or"}},"additionalProperties":false},"addonDependencies":{"type":"array","items":{"type":"object","properties":{"addonId":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The id of the addon to link.","example":"example-addon"},"keys":{"type":"array","items":{"type":"object","properties":{"keyName":{"type":"string","pattern":"[a-zA-Z]+","description":"The name of the key to link.","example":"USERNAME"},"aliases":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9_./-]*$","description":"The name of the alias. Keys may only contain letters, numbers, hyphens, forward slashes and dots.","example":"MONGO_USERNAME"},"uniqueItems":true,"description":"An array of aliases for the key.","default":[]}},"required":["keyName"],"additionalProperties":false,"description":"Details about the key to link to this secret group."},"uniqueItems":true,"description":"An array of objects containing details about the keys to link to this secret group.","default":[]}},"required":["addonId","keys"],"additionalProperties":false,"description":"An object containing data about the addon to link."},"uniqueItems":true,"description":"An array of addons to link to this secret group."},"externalAddonDependencies":{"type":"array","items":{"type":"object","properties":{"addonId":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The id of the external addon to link.","example":"example-addon"},"keys":{"type":"array","items":{"type":"object","properties":{"keyName":{"type":"string","pattern":"[a-zA-Z]+","description":"The name of the key to link.","example":"USERNAME"},"aliases":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9_./-]*$","description":"The name of the alias. Keys may only contain letters, numbers, hyphens, forward slashes and dots.","example":"MONGO_USERNAME"},"uniqueItems":true,"description":"An array of aliases for the key.","default":[]}},"required":["keyName"],"additionalProperties":false,"description":"Details about the key to link to this secret group."},"uniqueItems":true,"description":"An array of objects containing details about the keys to link to this secret group.","default":[]}},"required":["addonId","keys"],"additionalProperties":false,"description":"An object containing data about the external addon to link."},"uniqueItems":true,"description":"An array of external addons to link to this secret group."},"secrets":{"type":"object","properties":{"variables":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Secret variables as JSON object, encrypted at rest. Keys may only contain letters, numbers, hyphens, forward slashes and dots.","example":{"NODE_ENV":"production","MONGO_DB":"some_connection_string"}},"files":{"type":"object","properties":{},"description":"Secret files as JSON object, encrypted at rest. File path must be absolute","example":{"/dir/fileName":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"dockerSecretMounts":{"type":"object","properties":{},"description":"Docker secret mount contents as JSON object, encrypted at rest. Must be a valid Docker secret mount identifier","example":{"example-secret-mount_1":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}}},"additionalProperties":false}},"additionalProperties":false}}},"required":true},"x-nf-team-scoped":true,"x-nf-cli-command":["patch","secret"]},"v1-projects--projectId--secrets--secretId--get":{"operationId":"getProjectsSecretsSecretid","summary":"Get project secret","description":"View a project secret including its contents","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"secretId","type":"string","required":true,"description":"ID of the project secret","example":"example-secret","in":"path","schema":{"name":"secretId","type":"string","required":true,"description":"ID of the project secret","example":"example-secret","in":"path"}},{"name":"show","type":"string","enum":["this","inherited","all"],"description":"Which secrets to display - if set to `this` only the group's secrets are displayed, if set to `inherited` only secrets from linked addons are displayed, if set to `all` or not provided, both are displayed.","example":"all","in":"query","schema":{"name":"show","type":"string","enum":["this","inherited","all"],"description":"Which secrets to display - if set to `this` only the group's secrets are displayed, if set to `inherited` only secrets from linked addons are displayed, if set to `all` or not provided, both are displayed.","example":"all","in":"query"}}],"responses":{"200":{"description":"The full secret including its contents.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","description":"Identifier for the secret group","example":"example-secret-group"},"name":{"type":"string","description":"Secret group name","example":"Example secret group"},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"description":{"type":"string","description":"A short description of the secret group","example":"This is the secret group description"},"type":{"type":"string","enum":["secret","config"],"description":"The permission type of the secret group.","example":"secret"},"secretType":{"type":"string","enum":["environment-arguments","environment","arguments"],"description":"The type of the created secret group","example":"environment"},"projectId":{"type":"string","description":"ID of the project that the secret group belongs to","example":"default-project"},"priority":{"type":"integer","minimum":0,"maximum":100,"description":"The priority with which different secret groups will be merged","example":10},"restrictions":{"type":"object","properties":{"restricted":{"type":"boolean","description":"Whether the secret is restricted to specific resources. If this is `true`, only resources listed in `nfObjects` or with a tag listed in `tags` will have access to these secrets. Otherwise, all resources in the project will be able to access it.","example":true,"default":false},"nfObjects":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"ID of the entity the secret is restricted to.","example":"example-service"},"type":{"type":"string","enum":["service","job"],"description":"Type of the entity the secret is restricted to.","example":"service"}},"required":["id","type"],"additionalProperties":false},"uniqueItems":true,"description":"List of Northflank services & jobs the secret is restricted to","default":[]},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"uniqueItems":true,"description":"List of tags the secret is restricted to.","default":[]},"tagMatchCondition":{"type":"string","enum":["and","or"],"description":"If all or any of the tags must be present on the target for it to match the condition.","example":"or"}},"additionalProperties":false,"description":"Restriction settings of the secret"},"createdAt":{"type":"string","format":"date-time","description":"The timestamp when the secret group was created at","example":"2021-01-01 12:00:00.000Z"},"updatedAt":{"type":"string","format":"date-time","description":"The timestamp the secret group was last updated at","example":"2021-01-01 12:00:00.000Z"},"secrets":{"type":"object","properties":{},"additionalProperties":false,"description":"Decrypted secret data. If the `show` parameter is set to `this`, this will only contain secrets saved to this group. If the `show` parameter is set to `inherited`, this will only contain secrets inherited from linked addons. Otherwise, this will contain both.","example":{"variables":{"a_key":"a_secret","b_key":"b_secret"},"files":{"/dir/fileName":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}}}},"required":["id","name","tags","type","secretType","projectId","priority","restrictions","createdAt","updatedAt","secrets"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Secrets","project"],"security":[],"x-nf-team-scoped":true,"x-nf-cli-command":["get","secret"]},"v1-projects--projectId--secrets--secretId--get-team-scoped":{"operationId":"getProjectsSecretsSecretid","summary":"Get project secret","description":"View a project secret including its contents","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"secretId","type":"string","required":true,"description":"ID of the project secret","example":"example-secret","in":"path","schema":{"name":"secretId","type":"string","required":true,"description":"ID of the project secret","example":"example-secret","in":"path"}},{"name":"show","type":"string","enum":["this","inherited","all"],"description":"Which secrets to display - if set to `this` only the group's secrets are displayed, if set to `inherited` only secrets from linked addons are displayed, if set to `all` or not provided, both are displayed.","example":"all","in":"query","schema":{"name":"show","type":"string","enum":["this","inherited","all"],"description":"Which secrets to display - if set to `this` only the group's secrets are displayed, if set to `inherited` only secrets from linked addons are displayed, if set to `all` or not provided, both are displayed.","example":"all","in":"query"}}],"responses":{"200":{"description":"The full secret including its contents.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","description":"Identifier for the secret group","example":"example-secret-group"},"name":{"type":"string","description":"Secret group name","example":"Example secret group"},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"description":{"type":"string","description":"A short description of the secret group","example":"This is the secret group description"},"type":{"type":"string","enum":["secret","config"],"description":"The permission type of the secret group.","example":"secret"},"secretType":{"type":"string","enum":["environment-arguments","environment","arguments"],"description":"The type of the created secret group","example":"environment"},"projectId":{"type":"string","description":"ID of the project that the secret group belongs to","example":"default-project"},"priority":{"type":"integer","minimum":0,"maximum":100,"description":"The priority with which different secret groups will be merged","example":10},"restrictions":{"type":"object","properties":{"restricted":{"type":"boolean","description":"Whether the secret is restricted to specific resources. If this is `true`, only resources listed in `nfObjects` or with a tag listed in `tags` will have access to these secrets. Otherwise, all resources in the project will be able to access it.","example":true,"default":false},"nfObjects":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"ID of the entity the secret is restricted to.","example":"example-service"},"type":{"type":"string","enum":["service","job"],"description":"Type of the entity the secret is restricted to.","example":"service"}},"required":["id","type"],"additionalProperties":false},"uniqueItems":true,"description":"List of Northflank services & jobs the secret is restricted to","default":[]},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"uniqueItems":true,"description":"List of tags the secret is restricted to.","default":[]},"tagMatchCondition":{"type":"string","enum":["and","or"],"description":"If all or any of the tags must be present on the target for it to match the condition.","example":"or"}},"additionalProperties":false,"description":"Restriction settings of the secret"},"createdAt":{"type":"string","format":"date-time","description":"The timestamp when the secret group was created at","example":"2021-01-01 12:00:00.000Z"},"updatedAt":{"type":"string","format":"date-time","description":"The timestamp the secret group was last updated at","example":"2021-01-01 12:00:00.000Z"},"secrets":{"type":"object","properties":{},"additionalProperties":false,"description":"Decrypted secret data. If the `show` parameter is set to `this`, this will only contain secrets saved to this group. If the `show` parameter is set to `inherited`, this will only contain secrets inherited from linked addons. Otherwise, this will contain both.","example":{"variables":{"a_key":"a_secret","b_key":"b_secret"},"files":{"/dir/fileName":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}}}},"required":["id","name","tags","type","secretType","projectId","priority","restrictions","createdAt","updatedAt","secrets"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Secrets","project"],"security":[],"x-nf-team-scoped":true,"x-nf-cli-command":["get","secret"]},"v1-projects--projectId--secrets--secretId--delete":{"operationId":"deleteProjectsSecretsSecretid","summary":"Delete project secret","description":"Delete a project secret","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"secretId","type":"string","required":true,"description":"ID of the project secret","example":"example-secret","in":"path","schema":{"name":"secretId","type":"string","required":true,"description":"ID of the project secret","example":"example-secret","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Secrets","project"],"security":[],"x-nf-team-scoped":true,"x-nf-cli-command":["delete","secret"]},"v1-projects--projectId--secrets--secretId--delete-team-scoped":{"operationId":"deleteProjectsSecretsSecretid","summary":"Delete project secret","description":"Delete a project secret","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"secretId","type":"string","required":true,"description":"ID of the project secret","example":"example-secret","in":"path","schema":{"name":"secretId","type":"string","required":true,"description":"ID of the project secret","example":"example-secret","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Secrets","project"],"security":[],"x-nf-team-scoped":true,"x-nf-cli-command":["delete","secret"]},"v1-projects--projectId--secrets--secretId--post":{"operationId":"postProjectsSecretsSecretid","summary":"Update project secret","description":"Update a project secret","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"secretId","type":"string","required":true,"description":"ID of the project secret","example":"example-secret","in":"path","schema":{"name":"secretId","type":"string","required":true,"description":"ID of the project secret","example":"example-secret","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Secrets","project"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"A description of the secret.","example":"A description"},"priority":{"type":"integer","minimum":0,"maximum":100,"description":"The priority with which different secrets will be merged.","example":10},"restrictions":{"type":"object","properties":{"restricted":{"type":"boolean","description":"Whether the secret is restricted to specific resources. If this is `true`, only resources listed in `nfObjects` or with a tag listed in `tags` will have access to these secrets. Otherwise, all resources in the project will be able to access it.","example":true,"default":false},"nfObjects":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"ID of the entity the secret is restricted to.","example":"example-service"},"type":{"type":"string","enum":["service","job"],"description":"Type of the entity the secret is restricted to.","example":"service"}},"required":["id","type"],"additionalProperties":false},"uniqueItems":true,"description":"List of Northflank services & jobs the secret is restricted to","default":[]},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"uniqueItems":true,"description":"List of tags the secret is restricted to.","default":[]},"tagMatchCondition":{"type":"string","enum":["and","or"],"description":"If all or any of the tags must be present on the target for it to match the condition.","example":"or"}},"additionalProperties":false,"description":"Restriction settings of the secret"},"addonDependencies":{"type":"array","items":{"type":"object","properties":{"addonId":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The id of the addon to link.","example":"example-addon"},"keys":{"type":"array","items":{"type":"object","properties":{"keyName":{"type":"string","pattern":"[a-zA-Z]+","description":"The name of the key to link.","example":"USERNAME"},"aliases":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9_./-]*$","description":"The name of the alias. Keys may only contain letters, numbers, hyphens, forward slashes and dots.","example":"MONGO_USERNAME"},"uniqueItems":true,"description":"An array of aliases for the key.","default":[]}},"required":["keyName"],"additionalProperties":false,"description":"Details about the key to link to this secret group."},"uniqueItems":true,"description":"An array of objects containing details about the keys to link to this secret group.","default":[]}},"required":["addonId","keys"],"additionalProperties":false,"description":"An object containing data about the addon to link."},"description":"An array of addons to link to this secret group. If provided, this will overwrite any existing linked addons."},"externalAddonDependencies":{"type":"array","items":{"type":"object","properties":{"addonId":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The id of the external addon to link.","example":"example-addon"},"keys":{"type":"array","items":{"type":"object","properties":{"keyName":{"type":"string","pattern":"[a-zA-Z]+","description":"The name of the key to link.","example":"USERNAME"},"aliases":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9_./-]*$","description":"The name of the alias. Keys may only contain letters, numbers, hyphens, forward slashes and dots.","example":"MONGO_USERNAME"},"uniqueItems":true,"description":"An array of aliases for the key.","default":[]}},"required":["keyName"],"additionalProperties":false,"description":"Details about the key to link to this secret group."},"uniqueItems":true,"description":"An array of objects containing details about the keys to link to this secret group.","default":[]}},"required":["addonId","keys"],"additionalProperties":false,"description":"An object containing data about the external addon to link."},"description":"An array of external addons to link to this secret group. If provided, this will overwrite any existing linked external addons."},"type":{"type":"string","enum":["secret","config"],"description":"The permission type of the secret group.","example":"secret"},"secretType":{"type":"string","enum":["environment-arguments","environment","arguments"],"description":"The type of the created secret group","example":"environment"},"secrets":{"type":"object","properties":{"variables":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Secret variables as JSON object, encrypted at rest. Keys may only contain letters, numbers, hyphens, forward slashes and dots.","example":{"NODE_ENV":"production","MONGO_DB":"some_connection_string"}},"files":{"type":"object","properties":{},"description":"Secret files as JSON object, encrypted at rest. File path must be absolute","example":{"/dir/fileName":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"dockerSecretMounts":{"type":"object","properties":{},"description":"Docker secret mount contents as JSON object, encrypted at rest. Must be a valid Docker secret mount identifier","example":{"example-secret-mount_1":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}}},"additionalProperties":false}},"additionalProperties":false}}},"required":true},"x-nf-team-scoped":true,"x-nf-cli-command":["update","secret"]},"v1-projects--projectId--secrets--secretId--post-team-scoped":{"operationId":"postProjectsSecretsSecretid","summary":"Update project secret","description":"Update a project secret","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"secretId","type":"string","required":true,"description":"ID of the project secret","example":"example-secret","in":"path","schema":{"name":"secretId","type":"string","required":true,"description":"ID of the project secret","example":"example-secret","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Secrets","project"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"A description of the secret.","example":"A description"},"priority":{"type":"integer","minimum":0,"maximum":100,"description":"The priority with which different secrets will be merged.","example":10},"restrictions":{"type":"object","properties":{"restricted":{"type":"boolean","description":"Whether the secret is restricted to specific resources. If this is `true`, only resources listed in `nfObjects` or with a tag listed in `tags` will have access to these secrets. Otherwise, all resources in the project will be able to access it.","example":true,"default":false},"nfObjects":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"ID of the entity the secret is restricted to.","example":"example-service"},"type":{"type":"string","enum":["service","job"],"description":"Type of the entity the secret is restricted to.","example":"service"}},"required":["id","type"],"additionalProperties":false},"uniqueItems":true,"description":"List of Northflank services & jobs the secret is restricted to","default":[]},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"uniqueItems":true,"description":"List of tags the secret is restricted to.","default":[]},"tagMatchCondition":{"type":"string","enum":["and","or"],"description":"If all or any of the tags must be present on the target for it to match the condition.","example":"or"}},"additionalProperties":false,"description":"Restriction settings of the secret"},"addonDependencies":{"type":"array","items":{"type":"object","properties":{"addonId":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The id of the addon to link.","example":"example-addon"},"keys":{"type":"array","items":{"type":"object","properties":{"keyName":{"type":"string","pattern":"[a-zA-Z]+","description":"The name of the key to link.","example":"USERNAME"},"aliases":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9_./-]*$","description":"The name of the alias. Keys may only contain letters, numbers, hyphens, forward slashes and dots.","example":"MONGO_USERNAME"},"uniqueItems":true,"description":"An array of aliases for the key.","default":[]}},"required":["keyName"],"additionalProperties":false,"description":"Details about the key to link to this secret group."},"uniqueItems":true,"description":"An array of objects containing details about the keys to link to this secret group.","default":[]}},"required":["addonId","keys"],"additionalProperties":false,"description":"An object containing data about the addon to link."},"description":"An array of addons to link to this secret group. If provided, this will overwrite any existing linked addons."},"externalAddonDependencies":{"type":"array","items":{"type":"object","properties":{"addonId":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The id of the external addon to link.","example":"example-addon"},"keys":{"type":"array","items":{"type":"object","properties":{"keyName":{"type":"string","pattern":"[a-zA-Z]+","description":"The name of the key to link.","example":"USERNAME"},"aliases":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9_./-]*$","description":"The name of the alias. Keys may only contain letters, numbers, hyphens, forward slashes and dots.","example":"MONGO_USERNAME"},"uniqueItems":true,"description":"An array of aliases for the key.","default":[]}},"required":["keyName"],"additionalProperties":false,"description":"Details about the key to link to this secret group."},"uniqueItems":true,"description":"An array of objects containing details about the keys to link to this secret group.","default":[]}},"required":["addonId","keys"],"additionalProperties":false,"description":"An object containing data about the external addon to link."},"description":"An array of external addons to link to this secret group. If provided, this will overwrite any existing linked external addons."},"type":{"type":"string","enum":["secret","config"],"description":"The permission type of the secret group.","example":"secret"},"secretType":{"type":"string","enum":["environment-arguments","environment","arguments"],"description":"The type of the created secret group","example":"environment"},"secrets":{"type":"object","properties":{"variables":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Secret variables as JSON object, encrypted at rest. Keys may only contain letters, numbers, hyphens, forward slashes and dots.","example":{"NODE_ENV":"production","MONGO_DB":"some_connection_string"}},"files":{"type":"object","properties":{},"description":"Secret files as JSON object, encrypted at rest. File path must be absolute","example":{"/dir/fileName":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"dockerSecretMounts":{"type":"object","properties":{},"description":"Docker secret mount contents as JSON object, encrypted at rest. Must be a valid Docker secret mount identifier","example":{"example-secret-mount_1":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}}},"additionalProperties":false}},"additionalProperties":false}}},"required":true},"x-nf-team-scoped":true,"x-nf-cli-command":["update","secret"]},"v1-projects--projectId--secrets--secretId--addons--addonId--post":{"operationId":"postProjectsSecretsSecretidAddonsAddonid","summary":"Update project secret addon link","description":"Link an addon to a project secret or edit the settings of the linked addon.","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"secretId","type":"string","required":true,"description":"ID of the project secret","example":"example-secret","in":"path","schema":{"name":"secretId","type":"string","required":true,"description":"ID of the project secret","example":"example-secret","in":"path"}},{"name":"addonId","type":"string","required":true,"description":"ID of the addon","example":"example-addon","in":"path","schema":{"name":"addonId","type":"string","required":true,"description":"ID of the addon","example":"example-addon","in":"path"}}],"responses":{"200":{"description":"Details about the new keys.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"keys":{"type":"array","items":{"type":"object","properties":{"keyName":{"type":"string","pattern":"[a-zA-Z]+","description":"The name of the key to link.","example":"USERNAME"},"aliases":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9_./-]*$","description":"The name of the alias. Keys may only contain letters, numbers, hyphens, forward slashes and dots.","example":"MONGO_USERNAME"},"uniqueItems":true,"description":"An array of aliases for the key.","default":[]},"defaultKey":{"type":"string","example":"NF_EXAMPLE-ADDON_USERNAME"}},"required":["keyName","defaultKey"],"additionalProperties":false,"description":"Details about a key linked to this secret group."},"description":"An array of objects containing details about the keys linked to this secret group."}},"required":["keys"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Secrets","project"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"keys":{"type":"array","items":{"type":"object","properties":{"keyName":{"type":"string","pattern":"[a-zA-Z]+","description":"The name of the key to link.","example":"USERNAME"},"aliases":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9_./-]*$","description":"The name of the alias. Keys may only contain letters, numbers, hyphens, forward slashes and dots.","example":"MONGO_USERNAME"},"uniqueItems":true,"description":"An array of aliases for the key.","default":[]}},"required":["keyName"],"additionalProperties":false,"description":"Details about the key to link to this secret group."},"uniqueItems":true,"description":"An array of objects containing details about the keys to link to this secret group.","default":[]}},"required":["keys"],"additionalProperties":false}}},"required":true},"x-nf-team-scoped":true,"x-nf-cli-command":["update","secret-link"],"x-nf-deprecation-replacement":"/secrets/patch-secret","x-nf-deprecation-message":"Requests should instead use the relevant PATCH endpoint."},"v1-projects--projectId--secrets--secretId--addons--addonId--post-team-scoped":{"operationId":"postProjectsSecretsSecretidAddonsAddonid","summary":"Update project secret addon link","description":"Link an addon to a project secret or edit the settings of the linked addon.","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"secretId","type":"string","required":true,"description":"ID of the project secret","example":"example-secret","in":"path","schema":{"name":"secretId","type":"string","required":true,"description":"ID of the project secret","example":"example-secret","in":"path"}},{"name":"addonId","type":"string","required":true,"description":"ID of the addon","example":"example-addon","in":"path","schema":{"name":"addonId","type":"string","required":true,"description":"ID of the addon","example":"example-addon","in":"path"}}],"responses":{"200":{"description":"Details about the new keys.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"keys":{"type":"array","items":{"type":"object","properties":{"keyName":{"type":"string","pattern":"[a-zA-Z]+","description":"The name of the key to link.","example":"USERNAME"},"aliases":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9_./-]*$","description":"The name of the alias. Keys may only contain letters, numbers, hyphens, forward slashes and dots.","example":"MONGO_USERNAME"},"uniqueItems":true,"description":"An array of aliases for the key.","default":[]},"defaultKey":{"type":"string","example":"NF_EXAMPLE-ADDON_USERNAME"}},"required":["keyName","defaultKey"],"additionalProperties":false,"description":"Details about a key linked to this secret group."},"description":"An array of objects containing details about the keys linked to this secret group."}},"required":["keys"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Secrets","project"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"keys":{"type":"array","items":{"type":"object","properties":{"keyName":{"type":"string","pattern":"[a-zA-Z]+","description":"The name of the key to link.","example":"USERNAME"},"aliases":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9_./-]*$","description":"The name of the alias. Keys may only contain letters, numbers, hyphens, forward slashes and dots.","example":"MONGO_USERNAME"},"uniqueItems":true,"description":"An array of aliases for the key.","default":[]}},"required":["keyName"],"additionalProperties":false,"description":"Details about the key to link to this secret group."},"uniqueItems":true,"description":"An array of objects containing details about the keys to link to this secret group.","default":[]}},"required":["keys"],"additionalProperties":false}}},"required":true},"x-nf-team-scoped":true,"x-nf-cli-command":["update","secret-link"],"x-nf-deprecation-replacement":"/secrets/patch-secret","x-nf-deprecation-message":"Requests should instead use the relevant PATCH endpoint."},"v1-projects--projectId--secrets--secretId--addons--addonId--get":{"operationId":"getProjectsSecretsSecretidAddonsAddonid","summary":"Get project secret addon link details","description":"Get details about a given addon link.","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"secretId","type":"string","required":true,"description":"ID of the project secret","example":"example-secret","in":"path","schema":{"name":"secretId","type":"string","required":true,"description":"ID of the project secret","example":"example-secret","in":"path"}},{"name":"addonId","type":"string","required":true,"description":"ID of the addon","example":"example-addon","in":"path","schema":{"name":"addonId","type":"string","required":true,"description":"ID of the addon","example":"example-addon","in":"path"}}],"responses":{"200":{"description":"Details about the link between the project secret and addon.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"secretName":{"type":"string","description":"The name of the secret group","example":"Example secret group"},"secretId":{"type":"string","description":"Identifier for the secret group","example":"example-secret-group"},"addonName":{"type":"string","description":"The name of the linked addon","example":"Example Addon"},"addonId":{"type":"string","description":"The ID of the linked addon","example":"example-addon"},"addonType":{"type":"string","description":"The addon type of the linked addon","example":"mongodb"},"linked":{"type":"boolean","description":"Is this addon currently linked to this secret group?","example":true},"linkedKeys":{"type":"array","items":{"type":"object","properties":{"keyName":{"type":"string","pattern":"[a-zA-Z]+","description":"The name of the key to link.","example":"USERNAME"},"aliases":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9_./-]*$","description":"The name of the alias. Keys may only contain letters, numbers, hyphens, forward slashes and dots.","example":"MONGO_USERNAME"},"uniqueItems":true,"description":"An array of aliases for the key.","default":[]},"defaultKey":{"type":"string","example":"NF_EXAMPLE-ADDON_USERNAME"}},"required":["keyName","defaultKey"],"additionalProperties":false,"description":"Details about a key linked to this secret group."},"description":"An array of objects containing details about the keys linked to this secret group."},"availableKeys":{"type":"array","items":{"type":"string","example":"username"},"description":"A list of available keys for the given addon."}},"required":["secretName","secretId","addonName","addonId","addonType","linked","availableKeys"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Secrets","project"],"security":[],"x-nf-team-scoped":true,"x-nf-cli-command":["get","secret-link"],"x-nf-deprecation-replacement":"/secrets/get-secret","x-nf-deprecation-message":"Requests should instead use the relevant GET endpoint."},"v1-projects--projectId--secrets--secretId--addons--addonId--get-team-scoped":{"operationId":"getProjectsSecretsSecretidAddonsAddonid","summary":"Get project secret addon link details","description":"Get details about a given addon link.","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"secretId","type":"string","required":true,"description":"ID of the project secret","example":"example-secret","in":"path","schema":{"name":"secretId","type":"string","required":true,"description":"ID of the project secret","example":"example-secret","in":"path"}},{"name":"addonId","type":"string","required":true,"description":"ID of the addon","example":"example-addon","in":"path","schema":{"name":"addonId","type":"string","required":true,"description":"ID of the addon","example":"example-addon","in":"path"}}],"responses":{"200":{"description":"Details about the link between the project secret and addon.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"secretName":{"type":"string","description":"The name of the secret group","example":"Example secret group"},"secretId":{"type":"string","description":"Identifier for the secret group","example":"example-secret-group"},"addonName":{"type":"string","description":"The name of the linked addon","example":"Example Addon"},"addonId":{"type":"string","description":"The ID of the linked addon","example":"example-addon"},"addonType":{"type":"string","description":"The addon type of the linked addon","example":"mongodb"},"linked":{"type":"boolean","description":"Is this addon currently linked to this secret group?","example":true},"linkedKeys":{"type":"array","items":{"type":"object","properties":{"keyName":{"type":"string","pattern":"[a-zA-Z]+","description":"The name of the key to link.","example":"USERNAME"},"aliases":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9_./-]*$","description":"The name of the alias. Keys may only contain letters, numbers, hyphens, forward slashes and dots.","example":"MONGO_USERNAME"},"uniqueItems":true,"description":"An array of aliases for the key.","default":[]},"defaultKey":{"type":"string","example":"NF_EXAMPLE-ADDON_USERNAME"}},"required":["keyName","defaultKey"],"additionalProperties":false,"description":"Details about a key linked to this secret group."},"description":"An array of objects containing details about the keys linked to this secret group."},"availableKeys":{"type":"array","items":{"type":"string","example":"username"},"description":"A list of available keys for the given addon."}},"required":["secretName","secretId","addonName","addonId","addonType","linked","availableKeys"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Secrets","project"],"security":[],"x-nf-team-scoped":true,"x-nf-cli-command":["get","secret-link"],"x-nf-deprecation-replacement":"/secrets/get-secret","x-nf-deprecation-message":"Requests should instead use the relevant GET endpoint."},"v1-projects--projectId--secrets--secretId--addons--addonId--delete":{"operationId":"deleteProjectsSecretsSecretidAddonsAddonid","summary":"Unlink addon from project secret","description":"Unlinks an addon from the project secret.","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"secretId","type":"string","required":true,"description":"ID of the project secret","example":"example-secret","in":"path","schema":{"name":"secretId","type":"string","required":true,"description":"ID of the project secret","example":"example-secret","in":"path"}},{"name":"addonId","type":"string","required":true,"description":"ID of the addon","example":"example-addon","in":"path","schema":{"name":"addonId","type":"string","required":true,"description":"ID of the addon","example":"example-addon","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Secrets","project"],"security":[],"deprecated":true,"x-nf-team-scoped":true,"x-nf-cli-command":["delete","secret-link"]},"v1-projects--projectId--secrets--secretId--addons--addonId--delete-team-scoped":{"operationId":"deleteProjectsSecretsSecretidAddonsAddonid","summary":"Unlink addon from project secret","description":"Unlinks an addon from the project secret.","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"secretId","type":"string","required":true,"description":"ID of the project secret","example":"example-secret","in":"path","schema":{"name":"secretId","type":"string","required":true,"description":"ID of the project secret","example":"example-secret","in":"path"}},{"name":"addonId","type":"string","required":true,"description":"ID of the addon","example":"example-addon","in":"path","schema":{"name":"addonId","type":"string","required":true,"description":"ID of the addon","example":"example-addon","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Secrets","project"],"security":[],"deprecated":true,"x-nf-team-scoped":true,"x-nf-cli-command":["delete","secret-link"]},"v1-projects--projectId--secrets--secretId--details-get":{"operationId":"getProjectsSecretsSecretidDetails","summary":"Get project secret details","description":"View a project secret with details about its linked addons","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"secretId","type":"string","required":true,"description":"ID of the project secret","example":"example-secret","in":"path","schema":{"name":"secretId","type":"string","required":true,"description":"ID of the project secret","example":"example-secret","in":"path"}}],"responses":{"200":{"description":"The secret with details about its linked addons.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","description":"Identifier for the secret group","example":"example-secret-group"},"name":{"type":"string","description":"Secret group name","example":"Example secret group"},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"description":{"type":"string","description":"A short description of the secret group","example":"This is the secret group description"},"type":{"type":"string","enum":["secret","config"],"description":"The permission type of the secret group.","example":"secret"},"secretType":{"type":"string","enum":["environment-arguments","environment","arguments"],"description":"The type of the created secret group","example":"environment"},"projectId":{"type":"string","description":"ID of the project that the secret group belongs to","example":"default-project"},"priority":{"type":"integer","minimum":0,"maximum":100,"description":"The priority with which different secret groups will be merged","example":10},"restrictions":{"type":"object","properties":{"restricted":{"type":"boolean","description":"Whether the secret is restricted to specific resources. If this is `true`, only resources listed in `nfObjects` or with a tag listed in `tags` will have access to these secrets. Otherwise, all resources in the project will be able to access it.","example":true,"default":false},"nfObjects":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"ID of the entity the secret is restricted to.","example":"example-service"},"type":{"type":"string","enum":["service","job"],"description":"Type of the entity the secret is restricted to.","example":"service"}},"required":["id","type"],"additionalProperties":false},"uniqueItems":true,"description":"List of Northflank services & jobs the secret is restricted to","default":[]},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"uniqueItems":true,"description":"List of tags the secret is restricted to.","default":[]},"tagMatchCondition":{"type":"string","enum":["and","or"],"description":"If all or any of the tags must be present on the target for it to match the condition.","example":"or"}},"additionalProperties":false,"description":"Restriction settings of the secret"},"createdAt":{"type":"string","format":"date-time","description":"The timestamp when the secret group was created at","example":"2021-01-01 12:00:00.000Z"},"updatedAt":{"type":"string","format":"date-time","description":"The timestamp the secret group was last updated at","example":"2021-01-01 12:00:00.000Z"},"secrets":{"type":"object","properties":{},"additionalProperties":false,"description":"Decrypted secret data from secrets saved to this group.","example":{"variables":{"a_key":"a_secret","b_key":"b_secret"},"files":{"/dir/fileName":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}}},"addonSecrets":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the linked addon","example":"example-addon"},"name":{"type":"string","description":"The name of the linked addon","example":"Example Addon"},"addonType":{"type":"string","description":"The addon type of the linked addon","example":"mongodb"},"version":{"type":"string","description":"The version of the linked addon","example":"4.4.1"},"variables":{"type":"object","properties":{},"description":"Decrypted secret data. If the `show` parameter is set to `group`, this will only contain secrets saved to this group. If the `show` parameter is set to `inherited`, this will only contain secrets inherited from linked addons. Otherwise, this will contain both.","example":{"NF_MONGO_USERNAME":"0000000000000000","NF_MONGO_PASSWORD":"00000000000000000000000000000000"}}},"required":["id","name","addonType","version","variables"],"additionalProperties":false},"description":"Details about linked addons."}},"required":["id","name","tags","type","secretType","projectId","priority","restrictions","createdAt","updatedAt","secrets","addonSecrets"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Secrets","project"],"security":[],"x-nf-team-scoped":true,"x-nf-cli-command":["get","secret-details"]},"v1-projects--projectId--secrets--secretId--details-get-team-scoped":{"operationId":"getProjectsSecretsSecretidDetails","summary":"Get project secret details","description":"View a project secret with details about its linked addons","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"secretId","type":"string","required":true,"description":"ID of the project secret","example":"example-secret","in":"path","schema":{"name":"secretId","type":"string","required":true,"description":"ID of the project secret","example":"example-secret","in":"path"}}],"responses":{"200":{"description":"The secret with details about its linked addons.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","description":"Identifier for the secret group","example":"example-secret-group"},"name":{"type":"string","description":"Secret group name","example":"Example secret group"},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"description":{"type":"string","description":"A short description of the secret group","example":"This is the secret group description"},"type":{"type":"string","enum":["secret","config"],"description":"The permission type of the secret group.","example":"secret"},"secretType":{"type":"string","enum":["environment-arguments","environment","arguments"],"description":"The type of the created secret group","example":"environment"},"projectId":{"type":"string","description":"ID of the project that the secret group belongs to","example":"default-project"},"priority":{"type":"integer","minimum":0,"maximum":100,"description":"The priority with which different secret groups will be merged","example":10},"restrictions":{"type":"object","properties":{"restricted":{"type":"boolean","description":"Whether the secret is restricted to specific resources. If this is `true`, only resources listed in `nfObjects` or with a tag listed in `tags` will have access to these secrets. Otherwise, all resources in the project will be able to access it.","example":true,"default":false},"nfObjects":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"ID of the entity the secret is restricted to.","example":"example-service"},"type":{"type":"string","enum":["service","job"],"description":"Type of the entity the secret is restricted to.","example":"service"}},"required":["id","type"],"additionalProperties":false},"uniqueItems":true,"description":"List of Northflank services & jobs the secret is restricted to","default":[]},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"uniqueItems":true,"description":"List of tags the secret is restricted to.","default":[]},"tagMatchCondition":{"type":"string","enum":["and","or"],"description":"If all or any of the tags must be present on the target for it to match the condition.","example":"or"}},"additionalProperties":false,"description":"Restriction settings of the secret"},"createdAt":{"type":"string","format":"date-time","description":"The timestamp when the secret group was created at","example":"2021-01-01 12:00:00.000Z"},"updatedAt":{"type":"string","format":"date-time","description":"The timestamp the secret group was last updated at","example":"2021-01-01 12:00:00.000Z"},"secrets":{"type":"object","properties":{},"additionalProperties":false,"description":"Decrypted secret data from secrets saved to this group.","example":{"variables":{"a_key":"a_secret","b_key":"b_secret"},"files":{"/dir/fileName":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}}},"addonSecrets":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the linked addon","example":"example-addon"},"name":{"type":"string","description":"The name of the linked addon","example":"Example Addon"},"addonType":{"type":"string","description":"The addon type of the linked addon","example":"mongodb"},"version":{"type":"string","description":"The version of the linked addon","example":"4.4.1"},"variables":{"type":"object","properties":{},"description":"Decrypted secret data. If the `show` parameter is set to `group`, this will only contain secrets saved to this group. If the `show` parameter is set to `inherited`, this will only contain secrets inherited from linked addons. Otherwise, this will contain both.","example":{"NF_MONGO_USERNAME":"0000000000000000","NF_MONGO_PASSWORD":"00000000000000000000000000000000"}}},"required":["id","name","addonType","version","variables"],"additionalProperties":false},"description":"Details about linked addons."}},"required":["id","name","tags","type","secretType","projectId","priority","restrictions","createdAt","updatedAt","secrets","addonSecrets"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Secrets","project"],"security":[],"x-nf-team-scoped":true,"x-nf-cli-command":["get","secret-details"]},"v1-projects--projectId--services-get":{"operationId":"getProjectsServices","summary":"List services","description":"Gets a list of services belonging to the project","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query","schema":{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query"}},{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query","schema":{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query"}},{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query","schema":{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query"}}],"responses":{"200":{"description":"The list of services","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"services":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Identifier for the service","example":"example-service"},"appId":{"type":"string","description":"Full identifier used for service deployment","example":"/example-user/default-project/example-service"},"projectId":{"type":"string","description":"ID of the project the service belongs to.","example":"default-project"},"name":{"type":"string","description":"Service name","example":"Example Service"},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"description":{"type":"string","description":"A short description of the service","example":"This is the service description"},"serviceType":{"type":"string","enum":["combined","build","deployment"],"description":"Type of the service (combined, build or deployment)","example":"combined"},"disabledCI":{"type":"boolean","description":"Whether Continuous Integration is disabled","example":false},"disabledCD":{"type":"boolean","description":"Whether Continuous Deployment is disabled","example":false},"status":{"type":"object","properties":{"build":{"type":"object","properties":{"status":{"type":"string","enum":["QUEUED","PENDING","UNSCHEDULABLE","STARTING","CLONING","BUILDING","UPLOADING","ABORTED","FAILURE","SUBMISSION_FAILURE","SUCCESS","CRASHED","IN_PROGRESS"],"description":"The current status of the build.","example":"SUCCESS"},"lastTransitionTime":{"type":"string","format":"date-time","description":"The timestamp of when the build reached this status.","example":"2021-11-29T11:47:16.624Z"}},"required":["status"],"additionalProperties":false,"description":"Details about the status of the most recent build."},"deployment":{"type":"object","properties":{"status":{"type":"string","enum":["PENDING","IN_PROGRESS","COMPLETED","FAILED"],"description":"The current status of the deployment.","example":"COMPLETED"},"reason":{"type":"string","enum":["SCALING","DEPLOYING"],"description":"The reason the current deployment was started.","example":"DEPLOYING"},"lastTransitionTime":{"type":"string","format":"date-time","description":"The timestamp of when the deployment reached this status.","example":"2021-11-29T11:47:16.624Z"}},"required":["status","reason"],"additionalProperties":false,"description":"Details about the current deployment status."}},"additionalProperties":false,"description":"Details about the current service status."}},"required":["id","appId","projectId","name","tags","serviceType","disabledCI","disabledCD","status"],"additionalProperties":false,"description":"A service object."},"description":"An array of services."}},"required":["services"],"additionalProperties":false,"description":"Result data."},"pagination":{"type":"object","properties":{"hasNextPage":{"type":"boolean","description":"Is there another page of results available?","example":false},"cursor":{"type":"string","description":"The cursor to access the next page of results."},"count":{"type":"number","format":"float","description":"The number of results returned by this request.","example":1}},"required":["hasNextPage","count"],"additionalProperties":false,"description":"Data about the endpoint pagination."}},"required":["data","pagination"],"additionalProperties":false,"description":"Response object."}}},"tags":["Services","project"],"security":[],"x-nf-permission-required":"Project > Services > General > Read","x-nf-team-scoped":true,"x-nf-cli-command":["list","services"]},"v1-projects--projectId--services-get-team-scoped":{"operationId":"getProjectsServices","summary":"List services","description":"Gets a list of services belonging to the project","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query","schema":{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query"}},{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query","schema":{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query"}},{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query","schema":{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query"}}],"responses":{"200":{"description":"The list of services","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"services":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Identifier for the service","example":"example-service"},"appId":{"type":"string","description":"Full identifier used for service deployment","example":"/example-user/default-project/example-service"},"projectId":{"type":"string","description":"ID of the project the service belongs to.","example":"default-project"},"name":{"type":"string","description":"Service name","example":"Example Service"},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"description":{"type":"string","description":"A short description of the service","example":"This is the service description"},"serviceType":{"type":"string","enum":["combined","build","deployment"],"description":"Type of the service (combined, build or deployment)","example":"combined"},"disabledCI":{"type":"boolean","description":"Whether Continuous Integration is disabled","example":false},"disabledCD":{"type":"boolean","description":"Whether Continuous Deployment is disabled","example":false},"status":{"type":"object","properties":{"build":{"type":"object","properties":{"status":{"type":"string","enum":["QUEUED","PENDING","UNSCHEDULABLE","STARTING","CLONING","BUILDING","UPLOADING","ABORTED","FAILURE","SUBMISSION_FAILURE","SUCCESS","CRASHED","IN_PROGRESS"],"description":"The current status of the build.","example":"SUCCESS"},"lastTransitionTime":{"type":"string","format":"date-time","description":"The timestamp of when the build reached this status.","example":"2021-11-29T11:47:16.624Z"}},"required":["status"],"additionalProperties":false,"description":"Details about the status of the most recent build."},"deployment":{"type":"object","properties":{"status":{"type":"string","enum":["PENDING","IN_PROGRESS","COMPLETED","FAILED"],"description":"The current status of the deployment.","example":"COMPLETED"},"reason":{"type":"string","enum":["SCALING","DEPLOYING"],"description":"The reason the current deployment was started.","example":"DEPLOYING"},"lastTransitionTime":{"type":"string","format":"date-time","description":"The timestamp of when the deployment reached this status.","example":"2021-11-29T11:47:16.624Z"}},"required":["status","reason"],"additionalProperties":false,"description":"Details about the current deployment status."}},"additionalProperties":false,"description":"Details about the current service status."}},"required":["id","appId","projectId","name","tags","serviceType","disabledCI","disabledCD","status"],"additionalProperties":false,"description":"A service object."},"description":"An array of services."}},"required":["services"],"additionalProperties":false,"description":"Result data."},"pagination":{"type":"object","properties":{"hasNextPage":{"type":"boolean","description":"Is there another page of results available?","example":false},"cursor":{"type":"string","description":"The cursor to access the next page of results."},"count":{"type":"number","format":"float","description":"The number of results returned by this request.","example":1}},"required":["hasNextPage","count"],"additionalProperties":false,"description":"Data about the endpoint pagination."}},"required":["data","pagination"],"additionalProperties":false,"description":"Response object."}}},"tags":["Services","project"],"security":[],"x-nf-permission-required":"Project > Services > General > Read","x-nf-team-scoped":true,"x-nf-cli-command":["list","services"]},"v1-projects--projectId--services-build-post":{"operationId":"postProjectsServicesBuild","summary":"Create build service","description":"Creates a new build service.","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}}],"responses":{"200":{"description":"Details about the newly created service.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":54,"description":"The name of the service.","example":"Example Service"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"A description of the service.","example":"A service description"},"stageId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"billing":{"type":"object","properties":{"deploymentPlan":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The ID of the deployment plan to use. (Deprecated - use buildPlan for build resources instead.).","example":"nf-compute-20"},"buildPlan":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The ID of the build plan to use.","example":"nf-compute-200-8"},"gpu":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"gpuType":{"type":"string"},"gpuCount":{"type":"integer"},"timesliced":{"type":"boolean"}},"required":["gpuType"],"additionalProperties":false}},"additionalProperties":false}},"additionalProperties":false},"infrastructure":{"type":"object","properties":{"architecture":{"type":"string","enum":["x86","arm"]}},"additionalProperties":false},"disabledCI":{"type":"boolean","description":"Whether CI (continuous integration) should be disabled.","default":false},"buildSource":{"type":"string","enum":["git","bundle"],"description":"Defines the build source for this resource","example":"git"},"vcsData":{"type":"object","properties":{"projectUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo to build.","example":"https://github.com/northflank/gatsby-with-northflank"},"projectType":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string","minLength":24,"maxLength":24,"description":"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 `vcsLinkId` is provided, Northflank will instead use your linked account with that ID."}},"required":["projectUrl","projectType"],"additionalProperties":false},"buildSettings":{"oneOf":[{"type":"object","properties":{"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false},"dockerfile":{"type":"object","properties":{"useCache":{"type":"boolean","description":"DEPRECATED: This field will be removed in the near future and currently has no effect."},"buildEngine":{"type":"string","enum":["buildkit","kaniko"],"description":"Build engine to use. Defaults to recommended build engine `buildkit`","example":"buildkit","default":"buildkit"},"dockerFilePath":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]+$","description":"The file path of the Dockerfile.","example":"/Dockerfile"},"dockerWorkDir":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*$","description":"The working directory of the Dockerfile.","example":"/"},"buildkit":{"type":"object","properties":{"useCache":{"type":"boolean","description":"Use persistent storage to cache build layers.","example":true,"default":false},"cacheStorageSize":{"type":"integer","description":"The amount of persistent storage available to each build in MB.","example":32768},"useInternalCache":{"type":"boolean","description":"DEPRECATED: This field will be removed in the near future.","default":false},"internalCacheStorage":{"type":"number","format":"float","description":"DEPRECATED: This field will be removed in the near future."}},"additionalProperties":false}},"required":["dockerFilePath","dockerWorkDir"],"additionalProperties":false}},"required":["dockerfile"],"additionalProperties":false,"description":"Build from a Dockerfile"},{"type":"object","properties":{"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false},"buildpack":{"type":"object","properties":{"builder":{"type":"string","enum":["HEROKU_24","HEROKU_22","HEROKU_22_CLASSIC","HEROKU_20","HEROKU_18","GOOGLE_22","GOOGLE_V1","CNB_ALPINE","CNB_BIONIC","PAKETO_JAMMY_TINY","PAKETO_JAMMY_BASE","PAKETO_JAMMY_FULL","PAKETO_TINY","PAKETO_BASE","PAKETO_FULL"],"description":"Buildpack stack to use. Defaults to recommended stack `HEROKU_24`.","example":"HEROKU_24","default":"HEROKU_24"},"buildpackLocators":{"type":"array","items":{"type":"string","description":"Url or registry identifier of custom Buildpack.","example":"https://buildpack-registry.heroku.com/cnb/mars/create-react-app"},"description":"Array of custom Buildpacks to use.","default":[]},"buildContext":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*$","description":"The working directory to build in.","example":"/","default":"/"},"useCache":{"type":"boolean","description":"Should build dependencies be cached?","example":false,"default":false}},"additionalProperties":false}},"required":["buildpack"],"additionalProperties":false,"description":"Build from a Buildpack"}],"description":"Build engine"},"buildConfiguration":{"type":"object","properties":{"prRestrictions":{"type":"array","items":{"type":"string","pattern":"^[^?:@$~ [\\]{}]*$","description":"A pull request build rule. Can contain `*` as a wildcard to match multiple branch names. For example, `feature/*` will build all commits from pull requests from branches that start with `feature/`.","example":"feature/*"},"description":"An array of pull request build rules. Only supported for build services. Each commit belonging to a pull request on a branch that matches one of the provided build rules will be built automatically."},"branchRestrictions":{"type":"array","items":{"type":"string","pattern":"^[^?:@$~ [\\]{}]*$","description":"A branch build rule. Can contain `*` as a wildcard to match multiple branch names. For example, `feature/*` will build all commits from branches that start with `feature/`.","example":"feature/*"},"description":"An array of branch build rules. Only supported for build services. Each commit belonging to a branch that matches one of the provided build rules will be built automatically."},"crossProjectAccess":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Allow this build service to be referenced by resources in other projects.","example":true},"projects":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The ID of a project to include or exclude.","example":"example-project"},"description":"A list of project IDs used as an allow list or deny list."},"isAllowList":{"type":"boolean","description":"If true, only the listed projects can use this build service. If false, all projects except the listed ones can use this build service."}},"required":["enabled","projects","isAllowList"],"additionalProperties":false,"description":"Controls which projects can use this build service."},"pathIgnoreRules":{"type":"array","items":{"type":"string","maxLength":260,"description":"A path ignore rule, following `.gitignore` syntax. For example, `*.md` will ignore all files ending with `.md`.","example":"README.md"},"maxItems":200,"description":"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."},"isAllowList":{"type":"boolean","description":"If `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`.","example":false},"ciIgnoreFlagsEnabled":{"type":"boolean","description":"If `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":{"type":"array","items":{"type":"string","maxLength":72,"description":"A commit ignore flag.","example":"[skip ci]"},"maxItems":200,"description":"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]\"]`","example":["[skip ci]","[ci skip]","[no ci]","[skip nf]","[nf skip]","[northflank skip]","[skip northflank]"]},"dockerfileTarget":{"type":"string","description":"If your Dockerfile contains multiple build stages, you can specify the target stage by entering its name here."},"dockerCredentials":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The ID of the docker credentials to use.","example":"example-docker-credential"}},"includeGitFolder":{"type":"boolean","description":"Include .git folder inside the build context"},"fullGitClone":{"type":"boolean","description":"Include the entire git history as part of the .git folder. Only relevant if \"includeGitFolder\" is set."},"enableGitLfs":{"type":"boolean","description":"Enable Git LFS support for the build"},"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false}},"additionalProperties":false},"buildArguments":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"An object containing the build arguments to set for the service","example":{"ARGUMENT_1":"abcdef","ARGUMENT_2":"12345"},"default":{}},"buildFiles":{"type":"object","properties":{},"description":"Secret files as JSON object, encrypted at rest. File path must be absolute","example":{"/dir/fileName":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"dockerSecretMounts":{"type":"object","properties":{},"description":"Docker secret mount contents as JSON object, encrypted at rest. Must be a valid Docker secret mount identifier","example":{"example-secret-mount_1":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"serviceType":{"type":"string","enum":["build"],"description":"Type of the service (combined, build or deployment)","example":"build"},"id":{"type":"string","description":"Identifier for the service","example":"example-service"},"appId":{"type":"string","description":"Full identifier used for service deployment","example":"/example-user/default-project/example-service"},"cluster":{"type":"object","properties":{"id":{"type":"string","description":"The id of the cluster associated with this project.","example":"nf-europe-west"},"name":{"type":"string","description":"The name of the cluster associated with this project.","example":"nf-europe-west"},"namespace":{"type":"string","description":"Namespace this resource is located within on the cluster.","example":"ns-8zy2mcjh9zn2"},"loadBalancers":{"type":"array","items":{"type":"string","example":"lb.659200800000000000000000.northflank.com"},"description":"Load balancer DNS for the cluster."}},"required":["id","name"],"additionalProperties":false,"description":"Cluster information"},"createdAt":{"type":"string","format":"date-time","description":"time of creation"},"updatedAt":{"type":"string","format":"date-time","description":"time of update"},"status":{"type":"object","properties":{"build":{"type":"object","properties":{"status":{"type":"string","enum":["QUEUED","PENDING","UNSCHEDULABLE","STARTING","CLONING","BUILDING","UPLOADING","ABORTED","FAILURE","SUBMISSION_FAILURE","SUCCESS","CRASHED","IN_PROGRESS"],"description":"The current status of the build.","example":"SUCCESS"},"lastTransitionTime":{"type":"string","format":"date-time","description":"The timestamp of when the build reached this status.","example":"2021-11-29T11:47:16.624Z"}},"required":["status"],"additionalProperties":false,"description":"Details about the status of the most recent build."}},"additionalProperties":false,"description":"Details about the current service status."}},"required":["name","billing","vcsData","buildSettings","serviceType","id","appId","cluster","status"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}},"409":{"description":"There is already a service with the same derived identifier"}},"tags":["Services","project"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":54,"description":"The name of the service.","example":"Example Service"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"A description of the service.","example":"A service description"},"stageId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"billing":{"type":"object","properties":{"deploymentPlan":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The ID of the deployment plan to use. (Deprecated - use buildPlan for build resources instead.).","example":"nf-compute-20"},"buildPlan":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The ID of the build plan to use.","example":"nf-compute-200-8"},"gpu":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"gpuType":{"type":"string"},"gpuCount":{"type":"integer"},"timesliced":{"type":"boolean"}},"required":["gpuType"],"additionalProperties":false}},"additionalProperties":false}},"additionalProperties":false},"infrastructure":{"type":"object","properties":{"architecture":{"type":"string","enum":["x86","arm"]}},"additionalProperties":false},"disabledCI":{"type":"boolean","description":"Whether CI (continuous integration) should be disabled.","default":false},"buildSource":{"type":"string","enum":["git","bundle"],"description":"Defines the build source for this resource","example":"git"},"vcsData":{"type":"object","properties":{"projectUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo to build.","example":"https://github.com/northflank/gatsby-with-northflank"},"projectType":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string","minLength":24,"maxLength":24,"description":"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 `vcsLinkId` is provided, Northflank will instead use your linked account with that ID."}},"required":["projectUrl","projectType"],"additionalProperties":false},"buildSettings":{"oneOf":[{"type":"object","properties":{"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false},"dockerfile":{"type":"object","properties":{"useCache":{"type":"boolean","description":"DEPRECATED: This field will be removed in the near future and currently has no effect."},"buildEngine":{"type":"string","enum":["buildkit","kaniko"],"description":"Build engine to use. Defaults to recommended build engine `buildkit`","example":"buildkit","default":"buildkit"},"dockerFilePath":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]+$","description":"The file path of the Dockerfile.","example":"/Dockerfile"},"dockerWorkDir":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*$","description":"The working directory of the Dockerfile.","example":"/"},"buildkit":{"type":"object","properties":{"useCache":{"type":"boolean","description":"Use persistent storage to cache build layers.","example":true,"default":false},"cacheStorageSize":{"type":"integer","description":"The amount of persistent storage available to each build in MB.","example":32768},"useInternalCache":{"type":"boolean","description":"DEPRECATED: This field will be removed in the near future.","default":false},"internalCacheStorage":{"type":"number","format":"float","description":"DEPRECATED: This field will be removed in the near future."}},"additionalProperties":false}},"required":["dockerFilePath","dockerWorkDir"],"additionalProperties":false}},"required":["dockerfile"],"additionalProperties":false,"description":"Build from a Dockerfile"},{"type":"object","properties":{"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false},"buildpack":{"type":"object","properties":{"builder":{"type":"string","enum":["HEROKU_24","HEROKU_22","HEROKU_22_CLASSIC","HEROKU_20","HEROKU_18","GOOGLE_22","GOOGLE_V1","CNB_ALPINE","CNB_BIONIC","PAKETO_JAMMY_TINY","PAKETO_JAMMY_BASE","PAKETO_JAMMY_FULL","PAKETO_TINY","PAKETO_BASE","PAKETO_FULL"],"description":"Buildpack stack to use. Defaults to recommended stack `HEROKU_24`.","example":"HEROKU_24","default":"HEROKU_24"},"buildpackLocators":{"type":"array","items":{"type":"string","description":"Url or registry identifier of custom Buildpack.","example":"https://buildpack-registry.heroku.com/cnb/mars/create-react-app"},"description":"Array of custom Buildpacks to use.","default":[]},"buildContext":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*$","description":"The working directory to build in.","example":"/","default":"/"},"useCache":{"type":"boolean","description":"Should build dependencies be cached?","example":false,"default":false}},"additionalProperties":false}},"required":["buildpack"],"additionalProperties":false,"description":"Build from a Buildpack"}],"description":"Build engine"},"buildConfiguration":{"type":"object","properties":{"prRestrictions":{"type":"array","items":{"type":"string","pattern":"^[^?:@$~ [\\]{}]*$","description":"A pull request build rule. Can contain `*` as a wildcard to match multiple branch names. For example, `feature/*` will build all commits from pull requests from branches that start with `feature/`.","example":"feature/*"},"description":"An array of pull request build rules. Only supported for build services. Each commit belonging to a pull request on a branch that matches one of the provided build rules will be built automatically."},"branchRestrictions":{"type":"array","items":{"type":"string","pattern":"^[^?:@$~ [\\]{}]*$","description":"A branch build rule. Can contain `*` as a wildcard to match multiple branch names. For example, `feature/*` will build all commits from branches that start with `feature/`.","example":"feature/*"},"description":"An array of branch build rules. Only supported for build services. Each commit belonging to a branch that matches one of the provided build rules will be built automatically."},"crossProjectAccess":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Allow this build service to be referenced by resources in other projects.","example":true},"projects":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The ID of a project to include or exclude.","example":"example-project"},"description":"A list of project IDs used as an allow list or deny list."},"isAllowList":{"type":"boolean","description":"If true, only the listed projects can use this build service. If false, all projects except the listed ones can use this build service."}},"required":["enabled","projects","isAllowList"],"additionalProperties":false,"description":"Controls which projects can use this build service."},"pathIgnoreRules":{"type":"array","items":{"type":"string","maxLength":260,"description":"A path ignore rule, following `.gitignore` syntax. For example, `*.md` will ignore all files ending with `.md`.","example":"README.md"},"maxItems":200,"description":"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."},"isAllowList":{"type":"boolean","description":"If `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`.","example":false},"ciIgnoreFlagsEnabled":{"type":"boolean","description":"If `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":{"type":"array","items":{"type":"string","maxLength":72,"description":"A commit ignore flag.","example":"[skip ci]"},"maxItems":200,"description":"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]\"]`","example":["[skip ci]","[ci skip]","[no ci]","[skip nf]","[nf skip]","[northflank skip]","[skip northflank]"]},"dockerfileTarget":{"type":"string","description":"If your Dockerfile contains multiple build stages, you can specify the target stage by entering its name here."},"dockerCredentials":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The ID of the docker credentials to use.","example":"example-docker-credential"}},"includeGitFolder":{"type":"boolean","description":"Include .git folder inside the build context"},"fullGitClone":{"type":"boolean","description":"Include the entire git history as part of the .git folder. Only relevant if \"includeGitFolder\" is set."},"enableGitLfs":{"type":"boolean","description":"Enable Git LFS support for the build"},"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false}},"additionalProperties":false},"buildArguments":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"An object containing the build arguments to set for the service","example":{"ARGUMENT_1":"abcdef","ARGUMENT_2":"12345"},"default":{}},"buildFiles":{"type":"object","properties":{},"description":"Secret files as JSON object, encrypted at rest. File path must be absolute","example":{"/dir/fileName":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"dockerSecretMounts":{"type":"object","properties":{},"description":"Docker secret mount contents as JSON object, encrypted at rest. Must be a valid Docker secret mount identifier","example":{"example-secret-mount_1":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}}},"required":["name","billing","vcsData","buildSettings"],"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Project > Services > General > Create","x-nf-team-scoped":true,"x-nf-subheading":"create service","x-nf-cli-command":["create","service","build"]},"v1-projects--projectId--services-build-post-team-scoped":{"operationId":"postProjectsServicesBuild","summary":"Create build service","description":"Creates a new build service.","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}}],"responses":{"200":{"description":"Details about the newly created service.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":54,"description":"The name of the service.","example":"Example Service"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"A description of the service.","example":"A service description"},"stageId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"billing":{"type":"object","properties":{"deploymentPlan":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The ID of the deployment plan to use. (Deprecated - use buildPlan for build resources instead.).","example":"nf-compute-20"},"buildPlan":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The ID of the build plan to use.","example":"nf-compute-200-8"},"gpu":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"gpuType":{"type":"string"},"gpuCount":{"type":"integer"},"timesliced":{"type":"boolean"}},"required":["gpuType"],"additionalProperties":false}},"additionalProperties":false}},"additionalProperties":false},"infrastructure":{"type":"object","properties":{"architecture":{"type":"string","enum":["x86","arm"]}},"additionalProperties":false},"disabledCI":{"type":"boolean","description":"Whether CI (continuous integration) should be disabled.","default":false},"buildSource":{"type":"string","enum":["git","bundle"],"description":"Defines the build source for this resource","example":"git"},"vcsData":{"type":"object","properties":{"projectUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo to build.","example":"https://github.com/northflank/gatsby-with-northflank"},"projectType":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string","minLength":24,"maxLength":24,"description":"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 `vcsLinkId` is provided, Northflank will instead use your linked account with that ID."}},"required":["projectUrl","projectType"],"additionalProperties":false},"buildSettings":{"oneOf":[{"type":"object","properties":{"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false},"dockerfile":{"type":"object","properties":{"useCache":{"type":"boolean","description":"DEPRECATED: This field will be removed in the near future and currently has no effect."},"buildEngine":{"type":"string","enum":["buildkit","kaniko"],"description":"Build engine to use. Defaults to recommended build engine `buildkit`","example":"buildkit","default":"buildkit"},"dockerFilePath":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]+$","description":"The file path of the Dockerfile.","example":"/Dockerfile"},"dockerWorkDir":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*$","description":"The working directory of the Dockerfile.","example":"/"},"buildkit":{"type":"object","properties":{"useCache":{"type":"boolean","description":"Use persistent storage to cache build layers.","example":true,"default":false},"cacheStorageSize":{"type":"integer","description":"The amount of persistent storage available to each build in MB.","example":32768},"useInternalCache":{"type":"boolean","description":"DEPRECATED: This field will be removed in the near future.","default":false},"internalCacheStorage":{"type":"number","format":"float","description":"DEPRECATED: This field will be removed in the near future."}},"additionalProperties":false}},"required":["dockerFilePath","dockerWorkDir"],"additionalProperties":false}},"required":["dockerfile"],"additionalProperties":false,"description":"Build from a Dockerfile"},{"type":"object","properties":{"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false},"buildpack":{"type":"object","properties":{"builder":{"type":"string","enum":["HEROKU_24","HEROKU_22","HEROKU_22_CLASSIC","HEROKU_20","HEROKU_18","GOOGLE_22","GOOGLE_V1","CNB_ALPINE","CNB_BIONIC","PAKETO_JAMMY_TINY","PAKETO_JAMMY_BASE","PAKETO_JAMMY_FULL","PAKETO_TINY","PAKETO_BASE","PAKETO_FULL"],"description":"Buildpack stack to use. Defaults to recommended stack `HEROKU_24`.","example":"HEROKU_24","default":"HEROKU_24"},"buildpackLocators":{"type":"array","items":{"type":"string","description":"Url or registry identifier of custom Buildpack.","example":"https://buildpack-registry.heroku.com/cnb/mars/create-react-app"},"description":"Array of custom Buildpacks to use.","default":[]},"buildContext":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*$","description":"The working directory to build in.","example":"/","default":"/"},"useCache":{"type":"boolean","description":"Should build dependencies be cached?","example":false,"default":false}},"additionalProperties":false}},"required":["buildpack"],"additionalProperties":false,"description":"Build from a Buildpack"}],"description":"Build engine"},"buildConfiguration":{"type":"object","properties":{"prRestrictions":{"type":"array","items":{"type":"string","pattern":"^[^?:@$~ [\\]{}]*$","description":"A pull request build rule. Can contain `*` as a wildcard to match multiple branch names. For example, `feature/*` will build all commits from pull requests from branches that start with `feature/`.","example":"feature/*"},"description":"An array of pull request build rules. Only supported for build services. Each commit belonging to a pull request on a branch that matches one of the provided build rules will be built automatically."},"branchRestrictions":{"type":"array","items":{"type":"string","pattern":"^[^?:@$~ [\\]{}]*$","description":"A branch build rule. Can contain `*` as a wildcard to match multiple branch names. For example, `feature/*` will build all commits from branches that start with `feature/`.","example":"feature/*"},"description":"An array of branch build rules. Only supported for build services. Each commit belonging to a branch that matches one of the provided build rules will be built automatically."},"crossProjectAccess":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Allow this build service to be referenced by resources in other projects.","example":true},"projects":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The ID of a project to include or exclude.","example":"example-project"},"description":"A list of project IDs used as an allow list or deny list."},"isAllowList":{"type":"boolean","description":"If true, only the listed projects can use this build service. If false, all projects except the listed ones can use this build service."}},"required":["enabled","projects","isAllowList"],"additionalProperties":false,"description":"Controls which projects can use this build service."},"pathIgnoreRules":{"type":"array","items":{"type":"string","maxLength":260,"description":"A path ignore rule, following `.gitignore` syntax. For example, `*.md` will ignore all files ending with `.md`.","example":"README.md"},"maxItems":200,"description":"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."},"isAllowList":{"type":"boolean","description":"If `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`.","example":false},"ciIgnoreFlagsEnabled":{"type":"boolean","description":"If `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":{"type":"array","items":{"type":"string","maxLength":72,"description":"A commit ignore flag.","example":"[skip ci]"},"maxItems":200,"description":"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]\"]`","example":["[skip ci]","[ci skip]","[no ci]","[skip nf]","[nf skip]","[northflank skip]","[skip northflank]"]},"dockerfileTarget":{"type":"string","description":"If your Dockerfile contains multiple build stages, you can specify the target stage by entering its name here."},"dockerCredentials":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The ID of the docker credentials to use.","example":"example-docker-credential"}},"includeGitFolder":{"type":"boolean","description":"Include .git folder inside the build context"},"fullGitClone":{"type":"boolean","description":"Include the entire git history as part of the .git folder. Only relevant if \"includeGitFolder\" is set."},"enableGitLfs":{"type":"boolean","description":"Enable Git LFS support for the build"},"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false}},"additionalProperties":false},"buildArguments":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"An object containing the build arguments to set for the service","example":{"ARGUMENT_1":"abcdef","ARGUMENT_2":"12345"},"default":{}},"buildFiles":{"type":"object","properties":{},"description":"Secret files as JSON object, encrypted at rest. File path must be absolute","example":{"/dir/fileName":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"dockerSecretMounts":{"type":"object","properties":{},"description":"Docker secret mount contents as JSON object, encrypted at rest. Must be a valid Docker secret mount identifier","example":{"example-secret-mount_1":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"serviceType":{"type":"string","enum":["build"],"description":"Type of the service (combined, build or deployment)","example":"build"},"id":{"type":"string","description":"Identifier for the service","example":"example-service"},"appId":{"type":"string","description":"Full identifier used for service deployment","example":"/example-user/default-project/example-service"},"cluster":{"type":"object","properties":{"id":{"type":"string","description":"The id of the cluster associated with this project.","example":"nf-europe-west"},"name":{"type":"string","description":"The name of the cluster associated with this project.","example":"nf-europe-west"},"namespace":{"type":"string","description":"Namespace this resource is located within on the cluster.","example":"ns-8zy2mcjh9zn2"},"loadBalancers":{"type":"array","items":{"type":"string","example":"lb.659200800000000000000000.northflank.com"},"description":"Load balancer DNS for the cluster."}},"required":["id","name"],"additionalProperties":false,"description":"Cluster information"},"createdAt":{"type":"string","format":"date-time","description":"time of creation"},"updatedAt":{"type":"string","format":"date-time","description":"time of update"},"status":{"type":"object","properties":{"build":{"type":"object","properties":{"status":{"type":"string","enum":["QUEUED","PENDING","UNSCHEDULABLE","STARTING","CLONING","BUILDING","UPLOADING","ABORTED","FAILURE","SUBMISSION_FAILURE","SUCCESS","CRASHED","IN_PROGRESS"],"description":"The current status of the build.","example":"SUCCESS"},"lastTransitionTime":{"type":"string","format":"date-time","description":"The timestamp of when the build reached this status.","example":"2021-11-29T11:47:16.624Z"}},"required":["status"],"additionalProperties":false,"description":"Details about the status of the most recent build."}},"additionalProperties":false,"description":"Details about the current service status."}},"required":["name","billing","vcsData","buildSettings","serviceType","id","appId","cluster","status"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}},"409":{"description":"There is already a service with the same derived identifier"}},"tags":["Services","project"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":54,"description":"The name of the service.","example":"Example Service"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"A description of the service.","example":"A service description"},"stageId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"billing":{"type":"object","properties":{"deploymentPlan":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The ID of the deployment plan to use. (Deprecated - use buildPlan for build resources instead.).","example":"nf-compute-20"},"buildPlan":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The ID of the build plan to use.","example":"nf-compute-200-8"},"gpu":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"gpuType":{"type":"string"},"gpuCount":{"type":"integer"},"timesliced":{"type":"boolean"}},"required":["gpuType"],"additionalProperties":false}},"additionalProperties":false}},"additionalProperties":false},"infrastructure":{"type":"object","properties":{"architecture":{"type":"string","enum":["x86","arm"]}},"additionalProperties":false},"disabledCI":{"type":"boolean","description":"Whether CI (continuous integration) should be disabled.","default":false},"buildSource":{"type":"string","enum":["git","bundle"],"description":"Defines the build source for this resource","example":"git"},"vcsData":{"type":"object","properties":{"projectUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo to build.","example":"https://github.com/northflank/gatsby-with-northflank"},"projectType":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string","minLength":24,"maxLength":24,"description":"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 `vcsLinkId` is provided, Northflank will instead use your linked account with that ID."}},"required":["projectUrl","projectType"],"additionalProperties":false},"buildSettings":{"oneOf":[{"type":"object","properties":{"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false},"dockerfile":{"type":"object","properties":{"useCache":{"type":"boolean","description":"DEPRECATED: This field will be removed in the near future and currently has no effect."},"buildEngine":{"type":"string","enum":["buildkit","kaniko"],"description":"Build engine to use. Defaults to recommended build engine `buildkit`","example":"buildkit","default":"buildkit"},"dockerFilePath":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]+$","description":"The file path of the Dockerfile.","example":"/Dockerfile"},"dockerWorkDir":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*$","description":"The working directory of the Dockerfile.","example":"/"},"buildkit":{"type":"object","properties":{"useCache":{"type":"boolean","description":"Use persistent storage to cache build layers.","example":true,"default":false},"cacheStorageSize":{"type":"integer","description":"The amount of persistent storage available to each build in MB.","example":32768},"useInternalCache":{"type":"boolean","description":"DEPRECATED: This field will be removed in the near future.","default":false},"internalCacheStorage":{"type":"number","format":"float","description":"DEPRECATED: This field will be removed in the near future."}},"additionalProperties":false}},"required":["dockerFilePath","dockerWorkDir"],"additionalProperties":false}},"required":["dockerfile"],"additionalProperties":false,"description":"Build from a Dockerfile"},{"type":"object","properties":{"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false},"buildpack":{"type":"object","properties":{"builder":{"type":"string","enum":["HEROKU_24","HEROKU_22","HEROKU_22_CLASSIC","HEROKU_20","HEROKU_18","GOOGLE_22","GOOGLE_V1","CNB_ALPINE","CNB_BIONIC","PAKETO_JAMMY_TINY","PAKETO_JAMMY_BASE","PAKETO_JAMMY_FULL","PAKETO_TINY","PAKETO_BASE","PAKETO_FULL"],"description":"Buildpack stack to use. Defaults to recommended stack `HEROKU_24`.","example":"HEROKU_24","default":"HEROKU_24"},"buildpackLocators":{"type":"array","items":{"type":"string","description":"Url or registry identifier of custom Buildpack.","example":"https://buildpack-registry.heroku.com/cnb/mars/create-react-app"},"description":"Array of custom Buildpacks to use.","default":[]},"buildContext":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*$","description":"The working directory to build in.","example":"/","default":"/"},"useCache":{"type":"boolean","description":"Should build dependencies be cached?","example":false,"default":false}},"additionalProperties":false}},"required":["buildpack"],"additionalProperties":false,"description":"Build from a Buildpack"}],"description":"Build engine"},"buildConfiguration":{"type":"object","properties":{"prRestrictions":{"type":"array","items":{"type":"string","pattern":"^[^?:@$~ [\\]{}]*$","description":"A pull request build rule. Can contain `*` as a wildcard to match multiple branch names. For example, `feature/*` will build all commits from pull requests from branches that start with `feature/`.","example":"feature/*"},"description":"An array of pull request build rules. Only supported for build services. Each commit belonging to a pull request on a branch that matches one of the provided build rules will be built automatically."},"branchRestrictions":{"type":"array","items":{"type":"string","pattern":"^[^?:@$~ [\\]{}]*$","description":"A branch build rule. Can contain `*` as a wildcard to match multiple branch names. For example, `feature/*` will build all commits from branches that start with `feature/`.","example":"feature/*"},"description":"An array of branch build rules. Only supported for build services. Each commit belonging to a branch that matches one of the provided build rules will be built automatically."},"crossProjectAccess":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Allow this build service to be referenced by resources in other projects.","example":true},"projects":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The ID of a project to include or exclude.","example":"example-project"},"description":"A list of project IDs used as an allow list or deny list."},"isAllowList":{"type":"boolean","description":"If true, only the listed projects can use this build service. If false, all projects except the listed ones can use this build service."}},"required":["enabled","projects","isAllowList"],"additionalProperties":false,"description":"Controls which projects can use this build service."},"pathIgnoreRules":{"type":"array","items":{"type":"string","maxLength":260,"description":"A path ignore rule, following `.gitignore` syntax. For example, `*.md` will ignore all files ending with `.md`.","example":"README.md"},"maxItems":200,"description":"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."},"isAllowList":{"type":"boolean","description":"If `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`.","example":false},"ciIgnoreFlagsEnabled":{"type":"boolean","description":"If `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":{"type":"array","items":{"type":"string","maxLength":72,"description":"A commit ignore flag.","example":"[skip ci]"},"maxItems":200,"description":"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]\"]`","example":["[skip ci]","[ci skip]","[no ci]","[skip nf]","[nf skip]","[northflank skip]","[skip northflank]"]},"dockerfileTarget":{"type":"string","description":"If your Dockerfile contains multiple build stages, you can specify the target stage by entering its name here."},"dockerCredentials":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The ID of the docker credentials to use.","example":"example-docker-credential"}},"includeGitFolder":{"type":"boolean","description":"Include .git folder inside the build context"},"fullGitClone":{"type":"boolean","description":"Include the entire git history as part of the .git folder. Only relevant if \"includeGitFolder\" is set."},"enableGitLfs":{"type":"boolean","description":"Enable Git LFS support for the build"},"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false}},"additionalProperties":false},"buildArguments":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"An object containing the build arguments to set for the service","example":{"ARGUMENT_1":"abcdef","ARGUMENT_2":"12345"},"default":{}},"buildFiles":{"type":"object","properties":{},"description":"Secret files as JSON object, encrypted at rest. File path must be absolute","example":{"/dir/fileName":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"dockerSecretMounts":{"type":"object","properties":{},"description":"Docker secret mount contents as JSON object, encrypted at rest. Must be a valid Docker secret mount identifier","example":{"example-secret-mount_1":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}}},"required":["name","billing","vcsData","buildSettings"],"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Project > Services > General > Create","x-nf-team-scoped":true,"x-nf-subheading":"create service","x-nf-cli-command":["create","service","build"]},"v1-projects--projectId--services-build-put":{"operationId":"putProjectsServicesBuild","summary":"Put build service","description":"Creates or updates a build service.","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}}],"responses":{"200":{"description":"Details about the created or updated service.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":54,"description":"The name of the service.","example":"Example Service"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"A description of the service.","example":"A service description"},"stageId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"billing":{"type":"object","properties":{"deploymentPlan":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The ID of the deployment plan to use. (Deprecated - use buildPlan for build resources instead.).","example":"nf-compute-20"},"buildPlan":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The ID of the build plan to use.","example":"nf-compute-200-8"},"gpu":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"gpuType":{"type":"string"},"gpuCount":{"type":"integer"},"timesliced":{"type":"boolean"}},"required":["gpuType"],"additionalProperties":false}},"additionalProperties":false}},"additionalProperties":false},"infrastructure":{"type":"object","properties":{"architecture":{"type":"string","enum":["x86","arm"]}},"additionalProperties":false},"disabledCI":{"type":"boolean","description":"Whether CI (continuous integration) should be disabled.","default":false},"buildSource":{"type":"string","enum":["git","bundle"],"description":"Defines the build source for this resource","example":"git"},"vcsData":{"type":"object","properties":{"projectUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo to build.","example":"https://github.com/northflank/gatsby-with-northflank"},"projectType":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string","minLength":24,"maxLength":24,"description":"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 `vcsLinkId` is provided, Northflank will instead use your linked account with that ID."}},"required":["projectUrl","projectType"],"additionalProperties":false},"buildSettings":{"oneOf":[{"type":"object","properties":{"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false},"dockerfile":{"type":"object","properties":{"useCache":{"type":"boolean","description":"DEPRECATED: This field will be removed in the near future and currently has no effect."},"buildEngine":{"type":"string","enum":["buildkit","kaniko"],"description":"Build engine to use. Defaults to recommended build engine `buildkit`","example":"buildkit","default":"buildkit"},"dockerFilePath":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]+$","description":"The file path of the Dockerfile.","example":"/Dockerfile"},"dockerWorkDir":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*$","description":"The working directory of the Dockerfile.","example":"/"},"buildkit":{"type":"object","properties":{"useCache":{"type":"boolean","description":"Use persistent storage to cache build layers.","example":true,"default":false},"cacheStorageSize":{"type":"integer","description":"The amount of persistent storage available to each build in MB.","example":32768},"useInternalCache":{"type":"boolean","description":"DEPRECATED: This field will be removed in the near future.","default":false},"internalCacheStorage":{"type":"number","format":"float","description":"DEPRECATED: This field will be removed in the near future."}},"additionalProperties":false}},"required":["dockerFilePath","dockerWorkDir"],"additionalProperties":false}},"required":["dockerfile"],"additionalProperties":false,"description":"Build from a Dockerfile"},{"type":"object","properties":{"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false},"buildpack":{"type":"object","properties":{"builder":{"type":"string","enum":["HEROKU_24","HEROKU_22","HEROKU_22_CLASSIC","HEROKU_20","HEROKU_18","GOOGLE_22","GOOGLE_V1","CNB_ALPINE","CNB_BIONIC","PAKETO_JAMMY_TINY","PAKETO_JAMMY_BASE","PAKETO_JAMMY_FULL","PAKETO_TINY","PAKETO_BASE","PAKETO_FULL"],"description":"Buildpack stack to use. Defaults to recommended stack `HEROKU_24`.","example":"HEROKU_24","default":"HEROKU_24"},"buildpackLocators":{"type":"array","items":{"type":"string","description":"Url or registry identifier of custom Buildpack.","example":"https://buildpack-registry.heroku.com/cnb/mars/create-react-app"},"description":"Array of custom Buildpacks to use.","default":[]},"buildContext":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*$","description":"The working directory to build in.","example":"/","default":"/"},"useCache":{"type":"boolean","description":"Should build dependencies be cached?","example":false,"default":false}},"additionalProperties":false}},"required":["buildpack"],"additionalProperties":false,"description":"Build from a Buildpack"}],"description":"Build engine"},"buildConfiguration":{"type":"object","properties":{"prRestrictions":{"type":"array","items":{"type":"string","pattern":"^[^?:@$~ [\\]{}]*$","description":"A pull request build rule. Can contain `*` as a wildcard to match multiple branch names. For example, `feature/*` will build all commits from pull requests from branches that start with `feature/`.","example":"feature/*"},"description":"An array of pull request build rules. Only supported for build services. Each commit belonging to a pull request on a branch that matches one of the provided build rules will be built automatically."},"branchRestrictions":{"type":"array","items":{"type":"string","pattern":"^[^?:@$~ [\\]{}]*$","description":"A branch build rule. Can contain `*` as a wildcard to match multiple branch names. For example, `feature/*` will build all commits from branches that start with `feature/`.","example":"feature/*"},"description":"An array of branch build rules. Only supported for build services. Each commit belonging to a branch that matches one of the provided build rules will be built automatically."},"crossProjectAccess":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Allow this build service to be referenced by resources in other projects.","example":true},"projects":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The ID of a project to include or exclude.","example":"example-project"},"description":"A list of project IDs used as an allow list or deny list."},"isAllowList":{"type":"boolean","description":"If true, only the listed projects can use this build service. If false, all projects except the listed ones can use this build service."}},"required":["enabled","projects","isAllowList"],"additionalProperties":false,"description":"Controls which projects can use this build service."},"pathIgnoreRules":{"type":"array","items":{"type":"string","maxLength":260,"description":"A path ignore rule, following `.gitignore` syntax. For example, `*.md` will ignore all files ending with `.md`.","example":"README.md"},"maxItems":200,"description":"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."},"isAllowList":{"type":"boolean","description":"If `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`.","example":false},"ciIgnoreFlagsEnabled":{"type":"boolean","description":"If `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":{"type":"array","items":{"type":"string","maxLength":72,"description":"A commit ignore flag.","example":"[skip ci]"},"maxItems":200,"description":"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]\"]`","example":["[skip ci]","[ci skip]","[no ci]","[skip nf]","[nf skip]","[northflank skip]","[skip northflank]"]},"dockerfileTarget":{"type":"string","description":"If your Dockerfile contains multiple build stages, you can specify the target stage by entering its name here."},"dockerCredentials":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The ID of the docker credentials to use.","example":"example-docker-credential"}},"includeGitFolder":{"type":"boolean","description":"Include .git folder inside the build context"},"fullGitClone":{"type":"boolean","description":"Include the entire git history as part of the .git folder. Only relevant if \"includeGitFolder\" is set."},"enableGitLfs":{"type":"boolean","description":"Enable Git LFS support for the build"},"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false}},"additionalProperties":false},"buildArguments":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"An object containing the build arguments to set for the service","example":{"ARGUMENT_1":"abcdef","ARGUMENT_2":"12345"},"default":{}},"buildFiles":{"type":"object","properties":{},"description":"Secret files as JSON object, encrypted at rest. File path must be absolute","example":{"/dir/fileName":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"dockerSecretMounts":{"type":"object","properties":{},"description":"Docker secret mount contents as JSON object, encrypted at rest. Must be a valid Docker secret mount identifier","example":{"example-secret-mount_1":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"serviceType":{"type":"string","enum":["build"],"description":"Type of the service (combined, build or deployment)","example":"build"},"id":{"type":"string","description":"Identifier for the service","example":"example-service"},"appId":{"type":"string","description":"Full identifier used for service deployment","example":"/example-user/default-project/example-service"},"cluster":{"type":"object","properties":{"id":{"type":"string","description":"The id of the cluster associated with this project.","example":"nf-europe-west"},"name":{"type":"string","description":"The name of the cluster associated with this project.","example":"nf-europe-west"},"namespace":{"type":"string","description":"Namespace this resource is located within on the cluster.","example":"ns-8zy2mcjh9zn2"},"loadBalancers":{"type":"array","items":{"type":"string","example":"lb.659200800000000000000000.northflank.com"},"description":"Load balancer DNS for the cluster."}},"required":["id","name"],"additionalProperties":false,"description":"Cluster information"},"createdAt":{"type":"string","format":"date-time","description":"time of creation"},"updatedAt":{"type":"string","format":"date-time","description":"time of update"},"status":{"type":"object","properties":{"build":{"type":"object","properties":{"status":{"type":"string","enum":["QUEUED","PENDING","UNSCHEDULABLE","STARTING","CLONING","BUILDING","UPLOADING","ABORTED","FAILURE","SUBMISSION_FAILURE","SUCCESS","CRASHED","IN_PROGRESS"],"description":"The current status of the build.","example":"SUCCESS"},"lastTransitionTime":{"type":"string","format":"date-time","description":"The timestamp of when the build reached this status.","example":"2021-11-29T11:47:16.624Z"}},"required":["status"],"additionalProperties":false,"description":"Details about the status of the most recent build."}},"additionalProperties":false,"description":"Details about the current service status."}},"required":["name","billing","vcsData","buildSettings","serviceType","id","appId","cluster","status"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Services","project"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":54,"description":"The name of the service.","example":"Example Service"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"A description of the service.","example":"A service description"},"stageId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"billing":{"type":"object","properties":{"deploymentPlan":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The ID of the deployment plan to use. (Deprecated - use buildPlan for build resources instead.).","example":"nf-compute-20"},"buildPlan":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The ID of the build plan to use.","example":"nf-compute-200-8"},"gpu":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"gpuType":{"type":"string"},"gpuCount":{"type":"integer"},"timesliced":{"type":"boolean"}},"required":["gpuType"],"additionalProperties":false}},"additionalProperties":false}},"additionalProperties":false},"infrastructure":{"type":"object","properties":{"architecture":{"type":"string","enum":["x86","arm"]}},"additionalProperties":false},"disabledCI":{"type":"boolean","description":"Whether CI (continuous integration) should be disabled.","default":false},"buildSource":{"type":"string","enum":["git","bundle"],"description":"Defines the build source for this resource","example":"git"},"vcsData":{"type":"object","properties":{"projectUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo to build.","example":"https://github.com/northflank/gatsby-with-northflank"},"projectType":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string","minLength":24,"maxLength":24,"description":"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 `vcsLinkId` is provided, Northflank will instead use your linked account with that ID."}},"required":["projectUrl","projectType"],"additionalProperties":false},"buildSettings":{"oneOf":[{"type":"object","properties":{"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false},"dockerfile":{"type":"object","properties":{"useCache":{"type":"boolean","description":"DEPRECATED: This field will be removed in the near future and currently has no effect."},"buildEngine":{"type":"string","enum":["buildkit","kaniko"],"description":"Build engine to use. Defaults to recommended build engine `buildkit`","example":"buildkit","default":"buildkit"},"dockerFilePath":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]+$","description":"The file path of the Dockerfile.","example":"/Dockerfile"},"dockerWorkDir":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*$","description":"The working directory of the Dockerfile.","example":"/"},"buildkit":{"type":"object","properties":{"useCache":{"type":"boolean","description":"Use persistent storage to cache build layers.","example":true,"default":false},"cacheStorageSize":{"type":"integer","description":"The amount of persistent storage available to each build in MB.","example":32768},"useInternalCache":{"type":"boolean","description":"DEPRECATED: This field will be removed in the near future.","default":false},"internalCacheStorage":{"type":"number","format":"float","description":"DEPRECATED: This field will be removed in the near future."}},"additionalProperties":false}},"required":["dockerFilePath","dockerWorkDir"],"additionalProperties":false}},"required":["dockerfile"],"additionalProperties":false,"description":"Build from a Dockerfile"},{"type":"object","properties":{"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false},"buildpack":{"type":"object","properties":{"builder":{"type":"string","enum":["HEROKU_24","HEROKU_22","HEROKU_22_CLASSIC","HEROKU_20","HEROKU_18","GOOGLE_22","GOOGLE_V1","CNB_ALPINE","CNB_BIONIC","PAKETO_JAMMY_TINY","PAKETO_JAMMY_BASE","PAKETO_JAMMY_FULL","PAKETO_TINY","PAKETO_BASE","PAKETO_FULL"],"description":"Buildpack stack to use. Defaults to recommended stack `HEROKU_24`.","example":"HEROKU_24","default":"HEROKU_24"},"buildpackLocators":{"type":"array","items":{"type":"string","description":"Url or registry identifier of custom Buildpack.","example":"https://buildpack-registry.heroku.com/cnb/mars/create-react-app"},"description":"Array of custom Buildpacks to use.","default":[]},"buildContext":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*$","description":"The working directory to build in.","example":"/","default":"/"},"useCache":{"type":"boolean","description":"Should build dependencies be cached?","example":false,"default":false}},"additionalProperties":false}},"required":["buildpack"],"additionalProperties":false,"description":"Build from a Buildpack"}],"description":"Build engine"},"buildConfiguration":{"type":"object","properties":{"prRestrictions":{"type":"array","items":{"type":"string","pattern":"^[^?:@$~ [\\]{}]*$","description":"A pull request build rule. Can contain `*` as a wildcard to match multiple branch names. For example, `feature/*` will build all commits from pull requests from branches that start with `feature/`.","example":"feature/*"},"description":"An array of pull request build rules. Only supported for build services. Each commit belonging to a pull request on a branch that matches one of the provided build rules will be built automatically."},"branchRestrictions":{"type":"array","items":{"type":"string","pattern":"^[^?:@$~ [\\]{}]*$","description":"A branch build rule. Can contain `*` as a wildcard to match multiple branch names. For example, `feature/*` will build all commits from branches that start with `feature/`.","example":"feature/*"},"description":"An array of branch build rules. Only supported for build services. Each commit belonging to a branch that matches one of the provided build rules will be built automatically."},"crossProjectAccess":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Allow this build service to be referenced by resources in other projects.","example":true},"projects":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The ID of a project to include or exclude.","example":"example-project"},"description":"A list of project IDs used as an allow list or deny list."},"isAllowList":{"type":"boolean","description":"If true, only the listed projects can use this build service. If false, all projects except the listed ones can use this build service."}},"required":["enabled","projects","isAllowList"],"additionalProperties":false,"description":"Controls which projects can use this build service."},"pathIgnoreRules":{"type":"array","items":{"type":"string","maxLength":260,"description":"A path ignore rule, following `.gitignore` syntax. For example, `*.md` will ignore all files ending with `.md`.","example":"README.md"},"maxItems":200,"description":"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."},"isAllowList":{"type":"boolean","description":"If `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`.","example":false},"ciIgnoreFlagsEnabled":{"type":"boolean","description":"If `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":{"type":"array","items":{"type":"string","maxLength":72,"description":"A commit ignore flag.","example":"[skip ci]"},"maxItems":200,"description":"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]\"]`","example":["[skip ci]","[ci skip]","[no ci]","[skip nf]","[nf skip]","[northflank skip]","[skip northflank]"]},"dockerfileTarget":{"type":"string","description":"If your Dockerfile contains multiple build stages, you can specify the target stage by entering its name here."},"dockerCredentials":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The ID of the docker credentials to use.","example":"example-docker-credential"}},"includeGitFolder":{"type":"boolean","description":"Include .git folder inside the build context"},"fullGitClone":{"type":"boolean","description":"Include the entire git history as part of the .git folder. Only relevant if \"includeGitFolder\" is set."},"enableGitLfs":{"type":"boolean","description":"Enable Git LFS support for the build"},"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false}},"additionalProperties":false},"buildArguments":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"An object containing the build arguments to set for the service","example":{"ARGUMENT_1":"abcdef","ARGUMENT_2":"12345"},"default":{}},"buildFiles":{"type":"object","properties":{},"description":"Secret files as JSON object, encrypted at rest. File path must be absolute","example":{"/dir/fileName":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"dockerSecretMounts":{"type":"object","properties":{},"description":"Docker secret mount contents as JSON object, encrypted at rest. Must be a valid Docker secret mount identifier","example":{"example-secret-mount_1":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}}},"required":["name","billing","vcsData","buildSettings"],"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Project > Services > General > Create","x-nf-team-scoped":true,"x-nf-subheading":"put service","x-nf-cli-command":["put","service","build"]},"v1-projects--projectId--services-build-put-team-scoped":{"operationId":"putProjectsServicesBuild","summary":"Put build service","description":"Creates or updates a build service.","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}}],"responses":{"200":{"description":"Details about the created or updated service.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":54,"description":"The name of the service.","example":"Example Service"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"A description of the service.","example":"A service description"},"stageId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"billing":{"type":"object","properties":{"deploymentPlan":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The ID of the deployment plan to use. (Deprecated - use buildPlan for build resources instead.).","example":"nf-compute-20"},"buildPlan":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The ID of the build plan to use.","example":"nf-compute-200-8"},"gpu":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"gpuType":{"type":"string"},"gpuCount":{"type":"integer"},"timesliced":{"type":"boolean"}},"required":["gpuType"],"additionalProperties":false}},"additionalProperties":false}},"additionalProperties":false},"infrastructure":{"type":"object","properties":{"architecture":{"type":"string","enum":["x86","arm"]}},"additionalProperties":false},"disabledCI":{"type":"boolean","description":"Whether CI (continuous integration) should be disabled.","default":false},"buildSource":{"type":"string","enum":["git","bundle"],"description":"Defines the build source for this resource","example":"git"},"vcsData":{"type":"object","properties":{"projectUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo to build.","example":"https://github.com/northflank/gatsby-with-northflank"},"projectType":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string","minLength":24,"maxLength":24,"description":"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 `vcsLinkId` is provided, Northflank will instead use your linked account with that ID."}},"required":["projectUrl","projectType"],"additionalProperties":false},"buildSettings":{"oneOf":[{"type":"object","properties":{"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false},"dockerfile":{"type":"object","properties":{"useCache":{"type":"boolean","description":"DEPRECATED: This field will be removed in the near future and currently has no effect."},"buildEngine":{"type":"string","enum":["buildkit","kaniko"],"description":"Build engine to use. Defaults to recommended build engine `buildkit`","example":"buildkit","default":"buildkit"},"dockerFilePath":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]+$","description":"The file path of the Dockerfile.","example":"/Dockerfile"},"dockerWorkDir":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*$","description":"The working directory of the Dockerfile.","example":"/"},"buildkit":{"type":"object","properties":{"useCache":{"type":"boolean","description":"Use persistent storage to cache build layers.","example":true,"default":false},"cacheStorageSize":{"type":"integer","description":"The amount of persistent storage available to each build in MB.","example":32768},"useInternalCache":{"type":"boolean","description":"DEPRECATED: This field will be removed in the near future.","default":false},"internalCacheStorage":{"type":"number","format":"float","description":"DEPRECATED: This field will be removed in the near future."}},"additionalProperties":false}},"required":["dockerFilePath","dockerWorkDir"],"additionalProperties":false}},"required":["dockerfile"],"additionalProperties":false,"description":"Build from a Dockerfile"},{"type":"object","properties":{"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false},"buildpack":{"type":"object","properties":{"builder":{"type":"string","enum":["HEROKU_24","HEROKU_22","HEROKU_22_CLASSIC","HEROKU_20","HEROKU_18","GOOGLE_22","GOOGLE_V1","CNB_ALPINE","CNB_BIONIC","PAKETO_JAMMY_TINY","PAKETO_JAMMY_BASE","PAKETO_JAMMY_FULL","PAKETO_TINY","PAKETO_BASE","PAKETO_FULL"],"description":"Buildpack stack to use. Defaults to recommended stack `HEROKU_24`.","example":"HEROKU_24","default":"HEROKU_24"},"buildpackLocators":{"type":"array","items":{"type":"string","description":"Url or registry identifier of custom Buildpack.","example":"https://buildpack-registry.heroku.com/cnb/mars/create-react-app"},"description":"Array of custom Buildpacks to use.","default":[]},"buildContext":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*$","description":"The working directory to build in.","example":"/","default":"/"},"useCache":{"type":"boolean","description":"Should build dependencies be cached?","example":false,"default":false}},"additionalProperties":false}},"required":["buildpack"],"additionalProperties":false,"description":"Build from a Buildpack"}],"description":"Build engine"},"buildConfiguration":{"type":"object","properties":{"prRestrictions":{"type":"array","items":{"type":"string","pattern":"^[^?:@$~ [\\]{}]*$","description":"A pull request build rule. Can contain `*` as a wildcard to match multiple branch names. For example, `feature/*` will build all commits from pull requests from branches that start with `feature/`.","example":"feature/*"},"description":"An array of pull request build rules. Only supported for build services. Each commit belonging to a pull request on a branch that matches one of the provided build rules will be built automatically."},"branchRestrictions":{"type":"array","items":{"type":"string","pattern":"^[^?:@$~ [\\]{}]*$","description":"A branch build rule. Can contain `*` as a wildcard to match multiple branch names. For example, `feature/*` will build all commits from branches that start with `feature/`.","example":"feature/*"},"description":"An array of branch build rules. Only supported for build services. Each commit belonging to a branch that matches one of the provided build rules will be built automatically."},"crossProjectAccess":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Allow this build service to be referenced by resources in other projects.","example":true},"projects":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The ID of a project to include or exclude.","example":"example-project"},"description":"A list of project IDs used as an allow list or deny list."},"isAllowList":{"type":"boolean","description":"If true, only the listed projects can use this build service. If false, all projects except the listed ones can use this build service."}},"required":["enabled","projects","isAllowList"],"additionalProperties":false,"description":"Controls which projects can use this build service."},"pathIgnoreRules":{"type":"array","items":{"type":"string","maxLength":260,"description":"A path ignore rule, following `.gitignore` syntax. For example, `*.md` will ignore all files ending with `.md`.","example":"README.md"},"maxItems":200,"description":"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."},"isAllowList":{"type":"boolean","description":"If `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`.","example":false},"ciIgnoreFlagsEnabled":{"type":"boolean","description":"If `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":{"type":"array","items":{"type":"string","maxLength":72,"description":"A commit ignore flag.","example":"[skip ci]"},"maxItems":200,"description":"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]\"]`","example":["[skip ci]","[ci skip]","[no ci]","[skip nf]","[nf skip]","[northflank skip]","[skip northflank]"]},"dockerfileTarget":{"type":"string","description":"If your Dockerfile contains multiple build stages, you can specify the target stage by entering its name here."},"dockerCredentials":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The ID of the docker credentials to use.","example":"example-docker-credential"}},"includeGitFolder":{"type":"boolean","description":"Include .git folder inside the build context"},"fullGitClone":{"type":"boolean","description":"Include the entire git history as part of the .git folder. Only relevant if \"includeGitFolder\" is set."},"enableGitLfs":{"type":"boolean","description":"Enable Git LFS support for the build"},"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false}},"additionalProperties":false},"buildArguments":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"An object containing the build arguments to set for the service","example":{"ARGUMENT_1":"abcdef","ARGUMENT_2":"12345"},"default":{}},"buildFiles":{"type":"object","properties":{},"description":"Secret files as JSON object, encrypted at rest. File path must be absolute","example":{"/dir/fileName":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"dockerSecretMounts":{"type":"object","properties":{},"description":"Docker secret mount contents as JSON object, encrypted at rest. Must be a valid Docker secret mount identifier","example":{"example-secret-mount_1":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"serviceType":{"type":"string","enum":["build"],"description":"Type of the service (combined, build or deployment)","example":"build"},"id":{"type":"string","description":"Identifier for the service","example":"example-service"},"appId":{"type":"string","description":"Full identifier used for service deployment","example":"/example-user/default-project/example-service"},"cluster":{"type":"object","properties":{"id":{"type":"string","description":"The id of the cluster associated with this project.","example":"nf-europe-west"},"name":{"type":"string","description":"The name of the cluster associated with this project.","example":"nf-europe-west"},"namespace":{"type":"string","description":"Namespace this resource is located within on the cluster.","example":"ns-8zy2mcjh9zn2"},"loadBalancers":{"type":"array","items":{"type":"string","example":"lb.659200800000000000000000.northflank.com"},"description":"Load balancer DNS for the cluster."}},"required":["id","name"],"additionalProperties":false,"description":"Cluster information"},"createdAt":{"type":"string","format":"date-time","description":"time of creation"},"updatedAt":{"type":"string","format":"date-time","description":"time of update"},"status":{"type":"object","properties":{"build":{"type":"object","properties":{"status":{"type":"string","enum":["QUEUED","PENDING","UNSCHEDULABLE","STARTING","CLONING","BUILDING","UPLOADING","ABORTED","FAILURE","SUBMISSION_FAILURE","SUCCESS","CRASHED","IN_PROGRESS"],"description":"The current status of the build.","example":"SUCCESS"},"lastTransitionTime":{"type":"string","format":"date-time","description":"The timestamp of when the build reached this status.","example":"2021-11-29T11:47:16.624Z"}},"required":["status"],"additionalProperties":false,"description":"Details about the status of the most recent build."}},"additionalProperties":false,"description":"Details about the current service status."}},"required":["name","billing","vcsData","buildSettings","serviceType","id","appId","cluster","status"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Services","project"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":54,"description":"The name of the service.","example":"Example Service"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"A description of the service.","example":"A service description"},"stageId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"billing":{"type":"object","properties":{"deploymentPlan":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The ID of the deployment plan to use. (Deprecated - use buildPlan for build resources instead.).","example":"nf-compute-20"},"buildPlan":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The ID of the build plan to use.","example":"nf-compute-200-8"},"gpu":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"gpuType":{"type":"string"},"gpuCount":{"type":"integer"},"timesliced":{"type":"boolean"}},"required":["gpuType"],"additionalProperties":false}},"additionalProperties":false}},"additionalProperties":false},"infrastructure":{"type":"object","properties":{"architecture":{"type":"string","enum":["x86","arm"]}},"additionalProperties":false},"disabledCI":{"type":"boolean","description":"Whether CI (continuous integration) should be disabled.","default":false},"buildSource":{"type":"string","enum":["git","bundle"],"description":"Defines the build source for this resource","example":"git"},"vcsData":{"type":"object","properties":{"projectUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo to build.","example":"https://github.com/northflank/gatsby-with-northflank"},"projectType":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string","minLength":24,"maxLength":24,"description":"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 `vcsLinkId` is provided, Northflank will instead use your linked account with that ID."}},"required":["projectUrl","projectType"],"additionalProperties":false},"buildSettings":{"oneOf":[{"type":"object","properties":{"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false},"dockerfile":{"type":"object","properties":{"useCache":{"type":"boolean","description":"DEPRECATED: This field will be removed in the near future and currently has no effect."},"buildEngine":{"type":"string","enum":["buildkit","kaniko"],"description":"Build engine to use. Defaults to recommended build engine `buildkit`","example":"buildkit","default":"buildkit"},"dockerFilePath":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]+$","description":"The file path of the Dockerfile.","example":"/Dockerfile"},"dockerWorkDir":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*$","description":"The working directory of the Dockerfile.","example":"/"},"buildkit":{"type":"object","properties":{"useCache":{"type":"boolean","description":"Use persistent storage to cache build layers.","example":true,"default":false},"cacheStorageSize":{"type":"integer","description":"The amount of persistent storage available to each build in MB.","example":32768},"useInternalCache":{"type":"boolean","description":"DEPRECATED: This field will be removed in the near future.","default":false},"internalCacheStorage":{"type":"number","format":"float","description":"DEPRECATED: This field will be removed in the near future."}},"additionalProperties":false}},"required":["dockerFilePath","dockerWorkDir"],"additionalProperties":false}},"required":["dockerfile"],"additionalProperties":false,"description":"Build from a Dockerfile"},{"type":"object","properties":{"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false},"buildpack":{"type":"object","properties":{"builder":{"type":"string","enum":["HEROKU_24","HEROKU_22","HEROKU_22_CLASSIC","HEROKU_20","HEROKU_18","GOOGLE_22","GOOGLE_V1","CNB_ALPINE","CNB_BIONIC","PAKETO_JAMMY_TINY","PAKETO_JAMMY_BASE","PAKETO_JAMMY_FULL","PAKETO_TINY","PAKETO_BASE","PAKETO_FULL"],"description":"Buildpack stack to use. Defaults to recommended stack `HEROKU_24`.","example":"HEROKU_24","default":"HEROKU_24"},"buildpackLocators":{"type":"array","items":{"type":"string","description":"Url or registry identifier of custom Buildpack.","example":"https://buildpack-registry.heroku.com/cnb/mars/create-react-app"},"description":"Array of custom Buildpacks to use.","default":[]},"buildContext":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*$","description":"The working directory to build in.","example":"/","default":"/"},"useCache":{"type":"boolean","description":"Should build dependencies be cached?","example":false,"default":false}},"additionalProperties":false}},"required":["buildpack"],"additionalProperties":false,"description":"Build from a Buildpack"}],"description":"Build engine"},"buildConfiguration":{"type":"object","properties":{"prRestrictions":{"type":"array","items":{"type":"string","pattern":"^[^?:@$~ [\\]{}]*$","description":"A pull request build rule. Can contain `*` as a wildcard to match multiple branch names. For example, `feature/*` will build all commits from pull requests from branches that start with `feature/`.","example":"feature/*"},"description":"An array of pull request build rules. Only supported for build services. Each commit belonging to a pull request on a branch that matches one of the provided build rules will be built automatically."},"branchRestrictions":{"type":"array","items":{"type":"string","pattern":"^[^?:@$~ [\\]{}]*$","description":"A branch build rule. Can contain `*` as a wildcard to match multiple branch names. For example, `feature/*` will build all commits from branches that start with `feature/`.","example":"feature/*"},"description":"An array of branch build rules. Only supported for build services. Each commit belonging to a branch that matches one of the provided build rules will be built automatically."},"crossProjectAccess":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Allow this build service to be referenced by resources in other projects.","example":true},"projects":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The ID of a project to include or exclude.","example":"example-project"},"description":"A list of project IDs used as an allow list or deny list."},"isAllowList":{"type":"boolean","description":"If true, only the listed projects can use this build service. If false, all projects except the listed ones can use this build service."}},"required":["enabled","projects","isAllowList"],"additionalProperties":false,"description":"Controls which projects can use this build service."},"pathIgnoreRules":{"type":"array","items":{"type":"string","maxLength":260,"description":"A path ignore rule, following `.gitignore` syntax. For example, `*.md` will ignore all files ending with `.md`.","example":"README.md"},"maxItems":200,"description":"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."},"isAllowList":{"type":"boolean","description":"If `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`.","example":false},"ciIgnoreFlagsEnabled":{"type":"boolean","description":"If `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":{"type":"array","items":{"type":"string","maxLength":72,"description":"A commit ignore flag.","example":"[skip ci]"},"maxItems":200,"description":"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]\"]`","example":["[skip ci]","[ci skip]","[no ci]","[skip nf]","[nf skip]","[northflank skip]","[skip northflank]"]},"dockerfileTarget":{"type":"string","description":"If your Dockerfile contains multiple build stages, you can specify the target stage by entering its name here."},"dockerCredentials":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The ID of the docker credentials to use.","example":"example-docker-credential"}},"includeGitFolder":{"type":"boolean","description":"Include .git folder inside the build context"},"fullGitClone":{"type":"boolean","description":"Include the entire git history as part of the .git folder. Only relevant if \"includeGitFolder\" is set."},"enableGitLfs":{"type":"boolean","description":"Enable Git LFS support for the build"},"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false}},"additionalProperties":false},"buildArguments":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"An object containing the build arguments to set for the service","example":{"ARGUMENT_1":"abcdef","ARGUMENT_2":"12345"},"default":{}},"buildFiles":{"type":"object","properties":{},"description":"Secret files as JSON object, encrypted at rest. File path must be absolute","example":{"/dir/fileName":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"dockerSecretMounts":{"type":"object","properties":{},"description":"Docker secret mount contents as JSON object, encrypted at rest. Must be a valid Docker secret mount identifier","example":{"example-secret-mount_1":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}}},"required":["name","billing","vcsData","buildSettings"],"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Project > Services > General > Create","x-nf-team-scoped":true,"x-nf-subheading":"put service","x-nf-cli-command":["put","service","build"]},"v1-projects--projectId--services-build--serviceId--patch":{"operationId":"patchProjectsServicesBuildServiceid","summary":"Patch build service","description":"Updates a build service.","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"serviceId","type":"string","required":true,"description":"ID of the service","example":"example-service","in":"path","schema":{"name":"serviceId","type":"string","required":true,"description":"ID of the service","example":"example-service","in":"path"}}],"responses":{"200":{"description":"Details about the updated service.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":54,"description":"The name of the service.","example":"Example Service"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"A description of the service.","example":"A service description"},"stageId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"billing":{"type":"object","properties":{"deploymentPlan":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The ID of the deployment plan to use. (Deprecated - use buildPlan for build resources instead.).","example":"nf-compute-20"},"buildPlan":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The ID of the build plan to use.","example":"nf-compute-200-8"},"gpu":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"gpuType":{"type":"string"},"gpuCount":{"type":"integer"},"timesliced":{"type":"boolean"}},"required":["gpuType"],"additionalProperties":false}},"additionalProperties":false}},"additionalProperties":false},"infrastructure":{"type":"object","properties":{"architecture":{"type":"string","enum":["x86","arm"]}},"additionalProperties":false},"disabledCI":{"type":"boolean","description":"Whether CI (continuous integration) should be disabled.","default":false},"buildSource":{"type":"string","enum":["git","bundle"],"description":"Defines the build source for this resource","example":"git"},"vcsData":{"type":"object","properties":{"projectUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo to build.","example":"https://github.com/northflank/gatsby-with-northflank"},"projectType":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string","minLength":24,"maxLength":24,"description":"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 `vcsLinkId` is provided, Northflank will instead use your linked account with that ID."}},"required":["projectUrl","projectType"],"additionalProperties":false},"buildSettings":{"oneOf":[{"type":"object","properties":{"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false},"dockerfile":{"type":"object","properties":{"useCache":{"type":"boolean","description":"DEPRECATED: This field will be removed in the near future and currently has no effect."},"buildEngine":{"type":"string","enum":["buildkit","kaniko"],"description":"Build engine to use. Defaults to recommended build engine `buildkit`","example":"buildkit","default":"buildkit"},"dockerFilePath":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]+$","description":"The file path of the Dockerfile.","example":"/Dockerfile"},"dockerWorkDir":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*$","description":"The working directory of the Dockerfile.","example":"/"},"buildkit":{"type":"object","properties":{"useCache":{"type":"boolean","description":"Use persistent storage to cache build layers.","example":true,"default":false},"cacheStorageSize":{"type":"integer","description":"The amount of persistent storage available to each build in MB.","example":32768},"useInternalCache":{"type":"boolean","description":"DEPRECATED: This field will be removed in the near future.","default":false},"internalCacheStorage":{"type":"number","format":"float","description":"DEPRECATED: This field will be removed in the near future."}},"additionalProperties":false}},"required":["dockerFilePath","dockerWorkDir"],"additionalProperties":false}},"required":["dockerfile"],"additionalProperties":false,"description":"Build from a Dockerfile"},{"type":"object","properties":{"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false},"buildpack":{"type":"object","properties":{"builder":{"type":"string","enum":["HEROKU_24","HEROKU_22","HEROKU_22_CLASSIC","HEROKU_20","HEROKU_18","GOOGLE_22","GOOGLE_V1","CNB_ALPINE","CNB_BIONIC","PAKETO_JAMMY_TINY","PAKETO_JAMMY_BASE","PAKETO_JAMMY_FULL","PAKETO_TINY","PAKETO_BASE","PAKETO_FULL"],"description":"Buildpack stack to use. Defaults to recommended stack `HEROKU_24`.","example":"HEROKU_24","default":"HEROKU_24"},"buildpackLocators":{"type":"array","items":{"type":"string","description":"Url or registry identifier of custom Buildpack.","example":"https://buildpack-registry.heroku.com/cnb/mars/create-react-app"},"description":"Array of custom Buildpacks to use.","default":[]},"buildContext":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*$","description":"The working directory to build in.","example":"/","default":"/"},"useCache":{"type":"boolean","description":"Should build dependencies be cached?","example":false,"default":false}},"additionalProperties":false}},"required":["buildpack"],"additionalProperties":false,"description":"Build from a Buildpack"}],"description":"Build engine"},"buildConfiguration":{"type":"object","properties":{"prRestrictions":{"type":"array","items":{"type":"string","pattern":"^[^?:@$~ [\\]{}]*$","description":"A pull request build rule. Can contain `*` as a wildcard to match multiple branch names. For example, `feature/*` will build all commits from pull requests from branches that start with `feature/`.","example":"feature/*"},"description":"An array of pull request build rules. Only supported for build services. Each commit belonging to a pull request on a branch that matches one of the provided build rules will be built automatically."},"branchRestrictions":{"type":"array","items":{"type":"string","pattern":"^[^?:@$~ [\\]{}]*$","description":"A branch build rule. Can contain `*` as a wildcard to match multiple branch names. For example, `feature/*` will build all commits from branches that start with `feature/`.","example":"feature/*"},"description":"An array of branch build rules. Only supported for build services. Each commit belonging to a branch that matches one of the provided build rules will be built automatically."},"crossProjectAccess":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Allow this build service to be referenced by resources in other projects.","example":true},"projects":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The ID of a project to include or exclude.","example":"example-project"},"description":"A list of project IDs used as an allow list or deny list."},"isAllowList":{"type":"boolean","description":"If true, only the listed projects can use this build service. If false, all projects except the listed ones can use this build service."}},"required":["enabled","projects","isAllowList"],"additionalProperties":false,"description":"Controls which projects can use this build service."},"pathIgnoreRules":{"type":"array","items":{"type":"string","maxLength":260,"description":"A path ignore rule, following `.gitignore` syntax. For example, `*.md` will ignore all files ending with `.md`.","example":"README.md"},"maxItems":200,"description":"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."},"isAllowList":{"type":"boolean","description":"If `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`.","example":false},"ciIgnoreFlagsEnabled":{"type":"boolean","description":"If `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":{"type":"array","items":{"type":"string","maxLength":72,"description":"A commit ignore flag.","example":"[skip ci]"},"maxItems":200,"description":"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]\"]`","example":["[skip ci]","[ci skip]","[no ci]","[skip nf]","[nf skip]","[northflank skip]","[skip northflank]"]},"dockerfileTarget":{"type":"string","description":"If your Dockerfile contains multiple build stages, you can specify the target stage by entering its name here."},"dockerCredentials":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The ID of the docker credentials to use.","example":"example-docker-credential"}},"includeGitFolder":{"type":"boolean","description":"Include .git folder inside the build context"},"fullGitClone":{"type":"boolean","description":"Include the entire git history as part of the .git folder. Only relevant if \"includeGitFolder\" is set."},"enableGitLfs":{"type":"boolean","description":"Enable Git LFS support for the build"},"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false}},"additionalProperties":false},"buildArguments":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"An object containing the build arguments to set for the service","example":{"ARGUMENT_1":"abcdef","ARGUMENT_2":"12345"},"default":{}},"buildFiles":{"type":"object","properties":{},"description":"Secret files as JSON object, encrypted at rest. File path must be absolute","example":{"/dir/fileName":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"dockerSecretMounts":{"type":"object","properties":{},"description":"Docker secret mount contents as JSON object, encrypted at rest. Must be a valid Docker secret mount identifier","example":{"example-secret-mount_1":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"serviceType":{"type":"string","enum":["build"],"description":"Type of the service (combined, build or deployment)","example":"build"},"id":{"type":"string","description":"Identifier for the service","example":"example-service"},"appId":{"type":"string","description":"Full identifier used for service deployment","example":"/example-user/default-project/example-service"},"cluster":{"type":"object","properties":{"id":{"type":"string","description":"The id of the cluster associated with this project.","example":"nf-europe-west"},"name":{"type":"string","description":"The name of the cluster associated with this project.","example":"nf-europe-west"},"namespace":{"type":"string","description":"Namespace this resource is located within on the cluster.","example":"ns-8zy2mcjh9zn2"},"loadBalancers":{"type":"array","items":{"type":"string","example":"lb.659200800000000000000000.northflank.com"},"description":"Load balancer DNS for the cluster."}},"required":["id","name"],"additionalProperties":false,"description":"Cluster information"},"createdAt":{"type":"string","format":"date-time","description":"time of creation"},"updatedAt":{"type":"string","format":"date-time","description":"time of update"},"status":{"type":"object","properties":{"build":{"type":"object","properties":{"status":{"type":"string","enum":["QUEUED","PENDING","UNSCHEDULABLE","STARTING","CLONING","BUILDING","UPLOADING","ABORTED","FAILURE","SUBMISSION_FAILURE","SUCCESS","CRASHED","IN_PROGRESS"],"description":"The current status of the build.","example":"SUCCESS"},"lastTransitionTime":{"type":"string","format":"date-time","description":"The timestamp of when the build reached this status.","example":"2021-11-29T11:47:16.624Z"}},"required":["status"],"additionalProperties":false,"description":"Details about the status of the most recent build."}},"additionalProperties":false,"description":"Details about the current service status."}},"required":["name","billing","vcsData","buildSettings","serviceType","id","appId","cluster","status"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Services","project"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"A description of the service.","example":"A service description"},"stageId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"nullable":true},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"billing":{"type":"object","properties":{"deploymentPlan":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The ID of the deployment plan to use. (Deprecated - use buildPlan for build resources instead.).","example":"nf-compute-20"},"buildPlan":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The ID of the build plan to use.","example":"nf-compute-200-8"},"gpu":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"gpuType":{"type":"string"},"gpuCount":{"type":"integer"},"timesliced":{"type":"boolean"}},"additionalProperties":false}},"additionalProperties":false}},"additionalProperties":false},"disabledCI":{"type":"boolean","description":"Whether CI (continuous integration) should be disabled."},"buildSource":{"type":"string","enum":["git","bundle"],"description":"Defines the build source for this resource","example":"git"},"vcsData":{"type":"object","properties":{"projectUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo to build.","example":"https://github.com/northflank/gatsby-with-northflank"},"projectType":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string","minLength":24,"maxLength":24,"description":"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 `vcsLinkId` is provided, Northflank will instead use your linked account with that ID."}},"additionalProperties":false},"buildSettings":{"type":"object","properties":{"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false},"dockerfile":{"type":"object","properties":{"useCache":{"type":"boolean","description":"DEPRECATED: This field will be removed in the near future and currently has no effect."},"buildEngine":{"type":"string","enum":["buildkit","kaniko"],"description":"Build engine to use. Defaults to recommended build engine `buildkit`","example":"buildkit"},"dockerFilePath":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]+$","description":"The file path of the Dockerfile.","example":"/Dockerfile"},"dockerWorkDir":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*$","description":"The working directory of the Dockerfile.","example":"/"},"buildkit":{"type":"object","properties":{"useCache":{"type":"boolean","description":"Use persistent storage to cache build layers.","example":true},"cacheStorageSize":{"type":"integer","description":"The amount of persistent storage available to each build in MB.","example":32768},"useInternalCache":{"type":"boolean","description":"DEPRECATED: This field will be removed in the near future."},"internalCacheStorage":{"type":"number","format":"float","description":"DEPRECATED: This field will be removed in the near future."}},"additionalProperties":false}},"additionalProperties":false},"buildpack":{"type":"object","properties":{"builder":{"type":"string","enum":["HEROKU_24","HEROKU_22","HEROKU_22_CLASSIC","HEROKU_20","HEROKU_18","GOOGLE_22","GOOGLE_V1","CNB_ALPINE","CNB_BIONIC","PAKETO_JAMMY_TINY","PAKETO_JAMMY_BASE","PAKETO_JAMMY_FULL","PAKETO_TINY","PAKETO_BASE","PAKETO_FULL"],"description":"Buildpack stack to use. Defaults to recommended stack `HEROKU_24`.","example":"HEROKU_24"},"buildpackLocators":{"type":"array","items":{"type":"string","description":"Url or registry identifier of custom Buildpack.","example":"https://buildpack-registry.heroku.com/cnb/mars/create-react-app"},"description":"Array of custom Buildpacks to use."},"buildContext":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*$","description":"The working directory to build in.","example":"/"},"useCache":{"type":"boolean","description":"Should build dependencies be cached?","example":false}},"additionalProperties":false}},"additionalProperties":false},"buildConfiguration":{"type":"object","properties":{"prRestrictions":{"type":"array","items":{"type":"string","pattern":"^[^?:@$~ [\\]{}]*$","description":"A pull request build rule. Can contain `*` as a wildcard to match multiple branch names. For example, `feature/*` will build all commits from pull requests from branches that start with `feature/`.","example":"feature/*"},"description":"An array of pull request build rules. Only supported for build services. Each commit belonging to a pull request on a branch that matches one of the provided build rules will be built automatically."},"branchRestrictions":{"type":"array","items":{"type":"string","pattern":"^[^?:@$~ [\\]{}]*$","description":"A branch build rule. Can contain `*` as a wildcard to match multiple branch names. For example, `feature/*` will build all commits from branches that start with `feature/`.","example":"feature/*"},"description":"An array of branch build rules. Only supported for build services. Each commit belonging to a branch that matches one of the provided build rules will be built automatically."},"crossProjectAccess":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Allow this build service to be referenced by resources in other projects.","example":true},"projects":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The ID of a project to include or exclude.","example":"example-project"},"description":"A list of project IDs used as an allow list or deny list."},"isAllowList":{"type":"boolean","description":"If true, only the listed projects can use this build service. If false, all projects except the listed ones can use this build service."}},"required":["enabled","projects","isAllowList"],"additionalProperties":false,"description":"Controls which projects can use this build service."},"pathIgnoreRules":{"type":"array","items":{"type":"string","maxLength":260,"description":"A path ignore rule, following `.gitignore` syntax. For example, `*.md` will ignore all files ending with `.md`.","example":"README.md"},"maxItems":200,"description":"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."},"isAllowList":{"type":"boolean","description":"If `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`.","example":false},"ciIgnoreFlagsEnabled":{"type":"boolean","description":"If `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":{"type":"array","items":{"type":"string","maxLength":72,"description":"A commit ignore flag.","example":"[skip ci]"},"maxItems":200,"description":"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]\"]`","example":["[skip ci]","[ci skip]","[no ci]","[skip nf]","[nf skip]","[northflank skip]","[skip northflank]"]},"dockerfileTarget":{"type":"string","description":"If your Dockerfile contains multiple build stages, you can specify the target stage by entering its name here."},"dockerCredentials":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The ID of the docker credentials to use.","example":"example-docker-credential"}},"includeGitFolder":{"type":"boolean","description":"Include .git folder inside the build context"},"fullGitClone":{"type":"boolean","description":"Include the entire git history as part of the .git folder. Only relevant if \"includeGitFolder\" is set."},"enableGitLfs":{"type":"boolean","description":"Enable Git LFS support for the build"},"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false}},"additionalProperties":false},"buildArguments":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"An object containing the build arguments to set for the service","example":{"ARGUMENT_1":"abcdef","ARGUMENT_2":"12345"}},"buildFiles":{"type":"object","properties":{},"description":"Secret files as JSON object, encrypted at rest. File path must be absolute","example":{"/dir/fileName":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"dockerSecretMounts":{"type":"object","properties":{},"description":"Docker secret mount contents as JSON object, encrypted at rest. Must be a valid Docker secret mount identifier","example":{"example-secret-mount_1":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}}},"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Project > Services > General > Update","x-nf-team-scoped":true,"x-nf-subheading":"patch service","x-nf-cli-command":["patch","service","build"]},"v1-projects--projectId--services-build--serviceId--patch-team-scoped":{"operationId":"patchProjectsServicesBuildServiceid","summary":"Patch build service","description":"Updates a build service.","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"serviceId","type":"string","required":true,"description":"ID of the service","example":"example-service","in":"path","schema":{"name":"serviceId","type":"string","required":true,"description":"ID of the service","example":"example-service","in":"path"}}],"responses":{"200":{"description":"Details about the updated service.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":54,"description":"The name of the service.","example":"Example Service"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"A description of the service.","example":"A service description"},"stageId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"billing":{"type":"object","properties":{"deploymentPlan":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The ID of the deployment plan to use. (Deprecated - use buildPlan for build resources instead.).","example":"nf-compute-20"},"buildPlan":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The ID of the build plan to use.","example":"nf-compute-200-8"},"gpu":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"gpuType":{"type":"string"},"gpuCount":{"type":"integer"},"timesliced":{"type":"boolean"}},"required":["gpuType"],"additionalProperties":false}},"additionalProperties":false}},"additionalProperties":false},"infrastructure":{"type":"object","properties":{"architecture":{"type":"string","enum":["x86","arm"]}},"additionalProperties":false},"disabledCI":{"type":"boolean","description":"Whether CI (continuous integration) should be disabled.","default":false},"buildSource":{"type":"string","enum":["git","bundle"],"description":"Defines the build source for this resource","example":"git"},"vcsData":{"type":"object","properties":{"projectUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo to build.","example":"https://github.com/northflank/gatsby-with-northflank"},"projectType":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string","minLength":24,"maxLength":24,"description":"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 `vcsLinkId` is provided, Northflank will instead use your linked account with that ID."}},"required":["projectUrl","projectType"],"additionalProperties":false},"buildSettings":{"oneOf":[{"type":"object","properties":{"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false},"dockerfile":{"type":"object","properties":{"useCache":{"type":"boolean","description":"DEPRECATED: This field will be removed in the near future and currently has no effect."},"buildEngine":{"type":"string","enum":["buildkit","kaniko"],"description":"Build engine to use. Defaults to recommended build engine `buildkit`","example":"buildkit","default":"buildkit"},"dockerFilePath":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]+$","description":"The file path of the Dockerfile.","example":"/Dockerfile"},"dockerWorkDir":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*$","description":"The working directory of the Dockerfile.","example":"/"},"buildkit":{"type":"object","properties":{"useCache":{"type":"boolean","description":"Use persistent storage to cache build layers.","example":true,"default":false},"cacheStorageSize":{"type":"integer","description":"The amount of persistent storage available to each build in MB.","example":32768},"useInternalCache":{"type":"boolean","description":"DEPRECATED: This field will be removed in the near future.","default":false},"internalCacheStorage":{"type":"number","format":"float","description":"DEPRECATED: This field will be removed in the near future."}},"additionalProperties":false}},"required":["dockerFilePath","dockerWorkDir"],"additionalProperties":false}},"required":["dockerfile"],"additionalProperties":false,"description":"Build from a Dockerfile"},{"type":"object","properties":{"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false},"buildpack":{"type":"object","properties":{"builder":{"type":"string","enum":["HEROKU_24","HEROKU_22","HEROKU_22_CLASSIC","HEROKU_20","HEROKU_18","GOOGLE_22","GOOGLE_V1","CNB_ALPINE","CNB_BIONIC","PAKETO_JAMMY_TINY","PAKETO_JAMMY_BASE","PAKETO_JAMMY_FULL","PAKETO_TINY","PAKETO_BASE","PAKETO_FULL"],"description":"Buildpack stack to use. Defaults to recommended stack `HEROKU_24`.","example":"HEROKU_24","default":"HEROKU_24"},"buildpackLocators":{"type":"array","items":{"type":"string","description":"Url or registry identifier of custom Buildpack.","example":"https://buildpack-registry.heroku.com/cnb/mars/create-react-app"},"description":"Array of custom Buildpacks to use.","default":[]},"buildContext":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*$","description":"The working directory to build in.","example":"/","default":"/"},"useCache":{"type":"boolean","description":"Should build dependencies be cached?","example":false,"default":false}},"additionalProperties":false}},"required":["buildpack"],"additionalProperties":false,"description":"Build from a Buildpack"}],"description":"Build engine"},"buildConfiguration":{"type":"object","properties":{"prRestrictions":{"type":"array","items":{"type":"string","pattern":"^[^?:@$~ [\\]{}]*$","description":"A pull request build rule. Can contain `*` as a wildcard to match multiple branch names. For example, `feature/*` will build all commits from pull requests from branches that start with `feature/`.","example":"feature/*"},"description":"An array of pull request build rules. Only supported for build services. Each commit belonging to a pull request on a branch that matches one of the provided build rules will be built automatically."},"branchRestrictions":{"type":"array","items":{"type":"string","pattern":"^[^?:@$~ [\\]{}]*$","description":"A branch build rule. Can contain `*` as a wildcard to match multiple branch names. For example, `feature/*` will build all commits from branches that start with `feature/`.","example":"feature/*"},"description":"An array of branch build rules. Only supported for build services. Each commit belonging to a branch that matches one of the provided build rules will be built automatically."},"crossProjectAccess":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Allow this build service to be referenced by resources in other projects.","example":true},"projects":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The ID of a project to include or exclude.","example":"example-project"},"description":"A list of project IDs used as an allow list or deny list."},"isAllowList":{"type":"boolean","description":"If true, only the listed projects can use this build service. If false, all projects except the listed ones can use this build service."}},"required":["enabled","projects","isAllowList"],"additionalProperties":false,"description":"Controls which projects can use this build service."},"pathIgnoreRules":{"type":"array","items":{"type":"string","maxLength":260,"description":"A path ignore rule, following `.gitignore` syntax. For example, `*.md` will ignore all files ending with `.md`.","example":"README.md"},"maxItems":200,"description":"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."},"isAllowList":{"type":"boolean","description":"If `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`.","example":false},"ciIgnoreFlagsEnabled":{"type":"boolean","description":"If `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":{"type":"array","items":{"type":"string","maxLength":72,"description":"A commit ignore flag.","example":"[skip ci]"},"maxItems":200,"description":"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]\"]`","example":["[skip ci]","[ci skip]","[no ci]","[skip nf]","[nf skip]","[northflank skip]","[skip northflank]"]},"dockerfileTarget":{"type":"string","description":"If your Dockerfile contains multiple build stages, you can specify the target stage by entering its name here."},"dockerCredentials":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The ID of the docker credentials to use.","example":"example-docker-credential"}},"includeGitFolder":{"type":"boolean","description":"Include .git folder inside the build context"},"fullGitClone":{"type":"boolean","description":"Include the entire git history as part of the .git folder. Only relevant if \"includeGitFolder\" is set."},"enableGitLfs":{"type":"boolean","description":"Enable Git LFS support for the build"},"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false}},"additionalProperties":false},"buildArguments":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"An object containing the build arguments to set for the service","example":{"ARGUMENT_1":"abcdef","ARGUMENT_2":"12345"},"default":{}},"buildFiles":{"type":"object","properties":{},"description":"Secret files as JSON object, encrypted at rest. File path must be absolute","example":{"/dir/fileName":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"dockerSecretMounts":{"type":"object","properties":{},"description":"Docker secret mount contents as JSON object, encrypted at rest. Must be a valid Docker secret mount identifier","example":{"example-secret-mount_1":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"serviceType":{"type":"string","enum":["build"],"description":"Type of the service (combined, build or deployment)","example":"build"},"id":{"type":"string","description":"Identifier for the service","example":"example-service"},"appId":{"type":"string","description":"Full identifier used for service deployment","example":"/example-user/default-project/example-service"},"cluster":{"type":"object","properties":{"id":{"type":"string","description":"The id of the cluster associated with this project.","example":"nf-europe-west"},"name":{"type":"string","description":"The name of the cluster associated with this project.","example":"nf-europe-west"},"namespace":{"type":"string","description":"Namespace this resource is located within on the cluster.","example":"ns-8zy2mcjh9zn2"},"loadBalancers":{"type":"array","items":{"type":"string","example":"lb.659200800000000000000000.northflank.com"},"description":"Load balancer DNS for the cluster."}},"required":["id","name"],"additionalProperties":false,"description":"Cluster information"},"createdAt":{"type":"string","format":"date-time","description":"time of creation"},"updatedAt":{"type":"string","format":"date-time","description":"time of update"},"status":{"type":"object","properties":{"build":{"type":"object","properties":{"status":{"type":"string","enum":["QUEUED","PENDING","UNSCHEDULABLE","STARTING","CLONING","BUILDING","UPLOADING","ABORTED","FAILURE","SUBMISSION_FAILURE","SUCCESS","CRASHED","IN_PROGRESS"],"description":"The current status of the build.","example":"SUCCESS"},"lastTransitionTime":{"type":"string","format":"date-time","description":"The timestamp of when the build reached this status.","example":"2021-11-29T11:47:16.624Z"}},"required":["status"],"additionalProperties":false,"description":"Details about the status of the most recent build."}},"additionalProperties":false,"description":"Details about the current service status."}},"required":["name","billing","vcsData","buildSettings","serviceType","id","appId","cluster","status"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Services","project"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"A description of the service.","example":"A service description"},"stageId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"nullable":true},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"billing":{"type":"object","properties":{"deploymentPlan":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The ID of the deployment plan to use. (Deprecated - use buildPlan for build resources instead.).","example":"nf-compute-20"},"buildPlan":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The ID of the build plan to use.","example":"nf-compute-200-8"},"gpu":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"gpuType":{"type":"string"},"gpuCount":{"type":"integer"},"timesliced":{"type":"boolean"}},"additionalProperties":false}},"additionalProperties":false}},"additionalProperties":false},"disabledCI":{"type":"boolean","description":"Whether CI (continuous integration) should be disabled."},"buildSource":{"type":"string","enum":["git","bundle"],"description":"Defines the build source for this resource","example":"git"},"vcsData":{"type":"object","properties":{"projectUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo to build.","example":"https://github.com/northflank/gatsby-with-northflank"},"projectType":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string","minLength":24,"maxLength":24,"description":"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 `vcsLinkId` is provided, Northflank will instead use your linked account with that ID."}},"additionalProperties":false},"buildSettings":{"type":"object","properties":{"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false},"dockerfile":{"type":"object","properties":{"useCache":{"type":"boolean","description":"DEPRECATED: This field will be removed in the near future and currently has no effect."},"buildEngine":{"type":"string","enum":["buildkit","kaniko"],"description":"Build engine to use. Defaults to recommended build engine `buildkit`","example":"buildkit"},"dockerFilePath":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]+$","description":"The file path of the Dockerfile.","example":"/Dockerfile"},"dockerWorkDir":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*$","description":"The working directory of the Dockerfile.","example":"/"},"buildkit":{"type":"object","properties":{"useCache":{"type":"boolean","description":"Use persistent storage to cache build layers.","example":true},"cacheStorageSize":{"type":"integer","description":"The amount of persistent storage available to each build in MB.","example":32768},"useInternalCache":{"type":"boolean","description":"DEPRECATED: This field will be removed in the near future."},"internalCacheStorage":{"type":"number","format":"float","description":"DEPRECATED: This field will be removed in the near future."}},"additionalProperties":false}},"additionalProperties":false},"buildpack":{"type":"object","properties":{"builder":{"type":"string","enum":["HEROKU_24","HEROKU_22","HEROKU_22_CLASSIC","HEROKU_20","HEROKU_18","GOOGLE_22","GOOGLE_V1","CNB_ALPINE","CNB_BIONIC","PAKETO_JAMMY_TINY","PAKETO_JAMMY_BASE","PAKETO_JAMMY_FULL","PAKETO_TINY","PAKETO_BASE","PAKETO_FULL"],"description":"Buildpack stack to use. Defaults to recommended stack `HEROKU_24`.","example":"HEROKU_24"},"buildpackLocators":{"type":"array","items":{"type":"string","description":"Url or registry identifier of custom Buildpack.","example":"https://buildpack-registry.heroku.com/cnb/mars/create-react-app"},"description":"Array of custom Buildpacks to use."},"buildContext":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*$","description":"The working directory to build in.","example":"/"},"useCache":{"type":"boolean","description":"Should build dependencies be cached?","example":false}},"additionalProperties":false}},"additionalProperties":false},"buildConfiguration":{"type":"object","properties":{"prRestrictions":{"type":"array","items":{"type":"string","pattern":"^[^?:@$~ [\\]{}]*$","description":"A pull request build rule. Can contain `*` as a wildcard to match multiple branch names. For example, `feature/*` will build all commits from pull requests from branches that start with `feature/`.","example":"feature/*"},"description":"An array of pull request build rules. Only supported for build services. Each commit belonging to a pull request on a branch that matches one of the provided build rules will be built automatically."},"branchRestrictions":{"type":"array","items":{"type":"string","pattern":"^[^?:@$~ [\\]{}]*$","description":"A branch build rule. Can contain `*` as a wildcard to match multiple branch names. For example, `feature/*` will build all commits from branches that start with `feature/`.","example":"feature/*"},"description":"An array of branch build rules. Only supported for build services. Each commit belonging to a branch that matches one of the provided build rules will be built automatically."},"crossProjectAccess":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Allow this build service to be referenced by resources in other projects.","example":true},"projects":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The ID of a project to include or exclude.","example":"example-project"},"description":"A list of project IDs used as an allow list or deny list."},"isAllowList":{"type":"boolean","description":"If true, only the listed projects can use this build service. If false, all projects except the listed ones can use this build service."}},"required":["enabled","projects","isAllowList"],"additionalProperties":false,"description":"Controls which projects can use this build service."},"pathIgnoreRules":{"type":"array","items":{"type":"string","maxLength":260,"description":"A path ignore rule, following `.gitignore` syntax. For example, `*.md` will ignore all files ending with `.md`.","example":"README.md"},"maxItems":200,"description":"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."},"isAllowList":{"type":"boolean","description":"If `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`.","example":false},"ciIgnoreFlagsEnabled":{"type":"boolean","description":"If `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":{"type":"array","items":{"type":"string","maxLength":72,"description":"A commit ignore flag.","example":"[skip ci]"},"maxItems":200,"description":"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]\"]`","example":["[skip ci]","[ci skip]","[no ci]","[skip nf]","[nf skip]","[northflank skip]","[skip northflank]"]},"dockerfileTarget":{"type":"string","description":"If your Dockerfile contains multiple build stages, you can specify the target stage by entering its name here."},"dockerCredentials":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The ID of the docker credentials to use.","example":"example-docker-credential"}},"includeGitFolder":{"type":"boolean","description":"Include .git folder inside the build context"},"fullGitClone":{"type":"boolean","description":"Include the entire git history as part of the .git folder. Only relevant if \"includeGitFolder\" is set."},"enableGitLfs":{"type":"boolean","description":"Enable Git LFS support for the build"},"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false}},"additionalProperties":false},"buildArguments":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"An object containing the build arguments to set for the service","example":{"ARGUMENT_1":"abcdef","ARGUMENT_2":"12345"}},"buildFiles":{"type":"object","properties":{},"description":"Secret files as JSON object, encrypted at rest. File path must be absolute","example":{"/dir/fileName":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"dockerSecretMounts":{"type":"object","properties":{},"description":"Docker secret mount contents as JSON object, encrypted at rest. Must be a valid Docker secret mount identifier","example":{"example-secret-mount_1":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}}},"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Project > Services > General > Update","x-nf-team-scoped":true,"x-nf-subheading":"patch service","x-nf-cli-command":["patch","service","build"]},"v1-projects--projectId--services-combined-post":{"operationId":"postProjectsServicesCombined","summary":"Create combined service","description":"Creates a new combined service.","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}}],"responses":{"200":{"description":"Details about the newly created service.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":54,"description":"The name of the service.","example":"Example Service"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"A description of the service.","example":"A service description"},"stageId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"billing":{"type":"object","properties":{"deploymentPlan":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The ID of the deployment plan to use.","example":"nf-compute-20"},"buildPlan":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The ID of the build plan to use.","example":"nf-compute-200-8"},"gpu":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"gpuType":{"type":"string"},"gpuCount":{"type":"integer"},"timesliced":{"type":"boolean"}},"required":["gpuType"],"additionalProperties":false}},"additionalProperties":false}},"required":["deploymentPlan"],"additionalProperties":false},"infrastructure":{"type":"object","properties":{"architecture":{"type":"string","enum":["x86","arm"]}},"additionalProperties":false},"ports":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":1,"maxLength":8,"description":"The name used to identify the port.","example":"p01"},"internalPort":{"type":"integer","minimum":1,"maximum":65535,"description":"The port number.","example":8080},"public":{"type":"boolean","description":"If true, the port will be exposed publicly.","example":true,"default":false},"security":{"type":"object","properties":{"credentials":{"type":"array","items":{"type":"object","properties":{"username":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The username to access the service","example":"admin"},"password":{"type":"string","description":"The password to access the service with this username.","example":"password123"},"type":{"type":"string","enum":["basic-auth"],"description":"The type of authentication used","example":"basic-auth"}},"required":["username","password","type"],"additionalProperties":false},"description":"An array of credentials to access the service."},"ip":{"type":"array","items":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","description":"An IP address used by this rule","example":"127.0.0.1"},"description":"An array of IP addresses used for this rule"},"action":{"type":"string","enum":["ALLOW","DENY"],"description":"The action for this rule.","example":"DENY"}},"required":["addresses","action"],"additionalProperties":false},"description":"An array of IP address policies."},"policies":{"type":"array","items":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","description":"An IP address used by this rule","example":"127.0.0.1"},"description":"An array of IP addresses used for this rule"},"action":{"type":"string","enum":["ALLOW","DENY"],"description":"The action for this rule.","example":"DENY"}},"required":["addresses","action"],"additionalProperties":false},"description":"An array of IP address policies."},"sso":{"type":"object","properties":{"organizationId":{"type":"string","description":"ID of the SSO organization that the user will have to be a member of"},"directoryGroupIds":{"type":"array","items":{"type":"string"},"description":"Array of directory groups that will have access"},"allowAnyOrgUsers":{"type":"boolean","description":"Allow entire organization to access this service"},"validateInternalTraffic":{"type":"boolean","description":"Enforce internal traffic through SSO authentication flow"},"setCookieOnRootDomain":{"type":"boolean","description":"Set SSO authentication cookie on root domain"},"allowInternalTrafficViaPublicDns":{"type":"boolean","description":"Allow internal traffic from same or shared projects via public DNS to skip SSO authentication flow"}},"additionalProperties":false,"description":"Configure port authentication via SSO"},"headers":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"regexMode":{"type":"boolean","example":false,"default":false},"name":{"type":"string","pattern":"^[a-zA-Z0-9_\\-%$+]+$","example":"headerName"},"value":{"type":"string","example":"headerValue"}},"required":["name","value"],"additionalProperties":false,"description":"Matches provided headers as strings."},{"type":"object","properties":{"regexMode":{"type":"boolean","example":true,"default":false},"name":{"type":"string","example":"headerName"},"value":{"type":"string","example":"headerValue"}},"required":["name","value"],"additionalProperties":false,"description":"Matches provided headers as regex."}]},"description":"List of header authentication settings, it checks the presence of all headers and compares it against the expected value. Wildcard (*) is supported."},"verificationMode":{"type":"string","enum":["or","and"],"description":"Mode used to verify multiple security features like ip policies and SSO authentication"},"securePathConfiguration":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Enable security policies on a path-level style"},"skipSecurityPoliciesForInternalTrafficViaPublicDns":{"type":"boolean","description":"Allow internal traffic from same or shared projects via public DNS to skip all security policies"},"rules":{"type":"array","items":{"type":"object","properties":{"paths":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"path":{"type":"string","pattern":"^\\/([_a-zA-Z0-9-&?=.]*)((\\/[_a-zA-Z0-9-&?=.]+)*(\\/)?)?$"},"routingMode":{"type":"string","enum":["prefix"],"description":"Mode of the path, determining how the URI will be interpreted.","example":"prefix"},"priority":{"type":"integer","minimum":0,"maximum":100,"example":80}},"required":["path","routingMode","priority"],"additionalProperties":false,"description":"Route when the path starts with the provided prefix."},{"type":"object","properties":{"path":{"type":"string","pattern":"^\\/([_a-zA-Z0-9-&?=.]*)((\\/[_a-zA-Z0-9-&?=.]+)*(\\/)?)?$"},"routingMode":{"type":"string","enum":["exact"],"description":"Mode of the path, determining how the URI will be interpreted.","example":"exact"},"priority":{"type":"integer","minimum":0,"maximum":100,"example":80}},"required":["path","routingMode","priority"],"additionalProperties":false,"description":"Route when the path is an exact match."},{"type":"object","properties":{"path":{"type":"string"},"routingMode":{"type":"string","enum":["regex"],"description":"Mode of the path, determining how the URI will be interpreted.","example":"regex"},"priority":{"type":"integer","minimum":0,"maximum":100,"example":80}},"required":["path","routingMode","priority"],"additionalProperties":false,"description":"Route when the path matches the provided regex."}],"description":"Data about how the path should be handled."},"description":"Array of path objects which represent the paths and their priority for which the security policies will be enforced"},"accessMode":{"type":"string","enum":["protected","unprotected"],"description":"Specify the way the path rule will behave when processing policies. This enables an allow-list/deny-list approach for access control on each path","example":"protected"},"securityPolicies":{"type":"object","properties":{"orPolicies":{"type":"object","properties":{"credentials":{"type":"array","items":{"type":"object","properties":{"username":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The username to access the service","example":"admin"},"password":{"type":"string","description":"The password to access the service with this username.","example":"password123"},"type":{"type":"string","enum":["basic-auth"],"description":"The type of authentication used","example":"basic-auth"}},"required":["username","password","type"],"additionalProperties":false},"description":"An array of credentials to access the service."},"ip":{"type":"array","items":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","description":"An IP address used by this rule","example":"127.0.0.1"},"description":"An array of IP addresses used for this rule"},"action":{"type":"string","enum":["ALLOW","DENY"],"description":"The action for this rule.","example":"DENY"}},"required":["addresses","action"],"additionalProperties":false},"description":"An array of IP address policies."},"policies":{"type":"array","items":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","description":"An IP address used by this rule","example":"127.0.0.1"},"description":"An array of IP addresses used for this rule"},"action":{"type":"string","enum":["ALLOW","DENY"],"description":"The action for this rule.","example":"DENY"}},"required":["addresses","action"],"additionalProperties":false},"description":"An array of IP address policies."},"sso":{"type":"object","properties":{"organizationId":{"type":"string","description":"ID of the SSO organization that the user will have to be a member of"},"directoryGroupIds":{"type":"array","items":{"type":"string"},"description":"Array of directory groups that will have access"},"allowAnyOrgUsers":{"type":"boolean","description":"Allow entire organization to access this service"},"validateInternalTraffic":{"type":"boolean","description":"Enforce internal traffic through SSO authentication flow"},"setCookieOnRootDomain":{"type":"boolean","description":"Set SSO authentication cookie on root domain"},"allowInternalTrafficViaPublicDns":{"type":"boolean","description":"Allow internal traffic from same or shared projects via public DNS to skip SSO authentication flow"}},"additionalProperties":false,"description":"Configure port authentication via SSO"},"headers":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"regexMode":{"type":"boolean","example":false,"default":false},"name":{"type":"string","pattern":"^[a-zA-Z0-9_\\-%$+]+$","example":"headerName"},"value":{"type":"string","example":"headerValue"}},"required":["name","value"],"additionalProperties":false,"description":"Matches provided headers as strings."},{"type":"object","properties":{"regexMode":{"type":"boolean","example":true,"default":false},"name":{"type":"string","example":"headerName"},"value":{"type":"string","example":"headerValue"}},"required":["name","value"],"additionalProperties":false,"description":"Matches provided headers as regex."}]},"description":"List of header authentication settings, it checks the presence of all headers and compares it against the expected value. Wildcard (*) is supported."}},"additionalProperties":false},"requiredPolicies":{"type":"object","properties":{"credentials":{"type":"array","items":{"type":"object","properties":{"username":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The username to access the service","example":"admin"},"password":{"type":"string","description":"The password to access the service with this username.","example":"password123"},"type":{"type":"string","enum":["basic-auth"],"description":"The type of authentication used","example":"basic-auth"}},"required":["username","password","type"],"additionalProperties":false},"description":"An array of credentials to access the service."},"ip":{"type":"array","items":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","description":"An IP address used by this rule","example":"127.0.0.1"},"description":"An array of IP addresses used for this rule"},"action":{"type":"string","enum":["ALLOW","DENY"],"description":"The action for this rule.","example":"DENY"}},"required":["addresses","action"],"additionalProperties":false},"description":"An array of IP address policies."},"policies":{"type":"array","items":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","description":"An IP address used by this rule","example":"127.0.0.1"},"description":"An array of IP addresses used for this rule"},"action":{"type":"string","enum":["ALLOW","DENY"],"description":"The action for this rule.","example":"DENY"}},"required":["addresses","action"],"additionalProperties":false},"description":"An array of IP address policies."},"sso":{"type":"object","properties":{"organizationId":{"type":"string","description":"ID of the SSO organization that the user will have to be a member of"},"directoryGroupIds":{"type":"array","items":{"type":"string"},"description":"Array of directory groups that will have access"},"allowAnyOrgUsers":{"type":"boolean","description":"Allow entire organization to access this service"},"validateInternalTraffic":{"type":"boolean","description":"Enforce internal traffic through SSO authentication flow"},"setCookieOnRootDomain":{"type":"boolean","description":"Set SSO authentication cookie on root domain"},"allowInternalTrafficViaPublicDns":{"type":"boolean","description":"Allow internal traffic from same or shared projects via public DNS to skip SSO authentication flow"}},"additionalProperties":false,"description":"Configure port authentication via SSO"},"headers":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"regexMode":{"type":"boolean","example":false,"default":false},"name":{"type":"string","pattern":"^[a-zA-Z0-9_\\-%$+]+$","example":"headerName"},"value":{"type":"string","example":"headerValue"}},"required":["name","value"],"additionalProperties":false,"description":"Matches provided headers as strings."},{"type":"object","properties":{"regexMode":{"type":"boolean","example":true,"default":false},"name":{"type":"string","example":"headerName"},"value":{"type":"string","example":"headerValue"}},"required":["name","value"],"additionalProperties":false,"description":"Matches provided headers as regex."}]},"description":"List of header authentication settings, it checks the presence of all headers and compares it against the expected value. Wildcard (*) is supported."}},"additionalProperties":false}},"additionalProperties":false}},"required":["paths","accessMode"],"additionalProperties":false},"default":[]}},"additionalProperties":false}},"additionalProperties":false,"default":{"credentials":[],"policies":[],"sso":{}}},"domains":{"type":"array","items":{"type":"string","description":"A domain to redirect to this port.","example":"app.example.com"},"description":"An array of domains to redirect to this port. Each domain must first be verified and registered to your account.","default":[]},"disableNfDomain":{"type":"boolean","description":"Disable routing on the default code.run domain for public HTTP ports with custom domains.","default":false},"advancedOptions":{"type":"object","properties":{"enableTlsPassthrough":{"type":"boolean","description":"Whether this port should use pass through mode for TLS"}},"additionalProperties":false},"protocol":{"type":"string","oneOf":[{"type":"string","enum":["HTTP","HTTP/2"]},{"type":"string","enum":["HTTP","HTTP/2","TCP","UDP"]}],"description":"The protocol to use for the port.","example":"HTTP"}},"required":["name","internalPort","protocol"],"additionalProperties":false},"default":[]},"disabledCI":{"type":"boolean","description":"Whether CI (continuous integration) should be disabled.","default":false},"buildSource":{"type":"string","enum":["git","bundle"],"description":"Defines the build source for this resource","example":"git"},"vcsData":{"type":"object","properties":{"projectUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo to build.","example":"https://github.com/northflank/gatsby-with-northflank"},"projectType":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string","minLength":24,"maxLength":24,"description":"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 `vcsLinkId` is provided, Northflank will instead use your linked account with that ID."},"projectBranch":{"type":"string","description":"The name of the branch to use.","example":"master"}},"required":["projectUrl","projectType","projectBranch"],"additionalProperties":false},"bundleData":{"type":"object","properties":{"bundleUrl":{"type":"string","description":"URL of the bundle to be built","example":"https://example.com/archive.tar"},"branch":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"Branch identifier for the bundle.","example":"main"}},"required":["bundleUrl","branch"],"additionalProperties":false},"buildSettings":{"oneOf":[{"type":"object","properties":{"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false},"dockerfile":{"type":"object","properties":{"useCache":{"type":"boolean","description":"DEPRECATED: This field will be removed in the near future and currently has no effect."},"buildEngine":{"type":"string","enum":["buildkit","kaniko"],"description":"Build engine to use. Defaults to recommended build engine `buildkit`","example":"buildkit","default":"buildkit"},"dockerFilePath":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]+$","description":"The file path of the Dockerfile.","example":"/Dockerfile"},"dockerWorkDir":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*$","description":"The working directory of the Dockerfile.","example":"/"},"buildkit":{"type":"object","properties":{"useCache":{"type":"boolean","description":"Use persistent storage to cache build layers.","example":true,"default":false},"cacheStorageSize":{"type":"integer","description":"The amount of persistent storage available to each build in MB.","example":32768},"useInternalCache":{"type":"boolean","description":"DEPRECATED: This field will be removed in the near future.","default":false},"internalCacheStorage":{"type":"number","format":"float","description":"DEPRECATED: This field will be removed in the near future."}},"additionalProperties":false}},"required":["dockerFilePath","dockerWorkDir"],"additionalProperties":false}},"required":["dockerfile"],"additionalProperties":false,"description":"Build from a Dockerfile"},{"type":"object","properties":{"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false},"buildpack":{"type":"object","properties":{"builder":{"type":"string","enum":["HEROKU_24","HEROKU_22","HEROKU_22_CLASSIC","HEROKU_20","HEROKU_18","GOOGLE_22","GOOGLE_V1","CNB_ALPINE","CNB_BIONIC","PAKETO_JAMMY_TINY","PAKETO_JAMMY_BASE","PAKETO_JAMMY_FULL","PAKETO_TINY","PAKETO_BASE","PAKETO_FULL"],"description":"Buildpack stack to use. Defaults to recommended stack `HEROKU_24`.","example":"HEROKU_24","default":"HEROKU_24"},"buildpackLocators":{"type":"array","items":{"type":"string","description":"Url or registry identifier of custom Buildpack.","example":"https://buildpack-registry.heroku.com/cnb/mars/create-react-app"},"description":"Array of custom Buildpacks to use.","default":[]},"buildContext":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*$","description":"The working directory to build in.","example":"/","default":"/"},"useCache":{"type":"boolean","description":"Should build dependencies be cached?","example":false,"default":false}},"additionalProperties":false}},"required":["buildpack"],"additionalProperties":false,"description":"Build from a Buildpack"}],"description":"Build engine"},"buildConfiguration":{"type":"object","properties":{"pathIgnoreRules":{"type":"array","items":{"type":"string","maxLength":260,"description":"A path ignore rule, following `.gitignore` syntax. For example, `*.md` will ignore all files ending with `.md`.","example":"README.md"},"maxItems":200,"description":"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."},"isAllowList":{"type":"boolean","description":"If `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`.","example":false},"ciIgnoreFlagsEnabled":{"type":"boolean","description":"If `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":{"type":"array","items":{"type":"string","maxLength":72,"description":"A commit ignore flag.","example":"[skip ci]"},"maxItems":200,"description":"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]\"]`","example":["[skip ci]","[ci skip]","[no ci]","[skip nf]","[nf skip]","[northflank skip]","[skip northflank]"]},"dockerfileTarget":{"type":"string","description":"If your Dockerfile contains multiple build stages, you can specify the target stage by entering its name here."},"dockerCredentials":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The ID of the docker credentials to use.","example":"example-docker-credential"}},"includeGitFolder":{"type":"boolean","description":"Include .git folder inside the build context"},"fullGitClone":{"type":"boolean","description":"Include the entire git history as part of the .git folder. Only relevant if \"includeGitFolder\" is set."},"enableGitLfs":{"type":"boolean","description":"Enable Git LFS support for the build"},"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false}},"additionalProperties":false,"default":{"pathIgnoreRules":[],"isAllowList":false,"ciIgnoreFlagsEnabled":false}},"runtimeEnvironment":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"An object containing the runtime environment to set for the service. Keys may only contain letters, numbers, hyphens, forward slashes and dots.","example":{"VARIABLE_1":"abcdef","VARIABLE_2":"12345"},"default":{}},"runtimeFiles":{"type":"object","properties":{},"description":"Secret files as JSON object, encrypted at rest. File path must be absolute","example":{"/dir/fileName":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"buildArguments":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"An object containing the build arguments to set for the service. Keys may only contain letters, numbers, hyphens, forward slashes and dots.","example":{"ARGUMENT_1":"abcdef","ARGUMENT_2":"12345"},"default":{}},"buildFiles":{"type":"object","properties":{},"description":"Secret files as JSON object, encrypted at rest. File path must be absolute","example":{"/dir/fileName":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"dockerSecretMounts":{"type":"object","properties":{},"description":"Docker secret mount contents as JSON object, encrypted at rest. Must be a valid Docker secret mount identifier","example":{"example-secret-mount_1":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"healthChecks":{"type":"array","items":{"type":"object","properties":{"protocol":{"type":"string","enum":["HTTP","CMD","TCP"],"description":"The protocol to access the health check with.","example":"HTTP"},"type":{"type":"string","enum":["livenessProbe","readinessProbe","startupProbe"],"description":"The type of health check.","example":"readinessProbe"},"path":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*((\\?([a-zA-Z0-9-._]+(=[a-zA-Z0-9-._]+)?)*)(&([a-zA-Z0-9-._]+(=[a-zA-Z0-9-._]+)?)*)*)?$","description":"The path of the health check endpoint. Required when protocol is HTTP.","example":"/health-check"},"cmd":{"type":"string","description":"The command to run for the health check. Required when protocol is CMD"},"port":{"type":"integer","minimum":1,"description":"Port number for the health check endpoint. Required when protocol is HTTP.","example":8080},"initialDelaySeconds":{"type":"integer","minimum":1,"maximum":180,"description":"Initial delay, in seconds, before the health check is first run.","example":10},"periodSeconds":{"type":"integer","minimum":10,"maximum":600,"description":"The time between each check, in seconds.","example":60},"timeoutSeconds":{"type":"integer","minimum":1,"maximum":60,"description":"The time to wait for a response before marking the health check as a failure.","example":1},"failureThreshold":{"type":"integer","minimum":1,"maximum":255,"description":"The maximum number of allowed failures.","example":3},"successThreshold":{"type":"integer","minimum":1,"maximum":255,"description":"The number of successes required to mark the health check as a success.","example":1}},"required":["protocol","type","initialDelaySeconds","periodSeconds","timeoutSeconds","failureThreshold"],"additionalProperties":false,"description":"A health check object."},"description":"An array of health checks."},"loadBalancing":{"type":"object","properties":{"mode":{"type":"string","enum":["leastConnection","consistentHash","roundRobin","consistentReplicaRouting"]},"consistentHash":{"type":"object","properties":{"mode":{"type":"string","enum":["ip","customHeader"]},"header":{"type":"string","nullable":true}},"required":["mode"],"additionalProperties":false},"consistentReplicaRouting":{"type":"object","properties":{"mode":{"type":"string","enum":["path","header"]}},"required":["mode"],"additionalProperties":false}},"required":["mode"],"additionalProperties":false},"autoscaling":{"type":"object","properties":{"horizontal":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether horizontal autoscaling should be enabled","example":true},"minReplicas":{"type":"number","format":"float","minimum":1,"description":"Minimum number of replicas which should be running at any time","example":1},"maxReplicas":{"type":"number","format":"float","description":"Maximum number of replicas which can be running at any time","example":3},"cpu":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether autoscaling should take into account cpu usage"},"thresholdPercentage":{"type":"integer","minimum":10,"maximum":100,"description":"Threshold CPU usage percentage at which the workload will be scaled"}},"required":["enabled","thresholdPercentage"],"additionalProperties":false},"memory":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether autoscaling should take into account memory usage"},"thresholdPercentage":{"type":"integer","minimum":10,"maximum":100,"description":"Threshold memory usage percentage at which the workload will be scaled"}},"required":["enabled","thresholdPercentage"],"additionalProperties":false},"rps":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether autoscaling should take into requests-per-second"},"thresholdValue":{"type":"integer","minimum":1,"description":"Threshold rps value on which the workload will be scaled"}},"required":["enabled","thresholdValue"],"additionalProperties":false},"userMetrics":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether to enable handling for custom metrics in the autoscaling configuration","example":true},"exposedMetricsPath":{"type":"string","pattern":"^\\/([_a-zA-Z0-9-&?=.]*)((\\/[_a-zA-Z0-9-&?=.]+)*(\\/)?)?$","description":"Path on which the metrics will be exposed by the service..","example":"/metrics"},"exposedMetricsPort":{"type":"integer","description":"Port on which the metrics will be exposed by the service.","example":8080},"metrics":{"type":"array","items":{"type":"object","properties":{"metricName":{"type":"string","pattern":"[a-zA-Z_:][a-zA-Z0-9_:]*$","description":"Name of the custom metric","example":"example-metric"},"metricType":{"type":"string","enum":["gauge","counter"],"description":"Type of metric exposed, this will affect how it'll be queried by the autoscaler component: Gauge will be used as is, Counter will be used with rate()","example":"gauge"},"thresholdValue":{"type":"number","format":"float","description":"Threshold value on which the workload will be scaled. Represents the average value across all running pods.","example":2}},"required":["metricName","metricType","thresholdValue"],"additionalProperties":false},"description":"Array of custom metrics exposed by the service that will be used by the autoscaling configuration. At least one metric is required."}},"required":["enabled","exposedMetricsPath","exposedMetricsPort","metrics"],"additionalProperties":false}},"required":["enabled","minReplicas","maxReplicas"],"additionalProperties":false,"description":"Describes the horizontal autoscaling configuration"}},"additionalProperties":false,"description":"Describes all autoscaling configurations"},"createOptions":{"type":"object","properties":{"volumesToAttach":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39}}},"additionalProperties":false},"serviceType":{"type":"string","enum":["combined"],"description":"Type of the service (combined, build or deployment)","example":"combined"},"deployment":{"type":"object","properties":{"type":{"type":"string","enum":["deployment","statefulSet"],"description":"The way the service should be deployed. Either as a deployment (default), or as a stateful set."},"instances":{"type":"integer","minimum":0,"description":"The number of instances to run the service on.","example":1},"buildpack":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customProcess","customCommand","customEntrypointCustomCommand","originalEntrypointCustomCommand"],"description":"Type of buildpack run configuration"},"customProcess":{"type":"string","description":"Custom process which should be run. Required in case where `configType` is `customProcess`"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be run. Required in case where `configType` is `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be run. Required in case where `configType` is `customCommand`, `customEntrypointCustomCommand` or `originalEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of buildpack runtime"},"docker":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customEntrypoint","customCommand","customEntrypointCustomCommand"],"description":"Type of entrypoint & command override configuration","example":"default"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be used. Required in case where `configType` is `customEntrypoint` or `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be used. Required in case where `configType` is `customCommand` or `customEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of docker runtime"},"storage":{"type":"object","properties":{"useHdbStorage":{"type":"boolean"},"usePdSsdStorage":{"type":"boolean"},"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":1024,"description":"Ephemeral storage per container in MB","example":1024}},"additionalProperties":false},"shmSize":{"type":"integer","minimum":64,"description":"Configures the amount of available memory-backed disk space available to /dev/shm"}},"additionalProperties":false},"strategy":{"type":"object","properties":{"type":{"type":"string","enum":["recreate","rollout-steady","rollout-balanced","rollout-fast","custom"],"description":"Configures the instance roll out strategy of your service. Currently only available via feature flag."},"settings":{"type":"object","properties":{"maxSurge":{"oneOf":[{"type":"integer","minimum":0,"description":"A non-negative integer."},{"type":"string","pattern":"^\\d+%$","description":"A percentage string in the range 0% to 100%, e.g. `25%`"}],"description":"Maximum number or percentage of pods that can be created above the desired count."},"maxUnavailable":{"anyOf":[{"type":"integer","minimum":0,"description":"A non-negative integer."},{"type":"string","pattern":"^\\d+%$","description":"A percentage string in the range 0% to 100%, e.g. `25%`"}],"description":"Maximum number or percentage of pods that can be unavailable during the update."}},"required":["maxSurge","maxUnavailable"],"additionalProperties":false}},"additionalProperties":false,"description":"Roll out strategy of the service"},"zonalRedundancy":{"type":"object","properties":{"type":{"type":"string","enum":["disabled","preferred","required"],"description":"Defines scheduling behaviour across different zones within the same region."},"minZones":{"type":"integer","minimum":1,"description":"Defines how many zones are required and will prevent containers from additional scheduling into existing zones. (Only relevant if type is set to \"required\")"}},"additionalProperties":false},"gpu":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"gpuType":{"type":"string"},"gpuCount":{"type":"integer"},"timesliced":{"type":"boolean"}},"required":["gpuType"],"additionalProperties":false}},"additionalProperties":false},"gracePeriodSeconds":{"type":"integer","minimum":15,"maximum":600,"description":"The 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."},"gradualRolloutStrategyId":{"type":"string","pattern":"^[A-Za-z0-9-]+$","nullable":true,"description":"The id of the strategy to be attached to service.","examples":["strategy-id","strategy-id"]},"ssh":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Enables SSH access if the resource matches an SSH identity selector."}},"required":["enabled"],"additionalProperties":false,"description":"Controls related to SSH access within the resource."},"metadata":{"type":"object","properties":{"labels":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom labels for the workload."},"annotations":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom annotations for the workload as string or object."}},"additionalProperties":false,"description":"Allow setting custom labels and annotations for workloads."},"imageUrl":{"type":"string","description":"Image registry url of the deployed image."}},"required":["instances"],"additionalProperties":false},"id":{"type":"string","description":"Identifier for the service","example":"example-service"},"appId":{"type":"string","description":"Full identifier used for service deployment","example":"/example-user/default-project/example-service"},"cluster":{"type":"object","properties":{"id":{"type":"string","description":"The id of the cluster associated with this project.","example":"nf-europe-west"},"name":{"type":"string","description":"The name of the cluster associated with this project.","example":"nf-europe-west"},"namespace":{"type":"string","description":"Namespace this resource is located within on the cluster.","example":"ns-8zy2mcjh9zn2"},"loadBalancers":{"type":"array","items":{"type":"string","example":"lb.659200800000000000000000.northflank.com"},"description":"Load balancer DNS for the cluster."}},"required":["id","name"],"additionalProperties":false,"description":"Cluster information"},"createdAt":{"type":"string","format":"date-time","description":"time of creation"},"updatedAt":{"type":"string","format":"date-time","description":"time of update"},"status":{"type":"object","properties":{"build":{"type":"object","properties":{"status":{"type":"string","enum":["QUEUED","PENDING","UNSCHEDULABLE","STARTING","CLONING","BUILDING","UPLOADING","ABORTED","FAILURE","SUBMISSION_FAILURE","SUCCESS","CRASHED","IN_PROGRESS"],"description":"The current status of the build.","example":"SUCCESS"},"lastTransitionTime":{"type":"string","format":"date-time","description":"The timestamp of when the build reached this status.","example":"2021-11-29T11:47:16.624Z"}},"required":["status"],"additionalProperties":false,"description":"Details about the status of the most recent build."},"deployment":{"type":"object","properties":{"status":{"type":"string","enum":["PENDING","IN_PROGRESS","COMPLETED","FAILED"],"description":"The current status of the deployment.","example":"COMPLETED"},"reason":{"type":"string","enum":["SCALING","DEPLOYING"],"description":"The reason the current deployment was started.","example":"DEPLOYING"},"lastTransitionTime":{"type":"string","format":"date-time","description":"The timestamp of when the deployment reached this status.","example":"2021-11-29T11:47:16.624Z"}},"required":["status","reason"],"additionalProperties":false,"description":"Details about the current deployment status."}},"additionalProperties":false,"description":"Details about the current service status."}},"required":["name","billing","buildSettings","serviceType","deployment","id","appId","cluster","status"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}},"409":{"description":"There is already a service with the same derived identifier"}},"tags":["Services","project"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":54,"description":"The name of the service.","example":"Example Service"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"A description of the service.","example":"A service description"},"stageId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"billing":{"type":"object","properties":{"deploymentPlan":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The ID of the deployment plan to use.","example":"nf-compute-20"},"buildPlan":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The ID of the build plan to use.","example":"nf-compute-200-8"},"gpu":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"gpuType":{"type":"string"},"gpuCount":{"type":"integer"},"timesliced":{"type":"boolean"}},"required":["gpuType"],"additionalProperties":false}},"additionalProperties":false}},"required":["deploymentPlan"],"additionalProperties":false},"infrastructure":{"type":"object","properties":{"architecture":{"type":"string","enum":["x86","arm"]}},"additionalProperties":false},"deployment":{"type":"object","properties":{"type":{"type":"string","enum":["deployment","statefulSet"],"description":"The way the service should be deployed. Either as a deployment (default), or as a stateful set."},"instances":{"type":"integer","minimum":0,"description":"The number of instances to run the service on.","example":1},"buildpack":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customProcess","customCommand","customEntrypointCustomCommand","originalEntrypointCustomCommand"],"description":"Type of buildpack run configuration"},"customProcess":{"type":"string","description":"Custom process which should be run. Required in case where `configType` is `customProcess`"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be run. Required in case where `configType` is `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be run. Required in case where `configType` is `customCommand`, `customEntrypointCustomCommand` or `originalEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of buildpack runtime"},"docker":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customEntrypoint","customCommand","customEntrypointCustomCommand"],"description":"Type of entrypoint & command override configuration","example":"default"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be used. Required in case where `configType` is `customEntrypoint` or `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be used. Required in case where `configType` is `customCommand` or `customEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of docker runtime"},"storage":{"type":"object","properties":{"useHdbStorage":{"type":"boolean"},"usePdSsdStorage":{"type":"boolean"},"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":1024,"description":"Ephemeral storage per container in MB","example":1024}},"additionalProperties":false},"shmSize":{"type":"integer","minimum":64,"description":"Configures the amount of available memory-backed disk space available to /dev/shm"}},"additionalProperties":false},"strategy":{"type":"object","properties":{"type":{"type":"string","enum":["recreate","rollout-steady","rollout-balanced","rollout-fast","custom"],"description":"Configures the instance roll out strategy of your service. Currently only available via feature flag."},"settings":{"type":"object","properties":{"maxSurge":{"oneOf":[{"type":"integer","minimum":0,"description":"A non-negative integer."},{"type":"string","pattern":"^\\d+%$","description":"A percentage string in the range 0% to 100%, e.g. `25%`"}],"description":"Maximum number or percentage of pods that can be created above the desired count."},"maxUnavailable":{"anyOf":[{"type":"integer","minimum":0,"description":"A non-negative integer."},{"type":"string","pattern":"^\\d+%$","description":"A percentage string in the range 0% to 100%, e.g. `25%`"}],"description":"Maximum number or percentage of pods that can be unavailable during the update."}},"required":["maxSurge","maxUnavailable"],"additionalProperties":false}},"additionalProperties":false,"description":"Roll out strategy of the service"},"zonalRedundancy":{"type":"object","properties":{"type":{"type":"string","enum":["disabled","preferred","required"],"description":"Defines scheduling behaviour across different zones within the same region."},"minZones":{"type":"integer","minimum":1,"description":"Defines how many zones are required and will prevent containers from additional scheduling into existing zones. (Only relevant if type is set to \"required\")"}},"additionalProperties":false},"gpu":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"gpuType":{"type":"string"},"gpuCount":{"type":"integer"},"timesliced":{"type":"boolean"}},"required":["gpuType"],"additionalProperties":false}},"additionalProperties":false},"gracePeriodSeconds":{"type":"integer","minimum":15,"maximum":600,"description":"The 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."},"gradualRolloutStrategyId":{"type":"string","pattern":"^[A-Za-z0-9-]+$","nullable":true,"description":"The id of the strategy to be attached to service.","examples":["strategy-id","strategy-id"]},"ssh":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Enables SSH access if the resource matches an SSH identity selector."}},"required":["enabled"],"additionalProperties":false,"description":"Controls related to SSH access within the resource."},"metadata":{"type":"object","properties":{"labels":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom labels for the workload."},"annotations":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom annotations for the workload as string or object."}},"additionalProperties":false,"description":"Allow setting custom labels and annotations for workloads."}},"required":["instances"],"additionalProperties":false},"ports":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":1,"maxLength":8,"description":"The name used to identify the port.","example":"p01"},"internalPort":{"type":"integer","minimum":1,"maximum":65535,"description":"The port number.","example":8080},"public":{"type":"boolean","description":"If true, the port will be exposed publicly.","example":true,"default":false},"security":{"type":"object","properties":{"credentials":{"type":"array","items":{"type":"object","properties":{"username":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The username to access the service","example":"admin"},"password":{"type":"string","description":"The password to access the service with this username.","example":"password123"},"type":{"type":"string","enum":["basic-auth"],"description":"The type of authentication used","example":"basic-auth"}},"required":["username","password","type"],"additionalProperties":false},"description":"An array of credentials to access the service."},"ip":{"type":"array","items":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","description":"An IP address used by this rule","example":"127.0.0.1"},"description":"An array of IP addresses used for this rule"},"action":{"type":"string","enum":["ALLOW","DENY"],"description":"The action for this rule.","example":"DENY"}},"required":["addresses","action"],"additionalProperties":false},"description":"An array of IP address policies."},"policies":{"type":"array","items":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","description":"An IP address used by this rule","example":"127.0.0.1"},"description":"An array of IP addresses used for this rule"},"action":{"type":"string","enum":["ALLOW","DENY"],"description":"The action for this rule.","example":"DENY"}},"required":["addresses","action"],"additionalProperties":false},"description":"An array of IP address policies."},"sso":{"type":"object","properties":{"organizationId":{"type":"string","description":"ID of the SSO organization that the user will have to be a member of"},"directoryGroupIds":{"type":"array","items":{"type":"string"},"description":"Array of directory groups that will have access"},"allowAnyOrgUsers":{"type":"boolean","description":"Allow entire organization to access this service"},"validateInternalTraffic":{"type":"boolean","description":"Enforce internal traffic through SSO authentication flow"},"setCookieOnRootDomain":{"type":"boolean","description":"Set SSO authentication cookie on root domain"},"allowInternalTrafficViaPublicDns":{"type":"boolean","description":"Allow internal traffic from same or shared projects via public DNS to skip SSO authentication flow"}},"additionalProperties":false,"description":"Configure port authentication via SSO"},"headers":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"regexMode":{"type":"boolean","example":false,"default":false},"name":{"type":"string","pattern":"^[a-zA-Z0-9_\\-%$+]+$","example":"headerName"},"value":{"type":"string","example":"headerValue"}},"required":["name","value"],"additionalProperties":false,"description":"Matches provided headers as strings."},{"type":"object","properties":{"regexMode":{"type":"boolean","example":true,"default":false},"name":{"type":"string","example":"headerName"},"value":{"type":"string","example":"headerValue"}},"required":["name","value"],"additionalProperties":false,"description":"Matches provided headers as regex."}]},"description":"List of header authentication settings, it checks the presence of all headers and compares it against the expected value. Wildcard (*) is supported."},"verificationMode":{"type":"string","enum":["or","and"],"description":"Mode used to verify multiple security features like ip policies and SSO authentication"},"securePathConfiguration":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Enable security policies on a path-level style"},"skipSecurityPoliciesForInternalTrafficViaPublicDns":{"type":"boolean","description":"Allow internal traffic from same or shared projects via public DNS to skip all security policies"},"rules":{"type":"array","items":{"type":"object","properties":{"paths":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"path":{"type":"string","pattern":"^\\/([_a-zA-Z0-9-&?=.]*)((\\/[_a-zA-Z0-9-&?=.]+)*(\\/)?)?$"},"routingMode":{"type":"string","enum":["prefix"],"description":"Mode of the path, determining how the URI will be interpreted.","example":"prefix"},"priority":{"type":"integer","minimum":0,"maximum":100,"example":80}},"required":["path","routingMode","priority"],"additionalProperties":false,"description":"Route when the path starts with the provided prefix."},{"type":"object","properties":{"path":{"type":"string","pattern":"^\\/([_a-zA-Z0-9-&?=.]*)((\\/[_a-zA-Z0-9-&?=.]+)*(\\/)?)?$"},"routingMode":{"type":"string","enum":["exact"],"description":"Mode of the path, determining how the URI will be interpreted.","example":"exact"},"priority":{"type":"integer","minimum":0,"maximum":100,"example":80}},"required":["path","routingMode","priority"],"additionalProperties":false,"description":"Route when the path is an exact match."},{"type":"object","properties":{"path":{"type":"string"},"routingMode":{"type":"string","enum":["regex"],"description":"Mode of the path, determining how the URI will be interpreted.","example":"regex"},"priority":{"type":"integer","minimum":0,"maximum":100,"example":80}},"required":["path","routingMode","priority"],"additionalProperties":false,"description":"Route when the path matches the provided regex."}],"description":"Data about how the path should be handled."},"description":"Array of path objects which represent the paths and their priority for which the security policies will be enforced"},"accessMode":{"type":"string","enum":["protected","unprotected"],"description":"Specify the way the path rule will behave when processing policies. This enables an allow-list/deny-list approach for access control on each path","example":"protected"},"securityPolicies":{"type":"object","properties":{"orPolicies":{"type":"object","properties":{"credentials":{"type":"array","items":{"type":"object","properties":{"username":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The username to access the service","example":"admin"},"password":{"type":"string","description":"The password to access the service with this username.","example":"password123"},"type":{"type":"string","enum":["basic-auth"],"description":"The type of authentication used","example":"basic-auth"}},"required":["username","password","type"],"additionalProperties":false},"description":"An array of credentials to access the service."},"ip":{"type":"array","items":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","description":"An IP address used by this rule","example":"127.0.0.1"},"description":"An array of IP addresses used for this rule"},"action":{"type":"string","enum":["ALLOW","DENY"],"description":"The action for this rule.","example":"DENY"}},"required":["addresses","action"],"additionalProperties":false},"description":"An array of IP address policies."},"policies":{"type":"array","items":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","description":"An IP address used by this rule","example":"127.0.0.1"},"description":"An array of IP addresses used for this rule"},"action":{"type":"string","enum":["ALLOW","DENY"],"description":"The action for this rule.","example":"DENY"}},"required":["addresses","action"],"additionalProperties":false},"description":"An array of IP address policies."},"sso":{"type":"object","properties":{"organizationId":{"type":"string","description":"ID of the SSO organization that the user will have to be a member of"},"directoryGroupIds":{"type":"array","items":{"type":"string"},"description":"Array of directory groups that will have access"},"allowAnyOrgUsers":{"type":"boolean","description":"Allow entire organization to access this service"},"validateInternalTraffic":{"type":"boolean","description":"Enforce internal traffic through SSO authentication flow"},"setCookieOnRootDomain":{"type":"boolean","description":"Set SSO authentication cookie on root domain"},"allowInternalTrafficViaPublicDns":{"type":"boolean","description":"Allow internal traffic from same or shared projects via public DNS to skip SSO authentication flow"}},"additionalProperties":false,"description":"Configure port authentication via SSO"},"headers":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"regexMode":{"type":"boolean","example":false,"default":false},"name":{"type":"string","pattern":"^[a-zA-Z0-9_\\-%$+]+$","example":"headerName"},"value":{"type":"string","example":"headerValue"}},"required":["name","value"],"additionalProperties":false,"description":"Matches provided headers as strings."},{"type":"object","properties":{"regexMode":{"type":"boolean","example":true,"default":false},"name":{"type":"string","example":"headerName"},"value":{"type":"string","example":"headerValue"}},"required":["name","value"],"additionalProperties":false,"description":"Matches provided headers as regex."}]},"description":"List of header authentication settings, it checks the presence of all headers and compares it against the expected value. Wildcard (*) is supported."}},"additionalProperties":false},"requiredPolicies":{"type":"object","properties":{"credentials":{"type":"array","items":{"type":"object","properties":{"username":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The username to access the service","example":"admin"},"password":{"type":"string","description":"The password to access the service with this username.","example":"password123"},"type":{"type":"string","enum":["basic-auth"],"description":"The type of authentication used","example":"basic-auth"}},"required":["username","password","type"],"additionalProperties":false},"description":"An array of credentials to access the service."},"ip":{"type":"array","items":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","description":"An IP address used by this rule","example":"127.0.0.1"},"description":"An array of IP addresses used for this rule"},"action":{"type":"string","enum":["ALLOW","DENY"],"description":"The action for this rule.","example":"DENY"}},"required":["addresses","action"],"additionalProperties":false},"description":"An array of IP address policies."},"policies":{"type":"array","items":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","description":"An IP address used by this rule","example":"127.0.0.1"},"description":"An array of IP addresses used for this rule"},"action":{"type":"string","enum":["ALLOW","DENY"],"description":"The action for this rule.","example":"DENY"}},"required":["addresses","action"],"additionalProperties":false},"description":"An array of IP address policies."},"sso":{"type":"object","properties":{"organizationId":{"type":"string","description":"ID of the SSO organization that the user will have to be a member of"},"directoryGroupIds":{"type":"array","items":{"type":"string"},"description":"Array of directory groups that will have access"},"allowAnyOrgUsers":{"type":"boolean","description":"Allow entire organization to access this service"},"validateInternalTraffic":{"type":"boolean","description":"Enforce internal traffic through SSO authentication flow"},"setCookieOnRootDomain":{"type":"boolean","description":"Set SSO authentication cookie on root domain"},"allowInternalTrafficViaPublicDns":{"type":"boolean","description":"Allow internal traffic from same or shared projects via public DNS to skip SSO authentication flow"}},"additionalProperties":false,"description":"Configure port authentication via SSO"},"headers":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"regexMode":{"type":"boolean","example":false,"default":false},"name":{"type":"string","pattern":"^[a-zA-Z0-9_\\-%$+]+$","example":"headerName"},"value":{"type":"string","example":"headerValue"}},"required":["name","value"],"additionalProperties":false,"description":"Matches provided headers as strings."},{"type":"object","properties":{"regexMode":{"type":"boolean","example":true,"default":false},"name":{"type":"string","example":"headerName"},"value":{"type":"string","example":"headerValue"}},"required":["name","value"],"additionalProperties":false,"description":"Matches provided headers as regex."}]},"description":"List of header authentication settings, it checks the presence of all headers and compares it against the expected value. Wildcard (*) is supported."}},"additionalProperties":false}},"additionalProperties":false}},"required":["paths","accessMode"],"additionalProperties":false},"default":[]}},"additionalProperties":false}},"additionalProperties":false,"default":{"credentials":[],"policies":[],"sso":{}}},"domains":{"type":"array","items":{"type":"string","description":"A domain to redirect to this port.","example":"app.example.com"},"description":"An array of domains to redirect to this port. Each domain must first be verified and registered to your account.","default":[]},"disableNfDomain":{"type":"boolean","description":"Disable routing on the default code.run domain for public HTTP ports with custom domains.","default":false},"advancedOptions":{"type":"object","properties":{"enableTlsPassthrough":{"type":"boolean","description":"Whether this port should use pass through mode for TLS"}},"additionalProperties":false},"protocol":{"type":"string","enum":["HTTP","HTTP/2","TCP","UDP"],"description":"The protocol to use for the port.","example":"HTTP"}},"required":["name","internalPort","protocol"],"additionalProperties":false},"default":[]},"disabledCI":{"type":"boolean","description":"Whether CI (continuous integration) should be disabled.","default":false},"buildSource":{"type":"string","enum":["git","bundle"],"description":"Defines the build source for this resource","example":"git"},"vcsData":{"type":"object","properties":{"projectUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo to build.","example":"https://github.com/northflank/gatsby-with-northflank"},"projectType":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string","minLength":24,"maxLength":24,"description":"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 `vcsLinkId` is provided, Northflank will instead use your linked account with that ID."},"projectBranch":{"type":"string","description":"The name of the branch to use.","example":"master"}},"required":["projectUrl","projectType","projectBranch"],"additionalProperties":false},"bundleData":{"type":"object","properties":{"bundleUrl":{"type":"string","description":"URL of the bundle to be built","example":"https://example.com/archive.tar"},"branch":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"Branch identifier for the bundle.","example":"main"}},"required":["bundleUrl","branch"],"additionalProperties":false},"buildSettings":{"oneOf":[{"type":"object","properties":{"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false},"dockerfile":{"type":"object","properties":{"useCache":{"type":"boolean","description":"DEPRECATED: This field will be removed in the near future and currently has no effect."},"buildEngine":{"type":"string","enum":["buildkit","kaniko"],"description":"Build engine to use. Defaults to recommended build engine `buildkit`","example":"buildkit","default":"buildkit"},"dockerFilePath":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]+$","description":"The file path of the Dockerfile.","example":"/Dockerfile"},"dockerWorkDir":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*$","description":"The working directory of the Dockerfile.","example":"/"},"buildkit":{"type":"object","properties":{"useCache":{"type":"boolean","description":"Use persistent storage to cache build layers.","example":true,"default":false},"cacheStorageSize":{"type":"integer","description":"The amount of persistent storage available to each build in MB.","example":32768},"useInternalCache":{"type":"boolean","description":"DEPRECATED: This field will be removed in the near future.","default":false},"internalCacheStorage":{"type":"number","format":"float","description":"DEPRECATED: This field will be removed in the near future."}},"additionalProperties":false}},"required":["dockerFilePath","dockerWorkDir"],"additionalProperties":false}},"required":["dockerfile"],"additionalProperties":false,"description":"Build from a Dockerfile"},{"type":"object","properties":{"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false},"buildpack":{"type":"object","properties":{"builder":{"type":"string","enum":["HEROKU_24","HEROKU_22","HEROKU_22_CLASSIC","HEROKU_20","HEROKU_18","GOOGLE_22","GOOGLE_V1","CNB_ALPINE","CNB_BIONIC","PAKETO_JAMMY_TINY","PAKETO_JAMMY_BASE","PAKETO_JAMMY_FULL","PAKETO_TINY","PAKETO_BASE","PAKETO_FULL"],"description":"Buildpack stack to use. Defaults to recommended stack `HEROKU_24`.","example":"HEROKU_24","default":"HEROKU_24"},"buildpackLocators":{"type":"array","items":{"type":"string","description":"Url or registry identifier of custom Buildpack.","example":"https://buildpack-registry.heroku.com/cnb/mars/create-react-app"},"description":"Array of custom Buildpacks to use.","default":[]},"buildContext":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*$","description":"The working directory to build in.","example":"/","default":"/"},"useCache":{"type":"boolean","description":"Should build dependencies be cached?","example":false,"default":false}},"additionalProperties":false}},"required":["buildpack"],"additionalProperties":false,"description":"Build from a Buildpack"}],"description":"Build engine"},"buildConfiguration":{"type":"object","properties":{"pathIgnoreRules":{"type":"array","items":{"type":"string","maxLength":260,"description":"A path ignore rule, following `.gitignore` syntax. For example, `*.md` will ignore all files ending with `.md`.","example":"README.md"},"maxItems":200,"description":"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."},"isAllowList":{"type":"boolean","description":"If `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`.","example":false},"ciIgnoreFlagsEnabled":{"type":"boolean","description":"If `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":{"type":"array","items":{"type":"string","maxLength":72,"description":"A commit ignore flag.","example":"[skip ci]"},"maxItems":200,"description":"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]\"]`","example":["[skip ci]","[ci skip]","[no ci]","[skip nf]","[nf skip]","[northflank skip]","[skip northflank]"]},"dockerfileTarget":{"type":"string","description":"If your Dockerfile contains multiple build stages, you can specify the target stage by entering its name here."},"dockerCredentials":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The ID of the docker credentials to use.","example":"example-docker-credential"}},"includeGitFolder":{"type":"boolean","description":"Include .git folder inside the build context"},"fullGitClone":{"type":"boolean","description":"Include the entire git history as part of the .git folder. Only relevant if \"includeGitFolder\" is set."},"enableGitLfs":{"type":"boolean","description":"Enable Git LFS support for the build"},"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false}},"additionalProperties":false,"default":{"pathIgnoreRules":[],"isAllowList":false,"ciIgnoreFlagsEnabled":false}},"runtimeEnvironment":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"An object containing the runtime environment to set for the service. Keys may only contain letters, numbers, hyphens, forward slashes and dots.","example":{"VARIABLE_1":"abcdef","VARIABLE_2":"12345"},"default":{}},"runtimeFiles":{"type":"object","properties":{},"description":"Secret files as JSON object, encrypted at rest. File path must be absolute","example":{"/dir/fileName":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"buildArguments":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"An object containing the build arguments to set for the service. Keys may only contain letters, numbers, hyphens, forward slashes and dots.","example":{"ARGUMENT_1":"abcdef","ARGUMENT_2":"12345"},"default":{}},"buildFiles":{"type":"object","properties":{},"description":"Secret files as JSON object, encrypted at rest. File path must be absolute","example":{"/dir/fileName":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"dockerSecretMounts":{"type":"object","properties":{},"description":"Docker secret mount contents as JSON object, encrypted at rest. Must be a valid Docker secret mount identifier","example":{"example-secret-mount_1":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"healthChecks":{"type":"array","items":{"type":"object","properties":{"protocol":{"type":"string","enum":["HTTP","CMD","TCP"],"description":"The protocol to access the health check with.","example":"HTTP"},"type":{"type":"string","enum":["livenessProbe","readinessProbe","startupProbe"],"description":"The type of health check.","example":"readinessProbe"},"path":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*((\\?([a-zA-Z0-9-._]+(=[a-zA-Z0-9-._]+)?)*)(&([a-zA-Z0-9-._]+(=[a-zA-Z0-9-._]+)?)*)*)?$","description":"The path of the health check endpoint. Required when protocol is HTTP.","example":"/health-check"},"cmd":{"type":"string","description":"The command to run for the health check. Required when protocol is CMD"},"port":{"type":"integer","minimum":1,"description":"Port number for the health check endpoint. Required when protocol is HTTP.","example":8080},"initialDelaySeconds":{"type":"integer","minimum":1,"maximum":180,"description":"Initial delay, in seconds, before the health check is first run.","example":10},"periodSeconds":{"type":"integer","minimum":10,"maximum":600,"description":"The time between each check, in seconds.","example":60},"timeoutSeconds":{"type":"integer","minimum":1,"maximum":60,"description":"The time to wait for a response before marking the health check as a failure.","example":1},"failureThreshold":{"type":"integer","minimum":1,"maximum":255,"description":"The maximum number of allowed failures.","example":3},"successThreshold":{"type":"integer","minimum":1,"maximum":255,"description":"The number of successes required to mark the health check as a success.","example":1}},"required":["protocol","type","initialDelaySeconds","periodSeconds","timeoutSeconds","failureThreshold"],"additionalProperties":false,"description":"A health check object."},"description":"An array of health checks."},"loadBalancing":{"type":"object","properties":{"mode":{"type":"string","enum":["leastConnection","consistentHash","roundRobin","consistentReplicaRouting"]},"consistentHash":{"type":"object","properties":{"mode":{"type":"string","enum":["ip","customHeader"]},"header":{"type":"string","nullable":true}},"required":["mode"],"additionalProperties":false},"consistentReplicaRouting":{"type":"object","properties":{"mode":{"type":"string","enum":["path","header"]}},"required":["mode"],"additionalProperties":false}},"required":["mode"],"additionalProperties":false},"autoscaling":{"type":"object","properties":{"horizontal":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether horizontal autoscaling should be enabled","example":true},"minReplicas":{"type":"number","format":"float","minimum":1,"description":"Minimum number of replicas which should be running at any time","example":1},"maxReplicas":{"type":"number","format":"float","description":"Maximum number of replicas which can be running at any time","example":3},"cpu":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether autoscaling should take into account cpu usage"},"thresholdPercentage":{"type":"integer","minimum":10,"maximum":100,"description":"Threshold CPU usage percentage at which the workload will be scaled"}},"required":["enabled","thresholdPercentage"],"additionalProperties":false},"memory":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether autoscaling should take into account memory usage"},"thresholdPercentage":{"type":"integer","minimum":10,"maximum":100,"description":"Threshold memory usage percentage at which the workload will be scaled"}},"required":["enabled","thresholdPercentage"],"additionalProperties":false},"rps":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether autoscaling should take into requests-per-second"},"thresholdValue":{"type":"integer","minimum":1,"description":"Threshold rps value on which the workload will be scaled"}},"required":["enabled","thresholdValue"],"additionalProperties":false},"userMetrics":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether to enable handling for custom metrics in the autoscaling configuration","example":true},"exposedMetricsPath":{"type":"string","pattern":"^\\/([_a-zA-Z0-9-&?=.]*)((\\/[_a-zA-Z0-9-&?=.]+)*(\\/)?)?$","description":"Path on which the metrics will be exposed by the service..","example":"/metrics"},"exposedMetricsPort":{"type":"integer","description":"Port on which the metrics will be exposed by the service.","example":8080},"metrics":{"type":"array","items":{"type":"object","properties":{"metricName":{"type":"string","pattern":"[a-zA-Z_:][a-zA-Z0-9_:]*$","description":"Name of the custom metric","example":"example-metric"},"metricType":{"type":"string","enum":["gauge","counter"],"description":"Type of metric exposed, this will affect how it'll be queried by the autoscaler component: Gauge will be used as is, Counter will be used with rate()","example":"gauge"},"thresholdValue":{"type":"number","format":"float","description":"Threshold value on which the workload will be scaled. Represents the average value across all running pods.","example":2}},"required":["metricName","metricType","thresholdValue"],"additionalProperties":false},"description":"Array of custom metrics exposed by the service that will be used by the autoscaling configuration. At least one metric is required."}},"required":["enabled","exposedMetricsPath","exposedMetricsPort","metrics"],"additionalProperties":false}},"required":["enabled","minReplicas","maxReplicas"],"additionalProperties":false,"description":"Describes the horizontal autoscaling configuration"}},"additionalProperties":false,"description":"Describes all autoscaling configurations"},"createOptions":{"type":"object","properties":{"volumesToAttach":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39}}},"additionalProperties":false}},"required":["name","billing","deployment","buildSettings"],"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Project > Services > General > Create","x-nf-team-scoped":true,"x-nf-subheading":"create service","x-nf-cli-command":["create","service","combined"]},"v1-projects--projectId--services-combined-post-team-scoped":{"operationId":"postProjectsServicesCombined","summary":"Create combined service","description":"Creates a new combined service.","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}}],"responses":{"200":{"description":"Details about the newly created service.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":54,"description":"The name of the service.","example":"Example Service"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"A description of the service.","example":"A service description"},"stageId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"billing":{"type":"object","properties":{"deploymentPlan":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The ID of the deployment plan to use.","example":"nf-compute-20"},"buildPlan":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The ID of the build plan to use.","example":"nf-compute-200-8"},"gpu":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"gpuType":{"type":"string"},"gpuCount":{"type":"integer"},"timesliced":{"type":"boolean"}},"required":["gpuType"],"additionalProperties":false}},"additionalProperties":false}},"required":["deploymentPlan"],"additionalProperties":false},"infrastructure":{"type":"object","properties":{"architecture":{"type":"string","enum":["x86","arm"]}},"additionalProperties":false},"ports":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":1,"maxLength":8,"description":"The name used to identify the port.","example":"p01"},"internalPort":{"type":"integer","minimum":1,"maximum":65535,"description":"The port number.","example":8080},"public":{"type":"boolean","description":"If true, the port will be exposed publicly.","example":true,"default":false},"security":{"type":"object","properties":{"credentials":{"type":"array","items":{"type":"object","properties":{"username":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The username to access the service","example":"admin"},"password":{"type":"string","description":"The password to access the service with this username.","example":"password123"},"type":{"type":"string","enum":["basic-auth"],"description":"The type of authentication used","example":"basic-auth"}},"required":["username","password","type"],"additionalProperties":false},"description":"An array of credentials to access the service."},"ip":{"type":"array","items":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","description":"An IP address used by this rule","example":"127.0.0.1"},"description":"An array of IP addresses used for this rule"},"action":{"type":"string","enum":["ALLOW","DENY"],"description":"The action for this rule.","example":"DENY"}},"required":["addresses","action"],"additionalProperties":false},"description":"An array of IP address policies."},"policies":{"type":"array","items":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","description":"An IP address used by this rule","example":"127.0.0.1"},"description":"An array of IP addresses used for this rule"},"action":{"type":"string","enum":["ALLOW","DENY"],"description":"The action for this rule.","example":"DENY"}},"required":["addresses","action"],"additionalProperties":false},"description":"An array of IP address policies."},"sso":{"type":"object","properties":{"organizationId":{"type":"string","description":"ID of the SSO organization that the user will have to be a member of"},"directoryGroupIds":{"type":"array","items":{"type":"string"},"description":"Array of directory groups that will have access"},"allowAnyOrgUsers":{"type":"boolean","description":"Allow entire organization to access this service"},"validateInternalTraffic":{"type":"boolean","description":"Enforce internal traffic through SSO authentication flow"},"setCookieOnRootDomain":{"type":"boolean","description":"Set SSO authentication cookie on root domain"},"allowInternalTrafficViaPublicDns":{"type":"boolean","description":"Allow internal traffic from same or shared projects via public DNS to skip SSO authentication flow"}},"additionalProperties":false,"description":"Configure port authentication via SSO"},"headers":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"regexMode":{"type":"boolean","example":false,"default":false},"name":{"type":"string","pattern":"^[a-zA-Z0-9_\\-%$+]+$","example":"headerName"},"value":{"type":"string","example":"headerValue"}},"required":["name","value"],"additionalProperties":false,"description":"Matches provided headers as strings."},{"type":"object","properties":{"regexMode":{"type":"boolean","example":true,"default":false},"name":{"type":"string","example":"headerName"},"value":{"type":"string","example":"headerValue"}},"required":["name","value"],"additionalProperties":false,"description":"Matches provided headers as regex."}]},"description":"List of header authentication settings, it checks the presence of all headers and compares it against the expected value. Wildcard (*) is supported."},"verificationMode":{"type":"string","enum":["or","and"],"description":"Mode used to verify multiple security features like ip policies and SSO authentication"},"securePathConfiguration":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Enable security policies on a path-level style"},"skipSecurityPoliciesForInternalTrafficViaPublicDns":{"type":"boolean","description":"Allow internal traffic from same or shared projects via public DNS to skip all security policies"},"rules":{"type":"array","items":{"type":"object","properties":{"paths":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"path":{"type":"string","pattern":"^\\/([_a-zA-Z0-9-&?=.]*)((\\/[_a-zA-Z0-9-&?=.]+)*(\\/)?)?$"},"routingMode":{"type":"string","enum":["prefix"],"description":"Mode of the path, determining how the URI will be interpreted.","example":"prefix"},"priority":{"type":"integer","minimum":0,"maximum":100,"example":80}},"required":["path","routingMode","priority"],"additionalProperties":false,"description":"Route when the path starts with the provided prefix."},{"type":"object","properties":{"path":{"type":"string","pattern":"^\\/([_a-zA-Z0-9-&?=.]*)((\\/[_a-zA-Z0-9-&?=.]+)*(\\/)?)?$"},"routingMode":{"type":"string","enum":["exact"],"description":"Mode of the path, determining how the URI will be interpreted.","example":"exact"},"priority":{"type":"integer","minimum":0,"maximum":100,"example":80}},"required":["path","routingMode","priority"],"additionalProperties":false,"description":"Route when the path is an exact match."},{"type":"object","properties":{"path":{"type":"string"},"routingMode":{"type":"string","enum":["regex"],"description":"Mode of the path, determining how the URI will be interpreted.","example":"regex"},"priority":{"type":"integer","minimum":0,"maximum":100,"example":80}},"required":["path","routingMode","priority"],"additionalProperties":false,"description":"Route when the path matches the provided regex."}],"description":"Data about how the path should be handled."},"description":"Array of path objects which represent the paths and their priority for which the security policies will be enforced"},"accessMode":{"type":"string","enum":["protected","unprotected"],"description":"Specify the way the path rule will behave when processing policies. This enables an allow-list/deny-list approach for access control on each path","example":"protected"},"securityPolicies":{"type":"object","properties":{"orPolicies":{"type":"object","properties":{"credentials":{"type":"array","items":{"type":"object","properties":{"username":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The username to access the service","example":"admin"},"password":{"type":"string","description":"The password to access the service with this username.","example":"password123"},"type":{"type":"string","enum":["basic-auth"],"description":"The type of authentication used","example":"basic-auth"}},"required":["username","password","type"],"additionalProperties":false},"description":"An array of credentials to access the service."},"ip":{"type":"array","items":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","description":"An IP address used by this rule","example":"127.0.0.1"},"description":"An array of IP addresses used for this rule"},"action":{"type":"string","enum":["ALLOW","DENY"],"description":"The action for this rule.","example":"DENY"}},"required":["addresses","action"],"additionalProperties":false},"description":"An array of IP address policies."},"policies":{"type":"array","items":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","description":"An IP address used by this rule","example":"127.0.0.1"},"description":"An array of IP addresses used for this rule"},"action":{"type":"string","enum":["ALLOW","DENY"],"description":"The action for this rule.","example":"DENY"}},"required":["addresses","action"],"additionalProperties":false},"description":"An array of IP address policies."},"sso":{"type":"object","properties":{"organizationId":{"type":"string","description":"ID of the SSO organization that the user will have to be a member of"},"directoryGroupIds":{"type":"array","items":{"type":"string"},"description":"Array of directory groups that will have access"},"allowAnyOrgUsers":{"type":"boolean","description":"Allow entire organization to access this service"},"validateInternalTraffic":{"type":"boolean","description":"Enforce internal traffic through SSO authentication flow"},"setCookieOnRootDomain":{"type":"boolean","description":"Set SSO authentication cookie on root domain"},"allowInternalTrafficViaPublicDns":{"type":"boolean","description":"Allow internal traffic from same or shared projects via public DNS to skip SSO authentication flow"}},"additionalProperties":false,"description":"Configure port authentication via SSO"},"headers":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"regexMode":{"type":"boolean","example":false,"default":false},"name":{"type":"string","pattern":"^[a-zA-Z0-9_\\-%$+]+$","example":"headerName"},"value":{"type":"string","example":"headerValue"}},"required":["name","value"],"additionalProperties":false,"description":"Matches provided headers as strings."},{"type":"object","properties":{"regexMode":{"type":"boolean","example":true,"default":false},"name":{"type":"string","example":"headerName"},"value":{"type":"string","example":"headerValue"}},"required":["name","value"],"additionalProperties":false,"description":"Matches provided headers as regex."}]},"description":"List of header authentication settings, it checks the presence of all headers and compares it against the expected value. Wildcard (*) is supported."}},"additionalProperties":false},"requiredPolicies":{"type":"object","properties":{"credentials":{"type":"array","items":{"type":"object","properties":{"username":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The username to access the service","example":"admin"},"password":{"type":"string","description":"The password to access the service with this username.","example":"password123"},"type":{"type":"string","enum":["basic-auth"],"description":"The type of authentication used","example":"basic-auth"}},"required":["username","password","type"],"additionalProperties":false},"description":"An array of credentials to access the service."},"ip":{"type":"array","items":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","description":"An IP address used by this rule","example":"127.0.0.1"},"description":"An array of IP addresses used for this rule"},"action":{"type":"string","enum":["ALLOW","DENY"],"description":"The action for this rule.","example":"DENY"}},"required":["addresses","action"],"additionalProperties":false},"description":"An array of IP address policies."},"policies":{"type":"array","items":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","description":"An IP address used by this rule","example":"127.0.0.1"},"description":"An array of IP addresses used for this rule"},"action":{"type":"string","enum":["ALLOW","DENY"],"description":"The action for this rule.","example":"DENY"}},"required":["addresses","action"],"additionalProperties":false},"description":"An array of IP address policies."},"sso":{"type":"object","properties":{"organizationId":{"type":"string","description":"ID of the SSO organization that the user will have to be a member of"},"directoryGroupIds":{"type":"array","items":{"type":"string"},"description":"Array of directory groups that will have access"},"allowAnyOrgUsers":{"type":"boolean","description":"Allow entire organization to access this service"},"validateInternalTraffic":{"type":"boolean","description":"Enforce internal traffic through SSO authentication flow"},"setCookieOnRootDomain":{"type":"boolean","description":"Set SSO authentication cookie on root domain"},"allowInternalTrafficViaPublicDns":{"type":"boolean","description":"Allow internal traffic from same or shared projects via public DNS to skip SSO authentication flow"}},"additionalProperties":false,"description":"Configure port authentication via SSO"},"headers":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"regexMode":{"type":"boolean","example":false,"default":false},"name":{"type":"string","pattern":"^[a-zA-Z0-9_\\-%$+]+$","example":"headerName"},"value":{"type":"string","example":"headerValue"}},"required":["name","value"],"additionalProperties":false,"description":"Matches provided headers as strings."},{"type":"object","properties":{"regexMode":{"type":"boolean","example":true,"default":false},"name":{"type":"string","example":"headerName"},"value":{"type":"string","example":"headerValue"}},"required":["name","value"],"additionalProperties":false,"description":"Matches provided headers as regex."}]},"description":"List of header authentication settings, it checks the presence of all headers and compares it against the expected value. Wildcard (*) is supported."}},"additionalProperties":false}},"additionalProperties":false}},"required":["paths","accessMode"],"additionalProperties":false},"default":[]}},"additionalProperties":false}},"additionalProperties":false,"default":{"credentials":[],"policies":[],"sso":{}}},"domains":{"type":"array","items":{"type":"string","description":"A domain to redirect to this port.","example":"app.example.com"},"description":"An array of domains to redirect to this port. Each domain must first be verified and registered to your account.","default":[]},"disableNfDomain":{"type":"boolean","description":"Disable routing on the default code.run domain for public HTTP ports with custom domains.","default":false},"advancedOptions":{"type":"object","properties":{"enableTlsPassthrough":{"type":"boolean","description":"Whether this port should use pass through mode for TLS"}},"additionalProperties":false},"protocol":{"type":"string","oneOf":[{"type":"string","enum":["HTTP","HTTP/2"]},{"type":"string","enum":["HTTP","HTTP/2","TCP","UDP"]}],"description":"The protocol to use for the port.","example":"HTTP"}},"required":["name","internalPort","protocol"],"additionalProperties":false},"default":[]},"disabledCI":{"type":"boolean","description":"Whether CI (continuous integration) should be disabled.","default":false},"buildSource":{"type":"string","enum":["git","bundle"],"description":"Defines the build source for this resource","example":"git"},"vcsData":{"type":"object","properties":{"projectUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo to build.","example":"https://github.com/northflank/gatsby-with-northflank"},"projectType":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string","minLength":24,"maxLength":24,"description":"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 `vcsLinkId` is provided, Northflank will instead use your linked account with that ID."},"projectBranch":{"type":"string","description":"The name of the branch to use.","example":"master"}},"required":["projectUrl","projectType","projectBranch"],"additionalProperties":false},"bundleData":{"type":"object","properties":{"bundleUrl":{"type":"string","description":"URL of the bundle to be built","example":"https://example.com/archive.tar"},"branch":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"Branch identifier for the bundle.","example":"main"}},"required":["bundleUrl","branch"],"additionalProperties":false},"buildSettings":{"oneOf":[{"type":"object","properties":{"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false},"dockerfile":{"type":"object","properties":{"useCache":{"type":"boolean","description":"DEPRECATED: This field will be removed in the near future and currently has no effect."},"buildEngine":{"type":"string","enum":["buildkit","kaniko"],"description":"Build engine to use. Defaults to recommended build engine `buildkit`","example":"buildkit","default":"buildkit"},"dockerFilePath":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]+$","description":"The file path of the Dockerfile.","example":"/Dockerfile"},"dockerWorkDir":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*$","description":"The working directory of the Dockerfile.","example":"/"},"buildkit":{"type":"object","properties":{"useCache":{"type":"boolean","description":"Use persistent storage to cache build layers.","example":true,"default":false},"cacheStorageSize":{"type":"integer","description":"The amount of persistent storage available to each build in MB.","example":32768},"useInternalCache":{"type":"boolean","description":"DEPRECATED: This field will be removed in the near future.","default":false},"internalCacheStorage":{"type":"number","format":"float","description":"DEPRECATED: This field will be removed in the near future."}},"additionalProperties":false}},"required":["dockerFilePath","dockerWorkDir"],"additionalProperties":false}},"required":["dockerfile"],"additionalProperties":false,"description":"Build from a Dockerfile"},{"type":"object","properties":{"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false},"buildpack":{"type":"object","properties":{"builder":{"type":"string","enum":["HEROKU_24","HEROKU_22","HEROKU_22_CLASSIC","HEROKU_20","HEROKU_18","GOOGLE_22","GOOGLE_V1","CNB_ALPINE","CNB_BIONIC","PAKETO_JAMMY_TINY","PAKETO_JAMMY_BASE","PAKETO_JAMMY_FULL","PAKETO_TINY","PAKETO_BASE","PAKETO_FULL"],"description":"Buildpack stack to use. Defaults to recommended stack `HEROKU_24`.","example":"HEROKU_24","default":"HEROKU_24"},"buildpackLocators":{"type":"array","items":{"type":"string","description":"Url or registry identifier of custom Buildpack.","example":"https://buildpack-registry.heroku.com/cnb/mars/create-react-app"},"description":"Array of custom Buildpacks to use.","default":[]},"buildContext":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*$","description":"The working directory to build in.","example":"/","default":"/"},"useCache":{"type":"boolean","description":"Should build dependencies be cached?","example":false,"default":false}},"additionalProperties":false}},"required":["buildpack"],"additionalProperties":false,"description":"Build from a Buildpack"}],"description":"Build engine"},"buildConfiguration":{"type":"object","properties":{"pathIgnoreRules":{"type":"array","items":{"type":"string","maxLength":260,"description":"A path ignore rule, following `.gitignore` syntax. For example, `*.md` will ignore all files ending with `.md`.","example":"README.md"},"maxItems":200,"description":"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."},"isAllowList":{"type":"boolean","description":"If `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`.","example":false},"ciIgnoreFlagsEnabled":{"type":"boolean","description":"If `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":{"type":"array","items":{"type":"string","maxLength":72,"description":"A commit ignore flag.","example":"[skip ci]"},"maxItems":200,"description":"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]\"]`","example":["[skip ci]","[ci skip]","[no ci]","[skip nf]","[nf skip]","[northflank skip]","[skip northflank]"]},"dockerfileTarget":{"type":"string","description":"If your Dockerfile contains multiple build stages, you can specify the target stage by entering its name here."},"dockerCredentials":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The ID of the docker credentials to use.","example":"example-docker-credential"}},"includeGitFolder":{"type":"boolean","description":"Include .git folder inside the build context"},"fullGitClone":{"type":"boolean","description":"Include the entire git history as part of the .git folder. Only relevant if \"includeGitFolder\" is set."},"enableGitLfs":{"type":"boolean","description":"Enable Git LFS support for the build"},"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false}},"additionalProperties":false,"default":{"pathIgnoreRules":[],"isAllowList":false,"ciIgnoreFlagsEnabled":false}},"runtimeEnvironment":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"An object containing the runtime environment to set for the service. Keys may only contain letters, numbers, hyphens, forward slashes and dots.","example":{"VARIABLE_1":"abcdef","VARIABLE_2":"12345"},"default":{}},"runtimeFiles":{"type":"object","properties":{},"description":"Secret files as JSON object, encrypted at rest. File path must be absolute","example":{"/dir/fileName":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"buildArguments":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"An object containing the build arguments to set for the service. Keys may only contain letters, numbers, hyphens, forward slashes and dots.","example":{"ARGUMENT_1":"abcdef","ARGUMENT_2":"12345"},"default":{}},"buildFiles":{"type":"object","properties":{},"description":"Secret files as JSON object, encrypted at rest. File path must be absolute","example":{"/dir/fileName":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"dockerSecretMounts":{"type":"object","properties":{},"description":"Docker secret mount contents as JSON object, encrypted at rest. Must be a valid Docker secret mount identifier","example":{"example-secret-mount_1":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"healthChecks":{"type":"array","items":{"type":"object","properties":{"protocol":{"type":"string","enum":["HTTP","CMD","TCP"],"description":"The protocol to access the health check with.","example":"HTTP"},"type":{"type":"string","enum":["livenessProbe","readinessProbe","startupProbe"],"description":"The type of health check.","example":"readinessProbe"},"path":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*((\\?([a-zA-Z0-9-._]+(=[a-zA-Z0-9-._]+)?)*)(&([a-zA-Z0-9-._]+(=[a-zA-Z0-9-._]+)?)*)*)?$","description":"The path of the health check endpoint. Required when protocol is HTTP.","example":"/health-check"},"cmd":{"type":"string","description":"The command to run for the health check. Required when protocol is CMD"},"port":{"type":"integer","minimum":1,"description":"Port number for the health check endpoint. Required when protocol is HTTP.","example":8080},"initialDelaySeconds":{"type":"integer","minimum":1,"maximum":180,"description":"Initial delay, in seconds, before the health check is first run.","example":10},"periodSeconds":{"type":"integer","minimum":10,"maximum":600,"description":"The time between each check, in seconds.","example":60},"timeoutSeconds":{"type":"integer","minimum":1,"maximum":60,"description":"The time to wait for a response before marking the health check as a failure.","example":1},"failureThreshold":{"type":"integer","minimum":1,"maximum":255,"description":"The maximum number of allowed failures.","example":3},"successThreshold":{"type":"integer","minimum":1,"maximum":255,"description":"The number of successes required to mark the health check as a success.","example":1}},"required":["protocol","type","initialDelaySeconds","periodSeconds","timeoutSeconds","failureThreshold"],"additionalProperties":false,"description":"A health check object."},"description":"An array of health checks."},"loadBalancing":{"type":"object","properties":{"mode":{"type":"string","enum":["leastConnection","consistentHash","roundRobin","consistentReplicaRouting"]},"consistentHash":{"type":"object","properties":{"mode":{"type":"string","enum":["ip","customHeader"]},"header":{"type":"string","nullable":true}},"required":["mode"],"additionalProperties":false},"consistentReplicaRouting":{"type":"object","properties":{"mode":{"type":"string","enum":["path","header"]}},"required":["mode"],"additionalProperties":false}},"required":["mode"],"additionalProperties":false},"autoscaling":{"type":"object","properties":{"horizontal":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether horizontal autoscaling should be enabled","example":true},"minReplicas":{"type":"number","format":"float","minimum":1,"description":"Minimum number of replicas which should be running at any time","example":1},"maxReplicas":{"type":"number","format":"float","description":"Maximum number of replicas which can be running at any time","example":3},"cpu":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether autoscaling should take into account cpu usage"},"thresholdPercentage":{"type":"integer","minimum":10,"maximum":100,"description":"Threshold CPU usage percentage at which the workload will be scaled"}},"required":["enabled","thresholdPercentage"],"additionalProperties":false},"memory":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether autoscaling should take into account memory usage"},"thresholdPercentage":{"type":"integer","minimum":10,"maximum":100,"description":"Threshold memory usage percentage at which the workload will be scaled"}},"required":["enabled","thresholdPercentage"],"additionalProperties":false},"rps":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether autoscaling should take into requests-per-second"},"thresholdValue":{"type":"integer","minimum":1,"description":"Threshold rps value on which the workload will be scaled"}},"required":["enabled","thresholdValue"],"additionalProperties":false},"userMetrics":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether to enable handling for custom metrics in the autoscaling configuration","example":true},"exposedMetricsPath":{"type":"string","pattern":"^\\/([_a-zA-Z0-9-&?=.]*)((\\/[_a-zA-Z0-9-&?=.]+)*(\\/)?)?$","description":"Path on which the metrics will be exposed by the service..","example":"/metrics"},"exposedMetricsPort":{"type":"integer","description":"Port on which the metrics will be exposed by the service.","example":8080},"metrics":{"type":"array","items":{"type":"object","properties":{"metricName":{"type":"string","pattern":"[a-zA-Z_:][a-zA-Z0-9_:]*$","description":"Name of the custom metric","example":"example-metric"},"metricType":{"type":"string","enum":["gauge","counter"],"description":"Type of metric exposed, this will affect how it'll be queried by the autoscaler component: Gauge will be used as is, Counter will be used with rate()","example":"gauge"},"thresholdValue":{"type":"number","format":"float","description":"Threshold value on which the workload will be scaled. Represents the average value across all running pods.","example":2}},"required":["metricName","metricType","thresholdValue"],"additionalProperties":false},"description":"Array of custom metrics exposed by the service that will be used by the autoscaling configuration. At least one metric is required."}},"required":["enabled","exposedMetricsPath","exposedMetricsPort","metrics"],"additionalProperties":false}},"required":["enabled","minReplicas","maxReplicas"],"additionalProperties":false,"description":"Describes the horizontal autoscaling configuration"}},"additionalProperties":false,"description":"Describes all autoscaling configurations"},"createOptions":{"type":"object","properties":{"volumesToAttach":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39}}},"additionalProperties":false},"serviceType":{"type":"string","enum":["combined"],"description":"Type of the service (combined, build or deployment)","example":"combined"},"deployment":{"type":"object","properties":{"type":{"type":"string","enum":["deployment","statefulSet"],"description":"The way the service should be deployed. Either as a deployment (default), or as a stateful set."},"instances":{"type":"integer","minimum":0,"description":"The number of instances to run the service on.","example":1},"buildpack":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customProcess","customCommand","customEntrypointCustomCommand","originalEntrypointCustomCommand"],"description":"Type of buildpack run configuration"},"customProcess":{"type":"string","description":"Custom process which should be run. Required in case where `configType` is `customProcess`"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be run. Required in case where `configType` is `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be run. Required in case where `configType` is `customCommand`, `customEntrypointCustomCommand` or `originalEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of buildpack runtime"},"docker":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customEntrypoint","customCommand","customEntrypointCustomCommand"],"description":"Type of entrypoint & command override configuration","example":"default"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be used. Required in case where `configType` is `customEntrypoint` or `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be used. Required in case where `configType` is `customCommand` or `customEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of docker runtime"},"storage":{"type":"object","properties":{"useHdbStorage":{"type":"boolean"},"usePdSsdStorage":{"type":"boolean"},"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":1024,"description":"Ephemeral storage per container in MB","example":1024}},"additionalProperties":false},"shmSize":{"type":"integer","minimum":64,"description":"Configures the amount of available memory-backed disk space available to /dev/shm"}},"additionalProperties":false},"strategy":{"type":"object","properties":{"type":{"type":"string","enum":["recreate","rollout-steady","rollout-balanced","rollout-fast","custom"],"description":"Configures the instance roll out strategy of your service. Currently only available via feature flag."},"settings":{"type":"object","properties":{"maxSurge":{"oneOf":[{"type":"integer","minimum":0,"description":"A non-negative integer."},{"type":"string","pattern":"^\\d+%$","description":"A percentage string in the range 0% to 100%, e.g. `25%`"}],"description":"Maximum number or percentage of pods that can be created above the desired count."},"maxUnavailable":{"anyOf":[{"type":"integer","minimum":0,"description":"A non-negative integer."},{"type":"string","pattern":"^\\d+%$","description":"A percentage string in the range 0% to 100%, e.g. `25%`"}],"description":"Maximum number or percentage of pods that can be unavailable during the update."}},"required":["maxSurge","maxUnavailable"],"additionalProperties":false}},"additionalProperties":false,"description":"Roll out strategy of the service"},"zonalRedundancy":{"type":"object","properties":{"type":{"type":"string","enum":["disabled","preferred","required"],"description":"Defines scheduling behaviour across different zones within the same region."},"minZones":{"type":"integer","minimum":1,"description":"Defines how many zones are required and will prevent containers from additional scheduling into existing zones. (Only relevant if type is set to \"required\")"}},"additionalProperties":false},"gpu":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"gpuType":{"type":"string"},"gpuCount":{"type":"integer"},"timesliced":{"type":"boolean"}},"required":["gpuType"],"additionalProperties":false}},"additionalProperties":false},"gracePeriodSeconds":{"type":"integer","minimum":15,"maximum":600,"description":"The 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."},"gradualRolloutStrategyId":{"type":"string","pattern":"^[A-Za-z0-9-]+$","nullable":true,"description":"The id of the strategy to be attached to service.","examples":["strategy-id","strategy-id"]},"ssh":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Enables SSH access if the resource matches an SSH identity selector."}},"required":["enabled"],"additionalProperties":false,"description":"Controls related to SSH access within the resource."},"metadata":{"type":"object","properties":{"labels":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom labels for the workload."},"annotations":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom annotations for the workload as string or object."}},"additionalProperties":false,"description":"Allow setting custom labels and annotations for workloads."},"imageUrl":{"type":"string","description":"Image registry url of the deployed image."}},"required":["instances"],"additionalProperties":false},"id":{"type":"string","description":"Identifier for the service","example":"example-service"},"appId":{"type":"string","description":"Full identifier used for service deployment","example":"/example-user/default-project/example-service"},"cluster":{"type":"object","properties":{"id":{"type":"string","description":"The id of the cluster associated with this project.","example":"nf-europe-west"},"name":{"type":"string","description":"The name of the cluster associated with this project.","example":"nf-europe-west"},"namespace":{"type":"string","description":"Namespace this resource is located within on the cluster.","example":"ns-8zy2mcjh9zn2"},"loadBalancers":{"type":"array","items":{"type":"string","example":"lb.659200800000000000000000.northflank.com"},"description":"Load balancer DNS for the cluster."}},"required":["id","name"],"additionalProperties":false,"description":"Cluster information"},"createdAt":{"type":"string","format":"date-time","description":"time of creation"},"updatedAt":{"type":"string","format":"date-time","description":"time of update"},"status":{"type":"object","properties":{"build":{"type":"object","properties":{"status":{"type":"string","enum":["QUEUED","PENDING","UNSCHEDULABLE","STARTING","CLONING","BUILDING","UPLOADING","ABORTED","FAILURE","SUBMISSION_FAILURE","SUCCESS","CRASHED","IN_PROGRESS"],"description":"The current status of the build.","example":"SUCCESS"},"lastTransitionTime":{"type":"string","format":"date-time","description":"The timestamp of when the build reached this status.","example":"2021-11-29T11:47:16.624Z"}},"required":["status"],"additionalProperties":false,"description":"Details about the status of the most recent build."},"deployment":{"type":"object","properties":{"status":{"type":"string","enum":["PENDING","IN_PROGRESS","COMPLETED","FAILED"],"description":"The current status of the deployment.","example":"COMPLETED"},"reason":{"type":"string","enum":["SCALING","DEPLOYING"],"description":"The reason the current deployment was started.","example":"DEPLOYING"},"lastTransitionTime":{"type":"string","format":"date-time","description":"The timestamp of when the deployment reached this status.","example":"2021-11-29T11:47:16.624Z"}},"required":["status","reason"],"additionalProperties":false,"description":"Details about the current deployment status."}},"additionalProperties":false,"description":"Details about the current service status."}},"required":["name","billing","buildSettings","serviceType","deployment","id","appId","cluster","status"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}},"409":{"description":"There is already a service with the same derived identifier"}},"tags":["Services","project"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":54,"description":"The name of the service.","example":"Example Service"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"A description of the service.","example":"A service description"},"stageId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"billing":{"type":"object","properties":{"deploymentPlan":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The ID of the deployment plan to use.","example":"nf-compute-20"},"buildPlan":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The ID of the build plan to use.","example":"nf-compute-200-8"},"gpu":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"gpuType":{"type":"string"},"gpuCount":{"type":"integer"},"timesliced":{"type":"boolean"}},"required":["gpuType"],"additionalProperties":false}},"additionalProperties":false}},"required":["deploymentPlan"],"additionalProperties":false},"infrastructure":{"type":"object","properties":{"architecture":{"type":"string","enum":["x86","arm"]}},"additionalProperties":false},"deployment":{"type":"object","properties":{"type":{"type":"string","enum":["deployment","statefulSet"],"description":"The way the service should be deployed. Either as a deployment (default), or as a stateful set."},"instances":{"type":"integer","minimum":0,"description":"The number of instances to run the service on.","example":1},"buildpack":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customProcess","customCommand","customEntrypointCustomCommand","originalEntrypointCustomCommand"],"description":"Type of buildpack run configuration"},"customProcess":{"type":"string","description":"Custom process which should be run. Required in case where `configType` is `customProcess`"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be run. Required in case where `configType` is `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be run. Required in case where `configType` is `customCommand`, `customEntrypointCustomCommand` or `originalEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of buildpack runtime"},"docker":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customEntrypoint","customCommand","customEntrypointCustomCommand"],"description":"Type of entrypoint & command override configuration","example":"default"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be used. Required in case where `configType` is `customEntrypoint` or `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be used. Required in case where `configType` is `customCommand` or `customEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of docker runtime"},"storage":{"type":"object","properties":{"useHdbStorage":{"type":"boolean"},"usePdSsdStorage":{"type":"boolean"},"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":1024,"description":"Ephemeral storage per container in MB","example":1024}},"additionalProperties":false},"shmSize":{"type":"integer","minimum":64,"description":"Configures the amount of available memory-backed disk space available to /dev/shm"}},"additionalProperties":false},"strategy":{"type":"object","properties":{"type":{"type":"string","enum":["recreate","rollout-steady","rollout-balanced","rollout-fast","custom"],"description":"Configures the instance roll out strategy of your service. Currently only available via feature flag."},"settings":{"type":"object","properties":{"maxSurge":{"oneOf":[{"type":"integer","minimum":0,"description":"A non-negative integer."},{"type":"string","pattern":"^\\d+%$","description":"A percentage string in the range 0% to 100%, e.g. `25%`"}],"description":"Maximum number or percentage of pods that can be created above the desired count."},"maxUnavailable":{"anyOf":[{"type":"integer","minimum":0,"description":"A non-negative integer."},{"type":"string","pattern":"^\\d+%$","description":"A percentage string in the range 0% to 100%, e.g. `25%`"}],"description":"Maximum number or percentage of pods that can be unavailable during the update."}},"required":["maxSurge","maxUnavailable"],"additionalProperties":false}},"additionalProperties":false,"description":"Roll out strategy of the service"},"zonalRedundancy":{"type":"object","properties":{"type":{"type":"string","enum":["disabled","preferred","required"],"description":"Defines scheduling behaviour across different zones within the same region."},"minZones":{"type":"integer","minimum":1,"description":"Defines how many zones are required and will prevent containers from additional scheduling into existing zones. (Only relevant if type is set to \"required\")"}},"additionalProperties":false},"gpu":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"gpuType":{"type":"string"},"gpuCount":{"type":"integer"},"timesliced":{"type":"boolean"}},"required":["gpuType"],"additionalProperties":false}},"additionalProperties":false},"gracePeriodSeconds":{"type":"integer","minimum":15,"maximum":600,"description":"The 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."},"gradualRolloutStrategyId":{"type":"string","pattern":"^[A-Za-z0-9-]+$","nullable":true,"description":"The id of the strategy to be attached to service.","examples":["strategy-id","strategy-id"]},"ssh":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Enables SSH access if the resource matches an SSH identity selector."}},"required":["enabled"],"additionalProperties":false,"description":"Controls related to SSH access within the resource."},"metadata":{"type":"object","properties":{"labels":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom labels for the workload."},"annotations":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom annotations for the workload as string or object."}},"additionalProperties":false,"description":"Allow setting custom labels and annotations for workloads."}},"required":["instances"],"additionalProperties":false},"ports":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":1,"maxLength":8,"description":"The name used to identify the port.","example":"p01"},"internalPort":{"type":"integer","minimum":1,"maximum":65535,"description":"The port number.","example":8080},"public":{"type":"boolean","description":"If true, the port will be exposed publicly.","example":true,"default":false},"security":{"type":"object","properties":{"credentials":{"type":"array","items":{"type":"object","properties":{"username":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The username to access the service","example":"admin"},"password":{"type":"string","description":"The password to access the service with this username.","example":"password123"},"type":{"type":"string","enum":["basic-auth"],"description":"The type of authentication used","example":"basic-auth"}},"required":["username","password","type"],"additionalProperties":false},"description":"An array of credentials to access the service."},"ip":{"type":"array","items":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","description":"An IP address used by this rule","example":"127.0.0.1"},"description":"An array of IP addresses used for this rule"},"action":{"type":"string","enum":["ALLOW","DENY"],"description":"The action for this rule.","example":"DENY"}},"required":["addresses","action"],"additionalProperties":false},"description":"An array of IP address policies."},"policies":{"type":"array","items":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","description":"An IP address used by this rule","example":"127.0.0.1"},"description":"An array of IP addresses used for this rule"},"action":{"type":"string","enum":["ALLOW","DENY"],"description":"The action for this rule.","example":"DENY"}},"required":["addresses","action"],"additionalProperties":false},"description":"An array of IP address policies."},"sso":{"type":"object","properties":{"organizationId":{"type":"string","description":"ID of the SSO organization that the user will have to be a member of"},"directoryGroupIds":{"type":"array","items":{"type":"string"},"description":"Array of directory groups that will have access"},"allowAnyOrgUsers":{"type":"boolean","description":"Allow entire organization to access this service"},"validateInternalTraffic":{"type":"boolean","description":"Enforce internal traffic through SSO authentication flow"},"setCookieOnRootDomain":{"type":"boolean","description":"Set SSO authentication cookie on root domain"},"allowInternalTrafficViaPublicDns":{"type":"boolean","description":"Allow internal traffic from same or shared projects via public DNS to skip SSO authentication flow"}},"additionalProperties":false,"description":"Configure port authentication via SSO"},"headers":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"regexMode":{"type":"boolean","example":false,"default":false},"name":{"type":"string","pattern":"^[a-zA-Z0-9_\\-%$+]+$","example":"headerName"},"value":{"type":"string","example":"headerValue"}},"required":["name","value"],"additionalProperties":false,"description":"Matches provided headers as strings."},{"type":"object","properties":{"regexMode":{"type":"boolean","example":true,"default":false},"name":{"type":"string","example":"headerName"},"value":{"type":"string","example":"headerValue"}},"required":["name","value"],"additionalProperties":false,"description":"Matches provided headers as regex."}]},"description":"List of header authentication settings, it checks the presence of all headers and compares it against the expected value. Wildcard (*) is supported."},"verificationMode":{"type":"string","enum":["or","and"],"description":"Mode used to verify multiple security features like ip policies and SSO authentication"},"securePathConfiguration":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Enable security policies on a path-level style"},"skipSecurityPoliciesForInternalTrafficViaPublicDns":{"type":"boolean","description":"Allow internal traffic from same or shared projects via public DNS to skip all security policies"},"rules":{"type":"array","items":{"type":"object","properties":{"paths":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"path":{"type":"string","pattern":"^\\/([_a-zA-Z0-9-&?=.]*)((\\/[_a-zA-Z0-9-&?=.]+)*(\\/)?)?$"},"routingMode":{"type":"string","enum":["prefix"],"description":"Mode of the path, determining how the URI will be interpreted.","example":"prefix"},"priority":{"type":"integer","minimum":0,"maximum":100,"example":80}},"required":["path","routingMode","priority"],"additionalProperties":false,"description":"Route when the path starts with the provided prefix."},{"type":"object","properties":{"path":{"type":"string","pattern":"^\\/([_a-zA-Z0-9-&?=.]*)((\\/[_a-zA-Z0-9-&?=.]+)*(\\/)?)?$"},"routingMode":{"type":"string","enum":["exact"],"description":"Mode of the path, determining how the URI will be interpreted.","example":"exact"},"priority":{"type":"integer","minimum":0,"maximum":100,"example":80}},"required":["path","routingMode","priority"],"additionalProperties":false,"description":"Route when the path is an exact match."},{"type":"object","properties":{"path":{"type":"string"},"routingMode":{"type":"string","enum":["regex"],"description":"Mode of the path, determining how the URI will be interpreted.","example":"regex"},"priority":{"type":"integer","minimum":0,"maximum":100,"example":80}},"required":["path","routingMode","priority"],"additionalProperties":false,"description":"Route when the path matches the provided regex."}],"description":"Data about how the path should be handled."},"description":"Array of path objects which represent the paths and their priority for which the security policies will be enforced"},"accessMode":{"type":"string","enum":["protected","unprotected"],"description":"Specify the way the path rule will behave when processing policies. This enables an allow-list/deny-list approach for access control on each path","example":"protected"},"securityPolicies":{"type":"object","properties":{"orPolicies":{"type":"object","properties":{"credentials":{"type":"array","items":{"type":"object","properties":{"username":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The username to access the service","example":"admin"},"password":{"type":"string","description":"The password to access the service with this username.","example":"password123"},"type":{"type":"string","enum":["basic-auth"],"description":"The type of authentication used","example":"basic-auth"}},"required":["username","password","type"],"additionalProperties":false},"description":"An array of credentials to access the service."},"ip":{"type":"array","items":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","description":"An IP address used by this rule","example":"127.0.0.1"},"description":"An array of IP addresses used for this rule"},"action":{"type":"string","enum":["ALLOW","DENY"],"description":"The action for this rule.","example":"DENY"}},"required":["addresses","action"],"additionalProperties":false},"description":"An array of IP address policies."},"policies":{"type":"array","items":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","description":"An IP address used by this rule","example":"127.0.0.1"},"description":"An array of IP addresses used for this rule"},"action":{"type":"string","enum":["ALLOW","DENY"],"description":"The action for this rule.","example":"DENY"}},"required":["addresses","action"],"additionalProperties":false},"description":"An array of IP address policies."},"sso":{"type":"object","properties":{"organizationId":{"type":"string","description":"ID of the SSO organization that the user will have to be a member of"},"directoryGroupIds":{"type":"array","items":{"type":"string"},"description":"Array of directory groups that will have access"},"allowAnyOrgUsers":{"type":"boolean","description":"Allow entire organization to access this service"},"validateInternalTraffic":{"type":"boolean","description":"Enforce internal traffic through SSO authentication flow"},"setCookieOnRootDomain":{"type":"boolean","description":"Set SSO authentication cookie on root domain"},"allowInternalTrafficViaPublicDns":{"type":"boolean","description":"Allow internal traffic from same or shared projects via public DNS to skip SSO authentication flow"}},"additionalProperties":false,"description":"Configure port authentication via SSO"},"headers":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"regexMode":{"type":"boolean","example":false,"default":false},"name":{"type":"string","pattern":"^[a-zA-Z0-9_\\-%$+]+$","example":"headerName"},"value":{"type":"string","example":"headerValue"}},"required":["name","value"],"additionalProperties":false,"description":"Matches provided headers as strings."},{"type":"object","properties":{"regexMode":{"type":"boolean","example":true,"default":false},"name":{"type":"string","example":"headerName"},"value":{"type":"string","example":"headerValue"}},"required":["name","value"],"additionalProperties":false,"description":"Matches provided headers as regex."}]},"description":"List of header authentication settings, it checks the presence of all headers and compares it against the expected value. Wildcard (*) is supported."}},"additionalProperties":false},"requiredPolicies":{"type":"object","properties":{"credentials":{"type":"array","items":{"type":"object","properties":{"username":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The username to access the service","example":"admin"},"password":{"type":"string","description":"The password to access the service with this username.","example":"password123"},"type":{"type":"string","enum":["basic-auth"],"description":"The type of authentication used","example":"basic-auth"}},"required":["username","password","type"],"additionalProperties":false},"description":"An array of credentials to access the service."},"ip":{"type":"array","items":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","description":"An IP address used by this rule","example":"127.0.0.1"},"description":"An array of IP addresses used for this rule"},"action":{"type":"string","enum":["ALLOW","DENY"],"description":"The action for this rule.","example":"DENY"}},"required":["addresses","action"],"additionalProperties":false},"description":"An array of IP address policies."},"policies":{"type":"array","items":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","description":"An IP address used by this rule","example":"127.0.0.1"},"description":"An array of IP addresses used for this rule"},"action":{"type":"string","enum":["ALLOW","DENY"],"description":"The action for this rule.","example":"DENY"}},"required":["addresses","action"],"additionalProperties":false},"description":"An array of IP address policies."},"sso":{"type":"object","properties":{"organizationId":{"type":"string","description":"ID of the SSO organization that the user will have to be a member of"},"directoryGroupIds":{"type":"array","items":{"type":"string"},"description":"Array of directory groups that will have access"},"allowAnyOrgUsers":{"type":"boolean","description":"Allow entire organization to access this service"},"validateInternalTraffic":{"type":"boolean","description":"Enforce internal traffic through SSO authentication flow"},"setCookieOnRootDomain":{"type":"boolean","description":"Set SSO authentication cookie on root domain"},"allowInternalTrafficViaPublicDns":{"type":"boolean","description":"Allow internal traffic from same or shared projects via public DNS to skip SSO authentication flow"}},"additionalProperties":false,"description":"Configure port authentication via SSO"},"headers":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"regexMode":{"type":"boolean","example":false,"default":false},"name":{"type":"string","pattern":"^[a-zA-Z0-9_\\-%$+]+$","example":"headerName"},"value":{"type":"string","example":"headerValue"}},"required":["name","value"],"additionalProperties":false,"description":"Matches provided headers as strings."},{"type":"object","properties":{"regexMode":{"type":"boolean","example":true,"default":false},"name":{"type":"string","example":"headerName"},"value":{"type":"string","example":"headerValue"}},"required":["name","value"],"additionalProperties":false,"description":"Matches provided headers as regex."}]},"description":"List of header authentication settings, it checks the presence of all headers and compares it against the expected value. Wildcard (*) is supported."}},"additionalProperties":false}},"additionalProperties":false}},"required":["paths","accessMode"],"additionalProperties":false},"default":[]}},"additionalProperties":false}},"additionalProperties":false,"default":{"credentials":[],"policies":[],"sso":{}}},"domains":{"type":"array","items":{"type":"string","description":"A domain to redirect to this port.","example":"app.example.com"},"description":"An array of domains to redirect to this port. Each domain must first be verified and registered to your account.","default":[]},"disableNfDomain":{"type":"boolean","description":"Disable routing on the default code.run domain for public HTTP ports with custom domains.","default":false},"advancedOptions":{"type":"object","properties":{"enableTlsPassthrough":{"type":"boolean","description":"Whether this port should use pass through mode for TLS"}},"additionalProperties":false},"protocol":{"type":"string","enum":["HTTP","HTTP/2","TCP","UDP"],"description":"The protocol to use for the port.","example":"HTTP"}},"required":["name","internalPort","protocol"],"additionalProperties":false},"default":[]},"disabledCI":{"type":"boolean","description":"Whether CI (continuous integration) should be disabled.","default":false},"buildSource":{"type":"string","enum":["git","bundle"],"description":"Defines the build source for this resource","example":"git"},"vcsData":{"type":"object","properties":{"projectUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo to build.","example":"https://github.com/northflank/gatsby-with-northflank"},"projectType":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string","minLength":24,"maxLength":24,"description":"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 `vcsLinkId` is provided, Northflank will instead use your linked account with that ID."},"projectBranch":{"type":"string","description":"The name of the branch to use.","example":"master"}},"required":["projectUrl","projectType","projectBranch"],"additionalProperties":false},"bundleData":{"type":"object","properties":{"bundleUrl":{"type":"string","description":"URL of the bundle to be built","example":"https://example.com/archive.tar"},"branch":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"Branch identifier for the bundle.","example":"main"}},"required":["bundleUrl","branch"],"additionalProperties":false},"buildSettings":{"oneOf":[{"type":"object","properties":{"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false},"dockerfile":{"type":"object","properties":{"useCache":{"type":"boolean","description":"DEPRECATED: This field will be removed in the near future and currently has no effect."},"buildEngine":{"type":"string","enum":["buildkit","kaniko"],"description":"Build engine to use. Defaults to recommended build engine `buildkit`","example":"buildkit","default":"buildkit"},"dockerFilePath":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]+$","description":"The file path of the Dockerfile.","example":"/Dockerfile"},"dockerWorkDir":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*$","description":"The working directory of the Dockerfile.","example":"/"},"buildkit":{"type":"object","properties":{"useCache":{"type":"boolean","description":"Use persistent storage to cache build layers.","example":true,"default":false},"cacheStorageSize":{"type":"integer","description":"The amount of persistent storage available to each build in MB.","example":32768},"useInternalCache":{"type":"boolean","description":"DEPRECATED: This field will be removed in the near future.","default":false},"internalCacheStorage":{"type":"number","format":"float","description":"DEPRECATED: This field will be removed in the near future."}},"additionalProperties":false}},"required":["dockerFilePath","dockerWorkDir"],"additionalProperties":false}},"required":["dockerfile"],"additionalProperties":false,"description":"Build from a Dockerfile"},{"type":"object","properties":{"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false},"buildpack":{"type":"object","properties":{"builder":{"type":"string","enum":["HEROKU_24","HEROKU_22","HEROKU_22_CLASSIC","HEROKU_20","HEROKU_18","GOOGLE_22","GOOGLE_V1","CNB_ALPINE","CNB_BIONIC","PAKETO_JAMMY_TINY","PAKETO_JAMMY_BASE","PAKETO_JAMMY_FULL","PAKETO_TINY","PAKETO_BASE","PAKETO_FULL"],"description":"Buildpack stack to use. Defaults to recommended stack `HEROKU_24`.","example":"HEROKU_24","default":"HEROKU_24"},"buildpackLocators":{"type":"array","items":{"type":"string","description":"Url or registry identifier of custom Buildpack.","example":"https://buildpack-registry.heroku.com/cnb/mars/create-react-app"},"description":"Array of custom Buildpacks to use.","default":[]},"buildContext":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*$","description":"The working directory to build in.","example":"/","default":"/"},"useCache":{"type":"boolean","description":"Should build dependencies be cached?","example":false,"default":false}},"additionalProperties":false}},"required":["buildpack"],"additionalProperties":false,"description":"Build from a Buildpack"}],"description":"Build engine"},"buildConfiguration":{"type":"object","properties":{"pathIgnoreRules":{"type":"array","items":{"type":"string","maxLength":260,"description":"A path ignore rule, following `.gitignore` syntax. For example, `*.md` will ignore all files ending with `.md`.","example":"README.md"},"maxItems":200,"description":"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."},"isAllowList":{"type":"boolean","description":"If `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`.","example":false},"ciIgnoreFlagsEnabled":{"type":"boolean","description":"If `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":{"type":"array","items":{"type":"string","maxLength":72,"description":"A commit ignore flag.","example":"[skip ci]"},"maxItems":200,"description":"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]\"]`","example":["[skip ci]","[ci skip]","[no ci]","[skip nf]","[nf skip]","[northflank skip]","[skip northflank]"]},"dockerfileTarget":{"type":"string","description":"If your Dockerfile contains multiple build stages, you can specify the target stage by entering its name here."},"dockerCredentials":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The ID of the docker credentials to use.","example":"example-docker-credential"}},"includeGitFolder":{"type":"boolean","description":"Include .git folder inside the build context"},"fullGitClone":{"type":"boolean","description":"Include the entire git history as part of the .git folder. Only relevant if \"includeGitFolder\" is set."},"enableGitLfs":{"type":"boolean","description":"Enable Git LFS support for the build"},"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false}},"additionalProperties":false,"default":{"pathIgnoreRules":[],"isAllowList":false,"ciIgnoreFlagsEnabled":false}},"runtimeEnvironment":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"An object containing the runtime environment to set for the service. Keys may only contain letters, numbers, hyphens, forward slashes and dots.","example":{"VARIABLE_1":"abcdef","VARIABLE_2":"12345"},"default":{}},"runtimeFiles":{"type":"object","properties":{},"description":"Secret files as JSON object, encrypted at rest. File path must be absolute","example":{"/dir/fileName":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"buildArguments":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"An object containing the build arguments to set for the service. Keys may only contain letters, numbers, hyphens, forward slashes and dots.","example":{"ARGUMENT_1":"abcdef","ARGUMENT_2":"12345"},"default":{}},"buildFiles":{"type":"object","properties":{},"description":"Secret files as JSON object, encrypted at rest. File path must be absolute","example":{"/dir/fileName":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"dockerSecretMounts":{"type":"object","properties":{},"description":"Docker secret mount contents as JSON object, encrypted at rest. Must be a valid Docker secret mount identifier","example":{"example-secret-mount_1":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"healthChecks":{"type":"array","items":{"type":"object","properties":{"protocol":{"type":"string","enum":["HTTP","CMD","TCP"],"description":"The protocol to access the health check with.","example":"HTTP"},"type":{"type":"string","enum":["livenessProbe","readinessProbe","startupProbe"],"description":"The type of health check.","example":"readinessProbe"},"path":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*((\\?([a-zA-Z0-9-._]+(=[a-zA-Z0-9-._]+)?)*)(&([a-zA-Z0-9-._]+(=[a-zA-Z0-9-._]+)?)*)*)?$","description":"The path of the health check endpoint. Required when protocol is HTTP.","example":"/health-check"},"cmd":{"type":"string","description":"The command to run for the health check. Required when protocol is CMD"},"port":{"type":"integer","minimum":1,"description":"Port number for the health check endpoint. Required when protocol is HTTP.","example":8080},"initialDelaySeconds":{"type":"integer","minimum":1,"maximum":180,"description":"Initial delay, in seconds, before the health check is first run.","example":10},"periodSeconds":{"type":"integer","minimum":10,"maximum":600,"description":"The time between each check, in seconds.","example":60},"timeoutSeconds":{"type":"integer","minimum":1,"maximum":60,"description":"The time to wait for a response before marking the health check as a failure.","example":1},"failureThreshold":{"type":"integer","minimum":1,"maximum":255,"description":"The maximum number of allowed failures.","example":3},"successThreshold":{"type":"integer","minimum":1,"maximum":255,"description":"The number of successes required to mark the health check as a success.","example":1}},"required":["protocol","type","initialDelaySeconds","periodSeconds","timeoutSeconds","failureThreshold"],"additionalProperties":false,"description":"A health check object."},"description":"An array of health checks."},"loadBalancing":{"type":"object","properties":{"mode":{"type":"string","enum":["leastConnection","consistentHash","roundRobin","consistentReplicaRouting"]},"consistentHash":{"type":"object","properties":{"mode":{"type":"string","enum":["ip","customHeader"]},"header":{"type":"string","nullable":true}},"required":["mode"],"additionalProperties":false},"consistentReplicaRouting":{"type":"object","properties":{"mode":{"type":"string","enum":["path","header"]}},"required":["mode"],"additionalProperties":false}},"required":["mode"],"additionalProperties":false},"autoscaling":{"type":"object","properties":{"horizontal":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether horizontal autoscaling should be enabled","example":true},"minReplicas":{"type":"number","format":"float","minimum":1,"description":"Minimum number of replicas which should be running at any time","example":1},"maxReplicas":{"type":"number","format":"float","description":"Maximum number of replicas which can be running at any time","example":3},"cpu":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether autoscaling should take into account cpu usage"},"thresholdPercentage":{"type":"integer","minimum":10,"maximum":100,"description":"Threshold CPU usage percentage at which the workload will be scaled"}},"required":["enabled","thresholdPercentage"],"additionalProperties":false},"memory":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether autoscaling should take into account memory usage"},"thresholdPercentage":{"type":"integer","minimum":10,"maximum":100,"description":"Threshold memory usage percentage at which the workload will be scaled"}},"required":["enabled","thresholdPercentage"],"additionalProperties":false},"rps":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether autoscaling should take into requests-per-second"},"thresholdValue":{"type":"integer","minimum":1,"description":"Threshold rps value on which the workload will be scaled"}},"required":["enabled","thresholdValue"],"additionalProperties":false},"userMetrics":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether to enable handling for custom metrics in the autoscaling configuration","example":true},"exposedMetricsPath":{"type":"string","pattern":"^\\/([_a-zA-Z0-9-&?=.]*)((\\/[_a-zA-Z0-9-&?=.]+)*(\\/)?)?$","description":"Path on which the metrics will be exposed by the service..","example":"/metrics"},"exposedMetricsPort":{"type":"integer","description":"Port on which the metrics will be exposed by the service.","example":8080},"metrics":{"type":"array","items":{"type":"object","properties":{"metricName":{"type":"string","pattern":"[a-zA-Z_:][a-zA-Z0-9_:]*$","description":"Name of the custom metric","example":"example-metric"},"metricType":{"type":"string","enum":["gauge","counter"],"description":"Type of metric exposed, this will affect how it'll be queried by the autoscaler component: Gauge will be used as is, Counter will be used with rate()","example":"gauge"},"thresholdValue":{"type":"number","format":"float","description":"Threshold value on which the workload will be scaled. Represents the average value across all running pods.","example":2}},"required":["metricName","metricType","thresholdValue"],"additionalProperties":false},"description":"Array of custom metrics exposed by the service that will be used by the autoscaling configuration. At least one metric is required."}},"required":["enabled","exposedMetricsPath","exposedMetricsPort","metrics"],"additionalProperties":false}},"required":["enabled","minReplicas","maxReplicas"],"additionalProperties":false,"description":"Describes the horizontal autoscaling configuration"}},"additionalProperties":false,"description":"Describes all autoscaling configurations"},"createOptions":{"type":"object","properties":{"volumesToAttach":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39}}},"additionalProperties":false}},"required":["name","billing","deployment","buildSettings"],"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Project > Services > General > Create","x-nf-team-scoped":true,"x-nf-subheading":"create service","x-nf-cli-command":["create","service","combined"]},"v1-projects--projectId--services-combined-put":{"operationId":"putProjectsServicesCombined","summary":"Put combined service","description":"Creates or updates a combined service.","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}}],"responses":{"200":{"description":"Details about the created or updated service.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":54,"description":"The name of the service.","example":"Example Service"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"A description of the service.","example":"A service description"},"stageId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"billing":{"type":"object","properties":{"deploymentPlan":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The ID of the deployment plan to use.","example":"nf-compute-20"},"buildPlan":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The ID of the build plan to use.","example":"nf-compute-200-8"},"gpu":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"gpuType":{"type":"string"},"gpuCount":{"type":"integer"},"timesliced":{"type":"boolean"}},"required":["gpuType"],"additionalProperties":false}},"additionalProperties":false}},"required":["deploymentPlan"],"additionalProperties":false},"infrastructure":{"type":"object","properties":{"architecture":{"type":"string","enum":["x86","arm"]}},"additionalProperties":false},"ports":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":1,"maxLength":8,"description":"The name used to identify the port.","example":"p01"},"internalPort":{"type":"integer","minimum":1,"maximum":65535,"description":"The port number.","example":8080},"public":{"type":"boolean","description":"If true, the port will be exposed publicly.","example":true,"default":false},"security":{"type":"object","properties":{"credentials":{"type":"array","items":{"type":"object","properties":{"username":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The username to access the service","example":"admin"},"password":{"type":"string","description":"The password to access the service with this username.","example":"password123"},"type":{"type":"string","enum":["basic-auth"],"description":"The type of authentication used","example":"basic-auth"}},"required":["username","password","type"],"additionalProperties":false},"description":"An array of credentials to access the service."},"ip":{"type":"array","items":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","description":"An IP address used by this rule","example":"127.0.0.1"},"description":"An array of IP addresses used for this rule"},"action":{"type":"string","enum":["ALLOW","DENY"],"description":"The action for this rule.","example":"DENY"}},"required":["addresses","action"],"additionalProperties":false},"description":"An array of IP address policies."},"policies":{"type":"array","items":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","description":"An IP address used by this rule","example":"127.0.0.1"},"description":"An array of IP addresses used for this rule"},"action":{"type":"string","enum":["ALLOW","DENY"],"description":"The action for this rule.","example":"DENY"}},"required":["addresses","action"],"additionalProperties":false},"description":"An array of IP address policies."},"sso":{"type":"object","properties":{"organizationId":{"type":"string","description":"ID of the SSO organization that the user will have to be a member of"},"directoryGroupIds":{"type":"array","items":{"type":"string"},"description":"Array of directory groups that will have access"},"allowAnyOrgUsers":{"type":"boolean","description":"Allow entire organization to access this service"},"validateInternalTraffic":{"type":"boolean","description":"Enforce internal traffic through SSO authentication flow"},"setCookieOnRootDomain":{"type":"boolean","description":"Set SSO authentication cookie on root domain"},"allowInternalTrafficViaPublicDns":{"type":"boolean","description":"Allow internal traffic from same or shared projects via public DNS to skip SSO authentication flow"}},"additionalProperties":false,"description":"Configure port authentication via SSO"},"headers":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"regexMode":{"type":"boolean","example":false,"default":false},"name":{"type":"string","pattern":"^[a-zA-Z0-9_\\-%$+]+$","example":"headerName"},"value":{"type":"string","example":"headerValue"}},"required":["name","value"],"additionalProperties":false,"description":"Matches provided headers as strings."},{"type":"object","properties":{"regexMode":{"type":"boolean","example":true,"default":false},"name":{"type":"string","example":"headerName"},"value":{"type":"string","example":"headerValue"}},"required":["name","value"],"additionalProperties":false,"description":"Matches provided headers as regex."}]},"description":"List of header authentication settings, it checks the presence of all headers and compares it against the expected value. Wildcard (*) is supported."},"verificationMode":{"type":"string","enum":["or","and"],"description":"Mode used to verify multiple security features like ip policies and SSO authentication"},"securePathConfiguration":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Enable security policies on a path-level style"},"skipSecurityPoliciesForInternalTrafficViaPublicDns":{"type":"boolean","description":"Allow internal traffic from same or shared projects via public DNS to skip all security policies"},"rules":{"type":"array","items":{"type":"object","properties":{"paths":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"path":{"type":"string","pattern":"^\\/([_a-zA-Z0-9-&?=.]*)((\\/[_a-zA-Z0-9-&?=.]+)*(\\/)?)?$"},"routingMode":{"type":"string","enum":["prefix"],"description":"Mode of the path, determining how the URI will be interpreted.","example":"prefix"},"priority":{"type":"integer","minimum":0,"maximum":100,"example":80}},"required":["path","routingMode","priority"],"additionalProperties":false,"description":"Route when the path starts with the provided prefix."},{"type":"object","properties":{"path":{"type":"string","pattern":"^\\/([_a-zA-Z0-9-&?=.]*)((\\/[_a-zA-Z0-9-&?=.]+)*(\\/)?)?$"},"routingMode":{"type":"string","enum":["exact"],"description":"Mode of the path, determining how the URI will be interpreted.","example":"exact"},"priority":{"type":"integer","minimum":0,"maximum":100,"example":80}},"required":["path","routingMode","priority"],"additionalProperties":false,"description":"Route when the path is an exact match."},{"type":"object","properties":{"path":{"type":"string"},"routingMode":{"type":"string","enum":["regex"],"description":"Mode of the path, determining how the URI will be interpreted.","example":"regex"},"priority":{"type":"integer","minimum":0,"maximum":100,"example":80}},"required":["path","routingMode","priority"],"additionalProperties":false,"description":"Route when the path matches the provided regex."}],"description":"Data about how the path should be handled."},"description":"Array of path objects which represent the paths and their priority for which the security policies will be enforced"},"accessMode":{"type":"string","enum":["protected","unprotected"],"description":"Specify the way the path rule will behave when processing policies. This enables an allow-list/deny-list approach for access control on each path","example":"protected"},"securityPolicies":{"type":"object","properties":{"orPolicies":{"type":"object","properties":{"credentials":{"type":"array","items":{"type":"object","properties":{"username":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The username to access the service","example":"admin"},"password":{"type":"string","description":"The password to access the service with this username.","example":"password123"},"type":{"type":"string","enum":["basic-auth"],"description":"The type of authentication used","example":"basic-auth"}},"required":["username","password","type"],"additionalProperties":false},"description":"An array of credentials to access the service."},"ip":{"type":"array","items":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","description":"An IP address used by this rule","example":"127.0.0.1"},"description":"An array of IP addresses used for this rule"},"action":{"type":"string","enum":["ALLOW","DENY"],"description":"The action for this rule.","example":"DENY"}},"required":["addresses","action"],"additionalProperties":false},"description":"An array of IP address policies."},"policies":{"type":"array","items":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","description":"An IP address used by this rule","example":"127.0.0.1"},"description":"An array of IP addresses used for this rule"},"action":{"type":"string","enum":["ALLOW","DENY"],"description":"The action for this rule.","example":"DENY"}},"required":["addresses","action"],"additionalProperties":false},"description":"An array of IP address policies."},"sso":{"type":"object","properties":{"organizationId":{"type":"string","description":"ID of the SSO organization that the user will have to be a member of"},"directoryGroupIds":{"type":"array","items":{"type":"string"},"description":"Array of directory groups that will have access"},"allowAnyOrgUsers":{"type":"boolean","description":"Allow entire organization to access this service"},"validateInternalTraffic":{"type":"boolean","description":"Enforce internal traffic through SSO authentication flow"},"setCookieOnRootDomain":{"type":"boolean","description":"Set SSO authentication cookie on root domain"},"allowInternalTrafficViaPublicDns":{"type":"boolean","description":"Allow internal traffic from same or shared projects via public DNS to skip SSO authentication flow"}},"additionalProperties":false,"description":"Configure port authentication via SSO"},"headers":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"regexMode":{"type":"boolean","example":false,"default":false},"name":{"type":"string","pattern":"^[a-zA-Z0-9_\\-%$+]+$","example":"headerName"},"value":{"type":"string","example":"headerValue"}},"required":["name","value"],"additionalProperties":false,"description":"Matches provided headers as strings."},{"type":"object","properties":{"regexMode":{"type":"boolean","example":true,"default":false},"name":{"type":"string","example":"headerName"},"value":{"type":"string","example":"headerValue"}},"required":["name","value"],"additionalProperties":false,"description":"Matches provided headers as regex."}]},"description":"List of header authentication settings, it checks the presence of all headers and compares it against the expected value. Wildcard (*) is supported."}},"additionalProperties":false},"requiredPolicies":{"type":"object","properties":{"credentials":{"type":"array","items":{"type":"object","properties":{"username":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The username to access the service","example":"admin"},"password":{"type":"string","description":"The password to access the service with this username.","example":"password123"},"type":{"type":"string","enum":["basic-auth"],"description":"The type of authentication used","example":"basic-auth"}},"required":["username","password","type"],"additionalProperties":false},"description":"An array of credentials to access the service."},"ip":{"type":"array","items":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","description":"An IP address used by this rule","example":"127.0.0.1"},"description":"An array of IP addresses used for this rule"},"action":{"type":"string","enum":["ALLOW","DENY"],"description":"The action for this rule.","example":"DENY"}},"required":["addresses","action"],"additionalProperties":false},"description":"An array of IP address policies."},"policies":{"type":"array","items":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","description":"An IP address used by this rule","example":"127.0.0.1"},"description":"An array of IP addresses used for this rule"},"action":{"type":"string","enum":["ALLOW","DENY"],"description":"The action for this rule.","example":"DENY"}},"required":["addresses","action"],"additionalProperties":false},"description":"An array of IP address policies."},"sso":{"type":"object","properties":{"organizationId":{"type":"string","description":"ID of the SSO organization that the user will have to be a member of"},"directoryGroupIds":{"type":"array","items":{"type":"string"},"description":"Array of directory groups that will have access"},"allowAnyOrgUsers":{"type":"boolean","description":"Allow entire organization to access this service"},"validateInternalTraffic":{"type":"boolean","description":"Enforce internal traffic through SSO authentication flow"},"setCookieOnRootDomain":{"type":"boolean","description":"Set SSO authentication cookie on root domain"},"allowInternalTrafficViaPublicDns":{"type":"boolean","description":"Allow internal traffic from same or shared projects via public DNS to skip SSO authentication flow"}},"additionalProperties":false,"description":"Configure port authentication via SSO"},"headers":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"regexMode":{"type":"boolean","example":false,"default":false},"name":{"type":"string","pattern":"^[a-zA-Z0-9_\\-%$+]+$","example":"headerName"},"value":{"type":"string","example":"headerValue"}},"required":["name","value"],"additionalProperties":false,"description":"Matches provided headers as strings."},{"type":"object","properties":{"regexMode":{"type":"boolean","example":true,"default":false},"name":{"type":"string","example":"headerName"},"value":{"type":"string","example":"headerValue"}},"required":["name","value"],"additionalProperties":false,"description":"Matches provided headers as regex."}]},"description":"List of header authentication settings, it checks the presence of all headers and compares it against the expected value. Wildcard (*) is supported."}},"additionalProperties":false}},"additionalProperties":false}},"required":["paths","accessMode"],"additionalProperties":false},"default":[]}},"additionalProperties":false}},"additionalProperties":false,"default":{"credentials":[],"policies":[],"sso":{}}},"domains":{"type":"array","items":{"type":"string","description":"A domain to redirect to this port.","example":"app.example.com"},"description":"An array of domains to redirect to this port. Each domain must first be verified and registered to your account.","default":[]},"disableNfDomain":{"type":"boolean","description":"Disable routing on the default code.run domain for public HTTP ports with custom domains.","default":false},"advancedOptions":{"type":"object","properties":{"enableTlsPassthrough":{"type":"boolean","description":"Whether this port should use pass through mode for TLS"}},"additionalProperties":false},"protocol":{"type":"string","oneOf":[{"type":"string","enum":["HTTP","HTTP/2"]},{"type":"string","enum":["HTTP","HTTP/2","TCP","UDP"]}],"description":"The protocol to use for the port.","example":"HTTP"}},"required":["name","internalPort","protocol"],"additionalProperties":false},"default":[]},"disabledCI":{"type":"boolean","description":"Whether CI (continuous integration) should be disabled.","default":false},"buildSource":{"type":"string","enum":["git","bundle"],"description":"Defines the build source for this resource","example":"git"},"vcsData":{"type":"object","properties":{"projectUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo to build.","example":"https://github.com/northflank/gatsby-with-northflank"},"projectType":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string","minLength":24,"maxLength":24,"description":"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 `vcsLinkId` is provided, Northflank will instead use your linked account with that ID."},"projectBranch":{"type":"string","description":"The name of the branch to use.","example":"master"}},"required":["projectUrl","projectType","projectBranch"],"additionalProperties":false},"bundleData":{"type":"object","properties":{"bundleUrl":{"type":"string","description":"URL of the bundle to be built","example":"https://example.com/archive.tar"},"branch":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"Branch identifier for the bundle.","example":"main"}},"required":["bundleUrl","branch"],"additionalProperties":false},"buildSettings":{"oneOf":[{"type":"object","properties":{"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false},"dockerfile":{"type":"object","properties":{"useCache":{"type":"boolean","description":"DEPRECATED: This field will be removed in the near future and currently has no effect."},"buildEngine":{"type":"string","enum":["buildkit","kaniko"],"description":"Build engine to use. Defaults to recommended build engine `buildkit`","example":"buildkit","default":"buildkit"},"dockerFilePath":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]+$","description":"The file path of the Dockerfile.","example":"/Dockerfile"},"dockerWorkDir":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*$","description":"The working directory of the Dockerfile.","example":"/"},"buildkit":{"type":"object","properties":{"useCache":{"type":"boolean","description":"Use persistent storage to cache build layers.","example":true,"default":false},"cacheStorageSize":{"type":"integer","description":"The amount of persistent storage available to each build in MB.","example":32768},"useInternalCache":{"type":"boolean","description":"DEPRECATED: This field will be removed in the near future.","default":false},"internalCacheStorage":{"type":"number","format":"float","description":"DEPRECATED: This field will be removed in the near future."}},"additionalProperties":false}},"required":["dockerFilePath","dockerWorkDir"],"additionalProperties":false}},"required":["dockerfile"],"additionalProperties":false,"description":"Build from a Dockerfile"},{"type":"object","properties":{"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false},"buildpack":{"type":"object","properties":{"builder":{"type":"string","enum":["HEROKU_24","HEROKU_22","HEROKU_22_CLASSIC","HEROKU_20","HEROKU_18","GOOGLE_22","GOOGLE_V1","CNB_ALPINE","CNB_BIONIC","PAKETO_JAMMY_TINY","PAKETO_JAMMY_BASE","PAKETO_JAMMY_FULL","PAKETO_TINY","PAKETO_BASE","PAKETO_FULL"],"description":"Buildpack stack to use. Defaults to recommended stack `HEROKU_24`.","example":"HEROKU_24","default":"HEROKU_24"},"buildpackLocators":{"type":"array","items":{"type":"string","description":"Url or registry identifier of custom Buildpack.","example":"https://buildpack-registry.heroku.com/cnb/mars/create-react-app"},"description":"Array of custom Buildpacks to use.","default":[]},"buildContext":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*$","description":"The working directory to build in.","example":"/","default":"/"},"useCache":{"type":"boolean","description":"Should build dependencies be cached?","example":false,"default":false}},"additionalProperties":false}},"required":["buildpack"],"additionalProperties":false,"description":"Build from a Buildpack"}],"description":"Build engine"},"buildConfiguration":{"type":"object","properties":{"pathIgnoreRules":{"type":"array","items":{"type":"string","maxLength":260,"description":"A path ignore rule, following `.gitignore` syntax. For example, `*.md` will ignore all files ending with `.md`.","example":"README.md"},"maxItems":200,"description":"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."},"isAllowList":{"type":"boolean","description":"If `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`.","example":false},"ciIgnoreFlagsEnabled":{"type":"boolean","description":"If `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":{"type":"array","items":{"type":"string","maxLength":72,"description":"A commit ignore flag.","example":"[skip ci]"},"maxItems":200,"description":"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]\"]`","example":["[skip ci]","[ci skip]","[no ci]","[skip nf]","[nf skip]","[northflank skip]","[skip northflank]"]},"dockerfileTarget":{"type":"string","description":"If your Dockerfile contains multiple build stages, you can specify the target stage by entering its name here."},"dockerCredentials":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The ID of the docker credentials to use.","example":"example-docker-credential"}},"includeGitFolder":{"type":"boolean","description":"Include .git folder inside the build context"},"fullGitClone":{"type":"boolean","description":"Include the entire git history as part of the .git folder. Only relevant if \"includeGitFolder\" is set."},"enableGitLfs":{"type":"boolean","description":"Enable Git LFS support for the build"},"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false}},"additionalProperties":false,"default":{"pathIgnoreRules":[],"isAllowList":false,"ciIgnoreFlagsEnabled":false}},"runtimeEnvironment":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"An object containing the runtime environment to set for the service. Keys may only contain letters, numbers, hyphens, forward slashes and dots.","example":{"VARIABLE_1":"abcdef","VARIABLE_2":"12345"},"default":{}},"runtimeFiles":{"type":"object","properties":{},"description":"Secret files as JSON object, encrypted at rest. File path must be absolute","example":{"/dir/fileName":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"buildArguments":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"An object containing the build arguments to set for the service. Keys may only contain letters, numbers, hyphens, forward slashes and dots.","example":{"ARGUMENT_1":"abcdef","ARGUMENT_2":"12345"},"default":{}},"buildFiles":{"type":"object","properties":{},"description":"Secret files as JSON object, encrypted at rest. File path must be absolute","example":{"/dir/fileName":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"dockerSecretMounts":{"type":"object","properties":{},"description":"Docker secret mount contents as JSON object, encrypted at rest. Must be a valid Docker secret mount identifier","example":{"example-secret-mount_1":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"healthChecks":{"type":"array","items":{"type":"object","properties":{"protocol":{"type":"string","enum":["HTTP","CMD","TCP"],"description":"The protocol to access the health check with.","example":"HTTP"},"type":{"type":"string","enum":["livenessProbe","readinessProbe","startupProbe"],"description":"The type of health check.","example":"readinessProbe"},"path":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*((\\?([a-zA-Z0-9-._]+(=[a-zA-Z0-9-._]+)?)*)(&([a-zA-Z0-9-._]+(=[a-zA-Z0-9-._]+)?)*)*)?$","description":"The path of the health check endpoint. Required when protocol is HTTP.","example":"/health-check"},"cmd":{"type":"string","description":"The command to run for the health check. Required when protocol is CMD"},"port":{"type":"integer","minimum":1,"description":"Port number for the health check endpoint. Required when protocol is HTTP.","example":8080},"initialDelaySeconds":{"type":"integer","minimum":1,"maximum":180,"description":"Initial delay, in seconds, before the health check is first run.","example":10},"periodSeconds":{"type":"integer","minimum":10,"maximum":600,"description":"The time between each check, in seconds.","example":60},"timeoutSeconds":{"type":"integer","minimum":1,"maximum":60,"description":"The time to wait for a response before marking the health check as a failure.","example":1},"failureThreshold":{"type":"integer","minimum":1,"maximum":255,"description":"The maximum number of allowed failures.","example":3},"successThreshold":{"type":"integer","minimum":1,"maximum":255,"description":"The number of successes required to mark the health check as a success.","example":1}},"required":["protocol","type","initialDelaySeconds","periodSeconds","timeoutSeconds","failureThreshold"],"additionalProperties":false,"description":"A health check object."},"description":"An array of health checks."},"loadBalancing":{"type":"object","properties":{"mode":{"type":"string","enum":["leastConnection","consistentHash","roundRobin","consistentReplicaRouting"]},"consistentHash":{"type":"object","properties":{"mode":{"type":"string","enum":["ip","customHeader"]},"header":{"type":"string","nullable":true}},"required":["mode"],"additionalProperties":false},"consistentReplicaRouting":{"type":"object","properties":{"mode":{"type":"string","enum":["path","header"]}},"required":["mode"],"additionalProperties":false}},"required":["mode"],"additionalProperties":false},"autoscaling":{"type":"object","properties":{"horizontal":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether horizontal autoscaling should be enabled","example":true},"minReplicas":{"type":"number","format":"float","minimum":1,"description":"Minimum number of replicas which should be running at any time","example":1},"maxReplicas":{"type":"number","format":"float","description":"Maximum number of replicas which can be running at any time","example":3},"cpu":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether autoscaling should take into account cpu usage"},"thresholdPercentage":{"type":"integer","minimum":10,"maximum":100,"description":"Threshold CPU usage percentage at which the workload will be scaled"}},"required":["enabled","thresholdPercentage"],"additionalProperties":false},"memory":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether autoscaling should take into account memory usage"},"thresholdPercentage":{"type":"integer","minimum":10,"maximum":100,"description":"Threshold memory usage percentage at which the workload will be scaled"}},"required":["enabled","thresholdPercentage"],"additionalProperties":false},"rps":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether autoscaling should take into requests-per-second"},"thresholdValue":{"type":"integer","minimum":1,"description":"Threshold rps value on which the workload will be scaled"}},"required":["enabled","thresholdValue"],"additionalProperties":false},"userMetrics":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether to enable handling for custom metrics in the autoscaling configuration","example":true},"exposedMetricsPath":{"type":"string","pattern":"^\\/([_a-zA-Z0-9-&?=.]*)((\\/[_a-zA-Z0-9-&?=.]+)*(\\/)?)?$","description":"Path on which the metrics will be exposed by the service..","example":"/metrics"},"exposedMetricsPort":{"type":"integer","description":"Port on which the metrics will be exposed by the service.","example":8080},"metrics":{"type":"array","items":{"type":"object","properties":{"metricName":{"type":"string","pattern":"[a-zA-Z_:][a-zA-Z0-9_:]*$","description":"Name of the custom metric","example":"example-metric"},"metricType":{"type":"string","enum":["gauge","counter"],"description":"Type of metric exposed, this will affect how it'll be queried by the autoscaler component: Gauge will be used as is, Counter will be used with rate()","example":"gauge"},"thresholdValue":{"type":"number","format":"float","description":"Threshold value on which the workload will be scaled. Represents the average value across all running pods.","example":2}},"required":["metricName","metricType","thresholdValue"],"additionalProperties":false},"description":"Array of custom metrics exposed by the service that will be used by the autoscaling configuration. At least one metric is required."}},"required":["enabled","exposedMetricsPath","exposedMetricsPort","metrics"],"additionalProperties":false}},"required":["enabled","minReplicas","maxReplicas"],"additionalProperties":false,"description":"Describes the horizontal autoscaling configuration"}},"additionalProperties":false,"description":"Describes all autoscaling configurations"},"createOptions":{"type":"object","properties":{"volumesToAttach":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39}}},"additionalProperties":false},"serviceType":{"type":"string","enum":["combined"],"description":"Type of the service (combined, build or deployment)","example":"combined"},"deployment":{"type":"object","properties":{"type":{"type":"string","enum":["deployment","statefulSet"],"description":"The way the service should be deployed. Either as a deployment (default), or as a stateful set."},"instances":{"type":"integer","minimum":0,"description":"The number of instances to run the service on.","example":1},"buildpack":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customProcess","customCommand","customEntrypointCustomCommand","originalEntrypointCustomCommand"],"description":"Type of buildpack run configuration"},"customProcess":{"type":"string","description":"Custom process which should be run. Required in case where `configType` is `customProcess`"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be run. Required in case where `configType` is `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be run. Required in case where `configType` is `customCommand`, `customEntrypointCustomCommand` or `originalEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of buildpack runtime"},"docker":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customEntrypoint","customCommand","customEntrypointCustomCommand"],"description":"Type of entrypoint & command override configuration","example":"default"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be used. Required in case where `configType` is `customEntrypoint` or `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be used. Required in case where `configType` is `customCommand` or `customEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of docker runtime"},"storage":{"type":"object","properties":{"useHdbStorage":{"type":"boolean"},"usePdSsdStorage":{"type":"boolean"},"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":1024,"description":"Ephemeral storage per container in MB","example":1024}},"additionalProperties":false},"shmSize":{"type":"integer","minimum":64,"description":"Configures the amount of available memory-backed disk space available to /dev/shm"}},"additionalProperties":false},"strategy":{"type":"object","properties":{"type":{"type":"string","enum":["recreate","rollout-steady","rollout-balanced","rollout-fast","custom"],"description":"Configures the instance roll out strategy of your service. Currently only available via feature flag."},"settings":{"type":"object","properties":{"maxSurge":{"oneOf":[{"type":"integer","minimum":0,"description":"A non-negative integer."},{"type":"string","pattern":"^\\d+%$","description":"A percentage string in the range 0% to 100%, e.g. `25%`"}],"description":"Maximum number or percentage of pods that can be created above the desired count."},"maxUnavailable":{"anyOf":[{"type":"integer","minimum":0,"description":"A non-negative integer."},{"type":"string","pattern":"^\\d+%$","description":"A percentage string in the range 0% to 100%, e.g. `25%`"}],"description":"Maximum number or percentage of pods that can be unavailable during the update."}},"required":["maxSurge","maxUnavailable"],"additionalProperties":false}},"additionalProperties":false,"description":"Roll out strategy of the service"},"zonalRedundancy":{"type":"object","properties":{"type":{"type":"string","enum":["disabled","preferred","required"],"description":"Defines scheduling behaviour across different zones within the same region."},"minZones":{"type":"integer","minimum":1,"description":"Defines how many zones are required and will prevent containers from additional scheduling into existing zones. (Only relevant if type is set to \"required\")"}},"additionalProperties":false},"gpu":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"gpuType":{"type":"string"},"gpuCount":{"type":"integer"},"timesliced":{"type":"boolean"}},"required":["gpuType"],"additionalProperties":false}},"additionalProperties":false},"gracePeriodSeconds":{"type":"integer","minimum":15,"maximum":600,"description":"The 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."},"gradualRolloutStrategyId":{"type":"string","pattern":"^[A-Za-z0-9-]+$","nullable":true,"description":"The id of the strategy to be attached to service.","examples":["strategy-id","strategy-id"]},"ssh":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Enables SSH access if the resource matches an SSH identity selector."}},"required":["enabled"],"additionalProperties":false,"description":"Controls related to SSH access within the resource."},"metadata":{"type":"object","properties":{"labels":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom labels for the workload."},"annotations":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom annotations for the workload as string or object."}},"additionalProperties":false,"description":"Allow setting custom labels and annotations for workloads."},"imageUrl":{"type":"string","description":"Image registry url of the deployed image."}},"required":["instances"],"additionalProperties":false},"id":{"type":"string","description":"Identifier for the service","example":"example-service"},"appId":{"type":"string","description":"Full identifier used for service deployment","example":"/example-user/default-project/example-service"},"cluster":{"type":"object","properties":{"id":{"type":"string","description":"The id of the cluster associated with this project.","example":"nf-europe-west"},"name":{"type":"string","description":"The name of the cluster associated with this project.","example":"nf-europe-west"},"namespace":{"type":"string","description":"Namespace this resource is located within on the cluster.","example":"ns-8zy2mcjh9zn2"},"loadBalancers":{"type":"array","items":{"type":"string","example":"lb.659200800000000000000000.northflank.com"},"description":"Load balancer DNS for the cluster."}},"required":["id","name"],"additionalProperties":false,"description":"Cluster information"},"createdAt":{"type":"string","format":"date-time","description":"time of creation"},"updatedAt":{"type":"string","format":"date-time","description":"time of update"},"status":{"type":"object","properties":{"build":{"type":"object","properties":{"status":{"type":"string","enum":["QUEUED","PENDING","UNSCHEDULABLE","STARTING","CLONING","BUILDING","UPLOADING","ABORTED","FAILURE","SUBMISSION_FAILURE","SUCCESS","CRASHED","IN_PROGRESS"],"description":"The current status of the build.","example":"SUCCESS"},"lastTransitionTime":{"type":"string","format":"date-time","description":"The timestamp of when the build reached this status.","example":"2021-11-29T11:47:16.624Z"}},"required":["status"],"additionalProperties":false,"description":"Details about the status of the most recent build."},"deployment":{"type":"object","properties":{"status":{"type":"string","enum":["PENDING","IN_PROGRESS","COMPLETED","FAILED"],"description":"The current status of the deployment.","example":"COMPLETED"},"reason":{"type":"string","enum":["SCALING","DEPLOYING"],"description":"The reason the current deployment was started.","example":"DEPLOYING"},"lastTransitionTime":{"type":"string","format":"date-time","description":"The timestamp of when the deployment reached this status.","example":"2021-11-29T11:47:16.624Z"}},"required":["status","reason"],"additionalProperties":false,"description":"Details about the current deployment status."}},"additionalProperties":false,"description":"Details about the current service status."}},"required":["name","billing","buildSettings","serviceType","deployment","id","appId","cluster","status"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Services","project"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":54,"description":"The name of the service.","example":"Example Service"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"A description of the service.","example":"A service description"},"stageId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"billing":{"type":"object","properties":{"deploymentPlan":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The ID of the deployment plan to use.","example":"nf-compute-20"},"buildPlan":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The ID of the build plan to use.","example":"nf-compute-200-8"},"gpu":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"gpuType":{"type":"string"},"gpuCount":{"type":"integer"},"timesliced":{"type":"boolean"}},"required":["gpuType"],"additionalProperties":false}},"additionalProperties":false}},"required":["deploymentPlan"],"additionalProperties":false},"infrastructure":{"type":"object","properties":{"architecture":{"type":"string","enum":["x86","arm"]}},"additionalProperties":false},"deployment":{"type":"object","properties":{"type":{"type":"string","enum":["deployment","statefulSet"],"description":"The way the service should be deployed. Either as a deployment (default), or as a stateful set."},"instances":{"type":"integer","minimum":0,"description":"The number of instances to run the service on.","example":1},"buildpack":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customProcess","customCommand","customEntrypointCustomCommand","originalEntrypointCustomCommand"],"description":"Type of buildpack run configuration"},"customProcess":{"type":"string","description":"Custom process which should be run. Required in case where `configType` is `customProcess`"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be run. Required in case where `configType` is `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be run. Required in case where `configType` is `customCommand`, `customEntrypointCustomCommand` or `originalEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of buildpack runtime"},"docker":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customEntrypoint","customCommand","customEntrypointCustomCommand"],"description":"Type of entrypoint & command override configuration","example":"default"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be used. Required in case where `configType` is `customEntrypoint` or `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be used. Required in case where `configType` is `customCommand` or `customEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of docker runtime"},"storage":{"type":"object","properties":{"useHdbStorage":{"type":"boolean"},"usePdSsdStorage":{"type":"boolean"},"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":1024,"description":"Ephemeral storage per container in MB","example":1024}},"additionalProperties":false},"shmSize":{"type":"integer","minimum":64,"description":"Configures the amount of available memory-backed disk space available to /dev/shm"}},"additionalProperties":false},"strategy":{"type":"object","properties":{"type":{"type":"string","enum":["recreate","rollout-steady","rollout-balanced","rollout-fast","custom"],"description":"Configures the instance roll out strategy of your service. Currently only available via feature flag."},"settings":{"type":"object","properties":{"maxSurge":{"oneOf":[{"type":"integer","minimum":0,"description":"A non-negative integer."},{"type":"string","pattern":"^\\d+%$","description":"A percentage string in the range 0% to 100%, e.g. `25%`"}],"description":"Maximum number or percentage of pods that can be created above the desired count."},"maxUnavailable":{"anyOf":[{"type":"integer","minimum":0,"description":"A non-negative integer."},{"type":"string","pattern":"^\\d+%$","description":"A percentage string in the range 0% to 100%, e.g. `25%`"}],"description":"Maximum number or percentage of pods that can be unavailable during the update."}},"required":["maxSurge","maxUnavailable"],"additionalProperties":false}},"additionalProperties":false,"description":"Roll out strategy of the service"},"zonalRedundancy":{"type":"object","properties":{"type":{"type":"string","enum":["disabled","preferred","required"],"description":"Defines scheduling behaviour across different zones within the same region."},"minZones":{"type":"integer","minimum":1,"description":"Defines how many zones are required and will prevent containers from additional scheduling into existing zones. (Only relevant if type is set to \"required\")"}},"additionalProperties":false},"gpu":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"gpuType":{"type":"string"},"gpuCount":{"type":"integer"},"timesliced":{"type":"boolean"}},"required":["gpuType"],"additionalProperties":false}},"additionalProperties":false},"gracePeriodSeconds":{"type":"integer","minimum":15,"maximum":600,"description":"The 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."},"gradualRolloutStrategyId":{"type":"string","pattern":"^[A-Za-z0-9-]+$","nullable":true,"description":"The id of the strategy to be attached to service.","examples":["strategy-id","strategy-id"]},"ssh":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Enables SSH access if the resource matches an SSH identity selector."}},"required":["enabled"],"additionalProperties":false,"description":"Controls related to SSH access within the resource."},"metadata":{"type":"object","properties":{"labels":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom labels for the workload."},"annotations":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom annotations for the workload as string or object."}},"additionalProperties":false,"description":"Allow setting custom labels and annotations for workloads."}},"required":["instances"],"additionalProperties":false},"ports":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":1,"maxLength":8,"description":"The name used to identify the port.","example":"p01"},"internalPort":{"type":"integer","minimum":1,"maximum":65535,"description":"The port number.","example":8080},"public":{"type":"boolean","description":"If true, the port will be exposed publicly.","example":true,"default":false},"security":{"type":"object","properties":{"credentials":{"type":"array","items":{"type":"object","properties":{"username":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The username to access the service","example":"admin"},"password":{"type":"string","description":"The password to access the service with this username.","example":"password123"},"type":{"type":"string","enum":["basic-auth"],"description":"The type of authentication used","example":"basic-auth"}},"required":["username","password","type"],"additionalProperties":false},"description":"An array of credentials to access the service."},"ip":{"type":"array","items":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","description":"An IP address used by this rule","example":"127.0.0.1"},"description":"An array of IP addresses used for this rule"},"action":{"type":"string","enum":["ALLOW","DENY"],"description":"The action for this rule.","example":"DENY"}},"required":["addresses","action"],"additionalProperties":false},"description":"An array of IP address policies."},"policies":{"type":"array","items":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","description":"An IP address used by this rule","example":"127.0.0.1"},"description":"An array of IP addresses used for this rule"},"action":{"type":"string","enum":["ALLOW","DENY"],"description":"The action for this rule.","example":"DENY"}},"required":["addresses","action"],"additionalProperties":false},"description":"An array of IP address policies."},"sso":{"type":"object","properties":{"organizationId":{"type":"string","description":"ID of the SSO organization that the user will have to be a member of"},"directoryGroupIds":{"type":"array","items":{"type":"string"},"description":"Array of directory groups that will have access"},"allowAnyOrgUsers":{"type":"boolean","description":"Allow entire organization to access this service"},"validateInternalTraffic":{"type":"boolean","description":"Enforce internal traffic through SSO authentication flow"},"setCookieOnRootDomain":{"type":"boolean","description":"Set SSO authentication cookie on root domain"},"allowInternalTrafficViaPublicDns":{"type":"boolean","description":"Allow internal traffic from same or shared projects via public DNS to skip SSO authentication flow"}},"additionalProperties":false,"description":"Configure port authentication via SSO"},"headers":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"regexMode":{"type":"boolean","example":false,"default":false},"name":{"type":"string","pattern":"^[a-zA-Z0-9_\\-%$+]+$","example":"headerName"},"value":{"type":"string","example":"headerValue"}},"required":["name","value"],"additionalProperties":false,"description":"Matches provided headers as strings."},{"type":"object","properties":{"regexMode":{"type":"boolean","example":true,"default":false},"name":{"type":"string","example":"headerName"},"value":{"type":"string","example":"headerValue"}},"required":["name","value"],"additionalProperties":false,"description":"Matches provided headers as regex."}]},"description":"List of header authentication settings, it checks the presence of all headers and compares it against the expected value. Wildcard (*) is supported."},"verificationMode":{"type":"string","enum":["or","and"],"description":"Mode used to verify multiple security features like ip policies and SSO authentication"},"securePathConfiguration":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Enable security policies on a path-level style"},"skipSecurityPoliciesForInternalTrafficViaPublicDns":{"type":"boolean","description":"Allow internal traffic from same or shared projects via public DNS to skip all security policies"},"rules":{"type":"array","items":{"type":"object","properties":{"paths":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"path":{"type":"string","pattern":"^\\/([_a-zA-Z0-9-&?=.]*)((\\/[_a-zA-Z0-9-&?=.]+)*(\\/)?)?$"},"routingMode":{"type":"string","enum":["prefix"],"description":"Mode of the path, determining how the URI will be interpreted.","example":"prefix"},"priority":{"type":"integer","minimum":0,"maximum":100,"example":80}},"required":["path","routingMode","priority"],"additionalProperties":false,"description":"Route when the path starts with the provided prefix."},{"type":"object","properties":{"path":{"type":"string","pattern":"^\\/([_a-zA-Z0-9-&?=.]*)((\\/[_a-zA-Z0-9-&?=.]+)*(\\/)?)?$"},"routingMode":{"type":"string","enum":["exact"],"description":"Mode of the path, determining how the URI will be interpreted.","example":"exact"},"priority":{"type":"integer","minimum":0,"maximum":100,"example":80}},"required":["path","routingMode","priority"],"additionalProperties":false,"description":"Route when the path is an exact match."},{"type":"object","properties":{"path":{"type":"string"},"routingMode":{"type":"string","enum":["regex"],"description":"Mode of the path, determining how the URI will be interpreted.","example":"regex"},"priority":{"type":"integer","minimum":0,"maximum":100,"example":80}},"required":["path","routingMode","priority"],"additionalProperties":false,"description":"Route when the path matches the provided regex."}],"description":"Data about how the path should be handled."},"description":"Array of path objects which represent the paths and their priority for which the security policies will be enforced"},"accessMode":{"type":"string","enum":["protected","unprotected"],"description":"Specify the way the path rule will behave when processing policies. This enables an allow-list/deny-list approach for access control on each path","example":"protected"},"securityPolicies":{"type":"object","properties":{"orPolicies":{"type":"object","properties":{"credentials":{"type":"array","items":{"type":"object","properties":{"username":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The username to access the service","example":"admin"},"password":{"type":"string","description":"The password to access the service with this username.","example":"password123"},"type":{"type":"string","enum":["basic-auth"],"description":"The type of authentication used","example":"basic-auth"}},"required":["username","password","type"],"additionalProperties":false},"description":"An array of credentials to access the service."},"ip":{"type":"array","items":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","description":"An IP address used by this rule","example":"127.0.0.1"},"description":"An array of IP addresses used for this rule"},"action":{"type":"string","enum":["ALLOW","DENY"],"description":"The action for this rule.","example":"DENY"}},"required":["addresses","action"],"additionalProperties":false},"description":"An array of IP address policies."},"policies":{"type":"array","items":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","description":"An IP address used by this rule","example":"127.0.0.1"},"description":"An array of IP addresses used for this rule"},"action":{"type":"string","enum":["ALLOW","DENY"],"description":"The action for this rule.","example":"DENY"}},"required":["addresses","action"],"additionalProperties":false},"description":"An array of IP address policies."},"sso":{"type":"object","properties":{"organizationId":{"type":"string","description":"ID of the SSO organization that the user will have to be a member of"},"directoryGroupIds":{"type":"array","items":{"type":"string"},"description":"Array of directory groups that will have access"},"allowAnyOrgUsers":{"type":"boolean","description":"Allow entire organization to access this service"},"validateInternalTraffic":{"type":"boolean","description":"Enforce internal traffic through SSO authentication flow"},"setCookieOnRootDomain":{"type":"boolean","description":"Set SSO authentication cookie on root domain"},"allowInternalTrafficViaPublicDns":{"type":"boolean","description":"Allow internal traffic from same or shared projects via public DNS to skip SSO authentication flow"}},"additionalProperties":false,"description":"Configure port authentication via SSO"},"headers":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"regexMode":{"type":"boolean","example":false,"default":false},"name":{"type":"string","pattern":"^[a-zA-Z0-9_\\-%$+]+$","example":"headerName"},"value":{"type":"string","example":"headerValue"}},"required":["name","value"],"additionalProperties":false,"description":"Matches provided headers as strings."},{"type":"object","properties":{"regexMode":{"type":"boolean","example":true,"default":false},"name":{"type":"string","example":"headerName"},"value":{"type":"string","example":"headerValue"}},"required":["name","value"],"additionalProperties":false,"description":"Matches provided headers as regex."}]},"description":"List of header authentication settings, it checks the presence of all headers and compares it against the expected value. Wildcard (*) is supported."}},"additionalProperties":false},"requiredPolicies":{"type":"object","properties":{"credentials":{"type":"array","items":{"type":"object","properties":{"username":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The username to access the service","example":"admin"},"password":{"type":"string","description":"The password to access the service with this username.","example":"password123"},"type":{"type":"string","enum":["basic-auth"],"description":"The type of authentication used","example":"basic-auth"}},"required":["username","password","type"],"additionalProperties":false},"description":"An array of credentials to access the service."},"ip":{"type":"array","items":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","description":"An IP address used by this rule","example":"127.0.0.1"},"description":"An array of IP addresses used for this rule"},"action":{"type":"string","enum":["ALLOW","DENY"],"description":"The action for this rule.","example":"DENY"}},"required":["addresses","action"],"additionalProperties":false},"description":"An array of IP address policies."},"policies":{"type":"array","items":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","description":"An IP address used by this rule","example":"127.0.0.1"},"description":"An array of IP addresses used for this rule"},"action":{"type":"string","enum":["ALLOW","DENY"],"description":"The action for this rule.","example":"DENY"}},"required":["addresses","action"],"additionalProperties":false},"description":"An array of IP address policies."},"sso":{"type":"object","properties":{"organizationId":{"type":"string","description":"ID of the SSO organization that the user will have to be a member of"},"directoryGroupIds":{"type":"array","items":{"type":"string"},"description":"Array of directory groups that will have access"},"allowAnyOrgUsers":{"type":"boolean","description":"Allow entire organization to access this service"},"validateInternalTraffic":{"type":"boolean","description":"Enforce internal traffic through SSO authentication flow"},"setCookieOnRootDomain":{"type":"boolean","description":"Set SSO authentication cookie on root domain"},"allowInternalTrafficViaPublicDns":{"type":"boolean","description":"Allow internal traffic from same or shared projects via public DNS to skip SSO authentication flow"}},"additionalProperties":false,"description":"Configure port authentication via SSO"},"headers":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"regexMode":{"type":"boolean","example":false,"default":false},"name":{"type":"string","pattern":"^[a-zA-Z0-9_\\-%$+]+$","example":"headerName"},"value":{"type":"string","example":"headerValue"}},"required":["name","value"],"additionalProperties":false,"description":"Matches provided headers as strings."},{"type":"object","properties":{"regexMode":{"type":"boolean","example":true,"default":false},"name":{"type":"string","example":"headerName"},"value":{"type":"string","example":"headerValue"}},"required":["name","value"],"additionalProperties":false,"description":"Matches provided headers as regex."}]},"description":"List of header authentication settings, it checks the presence of all headers and compares it against the expected value. Wildcard (*) is supported."}},"additionalProperties":false}},"additionalProperties":false}},"required":["paths","accessMode"],"additionalProperties":false},"default":[]}},"additionalProperties":false}},"additionalProperties":false,"default":{"credentials":[],"policies":[],"sso":{}}},"domains":{"type":"array","items":{"type":"string","description":"A domain to redirect to this port.","example":"app.example.com"},"description":"An array of domains to redirect to this port. Each domain must first be verified and registered to your account.","default":[]},"disableNfDomain":{"type":"boolean","description":"Disable routing on the default code.run domain for public HTTP ports with custom domains.","default":false},"advancedOptions":{"type":"object","properties":{"enableTlsPassthrough":{"type":"boolean","description":"Whether this port should use pass through mode for TLS"}},"additionalProperties":false},"protocol":{"type":"string","enum":["HTTP","HTTP/2","TCP","UDP"],"description":"The protocol to use for the port.","example":"HTTP"}},"required":["name","internalPort","protocol"],"additionalProperties":false},"default":[]},"disabledCI":{"type":"boolean","description":"Whether CI (continuous integration) should be disabled.","default":false},"buildSource":{"type":"string","enum":["git","bundle"],"description":"Defines the build source for this resource","example":"git"},"vcsData":{"type":"object","properties":{"projectUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo to build.","example":"https://github.com/northflank/gatsby-with-northflank"},"projectType":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string","minLength":24,"maxLength":24,"description":"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 `vcsLinkId` is provided, Northflank will instead use your linked account with that ID."},"projectBranch":{"type":"string","description":"The name of the branch to use.","example":"master"}},"required":["projectUrl","projectType","projectBranch"],"additionalProperties":false},"bundleData":{"type":"object","properties":{"bundleUrl":{"type":"string","description":"URL of the bundle to be built","example":"https://example.com/archive.tar"},"branch":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"Branch identifier for the bundle.","example":"main"}},"required":["bundleUrl","branch"],"additionalProperties":false},"buildSettings":{"oneOf":[{"type":"object","properties":{"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false},"dockerfile":{"type":"object","properties":{"useCache":{"type":"boolean","description":"DEPRECATED: This field will be removed in the near future and currently has no effect."},"buildEngine":{"type":"string","enum":["buildkit","kaniko"],"description":"Build engine to use. Defaults to recommended build engine `buildkit`","example":"buildkit","default":"buildkit"},"dockerFilePath":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]+$","description":"The file path of the Dockerfile.","example":"/Dockerfile"},"dockerWorkDir":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*$","description":"The working directory of the Dockerfile.","example":"/"},"buildkit":{"type":"object","properties":{"useCache":{"type":"boolean","description":"Use persistent storage to cache build layers.","example":true,"default":false},"cacheStorageSize":{"type":"integer","description":"The amount of persistent storage available to each build in MB.","example":32768},"useInternalCache":{"type":"boolean","description":"DEPRECATED: This field will be removed in the near future.","default":false},"internalCacheStorage":{"type":"number","format":"float","description":"DEPRECATED: This field will be removed in the near future."}},"additionalProperties":false}},"required":["dockerFilePath","dockerWorkDir"],"additionalProperties":false}},"required":["dockerfile"],"additionalProperties":false,"description":"Build from a Dockerfile"},{"type":"object","properties":{"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false},"buildpack":{"type":"object","properties":{"builder":{"type":"string","enum":["HEROKU_24","HEROKU_22","HEROKU_22_CLASSIC","HEROKU_20","HEROKU_18","GOOGLE_22","GOOGLE_V1","CNB_ALPINE","CNB_BIONIC","PAKETO_JAMMY_TINY","PAKETO_JAMMY_BASE","PAKETO_JAMMY_FULL","PAKETO_TINY","PAKETO_BASE","PAKETO_FULL"],"description":"Buildpack stack to use. Defaults to recommended stack `HEROKU_24`.","example":"HEROKU_24","default":"HEROKU_24"},"buildpackLocators":{"type":"array","items":{"type":"string","description":"Url or registry identifier of custom Buildpack.","example":"https://buildpack-registry.heroku.com/cnb/mars/create-react-app"},"description":"Array of custom Buildpacks to use.","default":[]},"buildContext":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*$","description":"The working directory to build in.","example":"/","default":"/"},"useCache":{"type":"boolean","description":"Should build dependencies be cached?","example":false,"default":false}},"additionalProperties":false}},"required":["buildpack"],"additionalProperties":false,"description":"Build from a Buildpack"}],"description":"Build engine"},"buildConfiguration":{"type":"object","properties":{"pathIgnoreRules":{"type":"array","items":{"type":"string","maxLength":260,"description":"A path ignore rule, following `.gitignore` syntax. For example, `*.md` will ignore all files ending with `.md`.","example":"README.md"},"maxItems":200,"description":"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."},"isAllowList":{"type":"boolean","description":"If `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`.","example":false},"ciIgnoreFlagsEnabled":{"type":"boolean","description":"If `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":{"type":"array","items":{"type":"string","maxLength":72,"description":"A commit ignore flag.","example":"[skip ci]"},"maxItems":200,"description":"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]\"]`","example":["[skip ci]","[ci skip]","[no ci]","[skip nf]","[nf skip]","[northflank skip]","[skip northflank]"]},"dockerfileTarget":{"type":"string","description":"If your Dockerfile contains multiple build stages, you can specify the target stage by entering its name here."},"dockerCredentials":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The ID of the docker credentials to use.","example":"example-docker-credential"}},"includeGitFolder":{"type":"boolean","description":"Include .git folder inside the build context"},"fullGitClone":{"type":"boolean","description":"Include the entire git history as part of the .git folder. Only relevant if \"includeGitFolder\" is set."},"enableGitLfs":{"type":"boolean","description":"Enable Git LFS support for the build"},"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false}},"additionalProperties":false,"default":{"pathIgnoreRules":[],"isAllowList":false,"ciIgnoreFlagsEnabled":false}},"runtimeEnvironment":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"An object containing the runtime environment to set for the service. Keys may only contain letters, numbers, hyphens, forward slashes and dots.","example":{"VARIABLE_1":"abcdef","VARIABLE_2":"12345"},"default":{}},"runtimeFiles":{"type":"object","properties":{},"description":"Secret files as JSON object, encrypted at rest. File path must be absolute","example":{"/dir/fileName":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"buildArguments":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"An object containing the build arguments to set for the service. Keys may only contain letters, numbers, hyphens, forward slashes and dots.","example":{"ARGUMENT_1":"abcdef","ARGUMENT_2":"12345"},"default":{}},"buildFiles":{"type":"object","properties":{},"description":"Secret files as JSON object, encrypted at rest. File path must be absolute","example":{"/dir/fileName":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"dockerSecretMounts":{"type":"object","properties":{},"description":"Docker secret mount contents as JSON object, encrypted at rest. Must be a valid Docker secret mount identifier","example":{"example-secret-mount_1":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"healthChecks":{"type":"array","items":{"type":"object","properties":{"protocol":{"type":"string","enum":["HTTP","CMD","TCP"],"description":"The protocol to access the health check with.","example":"HTTP"},"type":{"type":"string","enum":["livenessProbe","readinessProbe","startupProbe"],"description":"The type of health check.","example":"readinessProbe"},"path":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*((\\?([a-zA-Z0-9-._]+(=[a-zA-Z0-9-._]+)?)*)(&([a-zA-Z0-9-._]+(=[a-zA-Z0-9-._]+)?)*)*)?$","description":"The path of the health check endpoint. Required when protocol is HTTP.","example":"/health-check"},"cmd":{"type":"string","description":"The command to run for the health check. Required when protocol is CMD"},"port":{"type":"integer","minimum":1,"description":"Port number for the health check endpoint. Required when protocol is HTTP.","example":8080},"initialDelaySeconds":{"type":"integer","minimum":1,"maximum":180,"description":"Initial delay, in seconds, before the health check is first run.","example":10},"periodSeconds":{"type":"integer","minimum":10,"maximum":600,"description":"The time between each check, in seconds.","example":60},"timeoutSeconds":{"type":"integer","minimum":1,"maximum":60,"description":"The time to wait for a response before marking the health check as a failure.","example":1},"failureThreshold":{"type":"integer","minimum":1,"maximum":255,"description":"The maximum number of allowed failures.","example":3},"successThreshold":{"type":"integer","minimum":1,"maximum":255,"description":"The number of successes required to mark the health check as a success.","example":1}},"required":["protocol","type","initialDelaySeconds","periodSeconds","timeoutSeconds","failureThreshold"],"additionalProperties":false,"description":"A health check object."},"description":"An array of health checks."},"loadBalancing":{"type":"object","properties":{"mode":{"type":"string","enum":["leastConnection","consistentHash","roundRobin","consistentReplicaRouting"]},"consistentHash":{"type":"object","properties":{"mode":{"type":"string","enum":["ip","customHeader"]},"header":{"type":"string","nullable":true}},"required":["mode"],"additionalProperties":false},"consistentReplicaRouting":{"type":"object","properties":{"mode":{"type":"string","enum":["path","header"]}},"required":["mode"],"additionalProperties":false}},"required":["mode"],"additionalProperties":false},"autoscaling":{"type":"object","properties":{"horizontal":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether horizontal autoscaling should be enabled","example":true},"minReplicas":{"type":"number","format":"float","minimum":1,"description":"Minimum number of replicas which should be running at any time","example":1},"maxReplicas":{"type":"number","format":"float","description":"Maximum number of replicas which can be running at any time","example":3},"cpu":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether autoscaling should take into account cpu usage"},"thresholdPercentage":{"type":"integer","minimum":10,"maximum":100,"description":"Threshold CPU usage percentage at which the workload will be scaled"}},"required":["enabled","thresholdPercentage"],"additionalProperties":false},"memory":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether autoscaling should take into account memory usage"},"thresholdPercentage":{"type":"integer","minimum":10,"maximum":100,"description":"Threshold memory usage percentage at which the workload will be scaled"}},"required":["enabled","thresholdPercentage"],"additionalProperties":false},"rps":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether autoscaling should take into requests-per-second"},"thresholdValue":{"type":"integer","minimum":1,"description":"Threshold rps value on which the workload will be scaled"}},"required":["enabled","thresholdValue"],"additionalProperties":false},"userMetrics":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether to enable handling for custom metrics in the autoscaling configuration","example":true},"exposedMetricsPath":{"type":"string","pattern":"^\\/([_a-zA-Z0-9-&?=.]*)((\\/[_a-zA-Z0-9-&?=.]+)*(\\/)?)?$","description":"Path on which the metrics will be exposed by the service..","example":"/metrics"},"exposedMetricsPort":{"type":"integer","description":"Port on which the metrics will be exposed by the service.","example":8080},"metrics":{"type":"array","items":{"type":"object","properties":{"metricName":{"type":"string","pattern":"[a-zA-Z_:][a-zA-Z0-9_:]*$","description":"Name of the custom metric","example":"example-metric"},"metricType":{"type":"string","enum":["gauge","counter"],"description":"Type of metric exposed, this will affect how it'll be queried by the autoscaler component: Gauge will be used as is, Counter will be used with rate()","example":"gauge"},"thresholdValue":{"type":"number","format":"float","description":"Threshold value on which the workload will be scaled. Represents the average value across all running pods.","example":2}},"required":["metricName","metricType","thresholdValue"],"additionalProperties":false},"description":"Array of custom metrics exposed by the service that will be used by the autoscaling configuration. At least one metric is required."}},"required":["enabled","exposedMetricsPath","exposedMetricsPort","metrics"],"additionalProperties":false}},"required":["enabled","minReplicas","maxReplicas"],"additionalProperties":false,"description":"Describes the horizontal autoscaling configuration"}},"additionalProperties":false,"description":"Describes all autoscaling configurations"},"createOptions":{"type":"object","properties":{"volumesToAttach":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39}}},"additionalProperties":false}},"required":["name","billing","deployment","buildSettings"],"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Project > Services > General > Create","x-nf-team-scoped":true,"x-nf-subheading":"put service","x-nf-cli-command":["put","service","combined"]},"v1-projects--projectId--services-combined-put-team-scoped":{"operationId":"putProjectsServicesCombined","summary":"Put combined service","description":"Creates or updates a combined service.","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}}],"responses":{"200":{"description":"Details about the created or updated service.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":54,"description":"The name of the service.","example":"Example Service"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"A description of the service.","example":"A service description"},"stageId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"billing":{"type":"object","properties":{"deploymentPlan":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The ID of the deployment plan to use.","example":"nf-compute-20"},"buildPlan":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The ID of the build plan to use.","example":"nf-compute-200-8"},"gpu":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"gpuType":{"type":"string"},"gpuCount":{"type":"integer"},"timesliced":{"type":"boolean"}},"required":["gpuType"],"additionalProperties":false}},"additionalProperties":false}},"required":["deploymentPlan"],"additionalProperties":false},"infrastructure":{"type":"object","properties":{"architecture":{"type":"string","enum":["x86","arm"]}},"additionalProperties":false},"ports":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":1,"maxLength":8,"description":"The name used to identify the port.","example":"p01"},"internalPort":{"type":"integer","minimum":1,"maximum":65535,"description":"The port number.","example":8080},"public":{"type":"boolean","description":"If true, the port will be exposed publicly.","example":true,"default":false},"security":{"type":"object","properties":{"credentials":{"type":"array","items":{"type":"object","properties":{"username":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The username to access the service","example":"admin"},"password":{"type":"string","description":"The password to access the service with this username.","example":"password123"},"type":{"type":"string","enum":["basic-auth"],"description":"The type of authentication used","example":"basic-auth"}},"required":["username","password","type"],"additionalProperties":false},"description":"An array of credentials to access the service."},"ip":{"type":"array","items":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","description":"An IP address used by this rule","example":"127.0.0.1"},"description":"An array of IP addresses used for this rule"},"action":{"type":"string","enum":["ALLOW","DENY"],"description":"The action for this rule.","example":"DENY"}},"required":["addresses","action"],"additionalProperties":false},"description":"An array of IP address policies."},"policies":{"type":"array","items":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","description":"An IP address used by this rule","example":"127.0.0.1"},"description":"An array of IP addresses used for this rule"},"action":{"type":"string","enum":["ALLOW","DENY"],"description":"The action for this rule.","example":"DENY"}},"required":["addresses","action"],"additionalProperties":false},"description":"An array of IP address policies."},"sso":{"type":"object","properties":{"organizationId":{"type":"string","description":"ID of the SSO organization that the user will have to be a member of"},"directoryGroupIds":{"type":"array","items":{"type":"string"},"description":"Array of directory groups that will have access"},"allowAnyOrgUsers":{"type":"boolean","description":"Allow entire organization to access this service"},"validateInternalTraffic":{"type":"boolean","description":"Enforce internal traffic through SSO authentication flow"},"setCookieOnRootDomain":{"type":"boolean","description":"Set SSO authentication cookie on root domain"},"allowInternalTrafficViaPublicDns":{"type":"boolean","description":"Allow internal traffic from same or shared projects via public DNS to skip SSO authentication flow"}},"additionalProperties":false,"description":"Configure port authentication via SSO"},"headers":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"regexMode":{"type":"boolean","example":false,"default":false},"name":{"type":"string","pattern":"^[a-zA-Z0-9_\\-%$+]+$","example":"headerName"},"value":{"type":"string","example":"headerValue"}},"required":["name","value"],"additionalProperties":false,"description":"Matches provided headers as strings."},{"type":"object","properties":{"regexMode":{"type":"boolean","example":true,"default":false},"name":{"type":"string","example":"headerName"},"value":{"type":"string","example":"headerValue"}},"required":["name","value"],"additionalProperties":false,"description":"Matches provided headers as regex."}]},"description":"List of header authentication settings, it checks the presence of all headers and compares it against the expected value. Wildcard (*) is supported."},"verificationMode":{"type":"string","enum":["or","and"],"description":"Mode used to verify multiple security features like ip policies and SSO authentication"},"securePathConfiguration":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Enable security policies on a path-level style"},"skipSecurityPoliciesForInternalTrafficViaPublicDns":{"type":"boolean","description":"Allow internal traffic from same or shared projects via public DNS to skip all security policies"},"rules":{"type":"array","items":{"type":"object","properties":{"paths":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"path":{"type":"string","pattern":"^\\/([_a-zA-Z0-9-&?=.]*)((\\/[_a-zA-Z0-9-&?=.]+)*(\\/)?)?$"},"routingMode":{"type":"string","enum":["prefix"],"description":"Mode of the path, determining how the URI will be interpreted.","example":"prefix"},"priority":{"type":"integer","minimum":0,"maximum":100,"example":80}},"required":["path","routingMode","priority"],"additionalProperties":false,"description":"Route when the path starts with the provided prefix."},{"type":"object","properties":{"path":{"type":"string","pattern":"^\\/([_a-zA-Z0-9-&?=.]*)((\\/[_a-zA-Z0-9-&?=.]+)*(\\/)?)?$"},"routingMode":{"type":"string","enum":["exact"],"description":"Mode of the path, determining how the URI will be interpreted.","example":"exact"},"priority":{"type":"integer","minimum":0,"maximum":100,"example":80}},"required":["path","routingMode","priority"],"additionalProperties":false,"description":"Route when the path is an exact match."},{"type":"object","properties":{"path":{"type":"string"},"routingMode":{"type":"string","enum":["regex"],"description":"Mode of the path, determining how the URI will be interpreted.","example":"regex"},"priority":{"type":"integer","minimum":0,"maximum":100,"example":80}},"required":["path","routingMode","priority"],"additionalProperties":false,"description":"Route when the path matches the provided regex."}],"description":"Data about how the path should be handled."},"description":"Array of path objects which represent the paths and their priority for which the security policies will be enforced"},"accessMode":{"type":"string","enum":["protected","unprotected"],"description":"Specify the way the path rule will behave when processing policies. This enables an allow-list/deny-list approach for access control on each path","example":"protected"},"securityPolicies":{"type":"object","properties":{"orPolicies":{"type":"object","properties":{"credentials":{"type":"array","items":{"type":"object","properties":{"username":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The username to access the service","example":"admin"},"password":{"type":"string","description":"The password to access the service with this username.","example":"password123"},"type":{"type":"string","enum":["basic-auth"],"description":"The type of authentication used","example":"basic-auth"}},"required":["username","password","type"],"additionalProperties":false},"description":"An array of credentials to access the service."},"ip":{"type":"array","items":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","description":"An IP address used by this rule","example":"127.0.0.1"},"description":"An array of IP addresses used for this rule"},"action":{"type":"string","enum":["ALLOW","DENY"],"description":"The action for this rule.","example":"DENY"}},"required":["addresses","action"],"additionalProperties":false},"description":"An array of IP address policies."},"policies":{"type":"array","items":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","description":"An IP address used by this rule","example":"127.0.0.1"},"description":"An array of IP addresses used for this rule"},"action":{"type":"string","enum":["ALLOW","DENY"],"description":"The action for this rule.","example":"DENY"}},"required":["addresses","action"],"additionalProperties":false},"description":"An array of IP address policies."},"sso":{"type":"object","properties":{"organizationId":{"type":"string","description":"ID of the SSO organization that the user will have to be a member of"},"directoryGroupIds":{"type":"array","items":{"type":"string"},"description":"Array of directory groups that will have access"},"allowAnyOrgUsers":{"type":"boolean","description":"Allow entire organization to access this service"},"validateInternalTraffic":{"type":"boolean","description":"Enforce internal traffic through SSO authentication flow"},"setCookieOnRootDomain":{"type":"boolean","description":"Set SSO authentication cookie on root domain"},"allowInternalTrafficViaPublicDns":{"type":"boolean","description":"Allow internal traffic from same or shared projects via public DNS to skip SSO authentication flow"}},"additionalProperties":false,"description":"Configure port authentication via SSO"},"headers":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"regexMode":{"type":"boolean","example":false,"default":false},"name":{"type":"string","pattern":"^[a-zA-Z0-9_\\-%$+]+$","example":"headerName"},"value":{"type":"string","example":"headerValue"}},"required":["name","value"],"additionalProperties":false,"description":"Matches provided headers as strings."},{"type":"object","properties":{"regexMode":{"type":"boolean","example":true,"default":false},"name":{"type":"string","example":"headerName"},"value":{"type":"string","example":"headerValue"}},"required":["name","value"],"additionalProperties":false,"description":"Matches provided headers as regex."}]},"description":"List of header authentication settings, it checks the presence of all headers and compares it against the expected value. Wildcard (*) is supported."}},"additionalProperties":false},"requiredPolicies":{"type":"object","properties":{"credentials":{"type":"array","items":{"type":"object","properties":{"username":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The username to access the service","example":"admin"},"password":{"type":"string","description":"The password to access the service with this username.","example":"password123"},"type":{"type":"string","enum":["basic-auth"],"description":"The type of authentication used","example":"basic-auth"}},"required":["username","password","type"],"additionalProperties":false},"description":"An array of credentials to access the service."},"ip":{"type":"array","items":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","description":"An IP address used by this rule","example":"127.0.0.1"},"description":"An array of IP addresses used for this rule"},"action":{"type":"string","enum":["ALLOW","DENY"],"description":"The action for this rule.","example":"DENY"}},"required":["addresses","action"],"additionalProperties":false},"description":"An array of IP address policies."},"policies":{"type":"array","items":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","description":"An IP address used by this rule","example":"127.0.0.1"},"description":"An array of IP addresses used for this rule"},"action":{"type":"string","enum":["ALLOW","DENY"],"description":"The action for this rule.","example":"DENY"}},"required":["addresses","action"],"additionalProperties":false},"description":"An array of IP address policies."},"sso":{"type":"object","properties":{"organizationId":{"type":"string","description":"ID of the SSO organization that the user will have to be a member of"},"directoryGroupIds":{"type":"array","items":{"type":"string"},"description":"Array of directory groups that will have access"},"allowAnyOrgUsers":{"type":"boolean","description":"Allow entire organization to access this service"},"validateInternalTraffic":{"type":"boolean","description":"Enforce internal traffic through SSO authentication flow"},"setCookieOnRootDomain":{"type":"boolean","description":"Set SSO authentication cookie on root domain"},"allowInternalTrafficViaPublicDns":{"type":"boolean","description":"Allow internal traffic from same or shared projects via public DNS to skip SSO authentication flow"}},"additionalProperties":false,"description":"Configure port authentication via SSO"},"headers":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"regexMode":{"type":"boolean","example":false,"default":false},"name":{"type":"string","pattern":"^[a-zA-Z0-9_\\-%$+]+$","example":"headerName"},"value":{"type":"string","example":"headerValue"}},"required":["name","value"],"additionalProperties":false,"description":"Matches provided headers as strings."},{"type":"object","properties":{"regexMode":{"type":"boolean","example":true,"default":false},"name":{"type":"string","example":"headerName"},"value":{"type":"string","example":"headerValue"}},"required":["name","value"],"additionalProperties":false,"description":"Matches provided headers as regex."}]},"description":"List of header authentication settings, it checks the presence of all headers and compares it against the expected value. Wildcard (*) is supported."}},"additionalProperties":false}},"additionalProperties":false}},"required":["paths","accessMode"],"additionalProperties":false},"default":[]}},"additionalProperties":false}},"additionalProperties":false,"default":{"credentials":[],"policies":[],"sso":{}}},"domains":{"type":"array","items":{"type":"string","description":"A domain to redirect to this port.","example":"app.example.com"},"description":"An array of domains to redirect to this port. Each domain must first be verified and registered to your account.","default":[]},"disableNfDomain":{"type":"boolean","description":"Disable routing on the default code.run domain for public HTTP ports with custom domains.","default":false},"advancedOptions":{"type":"object","properties":{"enableTlsPassthrough":{"type":"boolean","description":"Whether this port should use pass through mode for TLS"}},"additionalProperties":false},"protocol":{"type":"string","oneOf":[{"type":"string","enum":["HTTP","HTTP/2"]},{"type":"string","enum":["HTTP","HTTP/2","TCP","UDP"]}],"description":"The protocol to use for the port.","example":"HTTP"}},"required":["name","internalPort","protocol"],"additionalProperties":false},"default":[]},"disabledCI":{"type":"boolean","description":"Whether CI (continuous integration) should be disabled.","default":false},"buildSource":{"type":"string","enum":["git","bundle"],"description":"Defines the build source for this resource","example":"git"},"vcsData":{"type":"object","properties":{"projectUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo to build.","example":"https://github.com/northflank/gatsby-with-northflank"},"projectType":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string","minLength":24,"maxLength":24,"description":"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 `vcsLinkId` is provided, Northflank will instead use your linked account with that ID."},"projectBranch":{"type":"string","description":"The name of the branch to use.","example":"master"}},"required":["projectUrl","projectType","projectBranch"],"additionalProperties":false},"bundleData":{"type":"object","properties":{"bundleUrl":{"type":"string","description":"URL of the bundle to be built","example":"https://example.com/archive.tar"},"branch":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"Branch identifier for the bundle.","example":"main"}},"required":["bundleUrl","branch"],"additionalProperties":false},"buildSettings":{"oneOf":[{"type":"object","properties":{"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false},"dockerfile":{"type":"object","properties":{"useCache":{"type":"boolean","description":"DEPRECATED: This field will be removed in the near future and currently has no effect."},"buildEngine":{"type":"string","enum":["buildkit","kaniko"],"description":"Build engine to use. Defaults to recommended build engine `buildkit`","example":"buildkit","default":"buildkit"},"dockerFilePath":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]+$","description":"The file path of the Dockerfile.","example":"/Dockerfile"},"dockerWorkDir":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*$","description":"The working directory of the Dockerfile.","example":"/"},"buildkit":{"type":"object","properties":{"useCache":{"type":"boolean","description":"Use persistent storage to cache build layers.","example":true,"default":false},"cacheStorageSize":{"type":"integer","description":"The amount of persistent storage available to each build in MB.","example":32768},"useInternalCache":{"type":"boolean","description":"DEPRECATED: This field will be removed in the near future.","default":false},"internalCacheStorage":{"type":"number","format":"float","description":"DEPRECATED: This field will be removed in the near future."}},"additionalProperties":false}},"required":["dockerFilePath","dockerWorkDir"],"additionalProperties":false}},"required":["dockerfile"],"additionalProperties":false,"description":"Build from a Dockerfile"},{"type":"object","properties":{"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false},"buildpack":{"type":"object","properties":{"builder":{"type":"string","enum":["HEROKU_24","HEROKU_22","HEROKU_22_CLASSIC","HEROKU_20","HEROKU_18","GOOGLE_22","GOOGLE_V1","CNB_ALPINE","CNB_BIONIC","PAKETO_JAMMY_TINY","PAKETO_JAMMY_BASE","PAKETO_JAMMY_FULL","PAKETO_TINY","PAKETO_BASE","PAKETO_FULL"],"description":"Buildpack stack to use. Defaults to recommended stack `HEROKU_24`.","example":"HEROKU_24","default":"HEROKU_24"},"buildpackLocators":{"type":"array","items":{"type":"string","description":"Url or registry identifier of custom Buildpack.","example":"https://buildpack-registry.heroku.com/cnb/mars/create-react-app"},"description":"Array of custom Buildpacks to use.","default":[]},"buildContext":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*$","description":"The working directory to build in.","example":"/","default":"/"},"useCache":{"type":"boolean","description":"Should build dependencies be cached?","example":false,"default":false}},"additionalProperties":false}},"required":["buildpack"],"additionalProperties":false,"description":"Build from a Buildpack"}],"description":"Build engine"},"buildConfiguration":{"type":"object","properties":{"pathIgnoreRules":{"type":"array","items":{"type":"string","maxLength":260,"description":"A path ignore rule, following `.gitignore` syntax. For example, `*.md` will ignore all files ending with `.md`.","example":"README.md"},"maxItems":200,"description":"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."},"isAllowList":{"type":"boolean","description":"If `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`.","example":false},"ciIgnoreFlagsEnabled":{"type":"boolean","description":"If `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":{"type":"array","items":{"type":"string","maxLength":72,"description":"A commit ignore flag.","example":"[skip ci]"},"maxItems":200,"description":"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]\"]`","example":["[skip ci]","[ci skip]","[no ci]","[skip nf]","[nf skip]","[northflank skip]","[skip northflank]"]},"dockerfileTarget":{"type":"string","description":"If your Dockerfile contains multiple build stages, you can specify the target stage by entering its name here."},"dockerCredentials":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The ID of the docker credentials to use.","example":"example-docker-credential"}},"includeGitFolder":{"type":"boolean","description":"Include .git folder inside the build context"},"fullGitClone":{"type":"boolean","description":"Include the entire git history as part of the .git folder. Only relevant if \"includeGitFolder\" is set."},"enableGitLfs":{"type":"boolean","description":"Enable Git LFS support for the build"},"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false}},"additionalProperties":false,"default":{"pathIgnoreRules":[],"isAllowList":false,"ciIgnoreFlagsEnabled":false}},"runtimeEnvironment":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"An object containing the runtime environment to set for the service. Keys may only contain letters, numbers, hyphens, forward slashes and dots.","example":{"VARIABLE_1":"abcdef","VARIABLE_2":"12345"},"default":{}},"runtimeFiles":{"type":"object","properties":{},"description":"Secret files as JSON object, encrypted at rest. File path must be absolute","example":{"/dir/fileName":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"buildArguments":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"An object containing the build arguments to set for the service. Keys may only contain letters, numbers, hyphens, forward slashes and dots.","example":{"ARGUMENT_1":"abcdef","ARGUMENT_2":"12345"},"default":{}},"buildFiles":{"type":"object","properties":{},"description":"Secret files as JSON object, encrypted at rest. File path must be absolute","example":{"/dir/fileName":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"dockerSecretMounts":{"type":"object","properties":{},"description":"Docker secret mount contents as JSON object, encrypted at rest. Must be a valid Docker secret mount identifier","example":{"example-secret-mount_1":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"healthChecks":{"type":"array","items":{"type":"object","properties":{"protocol":{"type":"string","enum":["HTTP","CMD","TCP"],"description":"The protocol to access the health check with.","example":"HTTP"},"type":{"type":"string","enum":["livenessProbe","readinessProbe","startupProbe"],"description":"The type of health check.","example":"readinessProbe"},"path":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*((\\?([a-zA-Z0-9-._]+(=[a-zA-Z0-9-._]+)?)*)(&([a-zA-Z0-9-._]+(=[a-zA-Z0-9-._]+)?)*)*)?$","description":"The path of the health check endpoint. Required when protocol is HTTP.","example":"/health-check"},"cmd":{"type":"string","description":"The command to run for the health check. Required when protocol is CMD"},"port":{"type":"integer","minimum":1,"description":"Port number for the health check endpoint. Required when protocol is HTTP.","example":8080},"initialDelaySeconds":{"type":"integer","minimum":1,"maximum":180,"description":"Initial delay, in seconds, before the health check is first run.","example":10},"periodSeconds":{"type":"integer","minimum":10,"maximum":600,"description":"The time between each check, in seconds.","example":60},"timeoutSeconds":{"type":"integer","minimum":1,"maximum":60,"description":"The time to wait for a response before marking the health check as a failure.","example":1},"failureThreshold":{"type":"integer","minimum":1,"maximum":255,"description":"The maximum number of allowed failures.","example":3},"successThreshold":{"type":"integer","minimum":1,"maximum":255,"description":"The number of successes required to mark the health check as a success.","example":1}},"required":["protocol","type","initialDelaySeconds","periodSeconds","timeoutSeconds","failureThreshold"],"additionalProperties":false,"description":"A health check object."},"description":"An array of health checks."},"loadBalancing":{"type":"object","properties":{"mode":{"type":"string","enum":["leastConnection","consistentHash","roundRobin","consistentReplicaRouting"]},"consistentHash":{"type":"object","properties":{"mode":{"type":"string","enum":["ip","customHeader"]},"header":{"type":"string","nullable":true}},"required":["mode"],"additionalProperties":false},"consistentReplicaRouting":{"type":"object","properties":{"mode":{"type":"string","enum":["path","header"]}},"required":["mode"],"additionalProperties":false}},"required":["mode"],"additionalProperties":false},"autoscaling":{"type":"object","properties":{"horizontal":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether horizontal autoscaling should be enabled","example":true},"minReplicas":{"type":"number","format":"float","minimum":1,"description":"Minimum number of replicas which should be running at any time","example":1},"maxReplicas":{"type":"number","format":"float","description":"Maximum number of replicas which can be running at any time","example":3},"cpu":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether autoscaling should take into account cpu usage"},"thresholdPercentage":{"type":"integer","minimum":10,"maximum":100,"description":"Threshold CPU usage percentage at which the workload will be scaled"}},"required":["enabled","thresholdPercentage"],"additionalProperties":false},"memory":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether autoscaling should take into account memory usage"},"thresholdPercentage":{"type":"integer","minimum":10,"maximum":100,"description":"Threshold memory usage percentage at which the workload will be scaled"}},"required":["enabled","thresholdPercentage"],"additionalProperties":false},"rps":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether autoscaling should take into requests-per-second"},"thresholdValue":{"type":"integer","minimum":1,"description":"Threshold rps value on which the workload will be scaled"}},"required":["enabled","thresholdValue"],"additionalProperties":false},"userMetrics":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether to enable handling for custom metrics in the autoscaling configuration","example":true},"exposedMetricsPath":{"type":"string","pattern":"^\\/([_a-zA-Z0-9-&?=.]*)((\\/[_a-zA-Z0-9-&?=.]+)*(\\/)?)?$","description":"Path on which the metrics will be exposed by the service..","example":"/metrics"},"exposedMetricsPort":{"type":"integer","description":"Port on which the metrics will be exposed by the service.","example":8080},"metrics":{"type":"array","items":{"type":"object","properties":{"metricName":{"type":"string","pattern":"[a-zA-Z_:][a-zA-Z0-9_:]*$","description":"Name of the custom metric","example":"example-metric"},"metricType":{"type":"string","enum":["gauge","counter"],"description":"Type of metric exposed, this will affect how it'll be queried by the autoscaler component: Gauge will be used as is, Counter will be used with rate()","example":"gauge"},"thresholdValue":{"type":"number","format":"float","description":"Threshold value on which the workload will be scaled. Represents the average value across all running pods.","example":2}},"required":["metricName","metricType","thresholdValue"],"additionalProperties":false},"description":"Array of custom metrics exposed by the service that will be used by the autoscaling configuration. At least one metric is required."}},"required":["enabled","exposedMetricsPath","exposedMetricsPort","metrics"],"additionalProperties":false}},"required":["enabled","minReplicas","maxReplicas"],"additionalProperties":false,"description":"Describes the horizontal autoscaling configuration"}},"additionalProperties":false,"description":"Describes all autoscaling configurations"},"createOptions":{"type":"object","properties":{"volumesToAttach":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39}}},"additionalProperties":false},"serviceType":{"type":"string","enum":["combined"],"description":"Type of the service (combined, build or deployment)","example":"combined"},"deployment":{"type":"object","properties":{"type":{"type":"string","enum":["deployment","statefulSet"],"description":"The way the service should be deployed. Either as a deployment (default), or as a stateful set."},"instances":{"type":"integer","minimum":0,"description":"The number of instances to run the service on.","example":1},"buildpack":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customProcess","customCommand","customEntrypointCustomCommand","originalEntrypointCustomCommand"],"description":"Type of buildpack run configuration"},"customProcess":{"type":"string","description":"Custom process which should be run. Required in case where `configType` is `customProcess`"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be run. Required in case where `configType` is `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be run. Required in case where `configType` is `customCommand`, `customEntrypointCustomCommand` or `originalEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of buildpack runtime"},"docker":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customEntrypoint","customCommand","customEntrypointCustomCommand"],"description":"Type of entrypoint & command override configuration","example":"default"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be used. Required in case where `configType` is `customEntrypoint` or `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be used. Required in case where `configType` is `customCommand` or `customEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of docker runtime"},"storage":{"type":"object","properties":{"useHdbStorage":{"type":"boolean"},"usePdSsdStorage":{"type":"boolean"},"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":1024,"description":"Ephemeral storage per container in MB","example":1024}},"additionalProperties":false},"shmSize":{"type":"integer","minimum":64,"description":"Configures the amount of available memory-backed disk space available to /dev/shm"}},"additionalProperties":false},"strategy":{"type":"object","properties":{"type":{"type":"string","enum":["recreate","rollout-steady","rollout-balanced","rollout-fast","custom"],"description":"Configures the instance roll out strategy of your service. Currently only available via feature flag."},"settings":{"type":"object","properties":{"maxSurge":{"oneOf":[{"type":"integer","minimum":0,"description":"A non-negative integer."},{"type":"string","pattern":"^\\d+%$","description":"A percentage string in the range 0% to 100%, e.g. `25%`"}],"description":"Maximum number or percentage of pods that can be created above the desired count."},"maxUnavailable":{"anyOf":[{"type":"integer","minimum":0,"description":"A non-negative integer."},{"type":"string","pattern":"^\\d+%$","description":"A percentage string in the range 0% to 100%, e.g. `25%`"}],"description":"Maximum number or percentage of pods that can be unavailable during the update."}},"required":["maxSurge","maxUnavailable"],"additionalProperties":false}},"additionalProperties":false,"description":"Roll out strategy of the service"},"zonalRedundancy":{"type":"object","properties":{"type":{"type":"string","enum":["disabled","preferred","required"],"description":"Defines scheduling behaviour across different zones within the same region."},"minZones":{"type":"integer","minimum":1,"description":"Defines how many zones are required and will prevent containers from additional scheduling into existing zones. (Only relevant if type is set to \"required\")"}},"additionalProperties":false},"gpu":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"gpuType":{"type":"string"},"gpuCount":{"type":"integer"},"timesliced":{"type":"boolean"}},"required":["gpuType"],"additionalProperties":false}},"additionalProperties":false},"gracePeriodSeconds":{"type":"integer","minimum":15,"maximum":600,"description":"The 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."},"gradualRolloutStrategyId":{"type":"string","pattern":"^[A-Za-z0-9-]+$","nullable":true,"description":"The id of the strategy to be attached to service.","examples":["strategy-id","strategy-id"]},"ssh":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Enables SSH access if the resource matches an SSH identity selector."}},"required":["enabled"],"additionalProperties":false,"description":"Controls related to SSH access within the resource."},"metadata":{"type":"object","properties":{"labels":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom labels for the workload."},"annotations":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom annotations for the workload as string or object."}},"additionalProperties":false,"description":"Allow setting custom labels and annotations for workloads."},"imageUrl":{"type":"string","description":"Image registry url of the deployed image."}},"required":["instances"],"additionalProperties":false},"id":{"type":"string","description":"Identifier for the service","example":"example-service"},"appId":{"type":"string","description":"Full identifier used for service deployment","example":"/example-user/default-project/example-service"},"cluster":{"type":"object","properties":{"id":{"type":"string","description":"The id of the cluster associated with this project.","example":"nf-europe-west"},"name":{"type":"string","description":"The name of the cluster associated with this project.","example":"nf-europe-west"},"namespace":{"type":"string","description":"Namespace this resource is located within on the cluster.","example":"ns-8zy2mcjh9zn2"},"loadBalancers":{"type":"array","items":{"type":"string","example":"lb.659200800000000000000000.northflank.com"},"description":"Load balancer DNS for the cluster."}},"required":["id","name"],"additionalProperties":false,"description":"Cluster information"},"createdAt":{"type":"string","format":"date-time","description":"time of creation"},"updatedAt":{"type":"string","format":"date-time","description":"time of update"},"status":{"type":"object","properties":{"build":{"type":"object","properties":{"status":{"type":"string","enum":["QUEUED","PENDING","UNSCHEDULABLE","STARTING","CLONING","BUILDING","UPLOADING","ABORTED","FAILURE","SUBMISSION_FAILURE","SUCCESS","CRASHED","IN_PROGRESS"],"description":"The current status of the build.","example":"SUCCESS"},"lastTransitionTime":{"type":"string","format":"date-time","description":"The timestamp of when the build reached this status.","example":"2021-11-29T11:47:16.624Z"}},"required":["status"],"additionalProperties":false,"description":"Details about the status of the most recent build."},"deployment":{"type":"object","properties":{"status":{"type":"string","enum":["PENDING","IN_PROGRESS","COMPLETED","FAILED"],"description":"The current status of the deployment.","example":"COMPLETED"},"reason":{"type":"string","enum":["SCALING","DEPLOYING"],"description":"The reason the current deployment was started.","example":"DEPLOYING"},"lastTransitionTime":{"type":"string","format":"date-time","description":"The timestamp of when the deployment reached this status.","example":"2021-11-29T11:47:16.624Z"}},"required":["status","reason"],"additionalProperties":false,"description":"Details about the current deployment status."}},"additionalProperties":false,"description":"Details about the current service status."}},"required":["name","billing","buildSettings","serviceType","deployment","id","appId","cluster","status"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Services","project"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":54,"description":"The name of the service.","example":"Example Service"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"A description of the service.","example":"A service description"},"stageId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"billing":{"type":"object","properties":{"deploymentPlan":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The ID of the deployment plan to use.","example":"nf-compute-20"},"buildPlan":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The ID of the build plan to use.","example":"nf-compute-200-8"},"gpu":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"gpuType":{"type":"string"},"gpuCount":{"type":"integer"},"timesliced":{"type":"boolean"}},"required":["gpuType"],"additionalProperties":false}},"additionalProperties":false}},"required":["deploymentPlan"],"additionalProperties":false},"infrastructure":{"type":"object","properties":{"architecture":{"type":"string","enum":["x86","arm"]}},"additionalProperties":false},"deployment":{"type":"object","properties":{"type":{"type":"string","enum":["deployment","statefulSet"],"description":"The way the service should be deployed. Either as a deployment (default), or as a stateful set."},"instances":{"type":"integer","minimum":0,"description":"The number of instances to run the service on.","example":1},"buildpack":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customProcess","customCommand","customEntrypointCustomCommand","originalEntrypointCustomCommand"],"description":"Type of buildpack run configuration"},"customProcess":{"type":"string","description":"Custom process which should be run. Required in case where `configType` is `customProcess`"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be run. Required in case where `configType` is `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be run. Required in case where `configType` is `customCommand`, `customEntrypointCustomCommand` or `originalEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of buildpack runtime"},"docker":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customEntrypoint","customCommand","customEntrypointCustomCommand"],"description":"Type of entrypoint & command override configuration","example":"default"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be used. Required in case where `configType` is `customEntrypoint` or `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be used. Required in case where `configType` is `customCommand` or `customEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of docker runtime"},"storage":{"type":"object","properties":{"useHdbStorage":{"type":"boolean"},"usePdSsdStorage":{"type":"boolean"},"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":1024,"description":"Ephemeral storage per container in MB","example":1024}},"additionalProperties":false},"shmSize":{"type":"integer","minimum":64,"description":"Configures the amount of available memory-backed disk space available to /dev/shm"}},"additionalProperties":false},"strategy":{"type":"object","properties":{"type":{"type":"string","enum":["recreate","rollout-steady","rollout-balanced","rollout-fast","custom"],"description":"Configures the instance roll out strategy of your service. Currently only available via feature flag."},"settings":{"type":"object","properties":{"maxSurge":{"oneOf":[{"type":"integer","minimum":0,"description":"A non-negative integer."},{"type":"string","pattern":"^\\d+%$","description":"A percentage string in the range 0% to 100%, e.g. `25%`"}],"description":"Maximum number or percentage of pods that can be created above the desired count."},"maxUnavailable":{"anyOf":[{"type":"integer","minimum":0,"description":"A non-negative integer."},{"type":"string","pattern":"^\\d+%$","description":"A percentage string in the range 0% to 100%, e.g. `25%`"}],"description":"Maximum number or percentage of pods that can be unavailable during the update."}},"required":["maxSurge","maxUnavailable"],"additionalProperties":false}},"additionalProperties":false,"description":"Roll out strategy of the service"},"zonalRedundancy":{"type":"object","properties":{"type":{"type":"string","enum":["disabled","preferred","required"],"description":"Defines scheduling behaviour across different zones within the same region."},"minZones":{"type":"integer","minimum":1,"description":"Defines how many zones are required and will prevent containers from additional scheduling into existing zones. (Only relevant if type is set to \"required\")"}},"additionalProperties":false},"gpu":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"gpuType":{"type":"string"},"gpuCount":{"type":"integer"},"timesliced":{"type":"boolean"}},"required":["gpuType"],"additionalProperties":false}},"additionalProperties":false},"gracePeriodSeconds":{"type":"integer","minimum":15,"maximum":600,"description":"The 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."},"gradualRolloutStrategyId":{"type":"string","pattern":"^[A-Za-z0-9-]+$","nullable":true,"description":"The id of the strategy to be attached to service.","examples":["strategy-id","strategy-id"]},"ssh":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Enables SSH access if the resource matches an SSH identity selector."}},"required":["enabled"],"additionalProperties":false,"description":"Controls related to SSH access within the resource."},"metadata":{"type":"object","properties":{"labels":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom labels for the workload."},"annotations":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom annotations for the workload as string or object."}},"additionalProperties":false,"description":"Allow setting custom labels and annotations for workloads."}},"required":["instances"],"additionalProperties":false},"ports":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":1,"maxLength":8,"description":"The name used to identify the port.","example":"p01"},"internalPort":{"type":"integer","minimum":1,"maximum":65535,"description":"The port number.","example":8080},"public":{"type":"boolean","description":"If true, the port will be exposed publicly.","example":true,"default":false},"security":{"type":"object","properties":{"credentials":{"type":"array","items":{"type":"object","properties":{"username":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The username to access the service","example":"admin"},"password":{"type":"string","description":"The password to access the service with this username.","example":"password123"},"type":{"type":"string","enum":["basic-auth"],"description":"The type of authentication used","example":"basic-auth"}},"required":["username","password","type"],"additionalProperties":false},"description":"An array of credentials to access the service."},"ip":{"type":"array","items":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","description":"An IP address used by this rule","example":"127.0.0.1"},"description":"An array of IP addresses used for this rule"},"action":{"type":"string","enum":["ALLOW","DENY"],"description":"The action for this rule.","example":"DENY"}},"required":["addresses","action"],"additionalProperties":false},"description":"An array of IP address policies."},"policies":{"type":"array","items":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","description":"An IP address used by this rule","example":"127.0.0.1"},"description":"An array of IP addresses used for this rule"},"action":{"type":"string","enum":["ALLOW","DENY"],"description":"The action for this rule.","example":"DENY"}},"required":["addresses","action"],"additionalProperties":false},"description":"An array of IP address policies."},"sso":{"type":"object","properties":{"organizationId":{"type":"string","description":"ID of the SSO organization that the user will have to be a member of"},"directoryGroupIds":{"type":"array","items":{"type":"string"},"description":"Array of directory groups that will have access"},"allowAnyOrgUsers":{"type":"boolean","description":"Allow entire organization to access this service"},"validateInternalTraffic":{"type":"boolean","description":"Enforce internal traffic through SSO authentication flow"},"setCookieOnRootDomain":{"type":"boolean","description":"Set SSO authentication cookie on root domain"},"allowInternalTrafficViaPublicDns":{"type":"boolean","description":"Allow internal traffic from same or shared projects via public DNS to skip SSO authentication flow"}},"additionalProperties":false,"description":"Configure port authentication via SSO"},"headers":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"regexMode":{"type":"boolean","example":false,"default":false},"name":{"type":"string","pattern":"^[a-zA-Z0-9_\\-%$+]+$","example":"headerName"},"value":{"type":"string","example":"headerValue"}},"required":["name","value"],"additionalProperties":false,"description":"Matches provided headers as strings."},{"type":"object","properties":{"regexMode":{"type":"boolean","example":true,"default":false},"name":{"type":"string","example":"headerName"},"value":{"type":"string","example":"headerValue"}},"required":["name","value"],"additionalProperties":false,"description":"Matches provided headers as regex."}]},"description":"List of header authentication settings, it checks the presence of all headers and compares it against the expected value. Wildcard (*) is supported."},"verificationMode":{"type":"string","enum":["or","and"],"description":"Mode used to verify multiple security features like ip policies and SSO authentication"},"securePathConfiguration":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Enable security policies on a path-level style"},"skipSecurityPoliciesForInternalTrafficViaPublicDns":{"type":"boolean","description":"Allow internal traffic from same or shared projects via public DNS to skip all security policies"},"rules":{"type":"array","items":{"type":"object","properties":{"paths":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"path":{"type":"string","pattern":"^\\/([_a-zA-Z0-9-&?=.]*)((\\/[_a-zA-Z0-9-&?=.]+)*(\\/)?)?$"},"routingMode":{"type":"string","enum":["prefix"],"description":"Mode of the path, determining how the URI will be interpreted.","example":"prefix"},"priority":{"type":"integer","minimum":0,"maximum":100,"example":80}},"required":["path","routingMode","priority"],"additionalProperties":false,"description":"Route when the path starts with the provided prefix."},{"type":"object","properties":{"path":{"type":"string","pattern":"^\\/([_a-zA-Z0-9-&?=.]*)((\\/[_a-zA-Z0-9-&?=.]+)*(\\/)?)?$"},"routingMode":{"type":"string","enum":["exact"],"description":"Mode of the path, determining how the URI will be interpreted.","example":"exact"},"priority":{"type":"integer","minimum":0,"maximum":100,"example":80}},"required":["path","routingMode","priority"],"additionalProperties":false,"description":"Route when the path is an exact match."},{"type":"object","properties":{"path":{"type":"string"},"routingMode":{"type":"string","enum":["regex"],"description":"Mode of the path, determining how the URI will be interpreted.","example":"regex"},"priority":{"type":"integer","minimum":0,"maximum":100,"example":80}},"required":["path","routingMode","priority"],"additionalProperties":false,"description":"Route when the path matches the provided regex."}],"description":"Data about how the path should be handled."},"description":"Array of path objects which represent the paths and their priority for which the security policies will be enforced"},"accessMode":{"type":"string","enum":["protected","unprotected"],"description":"Specify the way the path rule will behave when processing policies. This enables an allow-list/deny-list approach for access control on each path","example":"protected"},"securityPolicies":{"type":"object","properties":{"orPolicies":{"type":"object","properties":{"credentials":{"type":"array","items":{"type":"object","properties":{"username":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The username to access the service","example":"admin"},"password":{"type":"string","description":"The password to access the service with this username.","example":"password123"},"type":{"type":"string","enum":["basic-auth"],"description":"The type of authentication used","example":"basic-auth"}},"required":["username","password","type"],"additionalProperties":false},"description":"An array of credentials to access the service."},"ip":{"type":"array","items":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","description":"An IP address used by this rule","example":"127.0.0.1"},"description":"An array of IP addresses used for this rule"},"action":{"type":"string","enum":["ALLOW","DENY"],"description":"The action for this rule.","example":"DENY"}},"required":["addresses","action"],"additionalProperties":false},"description":"An array of IP address policies."},"policies":{"type":"array","items":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","description":"An IP address used by this rule","example":"127.0.0.1"},"description":"An array of IP addresses used for this rule"},"action":{"type":"string","enum":["ALLOW","DENY"],"description":"The action for this rule.","example":"DENY"}},"required":["addresses","action"],"additionalProperties":false},"description":"An array of IP address policies."},"sso":{"type":"object","properties":{"organizationId":{"type":"string","description":"ID of the SSO organization that the user will have to be a member of"},"directoryGroupIds":{"type":"array","items":{"type":"string"},"description":"Array of directory groups that will have access"},"allowAnyOrgUsers":{"type":"boolean","description":"Allow entire organization to access this service"},"validateInternalTraffic":{"type":"boolean","description":"Enforce internal traffic through SSO authentication flow"},"setCookieOnRootDomain":{"type":"boolean","description":"Set SSO authentication cookie on root domain"},"allowInternalTrafficViaPublicDns":{"type":"boolean","description":"Allow internal traffic from same or shared projects via public DNS to skip SSO authentication flow"}},"additionalProperties":false,"description":"Configure port authentication via SSO"},"headers":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"regexMode":{"type":"boolean","example":false,"default":false},"name":{"type":"string","pattern":"^[a-zA-Z0-9_\\-%$+]+$","example":"headerName"},"value":{"type":"string","example":"headerValue"}},"required":["name","value"],"additionalProperties":false,"description":"Matches provided headers as strings."},{"type":"object","properties":{"regexMode":{"type":"boolean","example":true,"default":false},"name":{"type":"string","example":"headerName"},"value":{"type":"string","example":"headerValue"}},"required":["name","value"],"additionalProperties":false,"description":"Matches provided headers as regex."}]},"description":"List of header authentication settings, it checks the presence of all headers and compares it against the expected value. Wildcard (*) is supported."}},"additionalProperties":false},"requiredPolicies":{"type":"object","properties":{"credentials":{"type":"array","items":{"type":"object","properties":{"username":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The username to access the service","example":"admin"},"password":{"type":"string","description":"The password to access the service with this username.","example":"password123"},"type":{"type":"string","enum":["basic-auth"],"description":"The type of authentication used","example":"basic-auth"}},"required":["username","password","type"],"additionalProperties":false},"description":"An array of credentials to access the service."},"ip":{"type":"array","items":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","description":"An IP address used by this rule","example":"127.0.0.1"},"description":"An array of IP addresses used for this rule"},"action":{"type":"string","enum":["ALLOW","DENY"],"description":"The action for this rule.","example":"DENY"}},"required":["addresses","action"],"additionalProperties":false},"description":"An array of IP address policies."},"policies":{"type":"array","items":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","description":"An IP address used by this rule","example":"127.0.0.1"},"description":"An array of IP addresses used for this rule"},"action":{"type":"string","enum":["ALLOW","DENY"],"description":"The action for this rule.","example":"DENY"}},"required":["addresses","action"],"additionalProperties":false},"description":"An array of IP address policies."},"sso":{"type":"object","properties":{"organizationId":{"type":"string","description":"ID of the SSO organization that the user will have to be a member of"},"directoryGroupIds":{"type":"array","items":{"type":"string"},"description":"Array of directory groups that will have access"},"allowAnyOrgUsers":{"type":"boolean","description":"Allow entire organization to access this service"},"validateInternalTraffic":{"type":"boolean","description":"Enforce internal traffic through SSO authentication flow"},"setCookieOnRootDomain":{"type":"boolean","description":"Set SSO authentication cookie on root domain"},"allowInternalTrafficViaPublicDns":{"type":"boolean","description":"Allow internal traffic from same or shared projects via public DNS to skip SSO authentication flow"}},"additionalProperties":false,"description":"Configure port authentication via SSO"},"headers":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"regexMode":{"type":"boolean","example":false,"default":false},"name":{"type":"string","pattern":"^[a-zA-Z0-9_\\-%$+]+$","example":"headerName"},"value":{"type":"string","example":"headerValue"}},"required":["name","value"],"additionalProperties":false,"description":"Matches provided headers as strings."},{"type":"object","properties":{"regexMode":{"type":"boolean","example":true,"default":false},"name":{"type":"string","example":"headerName"},"value":{"type":"string","example":"headerValue"}},"required":["name","value"],"additionalProperties":false,"description":"Matches provided headers as regex."}]},"description":"List of header authentication settings, it checks the presence of all headers and compares it against the expected value. Wildcard (*) is supported."}},"additionalProperties":false}},"additionalProperties":false}},"required":["paths","accessMode"],"additionalProperties":false},"default":[]}},"additionalProperties":false}},"additionalProperties":false,"default":{"credentials":[],"policies":[],"sso":{}}},"domains":{"type":"array","items":{"type":"string","description":"A domain to redirect to this port.","example":"app.example.com"},"description":"An array of domains to redirect to this port. Each domain must first be verified and registered to your account.","default":[]},"disableNfDomain":{"type":"boolean","description":"Disable routing on the default code.run domain for public HTTP ports with custom domains.","default":false},"advancedOptions":{"type":"object","properties":{"enableTlsPassthrough":{"type":"boolean","description":"Whether this port should use pass through mode for TLS"}},"additionalProperties":false},"protocol":{"type":"string","enum":["HTTP","HTTP/2","TCP","UDP"],"description":"The protocol to use for the port.","example":"HTTP"}},"required":["name","internalPort","protocol"],"additionalProperties":false},"default":[]},"disabledCI":{"type":"boolean","description":"Whether CI (continuous integration) should be disabled.","default":false},"buildSource":{"type":"string","enum":["git","bundle"],"description":"Defines the build source for this resource","example":"git"},"vcsData":{"type":"object","properties":{"projectUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo to build.","example":"https://github.com/northflank/gatsby-with-northflank"},"projectType":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string","minLength":24,"maxLength":24,"description":"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 `vcsLinkId` is provided, Northflank will instead use your linked account with that ID."},"projectBranch":{"type":"string","description":"The name of the branch to use.","example":"master"}},"required":["projectUrl","projectType","projectBranch"],"additionalProperties":false},"bundleData":{"type":"object","properties":{"bundleUrl":{"type":"string","description":"URL of the bundle to be built","example":"https://example.com/archive.tar"},"branch":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"Branch identifier for the bundle.","example":"main"}},"required":["bundleUrl","branch"],"additionalProperties":false},"buildSettings":{"oneOf":[{"type":"object","properties":{"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false},"dockerfile":{"type":"object","properties":{"useCache":{"type":"boolean","description":"DEPRECATED: This field will be removed in the near future and currently has no effect."},"buildEngine":{"type":"string","enum":["buildkit","kaniko"],"description":"Build engine to use. Defaults to recommended build engine `buildkit`","example":"buildkit","default":"buildkit"},"dockerFilePath":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]+$","description":"The file path of the Dockerfile.","example":"/Dockerfile"},"dockerWorkDir":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*$","description":"The working directory of the Dockerfile.","example":"/"},"buildkit":{"type":"object","properties":{"useCache":{"type":"boolean","description":"Use persistent storage to cache build layers.","example":true,"default":false},"cacheStorageSize":{"type":"integer","description":"The amount of persistent storage available to each build in MB.","example":32768},"useInternalCache":{"type":"boolean","description":"DEPRECATED: This field will be removed in the near future.","default":false},"internalCacheStorage":{"type":"number","format":"float","description":"DEPRECATED: This field will be removed in the near future."}},"additionalProperties":false}},"required":["dockerFilePath","dockerWorkDir"],"additionalProperties":false}},"required":["dockerfile"],"additionalProperties":false,"description":"Build from a Dockerfile"},{"type":"object","properties":{"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false},"buildpack":{"type":"object","properties":{"builder":{"type":"string","enum":["HEROKU_24","HEROKU_22","HEROKU_22_CLASSIC","HEROKU_20","HEROKU_18","GOOGLE_22","GOOGLE_V1","CNB_ALPINE","CNB_BIONIC","PAKETO_JAMMY_TINY","PAKETO_JAMMY_BASE","PAKETO_JAMMY_FULL","PAKETO_TINY","PAKETO_BASE","PAKETO_FULL"],"description":"Buildpack stack to use. Defaults to recommended stack `HEROKU_24`.","example":"HEROKU_24","default":"HEROKU_24"},"buildpackLocators":{"type":"array","items":{"type":"string","description":"Url or registry identifier of custom Buildpack.","example":"https://buildpack-registry.heroku.com/cnb/mars/create-react-app"},"description":"Array of custom Buildpacks to use.","default":[]},"buildContext":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*$","description":"The working directory to build in.","example":"/","default":"/"},"useCache":{"type":"boolean","description":"Should build dependencies be cached?","example":false,"default":false}},"additionalProperties":false}},"required":["buildpack"],"additionalProperties":false,"description":"Build from a Buildpack"}],"description":"Build engine"},"buildConfiguration":{"type":"object","properties":{"pathIgnoreRules":{"type":"array","items":{"type":"string","maxLength":260,"description":"A path ignore rule, following `.gitignore` syntax. For example, `*.md` will ignore all files ending with `.md`.","example":"README.md"},"maxItems":200,"description":"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."},"isAllowList":{"type":"boolean","description":"If `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`.","example":false},"ciIgnoreFlagsEnabled":{"type":"boolean","description":"If `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":{"type":"array","items":{"type":"string","maxLength":72,"description":"A commit ignore flag.","example":"[skip ci]"},"maxItems":200,"description":"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]\"]`","example":["[skip ci]","[ci skip]","[no ci]","[skip nf]","[nf skip]","[northflank skip]","[skip northflank]"]},"dockerfileTarget":{"type":"string","description":"If your Dockerfile contains multiple build stages, you can specify the target stage by entering its name here."},"dockerCredentials":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The ID of the docker credentials to use.","example":"example-docker-credential"}},"includeGitFolder":{"type":"boolean","description":"Include .git folder inside the build context"},"fullGitClone":{"type":"boolean","description":"Include the entire git history as part of the .git folder. Only relevant if \"includeGitFolder\" is set."},"enableGitLfs":{"type":"boolean","description":"Enable Git LFS support for the build"},"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false}},"additionalProperties":false,"default":{"pathIgnoreRules":[],"isAllowList":false,"ciIgnoreFlagsEnabled":false}},"runtimeEnvironment":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"An object containing the runtime environment to set for the service. Keys may only contain letters, numbers, hyphens, forward slashes and dots.","example":{"VARIABLE_1":"abcdef","VARIABLE_2":"12345"},"default":{}},"runtimeFiles":{"type":"object","properties":{},"description":"Secret files as JSON object, encrypted at rest. File path must be absolute","example":{"/dir/fileName":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"buildArguments":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"An object containing the build arguments to set for the service. Keys may only contain letters, numbers, hyphens, forward slashes and dots.","example":{"ARGUMENT_1":"abcdef","ARGUMENT_2":"12345"},"default":{}},"buildFiles":{"type":"object","properties":{},"description":"Secret files as JSON object, encrypted at rest. File path must be absolute","example":{"/dir/fileName":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"dockerSecretMounts":{"type":"object","properties":{},"description":"Docker secret mount contents as JSON object, encrypted at rest. Must be a valid Docker secret mount identifier","example":{"example-secret-mount_1":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"healthChecks":{"type":"array","items":{"type":"object","properties":{"protocol":{"type":"string","enum":["HTTP","CMD","TCP"],"description":"The protocol to access the health check with.","example":"HTTP"},"type":{"type":"string","enum":["livenessProbe","readinessProbe","startupProbe"],"description":"The type of health check.","example":"readinessProbe"},"path":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*((\\?([a-zA-Z0-9-._]+(=[a-zA-Z0-9-._]+)?)*)(&([a-zA-Z0-9-._]+(=[a-zA-Z0-9-._]+)?)*)*)?$","description":"The path of the health check endpoint. Required when protocol is HTTP.","example":"/health-check"},"cmd":{"type":"string","description":"The command to run for the health check. Required when protocol is CMD"},"port":{"type":"integer","minimum":1,"description":"Port number for the health check endpoint. Required when protocol is HTTP.","example":8080},"initialDelaySeconds":{"type":"integer","minimum":1,"maximum":180,"description":"Initial delay, in seconds, before the health check is first run.","example":10},"periodSeconds":{"type":"integer","minimum":10,"maximum":600,"description":"The time between each check, in seconds.","example":60},"timeoutSeconds":{"type":"integer","minimum":1,"maximum":60,"description":"The time to wait for a response before marking the health check as a failure.","example":1},"failureThreshold":{"type":"integer","minimum":1,"maximum":255,"description":"The maximum number of allowed failures.","example":3},"successThreshold":{"type":"integer","minimum":1,"maximum":255,"description":"The number of successes required to mark the health check as a success.","example":1}},"required":["protocol","type","initialDelaySeconds","periodSeconds","timeoutSeconds","failureThreshold"],"additionalProperties":false,"description":"A health check object."},"description":"An array of health checks."},"loadBalancing":{"type":"object","properties":{"mode":{"type":"string","enum":["leastConnection","consistentHash","roundRobin","consistentReplicaRouting"]},"consistentHash":{"type":"object","properties":{"mode":{"type":"string","enum":["ip","customHeader"]},"header":{"type":"string","nullable":true}},"required":["mode"],"additionalProperties":false},"consistentReplicaRouting":{"type":"object","properties":{"mode":{"type":"string","enum":["path","header"]}},"required":["mode"],"additionalProperties":false}},"required":["mode"],"additionalProperties":false},"autoscaling":{"type":"object","properties":{"horizontal":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether horizontal autoscaling should be enabled","example":true},"minReplicas":{"type":"number","format":"float","minimum":1,"description":"Minimum number of replicas which should be running at any time","example":1},"maxReplicas":{"type":"number","format":"float","description":"Maximum number of replicas which can be running at any time","example":3},"cpu":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether autoscaling should take into account cpu usage"},"thresholdPercentage":{"type":"integer","minimum":10,"maximum":100,"description":"Threshold CPU usage percentage at which the workload will be scaled"}},"required":["enabled","thresholdPercentage"],"additionalProperties":false},"memory":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether autoscaling should take into account memory usage"},"thresholdPercentage":{"type":"integer","minimum":10,"maximum":100,"description":"Threshold memory usage percentage at which the workload will be scaled"}},"required":["enabled","thresholdPercentage"],"additionalProperties":false},"rps":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether autoscaling should take into requests-per-second"},"thresholdValue":{"type":"integer","minimum":1,"description":"Threshold rps value on which the workload will be scaled"}},"required":["enabled","thresholdValue"],"additionalProperties":false},"userMetrics":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether to enable handling for custom metrics in the autoscaling configuration","example":true},"exposedMetricsPath":{"type":"string","pattern":"^\\/([_a-zA-Z0-9-&?=.]*)((\\/[_a-zA-Z0-9-&?=.]+)*(\\/)?)?$","description":"Path on which the metrics will be exposed by the service..","example":"/metrics"},"exposedMetricsPort":{"type":"integer","description":"Port on which the metrics will be exposed by the service.","example":8080},"metrics":{"type":"array","items":{"type":"object","properties":{"metricName":{"type":"string","pattern":"[a-zA-Z_:][a-zA-Z0-9_:]*$","description":"Name of the custom metric","example":"example-metric"},"metricType":{"type":"string","enum":["gauge","counter"],"description":"Type of metric exposed, this will affect how it'll be queried by the autoscaler component: Gauge will be used as is, Counter will be used with rate()","example":"gauge"},"thresholdValue":{"type":"number","format":"float","description":"Threshold value on which the workload will be scaled. Represents the average value across all running pods.","example":2}},"required":["metricName","metricType","thresholdValue"],"additionalProperties":false},"description":"Array of custom metrics exposed by the service that will be used by the autoscaling configuration. At least one metric is required."}},"required":["enabled","exposedMetricsPath","exposedMetricsPort","metrics"],"additionalProperties":false}},"required":["enabled","minReplicas","maxReplicas"],"additionalProperties":false,"description":"Describes the horizontal autoscaling configuration"}},"additionalProperties":false,"description":"Describes all autoscaling configurations"},"createOptions":{"type":"object","properties":{"volumesToAttach":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39}}},"additionalProperties":false}},"required":["name","billing","deployment","buildSettings"],"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Project > Services > General > Create","x-nf-team-scoped":true,"x-nf-subheading":"put service","x-nf-cli-command":["put","service","combined"]},"v1-projects--projectId--services-combined--serviceId--patch":{"operationId":"patchProjectsServicesCombinedServiceid","summary":"Patch combined service","description":"Updates a combined service.","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"serviceId","type":"string","required":true,"description":"ID of the service","example":"example-service","in":"path","schema":{"name":"serviceId","type":"string","required":true,"description":"ID of the service","example":"example-service","in":"path"}}],"responses":{"200":{"description":"Details about the updated service.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":54,"description":"The name of the service.","example":"Example Service"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"A description of the service.","example":"A service description"},"stageId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"billing":{"type":"object","properties":{"deploymentPlan":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The ID of the deployment plan to use.","example":"nf-compute-20"},"buildPlan":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The ID of the build plan to use.","example":"nf-compute-200-8"},"gpu":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"gpuType":{"type":"string"},"gpuCount":{"type":"integer"},"timesliced":{"type":"boolean"}},"required":["gpuType"],"additionalProperties":false}},"additionalProperties":false}},"required":["deploymentPlan"],"additionalProperties":false},"infrastructure":{"type":"object","properties":{"architecture":{"type":"string","enum":["x86","arm"]}},"additionalProperties":false},"ports":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":1,"maxLength":8,"description":"The name used to identify the port.","example":"p01"},"internalPort":{"type":"integer","minimum":1,"maximum":65535,"description":"The port number.","example":8080},"public":{"type":"boolean","description":"If true, the port will be exposed publicly.","example":true,"default":false},"security":{"type":"object","properties":{"credentials":{"type":"array","items":{"type":"object","properties":{"username":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The username to access the service","example":"admin"},"password":{"type":"string","description":"The password to access the service with this username.","example":"password123"},"type":{"type":"string","enum":["basic-auth"],"description":"The type of authentication used","example":"basic-auth"}},"required":["username","password","type"],"additionalProperties":false},"description":"An array of credentials to access the service."},"ip":{"type":"array","items":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","description":"An IP address used by this rule","example":"127.0.0.1"},"description":"An array of IP addresses used for this rule"},"action":{"type":"string","enum":["ALLOW","DENY"],"description":"The action for this rule.","example":"DENY"}},"required":["addresses","action"],"additionalProperties":false},"description":"An array of IP address policies."},"policies":{"type":"array","items":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","description":"An IP address used by this rule","example":"127.0.0.1"},"description":"An array of IP addresses used for this rule"},"action":{"type":"string","enum":["ALLOW","DENY"],"description":"The action for this rule.","example":"DENY"}},"required":["addresses","action"],"additionalProperties":false},"description":"An array of IP address policies."},"sso":{"type":"object","properties":{"organizationId":{"type":"string","description":"ID of the SSO organization that the user will have to be a member of"},"directoryGroupIds":{"type":"array","items":{"type":"string"},"description":"Array of directory groups that will have access"},"allowAnyOrgUsers":{"type":"boolean","description":"Allow entire organization to access this service"},"validateInternalTraffic":{"type":"boolean","description":"Enforce internal traffic through SSO authentication flow"},"setCookieOnRootDomain":{"type":"boolean","description":"Set SSO authentication cookie on root domain"},"allowInternalTrafficViaPublicDns":{"type":"boolean","description":"Allow internal traffic from same or shared projects via public DNS to skip SSO authentication flow"}},"additionalProperties":false,"description":"Configure port authentication via SSO"},"headers":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"regexMode":{"type":"boolean","example":false,"default":false},"name":{"type":"string","pattern":"^[a-zA-Z0-9_\\-%$+]+$","example":"headerName"},"value":{"type":"string","example":"headerValue"}},"required":["name","value"],"additionalProperties":false,"description":"Matches provided headers as strings."},{"type":"object","properties":{"regexMode":{"type":"boolean","example":true,"default":false},"name":{"type":"string","example":"headerName"},"value":{"type":"string","example":"headerValue"}},"required":["name","value"],"additionalProperties":false,"description":"Matches provided headers as regex."}]},"description":"List of header authentication settings, it checks the presence of all headers and compares it against the expected value. Wildcard (*) is supported."},"verificationMode":{"type":"string","enum":["or","and"],"description":"Mode used to verify multiple security features like ip policies and SSO authentication"},"securePathConfiguration":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Enable security policies on a path-level style"},"skipSecurityPoliciesForInternalTrafficViaPublicDns":{"type":"boolean","description":"Allow internal traffic from same or shared projects via public DNS to skip all security policies"},"rules":{"type":"array","items":{"type":"object","properties":{"paths":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"path":{"type":"string","pattern":"^\\/([_a-zA-Z0-9-&?=.]*)((\\/[_a-zA-Z0-9-&?=.]+)*(\\/)?)?$"},"routingMode":{"type":"string","enum":["prefix"],"description":"Mode of the path, determining how the URI will be interpreted.","example":"prefix"},"priority":{"type":"integer","minimum":0,"maximum":100,"example":80}},"required":["path","routingMode","priority"],"additionalProperties":false,"description":"Route when the path starts with the provided prefix."},{"type":"object","properties":{"path":{"type":"string","pattern":"^\\/([_a-zA-Z0-9-&?=.]*)((\\/[_a-zA-Z0-9-&?=.]+)*(\\/)?)?$"},"routingMode":{"type":"string","enum":["exact"],"description":"Mode of the path, determining how the URI will be interpreted.","example":"exact"},"priority":{"type":"integer","minimum":0,"maximum":100,"example":80}},"required":["path","routingMode","priority"],"additionalProperties":false,"description":"Route when the path is an exact match."},{"type":"object","properties":{"path":{"type":"string"},"routingMode":{"type":"string","enum":["regex"],"description":"Mode of the path, determining how the URI will be interpreted.","example":"regex"},"priority":{"type":"integer","minimum":0,"maximum":100,"example":80}},"required":["path","routingMode","priority"],"additionalProperties":false,"description":"Route when the path matches the provided regex."}],"description":"Data about how the path should be handled."},"description":"Array of path objects which represent the paths and their priority for which the security policies will be enforced"},"accessMode":{"type":"string","enum":["protected","unprotected"],"description":"Specify the way the path rule will behave when processing policies. This enables an allow-list/deny-list approach for access control on each path","example":"protected"},"securityPolicies":{"type":"object","properties":{"orPolicies":{"type":"object","properties":{"credentials":{"type":"array","items":{"type":"object","properties":{"username":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The username to access the service","example":"admin"},"password":{"type":"string","description":"The password to access the service with this username.","example":"password123"},"type":{"type":"string","enum":["basic-auth"],"description":"The type of authentication used","example":"basic-auth"}},"required":["username","password","type"],"additionalProperties":false},"description":"An array of credentials to access the service."},"ip":{"type":"array","items":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","description":"An IP address used by this rule","example":"127.0.0.1"},"description":"An array of IP addresses used for this rule"},"action":{"type":"string","enum":["ALLOW","DENY"],"description":"The action for this rule.","example":"DENY"}},"required":["addresses","action"],"additionalProperties":false},"description":"An array of IP address policies."},"policies":{"type":"array","items":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","description":"An IP address used by this rule","example":"127.0.0.1"},"description":"An array of IP addresses used for this rule"},"action":{"type":"string","enum":["ALLOW","DENY"],"description":"The action for this rule.","example":"DENY"}},"required":["addresses","action"],"additionalProperties":false},"description":"An array of IP address policies."},"sso":{"type":"object","properties":{"organizationId":{"type":"string","description":"ID of the SSO organization that the user will have to be a member of"},"directoryGroupIds":{"type":"array","items":{"type":"string"},"description":"Array of directory groups that will have access"},"allowAnyOrgUsers":{"type":"boolean","description":"Allow entire organization to access this service"},"validateInternalTraffic":{"type":"boolean","description":"Enforce internal traffic through SSO authentication flow"},"setCookieOnRootDomain":{"type":"boolean","description":"Set SSO authentication cookie on root domain"},"allowInternalTrafficViaPublicDns":{"type":"boolean","description":"Allow internal traffic from same or shared projects via public DNS to skip SSO authentication flow"}},"additionalProperties":false,"description":"Configure port authentication via SSO"},"headers":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"regexMode":{"type":"boolean","example":false,"default":false},"name":{"type":"string","pattern":"^[a-zA-Z0-9_\\-%$+]+$","example":"headerName"},"value":{"type":"string","example":"headerValue"}},"required":["name","value"],"additionalProperties":false,"description":"Matches provided headers as strings."},{"type":"object","properties":{"regexMode":{"type":"boolean","example":true,"default":false},"name":{"type":"string","example":"headerName"},"value":{"type":"string","example":"headerValue"}},"required":["name","value"],"additionalProperties":false,"description":"Matches provided headers as regex."}]},"description":"List of header authentication settings, it checks the presence of all headers and compares it against the expected value. Wildcard (*) is supported."}},"additionalProperties":false},"requiredPolicies":{"type":"object","properties":{"credentials":{"type":"array","items":{"type":"object","properties":{"username":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The username to access the service","example":"admin"},"password":{"type":"string","description":"The password to access the service with this username.","example":"password123"},"type":{"type":"string","enum":["basic-auth"],"description":"The type of authentication used","example":"basic-auth"}},"required":["username","password","type"],"additionalProperties":false},"description":"An array of credentials to access the service."},"ip":{"type":"array","items":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","description":"An IP address used by this rule","example":"127.0.0.1"},"description":"An array of IP addresses used for this rule"},"action":{"type":"string","enum":["ALLOW","DENY"],"description":"The action for this rule.","example":"DENY"}},"required":["addresses","action"],"additionalProperties":false},"description":"An array of IP address policies."},"policies":{"type":"array","items":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","description":"An IP address used by this rule","example":"127.0.0.1"},"description":"An array of IP addresses used for this rule"},"action":{"type":"string","enum":["ALLOW","DENY"],"description":"The action for this rule.","example":"DENY"}},"required":["addresses","action"],"additionalProperties":false},"description":"An array of IP address policies."},"sso":{"type":"object","properties":{"organizationId":{"type":"string","description":"ID of the SSO organization that the user will have to be a member of"},"directoryGroupIds":{"type":"array","items":{"type":"string"},"description":"Array of directory groups that will have access"},"allowAnyOrgUsers":{"type":"boolean","description":"Allow entire organization to access this service"},"validateInternalTraffic":{"type":"boolean","description":"Enforce internal traffic through SSO authentication flow"},"setCookieOnRootDomain":{"type":"boolean","description":"Set SSO authentication cookie on root domain"},"allowInternalTrafficViaPublicDns":{"type":"boolean","description":"Allow internal traffic from same or shared projects via public DNS to skip SSO authentication flow"}},"additionalProperties":false,"description":"Configure port authentication via SSO"},"headers":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"regexMode":{"type":"boolean","example":false,"default":false},"name":{"type":"string","pattern":"^[a-zA-Z0-9_\\-%$+]+$","example":"headerName"},"value":{"type":"string","example":"headerValue"}},"required":["name","value"],"additionalProperties":false,"description":"Matches provided headers as strings."},{"type":"object","properties":{"regexMode":{"type":"boolean","example":true,"default":false},"name":{"type":"string","example":"headerName"},"value":{"type":"string","example":"headerValue"}},"required":["name","value"],"additionalProperties":false,"description":"Matches provided headers as regex."}]},"description":"List of header authentication settings, it checks the presence of all headers and compares it against the expected value. Wildcard (*) is supported."}},"additionalProperties":false}},"additionalProperties":false}},"required":["paths","accessMode"],"additionalProperties":false},"default":[]}},"additionalProperties":false}},"additionalProperties":false,"default":{"credentials":[],"policies":[],"sso":{}}},"domains":{"type":"array","items":{"type":"string","description":"A domain to redirect to this port.","example":"app.example.com"},"description":"An array of domains to redirect to this port. Each domain must first be verified and registered to your account.","default":[]},"disableNfDomain":{"type":"boolean","description":"Disable routing on the default code.run domain for public HTTP ports with custom domains.","default":false},"advancedOptions":{"type":"object","properties":{"enableTlsPassthrough":{"type":"boolean","description":"Whether this port should use pass through mode for TLS"}},"additionalProperties":false},"protocol":{"type":"string","oneOf":[{"type":"string","enum":["HTTP","HTTP/2"]},{"type":"string","enum":["HTTP","HTTP/2","TCP","UDP"]}],"description":"The protocol to use for the port.","example":"HTTP"}},"required":["name","internalPort","protocol"],"additionalProperties":false},"default":[]},"disabledCI":{"type":"boolean","description":"Whether CI (continuous integration) should be disabled.","default":false},"buildSource":{"type":"string","enum":["git","bundle"],"description":"Defines the build source for this resource","example":"git"},"vcsData":{"type":"object","properties":{"projectUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo to build.","example":"https://github.com/northflank/gatsby-with-northflank"},"projectType":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string","minLength":24,"maxLength":24,"description":"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 `vcsLinkId` is provided, Northflank will instead use your linked account with that ID."},"projectBranch":{"type":"string","description":"The name of the branch to use.","example":"master"}},"required":["projectUrl","projectType","projectBranch"],"additionalProperties":false},"bundleData":{"type":"object","properties":{"bundleUrl":{"type":"string","description":"URL of the bundle to be built","example":"https://example.com/archive.tar"},"branch":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"Branch identifier for the bundle.","example":"main"}},"required":["bundleUrl","branch"],"additionalProperties":false},"buildSettings":{"oneOf":[{"type":"object","properties":{"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false},"dockerfile":{"type":"object","properties":{"useCache":{"type":"boolean","description":"DEPRECATED: This field will be removed in the near future and currently has no effect."},"buildEngine":{"type":"string","enum":["buildkit","kaniko"],"description":"Build engine to use. Defaults to recommended build engine `buildkit`","example":"buildkit","default":"buildkit"},"dockerFilePath":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]+$","description":"The file path of the Dockerfile.","example":"/Dockerfile"},"dockerWorkDir":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*$","description":"The working directory of the Dockerfile.","example":"/"},"buildkit":{"type":"object","properties":{"useCache":{"type":"boolean","description":"Use persistent storage to cache build layers.","example":true,"default":false},"cacheStorageSize":{"type":"integer","description":"The amount of persistent storage available to each build in MB.","example":32768},"useInternalCache":{"type":"boolean","description":"DEPRECATED: This field will be removed in the near future.","default":false},"internalCacheStorage":{"type":"number","format":"float","description":"DEPRECATED: This field will be removed in the near future."}},"additionalProperties":false}},"required":["dockerFilePath","dockerWorkDir"],"additionalProperties":false}},"required":["dockerfile"],"additionalProperties":false,"description":"Build from a Dockerfile"},{"type":"object","properties":{"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false},"buildpack":{"type":"object","properties":{"builder":{"type":"string","enum":["HEROKU_24","HEROKU_22","HEROKU_22_CLASSIC","HEROKU_20","HEROKU_18","GOOGLE_22","GOOGLE_V1","CNB_ALPINE","CNB_BIONIC","PAKETO_JAMMY_TINY","PAKETO_JAMMY_BASE","PAKETO_JAMMY_FULL","PAKETO_TINY","PAKETO_BASE","PAKETO_FULL"],"description":"Buildpack stack to use. Defaults to recommended stack `HEROKU_24`.","example":"HEROKU_24","default":"HEROKU_24"},"buildpackLocators":{"type":"array","items":{"type":"string","description":"Url or registry identifier of custom Buildpack.","example":"https://buildpack-registry.heroku.com/cnb/mars/create-react-app"},"description":"Array of custom Buildpacks to use.","default":[]},"buildContext":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*$","description":"The working directory to build in.","example":"/","default":"/"},"useCache":{"type":"boolean","description":"Should build dependencies be cached?","example":false,"default":false}},"additionalProperties":false}},"required":["buildpack"],"additionalProperties":false,"description":"Build from a Buildpack"}],"description":"Build engine"},"buildConfiguration":{"type":"object","properties":{"pathIgnoreRules":{"type":"array","items":{"type":"string","maxLength":260,"description":"A path ignore rule, following `.gitignore` syntax. For example, `*.md` will ignore all files ending with `.md`.","example":"README.md"},"maxItems":200,"description":"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."},"isAllowList":{"type":"boolean","description":"If `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`.","example":false},"ciIgnoreFlagsEnabled":{"type":"boolean","description":"If `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":{"type":"array","items":{"type":"string","maxLength":72,"description":"A commit ignore flag.","example":"[skip ci]"},"maxItems":200,"description":"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]\"]`","example":["[skip ci]","[ci skip]","[no ci]","[skip nf]","[nf skip]","[northflank skip]","[skip northflank]"]},"dockerfileTarget":{"type":"string","description":"If your Dockerfile contains multiple build stages, you can specify the target stage by entering its name here."},"dockerCredentials":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The ID of the docker credentials to use.","example":"example-docker-credential"}},"includeGitFolder":{"type":"boolean","description":"Include .git folder inside the build context"},"fullGitClone":{"type":"boolean","description":"Include the entire git history as part of the .git folder. Only relevant if \"includeGitFolder\" is set."},"enableGitLfs":{"type":"boolean","description":"Enable Git LFS support for the build"},"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false}},"additionalProperties":false,"default":{"pathIgnoreRules":[],"isAllowList":false,"ciIgnoreFlagsEnabled":false}},"runtimeEnvironment":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"An object containing the runtime environment to set for the service. Keys may only contain letters, numbers, hyphens, forward slashes and dots.","example":{"VARIABLE_1":"abcdef","VARIABLE_2":"12345"},"default":{}},"runtimeFiles":{"type":"object","properties":{},"description":"Secret files as JSON object, encrypted at rest. File path must be absolute","example":{"/dir/fileName":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"buildArguments":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"An object containing the build arguments to set for the service. Keys may only contain letters, numbers, hyphens, forward slashes and dots.","example":{"ARGUMENT_1":"abcdef","ARGUMENT_2":"12345"},"default":{}},"buildFiles":{"type":"object","properties":{},"description":"Secret files as JSON object, encrypted at rest. File path must be absolute","example":{"/dir/fileName":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"dockerSecretMounts":{"type":"object","properties":{},"description":"Docker secret mount contents as JSON object, encrypted at rest. Must be a valid Docker secret mount identifier","example":{"example-secret-mount_1":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"healthChecks":{"type":"array","items":{"type":"object","properties":{"protocol":{"type":"string","enum":["HTTP","CMD","TCP"],"description":"The protocol to access the health check with.","example":"HTTP"},"type":{"type":"string","enum":["livenessProbe","readinessProbe","startupProbe"],"description":"The type of health check.","example":"readinessProbe"},"path":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*((\\?([a-zA-Z0-9-._]+(=[a-zA-Z0-9-._]+)?)*)(&([a-zA-Z0-9-._]+(=[a-zA-Z0-9-._]+)?)*)*)?$","description":"The path of the health check endpoint. Required when protocol is HTTP.","example":"/health-check"},"cmd":{"type":"string","description":"The command to run for the health check. Required when protocol is CMD"},"port":{"type":"integer","minimum":1,"description":"Port number for the health check endpoint. Required when protocol is HTTP.","example":8080},"initialDelaySeconds":{"type":"integer","minimum":1,"maximum":180,"description":"Initial delay, in seconds, before the health check is first run.","example":10},"periodSeconds":{"type":"integer","minimum":10,"maximum":600,"description":"The time between each check, in seconds.","example":60},"timeoutSeconds":{"type":"integer","minimum":1,"maximum":60,"description":"The time to wait for a response before marking the health check as a failure.","example":1},"failureThreshold":{"type":"integer","minimum":1,"maximum":255,"description":"The maximum number of allowed failures.","example":3},"successThreshold":{"type":"integer","minimum":1,"maximum":255,"description":"The number of successes required to mark the health check as a success.","example":1}},"required":["protocol","type","initialDelaySeconds","periodSeconds","timeoutSeconds","failureThreshold"],"additionalProperties":false,"description":"A health check object."},"description":"An array of health checks."},"loadBalancing":{"type":"object","properties":{"mode":{"type":"string","enum":["leastConnection","consistentHash","roundRobin","consistentReplicaRouting"]},"consistentHash":{"type":"object","properties":{"mode":{"type":"string","enum":["ip","customHeader"]},"header":{"type":"string","nullable":true}},"required":["mode"],"additionalProperties":false},"consistentReplicaRouting":{"type":"object","properties":{"mode":{"type":"string","enum":["path","header"]}},"required":["mode"],"additionalProperties":false}},"required":["mode"],"additionalProperties":false},"autoscaling":{"type":"object","properties":{"horizontal":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether horizontal autoscaling should be enabled","example":true},"minReplicas":{"type":"number","format":"float","minimum":1,"description":"Minimum number of replicas which should be running at any time","example":1},"maxReplicas":{"type":"number","format":"float","description":"Maximum number of replicas which can be running at any time","example":3},"cpu":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether autoscaling should take into account cpu usage"},"thresholdPercentage":{"type":"integer","minimum":10,"maximum":100,"description":"Threshold CPU usage percentage at which the workload will be scaled"}},"required":["enabled","thresholdPercentage"],"additionalProperties":false},"memory":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether autoscaling should take into account memory usage"},"thresholdPercentage":{"type":"integer","minimum":10,"maximum":100,"description":"Threshold memory usage percentage at which the workload will be scaled"}},"required":["enabled","thresholdPercentage"],"additionalProperties":false},"rps":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether autoscaling should take into requests-per-second"},"thresholdValue":{"type":"integer","minimum":1,"description":"Threshold rps value on which the workload will be scaled"}},"required":["enabled","thresholdValue"],"additionalProperties":false},"userMetrics":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether to enable handling for custom metrics in the autoscaling configuration","example":true},"exposedMetricsPath":{"type":"string","pattern":"^\\/([_a-zA-Z0-9-&?=.]*)((\\/[_a-zA-Z0-9-&?=.]+)*(\\/)?)?$","description":"Path on which the metrics will be exposed by the service..","example":"/metrics"},"exposedMetricsPort":{"type":"integer","description":"Port on which the metrics will be exposed by the service.","example":8080},"metrics":{"type":"array","items":{"type":"object","properties":{"metricName":{"type":"string","pattern":"[a-zA-Z_:][a-zA-Z0-9_:]*$","description":"Name of the custom metric","example":"example-metric"},"metricType":{"type":"string","enum":["gauge","counter"],"description":"Type of metric exposed, this will affect how it'll be queried by the autoscaler component: Gauge will be used as is, Counter will be used with rate()","example":"gauge"},"thresholdValue":{"type":"number","format":"float","description":"Threshold value on which the workload will be scaled. Represents the average value across all running pods.","example":2}},"required":["metricName","metricType","thresholdValue"],"additionalProperties":false},"description":"Array of custom metrics exposed by the service that will be used by the autoscaling configuration. At least one metric is required."}},"required":["enabled","exposedMetricsPath","exposedMetricsPort","metrics"],"additionalProperties":false}},"required":["enabled","minReplicas","maxReplicas"],"additionalProperties":false,"description":"Describes the horizontal autoscaling configuration"}},"additionalProperties":false,"description":"Describes all autoscaling configurations"},"createOptions":{"type":"object","properties":{"volumesToAttach":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39}}},"additionalProperties":false},"serviceType":{"type":"string","enum":["combined"],"description":"Type of the service (combined, build or deployment)","example":"combined"},"deployment":{"type":"object","properties":{"type":{"type":"string","enum":["deployment","statefulSet"],"description":"The way the service should be deployed. Either as a deployment (default), or as a stateful set."},"instances":{"type":"integer","minimum":0,"description":"The number of instances to run the service on.","example":1},"buildpack":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customProcess","customCommand","customEntrypointCustomCommand","originalEntrypointCustomCommand"],"description":"Type of buildpack run configuration"},"customProcess":{"type":"string","description":"Custom process which should be run. Required in case where `configType` is `customProcess`"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be run. Required in case where `configType` is `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be run. Required in case where `configType` is `customCommand`, `customEntrypointCustomCommand` or `originalEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of buildpack runtime"},"docker":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customEntrypoint","customCommand","customEntrypointCustomCommand"],"description":"Type of entrypoint & command override configuration","example":"default"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be used. Required in case where `configType` is `customEntrypoint` or `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be used. Required in case where `configType` is `customCommand` or `customEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of docker runtime"},"storage":{"type":"object","properties":{"useHdbStorage":{"type":"boolean"},"usePdSsdStorage":{"type":"boolean"},"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":1024,"description":"Ephemeral storage per container in MB","example":1024}},"additionalProperties":false},"shmSize":{"type":"integer","minimum":64,"description":"Configures the amount of available memory-backed disk space available to /dev/shm"}},"additionalProperties":false},"strategy":{"type":"object","properties":{"type":{"type":"string","enum":["recreate","rollout-steady","rollout-balanced","rollout-fast","custom"],"description":"Configures the instance roll out strategy of your service. Currently only available via feature flag."},"settings":{"type":"object","properties":{"maxSurge":{"oneOf":[{"type":"integer","minimum":0,"description":"A non-negative integer."},{"type":"string","pattern":"^\\d+%$","description":"A percentage string in the range 0% to 100%, e.g. `25%`"}],"description":"Maximum number or percentage of pods that can be created above the desired count."},"maxUnavailable":{"anyOf":[{"type":"integer","minimum":0,"description":"A non-negative integer."},{"type":"string","pattern":"^\\d+%$","description":"A percentage string in the range 0% to 100%, e.g. `25%`"}],"description":"Maximum number or percentage of pods that can be unavailable during the update."}},"required":["maxSurge","maxUnavailable"],"additionalProperties":false}},"additionalProperties":false,"description":"Roll out strategy of the service"},"zonalRedundancy":{"type":"object","properties":{"type":{"type":"string","enum":["disabled","preferred","required"],"description":"Defines scheduling behaviour across different zones within the same region."},"minZones":{"type":"integer","minimum":1,"description":"Defines how many zones are required and will prevent containers from additional scheduling into existing zones. (Only relevant if type is set to \"required\")"}},"additionalProperties":false},"gpu":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"gpuType":{"type":"string"},"gpuCount":{"type":"integer"},"timesliced":{"type":"boolean"}},"required":["gpuType"],"additionalProperties":false}},"additionalProperties":false},"gracePeriodSeconds":{"type":"integer","minimum":15,"maximum":600,"description":"The 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."},"gradualRolloutStrategyId":{"type":"string","pattern":"^[A-Za-z0-9-]+$","nullable":true,"description":"The id of the strategy to be attached to service.","examples":["strategy-id","strategy-id"]},"ssh":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Enables SSH access if the resource matches an SSH identity selector."}},"required":["enabled"],"additionalProperties":false,"description":"Controls related to SSH access within the resource."},"metadata":{"type":"object","properties":{"labels":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom labels for the workload."},"annotations":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom annotations for the workload as string or object."}},"additionalProperties":false,"description":"Allow setting custom labels and annotations for workloads."},"imageUrl":{"type":"string","description":"Image registry url of the deployed image."}},"required":["instances"],"additionalProperties":false},"id":{"type":"string","description":"Identifier for the service","example":"example-service"},"appId":{"type":"string","description":"Full identifier used for service deployment","example":"/example-user/default-project/example-service"},"cluster":{"type":"object","properties":{"id":{"type":"string","description":"The id of the cluster associated with this project.","example":"nf-europe-west"},"name":{"type":"string","description":"The name of the cluster associated with this project.","example":"nf-europe-west"},"namespace":{"type":"string","description":"Namespace this resource is located within on the cluster.","example":"ns-8zy2mcjh9zn2"},"loadBalancers":{"type":"array","items":{"type":"string","example":"lb.659200800000000000000000.northflank.com"},"description":"Load balancer DNS for the cluster."}},"required":["id","name"],"additionalProperties":false,"description":"Cluster information"},"createdAt":{"type":"string","format":"date-time","description":"time of creation"},"updatedAt":{"type":"string","format":"date-time","description":"time of update"},"status":{"type":"object","properties":{"build":{"type":"object","properties":{"status":{"type":"string","enum":["QUEUED","PENDING","UNSCHEDULABLE","STARTING","CLONING","BUILDING","UPLOADING","ABORTED","FAILURE","SUBMISSION_FAILURE","SUCCESS","CRASHED","IN_PROGRESS"],"description":"The current status of the build.","example":"SUCCESS"},"lastTransitionTime":{"type":"string","format":"date-time","description":"The timestamp of when the build reached this status.","example":"2021-11-29T11:47:16.624Z"}},"required":["status"],"additionalProperties":false,"description":"Details about the status of the most recent build."},"deployment":{"type":"object","properties":{"status":{"type":"string","enum":["PENDING","IN_PROGRESS","COMPLETED","FAILED"],"description":"The current status of the deployment.","example":"COMPLETED"},"reason":{"type":"string","enum":["SCALING","DEPLOYING"],"description":"The reason the current deployment was started.","example":"DEPLOYING"},"lastTransitionTime":{"type":"string","format":"date-time","description":"The timestamp of when the deployment reached this status.","example":"2021-11-29T11:47:16.624Z"}},"required":["status","reason"],"additionalProperties":false,"description":"Details about the current deployment status."}},"additionalProperties":false,"description":"Details about the current service status."}},"required":["name","billing","buildSettings","serviceType","deployment","id","appId","cluster","status"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Services","project"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"A description of the service.","example":"A service description"},"stageId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"nullable":true},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"billing":{"type":"object","properties":{"deploymentPlan":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The ID of the deployment plan to use.","example":"nf-compute-20"},"buildPlan":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The ID of the build plan to use.","example":"nf-compute-200-8"},"gpu":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"gpuType":{"type":"string"},"gpuCount":{"type":"integer"},"timesliced":{"type":"boolean"}},"additionalProperties":false}},"additionalProperties":false}},"additionalProperties":false},"deployment":{"type":"object","properties":{"instances":{"type":"integer","minimum":0,"description":"The number of instances to run the service on.","example":1},"buildpack":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customProcess","customCommand","customEntrypointCustomCommand","originalEntrypointCustomCommand"],"description":"Type of buildpack run configuration"},"customProcess":{"type":"string","description":"Custom process which should be run. Required in case where `configType` is `customProcess`"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be run. Required in case where `configType` is `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be run. Required in case where `configType` is `customCommand`, `customEntrypointCustomCommand` or `originalEntrypointCustomCommand`"}},"additionalProperties":false},"docker":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customEntrypoint","customCommand","customEntrypointCustomCommand"],"description":"Type of entrypoint & command override configuration","example":"default"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be used. Required in case where `configType` is `customEntrypoint` or `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be used. Required in case where `configType` is `customCommand` or `customEntrypointCustomCommand`"}},"additionalProperties":false},"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":1024,"description":"Ephemeral storage per container in MB","example":1024}},"additionalProperties":false},"shmSize":{"type":"integer","minimum":64,"description":"Configures the amount of available memory-backed disk space available to /dev/shm"}},"additionalProperties":false},"strategy":{"type":"object","properties":{"type":{"type":"string","enum":["recreate","rollout-steady","rollout-balanced","rollout-fast","custom"],"description":"Configures the instance roll out strategy of your service. Currently only available via feature flag."},"settings":{"type":"object","properties":{"maxSurge":{"oneOf":[{"type":"integer","minimum":0,"description":"A non-negative integer."},{"type":"string","pattern":"^\\d+%$","description":"A percentage string in the range 0% to 100%, e.g. `25%`"}],"description":"Maximum number or percentage of pods that can be created above the desired count."},"maxUnavailable":{"anyOf":[{"type":"integer","minimum":0,"description":"A non-negative integer."},{"type":"string","pattern":"^\\d+%$","description":"A percentage string in the range 0% to 100%, e.g. `25%`"}],"description":"Maximum number or percentage of pods that can be unavailable during the update."}},"required":["maxSurge","maxUnavailable"],"additionalProperties":false}},"additionalProperties":false,"description":"Roll out strategy of the service"},"zonalRedundancy":{"type":"object","properties":{"type":{"type":"string","enum":["disabled","preferred","required"],"description":"Defines scheduling behaviour across different zones within the same region."},"minZones":{"type":"integer","minimum":1,"description":"Defines how many zones are required and will prevent containers from additional scheduling into existing zones. (Only relevant if type is set to \"required\")"}},"additionalProperties":false},"gpu":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"gpuType":{"type":"string"},"gpuCount":{"type":"integer"},"timesliced":{"type":"boolean"}},"additionalProperties":false}},"additionalProperties":false},"gracePeriodSeconds":{"type":"integer","minimum":15,"maximum":600,"description":"The 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."},"gradualRolloutStrategyId":{"type":"string","pattern":"^[A-Za-z0-9-]+$","nullable":true,"description":"The id of the strategy to be attached to service.","examples":["strategy-id","strategy-id"]},"ssh":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Enables SSH access if the resource matches an SSH identity selector."}},"additionalProperties":false},"metadata":{"type":"object","properties":{"labels":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom labels for the workload."},"annotations":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom annotations for the workload as string or object."}},"additionalProperties":false,"description":"Allow setting custom labels and annotations for workloads."}},"additionalProperties":false},"ports":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":1,"maxLength":8,"description":"The name used to identify the port.","example":"p01"},"internalPort":{"type":"integer","minimum":1,"maximum":65535,"description":"The port number.","example":8080},"public":{"type":"boolean","description":"If true, the port will be exposed publicly.","example":true,"default":false},"security":{"type":"object","properties":{"credentials":{"type":"array","items":{"type":"object","properties":{"username":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The username to access the service","example":"admin"},"password":{"type":"string","description":"The password to access the service with this username.","example":"password123"},"type":{"type":"string","enum":["basic-auth"],"description":"The type of authentication used","example":"basic-auth"}},"required":["username","password","type"],"additionalProperties":false},"description":"An array of credentials to access the service."},"ip":{"type":"array","items":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","description":"An IP address used by this rule","example":"127.0.0.1"},"description":"An array of IP addresses used for this rule"},"action":{"type":"string","enum":["ALLOW","DENY"],"description":"The action for this rule.","example":"DENY"}},"required":["addresses","action"],"additionalProperties":false},"description":"An array of IP address policies."},"policies":{"type":"array","items":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","description":"An IP address used by this rule","example":"127.0.0.1"},"description":"An array of IP addresses used for this rule"},"action":{"type":"string","enum":["ALLOW","DENY"],"description":"The action for this rule.","example":"DENY"}},"required":["addresses","action"],"additionalProperties":false},"description":"An array of IP address policies."},"sso":{"type":"object","properties":{"organizationId":{"type":"string","description":"ID of the SSO organization that the user will have to be a member of"},"directoryGroupIds":{"type":"array","items":{"type":"string"},"description":"Array of directory groups that will have access"},"allowAnyOrgUsers":{"type":"boolean","description":"Allow entire organization to access this service"},"validateInternalTraffic":{"type":"boolean","description":"Enforce internal traffic through SSO authentication flow"},"setCookieOnRootDomain":{"type":"boolean","description":"Set SSO authentication cookie on root domain"},"allowInternalTrafficViaPublicDns":{"type":"boolean","description":"Allow internal traffic from same or shared projects via public DNS to skip SSO authentication flow"}},"additionalProperties":false,"description":"Configure port authentication via SSO"},"headers":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"regexMode":{"type":"boolean","example":false,"default":false},"name":{"type":"string","pattern":"^[a-zA-Z0-9_\\-%$+]+$","example":"headerName"},"value":{"type":"string","example":"headerValue"}},"required":["name","value"],"additionalProperties":false,"description":"Matches provided headers as strings."},{"type":"object","properties":{"regexMode":{"type":"boolean","example":true,"default":false},"name":{"type":"string","example":"headerName"},"value":{"type":"string","example":"headerValue"}},"required":["name","value"],"additionalProperties":false,"description":"Matches provided headers as regex."}]},"description":"List of header authentication settings, it checks the presence of all headers and compares it against the expected value. Wildcard (*) is supported."},"verificationMode":{"type":"string","enum":["or","and"],"description":"Mode used to verify multiple security features like ip policies and SSO authentication"},"securePathConfiguration":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Enable security policies on a path-level style"},"skipSecurityPoliciesForInternalTrafficViaPublicDns":{"type":"boolean","description":"Allow internal traffic from same or shared projects via public DNS to skip all security policies"},"rules":{"type":"array","items":{"type":"object","properties":{"paths":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"path":{"type":"string","pattern":"^\\/([_a-zA-Z0-9-&?=.]*)((\\/[_a-zA-Z0-9-&?=.]+)*(\\/)?)?$"},"routingMode":{"type":"string","enum":["prefix"],"description":"Mode of the path, determining how the URI will be interpreted.","example":"prefix"},"priority":{"type":"integer","minimum":0,"maximum":100,"example":80}},"required":["path","routingMode","priority"],"additionalProperties":false,"description":"Route when the path starts with the provided prefix."},{"type":"object","properties":{"path":{"type":"string","pattern":"^\\/([_a-zA-Z0-9-&?=.]*)((\\/[_a-zA-Z0-9-&?=.]+)*(\\/)?)?$"},"routingMode":{"type":"string","enum":["exact"],"description":"Mode of the path, determining how the URI will be interpreted.","example":"exact"},"priority":{"type":"integer","minimum":0,"maximum":100,"example":80}},"required":["path","routingMode","priority"],"additionalProperties":false,"description":"Route when the path is an exact match."},{"type":"object","properties":{"path":{"type":"string"},"routingMode":{"type":"string","enum":["regex"],"description":"Mode of the path, determining how the URI will be interpreted.","example":"regex"},"priority":{"type":"integer","minimum":0,"maximum":100,"example":80}},"required":["path","routingMode","priority"],"additionalProperties":false,"description":"Route when the path matches the provided regex."}],"description":"Data about how the path should be handled."},"description":"Array of path objects which represent the paths and their priority for which the security policies will be enforced"},"accessMode":{"type":"string","enum":["protected","unprotected"],"description":"Specify the way the path rule will behave when processing policies. This enables an allow-list/deny-list approach for access control on each path","example":"protected"},"securityPolicies":{"type":"object","properties":{"orPolicies":{"type":"object","properties":{"credentials":{"type":"array","items":{"type":"object","properties":{"username":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The username to access the service","example":"admin"},"password":{"type":"string","description":"The password to access the service with this username.","example":"password123"},"type":{"type":"string","enum":["basic-auth"],"description":"The type of authentication used","example":"basic-auth"}},"required":["username","password","type"],"additionalProperties":false},"description":"An array of credentials to access the service."},"ip":{"type":"array","items":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","description":"An IP address used by this rule","example":"127.0.0.1"},"description":"An array of IP addresses used for this rule"},"action":{"type":"string","enum":["ALLOW","DENY"],"description":"The action for this rule.","example":"DENY"}},"required":["addresses","action"],"additionalProperties":false},"description":"An array of IP address policies."},"policies":{"type":"array","items":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","description":"An IP address used by this rule","example":"127.0.0.1"},"description":"An array of IP addresses used for this rule"},"action":{"type":"string","enum":["ALLOW","DENY"],"description":"The action for this rule.","example":"DENY"}},"required":["addresses","action"],"additionalProperties":false},"description":"An array of IP address policies."},"sso":{"type":"object","properties":{"organizationId":{"type":"string","description":"ID of the SSO organization that the user will have to be a member of"},"directoryGroupIds":{"type":"array","items":{"type":"string"},"description":"Array of directory groups that will have access"},"allowAnyOrgUsers":{"type":"boolean","description":"Allow entire organization to access this service"},"validateInternalTraffic":{"type":"boolean","description":"Enforce internal traffic through SSO authentication flow"},"setCookieOnRootDomain":{"type":"boolean","description":"Set SSO authentication cookie on root domain"},"allowInternalTrafficViaPublicDns":{"type":"boolean","description":"Allow internal traffic from same or shared projects via public DNS to skip SSO authentication flow"}},"additionalProperties":false,"description":"Configure port authentication via SSO"},"headers":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"regexMode":{"type":"boolean","example":false,"default":false},"name":{"type":"string","pattern":"^[a-zA-Z0-9_\\-%$+]+$","example":"headerName"},"value":{"type":"string","example":"headerValue"}},"required":["name","value"],"additionalProperties":false,"description":"Matches provided headers as strings."},{"type":"object","properties":{"regexMode":{"type":"boolean","example":true,"default":false},"name":{"type":"string","example":"headerName"},"value":{"type":"string","example":"headerValue"}},"required":["name","value"],"additionalProperties":false,"description":"Matches provided headers as regex."}]},"description":"List of header authentication settings, it checks the presence of all headers and compares it against the expected value. Wildcard (*) is supported."}},"additionalProperties":false},"requiredPolicies":{"type":"object","properties":{"credentials":{"type":"array","items":{"type":"object","properties":{"username":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The username to access the service","example":"admin"},"password":{"type":"string","description":"The password to access the service with this username.","example":"password123"},"type":{"type":"string","enum":["basic-auth"],"description":"The type of authentication used","example":"basic-auth"}},"required":["username","password","type"],"additionalProperties":false},"description":"An array of credentials to access the service."},"ip":{"type":"array","items":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","description":"An IP address used by this rule","example":"127.0.0.1"},"description":"An array of IP addresses used for this rule"},"action":{"type":"string","enum":["ALLOW","DENY"],"description":"The action for this rule.","example":"DENY"}},"required":["addresses","action"],"additionalProperties":false},"description":"An array of IP address policies."},"policies":{"type":"array","items":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","description":"An IP address used by this rule","example":"127.0.0.1"},"description":"An array of IP addresses used for this rule"},"action":{"type":"string","enum":["ALLOW","DENY"],"description":"The action for this rule.","example":"DENY"}},"required":["addresses","action"],"additionalProperties":false},"description":"An array of IP address policies."},"sso":{"type":"object","properties":{"organizationId":{"type":"string","description":"ID of the SSO organization that the user will have to be a member of"},"directoryGroupIds":{"type":"array","items":{"type":"string"},"description":"Array of directory groups that will have access"},"allowAnyOrgUsers":{"type":"boolean","description":"Allow entire organization to access this service"},"validateInternalTraffic":{"type":"boolean","description":"Enforce internal traffic through SSO authentication flow"},"setCookieOnRootDomain":{"type":"boolean","description":"Set SSO authentication cookie on root domain"},"allowInternalTrafficViaPublicDns":{"type":"boolean","description":"Allow internal traffic from same or shared projects via public DNS to skip SSO authentication flow"}},"additionalProperties":false,"description":"Configure port authentication via SSO"},"headers":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"regexMode":{"type":"boolean","example":false,"default":false},"name":{"type":"string","pattern":"^[a-zA-Z0-9_\\-%$+]+$","example":"headerName"},"value":{"type":"string","example":"headerValue"}},"required":["name","value"],"additionalProperties":false,"description":"Matches provided headers as strings."},{"type":"object","properties":{"regexMode":{"type":"boolean","example":true,"default":false},"name":{"type":"string","example":"headerName"},"value":{"type":"string","example":"headerValue"}},"required":["name","value"],"additionalProperties":false,"description":"Matches provided headers as regex."}]},"description":"List of header authentication settings, it checks the presence of all headers and compares it against the expected value. Wildcard (*) is supported."}},"additionalProperties":false}},"additionalProperties":false}},"required":["paths","accessMode"],"additionalProperties":false},"default":[]}},"additionalProperties":false}},"additionalProperties":false,"default":{"credentials":[],"policies":[],"sso":{}}},"domains":{"type":"array","items":{"type":"string","description":"A domain to redirect to this port.","example":"app.example.com"},"description":"An array of domains to redirect to this port. Each domain must first be verified and registered to your account.","default":[]},"disableNfDomain":{"type":"boolean","description":"Disable routing on the default code.run domain for public HTTP ports with custom domains.","default":false},"advancedOptions":{"type":"object","properties":{"enableTlsPassthrough":{"type":"boolean","description":"Whether this port should use pass through mode for TLS"}},"additionalProperties":false},"protocol":{"type":"string","enum":["HTTP","HTTP/2","TCP","UDP"],"description":"The protocol to use for the port.","example":"HTTP"}},"required":["name","internalPort","protocol"],"additionalProperties":false}},"disabledCI":{"type":"boolean","description":"Whether CI (continuous integration) should be disabled."},"buildSource":{"type":"string","enum":["git","bundle"],"description":"Defines the build source for this resource","example":"git"},"vcsData":{"type":"object","properties":{"projectUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo to build.","example":"https://github.com/northflank/gatsby-with-northflank"},"projectType":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string","minLength":24,"maxLength":24,"description":"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 `vcsLinkId` is provided, Northflank will instead use your linked account with that ID."},"projectBranch":{"type":"string","description":"The name of the branch to use.","example":"master"}},"additionalProperties":false},"bundleData":{"type":"object","properties":{"bundleUrl":{"type":"string","description":"URL of the bundle to be built","example":"https://example.com/archive.tar"},"branch":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"Branch identifier for the bundle.","example":"main"}},"additionalProperties":false},"buildSettings":{"type":"object","properties":{"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false},"dockerfile":{"type":"object","properties":{"useCache":{"type":"boolean","description":"DEPRECATED: This field will be removed in the near future and currently has no effect."},"buildEngine":{"type":"string","enum":["buildkit","kaniko"],"description":"Build engine to use. Defaults to recommended build engine `buildkit`","example":"buildkit"},"dockerFilePath":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]+$","description":"The file path of the Dockerfile.","example":"/Dockerfile"},"dockerWorkDir":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*$","description":"The working directory of the Dockerfile.","example":"/"},"buildkit":{"type":"object","properties":{"useCache":{"type":"boolean","description":"Use persistent storage to cache build layers.","example":true},"cacheStorageSize":{"type":"integer","description":"The amount of persistent storage available to each build in MB.","example":32768},"useInternalCache":{"type":"boolean","description":"DEPRECATED: This field will be removed in the near future."},"internalCacheStorage":{"type":"number","format":"float","description":"DEPRECATED: This field will be removed in the near future."}},"additionalProperties":false}},"additionalProperties":false},"buildpack":{"type":"object","properties":{"builder":{"type":"string","enum":["HEROKU_24","HEROKU_22","HEROKU_22_CLASSIC","HEROKU_20","HEROKU_18","GOOGLE_22","GOOGLE_V1","CNB_ALPINE","CNB_BIONIC","PAKETO_JAMMY_TINY","PAKETO_JAMMY_BASE","PAKETO_JAMMY_FULL","PAKETO_TINY","PAKETO_BASE","PAKETO_FULL"],"description":"Buildpack stack to use. Defaults to recommended stack `HEROKU_24`.","example":"HEROKU_24"},"buildpackLocators":{"type":"array","items":{"type":"string","description":"Url or registry identifier of custom Buildpack.","example":"https://buildpack-registry.heroku.com/cnb/mars/create-react-app"},"description":"Array of custom Buildpacks to use."},"buildContext":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*$","description":"The working directory to build in.","example":"/"},"useCache":{"type":"boolean","description":"Should build dependencies be cached?","example":false}},"additionalProperties":false}},"additionalProperties":false},"buildConfiguration":{"type":"object","properties":{"pathIgnoreRules":{"type":"array","items":{"type":"string","maxLength":260,"description":"A path ignore rule, following `.gitignore` syntax. For example, `*.md` will ignore all files ending with `.md`.","example":"README.md"},"maxItems":200,"description":"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."},"isAllowList":{"type":"boolean","description":"If `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`.","example":false},"ciIgnoreFlagsEnabled":{"type":"boolean","description":"If `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":{"type":"array","items":{"type":"string","maxLength":72,"description":"A commit ignore flag.","example":"[skip ci]"},"maxItems":200,"description":"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]\"]`","example":["[skip ci]","[ci skip]","[no ci]","[skip nf]","[nf skip]","[northflank skip]","[skip northflank]"]},"dockerfileTarget":{"type":"string","description":"If your Dockerfile contains multiple build stages, you can specify the target stage by entering its name here."},"dockerCredentials":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The ID of the docker credentials to use.","example":"example-docker-credential"}},"includeGitFolder":{"type":"boolean","description":"Include .git folder inside the build context"},"fullGitClone":{"type":"boolean","description":"Include the entire git history as part of the .git folder. Only relevant if \"includeGitFolder\" is set."},"enableGitLfs":{"type":"boolean","description":"Enable Git LFS support for the build"},"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false}},"additionalProperties":false},"runtimeEnvironment":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"An object containing the runtime environment to set for the service. Keys may only contain letters, numbers, hyphens, forward slashes and dots.","example":{"VARIABLE_1":"abcdef","VARIABLE_2":"12345"}},"runtimeFiles":{"type":"object","properties":{},"description":"Secret files as JSON object, encrypted at rest. File path must be absolute","example":{"/dir/fileName":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"buildArguments":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"An object containing the build arguments to set for the service. Keys may only contain letters, numbers, hyphens, forward slashes and dots.","example":{"ARGUMENT_1":"abcdef","ARGUMENT_2":"12345"}},"buildFiles":{"type":"object","properties":{},"description":"Secret files as JSON object, encrypted at rest. File path must be absolute","example":{"/dir/fileName":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"dockerSecretMounts":{"type":"object","properties":{},"description":"Docker secret mount contents as JSON object, encrypted at rest. Must be a valid Docker secret mount identifier","example":{"example-secret-mount_1":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"healthChecks":{"type":"array","items":{"type":"object","properties":{"protocol":{"type":"string","enum":["HTTP","CMD","TCP"],"description":"The protocol to access the health check with.","example":"HTTP"},"type":{"type":"string","enum":["livenessProbe","readinessProbe","startupProbe"],"description":"The type of health check.","example":"readinessProbe"},"path":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*((\\?([a-zA-Z0-9-._]+(=[a-zA-Z0-9-._]+)?)*)(&([a-zA-Z0-9-._]+(=[a-zA-Z0-9-._]+)?)*)*)?$","description":"The path of the health check endpoint. Required when protocol is HTTP.","example":"/health-check"},"cmd":{"type":"string","description":"The command to run for the health check. Required when protocol is CMD"},"port":{"type":"integer","minimum":1,"description":"Port number for the health check endpoint. Required when protocol is HTTP.","example":8080},"initialDelaySeconds":{"type":"integer","minimum":1,"maximum":180,"description":"Initial delay, in seconds, before the health check is first run.","example":10},"periodSeconds":{"type":"integer","minimum":10,"maximum":600,"description":"The time between each check, in seconds.","example":60},"timeoutSeconds":{"type":"integer","minimum":1,"maximum":60,"description":"The time to wait for a response before marking the health check as a failure.","example":1},"failureThreshold":{"type":"integer","minimum":1,"maximum":255,"description":"The maximum number of allowed failures.","example":3},"successThreshold":{"type":"integer","minimum":1,"maximum":255,"description":"The number of successes required to mark the health check as a success.","example":1}},"required":["protocol","type","initialDelaySeconds","periodSeconds","timeoutSeconds","failureThreshold"],"additionalProperties":false,"description":"A health check object."},"description":"An array of health checks."},"loadBalancing":{"type":"object","properties":{"mode":{"type":"string","enum":["leastConnection","consistentHash","roundRobin","consistentReplicaRouting"]},"consistentHash":{"type":"object","properties":{"mode":{"type":"string","enum":["ip","customHeader"]},"header":{"type":"string","nullable":true}},"required":["mode"],"additionalProperties":false},"consistentReplicaRouting":{"type":"object","properties":{"mode":{"type":"string","enum":["path","header"]}},"required":["mode"],"additionalProperties":false}},"additionalProperties":false},"autoscaling":{"type":"object","properties":{"horizontal":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether horizontal autoscaling should be enabled","example":true},"minReplicas":{"type":"number","format":"float","minimum":1,"description":"Minimum number of replicas which should be running at any time","example":1},"maxReplicas":{"type":"number","format":"float","description":"Maximum number of replicas which can be running at any time","example":3},"cpu":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether autoscaling should take into account cpu usage"},"thresholdPercentage":{"type":"integer","minimum":10,"maximum":100,"description":"Threshold CPU usage percentage at which the workload will be scaled"}},"additionalProperties":false},"memory":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether autoscaling should take into account memory usage"},"thresholdPercentage":{"type":"integer","minimum":10,"maximum":100,"description":"Threshold memory usage percentage at which the workload will be scaled"}},"additionalProperties":false},"rps":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether autoscaling should take into requests-per-second"},"thresholdValue":{"type":"integer","minimum":1,"description":"Threshold rps value on which the workload will be scaled"}},"additionalProperties":false},"userMetrics":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether to enable handling for custom metrics in the autoscaling configuration","example":true},"exposedMetricsPath":{"type":"string","pattern":"^\\/([_a-zA-Z0-9-&?=.]*)((\\/[_a-zA-Z0-9-&?=.]+)*(\\/)?)?$","description":"Path on which the metrics will be exposed by the service..","example":"/metrics"},"exposedMetricsPort":{"type":"integer","description":"Port on which the metrics will be exposed by the service.","example":8080},"metrics":{"type":"array","items":{"type":"object","properties":{"metricName":{"type":"string","pattern":"[a-zA-Z_:][a-zA-Z0-9_:]*$","description":"Name of the custom metric","example":"example-metric"},"metricType":{"type":"string","enum":["gauge","counter"],"description":"Type of metric exposed, this will affect how it'll be queried by the autoscaler component: Gauge will be used as is, Counter will be used with rate()","example":"gauge"},"thresholdValue":{"type":"number","format":"float","description":"Threshold value on which the workload will be scaled. Represents the average value across all running pods.","example":2}},"required":["metricName","metricType","thresholdValue"],"additionalProperties":false},"description":"Array of custom metrics exposed by the service that will be used by the autoscaling configuration. At least one metric is required."}},"additionalProperties":false}},"additionalProperties":false}},"additionalProperties":false}},"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Project > Services > General > Update","x-nf-team-scoped":true,"x-nf-subheading":"patch service","x-nf-cli-command":["patch","service","combined"]},"v1-projects--projectId--services-combined--serviceId--patch-team-scoped":{"operationId":"patchProjectsServicesCombinedServiceid","summary":"Patch combined service","description":"Updates a combined service.","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"serviceId","type":"string","required":true,"description":"ID of the service","example":"example-service","in":"path","schema":{"name":"serviceId","type":"string","required":true,"description":"ID of the service","example":"example-service","in":"path"}}],"responses":{"200":{"description":"Details about the updated service.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":54,"description":"The name of the service.","example":"Example Service"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"A description of the service.","example":"A service description"},"stageId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"billing":{"type":"object","properties":{"deploymentPlan":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The ID of the deployment plan to use.","example":"nf-compute-20"},"buildPlan":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The ID of the build plan to use.","example":"nf-compute-200-8"},"gpu":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"gpuType":{"type":"string"},"gpuCount":{"type":"integer"},"timesliced":{"type":"boolean"}},"required":["gpuType"],"additionalProperties":false}},"additionalProperties":false}},"required":["deploymentPlan"],"additionalProperties":false},"infrastructure":{"type":"object","properties":{"architecture":{"type":"string","enum":["x86","arm"]}},"additionalProperties":false},"ports":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":1,"maxLength":8,"description":"The name used to identify the port.","example":"p01"},"internalPort":{"type":"integer","minimum":1,"maximum":65535,"description":"The port number.","example":8080},"public":{"type":"boolean","description":"If true, the port will be exposed publicly.","example":true,"default":false},"security":{"type":"object","properties":{"credentials":{"type":"array","items":{"type":"object","properties":{"username":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The username to access the service","example":"admin"},"password":{"type":"string","description":"The password to access the service with this username.","example":"password123"},"type":{"type":"string","enum":["basic-auth"],"description":"The type of authentication used","example":"basic-auth"}},"required":["username","password","type"],"additionalProperties":false},"description":"An array of credentials to access the service."},"ip":{"type":"array","items":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","description":"An IP address used by this rule","example":"127.0.0.1"},"description":"An array of IP addresses used for this rule"},"action":{"type":"string","enum":["ALLOW","DENY"],"description":"The action for this rule.","example":"DENY"}},"required":["addresses","action"],"additionalProperties":false},"description":"An array of IP address policies."},"policies":{"type":"array","items":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","description":"An IP address used by this rule","example":"127.0.0.1"},"description":"An array of IP addresses used for this rule"},"action":{"type":"string","enum":["ALLOW","DENY"],"description":"The action for this rule.","example":"DENY"}},"required":["addresses","action"],"additionalProperties":false},"description":"An array of IP address policies."},"sso":{"type":"object","properties":{"organizationId":{"type":"string","description":"ID of the SSO organization that the user will have to be a member of"},"directoryGroupIds":{"type":"array","items":{"type":"string"},"description":"Array of directory groups that will have access"},"allowAnyOrgUsers":{"type":"boolean","description":"Allow entire organization to access this service"},"validateInternalTraffic":{"type":"boolean","description":"Enforce internal traffic through SSO authentication flow"},"setCookieOnRootDomain":{"type":"boolean","description":"Set SSO authentication cookie on root domain"},"allowInternalTrafficViaPublicDns":{"type":"boolean","description":"Allow internal traffic from same or shared projects via public DNS to skip SSO authentication flow"}},"additionalProperties":false,"description":"Configure port authentication via SSO"},"headers":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"regexMode":{"type":"boolean","example":false,"default":false},"name":{"type":"string","pattern":"^[a-zA-Z0-9_\\-%$+]+$","example":"headerName"},"value":{"type":"string","example":"headerValue"}},"required":["name","value"],"additionalProperties":false,"description":"Matches provided headers as strings."},{"type":"object","properties":{"regexMode":{"type":"boolean","example":true,"default":false},"name":{"type":"string","example":"headerName"},"value":{"type":"string","example":"headerValue"}},"required":["name","value"],"additionalProperties":false,"description":"Matches provided headers as regex."}]},"description":"List of header authentication settings, it checks the presence of all headers and compares it against the expected value. Wildcard (*) is supported."},"verificationMode":{"type":"string","enum":["or","and"],"description":"Mode used to verify multiple security features like ip policies and SSO authentication"},"securePathConfiguration":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Enable security policies on a path-level style"},"skipSecurityPoliciesForInternalTrafficViaPublicDns":{"type":"boolean","description":"Allow internal traffic from same or shared projects via public DNS to skip all security policies"},"rules":{"type":"array","items":{"type":"object","properties":{"paths":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"path":{"type":"string","pattern":"^\\/([_a-zA-Z0-9-&?=.]*)((\\/[_a-zA-Z0-9-&?=.]+)*(\\/)?)?$"},"routingMode":{"type":"string","enum":["prefix"],"description":"Mode of the path, determining how the URI will be interpreted.","example":"prefix"},"priority":{"type":"integer","minimum":0,"maximum":100,"example":80}},"required":["path","routingMode","priority"],"additionalProperties":false,"description":"Route when the path starts with the provided prefix."},{"type":"object","properties":{"path":{"type":"string","pattern":"^\\/([_a-zA-Z0-9-&?=.]*)((\\/[_a-zA-Z0-9-&?=.]+)*(\\/)?)?$"},"routingMode":{"type":"string","enum":["exact"],"description":"Mode of the path, determining how the URI will be interpreted.","example":"exact"},"priority":{"type":"integer","minimum":0,"maximum":100,"example":80}},"required":["path","routingMode","priority"],"additionalProperties":false,"description":"Route when the path is an exact match."},{"type":"object","properties":{"path":{"type":"string"},"routingMode":{"type":"string","enum":["regex"],"description":"Mode of the path, determining how the URI will be interpreted.","example":"regex"},"priority":{"type":"integer","minimum":0,"maximum":100,"example":80}},"required":["path","routingMode","priority"],"additionalProperties":false,"description":"Route when the path matches the provided regex."}],"description":"Data about how the path should be handled."},"description":"Array of path objects which represent the paths and their priority for which the security policies will be enforced"},"accessMode":{"type":"string","enum":["protected","unprotected"],"description":"Specify the way the path rule will behave when processing policies. This enables an allow-list/deny-list approach for access control on each path","example":"protected"},"securityPolicies":{"type":"object","properties":{"orPolicies":{"type":"object","properties":{"credentials":{"type":"array","items":{"type":"object","properties":{"username":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The username to access the service","example":"admin"},"password":{"type":"string","description":"The password to access the service with this username.","example":"password123"},"type":{"type":"string","enum":["basic-auth"],"description":"The type of authentication used","example":"basic-auth"}},"required":["username","password","type"],"additionalProperties":false},"description":"An array of credentials to access the service."},"ip":{"type":"array","items":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","description":"An IP address used by this rule","example":"127.0.0.1"},"description":"An array of IP addresses used for this rule"},"action":{"type":"string","enum":["ALLOW","DENY"],"description":"The action for this rule.","example":"DENY"}},"required":["addresses","action"],"additionalProperties":false},"description":"An array of IP address policies."},"policies":{"type":"array","items":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","description":"An IP address used by this rule","example":"127.0.0.1"},"description":"An array of IP addresses used for this rule"},"action":{"type":"string","enum":["ALLOW","DENY"],"description":"The action for this rule.","example":"DENY"}},"required":["addresses","action"],"additionalProperties":false},"description":"An array of IP address policies."},"sso":{"type":"object","properties":{"organizationId":{"type":"string","description":"ID of the SSO organization that the user will have to be a member of"},"directoryGroupIds":{"type":"array","items":{"type":"string"},"description":"Array of directory groups that will have access"},"allowAnyOrgUsers":{"type":"boolean","description":"Allow entire organization to access this service"},"validateInternalTraffic":{"type":"boolean","description":"Enforce internal traffic through SSO authentication flow"},"setCookieOnRootDomain":{"type":"boolean","description":"Set SSO authentication cookie on root domain"},"allowInternalTrafficViaPublicDns":{"type":"boolean","description":"Allow internal traffic from same or shared projects via public DNS to skip SSO authentication flow"}},"additionalProperties":false,"description":"Configure port authentication via SSO"},"headers":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"regexMode":{"type":"boolean","example":false,"default":false},"name":{"type":"string","pattern":"^[a-zA-Z0-9_\\-%$+]+$","example":"headerName"},"value":{"type":"string","example":"headerValue"}},"required":["name","value"],"additionalProperties":false,"description":"Matches provided headers as strings."},{"type":"object","properties":{"regexMode":{"type":"boolean","example":true,"default":false},"name":{"type":"string","example":"headerName"},"value":{"type":"string","example":"headerValue"}},"required":["name","value"],"additionalProperties":false,"description":"Matches provided headers as regex."}]},"description":"List of header authentication settings, it checks the presence of all headers and compares it against the expected value. Wildcard (*) is supported."}},"additionalProperties":false},"requiredPolicies":{"type":"object","properties":{"credentials":{"type":"array","items":{"type":"object","properties":{"username":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The username to access the service","example":"admin"},"password":{"type":"string","description":"The password to access the service with this username.","example":"password123"},"type":{"type":"string","enum":["basic-auth"],"description":"The type of authentication used","example":"basic-auth"}},"required":["username","password","type"],"additionalProperties":false},"description":"An array of credentials to access the service."},"ip":{"type":"array","items":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","description":"An IP address used by this rule","example":"127.0.0.1"},"description":"An array of IP addresses used for this rule"},"action":{"type":"string","enum":["ALLOW","DENY"],"description":"The action for this rule.","example":"DENY"}},"required":["addresses","action"],"additionalProperties":false},"description":"An array of IP address policies."},"policies":{"type":"array","items":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","description":"An IP address used by this rule","example":"127.0.0.1"},"description":"An array of IP addresses used for this rule"},"action":{"type":"string","enum":["ALLOW","DENY"],"description":"The action for this rule.","example":"DENY"}},"required":["addresses","action"],"additionalProperties":false},"description":"An array of IP address policies."},"sso":{"type":"object","properties":{"organizationId":{"type":"string","description":"ID of the SSO organization that the user will have to be a member of"},"directoryGroupIds":{"type":"array","items":{"type":"string"},"description":"Array of directory groups that will have access"},"allowAnyOrgUsers":{"type":"boolean","description":"Allow entire organization to access this service"},"validateInternalTraffic":{"type":"boolean","description":"Enforce internal traffic through SSO authentication flow"},"setCookieOnRootDomain":{"type":"boolean","description":"Set SSO authentication cookie on root domain"},"allowInternalTrafficViaPublicDns":{"type":"boolean","description":"Allow internal traffic from same or shared projects via public DNS to skip SSO authentication flow"}},"additionalProperties":false,"description":"Configure port authentication via SSO"},"headers":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"regexMode":{"type":"boolean","example":false,"default":false},"name":{"type":"string","pattern":"^[a-zA-Z0-9_\\-%$+]+$","example":"headerName"},"value":{"type":"string","example":"headerValue"}},"required":["name","value"],"additionalProperties":false,"description":"Matches provided headers as strings."},{"type":"object","properties":{"regexMode":{"type":"boolean","example":true,"default":false},"name":{"type":"string","example":"headerName"},"value":{"type":"string","example":"headerValue"}},"required":["name","value"],"additionalProperties":false,"description":"Matches provided headers as regex."}]},"description":"List of header authentication settings, it checks the presence of all headers and compares it against the expected value. Wildcard (*) is supported."}},"additionalProperties":false}},"additionalProperties":false}},"required":["paths","accessMode"],"additionalProperties":false},"default":[]}},"additionalProperties":false}},"additionalProperties":false,"default":{"credentials":[],"policies":[],"sso":{}}},"domains":{"type":"array","items":{"type":"string","description":"A domain to redirect to this port.","example":"app.example.com"},"description":"An array of domains to redirect to this port. Each domain must first be verified and registered to your account.","default":[]},"disableNfDomain":{"type":"boolean","description":"Disable routing on the default code.run domain for public HTTP ports with custom domains.","default":false},"advancedOptions":{"type":"object","properties":{"enableTlsPassthrough":{"type":"boolean","description":"Whether this port should use pass through mode for TLS"}},"additionalProperties":false},"protocol":{"type":"string","oneOf":[{"type":"string","enum":["HTTP","HTTP/2"]},{"type":"string","enum":["HTTP","HTTP/2","TCP","UDP"]}],"description":"The protocol to use for the port.","example":"HTTP"}},"required":["name","internalPort","protocol"],"additionalProperties":false},"default":[]},"disabledCI":{"type":"boolean","description":"Whether CI (continuous integration) should be disabled.","default":false},"buildSource":{"type":"string","enum":["git","bundle"],"description":"Defines the build source for this resource","example":"git"},"vcsData":{"type":"object","properties":{"projectUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo to build.","example":"https://github.com/northflank/gatsby-with-northflank"},"projectType":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string","minLength":24,"maxLength":24,"description":"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 `vcsLinkId` is provided, Northflank will instead use your linked account with that ID."},"projectBranch":{"type":"string","description":"The name of the branch to use.","example":"master"}},"required":["projectUrl","projectType","projectBranch"],"additionalProperties":false},"bundleData":{"type":"object","properties":{"bundleUrl":{"type":"string","description":"URL of the bundle to be built","example":"https://example.com/archive.tar"},"branch":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"Branch identifier for the bundle.","example":"main"}},"required":["bundleUrl","branch"],"additionalProperties":false},"buildSettings":{"oneOf":[{"type":"object","properties":{"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false},"dockerfile":{"type":"object","properties":{"useCache":{"type":"boolean","description":"DEPRECATED: This field will be removed in the near future and currently has no effect."},"buildEngine":{"type":"string","enum":["buildkit","kaniko"],"description":"Build engine to use. Defaults to recommended build engine `buildkit`","example":"buildkit","default":"buildkit"},"dockerFilePath":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]+$","description":"The file path of the Dockerfile.","example":"/Dockerfile"},"dockerWorkDir":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*$","description":"The working directory of the Dockerfile.","example":"/"},"buildkit":{"type":"object","properties":{"useCache":{"type":"boolean","description":"Use persistent storage to cache build layers.","example":true,"default":false},"cacheStorageSize":{"type":"integer","description":"The amount of persistent storage available to each build in MB.","example":32768},"useInternalCache":{"type":"boolean","description":"DEPRECATED: This field will be removed in the near future.","default":false},"internalCacheStorage":{"type":"number","format":"float","description":"DEPRECATED: This field will be removed in the near future."}},"additionalProperties":false}},"required":["dockerFilePath","dockerWorkDir"],"additionalProperties":false}},"required":["dockerfile"],"additionalProperties":false,"description":"Build from a Dockerfile"},{"type":"object","properties":{"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false},"buildpack":{"type":"object","properties":{"builder":{"type":"string","enum":["HEROKU_24","HEROKU_22","HEROKU_22_CLASSIC","HEROKU_20","HEROKU_18","GOOGLE_22","GOOGLE_V1","CNB_ALPINE","CNB_BIONIC","PAKETO_JAMMY_TINY","PAKETO_JAMMY_BASE","PAKETO_JAMMY_FULL","PAKETO_TINY","PAKETO_BASE","PAKETO_FULL"],"description":"Buildpack stack to use. Defaults to recommended stack `HEROKU_24`.","example":"HEROKU_24","default":"HEROKU_24"},"buildpackLocators":{"type":"array","items":{"type":"string","description":"Url or registry identifier of custom Buildpack.","example":"https://buildpack-registry.heroku.com/cnb/mars/create-react-app"},"description":"Array of custom Buildpacks to use.","default":[]},"buildContext":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*$","description":"The working directory to build in.","example":"/","default":"/"},"useCache":{"type":"boolean","description":"Should build dependencies be cached?","example":false,"default":false}},"additionalProperties":false}},"required":["buildpack"],"additionalProperties":false,"description":"Build from a Buildpack"}],"description":"Build engine"},"buildConfiguration":{"type":"object","properties":{"pathIgnoreRules":{"type":"array","items":{"type":"string","maxLength":260,"description":"A path ignore rule, following `.gitignore` syntax. For example, `*.md` will ignore all files ending with `.md`.","example":"README.md"},"maxItems":200,"description":"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."},"isAllowList":{"type":"boolean","description":"If `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`.","example":false},"ciIgnoreFlagsEnabled":{"type":"boolean","description":"If `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":{"type":"array","items":{"type":"string","maxLength":72,"description":"A commit ignore flag.","example":"[skip ci]"},"maxItems":200,"description":"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]\"]`","example":["[skip ci]","[ci skip]","[no ci]","[skip nf]","[nf skip]","[northflank skip]","[skip northflank]"]},"dockerfileTarget":{"type":"string","description":"If your Dockerfile contains multiple build stages, you can specify the target stage by entering its name here."},"dockerCredentials":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The ID of the docker credentials to use.","example":"example-docker-credential"}},"includeGitFolder":{"type":"boolean","description":"Include .git folder inside the build context"},"fullGitClone":{"type":"boolean","description":"Include the entire git history as part of the .git folder. Only relevant if \"includeGitFolder\" is set."},"enableGitLfs":{"type":"boolean","description":"Enable Git LFS support for the build"},"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false}},"additionalProperties":false,"default":{"pathIgnoreRules":[],"isAllowList":false,"ciIgnoreFlagsEnabled":false}},"runtimeEnvironment":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"An object containing the runtime environment to set for the service. Keys may only contain letters, numbers, hyphens, forward slashes and dots.","example":{"VARIABLE_1":"abcdef","VARIABLE_2":"12345"},"default":{}},"runtimeFiles":{"type":"object","properties":{},"description":"Secret files as JSON object, encrypted at rest. File path must be absolute","example":{"/dir/fileName":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"buildArguments":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"An object containing the build arguments to set for the service. Keys may only contain letters, numbers, hyphens, forward slashes and dots.","example":{"ARGUMENT_1":"abcdef","ARGUMENT_2":"12345"},"default":{}},"buildFiles":{"type":"object","properties":{},"description":"Secret files as JSON object, encrypted at rest. File path must be absolute","example":{"/dir/fileName":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"dockerSecretMounts":{"type":"object","properties":{},"description":"Docker secret mount contents as JSON object, encrypted at rest. Must be a valid Docker secret mount identifier","example":{"example-secret-mount_1":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"healthChecks":{"type":"array","items":{"type":"object","properties":{"protocol":{"type":"string","enum":["HTTP","CMD","TCP"],"description":"The protocol to access the health check with.","example":"HTTP"},"type":{"type":"string","enum":["livenessProbe","readinessProbe","startupProbe"],"description":"The type of health check.","example":"readinessProbe"},"path":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*((\\?([a-zA-Z0-9-._]+(=[a-zA-Z0-9-._]+)?)*)(&([a-zA-Z0-9-._]+(=[a-zA-Z0-9-._]+)?)*)*)?$","description":"The path of the health check endpoint. Required when protocol is HTTP.","example":"/health-check"},"cmd":{"type":"string","description":"The command to run for the health check. Required when protocol is CMD"},"port":{"type":"integer","minimum":1,"description":"Port number for the health check endpoint. Required when protocol is HTTP.","example":8080},"initialDelaySeconds":{"type":"integer","minimum":1,"maximum":180,"description":"Initial delay, in seconds, before the health check is first run.","example":10},"periodSeconds":{"type":"integer","minimum":10,"maximum":600,"description":"The time between each check, in seconds.","example":60},"timeoutSeconds":{"type":"integer","minimum":1,"maximum":60,"description":"The time to wait for a response before marking the health check as a failure.","example":1},"failureThreshold":{"type":"integer","minimum":1,"maximum":255,"description":"The maximum number of allowed failures.","example":3},"successThreshold":{"type":"integer","minimum":1,"maximum":255,"description":"The number of successes required to mark the health check as a success.","example":1}},"required":["protocol","type","initialDelaySeconds","periodSeconds","timeoutSeconds","failureThreshold"],"additionalProperties":false,"description":"A health check object."},"description":"An array of health checks."},"loadBalancing":{"type":"object","properties":{"mode":{"type":"string","enum":["leastConnection","consistentHash","roundRobin","consistentReplicaRouting"]},"consistentHash":{"type":"object","properties":{"mode":{"type":"string","enum":["ip","customHeader"]},"header":{"type":"string","nullable":true}},"required":["mode"],"additionalProperties":false},"consistentReplicaRouting":{"type":"object","properties":{"mode":{"type":"string","enum":["path","header"]}},"required":["mode"],"additionalProperties":false}},"required":["mode"],"additionalProperties":false},"autoscaling":{"type":"object","properties":{"horizontal":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether horizontal autoscaling should be enabled","example":true},"minReplicas":{"type":"number","format":"float","minimum":1,"description":"Minimum number of replicas which should be running at any time","example":1},"maxReplicas":{"type":"number","format":"float","description":"Maximum number of replicas which can be running at any time","example":3},"cpu":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether autoscaling should take into account cpu usage"},"thresholdPercentage":{"type":"integer","minimum":10,"maximum":100,"description":"Threshold CPU usage percentage at which the workload will be scaled"}},"required":["enabled","thresholdPercentage"],"additionalProperties":false},"memory":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether autoscaling should take into account memory usage"},"thresholdPercentage":{"type":"integer","minimum":10,"maximum":100,"description":"Threshold memory usage percentage at which the workload will be scaled"}},"required":["enabled","thresholdPercentage"],"additionalProperties":false},"rps":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether autoscaling should take into requests-per-second"},"thresholdValue":{"type":"integer","minimum":1,"description":"Threshold rps value on which the workload will be scaled"}},"required":["enabled","thresholdValue"],"additionalProperties":false},"userMetrics":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether to enable handling for custom metrics in the autoscaling configuration","example":true},"exposedMetricsPath":{"type":"string","pattern":"^\\/([_a-zA-Z0-9-&?=.]*)((\\/[_a-zA-Z0-9-&?=.]+)*(\\/)?)?$","description":"Path on which the metrics will be exposed by the service..","example":"/metrics"},"exposedMetricsPort":{"type":"integer","description":"Port on which the metrics will be exposed by the service.","example":8080},"metrics":{"type":"array","items":{"type":"object","properties":{"metricName":{"type":"string","pattern":"[a-zA-Z_:][a-zA-Z0-9_:]*$","description":"Name of the custom metric","example":"example-metric"},"metricType":{"type":"string","enum":["gauge","counter"],"description":"Type of metric exposed, this will affect how it'll be queried by the autoscaler component: Gauge will be used as is, Counter will be used with rate()","example":"gauge"},"thresholdValue":{"type":"number","format":"float","description":"Threshold value on which the workload will be scaled. Represents the average value across all running pods.","example":2}},"required":["metricName","metricType","thresholdValue"],"additionalProperties":false},"description":"Array of custom metrics exposed by the service that will be used by the autoscaling configuration. At least one metric is required."}},"required":["enabled","exposedMetricsPath","exposedMetricsPort","metrics"],"additionalProperties":false}},"required":["enabled","minReplicas","maxReplicas"],"additionalProperties":false,"description":"Describes the horizontal autoscaling configuration"}},"additionalProperties":false,"description":"Describes all autoscaling configurations"},"createOptions":{"type":"object","properties":{"volumesToAttach":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39}}},"additionalProperties":false},"serviceType":{"type":"string","enum":["combined"],"description":"Type of the service (combined, build or deployment)","example":"combined"},"deployment":{"type":"object","properties":{"type":{"type":"string","enum":["deployment","statefulSet"],"description":"The way the service should be deployed. Either as a deployment (default), or as a stateful set."},"instances":{"type":"integer","minimum":0,"description":"The number of instances to run the service on.","example":1},"buildpack":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customProcess","customCommand","customEntrypointCustomCommand","originalEntrypointCustomCommand"],"description":"Type of buildpack run configuration"},"customProcess":{"type":"string","description":"Custom process which should be run. Required in case where `configType` is `customProcess`"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be run. Required in case where `configType` is `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be run. Required in case where `configType` is `customCommand`, `customEntrypointCustomCommand` or `originalEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of buildpack runtime"},"docker":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customEntrypoint","customCommand","customEntrypointCustomCommand"],"description":"Type of entrypoint & command override configuration","example":"default"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be used. Required in case where `configType` is `customEntrypoint` or `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be used. Required in case where `configType` is `customCommand` or `customEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of docker runtime"},"storage":{"type":"object","properties":{"useHdbStorage":{"type":"boolean"},"usePdSsdStorage":{"type":"boolean"},"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":1024,"description":"Ephemeral storage per container in MB","example":1024}},"additionalProperties":false},"shmSize":{"type":"integer","minimum":64,"description":"Configures the amount of available memory-backed disk space available to /dev/shm"}},"additionalProperties":false},"strategy":{"type":"object","properties":{"type":{"type":"string","enum":["recreate","rollout-steady","rollout-balanced","rollout-fast","custom"],"description":"Configures the instance roll out strategy of your service. Currently only available via feature flag."},"settings":{"type":"object","properties":{"maxSurge":{"oneOf":[{"type":"integer","minimum":0,"description":"A non-negative integer."},{"type":"string","pattern":"^\\d+%$","description":"A percentage string in the range 0% to 100%, e.g. `25%`"}],"description":"Maximum number or percentage of pods that can be created above the desired count."},"maxUnavailable":{"anyOf":[{"type":"integer","minimum":0,"description":"A non-negative integer."},{"type":"string","pattern":"^\\d+%$","description":"A percentage string in the range 0% to 100%, e.g. `25%`"}],"description":"Maximum number or percentage of pods that can be unavailable during the update."}},"required":["maxSurge","maxUnavailable"],"additionalProperties":false}},"additionalProperties":false,"description":"Roll out strategy of the service"},"zonalRedundancy":{"type":"object","properties":{"type":{"type":"string","enum":["disabled","preferred","required"],"description":"Defines scheduling behaviour across different zones within the same region."},"minZones":{"type":"integer","minimum":1,"description":"Defines how many zones are required and will prevent containers from additional scheduling into existing zones. (Only relevant if type is set to \"required\")"}},"additionalProperties":false},"gpu":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"gpuType":{"type":"string"},"gpuCount":{"type":"integer"},"timesliced":{"type":"boolean"}},"required":["gpuType"],"additionalProperties":false}},"additionalProperties":false},"gracePeriodSeconds":{"type":"integer","minimum":15,"maximum":600,"description":"The 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."},"gradualRolloutStrategyId":{"type":"string","pattern":"^[A-Za-z0-9-]+$","nullable":true,"description":"The id of the strategy to be attached to service.","examples":["strategy-id","strategy-id"]},"ssh":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Enables SSH access if the resource matches an SSH identity selector."}},"required":["enabled"],"additionalProperties":false,"description":"Controls related to SSH access within the resource."},"metadata":{"type":"object","properties":{"labels":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom labels for the workload."},"annotations":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom annotations for the workload as string or object."}},"additionalProperties":false,"description":"Allow setting custom labels and annotations for workloads."},"imageUrl":{"type":"string","description":"Image registry url of the deployed image."}},"required":["instances"],"additionalProperties":false},"id":{"type":"string","description":"Identifier for the service","example":"example-service"},"appId":{"type":"string","description":"Full identifier used for service deployment","example":"/example-user/default-project/example-service"},"cluster":{"type":"object","properties":{"id":{"type":"string","description":"The id of the cluster associated with this project.","example":"nf-europe-west"},"name":{"type":"string","description":"The name of the cluster associated with this project.","example":"nf-europe-west"},"namespace":{"type":"string","description":"Namespace this resource is located within on the cluster.","example":"ns-8zy2mcjh9zn2"},"loadBalancers":{"type":"array","items":{"type":"string","example":"lb.659200800000000000000000.northflank.com"},"description":"Load balancer DNS for the cluster."}},"required":["id","name"],"additionalProperties":false,"description":"Cluster information"},"createdAt":{"type":"string","format":"date-time","description":"time of creation"},"updatedAt":{"type":"string","format":"date-time","description":"time of update"},"status":{"type":"object","properties":{"build":{"type":"object","properties":{"status":{"type":"string","enum":["QUEUED","PENDING","UNSCHEDULABLE","STARTING","CLONING","BUILDING","UPLOADING","ABORTED","FAILURE","SUBMISSION_FAILURE","SUCCESS","CRASHED","IN_PROGRESS"],"description":"The current status of the build.","example":"SUCCESS"},"lastTransitionTime":{"type":"string","format":"date-time","description":"The timestamp of when the build reached this status.","example":"2021-11-29T11:47:16.624Z"}},"required":["status"],"additionalProperties":false,"description":"Details about the status of the most recent build."},"deployment":{"type":"object","properties":{"status":{"type":"string","enum":["PENDING","IN_PROGRESS","COMPLETED","FAILED"],"description":"The current status of the deployment.","example":"COMPLETED"},"reason":{"type":"string","enum":["SCALING","DEPLOYING"],"description":"The reason the current deployment was started.","example":"DEPLOYING"},"lastTransitionTime":{"type":"string","format":"date-time","description":"The timestamp of when the deployment reached this status.","example":"2021-11-29T11:47:16.624Z"}},"required":["status","reason"],"additionalProperties":false,"description":"Details about the current deployment status."}},"additionalProperties":false,"description":"Details about the current service status."}},"required":["name","billing","buildSettings","serviceType","deployment","id","appId","cluster","status"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Services","project"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"A description of the service.","example":"A service description"},"stageId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"nullable":true},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"billing":{"type":"object","properties":{"deploymentPlan":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The ID of the deployment plan to use.","example":"nf-compute-20"},"buildPlan":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The ID of the build plan to use.","example":"nf-compute-200-8"},"gpu":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"gpuType":{"type":"string"},"gpuCount":{"type":"integer"},"timesliced":{"type":"boolean"}},"additionalProperties":false}},"additionalProperties":false}},"additionalProperties":false},"deployment":{"type":"object","properties":{"instances":{"type":"integer","minimum":0,"description":"The number of instances to run the service on.","example":1},"buildpack":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customProcess","customCommand","customEntrypointCustomCommand","originalEntrypointCustomCommand"],"description":"Type of buildpack run configuration"},"customProcess":{"type":"string","description":"Custom process which should be run. Required in case where `configType` is `customProcess`"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be run. Required in case where `configType` is `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be run. Required in case where `configType` is `customCommand`, `customEntrypointCustomCommand` or `originalEntrypointCustomCommand`"}},"additionalProperties":false},"docker":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customEntrypoint","customCommand","customEntrypointCustomCommand"],"description":"Type of entrypoint & command override configuration","example":"default"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be used. Required in case where `configType` is `customEntrypoint` or `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be used. Required in case where `configType` is `customCommand` or `customEntrypointCustomCommand`"}},"additionalProperties":false},"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":1024,"description":"Ephemeral storage per container in MB","example":1024}},"additionalProperties":false},"shmSize":{"type":"integer","minimum":64,"description":"Configures the amount of available memory-backed disk space available to /dev/shm"}},"additionalProperties":false},"strategy":{"type":"object","properties":{"type":{"type":"string","enum":["recreate","rollout-steady","rollout-balanced","rollout-fast","custom"],"description":"Configures the instance roll out strategy of your service. Currently only available via feature flag."},"settings":{"type":"object","properties":{"maxSurge":{"oneOf":[{"type":"integer","minimum":0,"description":"A non-negative integer."},{"type":"string","pattern":"^\\d+%$","description":"A percentage string in the range 0% to 100%, e.g. `25%`"}],"description":"Maximum number or percentage of pods that can be created above the desired count."},"maxUnavailable":{"anyOf":[{"type":"integer","minimum":0,"description":"A non-negative integer."},{"type":"string","pattern":"^\\d+%$","description":"A percentage string in the range 0% to 100%, e.g. `25%`"}],"description":"Maximum number or percentage of pods that can be unavailable during the update."}},"required":["maxSurge","maxUnavailable"],"additionalProperties":false}},"additionalProperties":false,"description":"Roll out strategy of the service"},"zonalRedundancy":{"type":"object","properties":{"type":{"type":"string","enum":["disabled","preferred","required"],"description":"Defines scheduling behaviour across different zones within the same region."},"minZones":{"type":"integer","minimum":1,"description":"Defines how many zones are required and will prevent containers from additional scheduling into existing zones. (Only relevant if type is set to \"required\")"}},"additionalProperties":false},"gpu":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"gpuType":{"type":"string"},"gpuCount":{"type":"integer"},"timesliced":{"type":"boolean"}},"additionalProperties":false}},"additionalProperties":false},"gracePeriodSeconds":{"type":"integer","minimum":15,"maximum":600,"description":"The 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."},"gradualRolloutStrategyId":{"type":"string","pattern":"^[A-Za-z0-9-]+$","nullable":true,"description":"The id of the strategy to be attached to service.","examples":["strategy-id","strategy-id"]},"ssh":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Enables SSH access if the resource matches an SSH identity selector."}},"additionalProperties":false},"metadata":{"type":"object","properties":{"labels":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom labels for the workload."},"annotations":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom annotations for the workload as string or object."}},"additionalProperties":false,"description":"Allow setting custom labels and annotations for workloads."}},"additionalProperties":false},"ports":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":1,"maxLength":8,"description":"The name used to identify the port.","example":"p01"},"internalPort":{"type":"integer","minimum":1,"maximum":65535,"description":"The port number.","example":8080},"public":{"type":"boolean","description":"If true, the port will be exposed publicly.","example":true,"default":false},"security":{"type":"object","properties":{"credentials":{"type":"array","items":{"type":"object","properties":{"username":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The username to access the service","example":"admin"},"password":{"type":"string","description":"The password to access the service with this username.","example":"password123"},"type":{"type":"string","enum":["basic-auth"],"description":"The type of authentication used","example":"basic-auth"}},"required":["username","password","type"],"additionalProperties":false},"description":"An array of credentials to access the service."},"ip":{"type":"array","items":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","description":"An IP address used by this rule","example":"127.0.0.1"},"description":"An array of IP addresses used for this rule"},"action":{"type":"string","enum":["ALLOW","DENY"],"description":"The action for this rule.","example":"DENY"}},"required":["addresses","action"],"additionalProperties":false},"description":"An array of IP address policies."},"policies":{"type":"array","items":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","description":"An IP address used by this rule","example":"127.0.0.1"},"description":"An array of IP addresses used for this rule"},"action":{"type":"string","enum":["ALLOW","DENY"],"description":"The action for this rule.","example":"DENY"}},"required":["addresses","action"],"additionalProperties":false},"description":"An array of IP address policies."},"sso":{"type":"object","properties":{"organizationId":{"type":"string","description":"ID of the SSO organization that the user will have to be a member of"},"directoryGroupIds":{"type":"array","items":{"type":"string"},"description":"Array of directory groups that will have access"},"allowAnyOrgUsers":{"type":"boolean","description":"Allow entire organization to access this service"},"validateInternalTraffic":{"type":"boolean","description":"Enforce internal traffic through SSO authentication flow"},"setCookieOnRootDomain":{"type":"boolean","description":"Set SSO authentication cookie on root domain"},"allowInternalTrafficViaPublicDns":{"type":"boolean","description":"Allow internal traffic from same or shared projects via public DNS to skip SSO authentication flow"}},"additionalProperties":false,"description":"Configure port authentication via SSO"},"headers":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"regexMode":{"type":"boolean","example":false,"default":false},"name":{"type":"string","pattern":"^[a-zA-Z0-9_\\-%$+]+$","example":"headerName"},"value":{"type":"string","example":"headerValue"}},"required":["name","value"],"additionalProperties":false,"description":"Matches provided headers as strings."},{"type":"object","properties":{"regexMode":{"type":"boolean","example":true,"default":false},"name":{"type":"string","example":"headerName"},"value":{"type":"string","example":"headerValue"}},"required":["name","value"],"additionalProperties":false,"description":"Matches provided headers as regex."}]},"description":"List of header authentication settings, it checks the presence of all headers and compares it against the expected value. Wildcard (*) is supported."},"verificationMode":{"type":"string","enum":["or","and"],"description":"Mode used to verify multiple security features like ip policies and SSO authentication"},"securePathConfiguration":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Enable security policies on a path-level style"},"skipSecurityPoliciesForInternalTrafficViaPublicDns":{"type":"boolean","description":"Allow internal traffic from same or shared projects via public DNS to skip all security policies"},"rules":{"type":"array","items":{"type":"object","properties":{"paths":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"path":{"type":"string","pattern":"^\\/([_a-zA-Z0-9-&?=.]*)((\\/[_a-zA-Z0-9-&?=.]+)*(\\/)?)?$"},"routingMode":{"type":"string","enum":["prefix"],"description":"Mode of the path, determining how the URI will be interpreted.","example":"prefix"},"priority":{"type":"integer","minimum":0,"maximum":100,"example":80}},"required":["path","routingMode","priority"],"additionalProperties":false,"description":"Route when the path starts with the provided prefix."},{"type":"object","properties":{"path":{"type":"string","pattern":"^\\/([_a-zA-Z0-9-&?=.]*)((\\/[_a-zA-Z0-9-&?=.]+)*(\\/)?)?$"},"routingMode":{"type":"string","enum":["exact"],"description":"Mode of the path, determining how the URI will be interpreted.","example":"exact"},"priority":{"type":"integer","minimum":0,"maximum":100,"example":80}},"required":["path","routingMode","priority"],"additionalProperties":false,"description":"Route when the path is an exact match."},{"type":"object","properties":{"path":{"type":"string"},"routingMode":{"type":"string","enum":["regex"],"description":"Mode of the path, determining how the URI will be interpreted.","example":"regex"},"priority":{"type":"integer","minimum":0,"maximum":100,"example":80}},"required":["path","routingMode","priority"],"additionalProperties":false,"description":"Route when the path matches the provided regex."}],"description":"Data about how the path should be handled."},"description":"Array of path objects which represent the paths and their priority for which the security policies will be enforced"},"accessMode":{"type":"string","enum":["protected","unprotected"],"description":"Specify the way the path rule will behave when processing policies. This enables an allow-list/deny-list approach for access control on each path","example":"protected"},"securityPolicies":{"type":"object","properties":{"orPolicies":{"type":"object","properties":{"credentials":{"type":"array","items":{"type":"object","properties":{"username":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The username to access the service","example":"admin"},"password":{"type":"string","description":"The password to access the service with this username.","example":"password123"},"type":{"type":"string","enum":["basic-auth"],"description":"The type of authentication used","example":"basic-auth"}},"required":["username","password","type"],"additionalProperties":false},"description":"An array of credentials to access the service."},"ip":{"type":"array","items":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","description":"An IP address used by this rule","example":"127.0.0.1"},"description":"An array of IP addresses used for this rule"},"action":{"type":"string","enum":["ALLOW","DENY"],"description":"The action for this rule.","example":"DENY"}},"required":["addresses","action"],"additionalProperties":false},"description":"An array of IP address policies."},"policies":{"type":"array","items":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","description":"An IP address used by this rule","example":"127.0.0.1"},"description":"An array of IP addresses used for this rule"},"action":{"type":"string","enum":["ALLOW","DENY"],"description":"The action for this rule.","example":"DENY"}},"required":["addresses","action"],"additionalProperties":false},"description":"An array of IP address policies."},"sso":{"type":"object","properties":{"organizationId":{"type":"string","description":"ID of the SSO organization that the user will have to be a member of"},"directoryGroupIds":{"type":"array","items":{"type":"string"},"description":"Array of directory groups that will have access"},"allowAnyOrgUsers":{"type":"boolean","description":"Allow entire organization to access this service"},"validateInternalTraffic":{"type":"boolean","description":"Enforce internal traffic through SSO authentication flow"},"setCookieOnRootDomain":{"type":"boolean","description":"Set SSO authentication cookie on root domain"},"allowInternalTrafficViaPublicDns":{"type":"boolean","description":"Allow internal traffic from same or shared projects via public DNS to skip SSO authentication flow"}},"additionalProperties":false,"description":"Configure port authentication via SSO"},"headers":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"regexMode":{"type":"boolean","example":false,"default":false},"name":{"type":"string","pattern":"^[a-zA-Z0-9_\\-%$+]+$","example":"headerName"},"value":{"type":"string","example":"headerValue"}},"required":["name","value"],"additionalProperties":false,"description":"Matches provided headers as strings."},{"type":"object","properties":{"regexMode":{"type":"boolean","example":true,"default":false},"name":{"type":"string","example":"headerName"},"value":{"type":"string","example":"headerValue"}},"required":["name","value"],"additionalProperties":false,"description":"Matches provided headers as regex."}]},"description":"List of header authentication settings, it checks the presence of all headers and compares it against the expected value. Wildcard (*) is supported."}},"additionalProperties":false},"requiredPolicies":{"type":"object","properties":{"credentials":{"type":"array","items":{"type":"object","properties":{"username":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The username to access the service","example":"admin"},"password":{"type":"string","description":"The password to access the service with this username.","example":"password123"},"type":{"type":"string","enum":["basic-auth"],"description":"The type of authentication used","example":"basic-auth"}},"required":["username","password","type"],"additionalProperties":false},"description":"An array of credentials to access the service."},"ip":{"type":"array","items":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","description":"An IP address used by this rule","example":"127.0.0.1"},"description":"An array of IP addresses used for this rule"},"action":{"type":"string","enum":["ALLOW","DENY"],"description":"The action for this rule.","example":"DENY"}},"required":["addresses","action"],"additionalProperties":false},"description":"An array of IP address policies."},"policies":{"type":"array","items":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","description":"An IP address used by this rule","example":"127.0.0.1"},"description":"An array of IP addresses used for this rule"},"action":{"type":"string","enum":["ALLOW","DENY"],"description":"The action for this rule.","example":"DENY"}},"required":["addresses","action"],"additionalProperties":false},"description":"An array of IP address policies."},"sso":{"type":"object","properties":{"organizationId":{"type":"string","description":"ID of the SSO organization that the user will have to be a member of"},"directoryGroupIds":{"type":"array","items":{"type":"string"},"description":"Array of directory groups that will have access"},"allowAnyOrgUsers":{"type":"boolean","description":"Allow entire organization to access this service"},"validateInternalTraffic":{"type":"boolean","description":"Enforce internal traffic through SSO authentication flow"},"setCookieOnRootDomain":{"type":"boolean","description":"Set SSO authentication cookie on root domain"},"allowInternalTrafficViaPublicDns":{"type":"boolean","description":"Allow internal traffic from same or shared projects via public DNS to skip SSO authentication flow"}},"additionalProperties":false,"description":"Configure port authentication via SSO"},"headers":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"regexMode":{"type":"boolean","example":false,"default":false},"name":{"type":"string","pattern":"^[a-zA-Z0-9_\\-%$+]+$","example":"headerName"},"value":{"type":"string","example":"headerValue"}},"required":["name","value"],"additionalProperties":false,"description":"Matches provided headers as strings."},{"type":"object","properties":{"regexMode":{"type":"boolean","example":true,"default":false},"name":{"type":"string","example":"headerName"},"value":{"type":"string","example":"headerValue"}},"required":["name","value"],"additionalProperties":false,"description":"Matches provided headers as regex."}]},"description":"List of header authentication settings, it checks the presence of all headers and compares it against the expected value. Wildcard (*) is supported."}},"additionalProperties":false}},"additionalProperties":false}},"required":["paths","accessMode"],"additionalProperties":false},"default":[]}},"additionalProperties":false}},"additionalProperties":false,"default":{"credentials":[],"policies":[],"sso":{}}},"domains":{"type":"array","items":{"type":"string","description":"A domain to redirect to this port.","example":"app.example.com"},"description":"An array of domains to redirect to this port. Each domain must first be verified and registered to your account.","default":[]},"disableNfDomain":{"type":"boolean","description":"Disable routing on the default code.run domain for public HTTP ports with custom domains.","default":false},"advancedOptions":{"type":"object","properties":{"enableTlsPassthrough":{"type":"boolean","description":"Whether this port should use pass through mode for TLS"}},"additionalProperties":false},"protocol":{"type":"string","enum":["HTTP","HTTP/2","TCP","UDP"],"description":"The protocol to use for the port.","example":"HTTP"}},"required":["name","internalPort","protocol"],"additionalProperties":false}},"disabledCI":{"type":"boolean","description":"Whether CI (continuous integration) should be disabled."},"buildSource":{"type":"string","enum":["git","bundle"],"description":"Defines the build source for this resource","example":"git"},"vcsData":{"type":"object","properties":{"projectUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo to build.","example":"https://github.com/northflank/gatsby-with-northflank"},"projectType":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string","minLength":24,"maxLength":24,"description":"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 `vcsLinkId` is provided, Northflank will instead use your linked account with that ID."},"projectBranch":{"type":"string","description":"The name of the branch to use.","example":"master"}},"additionalProperties":false},"bundleData":{"type":"object","properties":{"bundleUrl":{"type":"string","description":"URL of the bundle to be built","example":"https://example.com/archive.tar"},"branch":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"Branch identifier for the bundle.","example":"main"}},"additionalProperties":false},"buildSettings":{"type":"object","properties":{"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false},"dockerfile":{"type":"object","properties":{"useCache":{"type":"boolean","description":"DEPRECATED: This field will be removed in the near future and currently has no effect."},"buildEngine":{"type":"string","enum":["buildkit","kaniko"],"description":"Build engine to use. Defaults to recommended build engine `buildkit`","example":"buildkit"},"dockerFilePath":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]+$","description":"The file path of the Dockerfile.","example":"/Dockerfile"},"dockerWorkDir":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*$","description":"The working directory of the Dockerfile.","example":"/"},"buildkit":{"type":"object","properties":{"useCache":{"type":"boolean","description":"Use persistent storage to cache build layers.","example":true},"cacheStorageSize":{"type":"integer","description":"The amount of persistent storage available to each build in MB.","example":32768},"useInternalCache":{"type":"boolean","description":"DEPRECATED: This field will be removed in the near future."},"internalCacheStorage":{"type":"number","format":"float","description":"DEPRECATED: This field will be removed in the near future."}},"additionalProperties":false}},"additionalProperties":false},"buildpack":{"type":"object","properties":{"builder":{"type":"string","enum":["HEROKU_24","HEROKU_22","HEROKU_22_CLASSIC","HEROKU_20","HEROKU_18","GOOGLE_22","GOOGLE_V1","CNB_ALPINE","CNB_BIONIC","PAKETO_JAMMY_TINY","PAKETO_JAMMY_BASE","PAKETO_JAMMY_FULL","PAKETO_TINY","PAKETO_BASE","PAKETO_FULL"],"description":"Buildpack stack to use. Defaults to recommended stack `HEROKU_24`.","example":"HEROKU_24"},"buildpackLocators":{"type":"array","items":{"type":"string","description":"Url or registry identifier of custom Buildpack.","example":"https://buildpack-registry.heroku.com/cnb/mars/create-react-app"},"description":"Array of custom Buildpacks to use."},"buildContext":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*$","description":"The working directory to build in.","example":"/"},"useCache":{"type":"boolean","description":"Should build dependencies be cached?","example":false}},"additionalProperties":false}},"additionalProperties":false},"buildConfiguration":{"type":"object","properties":{"pathIgnoreRules":{"type":"array","items":{"type":"string","maxLength":260,"description":"A path ignore rule, following `.gitignore` syntax. For example, `*.md` will ignore all files ending with `.md`.","example":"README.md"},"maxItems":200,"description":"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."},"isAllowList":{"type":"boolean","description":"If `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`.","example":false},"ciIgnoreFlagsEnabled":{"type":"boolean","description":"If `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":{"type":"array","items":{"type":"string","maxLength":72,"description":"A commit ignore flag.","example":"[skip ci]"},"maxItems":200,"description":"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]\"]`","example":["[skip ci]","[ci skip]","[no ci]","[skip nf]","[nf skip]","[northflank skip]","[skip northflank]"]},"dockerfileTarget":{"type":"string","description":"If your Dockerfile contains multiple build stages, you can specify the target stage by entering its name here."},"dockerCredentials":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The ID of the docker credentials to use.","example":"example-docker-credential"}},"includeGitFolder":{"type":"boolean","description":"Include .git folder inside the build context"},"fullGitClone":{"type":"boolean","description":"Include the entire git history as part of the .git folder. Only relevant if \"includeGitFolder\" is set."},"enableGitLfs":{"type":"boolean","description":"Enable Git LFS support for the build"},"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false}},"additionalProperties":false},"runtimeEnvironment":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"An object containing the runtime environment to set for the service. Keys may only contain letters, numbers, hyphens, forward slashes and dots.","example":{"VARIABLE_1":"abcdef","VARIABLE_2":"12345"}},"runtimeFiles":{"type":"object","properties":{},"description":"Secret files as JSON object, encrypted at rest. File path must be absolute","example":{"/dir/fileName":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"buildArguments":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"An object containing the build arguments to set for the service. Keys may only contain letters, numbers, hyphens, forward slashes and dots.","example":{"ARGUMENT_1":"abcdef","ARGUMENT_2":"12345"}},"buildFiles":{"type":"object","properties":{},"description":"Secret files as JSON object, encrypted at rest. File path must be absolute","example":{"/dir/fileName":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"dockerSecretMounts":{"type":"object","properties":{},"description":"Docker secret mount contents as JSON object, encrypted at rest. Must be a valid Docker secret mount identifier","example":{"example-secret-mount_1":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"healthChecks":{"type":"array","items":{"type":"object","properties":{"protocol":{"type":"string","enum":["HTTP","CMD","TCP"],"description":"The protocol to access the health check with.","example":"HTTP"},"type":{"type":"string","enum":["livenessProbe","readinessProbe","startupProbe"],"description":"The type of health check.","example":"readinessProbe"},"path":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*((\\?([a-zA-Z0-9-._]+(=[a-zA-Z0-9-._]+)?)*)(&([a-zA-Z0-9-._]+(=[a-zA-Z0-9-._]+)?)*)*)?$","description":"The path of the health check endpoint. Required when protocol is HTTP.","example":"/health-check"},"cmd":{"type":"string","description":"The command to run for the health check. Required when protocol is CMD"},"port":{"type":"integer","minimum":1,"description":"Port number for the health check endpoint. Required when protocol is HTTP.","example":8080},"initialDelaySeconds":{"type":"integer","minimum":1,"maximum":180,"description":"Initial delay, in seconds, before the health check is first run.","example":10},"periodSeconds":{"type":"integer","minimum":10,"maximum":600,"description":"The time between each check, in seconds.","example":60},"timeoutSeconds":{"type":"integer","minimum":1,"maximum":60,"description":"The time to wait for a response before marking the health check as a failure.","example":1},"failureThreshold":{"type":"integer","minimum":1,"maximum":255,"description":"The maximum number of allowed failures.","example":3},"successThreshold":{"type":"integer","minimum":1,"maximum":255,"description":"The number of successes required to mark the health check as a success.","example":1}},"required":["protocol","type","initialDelaySeconds","periodSeconds","timeoutSeconds","failureThreshold"],"additionalProperties":false,"description":"A health check object."},"description":"An array of health checks."},"loadBalancing":{"type":"object","properties":{"mode":{"type":"string","enum":["leastConnection","consistentHash","roundRobin","consistentReplicaRouting"]},"consistentHash":{"type":"object","properties":{"mode":{"type":"string","enum":["ip","customHeader"]},"header":{"type":"string","nullable":true}},"required":["mode"],"additionalProperties":false},"consistentReplicaRouting":{"type":"object","properties":{"mode":{"type":"string","enum":["path","header"]}},"required":["mode"],"additionalProperties":false}},"additionalProperties":false},"autoscaling":{"type":"object","properties":{"horizontal":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether horizontal autoscaling should be enabled","example":true},"minReplicas":{"type":"number","format":"float","minimum":1,"description":"Minimum number of replicas which should be running at any time","example":1},"maxReplicas":{"type":"number","format":"float","description":"Maximum number of replicas which can be running at any time","example":3},"cpu":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether autoscaling should take into account cpu usage"},"thresholdPercentage":{"type":"integer","minimum":10,"maximum":100,"description":"Threshold CPU usage percentage at which the workload will be scaled"}},"additionalProperties":false},"memory":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether autoscaling should take into account memory usage"},"thresholdPercentage":{"type":"integer","minimum":10,"maximum":100,"description":"Threshold memory usage percentage at which the workload will be scaled"}},"additionalProperties":false},"rps":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether autoscaling should take into requests-per-second"},"thresholdValue":{"type":"integer","minimum":1,"description":"Threshold rps value on which the workload will be scaled"}},"additionalProperties":false},"userMetrics":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether to enable handling for custom metrics in the autoscaling configuration","example":true},"exposedMetricsPath":{"type":"string","pattern":"^\\/([_a-zA-Z0-9-&?=.]*)((\\/[_a-zA-Z0-9-&?=.]+)*(\\/)?)?$","description":"Path on which the metrics will be exposed by the service..","example":"/metrics"},"exposedMetricsPort":{"type":"integer","description":"Port on which the metrics will be exposed by the service.","example":8080},"metrics":{"type":"array","items":{"type":"object","properties":{"metricName":{"type":"string","pattern":"[a-zA-Z_:][a-zA-Z0-9_:]*$","description":"Name of the custom metric","example":"example-metric"},"metricType":{"type":"string","enum":["gauge","counter"],"description":"Type of metric exposed, this will affect how it'll be queried by the autoscaler component: Gauge will be used as is, Counter will be used with rate()","example":"gauge"},"thresholdValue":{"type":"number","format":"float","description":"Threshold value on which the workload will be scaled. Represents the average value across all running pods.","example":2}},"required":["metricName","metricType","thresholdValue"],"additionalProperties":false},"description":"Array of custom metrics exposed by the service that will be used by the autoscaling configuration. At least one metric is required."}},"additionalProperties":false}},"additionalProperties":false}},"additionalProperties":false}},"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Project > Services > General > Update","x-nf-team-scoped":true,"x-nf-subheading":"patch service","x-nf-cli-command":["patch","service","combined"]},"v1-projects--projectId--services-deployment-post":{"operationId":"postProjectsServicesDeployment","summary":"Create deployment service","description":"Creates a new deployment service.","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}}],"responses":{"200":{"description":"Details about the newly created service.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":54,"description":"The name of the service.","example":"Example Service"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"A description of the service.","example":"A service description"},"stageId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"billing":{"type":"object","properties":{"deploymentPlan":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The ID of the deployment plan to use.","example":"nf-compute-20"},"gpu":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"gpuType":{"type":"string"},"gpuCount":{"type":"integer"},"timesliced":{"type":"boolean"}},"required":["gpuType"],"additionalProperties":false}},"additionalProperties":false}},"required":["deploymentPlan"],"additionalProperties":false},"infrastructure":{"type":"object","properties":{"architecture":{"type":"string","enum":["x86","arm"]}},"additionalProperties":false},"ports":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":1,"maxLength":8,"description":"The name used to identify the port.","example":"p01"},"internalPort":{"type":"integer","minimum":1,"maximum":65535,"description":"The port number.","example":8080},"public":{"type":"boolean","description":"If true, the port will be exposed publicly.","example":true,"default":false},"security":{"type":"object","properties":{"credentials":{"type":"array","items":{"type":"object","properties":{"username":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The username to access the service","example":"admin"},"password":{"type":"string","description":"The password to access the service with this username.","example":"password123"},"type":{"type":"string","enum":["basic-auth"],"description":"The type of authentication used","example":"basic-auth"}},"required":["username","password","type"],"additionalProperties":false},"description":"An array of credentials to access the service."},"ip":{"type":"array","items":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","description":"An IP address used by this rule","example":"127.0.0.1"},"description":"An array of IP addresses used for this rule"},"action":{"type":"string","enum":["ALLOW","DENY"],"description":"The action for this rule.","example":"DENY"}},"required":["addresses","action"],"additionalProperties":false},"description":"An array of IP address policies."},"policies":{"type":"array","items":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","description":"An IP address used by this rule","example":"127.0.0.1"},"description":"An array of IP addresses used for this rule"},"action":{"type":"string","enum":["ALLOW","DENY"],"description":"The action for this rule.","example":"DENY"}},"required":["addresses","action"],"additionalProperties":false},"description":"An array of IP address policies."},"sso":{"type":"object","properties":{"organizationId":{"type":"string","description":"ID of the SSO organization that the user will have to be a member of"},"directoryGroupIds":{"type":"array","items":{"type":"string"},"description":"Array of directory groups that will have access"},"allowAnyOrgUsers":{"type":"boolean","description":"Allow entire organization to access this service"},"validateInternalTraffic":{"type":"boolean","description":"Enforce internal traffic through SSO authentication flow"},"setCookieOnRootDomain":{"type":"boolean","description":"Set SSO authentication cookie on root domain"},"allowInternalTrafficViaPublicDns":{"type":"boolean","description":"Allow internal traffic from same or shared projects via public DNS to skip SSO authentication flow"}},"additionalProperties":false,"description":"Configure port authentication via SSO"},"headers":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"regexMode":{"type":"boolean","example":false,"default":false},"name":{"type":"string","pattern":"^[a-zA-Z0-9_\\-%$+]+$","example":"headerName"},"value":{"type":"string","example":"headerValue"}},"required":["name","value"],"additionalProperties":false,"description":"Matches provided headers as strings."},{"type":"object","properties":{"regexMode":{"type":"boolean","example":true,"default":false},"name":{"type":"string","example":"headerName"},"value":{"type":"string","example":"headerValue"}},"required":["name","value"],"additionalProperties":false,"description":"Matches provided headers as regex."}]},"description":"List of header authentication settings, it checks the presence of all headers and compares it against the expected value. Wildcard (*) is supported."},"verificationMode":{"type":"string","enum":["or","and"],"description":"Mode used to verify multiple security features like ip policies and SSO authentication"},"securePathConfiguration":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Enable security policies on a path-level style"},"skipSecurityPoliciesForInternalTrafficViaPublicDns":{"type":"boolean","description":"Allow internal traffic from same or shared projects via public DNS to skip all security policies"},"rules":{"type":"array","items":{"type":"object","properties":{"paths":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"path":{"type":"string","pattern":"^\\/([_a-zA-Z0-9-&?=.]*)((\\/[_a-zA-Z0-9-&?=.]+)*(\\/)?)?$"},"routingMode":{"type":"string","enum":["prefix"],"description":"Mode of the path, determining how the URI will be interpreted.","example":"prefix"},"priority":{"type":"integer","minimum":0,"maximum":100,"example":80}},"required":["path","routingMode","priority"],"additionalProperties":false,"description":"Route when the path starts with the provided prefix."},{"type":"object","properties":{"path":{"type":"string","pattern":"^\\/([_a-zA-Z0-9-&?=.]*)((\\/[_a-zA-Z0-9-&?=.]+)*(\\/)?)?$"},"routingMode":{"type":"string","enum":["exact"],"description":"Mode of the path, determining how the URI will be interpreted.","example":"exact"},"priority":{"type":"integer","minimum":0,"maximum":100,"example":80}},"required":["path","routingMode","priority"],"additionalProperties":false,"description":"Route when the path is an exact match."},{"type":"object","properties":{"path":{"type":"string"},"routingMode":{"type":"string","enum":["regex"],"description":"Mode of the path, determining how the URI will be interpreted.","example":"regex"},"priority":{"type":"integer","minimum":0,"maximum":100,"example":80}},"required":["path","routingMode","priority"],"additionalProperties":false,"description":"Route when the path matches the provided regex."}],"description":"Data about how the path should be handled."},"description":"Array of path objects which represent the paths and their priority for which the security policies will be enforced"},"accessMode":{"type":"string","enum":["protected","unprotected"],"description":"Specify the way the path rule will behave when processing policies. This enables an allow-list/deny-list approach for access control on each path","example":"protected"},"securityPolicies":{"type":"object","properties":{"orPolicies":{"type":"object","properties":{"credentials":{"type":"array","items":{"type":"object","properties":{"username":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The username to access the service","example":"admin"},"password":{"type":"string","description":"The password to access the service with this username.","example":"password123"},"type":{"type":"string","enum":["basic-auth"],"description":"The type of authentication used","example":"basic-auth"}},"required":["username","password","type"],"additionalProperties":false},"description":"An array of credentials to access the service."},"ip":{"type":"array","items":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","description":"An IP address used by this rule","example":"127.0.0.1"},"description":"An array of IP addresses used for this rule"},"action":{"type":"string","enum":["ALLOW","DENY"],"description":"The action for this rule.","example":"DENY"}},"required":["addresses","action"],"additionalProperties":false},"description":"An array of IP address policies."},"policies":{"type":"array","items":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","description":"An IP address used by this rule","example":"127.0.0.1"},"description":"An array of IP addresses used for this rule"},"action":{"type":"string","enum":["ALLOW","DENY"],"description":"The action for this rule.","example":"DENY"}},"required":["addresses","action"],"additionalProperties":false},"description":"An array of IP address policies."},"sso":{"type":"object","properties":{"organizationId":{"type":"string","description":"ID of the SSO organization that the user will have to be a member of"},"directoryGroupIds":{"type":"array","items":{"type":"string"},"description":"Array of directory groups that will have access"},"allowAnyOrgUsers":{"type":"boolean","description":"Allow entire organization to access this service"},"validateInternalTraffic":{"type":"boolean","description":"Enforce internal traffic through SSO authentication flow"},"setCookieOnRootDomain":{"type":"boolean","description":"Set SSO authentication cookie on root domain"},"allowInternalTrafficViaPublicDns":{"type":"boolean","description":"Allow internal traffic from same or shared projects via public DNS to skip SSO authentication flow"}},"additionalProperties":false,"description":"Configure port authentication via SSO"},"headers":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"regexMode":{"type":"boolean","example":false,"default":false},"name":{"type":"string","pattern":"^[a-zA-Z0-9_\\-%$+]+$","example":"headerName"},"value":{"type":"string","example":"headerValue"}},"required":["name","value"],"additionalProperties":false,"description":"Matches provided headers as strings."},{"type":"object","properties":{"regexMode":{"type":"boolean","example":true,"default":false},"name":{"type":"string","example":"headerName"},"value":{"type":"string","example":"headerValue"}},"required":["name","value"],"additionalProperties":false,"description":"Matches provided headers as regex."}]},"description":"List of header authentication settings, it checks the presence of all headers and compares it against the expected value. Wildcard (*) is supported."}},"additionalProperties":false},"requiredPolicies":{"type":"object","properties":{"credentials":{"type":"array","items":{"type":"object","properties":{"username":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The username to access the service","example":"admin"},"password":{"type":"string","description":"The password to access the service with this username.","example":"password123"},"type":{"type":"string","enum":["basic-auth"],"description":"The type of authentication used","example":"basic-auth"}},"required":["username","password","type"],"additionalProperties":false},"description":"An array of credentials to access the service."},"ip":{"type":"array","items":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","description":"An IP address used by this rule","example":"127.0.0.1"},"description":"An array of IP addresses used for this rule"},"action":{"type":"string","enum":["ALLOW","DENY"],"description":"The action for this rule.","example":"DENY"}},"required":["addresses","action"],"additionalProperties":false},"description":"An array of IP address policies."},"policies":{"type":"array","items":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","description":"An IP address used by this rule","example":"127.0.0.1"},"description":"An array of IP addresses used for this rule"},"action":{"type":"string","enum":["ALLOW","DENY"],"description":"The action for this rule.","example":"DENY"}},"required":["addresses","action"],"additionalProperties":false},"description":"An array of IP address policies."},"sso":{"type":"object","properties":{"organizationId":{"type":"string","description":"ID of the SSO organization that the user will have to be a member of"},"directoryGroupIds":{"type":"array","items":{"type":"string"},"description":"Array of directory groups that will have access"},"allowAnyOrgUsers":{"type":"boolean","description":"Allow entire organization to access this service"},"validateInternalTraffic":{"type":"boolean","description":"Enforce internal traffic through SSO authentication flow"},"setCookieOnRootDomain":{"type":"boolean","description":"Set SSO authentication cookie on root domain"},"allowInternalTrafficViaPublicDns":{"type":"boolean","description":"Allow internal traffic from same or shared projects via public DNS to skip SSO authentication flow"}},"additionalProperties":false,"description":"Configure port authentication via SSO"},"headers":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"regexMode":{"type":"boolean","example":false,"default":false},"name":{"type":"string","pattern":"^[a-zA-Z0-9_\\-%$+]+$","example":"headerName"},"value":{"type":"string","example":"headerValue"}},"required":["name","value"],"additionalProperties":false,"description":"Matches provided headers as strings."},{"type":"object","properties":{"regexMode":{"type":"boolean","example":true,"default":false},"name":{"type":"string","example":"headerName"},"value":{"type":"string","example":"headerValue"}},"required":["name","value"],"additionalProperties":false,"description":"Matches provided headers as regex."}]},"description":"List of header authentication settings, it checks the presence of all headers and compares it against the expected value. Wildcard (*) is supported."}},"additionalProperties":false}},"additionalProperties":false}},"required":["paths","accessMode"],"additionalProperties":false},"default":[]}},"additionalProperties":false}},"additionalProperties":false,"default":{"credentials":[],"policies":[],"sso":{}}},"domains":{"type":"array","items":{"type":"string","description":"A domain to redirect to this port.","example":"app.example.com"},"description":"An array of domains to redirect to this port. Each domain must first be verified and registered to your account.","default":[]},"disableNfDomain":{"type":"boolean","description":"Disable routing on the default code.run domain for public HTTP ports with custom domains.","default":false},"advancedOptions":{"type":"object","properties":{"enableTlsPassthrough":{"type":"boolean","description":"Whether this port should use pass through mode for TLS"}},"additionalProperties":false},"protocol":{"type":"string","oneOf":[{"type":"string","enum":["HTTP","HTTP/2"]},{"type":"string","enum":["HTTP","HTTP/2","TCP","UDP"]}],"description":"The protocol to use for the port.","example":"HTTP"}},"required":["name","internalPort","protocol"],"additionalProperties":false},"default":[]},"runtimeEnvironment":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"An object containing the runtime environment to set for the service","example":{"VARIABLE_1":"abcdef","VARIABLE_2":"12345"},"default":{}},"runtimeFiles":{"type":"object","properties":{},"description":"Secret files as JSON object, encrypted at rest. File path must be absolute","example":{"/dir/fileName":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"healthChecks":{"type":"array","items":{"type":"object","properties":{"protocol":{"type":"string","enum":["HTTP","CMD","TCP"],"description":"The protocol to access the health check with.","example":"HTTP"},"type":{"type":"string","enum":["livenessProbe","readinessProbe","startupProbe"],"description":"The type of health check.","example":"readinessProbe"},"path":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*((\\?([a-zA-Z0-9-._]+(=[a-zA-Z0-9-._]+)?)*)(&([a-zA-Z0-9-._]+(=[a-zA-Z0-9-._]+)?)*)*)?$","description":"The path of the health check endpoint. Required when protocol is HTTP.","example":"/health-check"},"cmd":{"type":"string","description":"The command to run for the health check. Required when protocol is CMD"},"port":{"type":"integer","minimum":1,"description":"Port number for the health check endpoint. Required when protocol is HTTP.","example":8080},"initialDelaySeconds":{"type":"integer","minimum":1,"maximum":180,"description":"Initial delay, in seconds, before the health check is first run.","example":10},"periodSeconds":{"type":"integer","minimum":10,"maximum":600,"description":"The time between each check, in seconds.","example":60},"timeoutSeconds":{"type":"integer","minimum":1,"maximum":60,"description":"The time to wait for a response before marking the health check as a failure.","example":1},"failureThreshold":{"type":"integer","minimum":1,"maximum":255,"description":"The maximum number of allowed failures.","example":3},"successThreshold":{"type":"integer","minimum":1,"maximum":255,"description":"The number of successes required to mark the health check as a success.","example":1}},"required":["protocol","type","initialDelaySeconds","periodSeconds","timeoutSeconds","failureThreshold"],"additionalProperties":false,"description":"A health check object."},"description":"An array of health checks."},"loadBalancing":{"type":"object","properties":{"mode":{"type":"string","enum":["leastConnection","consistentHash","roundRobin","consistentReplicaRouting"]},"consistentHash":{"type":"object","properties":{"mode":{"type":"string","enum":["ip","customHeader"]},"header":{"type":"string","nullable":true}},"required":["mode"],"additionalProperties":false},"consistentReplicaRouting":{"type":"object","properties":{"mode":{"type":"string","enum":["path","header"]}},"required":["mode"],"additionalProperties":false}},"required":["mode"],"additionalProperties":false},"autoscaling":{"type":"object","properties":{"horizontal":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether horizontal autoscaling should be enabled","example":true},"minReplicas":{"type":"number","format":"float","minimum":1,"description":"Minimum number of replicas which should be running at any time","example":1},"maxReplicas":{"type":"number","format":"float","description":"Maximum number of replicas which can be running at any time","example":3},"cpu":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether autoscaling should take into account cpu usage"},"thresholdPercentage":{"type":"integer","minimum":10,"maximum":100,"description":"Threshold CPU usage percentage at which the workload will be scaled"}},"required":["enabled","thresholdPercentage"],"additionalProperties":false},"memory":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether autoscaling should take into account memory usage"},"thresholdPercentage":{"type":"integer","minimum":10,"maximum":100,"description":"Threshold memory usage percentage at which the workload will be scaled"}},"required":["enabled","thresholdPercentage"],"additionalProperties":false},"rps":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether autoscaling should take into requests-per-second"},"thresholdValue":{"type":"integer","minimum":1,"description":"Threshold rps value on which the workload will be scaled"}},"required":["enabled","thresholdValue"],"additionalProperties":false},"userMetrics":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether to enable handling for custom metrics in the autoscaling configuration","example":true},"exposedMetricsPath":{"type":"string","pattern":"^\\/([_a-zA-Z0-9-&?=.]*)((\\/[_a-zA-Z0-9-&?=.]+)*(\\/)?)?$","description":"Path on which the metrics will be exposed by the service..","example":"/metrics"},"exposedMetricsPort":{"type":"integer","description":"Port on which the metrics will be exposed by the service.","example":8080},"metrics":{"type":"array","items":{"type":"object","properties":{"metricName":{"type":"string","pattern":"[a-zA-Z_:][a-zA-Z0-9_:]*$","description":"Name of the custom metric","example":"example-metric"},"metricType":{"type":"string","enum":["gauge","counter"],"description":"Type of metric exposed, this will affect how it'll be queried by the autoscaler component: Gauge will be used as is, Counter will be used with rate()","example":"gauge"},"thresholdValue":{"type":"number","format":"float","description":"Threshold value on which the workload will be scaled. Represents the average value across all running pods.","example":2}},"required":["metricName","metricType","thresholdValue"],"additionalProperties":false},"description":"Array of custom metrics exposed by the service that will be used by the autoscaling configuration. At least one metric is required."}},"required":["enabled","exposedMetricsPath","exposedMetricsPort","metrics"],"additionalProperties":false}},"required":["enabled","minReplicas","maxReplicas"],"additionalProperties":false,"description":"Describes the horizontal autoscaling configuration"}},"additionalProperties":false,"description":"Describes all autoscaling configurations"},"createOptions":{"type":"object","properties":{"volumesToAttach":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39}}},"additionalProperties":false},"serviceType":{"type":"string","enum":["deployment"],"description":"Type of the service (combined, build or deployment)","example":"deployment"},"deployment":{"type":"object","properties":{"type":{"type":"string","enum":["deployment","statefulSet"],"description":"The way the service should be deployed. Either as a deployment (default), or as a stateful set."},"instances":{"type":"integer","minimum":0,"description":"The number of instances to run the service on.","example":1},"buildpack":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customProcess","customCommand","customEntrypointCustomCommand","originalEntrypointCustomCommand"],"description":"Type of buildpack run configuration"},"customProcess":{"type":"string","description":"Custom process which should be run. Required in case where `configType` is `customProcess`"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be run. Required in case where `configType` is `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be run. Required in case where `configType` is `customCommand`, `customEntrypointCustomCommand` or `originalEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of buildpack runtime"},"docker":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customEntrypoint","customCommand","customEntrypointCustomCommand"],"description":"Type of entrypoint & command override configuration","example":"default"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be used. Required in case where `configType` is `customEntrypoint` or `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be used. Required in case where `configType` is `customCommand` or `customEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of docker runtime"},"storage":{"type":"object","properties":{"useHdbStorage":{"type":"boolean"},"usePdSsdStorage":{"type":"boolean"},"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":1024,"description":"Ephemeral storage per container in MB","example":1024}},"additionalProperties":false},"shmSize":{"type":"integer","minimum":64,"description":"Configures the amount of available memory-backed disk space available to /dev/shm"}},"additionalProperties":false},"strategy":{"type":"object","properties":{"type":{"type":"string","enum":["recreate","rollout-steady","rollout-balanced","rollout-fast","custom"],"description":"Configures the instance roll out strategy of your service. Currently only available via feature flag."},"settings":{"type":"object","properties":{"maxSurge":{"oneOf":[{"type":"integer","minimum":0,"description":"A non-negative integer."},{"type":"string","pattern":"^\\d+%$","description":"A percentage string in the range 0% to 100%, e.g. `25%`"}],"description":"Maximum number or percentage of pods that can be created above the desired count."},"maxUnavailable":{"anyOf":[{"type":"integer","minimum":0,"description":"A non-negative integer."},{"type":"string","pattern":"^\\d+%$","description":"A percentage string in the range 0% to 100%, e.g. `25%`"}],"description":"Maximum number or percentage of pods that can be unavailable during the update."}},"required":["maxSurge","maxUnavailable"],"additionalProperties":false}},"additionalProperties":false,"description":"Roll out strategy of the service"},"zonalRedundancy":{"type":"object","properties":{"type":{"type":"string","enum":["disabled","preferred","required"],"description":"Defines scheduling behaviour across different zones within the same region."},"minZones":{"type":"integer","minimum":1,"description":"Defines how many zones are required and will prevent containers from additional scheduling into existing zones. (Only relevant if type is set to \"required\")"}},"additionalProperties":false},"gpu":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"gpuType":{"type":"string"},"gpuCount":{"type":"integer"},"timesliced":{"type":"boolean"}},"required":["gpuType"],"additionalProperties":false}},"additionalProperties":false},"gracePeriodSeconds":{"type":"integer","minimum":15,"maximum":600,"description":"The 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."},"gradualRolloutStrategyId":{"type":"string","pattern":"^[A-Za-z0-9-]+$","nullable":true,"description":"The id of the strategy to be attached to service.","examples":["strategy-id","strategy-id"]},"ssh":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Enables SSH access if the resource matches an SSH identity selector."}},"required":["enabled"],"additionalProperties":false,"description":"Controls related to SSH access within the resource."},"metadata":{"type":"object","properties":{"labels":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom labels for the workload."},"annotations":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom annotations for the workload as string or object."}},"additionalProperties":false,"description":"Allow setting custom labels and annotations for workloads."},"internal":{"type":"object","properties":{"id":{"anyOf":[{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":54,"example":"example-build-service"},{"type":"string","example":"example-project/example-build-service"}],"description":"ID of the build service to deploy"},"branch":{"type":"string","description":"Branch to deploy","example":"master"},"buildSHA":{"oneOf":[{"type":"string","minLength":40,"maxLength":40,"description":"A commit sha."},{"type":"string","enum":["latest"],"description":"Latest commit."}],"description":"Commit SHA to deploy, or 'latest' to deploy the most recent commit","example":"latest"},"buildId":{"type":"string","description":"ID of the build that should be deployed","example":"premium-guide-6393"}},"additionalProperties":false},"external":{"type":"object","properties":{"imagePath":{"type":"string","pattern":"^(?:(?:https?:\\/\\/)?([a-zA-Z0-9\\-]+\\.[a-zA-Z0-9\\.\\-]+)(\\/v1)?)?(?:\\/)?([a-zA-Z/-9\\.\\-_]+)(?:\\:([a-zA-Z/-9\\.\\-_\\:]+)|\\@([a-zA-Z/-9\\.\\-_\\:]+))$","description":"Image to be deployed. When not deploying from Dockerhub the URL must be specified.","example":"nginx:latest"},"credentials":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"ID of the saved credentials to use to access this external image.","example":"example-credentials"}},"required":["imagePath"],"additionalProperties":false},"imageUrl":{"type":"string","description":"Image registry url of the deployed image."}},"required":["instances"],"additionalProperties":false},"id":{"type":"string","description":"Identifier for the service","example":"example-service"},"appId":{"type":"string","description":"Full identifier used for service deployment","example":"/example-user/default-project/example-service"},"cluster":{"type":"object","properties":{"id":{"type":"string","description":"The id of the cluster associated with this project.","example":"nf-europe-west"},"name":{"type":"string","description":"The name of the cluster associated with this project.","example":"nf-europe-west"},"namespace":{"type":"string","description":"Namespace this resource is located within on the cluster.","example":"ns-8zy2mcjh9zn2"},"loadBalancers":{"type":"array","items":{"type":"string","example":"lb.659200800000000000000000.northflank.com"},"description":"Load balancer DNS for the cluster."}},"required":["id","name"],"additionalProperties":false,"description":"Cluster information"},"createdAt":{"type":"string","format":"date-time","description":"time of creation"},"updatedAt":{"type":"string","format":"date-time","description":"time of update"},"status":{"type":"object","properties":{"deployment":{"type":"object","properties":{"status":{"type":"string","enum":["PENDING","IN_PROGRESS","COMPLETED","FAILED"],"description":"The current status of the deployment.","example":"COMPLETED"},"reason":{"type":"string","enum":["SCALING","DEPLOYING"],"description":"The reason the current deployment was started.","example":"DEPLOYING"},"lastTransitionTime":{"type":"string","format":"date-time","description":"The timestamp of when the deployment reached this status.","example":"2021-11-29T11:47:16.624Z"}},"required":["status","reason"],"additionalProperties":false,"description":"Details about the current deployment status."}},"additionalProperties":false,"description":"Details about the current service status."}},"required":["name","billing","serviceType","deployment","id","appId","cluster","status"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}},"400":{"description":"Unable to verify external image"},"409":{"description":"There is already a service with the same derived identifier"}},"tags":["Services","project"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":54,"description":"The name of the service.","example":"Example Service"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"A description of the service.","example":"A service description"},"stageId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"billing":{"type":"object","properties":{"deploymentPlan":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The ID of the deployment plan to use.","example":"nf-compute-20"},"gpu":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"gpuType":{"type":"string"},"gpuCount":{"type":"integer"},"timesliced":{"type":"boolean"}},"required":["gpuType"],"additionalProperties":false}},"additionalProperties":false}},"required":["deploymentPlan"],"additionalProperties":false},"infrastructure":{"type":"object","properties":{"architecture":{"type":"string","enum":["x86","arm"]}},"additionalProperties":false},"deployment":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["deployment","statefulSet"],"description":"The way the service should be deployed. Either as a deployment (default), or as a stateful set."},"instances":{"type":"integer","minimum":0,"description":"The number of instances to run the service on.","example":1},"buildpack":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customProcess","customCommand","customEntrypointCustomCommand","originalEntrypointCustomCommand"],"description":"Type of buildpack run configuration"},"customProcess":{"type":"string","description":"Custom process which should be run. Required in case where `configType` is `customProcess`"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be run. Required in case where `configType` is `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be run. Required in case where `configType` is `customCommand`, `customEntrypointCustomCommand` or `originalEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of buildpack runtime"},"docker":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customEntrypoint","customCommand","customEntrypointCustomCommand"],"description":"Type of entrypoint & command override configuration","example":"default"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be used. Required in case where `configType` is `customEntrypoint` or `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be used. Required in case where `configType` is `customCommand` or `customEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of docker runtime"},"storage":{"type":"object","properties":{"useHdbStorage":{"type":"boolean"},"usePdSsdStorage":{"type":"boolean"},"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":1024,"description":"Ephemeral storage per container in MB","example":1024}},"additionalProperties":false},"shmSize":{"type":"integer","minimum":64,"description":"Configures the amount of available memory-backed disk space available to /dev/shm"}},"additionalProperties":false},"strategy":{"type":"object","properties":{"type":{"type":"string","enum":["recreate","rollout-steady","rollout-balanced","rollout-fast","custom"],"description":"Configures the instance roll out strategy of your service. Currently only available via feature flag."},"settings":{"type":"object","properties":{"maxSurge":{"oneOf":[{"type":"integer","minimum":0,"description":"A non-negative integer."},{"type":"string","pattern":"^\\d+%$","description":"A percentage string in the range 0% to 100%, e.g. `25%`"}],"description":"Maximum number or percentage of pods that can be created above the desired count."},"maxUnavailable":{"anyOf":[{"type":"integer","minimum":0,"description":"A non-negative integer."},{"type":"string","pattern":"^\\d+%$","description":"A percentage string in the range 0% to 100%, e.g. `25%`"}],"description":"Maximum number or percentage of pods that can be unavailable during the update."}},"required":["maxSurge","maxUnavailable"],"additionalProperties":false}},"additionalProperties":false,"description":"Roll out strategy of the service"},"zonalRedundancy":{"type":"object","properties":{"type":{"type":"string","enum":["disabled","preferred","required"],"description":"Defines scheduling behaviour across different zones within the same region."},"minZones":{"type":"integer","minimum":1,"description":"Defines how many zones are required and will prevent containers from additional scheduling into existing zones. (Only relevant if type is set to \"required\")"}},"additionalProperties":false},"gpu":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"gpuType":{"type":"string"},"gpuCount":{"type":"integer"},"timesliced":{"type":"boolean"}},"required":["gpuType"],"additionalProperties":false}},"additionalProperties":false},"gracePeriodSeconds":{"type":"integer","minimum":15,"maximum":600,"description":"The 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."},"gradualRolloutStrategyId":{"type":"string","pattern":"^[A-Za-z0-9-]+$","nullable":true,"description":"The id of the strategy to be attached to service.","examples":["strategy-id","strategy-id"]},"ssh":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Enables SSH access if the resource matches an SSH identity selector."}},"required":["enabled"],"additionalProperties":false,"description":"Controls related to SSH access within the resource."},"metadata":{"type":"object","properties":{"labels":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom labels for the workload."},"annotations":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom annotations for the workload as string or object."}},"additionalProperties":false,"description":"Allow setting custom labels and annotations for workloads."},"internal":{"type":"object","properties":{"id":{"anyOf":[{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":54,"example":"example-build-service"},{"type":"string","example":"example-project/example-build-service"}],"description":"ID of the build service to deploy"},"branch":{"type":"string","description":"Branch to deploy","example":"master"},"buildSHA":{"oneOf":[{"type":"string","minLength":40,"maxLength":40,"description":"A commit sha."},{"type":"string","enum":["latest"],"description":"Latest commit."}],"description":"Commit SHA to deploy, or 'latest' to deploy the most recent commit","example":"latest"},"buildId":{"type":"string","description":"ID of the build that should be deployed","example":"premium-guide-6393"}},"additionalProperties":false}},"required":["instances","internal"],"additionalProperties":false,"description":"Internal deployment"},{"type":"object","properties":{"type":{"type":"string","enum":["deployment","statefulSet"],"description":"The way the service should be deployed. Either as a deployment (default), or as a stateful set."},"instances":{"type":"integer","minimum":0,"description":"The number of instances to run the service on.","example":1},"buildpack":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customProcess","customCommand","customEntrypointCustomCommand","originalEntrypointCustomCommand"],"description":"Type of buildpack run configuration"},"customProcess":{"type":"string","description":"Custom process which should be run. Required in case where `configType` is `customProcess`"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be run. Required in case where `configType` is `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be run. Required in case where `configType` is `customCommand`, `customEntrypointCustomCommand` or `originalEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of buildpack runtime"},"docker":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customEntrypoint","customCommand","customEntrypointCustomCommand"],"description":"Type of entrypoint & command override configuration","example":"default"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be used. Required in case where `configType` is `customEntrypoint` or `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be used. Required in case where `configType` is `customCommand` or `customEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of docker runtime"},"storage":{"type":"object","properties":{"useHdbStorage":{"type":"boolean"},"usePdSsdStorage":{"type":"boolean"},"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":1024,"description":"Ephemeral storage per container in MB","example":1024}},"additionalProperties":false},"shmSize":{"type":"integer","minimum":64,"description":"Configures the amount of available memory-backed disk space available to /dev/shm"}},"additionalProperties":false},"strategy":{"type":"object","properties":{"type":{"type":"string","enum":["recreate","rollout-steady","rollout-balanced","rollout-fast","custom"],"description":"Configures the instance roll out strategy of your service. Currently only available via feature flag."},"settings":{"type":"object","properties":{"maxSurge":{"oneOf":[{"type":"integer","minimum":0,"description":"A non-negative integer."},{"type":"string","pattern":"^\\d+%$","description":"A percentage string in the range 0% to 100%, e.g. `25%`"}],"description":"Maximum number or percentage of pods that can be created above the desired count."},"maxUnavailable":{"anyOf":[{"type":"integer","minimum":0,"description":"A non-negative integer."},{"type":"string","pattern":"^\\d+%$","description":"A percentage string in the range 0% to 100%, e.g. `25%`"}],"description":"Maximum number or percentage of pods that can be unavailable during the update."}},"required":["maxSurge","maxUnavailable"],"additionalProperties":false}},"additionalProperties":false,"description":"Roll out strategy of the service"},"zonalRedundancy":{"type":"object","properties":{"type":{"type":"string","enum":["disabled","preferred","required"],"description":"Defines scheduling behaviour across different zones within the same region."},"minZones":{"type":"integer","minimum":1,"description":"Defines how many zones are required and will prevent containers from additional scheduling into existing zones. (Only relevant if type is set to \"required\")"}},"additionalProperties":false},"gpu":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"gpuType":{"type":"string"},"gpuCount":{"type":"integer"},"timesliced":{"type":"boolean"}},"required":["gpuType"],"additionalProperties":false}},"additionalProperties":false},"gracePeriodSeconds":{"type":"integer","minimum":15,"maximum":600,"description":"The 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."},"gradualRolloutStrategyId":{"type":"string","pattern":"^[A-Za-z0-9-]+$","nullable":true,"description":"The id of the strategy to be attached to service.","examples":["strategy-id","strategy-id"]},"ssh":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Enables SSH access if the resource matches an SSH identity selector."}},"required":["enabled"],"additionalProperties":false,"description":"Controls related to SSH access within the resource."},"metadata":{"type":"object","properties":{"labels":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom labels for the workload."},"annotations":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom annotations for the workload as string or object."}},"additionalProperties":false,"description":"Allow setting custom labels and annotations for workloads."},"external":{"type":"object","properties":{"imagePath":{"type":"string","pattern":"^(?:(?:https?:\\/\\/)?([a-zA-Z0-9\\-]+\\.[a-zA-Z0-9\\.\\-]+)(\\/v1)?)?(?:\\/)?([a-zA-Z/-9\\.\\-_]+)(?:\\:([a-zA-Z/-9\\.\\-_\\:]+)|\\@([a-zA-Z/-9\\.\\-_\\:]+))$","description":"Image to be deployed. When not deploying from Dockerhub the URL must be specified.","example":"nginx:latest"},"credentials":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"ID of the saved credentials to use to access this external image.","example":"example-credentials"}},"required":["imagePath"],"additionalProperties":false}},"required":["instances","external"],"additionalProperties":false,"description":"External deployment"},{"type":"object","properties":{"type":{"type":"string","enum":["deployment","statefulSet"],"description":"The way the service should be deployed. Either as a deployment (default), or as a stateful set."},"instances":{"type":"integer","minimum":0,"description":"The number of instances to run the service on.","example":1},"buildpack":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customProcess","customCommand","customEntrypointCustomCommand","originalEntrypointCustomCommand"],"description":"Type of buildpack run configuration"},"customProcess":{"type":"string","description":"Custom process which should be run. Required in case where `configType` is `customProcess`"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be run. Required in case where `configType` is `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be run. Required in case where `configType` is `customCommand`, `customEntrypointCustomCommand` or `originalEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of buildpack runtime"},"docker":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customEntrypoint","customCommand","customEntrypointCustomCommand"],"description":"Type of entrypoint & command override configuration","example":"default"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be used. Required in case where `configType` is `customEntrypoint` or `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be used. Required in case where `configType` is `customCommand` or `customEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of docker runtime"},"storage":{"type":"object","properties":{"useHdbStorage":{"type":"boolean"},"usePdSsdStorage":{"type":"boolean"},"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":1024,"description":"Ephemeral storage per container in MB","example":1024}},"additionalProperties":false},"shmSize":{"type":"integer","minimum":64,"description":"Configures the amount of available memory-backed disk space available to /dev/shm"}},"additionalProperties":false},"strategy":{"type":"object","properties":{"type":{"type":"string","enum":["recreate","rollout-steady","rollout-balanced","rollout-fast","custom"],"description":"Configures the instance roll out strategy of your service. Currently only available via feature flag."},"settings":{"type":"object","properties":{"maxSurge":{"oneOf":[{"type":"integer","minimum":0,"description":"A non-negative integer."},{"type":"string","pattern":"^\\d+%$","description":"A percentage string in the range 0% to 100%, e.g. `25%`"}],"description":"Maximum number or percentage of pods that can be created above the desired count."},"maxUnavailable":{"anyOf":[{"type":"integer","minimum":0,"description":"A non-negative integer."},{"type":"string","pattern":"^\\d+%$","description":"A percentage string in the range 0% to 100%, e.g. `25%`"}],"description":"Maximum number or percentage of pods that can be unavailable during the update."}},"required":["maxSurge","maxUnavailable"],"additionalProperties":false}},"additionalProperties":false,"description":"Roll out strategy of the service"},"zonalRedundancy":{"type":"object","properties":{"type":{"type":"string","enum":["disabled","preferred","required"],"description":"Defines scheduling behaviour across different zones within the same region."},"minZones":{"type":"integer","minimum":1,"description":"Defines how many zones are required and will prevent containers from additional scheduling into existing zones. (Only relevant if type is set to \"required\")"}},"additionalProperties":false},"gpu":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"gpuType":{"type":"string"},"gpuCount":{"type":"integer"},"timesliced":{"type":"boolean"}},"required":["gpuType"],"additionalProperties":false}},"additionalProperties":false},"gracePeriodSeconds":{"type":"integer","minimum":15,"maximum":600,"description":"The 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."},"gradualRolloutStrategyId":{"type":"string","pattern":"^[A-Za-z0-9-]+$","nullable":true,"description":"The id of the strategy to be attached to service.","examples":["strategy-id","strategy-id"]},"ssh":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Enables SSH access if the resource matches an SSH identity selector."}},"required":["enabled"],"additionalProperties":false,"description":"Controls related to SSH access within the resource."},"metadata":{"type":"object","properties":{"labels":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom labels for the workload."},"annotations":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom annotations for the workload as string or object."}},"additionalProperties":false,"description":"Allow setting custom labels and annotations for workloads."}},"required":["instances"],"additionalProperties":false,"description":"Choose later"}],"description":"Deployment type"},"ports":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":1,"maxLength":8,"description":"The name used to identify the port.","example":"p01"},"internalPort":{"type":"integer","minimum":1,"maximum":65535,"description":"The port number.","example":8080},"public":{"type":"boolean","description":"If true, the port will be exposed publicly.","example":true,"default":false},"security":{"type":"object","properties":{"credentials":{"type":"array","items":{"type":"object","properties":{"username":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The username to access the service","example":"admin"},"password":{"type":"string","description":"The password to access the service with this username.","example":"password123"},"type":{"type":"string","enum":["basic-auth"],"description":"The type of authentication used","example":"basic-auth"}},"required":["username","password","type"],"additionalProperties":false},"description":"An array of credentials to access the service."},"ip":{"type":"array","items":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","description":"An IP address used by this rule","example":"127.0.0.1"},"description":"An array of IP addresses used for this rule"},"action":{"type":"string","enum":["ALLOW","DENY"],"description":"The action for this rule.","example":"DENY"}},"required":["addresses","action"],"additionalProperties":false},"description":"An array of IP address policies."},"policies":{"type":"array","items":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","description":"An IP address used by this rule","example":"127.0.0.1"},"description":"An array of IP addresses used for this rule"},"action":{"type":"string","enum":["ALLOW","DENY"],"description":"The action for this rule.","example":"DENY"}},"required":["addresses","action"],"additionalProperties":false},"description":"An array of IP address policies."},"sso":{"type":"object","properties":{"organizationId":{"type":"string","description":"ID of the SSO organization that the user will have to be a member of"},"directoryGroupIds":{"type":"array","items":{"type":"string"},"description":"Array of directory groups that will have access"},"allowAnyOrgUsers":{"type":"boolean","description":"Allow entire organization to access this service"},"validateInternalTraffic":{"type":"boolean","description":"Enforce internal traffic through SSO authentication flow"},"setCookieOnRootDomain":{"type":"boolean","description":"Set SSO authentication cookie on root domain"},"allowInternalTrafficViaPublicDns":{"type":"boolean","description":"Allow internal traffic from same or shared projects via public DNS to skip SSO authentication flow"}},"additionalProperties":false,"description":"Configure port authentication via SSO"},"headers":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"regexMode":{"type":"boolean","example":false,"default":false},"name":{"type":"string","pattern":"^[a-zA-Z0-9_\\-%$+]+$","example":"headerName"},"value":{"type":"string","example":"headerValue"}},"required":["name","value"],"additionalProperties":false,"description":"Matches provided headers as strings."},{"type":"object","properties":{"regexMode":{"type":"boolean","example":true,"default":false},"name":{"type":"string","example":"headerName"},"value":{"type":"string","example":"headerValue"}},"required":["name","value"],"additionalProperties":false,"description":"Matches provided headers as regex."}]},"description":"List of header authentication settings, it checks the presence of all headers and compares it against the expected value. Wildcard (*) is supported."},"verificationMode":{"type":"string","enum":["or","and"],"description":"Mode used to verify multiple security features like ip policies and SSO authentication"},"securePathConfiguration":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Enable security policies on a path-level style"},"skipSecurityPoliciesForInternalTrafficViaPublicDns":{"type":"boolean","description":"Allow internal traffic from same or shared projects via public DNS to skip all security policies"},"rules":{"type":"array","items":{"type":"object","properties":{"paths":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"path":{"type":"string","pattern":"^\\/([_a-zA-Z0-9-&?=.]*)((\\/[_a-zA-Z0-9-&?=.]+)*(\\/)?)?$"},"routingMode":{"type":"string","enum":["prefix"],"description":"Mode of the path, determining how the URI will be interpreted.","example":"prefix"},"priority":{"type":"integer","minimum":0,"maximum":100,"example":80}},"required":["path","routingMode","priority"],"additionalProperties":false,"description":"Route when the path starts with the provided prefix."},{"type":"object","properties":{"path":{"type":"string","pattern":"^\\/([_a-zA-Z0-9-&?=.]*)((\\/[_a-zA-Z0-9-&?=.]+)*(\\/)?)?$"},"routingMode":{"type":"string","enum":["exact"],"description":"Mode of the path, determining how the URI will be interpreted.","example":"exact"},"priority":{"type":"integer","minimum":0,"maximum":100,"example":80}},"required":["path","routingMode","priority"],"additionalProperties":false,"description":"Route when the path is an exact match."},{"type":"object","properties":{"path":{"type":"string"},"routingMode":{"type":"string","enum":["regex"],"description":"Mode of the path, determining how the URI will be interpreted.","example":"regex"},"priority":{"type":"integer","minimum":0,"maximum":100,"example":80}},"required":["path","routingMode","priority"],"additionalProperties":false,"description":"Route when the path matches the provided regex."}],"description":"Data about how the path should be handled."},"description":"Array of path objects which represent the paths and their priority for which the security policies will be enforced"},"accessMode":{"type":"string","enum":["protected","unprotected"],"description":"Specify the way the path rule will behave when processing policies. This enables an allow-list/deny-list approach for access control on each path","example":"protected"},"securityPolicies":{"type":"object","properties":{"orPolicies":{"type":"object","properties":{"credentials":{"type":"array","items":{"type":"object","properties":{"username":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The username to access the service","example":"admin"},"password":{"type":"string","description":"The password to access the service with this username.","example":"password123"},"type":{"type":"string","enum":["basic-auth"],"description":"The type of authentication used","example":"basic-auth"}},"required":["username","password","type"],"additionalProperties":false},"description":"An array of credentials to access the service."},"ip":{"type":"array","items":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","description":"An IP address used by this rule","example":"127.0.0.1"},"description":"An array of IP addresses used for this rule"},"action":{"type":"string","enum":["ALLOW","DENY"],"description":"The action for this rule.","example":"DENY"}},"required":["addresses","action"],"additionalProperties":false},"description":"An array of IP address policies."},"policies":{"type":"array","items":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","description":"An IP address used by this rule","example":"127.0.0.1"},"description":"An array of IP addresses used for this rule"},"action":{"type":"string","enum":["ALLOW","DENY"],"description":"The action for this rule.","example":"DENY"}},"required":["addresses","action"],"additionalProperties":false},"description":"An array of IP address policies."},"sso":{"type":"object","properties":{"organizationId":{"type":"string","description":"ID of the SSO organization that the user will have to be a member of"},"directoryGroupIds":{"type":"array","items":{"type":"string"},"description":"Array of directory groups that will have access"},"allowAnyOrgUsers":{"type":"boolean","description":"Allow entire organization to access this service"},"validateInternalTraffic":{"type":"boolean","description":"Enforce internal traffic through SSO authentication flow"},"setCookieOnRootDomain":{"type":"boolean","description":"Set SSO authentication cookie on root domain"},"allowInternalTrafficViaPublicDns":{"type":"boolean","description":"Allow internal traffic from same or shared projects via public DNS to skip SSO authentication flow"}},"additionalProperties":false,"description":"Configure port authentication via SSO"},"headers":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"regexMode":{"type":"boolean","example":false,"default":false},"name":{"type":"string","pattern":"^[a-zA-Z0-9_\\-%$+]+$","example":"headerName"},"value":{"type":"string","example":"headerValue"}},"required":["name","value"],"additionalProperties":false,"description":"Matches provided headers as strings."},{"type":"object","properties":{"regexMode":{"type":"boolean","example":true,"default":false},"name":{"type":"string","example":"headerName"},"value":{"type":"string","example":"headerValue"}},"required":["name","value"],"additionalProperties":false,"description":"Matches provided headers as regex."}]},"description":"List of header authentication settings, it checks the presence of all headers and compares it against the expected value. Wildcard (*) is supported."}},"additionalProperties":false},"requiredPolicies":{"type":"object","properties":{"credentials":{"type":"array","items":{"type":"object","properties":{"username":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The username to access the service","example":"admin"},"password":{"type":"string","description":"The password to access the service with this username.","example":"password123"},"type":{"type":"string","enum":["basic-auth"],"description":"The type of authentication used","example":"basic-auth"}},"required":["username","password","type"],"additionalProperties":false},"description":"An array of credentials to access the service."},"ip":{"type":"array","items":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","description":"An IP address used by this rule","example":"127.0.0.1"},"description":"An array of IP addresses used for this rule"},"action":{"type":"string","enum":["ALLOW","DENY"],"description":"The action for this rule.","example":"DENY"}},"required":["addresses","action"],"additionalProperties":false},"description":"An array of IP address policies."},"policies":{"type":"array","items":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","description":"An IP address used by this rule","example":"127.0.0.1"},"description":"An array of IP addresses used for this rule"},"action":{"type":"string","enum":["ALLOW","DENY"],"description":"The action for this rule.","example":"DENY"}},"required":["addresses","action"],"additionalProperties":false},"description":"An array of IP address policies."},"sso":{"type":"object","properties":{"organizationId":{"type":"string","description":"ID of the SSO organization that the user will have to be a member of"},"directoryGroupIds":{"type":"array","items":{"type":"string"},"description":"Array of directory groups that will have access"},"allowAnyOrgUsers":{"type":"boolean","description":"Allow entire organization to access this service"},"validateInternalTraffic":{"type":"boolean","description":"Enforce internal traffic through SSO authentication flow"},"setCookieOnRootDomain":{"type":"boolean","description":"Set SSO authentication cookie on root domain"},"allowInternalTrafficViaPublicDns":{"type":"boolean","description":"Allow internal traffic from same or shared projects via public DNS to skip SSO authentication flow"}},"additionalProperties":false,"description":"Configure port authentication via SSO"},"headers":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"regexMode":{"type":"boolean","example":false,"default":false},"name":{"type":"string","pattern":"^[a-zA-Z0-9_\\-%$+]+$","example":"headerName"},"value":{"type":"string","example":"headerValue"}},"required":["name","value"],"additionalProperties":false,"description":"Matches provided headers as strings."},{"type":"object","properties":{"regexMode":{"type":"boolean","example":true,"default":false},"name":{"type":"string","example":"headerName"},"value":{"type":"string","example":"headerValue"}},"required":["name","value"],"additionalProperties":false,"description":"Matches provided headers as regex."}]},"description":"List of header authentication settings, it checks the presence of all headers and compares it against the expected value. Wildcard (*) is supported."}},"additionalProperties":false}},"additionalProperties":false}},"required":["paths","accessMode"],"additionalProperties":false},"default":[]}},"additionalProperties":false}},"additionalProperties":false,"default":{"credentials":[],"policies":[],"sso":{}}},"domains":{"type":"array","items":{"type":"string","description":"A domain to redirect to this port.","example":"app.example.com"},"description":"An array of domains to redirect to this port. Each domain must first be verified and registered to your account.","default":[]},"disableNfDomain":{"type":"boolean","description":"Disable routing on the default code.run domain for public HTTP ports with custom domains.","default":false},"advancedOptions":{"type":"object","properties":{"enableTlsPassthrough":{"type":"boolean","description":"Whether this port should use pass through mode for TLS"}},"additionalProperties":false},"protocol":{"type":"string","enum":["HTTP","HTTP/2","TCP","UDP"],"description":"The protocol to use for the port.","example":"HTTP"}},"required":["name","internalPort","protocol"],"additionalProperties":false},"default":[]},"runtimeEnvironment":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"An object containing the runtime environment to set for the service","example":{"VARIABLE_1":"abcdef","VARIABLE_2":"12345"},"default":{}},"runtimeFiles":{"type":"object","properties":{},"description":"Secret files as JSON object, encrypted at rest. File path must be absolute","example":{"/dir/fileName":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"healthChecks":{"type":"array","items":{"type":"object","properties":{"protocol":{"type":"string","enum":["HTTP","CMD","TCP"],"description":"The protocol to access the health check with.","example":"HTTP"},"type":{"type":"string","enum":["livenessProbe","readinessProbe","startupProbe"],"description":"The type of health check.","example":"readinessProbe"},"path":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*((\\?([a-zA-Z0-9-._]+(=[a-zA-Z0-9-._]+)?)*)(&([a-zA-Z0-9-._]+(=[a-zA-Z0-9-._]+)?)*)*)?$","description":"The path of the health check endpoint. Required when protocol is HTTP.","example":"/health-check"},"cmd":{"type":"string","description":"The command to run for the health check. Required when protocol is CMD"},"port":{"type":"integer","minimum":1,"description":"Port number for the health check endpoint. Required when protocol is HTTP.","example":8080},"initialDelaySeconds":{"type":"integer","minimum":1,"maximum":180,"description":"Initial delay, in seconds, before the health check is first run.","example":10},"periodSeconds":{"type":"integer","minimum":10,"maximum":600,"description":"The time between each check, in seconds.","example":60},"timeoutSeconds":{"type":"integer","minimum":1,"maximum":60,"description":"The time to wait for a response before marking the health check as a failure.","example":1},"failureThreshold":{"type":"integer","minimum":1,"maximum":255,"description":"The maximum number of allowed failures.","example":3},"successThreshold":{"type":"integer","minimum":1,"maximum":255,"description":"The number of successes required to mark the health check as a success.","example":1}},"required":["protocol","type","initialDelaySeconds","periodSeconds","timeoutSeconds","failureThreshold"],"additionalProperties":false,"description":"A health check object."},"description":"An array of health checks."},"loadBalancing":{"type":"object","properties":{"mode":{"type":"string","enum":["leastConnection","consistentHash","roundRobin","consistentReplicaRouting"]},"consistentHash":{"type":"object","properties":{"mode":{"type":"string","enum":["ip","customHeader"]},"header":{"type":"string","nullable":true}},"required":["mode"],"additionalProperties":false},"consistentReplicaRouting":{"type":"object","properties":{"mode":{"type":"string","enum":["path","header"]}},"required":["mode"],"additionalProperties":false}},"required":["mode"],"additionalProperties":false},"autoscaling":{"type":"object","properties":{"horizontal":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether horizontal autoscaling should be enabled","example":true},"minReplicas":{"type":"number","format":"float","minimum":1,"description":"Minimum number of replicas which should be running at any time","example":1},"maxReplicas":{"type":"number","format":"float","description":"Maximum number of replicas which can be running at any time","example":3},"cpu":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether autoscaling should take into account cpu usage"},"thresholdPercentage":{"type":"integer","minimum":10,"maximum":100,"description":"Threshold CPU usage percentage at which the workload will be scaled"}},"required":["enabled","thresholdPercentage"],"additionalProperties":false},"memory":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether autoscaling should take into account memory usage"},"thresholdPercentage":{"type":"integer","minimum":10,"maximum":100,"description":"Threshold memory usage percentage at which the workload will be scaled"}},"required":["enabled","thresholdPercentage"],"additionalProperties":false},"rps":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether autoscaling should take into requests-per-second"},"thresholdValue":{"type":"integer","minimum":1,"description":"Threshold rps value on which the workload will be scaled"}},"required":["enabled","thresholdValue"],"additionalProperties":false},"userMetrics":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether to enable handling for custom metrics in the autoscaling configuration","example":true},"exposedMetricsPath":{"type":"string","pattern":"^\\/([_a-zA-Z0-9-&?=.]*)((\\/[_a-zA-Z0-9-&?=.]+)*(\\/)?)?$","description":"Path on which the metrics will be exposed by the service..","example":"/metrics"},"exposedMetricsPort":{"type":"integer","description":"Port on which the metrics will be exposed by the service.","example":8080},"metrics":{"type":"array","items":{"type":"object","properties":{"metricName":{"type":"string","pattern":"[a-zA-Z_:][a-zA-Z0-9_:]*$","description":"Name of the custom metric","example":"example-metric"},"metricType":{"type":"string","enum":["gauge","counter"],"description":"Type of metric exposed, this will affect how it'll be queried by the autoscaler component: Gauge will be used as is, Counter will be used with rate()","example":"gauge"},"thresholdValue":{"type":"number","format":"float","description":"Threshold value on which the workload will be scaled. Represents the average value across all running pods.","example":2}},"required":["metricName","metricType","thresholdValue"],"additionalProperties":false},"description":"Array of custom metrics exposed by the service that will be used by the autoscaling configuration. At least one metric is required."}},"required":["enabled","exposedMetricsPath","exposedMetricsPort","metrics"],"additionalProperties":false}},"required":["enabled","minReplicas","maxReplicas"],"additionalProperties":false,"description":"Describes the horizontal autoscaling configuration"}},"additionalProperties":false,"description":"Describes all autoscaling configurations"},"createOptions":{"type":"object","properties":{"volumesToAttach":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39}}},"additionalProperties":false}},"required":["name","billing","deployment"],"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Project > Services > General > Create","x-nf-team-scoped":true,"x-nf-subheading":"create service","x-nf-cli-command":["create","service","deployment"]},"v1-projects--projectId--services-deployment-post-team-scoped":{"operationId":"postProjectsServicesDeployment","summary":"Create deployment service","description":"Creates a new deployment service.","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}}],"responses":{"200":{"description":"Details about the newly created service.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":54,"description":"The name of the service.","example":"Example Service"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"A description of the service.","example":"A service description"},"stageId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"billing":{"type":"object","properties":{"deploymentPlan":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The ID of the deployment plan to use.","example":"nf-compute-20"},"gpu":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"gpuType":{"type":"string"},"gpuCount":{"type":"integer"},"timesliced":{"type":"boolean"}},"required":["gpuType"],"additionalProperties":false}},"additionalProperties":false}},"required":["deploymentPlan"],"additionalProperties":false},"infrastructure":{"type":"object","properties":{"architecture":{"type":"string","enum":["x86","arm"]}},"additionalProperties":false},"ports":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":1,"maxLength":8,"description":"The name used to identify the port.","example":"p01"},"internalPort":{"type":"integer","minimum":1,"maximum":65535,"description":"The port number.","example":8080},"public":{"type":"boolean","description":"If true, the port will be exposed publicly.","example":true,"default":false},"security":{"type":"object","properties":{"credentials":{"type":"array","items":{"type":"object","properties":{"username":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The username to access the service","example":"admin"},"password":{"type":"string","description":"The password to access the service with this username.","example":"password123"},"type":{"type":"string","enum":["basic-auth"],"description":"The type of authentication used","example":"basic-auth"}},"required":["username","password","type"],"additionalProperties":false},"description":"An array of credentials to access the service."},"ip":{"type":"array","items":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","description":"An IP address used by this rule","example":"127.0.0.1"},"description":"An array of IP addresses used for this rule"},"action":{"type":"string","enum":["ALLOW","DENY"],"description":"The action for this rule.","example":"DENY"}},"required":["addresses","action"],"additionalProperties":false},"description":"An array of IP address policies."},"policies":{"type":"array","items":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","description":"An IP address used by this rule","example":"127.0.0.1"},"description":"An array of IP addresses used for this rule"},"action":{"type":"string","enum":["ALLOW","DENY"],"description":"The action for this rule.","example":"DENY"}},"required":["addresses","action"],"additionalProperties":false},"description":"An array of IP address policies."},"sso":{"type":"object","properties":{"organizationId":{"type":"string","description":"ID of the SSO organization that the user will have to be a member of"},"directoryGroupIds":{"type":"array","items":{"type":"string"},"description":"Array of directory groups that will have access"},"allowAnyOrgUsers":{"type":"boolean","description":"Allow entire organization to access this service"},"validateInternalTraffic":{"type":"boolean","description":"Enforce internal traffic through SSO authentication flow"},"setCookieOnRootDomain":{"type":"boolean","description":"Set SSO authentication cookie on root domain"},"allowInternalTrafficViaPublicDns":{"type":"boolean","description":"Allow internal traffic from same or shared projects via public DNS to skip SSO authentication flow"}},"additionalProperties":false,"description":"Configure port authentication via SSO"},"headers":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"regexMode":{"type":"boolean","example":false,"default":false},"name":{"type":"string","pattern":"^[a-zA-Z0-9_\\-%$+]+$","example":"headerName"},"value":{"type":"string","example":"headerValue"}},"required":["name","value"],"additionalProperties":false,"description":"Matches provided headers as strings."},{"type":"object","properties":{"regexMode":{"type":"boolean","example":true,"default":false},"name":{"type":"string","example":"headerName"},"value":{"type":"string","example":"headerValue"}},"required":["name","value"],"additionalProperties":false,"description":"Matches provided headers as regex."}]},"description":"List of header authentication settings, it checks the presence of all headers and compares it against the expected value. Wildcard (*) is supported."},"verificationMode":{"type":"string","enum":["or","and"],"description":"Mode used to verify multiple security features like ip policies and SSO authentication"},"securePathConfiguration":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Enable security policies on a path-level style"},"skipSecurityPoliciesForInternalTrafficViaPublicDns":{"type":"boolean","description":"Allow internal traffic from same or shared projects via public DNS to skip all security policies"},"rules":{"type":"array","items":{"type":"object","properties":{"paths":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"path":{"type":"string","pattern":"^\\/([_a-zA-Z0-9-&?=.]*)((\\/[_a-zA-Z0-9-&?=.]+)*(\\/)?)?$"},"routingMode":{"type":"string","enum":["prefix"],"description":"Mode of the path, determining how the URI will be interpreted.","example":"prefix"},"priority":{"type":"integer","minimum":0,"maximum":100,"example":80}},"required":["path","routingMode","priority"],"additionalProperties":false,"description":"Route when the path starts with the provided prefix."},{"type":"object","properties":{"path":{"type":"string","pattern":"^\\/([_a-zA-Z0-9-&?=.]*)((\\/[_a-zA-Z0-9-&?=.]+)*(\\/)?)?$"},"routingMode":{"type":"string","enum":["exact"],"description":"Mode of the path, determining how the URI will be interpreted.","example":"exact"},"priority":{"type":"integer","minimum":0,"maximum":100,"example":80}},"required":["path","routingMode","priority"],"additionalProperties":false,"description":"Route when the path is an exact match."},{"type":"object","properties":{"path":{"type":"string"},"routingMode":{"type":"string","enum":["regex"],"description":"Mode of the path, determining how the URI will be interpreted.","example":"regex"},"priority":{"type":"integer","minimum":0,"maximum":100,"example":80}},"required":["path","routingMode","priority"],"additionalProperties":false,"description":"Route when the path matches the provided regex."}],"description":"Data about how the path should be handled."},"description":"Array of path objects which represent the paths and their priority for which the security policies will be enforced"},"accessMode":{"type":"string","enum":["protected","unprotected"],"description":"Specify the way the path rule will behave when processing policies. This enables an allow-list/deny-list approach for access control on each path","example":"protected"},"securityPolicies":{"type":"object","properties":{"orPolicies":{"type":"object","properties":{"credentials":{"type":"array","items":{"type":"object","properties":{"username":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The username to access the service","example":"admin"},"password":{"type":"string","description":"The password to access the service with this username.","example":"password123"},"type":{"type":"string","enum":["basic-auth"],"description":"The type of authentication used","example":"basic-auth"}},"required":["username","password","type"],"additionalProperties":false},"description":"An array of credentials to access the service."},"ip":{"type":"array","items":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","description":"An IP address used by this rule","example":"127.0.0.1"},"description":"An array of IP addresses used for this rule"},"action":{"type":"string","enum":["ALLOW","DENY"],"description":"The action for this rule.","example":"DENY"}},"required":["addresses","action"],"additionalProperties":false},"description":"An array of IP address policies."},"policies":{"type":"array","items":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","description":"An IP address used by this rule","example":"127.0.0.1"},"description":"An array of IP addresses used for this rule"},"action":{"type":"string","enum":["ALLOW","DENY"],"description":"The action for this rule.","example":"DENY"}},"required":["addresses","action"],"additionalProperties":false},"description":"An array of IP address policies."},"sso":{"type":"object","properties":{"organizationId":{"type":"string","description":"ID of the SSO organization that the user will have to be a member of"},"directoryGroupIds":{"type":"array","items":{"type":"string"},"description":"Array of directory groups that will have access"},"allowAnyOrgUsers":{"type":"boolean","description":"Allow entire organization to access this service"},"validateInternalTraffic":{"type":"boolean","description":"Enforce internal traffic through SSO authentication flow"},"setCookieOnRootDomain":{"type":"boolean","description":"Set SSO authentication cookie on root domain"},"allowInternalTrafficViaPublicDns":{"type":"boolean","description":"Allow internal traffic from same or shared projects via public DNS to skip SSO authentication flow"}},"additionalProperties":false,"description":"Configure port authentication via SSO"},"headers":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"regexMode":{"type":"boolean","example":false,"default":false},"name":{"type":"string","pattern":"^[a-zA-Z0-9_\\-%$+]+$","example":"headerName"},"value":{"type":"string","example":"headerValue"}},"required":["name","value"],"additionalProperties":false,"description":"Matches provided headers as strings."},{"type":"object","properties":{"regexMode":{"type":"boolean","example":true,"default":false},"name":{"type":"string","example":"headerName"},"value":{"type":"string","example":"headerValue"}},"required":["name","value"],"additionalProperties":false,"description":"Matches provided headers as regex."}]},"description":"List of header authentication settings, it checks the presence of all headers and compares it against the expected value. Wildcard (*) is supported."}},"additionalProperties":false},"requiredPolicies":{"type":"object","properties":{"credentials":{"type":"array","items":{"type":"object","properties":{"username":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The username to access the service","example":"admin"},"password":{"type":"string","description":"The password to access the service with this username.","example":"password123"},"type":{"type":"string","enum":["basic-auth"],"description":"The type of authentication used","example":"basic-auth"}},"required":["username","password","type"],"additionalProperties":false},"description":"An array of credentials to access the service."},"ip":{"type":"array","items":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","description":"An IP address used by this rule","example":"127.0.0.1"},"description":"An array of IP addresses used for this rule"},"action":{"type":"string","enum":["ALLOW","DENY"],"description":"The action for this rule.","example":"DENY"}},"required":["addresses","action"],"additionalProperties":false},"description":"An array of IP address policies."},"policies":{"type":"array","items":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","description":"An IP address used by this rule","example":"127.0.0.1"},"description":"An array of IP addresses used for this rule"},"action":{"type":"string","enum":["ALLOW","DENY"],"description":"The action for this rule.","example":"DENY"}},"required":["addresses","action"],"additionalProperties":false},"description":"An array of IP address policies."},"sso":{"type":"object","properties":{"organizationId":{"type":"string","description":"ID of the SSO organization that the user will have to be a member of"},"directoryGroupIds":{"type":"array","items":{"type":"string"},"description":"Array of directory groups that will have access"},"allowAnyOrgUsers":{"type":"boolean","description":"Allow entire organization to access this service"},"validateInternalTraffic":{"type":"boolean","description":"Enforce internal traffic through SSO authentication flow"},"setCookieOnRootDomain":{"type":"boolean","description":"Set SSO authentication cookie on root domain"},"allowInternalTrafficViaPublicDns":{"type":"boolean","description":"Allow internal traffic from same or shared projects via public DNS to skip SSO authentication flow"}},"additionalProperties":false,"description":"Configure port authentication via SSO"},"headers":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"regexMode":{"type":"boolean","example":false,"default":false},"name":{"type":"string","pattern":"^[a-zA-Z0-9_\\-%$+]+$","example":"headerName"},"value":{"type":"string","example":"headerValue"}},"required":["name","value"],"additionalProperties":false,"description":"Matches provided headers as strings."},{"type":"object","properties":{"regexMode":{"type":"boolean","example":true,"default":false},"name":{"type":"string","example":"headerName"},"value":{"type":"string","example":"headerValue"}},"required":["name","value"],"additionalProperties":false,"description":"Matches provided headers as regex."}]},"description":"List of header authentication settings, it checks the presence of all headers and compares it against the expected value. Wildcard (*) is supported."}},"additionalProperties":false}},"additionalProperties":false}},"required":["paths","accessMode"],"additionalProperties":false},"default":[]}},"additionalProperties":false}},"additionalProperties":false,"default":{"credentials":[],"policies":[],"sso":{}}},"domains":{"type":"array","items":{"type":"string","description":"A domain to redirect to this port.","example":"app.example.com"},"description":"An array of domains to redirect to this port. Each domain must first be verified and registered to your account.","default":[]},"disableNfDomain":{"type":"boolean","description":"Disable routing on the default code.run domain for public HTTP ports with custom domains.","default":false},"advancedOptions":{"type":"object","properties":{"enableTlsPassthrough":{"type":"boolean","description":"Whether this port should use pass through mode for TLS"}},"additionalProperties":false},"protocol":{"type":"string","oneOf":[{"type":"string","enum":["HTTP","HTTP/2"]},{"type":"string","enum":["HTTP","HTTP/2","TCP","UDP"]}],"description":"The protocol to use for the port.","example":"HTTP"}},"required":["name","internalPort","protocol"],"additionalProperties":false},"default":[]},"runtimeEnvironment":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"An object containing the runtime environment to set for the service","example":{"VARIABLE_1":"abcdef","VARIABLE_2":"12345"},"default":{}},"runtimeFiles":{"type":"object","properties":{},"description":"Secret files as JSON object, encrypted at rest. File path must be absolute","example":{"/dir/fileName":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"healthChecks":{"type":"array","items":{"type":"object","properties":{"protocol":{"type":"string","enum":["HTTP","CMD","TCP"],"description":"The protocol to access the health check with.","example":"HTTP"},"type":{"type":"string","enum":["livenessProbe","readinessProbe","startupProbe"],"description":"The type of health check.","example":"readinessProbe"},"path":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*((\\?([a-zA-Z0-9-._]+(=[a-zA-Z0-9-._]+)?)*)(&([a-zA-Z0-9-._]+(=[a-zA-Z0-9-._]+)?)*)*)?$","description":"The path of the health check endpoint. Required when protocol is HTTP.","example":"/health-check"},"cmd":{"type":"string","description":"The command to run for the health check. Required when protocol is CMD"},"port":{"type":"integer","minimum":1,"description":"Port number for the health check endpoint. Required when protocol is HTTP.","example":8080},"initialDelaySeconds":{"type":"integer","minimum":1,"maximum":180,"description":"Initial delay, in seconds, before the health check is first run.","example":10},"periodSeconds":{"type":"integer","minimum":10,"maximum":600,"description":"The time between each check, in seconds.","example":60},"timeoutSeconds":{"type":"integer","minimum":1,"maximum":60,"description":"The time to wait for a response before marking the health check as a failure.","example":1},"failureThreshold":{"type":"integer","minimum":1,"maximum":255,"description":"The maximum number of allowed failures.","example":3},"successThreshold":{"type":"integer","minimum":1,"maximum":255,"description":"The number of successes required to mark the health check as a success.","example":1}},"required":["protocol","type","initialDelaySeconds","periodSeconds","timeoutSeconds","failureThreshold"],"additionalProperties":false,"description":"A health check object."},"description":"An array of health checks."},"loadBalancing":{"type":"object","properties":{"mode":{"type":"string","enum":["leastConnection","consistentHash","roundRobin","consistentReplicaRouting"]},"consistentHash":{"type":"object","properties":{"mode":{"type":"string","enum":["ip","customHeader"]},"header":{"type":"string","nullable":true}},"required":["mode"],"additionalProperties":false},"consistentReplicaRouting":{"type":"object","properties":{"mode":{"type":"string","enum":["path","header"]}},"required":["mode"],"additionalProperties":false}},"required":["mode"],"additionalProperties":false},"autoscaling":{"type":"object","properties":{"horizontal":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether horizontal autoscaling should be enabled","example":true},"minReplicas":{"type":"number","format":"float","minimum":1,"description":"Minimum number of replicas which should be running at any time","example":1},"maxReplicas":{"type":"number","format":"float","description":"Maximum number of replicas which can be running at any time","example":3},"cpu":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether autoscaling should take into account cpu usage"},"thresholdPercentage":{"type":"integer","minimum":10,"maximum":100,"description":"Threshold CPU usage percentage at which the workload will be scaled"}},"required":["enabled","thresholdPercentage"],"additionalProperties":false},"memory":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether autoscaling should take into account memory usage"},"thresholdPercentage":{"type":"integer","minimum":10,"maximum":100,"description":"Threshold memory usage percentage at which the workload will be scaled"}},"required":["enabled","thresholdPercentage"],"additionalProperties":false},"rps":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether autoscaling should take into requests-per-second"},"thresholdValue":{"type":"integer","minimum":1,"description":"Threshold rps value on which the workload will be scaled"}},"required":["enabled","thresholdValue"],"additionalProperties":false},"userMetrics":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether to enable handling for custom metrics in the autoscaling configuration","example":true},"exposedMetricsPath":{"type":"string","pattern":"^\\/([_a-zA-Z0-9-&?=.]*)((\\/[_a-zA-Z0-9-&?=.]+)*(\\/)?)?$","description":"Path on which the metrics will be exposed by the service..","example":"/metrics"},"exposedMetricsPort":{"type":"integer","description":"Port on which the metrics will be exposed by the service.","example":8080},"metrics":{"type":"array","items":{"type":"object","properties":{"metricName":{"type":"string","pattern":"[a-zA-Z_:][a-zA-Z0-9_:]*$","description":"Name of the custom metric","example":"example-metric"},"metricType":{"type":"string","enum":["gauge","counter"],"description":"Type of metric exposed, this will affect how it'll be queried by the autoscaler component: Gauge will be used as is, Counter will be used with rate()","example":"gauge"},"thresholdValue":{"type":"number","format":"float","description":"Threshold value on which the workload will be scaled. Represents the average value across all running pods.","example":2}},"required":["metricName","metricType","thresholdValue"],"additionalProperties":false},"description":"Array of custom metrics exposed by the service that will be used by the autoscaling configuration. At least one metric is required."}},"required":["enabled","exposedMetricsPath","exposedMetricsPort","metrics"],"additionalProperties":false}},"required":["enabled","minReplicas","maxReplicas"],"additionalProperties":false,"description":"Describes the horizontal autoscaling configuration"}},"additionalProperties":false,"description":"Describes all autoscaling configurations"},"createOptions":{"type":"object","properties":{"volumesToAttach":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39}}},"additionalProperties":false},"serviceType":{"type":"string","enum":["deployment"],"description":"Type of the service (combined, build or deployment)","example":"deployment"},"deployment":{"type":"object","properties":{"type":{"type":"string","enum":["deployment","statefulSet"],"description":"The way the service should be deployed. Either as a deployment (default), or as a stateful set."},"instances":{"type":"integer","minimum":0,"description":"The number of instances to run the service on.","example":1},"buildpack":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customProcess","customCommand","customEntrypointCustomCommand","originalEntrypointCustomCommand"],"description":"Type of buildpack run configuration"},"customProcess":{"type":"string","description":"Custom process which should be run. Required in case where `configType` is `customProcess`"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be run. Required in case where `configType` is `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be run. Required in case where `configType` is `customCommand`, `customEntrypointCustomCommand` or `originalEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of buildpack runtime"},"docker":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customEntrypoint","customCommand","customEntrypointCustomCommand"],"description":"Type of entrypoint & command override configuration","example":"default"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be used. Required in case where `configType` is `customEntrypoint` or `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be used. Required in case where `configType` is `customCommand` or `customEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of docker runtime"},"storage":{"type":"object","properties":{"useHdbStorage":{"type":"boolean"},"usePdSsdStorage":{"type":"boolean"},"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":1024,"description":"Ephemeral storage per container in MB","example":1024}},"additionalProperties":false},"shmSize":{"type":"integer","minimum":64,"description":"Configures the amount of available memory-backed disk space available to /dev/shm"}},"additionalProperties":false},"strategy":{"type":"object","properties":{"type":{"type":"string","enum":["recreate","rollout-steady","rollout-balanced","rollout-fast","custom"],"description":"Configures the instance roll out strategy of your service. Currently only available via feature flag."},"settings":{"type":"object","properties":{"maxSurge":{"oneOf":[{"type":"integer","minimum":0,"description":"A non-negative integer."},{"type":"string","pattern":"^\\d+%$","description":"A percentage string in the range 0% to 100%, e.g. `25%`"}],"description":"Maximum number or percentage of pods that can be created above the desired count."},"maxUnavailable":{"anyOf":[{"type":"integer","minimum":0,"description":"A non-negative integer."},{"type":"string","pattern":"^\\d+%$","description":"A percentage string in the range 0% to 100%, e.g. `25%`"}],"description":"Maximum number or percentage of pods that can be unavailable during the update."}},"required":["maxSurge","maxUnavailable"],"additionalProperties":false}},"additionalProperties":false,"description":"Roll out strategy of the service"},"zonalRedundancy":{"type":"object","properties":{"type":{"type":"string","enum":["disabled","preferred","required"],"description":"Defines scheduling behaviour across different zones within the same region."},"minZones":{"type":"integer","minimum":1,"description":"Defines how many zones are required and will prevent containers from additional scheduling into existing zones. (Only relevant if type is set to \"required\")"}},"additionalProperties":false},"gpu":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"gpuType":{"type":"string"},"gpuCount":{"type":"integer"},"timesliced":{"type":"boolean"}},"required":["gpuType"],"additionalProperties":false}},"additionalProperties":false},"gracePeriodSeconds":{"type":"integer","minimum":15,"maximum":600,"description":"The 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."},"gradualRolloutStrategyId":{"type":"string","pattern":"^[A-Za-z0-9-]+$","nullable":true,"description":"The id of the strategy to be attached to service.","examples":["strategy-id","strategy-id"]},"ssh":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Enables SSH access if the resource matches an SSH identity selector."}},"required":["enabled"],"additionalProperties":false,"description":"Controls related to SSH access within the resource."},"metadata":{"type":"object","properties":{"labels":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom labels for the workload."},"annotations":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom annotations for the workload as string or object."}},"additionalProperties":false,"description":"Allow setting custom labels and annotations for workloads."},"internal":{"type":"object","properties":{"id":{"anyOf":[{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":54,"example":"example-build-service"},{"type":"string","example":"example-project/example-build-service"}],"description":"ID of the build service to deploy"},"branch":{"type":"string","description":"Branch to deploy","example":"master"},"buildSHA":{"oneOf":[{"type":"string","minLength":40,"maxLength":40,"description":"A commit sha."},{"type":"string","enum":["latest"],"description":"Latest commit."}],"description":"Commit SHA to deploy, or 'latest' to deploy the most recent commit","example":"latest"},"buildId":{"type":"string","description":"ID of the build that should be deployed","example":"premium-guide-6393"}},"additionalProperties":false},"external":{"type":"object","properties":{"imagePath":{"type":"string","pattern":"^(?:(?:https?:\\/\\/)?([a-zA-Z0-9\\-]+\\.[a-zA-Z0-9\\.\\-]+)(\\/v1)?)?(?:\\/)?([a-zA-Z/-9\\.\\-_]+)(?:\\:([a-zA-Z/-9\\.\\-_\\:]+)|\\@([a-zA-Z/-9\\.\\-_\\:]+))$","description":"Image to be deployed. When not deploying from Dockerhub the URL must be specified.","example":"nginx:latest"},"credentials":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"ID of the saved credentials to use to access this external image.","example":"example-credentials"}},"required":["imagePath"],"additionalProperties":false},"imageUrl":{"type":"string","description":"Image registry url of the deployed image."}},"required":["instances"],"additionalProperties":false},"id":{"type":"string","description":"Identifier for the service","example":"example-service"},"appId":{"type":"string","description":"Full identifier used for service deployment","example":"/example-user/default-project/example-service"},"cluster":{"type":"object","properties":{"id":{"type":"string","description":"The id of the cluster associated with this project.","example":"nf-europe-west"},"name":{"type":"string","description":"The name of the cluster associated with this project.","example":"nf-europe-west"},"namespace":{"type":"string","description":"Namespace this resource is located within on the cluster.","example":"ns-8zy2mcjh9zn2"},"loadBalancers":{"type":"array","items":{"type":"string","example":"lb.659200800000000000000000.northflank.com"},"description":"Load balancer DNS for the cluster."}},"required":["id","name"],"additionalProperties":false,"description":"Cluster information"},"createdAt":{"type":"string","format":"date-time","description":"time of creation"},"updatedAt":{"type":"string","format":"date-time","description":"time of update"},"status":{"type":"object","properties":{"deployment":{"type":"object","properties":{"status":{"type":"string","enum":["PENDING","IN_PROGRESS","COMPLETED","FAILED"],"description":"The current status of the deployment.","example":"COMPLETED"},"reason":{"type":"string","enum":["SCALING","DEPLOYING"],"description":"The reason the current deployment was started.","example":"DEPLOYING"},"lastTransitionTime":{"type":"string","format":"date-time","description":"The timestamp of when the deployment reached this status.","example":"2021-11-29T11:47:16.624Z"}},"required":["status","reason"],"additionalProperties":false,"description":"Details about the current deployment status."}},"additionalProperties":false,"description":"Details about the current service status."}},"required":["name","billing","serviceType","deployment","id","appId","cluster","status"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}},"400":{"description":"Unable to verify external image"},"409":{"description":"There is already a service with the same derived identifier"}},"tags":["Services","project"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":54,"description":"The name of the service.","example":"Example Service"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"A description of the service.","example":"A service description"},"stageId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"billing":{"type":"object","properties":{"deploymentPlan":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The ID of the deployment plan to use.","example":"nf-compute-20"},"gpu":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"gpuType":{"type":"string"},"gpuCount":{"type":"integer"},"timesliced":{"type":"boolean"}},"required":["gpuType"],"additionalProperties":false}},"additionalProperties":false}},"required":["deploymentPlan"],"additionalProperties":false},"infrastructure":{"type":"object","properties":{"architecture":{"type":"string","enum":["x86","arm"]}},"additionalProperties":false},"deployment":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["deployment","statefulSet"],"description":"The way the service should be deployed. Either as a deployment (default), or as a stateful set."},"instances":{"type":"integer","minimum":0,"description":"The number of instances to run the service on.","example":1},"buildpack":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customProcess","customCommand","customEntrypointCustomCommand","originalEntrypointCustomCommand"],"description":"Type of buildpack run configuration"},"customProcess":{"type":"string","description":"Custom process which should be run. Required in case where `configType` is `customProcess`"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be run. Required in case where `configType` is `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be run. Required in case where `configType` is `customCommand`, `customEntrypointCustomCommand` or `originalEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of buildpack runtime"},"docker":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customEntrypoint","customCommand","customEntrypointCustomCommand"],"description":"Type of entrypoint & command override configuration","example":"default"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be used. Required in case where `configType` is `customEntrypoint` or `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be used. Required in case where `configType` is `customCommand` or `customEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of docker runtime"},"storage":{"type":"object","properties":{"useHdbStorage":{"type":"boolean"},"usePdSsdStorage":{"type":"boolean"},"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":1024,"description":"Ephemeral storage per container in MB","example":1024}},"additionalProperties":false},"shmSize":{"type":"integer","minimum":64,"description":"Configures the amount of available memory-backed disk space available to /dev/shm"}},"additionalProperties":false},"strategy":{"type":"object","properties":{"type":{"type":"string","enum":["recreate","rollout-steady","rollout-balanced","rollout-fast","custom"],"description":"Configures the instance roll out strategy of your service. Currently only available via feature flag."},"settings":{"type":"object","properties":{"maxSurge":{"oneOf":[{"type":"integer","minimum":0,"description":"A non-negative integer."},{"type":"string","pattern":"^\\d+%$","description":"A percentage string in the range 0% to 100%, e.g. `25%`"}],"description":"Maximum number or percentage of pods that can be created above the desired count."},"maxUnavailable":{"anyOf":[{"type":"integer","minimum":0,"description":"A non-negative integer."},{"type":"string","pattern":"^\\d+%$","description":"A percentage string in the range 0% to 100%, e.g. `25%`"}],"description":"Maximum number or percentage of pods that can be unavailable during the update."}},"required":["maxSurge","maxUnavailable"],"additionalProperties":false}},"additionalProperties":false,"description":"Roll out strategy of the service"},"zonalRedundancy":{"type":"object","properties":{"type":{"type":"string","enum":["disabled","preferred","required"],"description":"Defines scheduling behaviour across different zones within the same region."},"minZones":{"type":"integer","minimum":1,"description":"Defines how many zones are required and will prevent containers from additional scheduling into existing zones. (Only relevant if type is set to \"required\")"}},"additionalProperties":false},"gpu":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"gpuType":{"type":"string"},"gpuCount":{"type":"integer"},"timesliced":{"type":"boolean"}},"required":["gpuType"],"additionalProperties":false}},"additionalProperties":false},"gracePeriodSeconds":{"type":"integer","minimum":15,"maximum":600,"description":"The 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."},"gradualRolloutStrategyId":{"type":"string","pattern":"^[A-Za-z0-9-]+$","nullable":true,"description":"The id of the strategy to be attached to service.","examples":["strategy-id","strategy-id"]},"ssh":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Enables SSH access if the resource matches an SSH identity selector."}},"required":["enabled"],"additionalProperties":false,"description":"Controls related to SSH access within the resource."},"metadata":{"type":"object","properties":{"labels":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom labels for the workload."},"annotations":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom annotations for the workload as string or object."}},"additionalProperties":false,"description":"Allow setting custom labels and annotations for workloads."},"internal":{"type":"object","properties":{"id":{"anyOf":[{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":54,"example":"example-build-service"},{"type":"string","example":"example-project/example-build-service"}],"description":"ID of the build service to deploy"},"branch":{"type":"string","description":"Branch to deploy","example":"master"},"buildSHA":{"oneOf":[{"type":"string","minLength":40,"maxLength":40,"description":"A commit sha."},{"type":"string","enum":["latest"],"description":"Latest commit."}],"description":"Commit SHA to deploy, or 'latest' to deploy the most recent commit","example":"latest"},"buildId":{"type":"string","description":"ID of the build that should be deployed","example":"premium-guide-6393"}},"additionalProperties":false}},"required":["instances","internal"],"additionalProperties":false,"description":"Internal deployment"},{"type":"object","properties":{"type":{"type":"string","enum":["deployment","statefulSet"],"description":"The way the service should be deployed. Either as a deployment (default), or as a stateful set."},"instances":{"type":"integer","minimum":0,"description":"The number of instances to run the service on.","example":1},"buildpack":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customProcess","customCommand","customEntrypointCustomCommand","originalEntrypointCustomCommand"],"description":"Type of buildpack run configuration"},"customProcess":{"type":"string","description":"Custom process which should be run. Required in case where `configType` is `customProcess`"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be run. Required in case where `configType` is `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be run. Required in case where `configType` is `customCommand`, `customEntrypointCustomCommand` or `originalEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of buildpack runtime"},"docker":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customEntrypoint","customCommand","customEntrypointCustomCommand"],"description":"Type of entrypoint & command override configuration","example":"default"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be used. Required in case where `configType` is `customEntrypoint` or `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be used. Required in case where `configType` is `customCommand` or `customEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of docker runtime"},"storage":{"type":"object","properties":{"useHdbStorage":{"type":"boolean"},"usePdSsdStorage":{"type":"boolean"},"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":1024,"description":"Ephemeral storage per container in MB","example":1024}},"additionalProperties":false},"shmSize":{"type":"integer","minimum":64,"description":"Configures the amount of available memory-backed disk space available to /dev/shm"}},"additionalProperties":false},"strategy":{"type":"object","properties":{"type":{"type":"string","enum":["recreate","rollout-steady","rollout-balanced","rollout-fast","custom"],"description":"Configures the instance roll out strategy of your service. Currently only available via feature flag."},"settings":{"type":"object","properties":{"maxSurge":{"oneOf":[{"type":"integer","minimum":0,"description":"A non-negative integer."},{"type":"string","pattern":"^\\d+%$","description":"A percentage string in the range 0% to 100%, e.g. `25%`"}],"description":"Maximum number or percentage of pods that can be created above the desired count."},"maxUnavailable":{"anyOf":[{"type":"integer","minimum":0,"description":"A non-negative integer."},{"type":"string","pattern":"^\\d+%$","description":"A percentage string in the range 0% to 100%, e.g. `25%`"}],"description":"Maximum number or percentage of pods that can be unavailable during the update."}},"required":["maxSurge","maxUnavailable"],"additionalProperties":false}},"additionalProperties":false,"description":"Roll out strategy of the service"},"zonalRedundancy":{"type":"object","properties":{"type":{"type":"string","enum":["disabled","preferred","required"],"description":"Defines scheduling behaviour across different zones within the same region."},"minZones":{"type":"integer","minimum":1,"description":"Defines how many zones are required and will prevent containers from additional scheduling into existing zones. (Only relevant if type is set to \"required\")"}},"additionalProperties":false},"gpu":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"gpuType":{"type":"string"},"gpuCount":{"type":"integer"},"timesliced":{"type":"boolean"}},"required":["gpuType"],"additionalProperties":false}},"additionalProperties":false},"gracePeriodSeconds":{"type":"integer","minimum":15,"maximum":600,"description":"The 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."},"gradualRolloutStrategyId":{"type":"string","pattern":"^[A-Za-z0-9-]+$","nullable":true,"description":"The id of the strategy to be attached to service.","examples":["strategy-id","strategy-id"]},"ssh":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Enables SSH access if the resource matches an SSH identity selector."}},"required":["enabled"],"additionalProperties":false,"description":"Controls related to SSH access within the resource."},"metadata":{"type":"object","properties":{"labels":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom labels for the workload."},"annotations":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom annotations for the workload as string or object."}},"additionalProperties":false,"description":"Allow setting custom labels and annotations for workloads."},"external":{"type":"object","properties":{"imagePath":{"type":"string","pattern":"^(?:(?:https?:\\/\\/)?([a-zA-Z0-9\\-]+\\.[a-zA-Z0-9\\.\\-]+)(\\/v1)?)?(?:\\/)?([a-zA-Z/-9\\.\\-_]+)(?:\\:([a-zA-Z/-9\\.\\-_\\:]+)|\\@([a-zA-Z/-9\\.\\-_\\:]+))$","description":"Image to be deployed. When not deploying from Dockerhub the URL must be specified.","example":"nginx:latest"},"credentials":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"ID of the saved credentials to use to access this external image.","example":"example-credentials"}},"required":["imagePath"],"additionalProperties":false}},"required":["instances","external"],"additionalProperties":false,"description":"External deployment"},{"type":"object","properties":{"type":{"type":"string","enum":["deployment","statefulSet"],"description":"The way the service should be deployed. Either as a deployment (default), or as a stateful set."},"instances":{"type":"integer","minimum":0,"description":"The number of instances to run the service on.","example":1},"buildpack":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customProcess","customCommand","customEntrypointCustomCommand","originalEntrypointCustomCommand"],"description":"Type of buildpack run configuration"},"customProcess":{"type":"string","description":"Custom process which should be run. Required in case where `configType` is `customProcess`"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be run. Required in case where `configType` is `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be run. Required in case where `configType` is `customCommand`, `customEntrypointCustomCommand` or `originalEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of buildpack runtime"},"docker":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customEntrypoint","customCommand","customEntrypointCustomCommand"],"description":"Type of entrypoint & command override configuration","example":"default"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be used. Required in case where `configType` is `customEntrypoint` or `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be used. Required in case where `configType` is `customCommand` or `customEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of docker runtime"},"storage":{"type":"object","properties":{"useHdbStorage":{"type":"boolean"},"usePdSsdStorage":{"type":"boolean"},"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":1024,"description":"Ephemeral storage per container in MB","example":1024}},"additionalProperties":false},"shmSize":{"type":"integer","minimum":64,"description":"Configures the amount of available memory-backed disk space available to /dev/shm"}},"additionalProperties":false},"strategy":{"type":"object","properties":{"type":{"type":"string","enum":["recreate","rollout-steady","rollout-balanced","rollout-fast","custom"],"description":"Configures the instance roll out strategy of your service. Currently only available via feature flag."},"settings":{"type":"object","properties":{"maxSurge":{"oneOf":[{"type":"integer","minimum":0,"description":"A non-negative integer."},{"type":"string","pattern":"^\\d+%$","description":"A percentage string in the range 0% to 100%, e.g. `25%`"}],"description":"Maximum number or percentage of pods that can be created above the desired count."},"maxUnavailable":{"anyOf":[{"type":"integer","minimum":0,"description":"A non-negative integer."},{"type":"string","pattern":"^\\d+%$","description":"A percentage string in the range 0% to 100%, e.g. `25%`"}],"description":"Maximum number or percentage of pods that can be unavailable during the update."}},"required":["maxSurge","maxUnavailable"],"additionalProperties":false}},"additionalProperties":false,"description":"Roll out strategy of the service"},"zonalRedundancy":{"type":"object","properties":{"type":{"type":"string","enum":["disabled","preferred","required"],"description":"Defines scheduling behaviour across different zones within the same region."},"minZones":{"type":"integer","minimum":1,"description":"Defines how many zones are required and will prevent containers from additional scheduling into existing zones. (Only relevant if type is set to \"required\")"}},"additionalProperties":false},"gpu":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"gpuType":{"type":"string"},"gpuCount":{"type":"integer"},"timesliced":{"type":"boolean"}},"required":["gpuType"],"additionalProperties":false}},"additionalProperties":false},"gracePeriodSeconds":{"type":"integer","minimum":15,"maximum":600,"description":"The 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."},"gradualRolloutStrategyId":{"type":"string","pattern":"^[A-Za-z0-9-]+$","nullable":true,"description":"The id of the strategy to be attached to service.","examples":["strategy-id","strategy-id"]},"ssh":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Enables SSH access if the resource matches an SSH identity selector."}},"required":["enabled"],"additionalProperties":false,"description":"Controls related to SSH access within the resource."},"metadata":{"type":"object","properties":{"labels":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom labels for the workload."},"annotations":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom annotations for the workload as string or object."}},"additionalProperties":false,"description":"Allow setting custom labels and annotations for workloads."}},"required":["instances"],"additionalProperties":false,"description":"Choose later"}],"description":"Deployment type"},"ports":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":1,"maxLength":8,"description":"The name used to identify the port.","example":"p01"},"internalPort":{"type":"integer","minimum":1,"maximum":65535,"description":"The port number.","example":8080},"public":{"type":"boolean","description":"If true, the port will be exposed publicly.","example":true,"default":false},"security":{"type":"object","properties":{"credentials":{"type":"array","items":{"type":"object","properties":{"username":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The username to access the service","example":"admin"},"password":{"type":"string","description":"The password to access the service with this username.","example":"password123"},"type":{"type":"string","enum":["basic-auth"],"description":"The type of authentication used","example":"basic-auth"}},"required":["username","password","type"],"additionalProperties":false},"description":"An array of credentials to access the service."},"ip":{"type":"array","items":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","description":"An IP address used by this rule","example":"127.0.0.1"},"description":"An array of IP addresses used for this rule"},"action":{"type":"string","enum":["ALLOW","DENY"],"description":"The action for this rule.","example":"DENY"}},"required":["addresses","action"],"additionalProperties":false},"description":"An array of IP address policies."},"policies":{"type":"array","items":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","description":"An IP address used by this rule","example":"127.0.0.1"},"description":"An array of IP addresses used for this rule"},"action":{"type":"string","enum":["ALLOW","DENY"],"description":"The action for this rule.","example":"DENY"}},"required":["addresses","action"],"additionalProperties":false},"description":"An array of IP address policies."},"sso":{"type":"object","properties":{"organizationId":{"type":"string","description":"ID of the SSO organization that the user will have to be a member of"},"directoryGroupIds":{"type":"array","items":{"type":"string"},"description":"Array of directory groups that will have access"},"allowAnyOrgUsers":{"type":"boolean","description":"Allow entire organization to access this service"},"validateInternalTraffic":{"type":"boolean","description":"Enforce internal traffic through SSO authentication flow"},"setCookieOnRootDomain":{"type":"boolean","description":"Set SSO authentication cookie on root domain"},"allowInternalTrafficViaPublicDns":{"type":"boolean","description":"Allow internal traffic from same or shared projects via public DNS to skip SSO authentication flow"}},"additionalProperties":false,"description":"Configure port authentication via SSO"},"headers":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"regexMode":{"type":"boolean","example":false,"default":false},"name":{"type":"string","pattern":"^[a-zA-Z0-9_\\-%$+]+$","example":"headerName"},"value":{"type":"string","example":"headerValue"}},"required":["name","value"],"additionalProperties":false,"description":"Matches provided headers as strings."},{"type":"object","properties":{"regexMode":{"type":"boolean","example":true,"default":false},"name":{"type":"string","example":"headerName"},"value":{"type":"string","example":"headerValue"}},"required":["name","value"],"additionalProperties":false,"description":"Matches provided headers as regex."}]},"description":"List of header authentication settings, it checks the presence of all headers and compares it against the expected value. Wildcard (*) is supported."},"verificationMode":{"type":"string","enum":["or","and"],"description":"Mode used to verify multiple security features like ip policies and SSO authentication"},"securePathConfiguration":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Enable security policies on a path-level style"},"skipSecurityPoliciesForInternalTrafficViaPublicDns":{"type":"boolean","description":"Allow internal traffic from same or shared projects via public DNS to skip all security policies"},"rules":{"type":"array","items":{"type":"object","properties":{"paths":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"path":{"type":"string","pattern":"^\\/([_a-zA-Z0-9-&?=.]*)((\\/[_a-zA-Z0-9-&?=.]+)*(\\/)?)?$"},"routingMode":{"type":"string","enum":["prefix"],"description":"Mode of the path, determining how the URI will be interpreted.","example":"prefix"},"priority":{"type":"integer","minimum":0,"maximum":100,"example":80}},"required":["path","routingMode","priority"],"additionalProperties":false,"description":"Route when the path starts with the provided prefix."},{"type":"object","properties":{"path":{"type":"string","pattern":"^\\/([_a-zA-Z0-9-&?=.]*)((\\/[_a-zA-Z0-9-&?=.]+)*(\\/)?)?$"},"routingMode":{"type":"string","enum":["exact"],"description":"Mode of the path, determining how the URI will be interpreted.","example":"exact"},"priority":{"type":"integer","minimum":0,"maximum":100,"example":80}},"required":["path","routingMode","priority"],"additionalProperties":false,"description":"Route when the path is an exact match."},{"type":"object","properties":{"path":{"type":"string"},"routingMode":{"type":"string","enum":["regex"],"description":"Mode of the path, determining how the URI will be interpreted.","example":"regex"},"priority":{"type":"integer","minimum":0,"maximum":100,"example":80}},"required":["path","routingMode","priority"],"additionalProperties":false,"description":"Route when the path matches the provided regex."}],"description":"Data about how the path should be handled."},"description":"Array of path objects which represent the paths and their priority for which the security policies will be enforced"},"accessMode":{"type":"string","enum":["protected","unprotected"],"description":"Specify the way the path rule will behave when processing policies. This enables an allow-list/deny-list approach for access control on each path","example":"protected"},"securityPolicies":{"type":"object","properties":{"orPolicies":{"type":"object","properties":{"credentials":{"type":"array","items":{"type":"object","properties":{"username":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The username to access the service","example":"admin"},"password":{"type":"string","description":"The password to access the service with this username.","example":"password123"},"type":{"type":"string","enum":["basic-auth"],"description":"The type of authentication used","example":"basic-auth"}},"required":["username","password","type"],"additionalProperties":false},"description":"An array of credentials to access the service."},"ip":{"type":"array","items":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","description":"An IP address used by this rule","example":"127.0.0.1"},"description":"An array of IP addresses used for this rule"},"action":{"type":"string","enum":["ALLOW","DENY"],"description":"The action for this rule.","example":"DENY"}},"required":["addresses","action"],"additionalProperties":false},"description":"An array of IP address policies."},"policies":{"type":"array","items":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","description":"An IP address used by this rule","example":"127.0.0.1"},"description":"An array of IP addresses used for this rule"},"action":{"type":"string","enum":["ALLOW","DENY"],"description":"The action for this rule.","example":"DENY"}},"required":["addresses","action"],"additionalProperties":false},"description":"An array of IP address policies."},"sso":{"type":"object","properties":{"organizationId":{"type":"string","description":"ID of the SSO organization that the user will have to be a member of"},"directoryGroupIds":{"type":"array","items":{"type":"string"},"description":"Array of directory groups that will have access"},"allowAnyOrgUsers":{"type":"boolean","description":"Allow entire organization to access this service"},"validateInternalTraffic":{"type":"boolean","description":"Enforce internal traffic through SSO authentication flow"},"setCookieOnRootDomain":{"type":"boolean","description":"Set SSO authentication cookie on root domain"},"allowInternalTrafficViaPublicDns":{"type":"boolean","description":"Allow internal traffic from same or shared projects via public DNS to skip SSO authentication flow"}},"additionalProperties":false,"description":"Configure port authentication via SSO"},"headers":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"regexMode":{"type":"boolean","example":false,"default":false},"name":{"type":"string","pattern":"^[a-zA-Z0-9_\\-%$+]+$","example":"headerName"},"value":{"type":"string","example":"headerValue"}},"required":["name","value"],"additionalProperties":false,"description":"Matches provided headers as strings."},{"type":"object","properties":{"regexMode":{"type":"boolean","example":true,"default":false},"name":{"type":"string","example":"headerName"},"value":{"type":"string","example":"headerValue"}},"required":["name","value"],"additionalProperties":false,"description":"Matches provided headers as regex."}]},"description":"List of header authentication settings, it checks the presence of all headers and compares it against the expected value. Wildcard (*) is supported."}},"additionalProperties":false},"requiredPolicies":{"type":"object","properties":{"credentials":{"type":"array","items":{"type":"object","properties":{"username":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The username to access the service","example":"admin"},"password":{"type":"string","description":"The password to access the service with this username.","example":"password123"},"type":{"type":"string","enum":["basic-auth"],"description":"The type of authentication used","example":"basic-auth"}},"required":["username","password","type"],"additionalProperties":false},"description":"An array of credentials to access the service."},"ip":{"type":"array","items":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","description":"An IP address used by this rule","example":"127.0.0.1"},"description":"An array of IP addresses used for this rule"},"action":{"type":"string","enum":["ALLOW","DENY"],"description":"The action for this rule.","example":"DENY"}},"required":["addresses","action"],"additionalProperties":false},"description":"An array of IP address policies."},"policies":{"type":"array","items":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","description":"An IP address used by this rule","example":"127.0.0.1"},"description":"An array of IP addresses used for this rule"},"action":{"type":"string","enum":["ALLOW","DENY"],"description":"The action for this rule.","example":"DENY"}},"required":["addresses","action"],"additionalProperties":false},"description":"An array of IP address policies."},"sso":{"type":"object","properties":{"organizationId":{"type":"string","description":"ID of the SSO organization that the user will have to be a member of"},"directoryGroupIds":{"type":"array","items":{"type":"string"},"description":"Array of directory groups that will have access"},"allowAnyOrgUsers":{"type":"boolean","description":"Allow entire organization to access this service"},"validateInternalTraffic":{"type":"boolean","description":"Enforce internal traffic through SSO authentication flow"},"setCookieOnRootDomain":{"type":"boolean","description":"Set SSO authentication cookie on root domain"},"allowInternalTrafficViaPublicDns":{"type":"boolean","description":"Allow internal traffic from same or shared projects via public DNS to skip SSO authentication flow"}},"additionalProperties":false,"description":"Configure port authentication via SSO"},"headers":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"regexMode":{"type":"boolean","example":false,"default":false},"name":{"type":"string","pattern":"^[a-zA-Z0-9_\\-%$+]+$","example":"headerName"},"value":{"type":"string","example":"headerValue"}},"required":["name","value"],"additionalProperties":false,"description":"Matches provided headers as strings."},{"type":"object","properties":{"regexMode":{"type":"boolean","example":true,"default":false},"name":{"type":"string","example":"headerName"},"value":{"type":"string","example":"headerValue"}},"required":["name","value"],"additionalProperties":false,"description":"Matches provided headers as regex."}]},"description":"List of header authentication settings, it checks the presence of all headers and compares it against the expected value. Wildcard (*) is supported."}},"additionalProperties":false}},"additionalProperties":false}},"required":["paths","accessMode"],"additionalProperties":false},"default":[]}},"additionalProperties":false}},"additionalProperties":false,"default":{"credentials":[],"policies":[],"sso":{}}},"domains":{"type":"array","items":{"type":"string","description":"A domain to redirect to this port.","example":"app.example.com"},"description":"An array of domains to redirect to this port. Each domain must first be verified and registered to your account.","default":[]},"disableNfDomain":{"type":"boolean","description":"Disable routing on the default code.run domain for public HTTP ports with custom domains.","default":false},"advancedOptions":{"type":"object","properties":{"enableTlsPassthrough":{"type":"boolean","description":"Whether this port should use pass through mode for TLS"}},"additionalProperties":false},"protocol":{"type":"string","enum":["HTTP","HTTP/2","TCP","UDP"],"description":"The protocol to use for the port.","example":"HTTP"}},"required":["name","internalPort","protocol"],"additionalProperties":false},"default":[]},"runtimeEnvironment":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"An object containing the runtime environment to set for the service","example":{"VARIABLE_1":"abcdef","VARIABLE_2":"12345"},"default":{}},"runtimeFiles":{"type":"object","properties":{},"description":"Secret files as JSON object, encrypted at rest. File path must be absolute","example":{"/dir/fileName":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"healthChecks":{"type":"array","items":{"type":"object","properties":{"protocol":{"type":"string","enum":["HTTP","CMD","TCP"],"description":"The protocol to access the health check with.","example":"HTTP"},"type":{"type":"string","enum":["livenessProbe","readinessProbe","startupProbe"],"description":"The type of health check.","example":"readinessProbe"},"path":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*((\\?([a-zA-Z0-9-._]+(=[a-zA-Z0-9-._]+)?)*)(&([a-zA-Z0-9-._]+(=[a-zA-Z0-9-._]+)?)*)*)?$","description":"The path of the health check endpoint. Required when protocol is HTTP.","example":"/health-check"},"cmd":{"type":"string","description":"The command to run for the health check. Required when protocol is CMD"},"port":{"type":"integer","minimum":1,"description":"Port number for the health check endpoint. Required when protocol is HTTP.","example":8080},"initialDelaySeconds":{"type":"integer","minimum":1,"maximum":180,"description":"Initial delay, in seconds, before the health check is first run.","example":10},"periodSeconds":{"type":"integer","minimum":10,"maximum":600,"description":"The time between each check, in seconds.","example":60},"timeoutSeconds":{"type":"integer","minimum":1,"maximum":60,"description":"The time to wait for a response before marking the health check as a failure.","example":1},"failureThreshold":{"type":"integer","minimum":1,"maximum":255,"description":"The maximum number of allowed failures.","example":3},"successThreshold":{"type":"integer","minimum":1,"maximum":255,"description":"The number of successes required to mark the health check as a success.","example":1}},"required":["protocol","type","initialDelaySeconds","periodSeconds","timeoutSeconds","failureThreshold"],"additionalProperties":false,"description":"A health check object."},"description":"An array of health checks."},"loadBalancing":{"type":"object","properties":{"mode":{"type":"string","enum":["leastConnection","consistentHash","roundRobin","consistentReplicaRouting"]},"consistentHash":{"type":"object","properties":{"mode":{"type":"string","enum":["ip","customHeader"]},"header":{"type":"string","nullable":true}},"required":["mode"],"additionalProperties":false},"consistentReplicaRouting":{"type":"object","properties":{"mode":{"type":"string","enum":["path","header"]}},"required":["mode"],"additionalProperties":false}},"required":["mode"],"additionalProperties":false},"autoscaling":{"type":"object","properties":{"horizontal":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether horizontal autoscaling should be enabled","example":true},"minReplicas":{"type":"number","format":"float","minimum":1,"description":"Minimum number of replicas which should be running at any time","example":1},"maxReplicas":{"type":"number","format":"float","description":"Maximum number of replicas which can be running at any time","example":3},"cpu":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether autoscaling should take into account cpu usage"},"thresholdPercentage":{"type":"integer","minimum":10,"maximum":100,"description":"Threshold CPU usage percentage at which the workload will be scaled"}},"required":["enabled","thresholdPercentage"],"additionalProperties":false},"memory":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether autoscaling should take into account memory usage"},"thresholdPercentage":{"type":"integer","minimum":10,"maximum":100,"description":"Threshold memory usage percentage at which the workload will be scaled"}},"required":["enabled","thresholdPercentage"],"additionalProperties":false},"rps":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether autoscaling should take into requests-per-second"},"thresholdValue":{"type":"integer","minimum":1,"description":"Threshold rps value on which the workload will be scaled"}},"required":["enabled","thresholdValue"],"additionalProperties":false},"userMetrics":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether to enable handling for custom metrics in the autoscaling configuration","example":true},"exposedMetricsPath":{"type":"string","pattern":"^\\/([_a-zA-Z0-9-&?=.]*)((\\/[_a-zA-Z0-9-&?=.]+)*(\\/)?)?$","description":"Path on which the metrics will be exposed by the service..","example":"/metrics"},"exposedMetricsPort":{"type":"integer","description":"Port on which the metrics will be exposed by the service.","example":8080},"metrics":{"type":"array","items":{"type":"object","properties":{"metricName":{"type":"string","pattern":"[a-zA-Z_:][a-zA-Z0-9_:]*$","description":"Name of the custom metric","example":"example-metric"},"metricType":{"type":"string","enum":["gauge","counter"],"description":"Type of metric exposed, this will affect how it'll be queried by the autoscaler component: Gauge will be used as is, Counter will be used with rate()","example":"gauge"},"thresholdValue":{"type":"number","format":"float","description":"Threshold value on which the workload will be scaled. Represents the average value across all running pods.","example":2}},"required":["metricName","metricType","thresholdValue"],"additionalProperties":false},"description":"Array of custom metrics exposed by the service that will be used by the autoscaling configuration. At least one metric is required."}},"required":["enabled","exposedMetricsPath","exposedMetricsPort","metrics"],"additionalProperties":false}},"required":["enabled","minReplicas","maxReplicas"],"additionalProperties":false,"description":"Describes the horizontal autoscaling configuration"}},"additionalProperties":false,"description":"Describes all autoscaling configurations"},"createOptions":{"type":"object","properties":{"volumesToAttach":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39}}},"additionalProperties":false}},"required":["name","billing","deployment"],"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Project > Services > General > Create","x-nf-team-scoped":true,"x-nf-subheading":"create service","x-nf-cli-command":["create","service","deployment"]},"v1-projects--projectId--services-deployment-put":{"operationId":"putProjectsServicesDeployment","summary":"Put deployment service","description":"Creates or updates a deployment service.","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}}],"responses":{"200":{"description":"Details about the created or updated service.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":54,"description":"The name of the service.","example":"Example Service"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"A description of the service.","example":"A service description"},"stageId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"billing":{"type":"object","properties":{"deploymentPlan":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The ID of the deployment plan to use.","example":"nf-compute-20"},"gpu":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"gpuType":{"type":"string"},"gpuCount":{"type":"integer"},"timesliced":{"type":"boolean"}},"required":["gpuType"],"additionalProperties":false}},"additionalProperties":false}},"required":["deploymentPlan"],"additionalProperties":false},"infrastructure":{"type":"object","properties":{"architecture":{"type":"string","enum":["x86","arm"]}},"additionalProperties":false},"ports":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":1,"maxLength":8,"description":"The name used to identify the port.","example":"p01"},"internalPort":{"type":"integer","minimum":1,"maximum":65535,"description":"The port number.","example":8080},"public":{"type":"boolean","description":"If true, the port will be exposed publicly.","example":true,"default":false},"security":{"type":"object","properties":{"credentials":{"type":"array","items":{"type":"object","properties":{"username":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The username to access the service","example":"admin"},"password":{"type":"string","description":"The password to access the service with this username.","example":"password123"},"type":{"type":"string","enum":["basic-auth"],"description":"The type of authentication used","example":"basic-auth"}},"required":["username","password","type"],"additionalProperties":false},"description":"An array of credentials to access the service."},"ip":{"type":"array","items":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","description":"An IP address used by this rule","example":"127.0.0.1"},"description":"An array of IP addresses used for this rule"},"action":{"type":"string","enum":["ALLOW","DENY"],"description":"The action for this rule.","example":"DENY"}},"required":["addresses","action"],"additionalProperties":false},"description":"An array of IP address policies."},"policies":{"type":"array","items":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","description":"An IP address used by this rule","example":"127.0.0.1"},"description":"An array of IP addresses used for this rule"},"action":{"type":"string","enum":["ALLOW","DENY"],"description":"The action for this rule.","example":"DENY"}},"required":["addresses","action"],"additionalProperties":false},"description":"An array of IP address policies."},"sso":{"type":"object","properties":{"organizationId":{"type":"string","description":"ID of the SSO organization that the user will have to be a member of"},"directoryGroupIds":{"type":"array","items":{"type":"string"},"description":"Array of directory groups that will have access"},"allowAnyOrgUsers":{"type":"boolean","description":"Allow entire organization to access this service"},"validateInternalTraffic":{"type":"boolean","description":"Enforce internal traffic through SSO authentication flow"},"setCookieOnRootDomain":{"type":"boolean","description":"Set SSO authentication cookie on root domain"},"allowInternalTrafficViaPublicDns":{"type":"boolean","description":"Allow internal traffic from same or shared projects via public DNS to skip SSO authentication flow"}},"additionalProperties":false,"description":"Configure port authentication via SSO"},"headers":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"regexMode":{"type":"boolean","example":false,"default":false},"name":{"type":"string","pattern":"^[a-zA-Z0-9_\\-%$+]+$","example":"headerName"},"value":{"type":"string","example":"headerValue"}},"required":["name","value"],"additionalProperties":false,"description":"Matches provided headers as strings."},{"type":"object","properties":{"regexMode":{"type":"boolean","example":true,"default":false},"name":{"type":"string","example":"headerName"},"value":{"type":"string","example":"headerValue"}},"required":["name","value"],"additionalProperties":false,"description":"Matches provided headers as regex."}]},"description":"List of header authentication settings, it checks the presence of all headers and compares it against the expected value. Wildcard (*) is supported."},"verificationMode":{"type":"string","enum":["or","and"],"description":"Mode used to verify multiple security features like ip policies and SSO authentication"},"securePathConfiguration":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Enable security policies on a path-level style"},"skipSecurityPoliciesForInternalTrafficViaPublicDns":{"type":"boolean","description":"Allow internal traffic from same or shared projects via public DNS to skip all security policies"},"rules":{"type":"array","items":{"type":"object","properties":{"paths":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"path":{"type":"string","pattern":"^\\/([_a-zA-Z0-9-&?=.]*)((\\/[_a-zA-Z0-9-&?=.]+)*(\\/)?)?$"},"routingMode":{"type":"string","enum":["prefix"],"description":"Mode of the path, determining how the URI will be interpreted.","example":"prefix"},"priority":{"type":"integer","minimum":0,"maximum":100,"example":80}},"required":["path","routingMode","priority"],"additionalProperties":false,"description":"Route when the path starts with the provided prefix."},{"type":"object","properties":{"path":{"type":"string","pattern":"^\\/([_a-zA-Z0-9-&?=.]*)((\\/[_a-zA-Z0-9-&?=.]+)*(\\/)?)?$"},"routingMode":{"type":"string","enum":["exact"],"description":"Mode of the path, determining how the URI will be interpreted.","example":"exact"},"priority":{"type":"integer","minimum":0,"maximum":100,"example":80}},"required":["path","routingMode","priority"],"additionalProperties":false,"description":"Route when the path is an exact match."},{"type":"object","properties":{"path":{"type":"string"},"routingMode":{"type":"string","enum":["regex"],"description":"Mode of the path, determining how the URI will be interpreted.","example":"regex"},"priority":{"type":"integer","minimum":0,"maximum":100,"example":80}},"required":["path","routingMode","priority"],"additionalProperties":false,"description":"Route when the path matches the provided regex."}],"description":"Data about how the path should be handled."},"description":"Array of path objects which represent the paths and their priority for which the security policies will be enforced"},"accessMode":{"type":"string","enum":["protected","unprotected"],"description":"Specify the way the path rule will behave when processing policies. This enables an allow-list/deny-list approach for access control on each path","example":"protected"},"securityPolicies":{"type":"object","properties":{"orPolicies":{"type":"object","properties":{"credentials":{"type":"array","items":{"type":"object","properties":{"username":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The username to access the service","example":"admin"},"password":{"type":"string","description":"The password to access the service with this username.","example":"password123"},"type":{"type":"string","enum":["basic-auth"],"description":"The type of authentication used","example":"basic-auth"}},"required":["username","password","type"],"additionalProperties":false},"description":"An array of credentials to access the service."},"ip":{"type":"array","items":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","description":"An IP address used by this rule","example":"127.0.0.1"},"description":"An array of IP addresses used for this rule"},"action":{"type":"string","enum":["ALLOW","DENY"],"description":"The action for this rule.","example":"DENY"}},"required":["addresses","action"],"additionalProperties":false},"description":"An array of IP address policies."},"policies":{"type":"array","items":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","description":"An IP address used by this rule","example":"127.0.0.1"},"description":"An array of IP addresses used for this rule"},"action":{"type":"string","enum":["ALLOW","DENY"],"description":"The action for this rule.","example":"DENY"}},"required":["addresses","action"],"additionalProperties":false},"description":"An array of IP address policies."},"sso":{"type":"object","properties":{"organizationId":{"type":"string","description":"ID of the SSO organization that the user will have to be a member of"},"directoryGroupIds":{"type":"array","items":{"type":"string"},"description":"Array of directory groups that will have access"},"allowAnyOrgUsers":{"type":"boolean","description":"Allow entire organization to access this service"},"validateInternalTraffic":{"type":"boolean","description":"Enforce internal traffic through SSO authentication flow"},"setCookieOnRootDomain":{"type":"boolean","description":"Set SSO authentication cookie on root domain"},"allowInternalTrafficViaPublicDns":{"type":"boolean","description":"Allow internal traffic from same or shared projects via public DNS to skip SSO authentication flow"}},"additionalProperties":false,"description":"Configure port authentication via SSO"},"headers":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"regexMode":{"type":"boolean","example":false,"default":false},"name":{"type":"string","pattern":"^[a-zA-Z0-9_\\-%$+]+$","example":"headerName"},"value":{"type":"string","example":"headerValue"}},"required":["name","value"],"additionalProperties":false,"description":"Matches provided headers as strings."},{"type":"object","properties":{"regexMode":{"type":"boolean","example":true,"default":false},"name":{"type":"string","example":"headerName"},"value":{"type":"string","example":"headerValue"}},"required":["name","value"],"additionalProperties":false,"description":"Matches provided headers as regex."}]},"description":"List of header authentication settings, it checks the presence of all headers and compares it against the expected value. Wildcard (*) is supported."}},"additionalProperties":false},"requiredPolicies":{"type":"object","properties":{"credentials":{"type":"array","items":{"type":"object","properties":{"username":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The username to access the service","example":"admin"},"password":{"type":"string","description":"The password to access the service with this username.","example":"password123"},"type":{"type":"string","enum":["basic-auth"],"description":"The type of authentication used","example":"basic-auth"}},"required":["username","password","type"],"additionalProperties":false},"description":"An array of credentials to access the service."},"ip":{"type":"array","items":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","description":"An IP address used by this rule","example":"127.0.0.1"},"description":"An array of IP addresses used for this rule"},"action":{"type":"string","enum":["ALLOW","DENY"],"description":"The action for this rule.","example":"DENY"}},"required":["addresses","action"],"additionalProperties":false},"description":"An array of IP address policies."},"policies":{"type":"array","items":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","description":"An IP address used by this rule","example":"127.0.0.1"},"description":"An array of IP addresses used for this rule"},"action":{"type":"string","enum":["ALLOW","DENY"],"description":"The action for this rule.","example":"DENY"}},"required":["addresses","action"],"additionalProperties":false},"description":"An array of IP address policies."},"sso":{"type":"object","properties":{"organizationId":{"type":"string","description":"ID of the SSO organization that the user will have to be a member of"},"directoryGroupIds":{"type":"array","items":{"type":"string"},"description":"Array of directory groups that will have access"},"allowAnyOrgUsers":{"type":"boolean","description":"Allow entire organization to access this service"},"validateInternalTraffic":{"type":"boolean","description":"Enforce internal traffic through SSO authentication flow"},"setCookieOnRootDomain":{"type":"boolean","description":"Set SSO authentication cookie on root domain"},"allowInternalTrafficViaPublicDns":{"type":"boolean","description":"Allow internal traffic from same or shared projects via public DNS to skip SSO authentication flow"}},"additionalProperties":false,"description":"Configure port authentication via SSO"},"headers":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"regexMode":{"type":"boolean","example":false,"default":false},"name":{"type":"string","pattern":"^[a-zA-Z0-9_\\-%$+]+$","example":"headerName"},"value":{"type":"string","example":"headerValue"}},"required":["name","value"],"additionalProperties":false,"description":"Matches provided headers as strings."},{"type":"object","properties":{"regexMode":{"type":"boolean","example":true,"default":false},"name":{"type":"string","example":"headerName"},"value":{"type":"string","example":"headerValue"}},"required":["name","value"],"additionalProperties":false,"description":"Matches provided headers as regex."}]},"description":"List of header authentication settings, it checks the presence of all headers and compares it against the expected value. Wildcard (*) is supported."}},"additionalProperties":false}},"additionalProperties":false}},"required":["paths","accessMode"],"additionalProperties":false},"default":[]}},"additionalProperties":false}},"additionalProperties":false,"default":{"credentials":[],"policies":[],"sso":{}}},"domains":{"type":"array","items":{"type":"string","description":"A domain to redirect to this port.","example":"app.example.com"},"description":"An array of domains to redirect to this port. Each domain must first be verified and registered to your account.","default":[]},"disableNfDomain":{"type":"boolean","description":"Disable routing on the default code.run domain for public HTTP ports with custom domains.","default":false},"advancedOptions":{"type":"object","properties":{"enableTlsPassthrough":{"type":"boolean","description":"Whether this port should use pass through mode for TLS"}},"additionalProperties":false},"protocol":{"type":"string","oneOf":[{"type":"string","enum":["HTTP","HTTP/2"]},{"type":"string","enum":["HTTP","HTTP/2","TCP","UDP"]}],"description":"The protocol to use for the port.","example":"HTTP"}},"required":["name","internalPort","protocol"],"additionalProperties":false},"default":[]},"runtimeEnvironment":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"An object containing the runtime environment to set for the service","example":{"VARIABLE_1":"abcdef","VARIABLE_2":"12345"},"default":{}},"runtimeFiles":{"type":"object","properties":{},"description":"Secret files as JSON object, encrypted at rest. File path must be absolute","example":{"/dir/fileName":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"healthChecks":{"type":"array","items":{"type":"object","properties":{"protocol":{"type":"string","enum":["HTTP","CMD","TCP"],"description":"The protocol to access the health check with.","example":"HTTP"},"type":{"type":"string","enum":["livenessProbe","readinessProbe","startupProbe"],"description":"The type of health check.","example":"readinessProbe"},"path":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*((\\?([a-zA-Z0-9-._]+(=[a-zA-Z0-9-._]+)?)*)(&([a-zA-Z0-9-._]+(=[a-zA-Z0-9-._]+)?)*)*)?$","description":"The path of the health check endpoint. Required when protocol is HTTP.","example":"/health-check"},"cmd":{"type":"string","description":"The command to run for the health check. Required when protocol is CMD"},"port":{"type":"integer","minimum":1,"description":"Port number for the health check endpoint. Required when protocol is HTTP.","example":8080},"initialDelaySeconds":{"type":"integer","minimum":1,"maximum":180,"description":"Initial delay, in seconds, before the health check is first run.","example":10},"periodSeconds":{"type":"integer","minimum":10,"maximum":600,"description":"The time between each check, in seconds.","example":60},"timeoutSeconds":{"type":"integer","minimum":1,"maximum":60,"description":"The time to wait for a response before marking the health check as a failure.","example":1},"failureThreshold":{"type":"integer","minimum":1,"maximum":255,"description":"The maximum number of allowed failures.","example":3},"successThreshold":{"type":"integer","minimum":1,"maximum":255,"description":"The number of successes required to mark the health check as a success.","example":1}},"required":["protocol","type","initialDelaySeconds","periodSeconds","timeoutSeconds","failureThreshold"],"additionalProperties":false,"description":"A health check object."},"description":"An array of health checks."},"loadBalancing":{"type":"object","properties":{"mode":{"type":"string","enum":["leastConnection","consistentHash","roundRobin","consistentReplicaRouting"]},"consistentHash":{"type":"object","properties":{"mode":{"type":"string","enum":["ip","customHeader"]},"header":{"type":"string","nullable":true}},"required":["mode"],"additionalProperties":false},"consistentReplicaRouting":{"type":"object","properties":{"mode":{"type":"string","enum":["path","header"]}},"required":["mode"],"additionalProperties":false}},"required":["mode"],"additionalProperties":false},"autoscaling":{"type":"object","properties":{"horizontal":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether horizontal autoscaling should be enabled","example":true},"minReplicas":{"type":"number","format":"float","minimum":1,"description":"Minimum number of replicas which should be running at any time","example":1},"maxReplicas":{"type":"number","format":"float","description":"Maximum number of replicas which can be running at any time","example":3},"cpu":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether autoscaling should take into account cpu usage"},"thresholdPercentage":{"type":"integer","minimum":10,"maximum":100,"description":"Threshold CPU usage percentage at which the workload will be scaled"}},"required":["enabled","thresholdPercentage"],"additionalProperties":false},"memory":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether autoscaling should take into account memory usage"},"thresholdPercentage":{"type":"integer","minimum":10,"maximum":100,"description":"Threshold memory usage percentage at which the workload will be scaled"}},"required":["enabled","thresholdPercentage"],"additionalProperties":false},"rps":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether autoscaling should take into requests-per-second"},"thresholdValue":{"type":"integer","minimum":1,"description":"Threshold rps value on which the workload will be scaled"}},"required":["enabled","thresholdValue"],"additionalProperties":false},"userMetrics":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether to enable handling for custom metrics in the autoscaling configuration","example":true},"exposedMetricsPath":{"type":"string","pattern":"^\\/([_a-zA-Z0-9-&?=.]*)((\\/[_a-zA-Z0-9-&?=.]+)*(\\/)?)?$","description":"Path on which the metrics will be exposed by the service..","example":"/metrics"},"exposedMetricsPort":{"type":"integer","description":"Port on which the metrics will be exposed by the service.","example":8080},"metrics":{"type":"array","items":{"type":"object","properties":{"metricName":{"type":"string","pattern":"[a-zA-Z_:][a-zA-Z0-9_:]*$","description":"Name of the custom metric","example":"example-metric"},"metricType":{"type":"string","enum":["gauge","counter"],"description":"Type of metric exposed, this will affect how it'll be queried by the autoscaler component: Gauge will be used as is, Counter will be used with rate()","example":"gauge"},"thresholdValue":{"type":"number","format":"float","description":"Threshold value on which the workload will be scaled. Represents the average value across all running pods.","example":2}},"required":["metricName","metricType","thresholdValue"],"additionalProperties":false},"description":"Array of custom metrics exposed by the service that will be used by the autoscaling configuration. At least one metric is required."}},"required":["enabled","exposedMetricsPath","exposedMetricsPort","metrics"],"additionalProperties":false}},"required":["enabled","minReplicas","maxReplicas"],"additionalProperties":false,"description":"Describes the horizontal autoscaling configuration"}},"additionalProperties":false,"description":"Describes all autoscaling configurations"},"createOptions":{"type":"object","properties":{"volumesToAttach":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39}}},"additionalProperties":false},"serviceType":{"type":"string","enum":["deployment"],"description":"Type of the service (combined, build or deployment)","example":"deployment"},"deployment":{"type":"object","properties":{"type":{"type":"string","enum":["deployment","statefulSet"],"description":"The way the service should be deployed. Either as a deployment (default), or as a stateful set."},"instances":{"type":"integer","minimum":0,"description":"The number of instances to run the service on.","example":1},"buildpack":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customProcess","customCommand","customEntrypointCustomCommand","originalEntrypointCustomCommand"],"description":"Type of buildpack run configuration"},"customProcess":{"type":"string","description":"Custom process which should be run. Required in case where `configType` is `customProcess`"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be run. Required in case where `configType` is `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be run. Required in case where `configType` is `customCommand`, `customEntrypointCustomCommand` or `originalEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of buildpack runtime"},"docker":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customEntrypoint","customCommand","customEntrypointCustomCommand"],"description":"Type of entrypoint & command override configuration","example":"default"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be used. Required in case where `configType` is `customEntrypoint` or `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be used. Required in case where `configType` is `customCommand` or `customEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of docker runtime"},"storage":{"type":"object","properties":{"useHdbStorage":{"type":"boolean"},"usePdSsdStorage":{"type":"boolean"},"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":1024,"description":"Ephemeral storage per container in MB","example":1024}},"additionalProperties":false},"shmSize":{"type":"integer","minimum":64,"description":"Configures the amount of available memory-backed disk space available to /dev/shm"}},"additionalProperties":false},"strategy":{"type":"object","properties":{"type":{"type":"string","enum":["recreate","rollout-steady","rollout-balanced","rollout-fast","custom"],"description":"Configures the instance roll out strategy of your service. Currently only available via feature flag."},"settings":{"type":"object","properties":{"maxSurge":{"oneOf":[{"type":"integer","minimum":0,"description":"A non-negative integer."},{"type":"string","pattern":"^\\d+%$","description":"A percentage string in the range 0% to 100%, e.g. `25%`"}],"description":"Maximum number or percentage of pods that can be created above the desired count."},"maxUnavailable":{"anyOf":[{"type":"integer","minimum":0,"description":"A non-negative integer."},{"type":"string","pattern":"^\\d+%$","description":"A percentage string in the range 0% to 100%, e.g. `25%`"}],"description":"Maximum number or percentage of pods that can be unavailable during the update."}},"required":["maxSurge","maxUnavailable"],"additionalProperties":false}},"additionalProperties":false,"description":"Roll out strategy of the service"},"zonalRedundancy":{"type":"object","properties":{"type":{"type":"string","enum":["disabled","preferred","required"],"description":"Defines scheduling behaviour across different zones within the same region."},"minZones":{"type":"integer","minimum":1,"description":"Defines how many zones are required and will prevent containers from additional scheduling into existing zones. (Only relevant if type is set to \"required\")"}},"additionalProperties":false},"gpu":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"gpuType":{"type":"string"},"gpuCount":{"type":"integer"},"timesliced":{"type":"boolean"}},"required":["gpuType"],"additionalProperties":false}},"additionalProperties":false},"gracePeriodSeconds":{"type":"integer","minimum":15,"maximum":600,"description":"The 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."},"gradualRolloutStrategyId":{"type":"string","pattern":"^[A-Za-z0-9-]+$","nullable":true,"description":"The id of the strategy to be attached to service.","examples":["strategy-id","strategy-id"]},"ssh":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Enables SSH access if the resource matches an SSH identity selector."}},"required":["enabled"],"additionalProperties":false,"description":"Controls related to SSH access within the resource."},"metadata":{"type":"object","properties":{"labels":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom labels for the workload."},"annotations":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom annotations for the workload as string or object."}},"additionalProperties":false,"description":"Allow setting custom labels and annotations for workloads."},"internal":{"type":"object","properties":{"id":{"anyOf":[{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":54,"example":"example-build-service"},{"type":"string","example":"example-project/example-build-service"}],"description":"ID of the build service to deploy"},"branch":{"type":"string","description":"Branch to deploy","example":"master"},"buildSHA":{"oneOf":[{"type":"string","minLength":40,"maxLength":40,"description":"A commit sha."},{"type":"string","enum":["latest"],"description":"Latest commit."}],"description":"Commit SHA to deploy, or 'latest' to deploy the most recent commit","example":"latest"},"buildId":{"type":"string","description":"ID of the build that should be deployed","example":"premium-guide-6393"}},"additionalProperties":false},"external":{"type":"object","properties":{"imagePath":{"type":"string","pattern":"^(?:(?:https?:\\/\\/)?([a-zA-Z0-9\\-]+\\.[a-zA-Z0-9\\.\\-]+)(\\/v1)?)?(?:\\/)?([a-zA-Z/-9\\.\\-_]+)(?:\\:([a-zA-Z/-9\\.\\-_\\:]+)|\\@([a-zA-Z/-9\\.\\-_\\:]+))$","description":"Image to be deployed. When not deploying from Dockerhub the URL must be specified.","example":"nginx:latest"},"credentials":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"ID of the saved credentials to use to access this external image.","example":"example-credentials"}},"required":["imagePath"],"additionalProperties":false},"imageUrl":{"type":"string","description":"Image registry url of the deployed image."}},"required":["instances"],"additionalProperties":false},"id":{"type":"string","description":"Identifier for the service","example":"example-service"},"appId":{"type":"string","description":"Full identifier used for service deployment","example":"/example-user/default-project/example-service"},"cluster":{"type":"object","properties":{"id":{"type":"string","description":"The id of the cluster associated with this project.","example":"nf-europe-west"},"name":{"type":"string","description":"The name of the cluster associated with this project.","example":"nf-europe-west"},"namespace":{"type":"string","description":"Namespace this resource is located within on the cluster.","example":"ns-8zy2mcjh9zn2"},"loadBalancers":{"type":"array","items":{"type":"string","example":"lb.659200800000000000000000.northflank.com"},"description":"Load balancer DNS for the cluster."}},"required":["id","name"],"additionalProperties":false,"description":"Cluster information"},"createdAt":{"type":"string","format":"date-time","description":"time of creation"},"updatedAt":{"type":"string","format":"date-time","description":"time of update"},"status":{"type":"object","properties":{"deployment":{"type":"object","properties":{"status":{"type":"string","enum":["PENDING","IN_PROGRESS","COMPLETED","FAILED"],"description":"The current status of the deployment.","example":"COMPLETED"},"reason":{"type":"string","enum":["SCALING","DEPLOYING"],"description":"The reason the current deployment was started.","example":"DEPLOYING"},"lastTransitionTime":{"type":"string","format":"date-time","description":"The timestamp of when the deployment reached this status.","example":"2021-11-29T11:47:16.624Z"}},"required":["status","reason"],"additionalProperties":false,"description":"Details about the current deployment status."}},"additionalProperties":false,"description":"Details about the current service status."}},"required":["name","billing","serviceType","deployment","id","appId","cluster","status"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Services","project"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":54,"description":"The name of the service.","example":"Example Service"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"A description of the service.","example":"A service description"},"stageId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"billing":{"type":"object","properties":{"deploymentPlan":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The ID of the deployment plan to use.","example":"nf-compute-20"},"gpu":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"gpuType":{"type":"string"},"gpuCount":{"type":"integer"},"timesliced":{"type":"boolean"}},"required":["gpuType"],"additionalProperties":false}},"additionalProperties":false}},"required":["deploymentPlan"],"additionalProperties":false},"infrastructure":{"type":"object","properties":{"architecture":{"type":"string","enum":["x86","arm"]}},"additionalProperties":false},"deployment":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["deployment","statefulSet"],"description":"The way the service should be deployed. Either as a deployment (default), or as a stateful set."},"instances":{"type":"integer","minimum":0,"description":"The number of instances to run the service on.","example":1},"buildpack":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customProcess","customCommand","customEntrypointCustomCommand","originalEntrypointCustomCommand"],"description":"Type of buildpack run configuration"},"customProcess":{"type":"string","description":"Custom process which should be run. Required in case where `configType` is `customProcess`"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be run. Required in case where `configType` is `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be run. Required in case where `configType` is `customCommand`, `customEntrypointCustomCommand` or `originalEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of buildpack runtime"},"docker":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customEntrypoint","customCommand","customEntrypointCustomCommand"],"description":"Type of entrypoint & command override configuration","example":"default"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be used. Required in case where `configType` is `customEntrypoint` or `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be used. Required in case where `configType` is `customCommand` or `customEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of docker runtime"},"storage":{"type":"object","properties":{"useHdbStorage":{"type":"boolean"},"usePdSsdStorage":{"type":"boolean"},"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":1024,"description":"Ephemeral storage per container in MB","example":1024}},"additionalProperties":false},"shmSize":{"type":"integer","minimum":64,"description":"Configures the amount of available memory-backed disk space available to /dev/shm"}},"additionalProperties":false},"strategy":{"type":"object","properties":{"type":{"type":"string","enum":["recreate","rollout-steady","rollout-balanced","rollout-fast","custom"],"description":"Configures the instance roll out strategy of your service. Currently only available via feature flag."},"settings":{"type":"object","properties":{"maxSurge":{"oneOf":[{"type":"integer","minimum":0,"description":"A non-negative integer."},{"type":"string","pattern":"^\\d+%$","description":"A percentage string in the range 0% to 100%, e.g. `25%`"}],"description":"Maximum number or percentage of pods that can be created above the desired count."},"maxUnavailable":{"anyOf":[{"type":"integer","minimum":0,"description":"A non-negative integer."},{"type":"string","pattern":"^\\d+%$","description":"A percentage string in the range 0% to 100%, e.g. `25%`"}],"description":"Maximum number or percentage of pods that can be unavailable during the update."}},"required":["maxSurge","maxUnavailable"],"additionalProperties":false}},"additionalProperties":false,"description":"Roll out strategy of the service"},"zonalRedundancy":{"type":"object","properties":{"type":{"type":"string","enum":["disabled","preferred","required"],"description":"Defines scheduling behaviour across different zones within the same region."},"minZones":{"type":"integer","minimum":1,"description":"Defines how many zones are required and will prevent containers from additional scheduling into existing zones. (Only relevant if type is set to \"required\")"}},"additionalProperties":false},"gpu":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"gpuType":{"type":"string"},"gpuCount":{"type":"integer"},"timesliced":{"type":"boolean"}},"required":["gpuType"],"additionalProperties":false}},"additionalProperties":false},"gracePeriodSeconds":{"type":"integer","minimum":15,"maximum":600,"description":"The 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."},"gradualRolloutStrategyId":{"type":"string","pattern":"^[A-Za-z0-9-]+$","nullable":true,"description":"The id of the strategy to be attached to service.","examples":["strategy-id","strategy-id"]},"ssh":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Enables SSH access if the resource matches an SSH identity selector."}},"required":["enabled"],"additionalProperties":false,"description":"Controls related to SSH access within the resource."},"metadata":{"type":"object","properties":{"labels":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom labels for the workload."},"annotations":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom annotations for the workload as string or object."}},"additionalProperties":false,"description":"Allow setting custom labels and annotations for workloads."},"internal":{"type":"object","properties":{"id":{"anyOf":[{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":54,"example":"example-build-service"},{"type":"string","example":"example-project/example-build-service"}],"description":"ID of the build service to deploy"},"branch":{"type":"string","description":"Branch to deploy","example":"master"},"buildSHA":{"oneOf":[{"type":"string","minLength":40,"maxLength":40,"description":"A commit sha."},{"type":"string","enum":["latest"],"description":"Latest commit."}],"description":"Commit SHA to deploy, or 'latest' to deploy the most recent commit","example":"latest"},"buildId":{"type":"string","description":"ID of the build that should be deployed","example":"premium-guide-6393"}},"additionalProperties":false}},"required":["instances","internal"],"additionalProperties":false,"description":"Internal deployment"},{"type":"object","properties":{"type":{"type":"string","enum":["deployment","statefulSet"],"description":"The way the service should be deployed. Either as a deployment (default), or as a stateful set."},"instances":{"type":"integer","minimum":0,"description":"The number of instances to run the service on.","example":1},"buildpack":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customProcess","customCommand","customEntrypointCustomCommand","originalEntrypointCustomCommand"],"description":"Type of buildpack run configuration"},"customProcess":{"type":"string","description":"Custom process which should be run. Required in case where `configType` is `customProcess`"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be run. Required in case where `configType` is `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be run. Required in case where `configType` is `customCommand`, `customEntrypointCustomCommand` or `originalEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of buildpack runtime"},"docker":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customEntrypoint","customCommand","customEntrypointCustomCommand"],"description":"Type of entrypoint & command override configuration","example":"default"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be used. Required in case where `configType` is `customEntrypoint` or `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be used. Required in case where `configType` is `customCommand` or `customEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of docker runtime"},"storage":{"type":"object","properties":{"useHdbStorage":{"type":"boolean"},"usePdSsdStorage":{"type":"boolean"},"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":1024,"description":"Ephemeral storage per container in MB","example":1024}},"additionalProperties":false},"shmSize":{"type":"integer","minimum":64,"description":"Configures the amount of available memory-backed disk space available to /dev/shm"}},"additionalProperties":false},"strategy":{"type":"object","properties":{"type":{"type":"string","enum":["recreate","rollout-steady","rollout-balanced","rollout-fast","custom"],"description":"Configures the instance roll out strategy of your service. Currently only available via feature flag."},"settings":{"type":"object","properties":{"maxSurge":{"oneOf":[{"type":"integer","minimum":0,"description":"A non-negative integer."},{"type":"string","pattern":"^\\d+%$","description":"A percentage string in the range 0% to 100%, e.g. `25%`"}],"description":"Maximum number or percentage of pods that can be created above the desired count."},"maxUnavailable":{"anyOf":[{"type":"integer","minimum":0,"description":"A non-negative integer."},{"type":"string","pattern":"^\\d+%$","description":"A percentage string in the range 0% to 100%, e.g. `25%`"}],"description":"Maximum number or percentage of pods that can be unavailable during the update."}},"required":["maxSurge","maxUnavailable"],"additionalProperties":false}},"additionalProperties":false,"description":"Roll out strategy of the service"},"zonalRedundancy":{"type":"object","properties":{"type":{"type":"string","enum":["disabled","preferred","required"],"description":"Defines scheduling behaviour across different zones within the same region."},"minZones":{"type":"integer","minimum":1,"description":"Defines how many zones are required and will prevent containers from additional scheduling into existing zones. (Only relevant if type is set to \"required\")"}},"additionalProperties":false},"gpu":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"gpuType":{"type":"string"},"gpuCount":{"type":"integer"},"timesliced":{"type":"boolean"}},"required":["gpuType"],"additionalProperties":false}},"additionalProperties":false},"gracePeriodSeconds":{"type":"integer","minimum":15,"maximum":600,"description":"The 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."},"gradualRolloutStrategyId":{"type":"string","pattern":"^[A-Za-z0-9-]+$","nullable":true,"description":"The id of the strategy to be attached to service.","examples":["strategy-id","strategy-id"]},"ssh":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Enables SSH access if the resource matches an SSH identity selector."}},"required":["enabled"],"additionalProperties":false,"description":"Controls related to SSH access within the resource."},"metadata":{"type":"object","properties":{"labels":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom labels for the workload."},"annotations":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom annotations for the workload as string or object."}},"additionalProperties":false,"description":"Allow setting custom labels and annotations for workloads."},"external":{"type":"object","properties":{"imagePath":{"type":"string","pattern":"^(?:(?:https?:\\/\\/)?([a-zA-Z0-9\\-]+\\.[a-zA-Z0-9\\.\\-]+)(\\/v1)?)?(?:\\/)?([a-zA-Z/-9\\.\\-_]+)(?:\\:([a-zA-Z/-9\\.\\-_\\:]+)|\\@([a-zA-Z/-9\\.\\-_\\:]+))$","description":"Image to be deployed. When not deploying from Dockerhub the URL must be specified.","example":"nginx:latest"},"credentials":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"ID of the saved credentials to use to access this external image.","example":"example-credentials"}},"required":["imagePath"],"additionalProperties":false}},"required":["instances","external"],"additionalProperties":false,"description":"External deployment"},{"type":"object","properties":{"type":{"type":"string","enum":["deployment","statefulSet"],"description":"The way the service should be deployed. Either as a deployment (default), or as a stateful set."},"instances":{"type":"integer","minimum":0,"description":"The number of instances to run the service on.","example":1},"buildpack":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customProcess","customCommand","customEntrypointCustomCommand","originalEntrypointCustomCommand"],"description":"Type of buildpack run configuration"},"customProcess":{"type":"string","description":"Custom process which should be run. Required in case where `configType` is `customProcess`"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be run. Required in case where `configType` is `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be run. Required in case where `configType` is `customCommand`, `customEntrypointCustomCommand` or `originalEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of buildpack runtime"},"docker":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customEntrypoint","customCommand","customEntrypointCustomCommand"],"description":"Type of entrypoint & command override configuration","example":"default"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be used. Required in case where `configType` is `customEntrypoint` or `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be used. Required in case where `configType` is `customCommand` or `customEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of docker runtime"},"storage":{"type":"object","properties":{"useHdbStorage":{"type":"boolean"},"usePdSsdStorage":{"type":"boolean"},"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":1024,"description":"Ephemeral storage per container in MB","example":1024}},"additionalProperties":false},"shmSize":{"type":"integer","minimum":64,"description":"Configures the amount of available memory-backed disk space available to /dev/shm"}},"additionalProperties":false},"strategy":{"type":"object","properties":{"type":{"type":"string","enum":["recreate","rollout-steady","rollout-balanced","rollout-fast","custom"],"description":"Configures the instance roll out strategy of your service. Currently only available via feature flag."},"settings":{"type":"object","properties":{"maxSurge":{"oneOf":[{"type":"integer","minimum":0,"description":"A non-negative integer."},{"type":"string","pattern":"^\\d+%$","description":"A percentage string in the range 0% to 100%, e.g. `25%`"}],"description":"Maximum number or percentage of pods that can be created above the desired count."},"maxUnavailable":{"anyOf":[{"type":"integer","minimum":0,"description":"A non-negative integer."},{"type":"string","pattern":"^\\d+%$","description":"A percentage string in the range 0% to 100%, e.g. `25%`"}],"description":"Maximum number or percentage of pods that can be unavailable during the update."}},"required":["maxSurge","maxUnavailable"],"additionalProperties":false}},"additionalProperties":false,"description":"Roll out strategy of the service"},"zonalRedundancy":{"type":"object","properties":{"type":{"type":"string","enum":["disabled","preferred","required"],"description":"Defines scheduling behaviour across different zones within the same region."},"minZones":{"type":"integer","minimum":1,"description":"Defines how many zones are required and will prevent containers from additional scheduling into existing zones. (Only relevant if type is set to \"required\")"}},"additionalProperties":false},"gpu":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"gpuType":{"type":"string"},"gpuCount":{"type":"integer"},"timesliced":{"type":"boolean"}},"required":["gpuType"],"additionalProperties":false}},"additionalProperties":false},"gracePeriodSeconds":{"type":"integer","minimum":15,"maximum":600,"description":"The 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."},"gradualRolloutStrategyId":{"type":"string","pattern":"^[A-Za-z0-9-]+$","nullable":true,"description":"The id of the strategy to be attached to service.","examples":["strategy-id","strategy-id"]},"ssh":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Enables SSH access if the resource matches an SSH identity selector."}},"required":["enabled"],"additionalProperties":false,"description":"Controls related to SSH access within the resource."},"metadata":{"type":"object","properties":{"labels":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom labels for the workload."},"annotations":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom annotations for the workload as string or object."}},"additionalProperties":false,"description":"Allow setting custom labels and annotations for workloads."}},"required":["instances"],"additionalProperties":false,"description":"Choose later"}],"description":"Deployment type"},"ports":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":1,"maxLength":8,"description":"The name used to identify the port.","example":"p01"},"internalPort":{"type":"integer","minimum":1,"maximum":65535,"description":"The port number.","example":8080},"public":{"type":"boolean","description":"If true, the port will be exposed publicly.","example":true,"default":false},"security":{"type":"object","properties":{"credentials":{"type":"array","items":{"type":"object","properties":{"username":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The username to access the service","example":"admin"},"password":{"type":"string","description":"The password to access the service with this username.","example":"password123"},"type":{"type":"string","enum":["basic-auth"],"description":"The type of authentication used","example":"basic-auth"}},"required":["username","password","type"],"additionalProperties":false},"description":"An array of credentials to access the service."},"ip":{"type":"array","items":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","description":"An IP address used by this rule","example":"127.0.0.1"},"description":"An array of IP addresses used for this rule"},"action":{"type":"string","enum":["ALLOW","DENY"],"description":"The action for this rule.","example":"DENY"}},"required":["addresses","action"],"additionalProperties":false},"description":"An array of IP address policies."},"policies":{"type":"array","items":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","description":"An IP address used by this rule","example":"127.0.0.1"},"description":"An array of IP addresses used for this rule"},"action":{"type":"string","enum":["ALLOW","DENY"],"description":"The action for this rule.","example":"DENY"}},"required":["addresses","action"],"additionalProperties":false},"description":"An array of IP address policies."},"sso":{"type":"object","properties":{"organizationId":{"type":"string","description":"ID of the SSO organization that the user will have to be a member of"},"directoryGroupIds":{"type":"array","items":{"type":"string"},"description":"Array of directory groups that will have access"},"allowAnyOrgUsers":{"type":"boolean","description":"Allow entire organization to access this service"},"validateInternalTraffic":{"type":"boolean","description":"Enforce internal traffic through SSO authentication flow"},"setCookieOnRootDomain":{"type":"boolean","description":"Set SSO authentication cookie on root domain"},"allowInternalTrafficViaPublicDns":{"type":"boolean","description":"Allow internal traffic from same or shared projects via public DNS to skip SSO authentication flow"}},"additionalProperties":false,"description":"Configure port authentication via SSO"},"headers":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"regexMode":{"type":"boolean","example":false,"default":false},"name":{"type":"string","pattern":"^[a-zA-Z0-9_\\-%$+]+$","example":"headerName"},"value":{"type":"string","example":"headerValue"}},"required":["name","value"],"additionalProperties":false,"description":"Matches provided headers as strings."},{"type":"object","properties":{"regexMode":{"type":"boolean","example":true,"default":false},"name":{"type":"string","example":"headerName"},"value":{"type":"string","example":"headerValue"}},"required":["name","value"],"additionalProperties":false,"description":"Matches provided headers as regex."}]},"description":"List of header authentication settings, it checks the presence of all headers and compares it against the expected value. Wildcard (*) is supported."},"verificationMode":{"type":"string","enum":["or","and"],"description":"Mode used to verify multiple security features like ip policies and SSO authentication"},"securePathConfiguration":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Enable security policies on a path-level style"},"skipSecurityPoliciesForInternalTrafficViaPublicDns":{"type":"boolean","description":"Allow internal traffic from same or shared projects via public DNS to skip all security policies"},"rules":{"type":"array","items":{"type":"object","properties":{"paths":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"path":{"type":"string","pattern":"^\\/([_a-zA-Z0-9-&?=.]*)((\\/[_a-zA-Z0-9-&?=.]+)*(\\/)?)?$"},"routingMode":{"type":"string","enum":["prefix"],"description":"Mode of the path, determining how the URI will be interpreted.","example":"prefix"},"priority":{"type":"integer","minimum":0,"maximum":100,"example":80}},"required":["path","routingMode","priority"],"additionalProperties":false,"description":"Route when the path starts with the provided prefix."},{"type":"object","properties":{"path":{"type":"string","pattern":"^\\/([_a-zA-Z0-9-&?=.]*)((\\/[_a-zA-Z0-9-&?=.]+)*(\\/)?)?$"},"routingMode":{"type":"string","enum":["exact"],"description":"Mode of the path, determining how the URI will be interpreted.","example":"exact"},"priority":{"type":"integer","minimum":0,"maximum":100,"example":80}},"required":["path","routingMode","priority"],"additionalProperties":false,"description":"Route when the path is an exact match."},{"type":"object","properties":{"path":{"type":"string"},"routingMode":{"type":"string","enum":["regex"],"description":"Mode of the path, determining how the URI will be interpreted.","example":"regex"},"priority":{"type":"integer","minimum":0,"maximum":100,"example":80}},"required":["path","routingMode","priority"],"additionalProperties":false,"description":"Route when the path matches the provided regex."}],"description":"Data about how the path should be handled."},"description":"Array of path objects which represent the paths and their priority for which the security policies will be enforced"},"accessMode":{"type":"string","enum":["protected","unprotected"],"description":"Specify the way the path rule will behave when processing policies. This enables an allow-list/deny-list approach for access control on each path","example":"protected"},"securityPolicies":{"type":"object","properties":{"orPolicies":{"type":"object","properties":{"credentials":{"type":"array","items":{"type":"object","properties":{"username":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The username to access the service","example":"admin"},"password":{"type":"string","description":"The password to access the service with this username.","example":"password123"},"type":{"type":"string","enum":["basic-auth"],"description":"The type of authentication used","example":"basic-auth"}},"required":["username","password","type"],"additionalProperties":false},"description":"An array of credentials to access the service."},"ip":{"type":"array","items":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","description":"An IP address used by this rule","example":"127.0.0.1"},"description":"An array of IP addresses used for this rule"},"action":{"type":"string","enum":["ALLOW","DENY"],"description":"The action for this rule.","example":"DENY"}},"required":["addresses","action"],"additionalProperties":false},"description":"An array of IP address policies."},"policies":{"type":"array","items":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","description":"An IP address used by this rule","example":"127.0.0.1"},"description":"An array of IP addresses used for this rule"},"action":{"type":"string","enum":["ALLOW","DENY"],"description":"The action for this rule.","example":"DENY"}},"required":["addresses","action"],"additionalProperties":false},"description":"An array of IP address policies."},"sso":{"type":"object","properties":{"organizationId":{"type":"string","description":"ID of the SSO organization that the user will have to be a member of"},"directoryGroupIds":{"type":"array","items":{"type":"string"},"description":"Array of directory groups that will have access"},"allowAnyOrgUsers":{"type":"boolean","description":"Allow entire organization to access this service"},"validateInternalTraffic":{"type":"boolean","description":"Enforce internal traffic through SSO authentication flow"},"setCookieOnRootDomain":{"type":"boolean","description":"Set SSO authentication cookie on root domain"},"allowInternalTrafficViaPublicDns":{"type":"boolean","description":"Allow internal traffic from same or shared projects via public DNS to skip SSO authentication flow"}},"additionalProperties":false,"description":"Configure port authentication via SSO"},"headers":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"regexMode":{"type":"boolean","example":false,"default":false},"name":{"type":"string","pattern":"^[a-zA-Z0-9_\\-%$+]+$","example":"headerName"},"value":{"type":"string","example":"headerValue"}},"required":["name","value"],"additionalProperties":false,"description":"Matches provided headers as strings."},{"type":"object","properties":{"regexMode":{"type":"boolean","example":true,"default":false},"name":{"type":"string","example":"headerName"},"value":{"type":"string","example":"headerValue"}},"required":["name","value"],"additionalProperties":false,"description":"Matches provided headers as regex."}]},"description":"List of header authentication settings, it checks the presence of all headers and compares it against the expected value. Wildcard (*) is supported."}},"additionalProperties":false},"requiredPolicies":{"type":"object","properties":{"credentials":{"type":"array","items":{"type":"object","properties":{"username":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The username to access the service","example":"admin"},"password":{"type":"string","description":"The password to access the service with this username.","example":"password123"},"type":{"type":"string","enum":["basic-auth"],"description":"The type of authentication used","example":"basic-auth"}},"required":["username","password","type"],"additionalProperties":false},"description":"An array of credentials to access the service."},"ip":{"type":"array","items":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","description":"An IP address used by this rule","example":"127.0.0.1"},"description":"An array of IP addresses used for this rule"},"action":{"type":"string","enum":["ALLOW","DENY"],"description":"The action for this rule.","example":"DENY"}},"required":["addresses","action"],"additionalProperties":false},"description":"An array of IP address policies."},"policies":{"type":"array","items":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","description":"An IP address used by this rule","example":"127.0.0.1"},"description":"An array of IP addresses used for this rule"},"action":{"type":"string","enum":["ALLOW","DENY"],"description":"The action for this rule.","example":"DENY"}},"required":["addresses","action"],"additionalProperties":false},"description":"An array of IP address policies."},"sso":{"type":"object","properties":{"organizationId":{"type":"string","description":"ID of the SSO organization that the user will have to be a member of"},"directoryGroupIds":{"type":"array","items":{"type":"string"},"description":"Array of directory groups that will have access"},"allowAnyOrgUsers":{"type":"boolean","description":"Allow entire organization to access this service"},"validateInternalTraffic":{"type":"boolean","description":"Enforce internal traffic through SSO authentication flow"},"setCookieOnRootDomain":{"type":"boolean","description":"Set SSO authentication cookie on root domain"},"allowInternalTrafficViaPublicDns":{"type":"boolean","description":"Allow internal traffic from same or shared projects via public DNS to skip SSO authentication flow"}},"additionalProperties":false,"description":"Configure port authentication via SSO"},"headers":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"regexMode":{"type":"boolean","example":false,"default":false},"name":{"type":"string","pattern":"^[a-zA-Z0-9_\\-%$+]+$","example":"headerName"},"value":{"type":"string","example":"headerValue"}},"required":["name","value"],"additionalProperties":false,"description":"Matches provided headers as strings."},{"type":"object","properties":{"regexMode":{"type":"boolean","example":true,"default":false},"name":{"type":"string","example":"headerName"},"value":{"type":"string","example":"headerValue"}},"required":["name","value"],"additionalProperties":false,"description":"Matches provided headers as regex."}]},"description":"List of header authentication settings, it checks the presence of all headers and compares it against the expected value. Wildcard (*) is supported."}},"additionalProperties":false}},"additionalProperties":false}},"required":["paths","accessMode"],"additionalProperties":false},"default":[]}},"additionalProperties":false}},"additionalProperties":false,"default":{"credentials":[],"policies":[],"sso":{}}},"domains":{"type":"array","items":{"type":"string","description":"A domain to redirect to this port.","example":"app.example.com"},"description":"An array of domains to redirect to this port. Each domain must first be verified and registered to your account.","default":[]},"disableNfDomain":{"type":"boolean","description":"Disable routing on the default code.run domain for public HTTP ports with custom domains.","default":false},"advancedOptions":{"type":"object","properties":{"enableTlsPassthrough":{"type":"boolean","description":"Whether this port should use pass through mode for TLS"}},"additionalProperties":false},"protocol":{"type":"string","enum":["HTTP","HTTP/2","TCP","UDP"],"description":"The protocol to use for the port.","example":"HTTP"}},"required":["name","internalPort","protocol"],"additionalProperties":false},"default":[]},"runtimeEnvironment":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"An object containing the runtime environment to set for the service","example":{"VARIABLE_1":"abcdef","VARIABLE_2":"12345"},"default":{}},"runtimeFiles":{"type":"object","properties":{},"description":"Secret files as JSON object, encrypted at rest. File path must be absolute","example":{"/dir/fileName":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"healthChecks":{"type":"array","items":{"type":"object","properties":{"protocol":{"type":"string","enum":["HTTP","CMD","TCP"],"description":"The protocol to access the health check with.","example":"HTTP"},"type":{"type":"string","enum":["livenessProbe","readinessProbe","startupProbe"],"description":"The type of health check.","example":"readinessProbe"},"path":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*((\\?([a-zA-Z0-9-._]+(=[a-zA-Z0-9-._]+)?)*)(&([a-zA-Z0-9-._]+(=[a-zA-Z0-9-._]+)?)*)*)?$","description":"The path of the health check endpoint. Required when protocol is HTTP.","example":"/health-check"},"cmd":{"type":"string","description":"The command to run for the health check. Required when protocol is CMD"},"port":{"type":"integer","minimum":1,"description":"Port number for the health check endpoint. Required when protocol is HTTP.","example":8080},"initialDelaySeconds":{"type":"integer","minimum":1,"maximum":180,"description":"Initial delay, in seconds, before the health check is first run.","example":10},"periodSeconds":{"type":"integer","minimum":10,"maximum":600,"description":"The time between each check, in seconds.","example":60},"timeoutSeconds":{"type":"integer","minimum":1,"maximum":60,"description":"The time to wait for a response before marking the health check as a failure.","example":1},"failureThreshold":{"type":"integer","minimum":1,"maximum":255,"description":"The maximum number of allowed failures.","example":3},"successThreshold":{"type":"integer","minimum":1,"maximum":255,"description":"The number of successes required to mark the health check as a success.","example":1}},"required":["protocol","type","initialDelaySeconds","periodSeconds","timeoutSeconds","failureThreshold"],"additionalProperties":false,"description":"A health check object."},"description":"An array of health checks."},"loadBalancing":{"type":"object","properties":{"mode":{"type":"string","enum":["leastConnection","consistentHash","roundRobin","consistentReplicaRouting"]},"consistentHash":{"type":"object","properties":{"mode":{"type":"string","enum":["ip","customHeader"]},"header":{"type":"string","nullable":true}},"required":["mode"],"additionalProperties":false},"consistentReplicaRouting":{"type":"object","properties":{"mode":{"type":"string","enum":["path","header"]}},"required":["mode"],"additionalProperties":false}},"required":["mode"],"additionalProperties":false},"autoscaling":{"type":"object","properties":{"horizontal":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether horizontal autoscaling should be enabled","example":true},"minReplicas":{"type":"number","format":"float","minimum":1,"description":"Minimum number of replicas which should be running at any time","example":1},"maxReplicas":{"type":"number","format":"float","description":"Maximum number of replicas which can be running at any time","example":3},"cpu":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether autoscaling should take into account cpu usage"},"thresholdPercentage":{"type":"integer","minimum":10,"maximum":100,"description":"Threshold CPU usage percentage at which the workload will be scaled"}},"required":["enabled","thresholdPercentage"],"additionalProperties":false},"memory":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether autoscaling should take into account memory usage"},"thresholdPercentage":{"type":"integer","minimum":10,"maximum":100,"description":"Threshold memory usage percentage at which the workload will be scaled"}},"required":["enabled","thresholdPercentage"],"additionalProperties":false},"rps":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether autoscaling should take into requests-per-second"},"thresholdValue":{"type":"integer","minimum":1,"description":"Threshold rps value on which the workload will be scaled"}},"required":["enabled","thresholdValue"],"additionalProperties":false},"userMetrics":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether to enable handling for custom metrics in the autoscaling configuration","example":true},"exposedMetricsPath":{"type":"string","pattern":"^\\/([_a-zA-Z0-9-&?=.]*)((\\/[_a-zA-Z0-9-&?=.]+)*(\\/)?)?$","description":"Path on which the metrics will be exposed by the service..","example":"/metrics"},"exposedMetricsPort":{"type":"integer","description":"Port on which the metrics will be exposed by the service.","example":8080},"metrics":{"type":"array","items":{"type":"object","properties":{"metricName":{"type":"string","pattern":"[a-zA-Z_:][a-zA-Z0-9_:]*$","description":"Name of the custom metric","example":"example-metric"},"metricType":{"type":"string","enum":["gauge","counter"],"description":"Type of metric exposed, this will affect how it'll be queried by the autoscaler component: Gauge will be used as is, Counter will be used with rate()","example":"gauge"},"thresholdValue":{"type":"number","format":"float","description":"Threshold value on which the workload will be scaled. Represents the average value across all running pods.","example":2}},"required":["metricName","metricType","thresholdValue"],"additionalProperties":false},"description":"Array of custom metrics exposed by the service that will be used by the autoscaling configuration. At least one metric is required."}},"required":["enabled","exposedMetricsPath","exposedMetricsPort","metrics"],"additionalProperties":false}},"required":["enabled","minReplicas","maxReplicas"],"additionalProperties":false,"description":"Describes the horizontal autoscaling configuration"}},"additionalProperties":false,"description":"Describes all autoscaling configurations"},"createOptions":{"type":"object","properties":{"volumesToAttach":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39}}},"additionalProperties":false}},"required":["name","billing","deployment"],"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Project > Services > General > Create","x-nf-team-scoped":true,"x-nf-subheading":"put service","x-nf-cli-command":["put","service","deployment"]},"v1-projects--projectId--services-deployment-put-team-scoped":{"operationId":"putProjectsServicesDeployment","summary":"Put deployment service","description":"Creates or updates a deployment service.","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}}],"responses":{"200":{"description":"Details about the created or updated service.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":54,"description":"The name of the service.","example":"Example Service"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"A description of the service.","example":"A service description"},"stageId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"billing":{"type":"object","properties":{"deploymentPlan":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The ID of the deployment plan to use.","example":"nf-compute-20"},"gpu":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"gpuType":{"type":"string"},"gpuCount":{"type":"integer"},"timesliced":{"type":"boolean"}},"required":["gpuType"],"additionalProperties":false}},"additionalProperties":false}},"required":["deploymentPlan"],"additionalProperties":false},"infrastructure":{"type":"object","properties":{"architecture":{"type":"string","enum":["x86","arm"]}},"additionalProperties":false},"ports":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":1,"maxLength":8,"description":"The name used to identify the port.","example":"p01"},"internalPort":{"type":"integer","minimum":1,"maximum":65535,"description":"The port number.","example":8080},"public":{"type":"boolean","description":"If true, the port will be exposed publicly.","example":true,"default":false},"security":{"type":"object","properties":{"credentials":{"type":"array","items":{"type":"object","properties":{"username":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The username to access the service","example":"admin"},"password":{"type":"string","description":"The password to access the service with this username.","example":"password123"},"type":{"type":"string","enum":["basic-auth"],"description":"The type of authentication used","example":"basic-auth"}},"required":["username","password","type"],"additionalProperties":false},"description":"An array of credentials to access the service."},"ip":{"type":"array","items":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","description":"An IP address used by this rule","example":"127.0.0.1"},"description":"An array of IP addresses used for this rule"},"action":{"type":"string","enum":["ALLOW","DENY"],"description":"The action for this rule.","example":"DENY"}},"required":["addresses","action"],"additionalProperties":false},"description":"An array of IP address policies."},"policies":{"type":"array","items":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","description":"An IP address used by this rule","example":"127.0.0.1"},"description":"An array of IP addresses used for this rule"},"action":{"type":"string","enum":["ALLOW","DENY"],"description":"The action for this rule.","example":"DENY"}},"required":["addresses","action"],"additionalProperties":false},"description":"An array of IP address policies."},"sso":{"type":"object","properties":{"organizationId":{"type":"string","description":"ID of the SSO organization that the user will have to be a member of"},"directoryGroupIds":{"type":"array","items":{"type":"string"},"description":"Array of directory groups that will have access"},"allowAnyOrgUsers":{"type":"boolean","description":"Allow entire organization to access this service"},"validateInternalTraffic":{"type":"boolean","description":"Enforce internal traffic through SSO authentication flow"},"setCookieOnRootDomain":{"type":"boolean","description":"Set SSO authentication cookie on root domain"},"allowInternalTrafficViaPublicDns":{"type":"boolean","description":"Allow internal traffic from same or shared projects via public DNS to skip SSO authentication flow"}},"additionalProperties":false,"description":"Configure port authentication via SSO"},"headers":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"regexMode":{"type":"boolean","example":false,"default":false},"name":{"type":"string","pattern":"^[a-zA-Z0-9_\\-%$+]+$","example":"headerName"},"value":{"type":"string","example":"headerValue"}},"required":["name","value"],"additionalProperties":false,"description":"Matches provided headers as strings."},{"type":"object","properties":{"regexMode":{"type":"boolean","example":true,"default":false},"name":{"type":"string","example":"headerName"},"value":{"type":"string","example":"headerValue"}},"required":["name","value"],"additionalProperties":false,"description":"Matches provided headers as regex."}]},"description":"List of header authentication settings, it checks the presence of all headers and compares it against the expected value. Wildcard (*) is supported."},"verificationMode":{"type":"string","enum":["or","and"],"description":"Mode used to verify multiple security features like ip policies and SSO authentication"},"securePathConfiguration":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Enable security policies on a path-level style"},"skipSecurityPoliciesForInternalTrafficViaPublicDns":{"type":"boolean","description":"Allow internal traffic from same or shared projects via public DNS to skip all security policies"},"rules":{"type":"array","items":{"type":"object","properties":{"paths":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"path":{"type":"string","pattern":"^\\/([_a-zA-Z0-9-&?=.]*)((\\/[_a-zA-Z0-9-&?=.]+)*(\\/)?)?$"},"routingMode":{"type":"string","enum":["prefix"],"description":"Mode of the path, determining how the URI will be interpreted.","example":"prefix"},"priority":{"type":"integer","minimum":0,"maximum":100,"example":80}},"required":["path","routingMode","priority"],"additionalProperties":false,"description":"Route when the path starts with the provided prefix."},{"type":"object","properties":{"path":{"type":"string","pattern":"^\\/([_a-zA-Z0-9-&?=.]*)((\\/[_a-zA-Z0-9-&?=.]+)*(\\/)?)?$"},"routingMode":{"type":"string","enum":["exact"],"description":"Mode of the path, determining how the URI will be interpreted.","example":"exact"},"priority":{"type":"integer","minimum":0,"maximum":100,"example":80}},"required":["path","routingMode","priority"],"additionalProperties":false,"description":"Route when the path is an exact match."},{"type":"object","properties":{"path":{"type":"string"},"routingMode":{"type":"string","enum":["regex"],"description":"Mode of the path, determining how the URI will be interpreted.","example":"regex"},"priority":{"type":"integer","minimum":0,"maximum":100,"example":80}},"required":["path","routingMode","priority"],"additionalProperties":false,"description":"Route when the path matches the provided regex."}],"description":"Data about how the path should be handled."},"description":"Array of path objects which represent the paths and their priority for which the security policies will be enforced"},"accessMode":{"type":"string","enum":["protected","unprotected"],"description":"Specify the way the path rule will behave when processing policies. This enables an allow-list/deny-list approach for access control on each path","example":"protected"},"securityPolicies":{"type":"object","properties":{"orPolicies":{"type":"object","properties":{"credentials":{"type":"array","items":{"type":"object","properties":{"username":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The username to access the service","example":"admin"},"password":{"type":"string","description":"The password to access the service with this username.","example":"password123"},"type":{"type":"string","enum":["basic-auth"],"description":"The type of authentication used","example":"basic-auth"}},"required":["username","password","type"],"additionalProperties":false},"description":"An array of credentials to access the service."},"ip":{"type":"array","items":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","description":"An IP address used by this rule","example":"127.0.0.1"},"description":"An array of IP addresses used for this rule"},"action":{"type":"string","enum":["ALLOW","DENY"],"description":"The action for this rule.","example":"DENY"}},"required":["addresses","action"],"additionalProperties":false},"description":"An array of IP address policies."},"policies":{"type":"array","items":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","description":"An IP address used by this rule","example":"127.0.0.1"},"description":"An array of IP addresses used for this rule"},"action":{"type":"string","enum":["ALLOW","DENY"],"description":"The action for this rule.","example":"DENY"}},"required":["addresses","action"],"additionalProperties":false},"description":"An array of IP address policies."},"sso":{"type":"object","properties":{"organizationId":{"type":"string","description":"ID of the SSO organization that the user will have to be a member of"},"directoryGroupIds":{"type":"array","items":{"type":"string"},"description":"Array of directory groups that will have access"},"allowAnyOrgUsers":{"type":"boolean","description":"Allow entire organization to access this service"},"validateInternalTraffic":{"type":"boolean","description":"Enforce internal traffic through SSO authentication flow"},"setCookieOnRootDomain":{"type":"boolean","description":"Set SSO authentication cookie on root domain"},"allowInternalTrafficViaPublicDns":{"type":"boolean","description":"Allow internal traffic from same or shared projects via public DNS to skip SSO authentication flow"}},"additionalProperties":false,"description":"Configure port authentication via SSO"},"headers":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"regexMode":{"type":"boolean","example":false,"default":false},"name":{"type":"string","pattern":"^[a-zA-Z0-9_\\-%$+]+$","example":"headerName"},"value":{"type":"string","example":"headerValue"}},"required":["name","value"],"additionalProperties":false,"description":"Matches provided headers as strings."},{"type":"object","properties":{"regexMode":{"type":"boolean","example":true,"default":false},"name":{"type":"string","example":"headerName"},"value":{"type":"string","example":"headerValue"}},"required":["name","value"],"additionalProperties":false,"description":"Matches provided headers as regex."}]},"description":"List of header authentication settings, it checks the presence of all headers and compares it against the expected value. Wildcard (*) is supported."}},"additionalProperties":false},"requiredPolicies":{"type":"object","properties":{"credentials":{"type":"array","items":{"type":"object","properties":{"username":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The username to access the service","example":"admin"},"password":{"type":"string","description":"The password to access the service with this username.","example":"password123"},"type":{"type":"string","enum":["basic-auth"],"description":"The type of authentication used","example":"basic-auth"}},"required":["username","password","type"],"additionalProperties":false},"description":"An array of credentials to access the service."},"ip":{"type":"array","items":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","description":"An IP address used by this rule","example":"127.0.0.1"},"description":"An array of IP addresses used for this rule"},"action":{"type":"string","enum":["ALLOW","DENY"],"description":"The action for this rule.","example":"DENY"}},"required":["addresses","action"],"additionalProperties":false},"description":"An array of IP address policies."},"policies":{"type":"array","items":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","description":"An IP address used by this rule","example":"127.0.0.1"},"description":"An array of IP addresses used for this rule"},"action":{"type":"string","enum":["ALLOW","DENY"],"description":"The action for this rule.","example":"DENY"}},"required":["addresses","action"],"additionalProperties":false},"description":"An array of IP address policies."},"sso":{"type":"object","properties":{"organizationId":{"type":"string","description":"ID of the SSO organization that the user will have to be a member of"},"directoryGroupIds":{"type":"array","items":{"type":"string"},"description":"Array of directory groups that will have access"},"allowAnyOrgUsers":{"type":"boolean","description":"Allow entire organization to access this service"},"validateInternalTraffic":{"type":"boolean","description":"Enforce internal traffic through SSO authentication flow"},"setCookieOnRootDomain":{"type":"boolean","description":"Set SSO authentication cookie on root domain"},"allowInternalTrafficViaPublicDns":{"type":"boolean","description":"Allow internal traffic from same or shared projects via public DNS to skip SSO authentication flow"}},"additionalProperties":false,"description":"Configure port authentication via SSO"},"headers":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"regexMode":{"type":"boolean","example":false,"default":false},"name":{"type":"string","pattern":"^[a-zA-Z0-9_\\-%$+]+$","example":"headerName"},"value":{"type":"string","example":"headerValue"}},"required":["name","value"],"additionalProperties":false,"description":"Matches provided headers as strings."},{"type":"object","properties":{"regexMode":{"type":"boolean","example":true,"default":false},"name":{"type":"string","example":"headerName"},"value":{"type":"string","example":"headerValue"}},"required":["name","value"],"additionalProperties":false,"description":"Matches provided headers as regex."}]},"description":"List of header authentication settings, it checks the presence of all headers and compares it against the expected value. Wildcard (*) is supported."}},"additionalProperties":false}},"additionalProperties":false}},"required":["paths","accessMode"],"additionalProperties":false},"default":[]}},"additionalProperties":false}},"additionalProperties":false,"default":{"credentials":[],"policies":[],"sso":{}}},"domains":{"type":"array","items":{"type":"string","description":"A domain to redirect to this port.","example":"app.example.com"},"description":"An array of domains to redirect to this port. Each domain must first be verified and registered to your account.","default":[]},"disableNfDomain":{"type":"boolean","description":"Disable routing on the default code.run domain for public HTTP ports with custom domains.","default":false},"advancedOptions":{"type":"object","properties":{"enableTlsPassthrough":{"type":"boolean","description":"Whether this port should use pass through mode for TLS"}},"additionalProperties":false},"protocol":{"type":"string","oneOf":[{"type":"string","enum":["HTTP","HTTP/2"]},{"type":"string","enum":["HTTP","HTTP/2","TCP","UDP"]}],"description":"The protocol to use for the port.","example":"HTTP"}},"required":["name","internalPort","protocol"],"additionalProperties":false},"default":[]},"runtimeEnvironment":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"An object containing the runtime environment to set for the service","example":{"VARIABLE_1":"abcdef","VARIABLE_2":"12345"},"default":{}},"runtimeFiles":{"type":"object","properties":{},"description":"Secret files as JSON object, encrypted at rest. File path must be absolute","example":{"/dir/fileName":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"healthChecks":{"type":"array","items":{"type":"object","properties":{"protocol":{"type":"string","enum":["HTTP","CMD","TCP"],"description":"The protocol to access the health check with.","example":"HTTP"},"type":{"type":"string","enum":["livenessProbe","readinessProbe","startupProbe"],"description":"The type of health check.","example":"readinessProbe"},"path":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*((\\?([a-zA-Z0-9-._]+(=[a-zA-Z0-9-._]+)?)*)(&([a-zA-Z0-9-._]+(=[a-zA-Z0-9-._]+)?)*)*)?$","description":"The path of the health check endpoint. Required when protocol is HTTP.","example":"/health-check"},"cmd":{"type":"string","description":"The command to run for the health check. Required when protocol is CMD"},"port":{"type":"integer","minimum":1,"description":"Port number for the health check endpoint. Required when protocol is HTTP.","example":8080},"initialDelaySeconds":{"type":"integer","minimum":1,"maximum":180,"description":"Initial delay, in seconds, before the health check is first run.","example":10},"periodSeconds":{"type":"integer","minimum":10,"maximum":600,"description":"The time between each check, in seconds.","example":60},"timeoutSeconds":{"type":"integer","minimum":1,"maximum":60,"description":"The time to wait for a response before marking the health check as a failure.","example":1},"failureThreshold":{"type":"integer","minimum":1,"maximum":255,"description":"The maximum number of allowed failures.","example":3},"successThreshold":{"type":"integer","minimum":1,"maximum":255,"description":"The number of successes required to mark the health check as a success.","example":1}},"required":["protocol","type","initialDelaySeconds","periodSeconds","timeoutSeconds","failureThreshold"],"additionalProperties":false,"description":"A health check object."},"description":"An array of health checks."},"loadBalancing":{"type":"object","properties":{"mode":{"type":"string","enum":["leastConnection","consistentHash","roundRobin","consistentReplicaRouting"]},"consistentHash":{"type":"object","properties":{"mode":{"type":"string","enum":["ip","customHeader"]},"header":{"type":"string","nullable":true}},"required":["mode"],"additionalProperties":false},"consistentReplicaRouting":{"type":"object","properties":{"mode":{"type":"string","enum":["path","header"]}},"required":["mode"],"additionalProperties":false}},"required":["mode"],"additionalProperties":false},"autoscaling":{"type":"object","properties":{"horizontal":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether horizontal autoscaling should be enabled","example":true},"minReplicas":{"type":"number","format":"float","minimum":1,"description":"Minimum number of replicas which should be running at any time","example":1},"maxReplicas":{"type":"number","format":"float","description":"Maximum number of replicas which can be running at any time","example":3},"cpu":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether autoscaling should take into account cpu usage"},"thresholdPercentage":{"type":"integer","minimum":10,"maximum":100,"description":"Threshold CPU usage percentage at which the workload will be scaled"}},"required":["enabled","thresholdPercentage"],"additionalProperties":false},"memory":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether autoscaling should take into account memory usage"},"thresholdPercentage":{"type":"integer","minimum":10,"maximum":100,"description":"Threshold memory usage percentage at which the workload will be scaled"}},"required":["enabled","thresholdPercentage"],"additionalProperties":false},"rps":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether autoscaling should take into requests-per-second"},"thresholdValue":{"type":"integer","minimum":1,"description":"Threshold rps value on which the workload will be scaled"}},"required":["enabled","thresholdValue"],"additionalProperties":false},"userMetrics":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether to enable handling for custom metrics in the autoscaling configuration","example":true},"exposedMetricsPath":{"type":"string","pattern":"^\\/([_a-zA-Z0-9-&?=.]*)((\\/[_a-zA-Z0-9-&?=.]+)*(\\/)?)?$","description":"Path on which the metrics will be exposed by the service..","example":"/metrics"},"exposedMetricsPort":{"type":"integer","description":"Port on which the metrics will be exposed by the service.","example":8080},"metrics":{"type":"array","items":{"type":"object","properties":{"metricName":{"type":"string","pattern":"[a-zA-Z_:][a-zA-Z0-9_:]*$","description":"Name of the custom metric","example":"example-metric"},"metricType":{"type":"string","enum":["gauge","counter"],"description":"Type of metric exposed, this will affect how it'll be queried by the autoscaler component: Gauge will be used as is, Counter will be used with rate()","example":"gauge"},"thresholdValue":{"type":"number","format":"float","description":"Threshold value on which the workload will be scaled. Represents the average value across all running pods.","example":2}},"required":["metricName","metricType","thresholdValue"],"additionalProperties":false},"description":"Array of custom metrics exposed by the service that will be used by the autoscaling configuration. At least one metric is required."}},"required":["enabled","exposedMetricsPath","exposedMetricsPort","metrics"],"additionalProperties":false}},"required":["enabled","minReplicas","maxReplicas"],"additionalProperties":false,"description":"Describes the horizontal autoscaling configuration"}},"additionalProperties":false,"description":"Describes all autoscaling configurations"},"createOptions":{"type":"object","properties":{"volumesToAttach":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39}}},"additionalProperties":false},"serviceType":{"type":"string","enum":["deployment"],"description":"Type of the service (combined, build or deployment)","example":"deployment"},"deployment":{"type":"object","properties":{"type":{"type":"string","enum":["deployment","statefulSet"],"description":"The way the service should be deployed. Either as a deployment (default), or as a stateful set."},"instances":{"type":"integer","minimum":0,"description":"The number of instances to run the service on.","example":1},"buildpack":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customProcess","customCommand","customEntrypointCustomCommand","originalEntrypointCustomCommand"],"description":"Type of buildpack run configuration"},"customProcess":{"type":"string","description":"Custom process which should be run. Required in case where `configType` is `customProcess`"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be run. Required in case where `configType` is `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be run. Required in case where `configType` is `customCommand`, `customEntrypointCustomCommand` or `originalEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of buildpack runtime"},"docker":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customEntrypoint","customCommand","customEntrypointCustomCommand"],"description":"Type of entrypoint & command override configuration","example":"default"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be used. Required in case where `configType` is `customEntrypoint` or `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be used. Required in case where `configType` is `customCommand` or `customEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of docker runtime"},"storage":{"type":"object","properties":{"useHdbStorage":{"type":"boolean"},"usePdSsdStorage":{"type":"boolean"},"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":1024,"description":"Ephemeral storage per container in MB","example":1024}},"additionalProperties":false},"shmSize":{"type":"integer","minimum":64,"description":"Configures the amount of available memory-backed disk space available to /dev/shm"}},"additionalProperties":false},"strategy":{"type":"object","properties":{"type":{"type":"string","enum":["recreate","rollout-steady","rollout-balanced","rollout-fast","custom"],"description":"Configures the instance roll out strategy of your service. Currently only available via feature flag."},"settings":{"type":"object","properties":{"maxSurge":{"oneOf":[{"type":"integer","minimum":0,"description":"A non-negative integer."},{"type":"string","pattern":"^\\d+%$","description":"A percentage string in the range 0% to 100%, e.g. `25%`"}],"description":"Maximum number or percentage of pods that can be created above the desired count."},"maxUnavailable":{"anyOf":[{"type":"integer","minimum":0,"description":"A non-negative integer."},{"type":"string","pattern":"^\\d+%$","description":"A percentage string in the range 0% to 100%, e.g. `25%`"}],"description":"Maximum number or percentage of pods that can be unavailable during the update."}},"required":["maxSurge","maxUnavailable"],"additionalProperties":false}},"additionalProperties":false,"description":"Roll out strategy of the service"},"zonalRedundancy":{"type":"object","properties":{"type":{"type":"string","enum":["disabled","preferred","required"],"description":"Defines scheduling behaviour across different zones within the same region."},"minZones":{"type":"integer","minimum":1,"description":"Defines how many zones are required and will prevent containers from additional scheduling into existing zones. (Only relevant if type is set to \"required\")"}},"additionalProperties":false},"gpu":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"gpuType":{"type":"string"},"gpuCount":{"type":"integer"},"timesliced":{"type":"boolean"}},"required":["gpuType"],"additionalProperties":false}},"additionalProperties":false},"gracePeriodSeconds":{"type":"integer","minimum":15,"maximum":600,"description":"The 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."},"gradualRolloutStrategyId":{"type":"string","pattern":"^[A-Za-z0-9-]+$","nullable":true,"description":"The id of the strategy to be attached to service.","examples":["strategy-id","strategy-id"]},"ssh":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Enables SSH access if the resource matches an SSH identity selector."}},"required":["enabled"],"additionalProperties":false,"description":"Controls related to SSH access within the resource."},"metadata":{"type":"object","properties":{"labels":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom labels for the workload."},"annotations":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom annotations for the workload as string or object."}},"additionalProperties":false,"description":"Allow setting custom labels and annotations for workloads."},"internal":{"type":"object","properties":{"id":{"anyOf":[{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":54,"example":"example-build-service"},{"type":"string","example":"example-project/example-build-service"}],"description":"ID of the build service to deploy"},"branch":{"type":"string","description":"Branch to deploy","example":"master"},"buildSHA":{"oneOf":[{"type":"string","minLength":40,"maxLength":40,"description":"A commit sha."},{"type":"string","enum":["latest"],"description":"Latest commit."}],"description":"Commit SHA to deploy, or 'latest' to deploy the most recent commit","example":"latest"},"buildId":{"type":"string","description":"ID of the build that should be deployed","example":"premium-guide-6393"}},"additionalProperties":false},"external":{"type":"object","properties":{"imagePath":{"type":"string","pattern":"^(?:(?:https?:\\/\\/)?([a-zA-Z0-9\\-]+\\.[a-zA-Z0-9\\.\\-]+)(\\/v1)?)?(?:\\/)?([a-zA-Z/-9\\.\\-_]+)(?:\\:([a-zA-Z/-9\\.\\-_\\:]+)|\\@([a-zA-Z/-9\\.\\-_\\:]+))$","description":"Image to be deployed. When not deploying from Dockerhub the URL must be specified.","example":"nginx:latest"},"credentials":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"ID of the saved credentials to use to access this external image.","example":"example-credentials"}},"required":["imagePath"],"additionalProperties":false},"imageUrl":{"type":"string","description":"Image registry url of the deployed image."}},"required":["instances"],"additionalProperties":false},"id":{"type":"string","description":"Identifier for the service","example":"example-service"},"appId":{"type":"string","description":"Full identifier used for service deployment","example":"/example-user/default-project/example-service"},"cluster":{"type":"object","properties":{"id":{"type":"string","description":"The id of the cluster associated with this project.","example":"nf-europe-west"},"name":{"type":"string","description":"The name of the cluster associated with this project.","example":"nf-europe-west"},"namespace":{"type":"string","description":"Namespace this resource is located within on the cluster.","example":"ns-8zy2mcjh9zn2"},"loadBalancers":{"type":"array","items":{"type":"string","example":"lb.659200800000000000000000.northflank.com"},"description":"Load balancer DNS for the cluster."}},"required":["id","name"],"additionalProperties":false,"description":"Cluster information"},"createdAt":{"type":"string","format":"date-time","description":"time of creation"},"updatedAt":{"type":"string","format":"date-time","description":"time of update"},"status":{"type":"object","properties":{"deployment":{"type":"object","properties":{"status":{"type":"string","enum":["PENDING","IN_PROGRESS","COMPLETED","FAILED"],"description":"The current status of the deployment.","example":"COMPLETED"},"reason":{"type":"string","enum":["SCALING","DEPLOYING"],"description":"The reason the current deployment was started.","example":"DEPLOYING"},"lastTransitionTime":{"type":"string","format":"date-time","description":"The timestamp of when the deployment reached this status.","example":"2021-11-29T11:47:16.624Z"}},"required":["status","reason"],"additionalProperties":false,"description":"Details about the current deployment status."}},"additionalProperties":false,"description":"Details about the current service status."}},"required":["name","billing","serviceType","deployment","id","appId","cluster","status"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Services","project"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":54,"description":"The name of the service.","example":"Example Service"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"A description of the service.","example":"A service description"},"stageId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"billing":{"type":"object","properties":{"deploymentPlan":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The ID of the deployment plan to use.","example":"nf-compute-20"},"gpu":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"gpuType":{"type":"string"},"gpuCount":{"type":"integer"},"timesliced":{"type":"boolean"}},"required":["gpuType"],"additionalProperties":false}},"additionalProperties":false}},"required":["deploymentPlan"],"additionalProperties":false},"infrastructure":{"type":"object","properties":{"architecture":{"type":"string","enum":["x86","arm"]}},"additionalProperties":false},"deployment":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["deployment","statefulSet"],"description":"The way the service should be deployed. Either as a deployment (default), or as a stateful set."},"instances":{"type":"integer","minimum":0,"description":"The number of instances to run the service on.","example":1},"buildpack":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customProcess","customCommand","customEntrypointCustomCommand","originalEntrypointCustomCommand"],"description":"Type of buildpack run configuration"},"customProcess":{"type":"string","description":"Custom process which should be run. Required in case where `configType` is `customProcess`"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be run. Required in case where `configType` is `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be run. Required in case where `configType` is `customCommand`, `customEntrypointCustomCommand` or `originalEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of buildpack runtime"},"docker":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customEntrypoint","customCommand","customEntrypointCustomCommand"],"description":"Type of entrypoint & command override configuration","example":"default"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be used. Required in case where `configType` is `customEntrypoint` or `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be used. Required in case where `configType` is `customCommand` or `customEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of docker runtime"},"storage":{"type":"object","properties":{"useHdbStorage":{"type":"boolean"},"usePdSsdStorage":{"type":"boolean"},"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":1024,"description":"Ephemeral storage per container in MB","example":1024}},"additionalProperties":false},"shmSize":{"type":"integer","minimum":64,"description":"Configures the amount of available memory-backed disk space available to /dev/shm"}},"additionalProperties":false},"strategy":{"type":"object","properties":{"type":{"type":"string","enum":["recreate","rollout-steady","rollout-balanced","rollout-fast","custom"],"description":"Configures the instance roll out strategy of your service. Currently only available via feature flag."},"settings":{"type":"object","properties":{"maxSurge":{"oneOf":[{"type":"integer","minimum":0,"description":"A non-negative integer."},{"type":"string","pattern":"^\\d+%$","description":"A percentage string in the range 0% to 100%, e.g. `25%`"}],"description":"Maximum number or percentage of pods that can be created above the desired count."},"maxUnavailable":{"anyOf":[{"type":"integer","minimum":0,"description":"A non-negative integer."},{"type":"string","pattern":"^\\d+%$","description":"A percentage string in the range 0% to 100%, e.g. `25%`"}],"description":"Maximum number or percentage of pods that can be unavailable during the update."}},"required":["maxSurge","maxUnavailable"],"additionalProperties":false}},"additionalProperties":false,"description":"Roll out strategy of the service"},"zonalRedundancy":{"type":"object","properties":{"type":{"type":"string","enum":["disabled","preferred","required"],"description":"Defines scheduling behaviour across different zones within the same region."},"minZones":{"type":"integer","minimum":1,"description":"Defines how many zones are required and will prevent containers from additional scheduling into existing zones. (Only relevant if type is set to \"required\")"}},"additionalProperties":false},"gpu":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"gpuType":{"type":"string"},"gpuCount":{"type":"integer"},"timesliced":{"type":"boolean"}},"required":["gpuType"],"additionalProperties":false}},"additionalProperties":false},"gracePeriodSeconds":{"type":"integer","minimum":15,"maximum":600,"description":"The 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."},"gradualRolloutStrategyId":{"type":"string","pattern":"^[A-Za-z0-9-]+$","nullable":true,"description":"The id of the strategy to be attached to service.","examples":["strategy-id","strategy-id"]},"ssh":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Enables SSH access if the resource matches an SSH identity selector."}},"required":["enabled"],"additionalProperties":false,"description":"Controls related to SSH access within the resource."},"metadata":{"type":"object","properties":{"labels":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom labels for the workload."},"annotations":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom annotations for the workload as string or object."}},"additionalProperties":false,"description":"Allow setting custom labels and annotations for workloads."},"internal":{"type":"object","properties":{"id":{"anyOf":[{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":54,"example":"example-build-service"},{"type":"string","example":"example-project/example-build-service"}],"description":"ID of the build service to deploy"},"branch":{"type":"string","description":"Branch to deploy","example":"master"},"buildSHA":{"oneOf":[{"type":"string","minLength":40,"maxLength":40,"description":"A commit sha."},{"type":"string","enum":["latest"],"description":"Latest commit."}],"description":"Commit SHA to deploy, or 'latest' to deploy the most recent commit","example":"latest"},"buildId":{"type":"string","description":"ID of the build that should be deployed","example":"premium-guide-6393"}},"additionalProperties":false}},"required":["instances","internal"],"additionalProperties":false,"description":"Internal deployment"},{"type":"object","properties":{"type":{"type":"string","enum":["deployment","statefulSet"],"description":"The way the service should be deployed. Either as a deployment (default), or as a stateful set."},"instances":{"type":"integer","minimum":0,"description":"The number of instances to run the service on.","example":1},"buildpack":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customProcess","customCommand","customEntrypointCustomCommand","originalEntrypointCustomCommand"],"description":"Type of buildpack run configuration"},"customProcess":{"type":"string","description":"Custom process which should be run. Required in case where `configType` is `customProcess`"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be run. Required in case where `configType` is `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be run. Required in case where `configType` is `customCommand`, `customEntrypointCustomCommand` or `originalEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of buildpack runtime"},"docker":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customEntrypoint","customCommand","customEntrypointCustomCommand"],"description":"Type of entrypoint & command override configuration","example":"default"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be used. Required in case where `configType` is `customEntrypoint` or `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be used. Required in case where `configType` is `customCommand` or `customEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of docker runtime"},"storage":{"type":"object","properties":{"useHdbStorage":{"type":"boolean"},"usePdSsdStorage":{"type":"boolean"},"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":1024,"description":"Ephemeral storage per container in MB","example":1024}},"additionalProperties":false},"shmSize":{"type":"integer","minimum":64,"description":"Configures the amount of available memory-backed disk space available to /dev/shm"}},"additionalProperties":false},"strategy":{"type":"object","properties":{"type":{"type":"string","enum":["recreate","rollout-steady","rollout-balanced","rollout-fast","custom"],"description":"Configures the instance roll out strategy of your service. Currently only available via feature flag."},"settings":{"type":"object","properties":{"maxSurge":{"oneOf":[{"type":"integer","minimum":0,"description":"A non-negative integer."},{"type":"string","pattern":"^\\d+%$","description":"A percentage string in the range 0% to 100%, e.g. `25%`"}],"description":"Maximum number or percentage of pods that can be created above the desired count."},"maxUnavailable":{"anyOf":[{"type":"integer","minimum":0,"description":"A non-negative integer."},{"type":"string","pattern":"^\\d+%$","description":"A percentage string in the range 0% to 100%, e.g. `25%`"}],"description":"Maximum number or percentage of pods that can be unavailable during the update."}},"required":["maxSurge","maxUnavailable"],"additionalProperties":false}},"additionalProperties":false,"description":"Roll out strategy of the service"},"zonalRedundancy":{"type":"object","properties":{"type":{"type":"string","enum":["disabled","preferred","required"],"description":"Defines scheduling behaviour across different zones within the same region."},"minZones":{"type":"integer","minimum":1,"description":"Defines how many zones are required and will prevent containers from additional scheduling into existing zones. (Only relevant if type is set to \"required\")"}},"additionalProperties":false},"gpu":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"gpuType":{"type":"string"},"gpuCount":{"type":"integer"},"timesliced":{"type":"boolean"}},"required":["gpuType"],"additionalProperties":false}},"additionalProperties":false},"gracePeriodSeconds":{"type":"integer","minimum":15,"maximum":600,"description":"The 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."},"gradualRolloutStrategyId":{"type":"string","pattern":"^[A-Za-z0-9-]+$","nullable":true,"description":"The id of the strategy to be attached to service.","examples":["strategy-id","strategy-id"]},"ssh":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Enables SSH access if the resource matches an SSH identity selector."}},"required":["enabled"],"additionalProperties":false,"description":"Controls related to SSH access within the resource."},"metadata":{"type":"object","properties":{"labels":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom labels for the workload."},"annotations":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom annotations for the workload as string or object."}},"additionalProperties":false,"description":"Allow setting custom labels and annotations for workloads."},"external":{"type":"object","properties":{"imagePath":{"type":"string","pattern":"^(?:(?:https?:\\/\\/)?([a-zA-Z0-9\\-]+\\.[a-zA-Z0-9\\.\\-]+)(\\/v1)?)?(?:\\/)?([a-zA-Z/-9\\.\\-_]+)(?:\\:([a-zA-Z/-9\\.\\-_\\:]+)|\\@([a-zA-Z/-9\\.\\-_\\:]+))$","description":"Image to be deployed. When not deploying from Dockerhub the URL must be specified.","example":"nginx:latest"},"credentials":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"ID of the saved credentials to use to access this external image.","example":"example-credentials"}},"required":["imagePath"],"additionalProperties":false}},"required":["instances","external"],"additionalProperties":false,"description":"External deployment"},{"type":"object","properties":{"type":{"type":"string","enum":["deployment","statefulSet"],"description":"The way the service should be deployed. Either as a deployment (default), or as a stateful set."},"instances":{"type":"integer","minimum":0,"description":"The number of instances to run the service on.","example":1},"buildpack":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customProcess","customCommand","customEntrypointCustomCommand","originalEntrypointCustomCommand"],"description":"Type of buildpack run configuration"},"customProcess":{"type":"string","description":"Custom process which should be run. Required in case where `configType` is `customProcess`"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be run. Required in case where `configType` is `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be run. Required in case where `configType` is `customCommand`, `customEntrypointCustomCommand` or `originalEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of buildpack runtime"},"docker":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customEntrypoint","customCommand","customEntrypointCustomCommand"],"description":"Type of entrypoint & command override configuration","example":"default"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be used. Required in case where `configType` is `customEntrypoint` or `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be used. Required in case where `configType` is `customCommand` or `customEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of docker runtime"},"storage":{"type":"object","properties":{"useHdbStorage":{"type":"boolean"},"usePdSsdStorage":{"type":"boolean"},"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":1024,"description":"Ephemeral storage per container in MB","example":1024}},"additionalProperties":false},"shmSize":{"type":"integer","minimum":64,"description":"Configures the amount of available memory-backed disk space available to /dev/shm"}},"additionalProperties":false},"strategy":{"type":"object","properties":{"type":{"type":"string","enum":["recreate","rollout-steady","rollout-balanced","rollout-fast","custom"],"description":"Configures the instance roll out strategy of your service. Currently only available via feature flag."},"settings":{"type":"object","properties":{"maxSurge":{"oneOf":[{"type":"integer","minimum":0,"description":"A non-negative integer."},{"type":"string","pattern":"^\\d+%$","description":"A percentage string in the range 0% to 100%, e.g. `25%`"}],"description":"Maximum number or percentage of pods that can be created above the desired count."},"maxUnavailable":{"anyOf":[{"type":"integer","minimum":0,"description":"A non-negative integer."},{"type":"string","pattern":"^\\d+%$","description":"A percentage string in the range 0% to 100%, e.g. `25%`"}],"description":"Maximum number or percentage of pods that can be unavailable during the update."}},"required":["maxSurge","maxUnavailable"],"additionalProperties":false}},"additionalProperties":false,"description":"Roll out strategy of the service"},"zonalRedundancy":{"type":"object","properties":{"type":{"type":"string","enum":["disabled","preferred","required"],"description":"Defines scheduling behaviour across different zones within the same region."},"minZones":{"type":"integer","minimum":1,"description":"Defines how many zones are required and will prevent containers from additional scheduling into existing zones. (Only relevant if type is set to \"required\")"}},"additionalProperties":false},"gpu":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"gpuType":{"type":"string"},"gpuCount":{"type":"integer"},"timesliced":{"type":"boolean"}},"required":["gpuType"],"additionalProperties":false}},"additionalProperties":false},"gracePeriodSeconds":{"type":"integer","minimum":15,"maximum":600,"description":"The 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."},"gradualRolloutStrategyId":{"type":"string","pattern":"^[A-Za-z0-9-]+$","nullable":true,"description":"The id of the strategy to be attached to service.","examples":["strategy-id","strategy-id"]},"ssh":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Enables SSH access if the resource matches an SSH identity selector."}},"required":["enabled"],"additionalProperties":false,"description":"Controls related to SSH access within the resource."},"metadata":{"type":"object","properties":{"labels":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom labels for the workload."},"annotations":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom annotations for the workload as string or object."}},"additionalProperties":false,"description":"Allow setting custom labels and annotations for workloads."}},"required":["instances"],"additionalProperties":false,"description":"Choose later"}],"description":"Deployment type"},"ports":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":1,"maxLength":8,"description":"The name used to identify the port.","example":"p01"},"internalPort":{"type":"integer","minimum":1,"maximum":65535,"description":"The port number.","example":8080},"public":{"type":"boolean","description":"If true, the port will be exposed publicly.","example":true,"default":false},"security":{"type":"object","properties":{"credentials":{"type":"array","items":{"type":"object","properties":{"username":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The username to access the service","example":"admin"},"password":{"type":"string","description":"The password to access the service with this username.","example":"password123"},"type":{"type":"string","enum":["basic-auth"],"description":"The type of authentication used","example":"basic-auth"}},"required":["username","password","type"],"additionalProperties":false},"description":"An array of credentials to access the service."},"ip":{"type":"array","items":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","description":"An IP address used by this rule","example":"127.0.0.1"},"description":"An array of IP addresses used for this rule"},"action":{"type":"string","enum":["ALLOW","DENY"],"description":"The action for this rule.","example":"DENY"}},"required":["addresses","action"],"additionalProperties":false},"description":"An array of IP address policies."},"policies":{"type":"array","items":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","description":"An IP address used by this rule","example":"127.0.0.1"},"description":"An array of IP addresses used for this rule"},"action":{"type":"string","enum":["ALLOW","DENY"],"description":"The action for this rule.","example":"DENY"}},"required":["addresses","action"],"additionalProperties":false},"description":"An array of IP address policies."},"sso":{"type":"object","properties":{"organizationId":{"type":"string","description":"ID of the SSO organization that the user will have to be a member of"},"directoryGroupIds":{"type":"array","items":{"type":"string"},"description":"Array of directory groups that will have access"},"allowAnyOrgUsers":{"type":"boolean","description":"Allow entire organization to access this service"},"validateInternalTraffic":{"type":"boolean","description":"Enforce internal traffic through SSO authentication flow"},"setCookieOnRootDomain":{"type":"boolean","description":"Set SSO authentication cookie on root domain"},"allowInternalTrafficViaPublicDns":{"type":"boolean","description":"Allow internal traffic from same or shared projects via public DNS to skip SSO authentication flow"}},"additionalProperties":false,"description":"Configure port authentication via SSO"},"headers":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"regexMode":{"type":"boolean","example":false,"default":false},"name":{"type":"string","pattern":"^[a-zA-Z0-9_\\-%$+]+$","example":"headerName"},"value":{"type":"string","example":"headerValue"}},"required":["name","value"],"additionalProperties":false,"description":"Matches provided headers as strings."},{"type":"object","properties":{"regexMode":{"type":"boolean","example":true,"default":false},"name":{"type":"string","example":"headerName"},"value":{"type":"string","example":"headerValue"}},"required":["name","value"],"additionalProperties":false,"description":"Matches provided headers as regex."}]},"description":"List of header authentication settings, it checks the presence of all headers and compares it against the expected value. Wildcard (*) is supported."},"verificationMode":{"type":"string","enum":["or","and"],"description":"Mode used to verify multiple security features like ip policies and SSO authentication"},"securePathConfiguration":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Enable security policies on a path-level style"},"skipSecurityPoliciesForInternalTrafficViaPublicDns":{"type":"boolean","description":"Allow internal traffic from same or shared projects via public DNS to skip all security policies"},"rules":{"type":"array","items":{"type":"object","properties":{"paths":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"path":{"type":"string","pattern":"^\\/([_a-zA-Z0-9-&?=.]*)((\\/[_a-zA-Z0-9-&?=.]+)*(\\/)?)?$"},"routingMode":{"type":"string","enum":["prefix"],"description":"Mode of the path, determining how the URI will be interpreted.","example":"prefix"},"priority":{"type":"integer","minimum":0,"maximum":100,"example":80}},"required":["path","routingMode","priority"],"additionalProperties":false,"description":"Route when the path starts with the provided prefix."},{"type":"object","properties":{"path":{"type":"string","pattern":"^\\/([_a-zA-Z0-9-&?=.]*)((\\/[_a-zA-Z0-9-&?=.]+)*(\\/)?)?$"},"routingMode":{"type":"string","enum":["exact"],"description":"Mode of the path, determining how the URI will be interpreted.","example":"exact"},"priority":{"type":"integer","minimum":0,"maximum":100,"example":80}},"required":["path","routingMode","priority"],"additionalProperties":false,"description":"Route when the path is an exact match."},{"type":"object","properties":{"path":{"type":"string"},"routingMode":{"type":"string","enum":["regex"],"description":"Mode of the path, determining how the URI will be interpreted.","example":"regex"},"priority":{"type":"integer","minimum":0,"maximum":100,"example":80}},"required":["path","routingMode","priority"],"additionalProperties":false,"description":"Route when the path matches the provided regex."}],"description":"Data about how the path should be handled."},"description":"Array of path objects which represent the paths and their priority for which the security policies will be enforced"},"accessMode":{"type":"string","enum":["protected","unprotected"],"description":"Specify the way the path rule will behave when processing policies. This enables an allow-list/deny-list approach for access control on each path","example":"protected"},"securityPolicies":{"type":"object","properties":{"orPolicies":{"type":"object","properties":{"credentials":{"type":"array","items":{"type":"object","properties":{"username":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The username to access the service","example":"admin"},"password":{"type":"string","description":"The password to access the service with this username.","example":"password123"},"type":{"type":"string","enum":["basic-auth"],"description":"The type of authentication used","example":"basic-auth"}},"required":["username","password","type"],"additionalProperties":false},"description":"An array of credentials to access the service."},"ip":{"type":"array","items":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","description":"An IP address used by this rule","example":"127.0.0.1"},"description":"An array of IP addresses used for this rule"},"action":{"type":"string","enum":["ALLOW","DENY"],"description":"The action for this rule.","example":"DENY"}},"required":["addresses","action"],"additionalProperties":false},"description":"An array of IP address policies."},"policies":{"type":"array","items":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","description":"An IP address used by this rule","example":"127.0.0.1"},"description":"An array of IP addresses used for this rule"},"action":{"type":"string","enum":["ALLOW","DENY"],"description":"The action for this rule.","example":"DENY"}},"required":["addresses","action"],"additionalProperties":false},"description":"An array of IP address policies."},"sso":{"type":"object","properties":{"organizationId":{"type":"string","description":"ID of the SSO organization that the user will have to be a member of"},"directoryGroupIds":{"type":"array","items":{"type":"string"},"description":"Array of directory groups that will have access"},"allowAnyOrgUsers":{"type":"boolean","description":"Allow entire organization to access this service"},"validateInternalTraffic":{"type":"boolean","description":"Enforce internal traffic through SSO authentication flow"},"setCookieOnRootDomain":{"type":"boolean","description":"Set SSO authentication cookie on root domain"},"allowInternalTrafficViaPublicDns":{"type":"boolean","description":"Allow internal traffic from same or shared projects via public DNS to skip SSO authentication flow"}},"additionalProperties":false,"description":"Configure port authentication via SSO"},"headers":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"regexMode":{"type":"boolean","example":false,"default":false},"name":{"type":"string","pattern":"^[a-zA-Z0-9_\\-%$+]+$","example":"headerName"},"value":{"type":"string","example":"headerValue"}},"required":["name","value"],"additionalProperties":false,"description":"Matches provided headers as strings."},{"type":"object","properties":{"regexMode":{"type":"boolean","example":true,"default":false},"name":{"type":"string","example":"headerName"},"value":{"type":"string","example":"headerValue"}},"required":["name","value"],"additionalProperties":false,"description":"Matches provided headers as regex."}]},"description":"List of header authentication settings, it checks the presence of all headers and compares it against the expected value. Wildcard (*) is supported."}},"additionalProperties":false},"requiredPolicies":{"type":"object","properties":{"credentials":{"type":"array","items":{"type":"object","properties":{"username":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The username to access the service","example":"admin"},"password":{"type":"string","description":"The password to access the service with this username.","example":"password123"},"type":{"type":"string","enum":["basic-auth"],"description":"The type of authentication used","example":"basic-auth"}},"required":["username","password","type"],"additionalProperties":false},"description":"An array of credentials to access the service."},"ip":{"type":"array","items":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","description":"An IP address used by this rule","example":"127.0.0.1"},"description":"An array of IP addresses used for this rule"},"action":{"type":"string","enum":["ALLOW","DENY"],"description":"The action for this rule.","example":"DENY"}},"required":["addresses","action"],"additionalProperties":false},"description":"An array of IP address policies."},"policies":{"type":"array","items":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","description":"An IP address used by this rule","example":"127.0.0.1"},"description":"An array of IP addresses used for this rule"},"action":{"type":"string","enum":["ALLOW","DENY"],"description":"The action for this rule.","example":"DENY"}},"required":["addresses","action"],"additionalProperties":false},"description":"An array of IP address policies."},"sso":{"type":"object","properties":{"organizationId":{"type":"string","description":"ID of the SSO organization that the user will have to be a member of"},"directoryGroupIds":{"type":"array","items":{"type":"string"},"description":"Array of directory groups that will have access"},"allowAnyOrgUsers":{"type":"boolean","description":"Allow entire organization to access this service"},"validateInternalTraffic":{"type":"boolean","description":"Enforce internal traffic through SSO authentication flow"},"setCookieOnRootDomain":{"type":"boolean","description":"Set SSO authentication cookie on root domain"},"allowInternalTrafficViaPublicDns":{"type":"boolean","description":"Allow internal traffic from same or shared projects via public DNS to skip SSO authentication flow"}},"additionalProperties":false,"description":"Configure port authentication via SSO"},"headers":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"regexMode":{"type":"boolean","example":false,"default":false},"name":{"type":"string","pattern":"^[a-zA-Z0-9_\\-%$+]+$","example":"headerName"},"value":{"type":"string","example":"headerValue"}},"required":["name","value"],"additionalProperties":false,"description":"Matches provided headers as strings."},{"type":"object","properties":{"regexMode":{"type":"boolean","example":true,"default":false},"name":{"type":"string","example":"headerName"},"value":{"type":"string","example":"headerValue"}},"required":["name","value"],"additionalProperties":false,"description":"Matches provided headers as regex."}]},"description":"List of header authentication settings, it checks the presence of all headers and compares it against the expected value. Wildcard (*) is supported."}},"additionalProperties":false}},"additionalProperties":false}},"required":["paths","accessMode"],"additionalProperties":false},"default":[]}},"additionalProperties":false}},"additionalProperties":false,"default":{"credentials":[],"policies":[],"sso":{}}},"domains":{"type":"array","items":{"type":"string","description":"A domain to redirect to this port.","example":"app.example.com"},"description":"An array of domains to redirect to this port. Each domain must first be verified and registered to your account.","default":[]},"disableNfDomain":{"type":"boolean","description":"Disable routing on the default code.run domain for public HTTP ports with custom domains.","default":false},"advancedOptions":{"type":"object","properties":{"enableTlsPassthrough":{"type":"boolean","description":"Whether this port should use pass through mode for TLS"}},"additionalProperties":false},"protocol":{"type":"string","enum":["HTTP","HTTP/2","TCP","UDP"],"description":"The protocol to use for the port.","example":"HTTP"}},"required":["name","internalPort","protocol"],"additionalProperties":false},"default":[]},"runtimeEnvironment":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"An object containing the runtime environment to set for the service","example":{"VARIABLE_1":"abcdef","VARIABLE_2":"12345"},"default":{}},"runtimeFiles":{"type":"object","properties":{},"description":"Secret files as JSON object, encrypted at rest. File path must be absolute","example":{"/dir/fileName":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"healthChecks":{"type":"array","items":{"type":"object","properties":{"protocol":{"type":"string","enum":["HTTP","CMD","TCP"],"description":"The protocol to access the health check with.","example":"HTTP"},"type":{"type":"string","enum":["livenessProbe","readinessProbe","startupProbe"],"description":"The type of health check.","example":"readinessProbe"},"path":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*((\\?([a-zA-Z0-9-._]+(=[a-zA-Z0-9-._]+)?)*)(&([a-zA-Z0-9-._]+(=[a-zA-Z0-9-._]+)?)*)*)?$","description":"The path of the health check endpoint. Required when protocol is HTTP.","example":"/health-check"},"cmd":{"type":"string","description":"The command to run for the health check. Required when protocol is CMD"},"port":{"type":"integer","minimum":1,"description":"Port number for the health check endpoint. Required when protocol is HTTP.","example":8080},"initialDelaySeconds":{"type":"integer","minimum":1,"maximum":180,"description":"Initial delay, in seconds, before the health check is first run.","example":10},"periodSeconds":{"type":"integer","minimum":10,"maximum":600,"description":"The time between each check, in seconds.","example":60},"timeoutSeconds":{"type":"integer","minimum":1,"maximum":60,"description":"The time to wait for a response before marking the health check as a failure.","example":1},"failureThreshold":{"type":"integer","minimum":1,"maximum":255,"description":"The maximum number of allowed failures.","example":3},"successThreshold":{"type":"integer","minimum":1,"maximum":255,"description":"The number of successes required to mark the health check as a success.","example":1}},"required":["protocol","type","initialDelaySeconds","periodSeconds","timeoutSeconds","failureThreshold"],"additionalProperties":false,"description":"A health check object."},"description":"An array of health checks."},"loadBalancing":{"type":"object","properties":{"mode":{"type":"string","enum":["leastConnection","consistentHash","roundRobin","consistentReplicaRouting"]},"consistentHash":{"type":"object","properties":{"mode":{"type":"string","enum":["ip","customHeader"]},"header":{"type":"string","nullable":true}},"required":["mode"],"additionalProperties":false},"consistentReplicaRouting":{"type":"object","properties":{"mode":{"type":"string","enum":["path","header"]}},"required":["mode"],"additionalProperties":false}},"required":["mode"],"additionalProperties":false},"autoscaling":{"type":"object","properties":{"horizontal":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether horizontal autoscaling should be enabled","example":true},"minReplicas":{"type":"number","format":"float","minimum":1,"description":"Minimum number of replicas which should be running at any time","example":1},"maxReplicas":{"type":"number","format":"float","description":"Maximum number of replicas which can be running at any time","example":3},"cpu":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether autoscaling should take into account cpu usage"},"thresholdPercentage":{"type":"integer","minimum":10,"maximum":100,"description":"Threshold CPU usage percentage at which the workload will be scaled"}},"required":["enabled","thresholdPercentage"],"additionalProperties":false},"memory":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether autoscaling should take into account memory usage"},"thresholdPercentage":{"type":"integer","minimum":10,"maximum":100,"description":"Threshold memory usage percentage at which the workload will be scaled"}},"required":["enabled","thresholdPercentage"],"additionalProperties":false},"rps":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether autoscaling should take into requests-per-second"},"thresholdValue":{"type":"integer","minimum":1,"description":"Threshold rps value on which the workload will be scaled"}},"required":["enabled","thresholdValue"],"additionalProperties":false},"userMetrics":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether to enable handling for custom metrics in the autoscaling configuration","example":true},"exposedMetricsPath":{"type":"string","pattern":"^\\/([_a-zA-Z0-9-&?=.]*)((\\/[_a-zA-Z0-9-&?=.]+)*(\\/)?)?$","description":"Path on which the metrics will be exposed by the service..","example":"/metrics"},"exposedMetricsPort":{"type":"integer","description":"Port on which the metrics will be exposed by the service.","example":8080},"metrics":{"type":"array","items":{"type":"object","properties":{"metricName":{"type":"string","pattern":"[a-zA-Z_:][a-zA-Z0-9_:]*$","description":"Name of the custom metric","example":"example-metric"},"metricType":{"type":"string","enum":["gauge","counter"],"description":"Type of metric exposed, this will affect how it'll be queried by the autoscaler component: Gauge will be used as is, Counter will be used with rate()","example":"gauge"},"thresholdValue":{"type":"number","format":"float","description":"Threshold value on which the workload will be scaled. Represents the average value across all running pods.","example":2}},"required":["metricName","metricType","thresholdValue"],"additionalProperties":false},"description":"Array of custom metrics exposed by the service that will be used by the autoscaling configuration. At least one metric is required."}},"required":["enabled","exposedMetricsPath","exposedMetricsPort","metrics"],"additionalProperties":false}},"required":["enabled","minReplicas","maxReplicas"],"additionalProperties":false,"description":"Describes the horizontal autoscaling configuration"}},"additionalProperties":false,"description":"Describes all autoscaling configurations"},"createOptions":{"type":"object","properties":{"volumesToAttach":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39}}},"additionalProperties":false}},"required":["name","billing","deployment"],"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Project > Services > General > Create","x-nf-team-scoped":true,"x-nf-subheading":"put service","x-nf-cli-command":["put","service","deployment"]},"v1-projects--projectId--services-deployment--serviceId--patch":{"operationId":"patchProjectsServicesDeploymentServiceid","summary":"Patch deployment service","description":"Updates a deployment service.","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"serviceId","type":"string","required":true,"description":"ID of the service","example":"example-service","in":"path","schema":{"name":"serviceId","type":"string","required":true,"description":"ID of the service","example":"example-service","in":"path"}}],"responses":{"200":{"description":"Details about the updated service.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":54,"description":"The name of the service.","example":"Example Service"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"A description of the service.","example":"A service description"},"stageId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"billing":{"type":"object","properties":{"deploymentPlan":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The ID of the deployment plan to use.","example":"nf-compute-20"},"gpu":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"gpuType":{"type":"string"},"gpuCount":{"type":"integer"},"timesliced":{"type":"boolean"}},"required":["gpuType"],"additionalProperties":false}},"additionalProperties":false}},"required":["deploymentPlan"],"additionalProperties":false},"infrastructure":{"type":"object","properties":{"architecture":{"type":"string","enum":["x86","arm"]}},"additionalProperties":false},"ports":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":1,"maxLength":8,"description":"The name used to identify the port.","example":"p01"},"internalPort":{"type":"integer","minimum":1,"maximum":65535,"description":"The port number.","example":8080},"public":{"type":"boolean","description":"If true, the port will be exposed publicly.","example":true,"default":false},"security":{"type":"object","properties":{"credentials":{"type":"array","items":{"type":"object","properties":{"username":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The username to access the service","example":"admin"},"password":{"type":"string","description":"The password to access the service with this username.","example":"password123"},"type":{"type":"string","enum":["basic-auth"],"description":"The type of authentication used","example":"basic-auth"}},"required":["username","password","type"],"additionalProperties":false},"description":"An array of credentials to access the service."},"ip":{"type":"array","items":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","description":"An IP address used by this rule","example":"127.0.0.1"},"description":"An array of IP addresses used for this rule"},"action":{"type":"string","enum":["ALLOW","DENY"],"description":"The action for this rule.","example":"DENY"}},"required":["addresses","action"],"additionalProperties":false},"description":"An array of IP address policies."},"policies":{"type":"array","items":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","description":"An IP address used by this rule","example":"127.0.0.1"},"description":"An array of IP addresses used for this rule"},"action":{"type":"string","enum":["ALLOW","DENY"],"description":"The action for this rule.","example":"DENY"}},"required":["addresses","action"],"additionalProperties":false},"description":"An array of IP address policies."},"sso":{"type":"object","properties":{"organizationId":{"type":"string","description":"ID of the SSO organization that the user will have to be a member of"},"directoryGroupIds":{"type":"array","items":{"type":"string"},"description":"Array of directory groups that will have access"},"allowAnyOrgUsers":{"type":"boolean","description":"Allow entire organization to access this service"},"validateInternalTraffic":{"type":"boolean","description":"Enforce internal traffic through SSO authentication flow"},"setCookieOnRootDomain":{"type":"boolean","description":"Set SSO authentication cookie on root domain"},"allowInternalTrafficViaPublicDns":{"type":"boolean","description":"Allow internal traffic from same or shared projects via public DNS to skip SSO authentication flow"}},"additionalProperties":false,"description":"Configure port authentication via SSO"},"headers":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"regexMode":{"type":"boolean","example":false,"default":false},"name":{"type":"string","pattern":"^[a-zA-Z0-9_\\-%$+]+$","example":"headerName"},"value":{"type":"string","example":"headerValue"}},"required":["name","value"],"additionalProperties":false,"description":"Matches provided headers as strings."},{"type":"object","properties":{"regexMode":{"type":"boolean","example":true,"default":false},"name":{"type":"string","example":"headerName"},"value":{"type":"string","example":"headerValue"}},"required":["name","value"],"additionalProperties":false,"description":"Matches provided headers as regex."}]},"description":"List of header authentication settings, it checks the presence of all headers and compares it against the expected value. Wildcard (*) is supported."},"verificationMode":{"type":"string","enum":["or","and"],"description":"Mode used to verify multiple security features like ip policies and SSO authentication"},"securePathConfiguration":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Enable security policies on a path-level style"},"skipSecurityPoliciesForInternalTrafficViaPublicDns":{"type":"boolean","description":"Allow internal traffic from same or shared projects via public DNS to skip all security policies"},"rules":{"type":"array","items":{"type":"object","properties":{"paths":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"path":{"type":"string","pattern":"^\\/([_a-zA-Z0-9-&?=.]*)((\\/[_a-zA-Z0-9-&?=.]+)*(\\/)?)?$"},"routingMode":{"type":"string","enum":["prefix"],"description":"Mode of the path, determining how the URI will be interpreted.","example":"prefix"},"priority":{"type":"integer","minimum":0,"maximum":100,"example":80}},"required":["path","routingMode","priority"],"additionalProperties":false,"description":"Route when the path starts with the provided prefix."},{"type":"object","properties":{"path":{"type":"string","pattern":"^\\/([_a-zA-Z0-9-&?=.]*)((\\/[_a-zA-Z0-9-&?=.]+)*(\\/)?)?$"},"routingMode":{"type":"string","enum":["exact"],"description":"Mode of the path, determining how the URI will be interpreted.","example":"exact"},"priority":{"type":"integer","minimum":0,"maximum":100,"example":80}},"required":["path","routingMode","priority"],"additionalProperties":false,"description":"Route when the path is an exact match."},{"type":"object","properties":{"path":{"type":"string"},"routingMode":{"type":"string","enum":["regex"],"description":"Mode of the path, determining how the URI will be interpreted.","example":"regex"},"priority":{"type":"integer","minimum":0,"maximum":100,"example":80}},"required":["path","routingMode","priority"],"additionalProperties":false,"description":"Route when the path matches the provided regex."}],"description":"Data about how the path should be handled."},"description":"Array of path objects which represent the paths and their priority for which the security policies will be enforced"},"accessMode":{"type":"string","enum":["protected","unprotected"],"description":"Specify the way the path rule will behave when processing policies. This enables an allow-list/deny-list approach for access control on each path","example":"protected"},"securityPolicies":{"type":"object","properties":{"orPolicies":{"type":"object","properties":{"credentials":{"type":"array","items":{"type":"object","properties":{"username":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The username to access the service","example":"admin"},"password":{"type":"string","description":"The password to access the service with this username.","example":"password123"},"type":{"type":"string","enum":["basic-auth"],"description":"The type of authentication used","example":"basic-auth"}},"required":["username","password","type"],"additionalProperties":false},"description":"An array of credentials to access the service."},"ip":{"type":"array","items":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","description":"An IP address used by this rule","example":"127.0.0.1"},"description":"An array of IP addresses used for this rule"},"action":{"type":"string","enum":["ALLOW","DENY"],"description":"The action for this rule.","example":"DENY"}},"required":["addresses","action"],"additionalProperties":false},"description":"An array of IP address policies."},"policies":{"type":"array","items":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","description":"An IP address used by this rule","example":"127.0.0.1"},"description":"An array of IP addresses used for this rule"},"action":{"type":"string","enum":["ALLOW","DENY"],"description":"The action for this rule.","example":"DENY"}},"required":["addresses","action"],"additionalProperties":false},"description":"An array of IP address policies."},"sso":{"type":"object","properties":{"organizationId":{"type":"string","description":"ID of the SSO organization that the user will have to be a member of"},"directoryGroupIds":{"type":"array","items":{"type":"string"},"description":"Array of directory groups that will have access"},"allowAnyOrgUsers":{"type":"boolean","description":"Allow entire organization to access this service"},"validateInternalTraffic":{"type":"boolean","description":"Enforce internal traffic through SSO authentication flow"},"setCookieOnRootDomain":{"type":"boolean","description":"Set SSO authentication cookie on root domain"},"allowInternalTrafficViaPublicDns":{"type":"boolean","description":"Allow internal traffic from same or shared projects via public DNS to skip SSO authentication flow"}},"additionalProperties":false,"description":"Configure port authentication via SSO"},"headers":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"regexMode":{"type":"boolean","example":false,"default":false},"name":{"type":"string","pattern":"^[a-zA-Z0-9_\\-%$+]+$","example":"headerName"},"value":{"type":"string","example":"headerValue"}},"required":["name","value"],"additionalProperties":false,"description":"Matches provided headers as strings."},{"type":"object","properties":{"regexMode":{"type":"boolean","example":true,"default":false},"name":{"type":"string","example":"headerName"},"value":{"type":"string","example":"headerValue"}},"required":["name","value"],"additionalProperties":false,"description":"Matches provided headers as regex."}]},"description":"List of header authentication settings, it checks the presence of all headers and compares it against the expected value. Wildcard (*) is supported."}},"additionalProperties":false},"requiredPolicies":{"type":"object","properties":{"credentials":{"type":"array","items":{"type":"object","properties":{"username":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The username to access the service","example":"admin"},"password":{"type":"string","description":"The password to access the service with this username.","example":"password123"},"type":{"type":"string","enum":["basic-auth"],"description":"The type of authentication used","example":"basic-auth"}},"required":["username","password","type"],"additionalProperties":false},"description":"An array of credentials to access the service."},"ip":{"type":"array","items":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","description":"An IP address used by this rule","example":"127.0.0.1"},"description":"An array of IP addresses used for this rule"},"action":{"type":"string","enum":["ALLOW","DENY"],"description":"The action for this rule.","example":"DENY"}},"required":["addresses","action"],"additionalProperties":false},"description":"An array of IP address policies."},"policies":{"type":"array","items":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","description":"An IP address used by this rule","example":"127.0.0.1"},"description":"An array of IP addresses used for this rule"},"action":{"type":"string","enum":["ALLOW","DENY"],"description":"The action for this rule.","example":"DENY"}},"required":["addresses","action"],"additionalProperties":false},"description":"An array of IP address policies."},"sso":{"type":"object","properties":{"organizationId":{"type":"string","description":"ID of the SSO organization that the user will have to be a member of"},"directoryGroupIds":{"type":"array","items":{"type":"string"},"description":"Array of directory groups that will have access"},"allowAnyOrgUsers":{"type":"boolean","description":"Allow entire organization to access this service"},"validateInternalTraffic":{"type":"boolean","description":"Enforce internal traffic through SSO authentication flow"},"setCookieOnRootDomain":{"type":"boolean","description":"Set SSO authentication cookie on root domain"},"allowInternalTrafficViaPublicDns":{"type":"boolean","description":"Allow internal traffic from same or shared projects via public DNS to skip SSO authentication flow"}},"additionalProperties":false,"description":"Configure port authentication via SSO"},"headers":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"regexMode":{"type":"boolean","example":false,"default":false},"name":{"type":"string","pattern":"^[a-zA-Z0-9_\\-%$+]+$","example":"headerName"},"value":{"type":"string","example":"headerValue"}},"required":["name","value"],"additionalProperties":false,"description":"Matches provided headers as strings."},{"type":"object","properties":{"regexMode":{"type":"boolean","example":true,"default":false},"name":{"type":"string","example":"headerName"},"value":{"type":"string","example":"headerValue"}},"required":["name","value"],"additionalProperties":false,"description":"Matches provided headers as regex."}]},"description":"List of header authentication settings, it checks the presence of all headers and compares it against the expected value. Wildcard (*) is supported."}},"additionalProperties":false}},"additionalProperties":false}},"required":["paths","accessMode"],"additionalProperties":false},"default":[]}},"additionalProperties":false}},"additionalProperties":false,"default":{"credentials":[],"policies":[],"sso":{}}},"domains":{"type":"array","items":{"type":"string","description":"A domain to redirect to this port.","example":"app.example.com"},"description":"An array of domains to redirect to this port. Each domain must first be verified and registered to your account.","default":[]},"disableNfDomain":{"type":"boolean","description":"Disable routing on the default code.run domain for public HTTP ports with custom domains.","default":false},"advancedOptions":{"type":"object","properties":{"enableTlsPassthrough":{"type":"boolean","description":"Whether this port should use pass through mode for TLS"}},"additionalProperties":false},"protocol":{"type":"string","oneOf":[{"type":"string","enum":["HTTP","HTTP/2"]},{"type":"string","enum":["HTTP","HTTP/2","TCP","UDP"]}],"description":"The protocol to use for the port.","example":"HTTP"}},"required":["name","internalPort","protocol"],"additionalProperties":false},"default":[]},"runtimeEnvironment":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"An object containing the runtime environment to set for the service","example":{"VARIABLE_1":"abcdef","VARIABLE_2":"12345"},"default":{}},"runtimeFiles":{"type":"object","properties":{},"description":"Secret files as JSON object, encrypted at rest. File path must be absolute","example":{"/dir/fileName":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"healthChecks":{"type":"array","items":{"type":"object","properties":{"protocol":{"type":"string","enum":["HTTP","CMD","TCP"],"description":"The protocol to access the health check with.","example":"HTTP"},"type":{"type":"string","enum":["livenessProbe","readinessProbe","startupProbe"],"description":"The type of health check.","example":"readinessProbe"},"path":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*((\\?([a-zA-Z0-9-._]+(=[a-zA-Z0-9-._]+)?)*)(&([a-zA-Z0-9-._]+(=[a-zA-Z0-9-._]+)?)*)*)?$","description":"The path of the health check endpoint. Required when protocol is HTTP.","example":"/health-check"},"cmd":{"type":"string","description":"The command to run for the health check. Required when protocol is CMD"},"port":{"type":"integer","minimum":1,"description":"Port number for the health check endpoint. Required when protocol is HTTP.","example":8080},"initialDelaySeconds":{"type":"integer","minimum":1,"maximum":180,"description":"Initial delay, in seconds, before the health check is first run.","example":10},"periodSeconds":{"type":"integer","minimum":10,"maximum":600,"description":"The time between each check, in seconds.","example":60},"timeoutSeconds":{"type":"integer","minimum":1,"maximum":60,"description":"The time to wait for a response before marking the health check as a failure.","example":1},"failureThreshold":{"type":"integer","minimum":1,"maximum":255,"description":"The maximum number of allowed failures.","example":3},"successThreshold":{"type":"integer","minimum":1,"maximum":255,"description":"The number of successes required to mark the health check as a success.","example":1}},"required":["protocol","type","initialDelaySeconds","periodSeconds","timeoutSeconds","failureThreshold"],"additionalProperties":false,"description":"A health check object."},"description":"An array of health checks."},"loadBalancing":{"type":"object","properties":{"mode":{"type":"string","enum":["leastConnection","consistentHash","roundRobin","consistentReplicaRouting"]},"consistentHash":{"type":"object","properties":{"mode":{"type":"string","enum":["ip","customHeader"]},"header":{"type":"string","nullable":true}},"required":["mode"],"additionalProperties":false},"consistentReplicaRouting":{"type":"object","properties":{"mode":{"type":"string","enum":["path","header"]}},"required":["mode"],"additionalProperties":false}},"required":["mode"],"additionalProperties":false},"autoscaling":{"type":"object","properties":{"horizontal":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether horizontal autoscaling should be enabled","example":true},"minReplicas":{"type":"number","format":"float","minimum":1,"description":"Minimum number of replicas which should be running at any time","example":1},"maxReplicas":{"type":"number","format":"float","description":"Maximum number of replicas which can be running at any time","example":3},"cpu":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether autoscaling should take into account cpu usage"},"thresholdPercentage":{"type":"integer","minimum":10,"maximum":100,"description":"Threshold CPU usage percentage at which the workload will be scaled"}},"required":["enabled","thresholdPercentage"],"additionalProperties":false},"memory":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether autoscaling should take into account memory usage"},"thresholdPercentage":{"type":"integer","minimum":10,"maximum":100,"description":"Threshold memory usage percentage at which the workload will be scaled"}},"required":["enabled","thresholdPercentage"],"additionalProperties":false},"rps":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether autoscaling should take into requests-per-second"},"thresholdValue":{"type":"integer","minimum":1,"description":"Threshold rps value on which the workload will be scaled"}},"required":["enabled","thresholdValue"],"additionalProperties":false},"userMetrics":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether to enable handling for custom metrics in the autoscaling configuration","example":true},"exposedMetricsPath":{"type":"string","pattern":"^\\/([_a-zA-Z0-9-&?=.]*)((\\/[_a-zA-Z0-9-&?=.]+)*(\\/)?)?$","description":"Path on which the metrics will be exposed by the service..","example":"/metrics"},"exposedMetricsPort":{"type":"integer","description":"Port on which the metrics will be exposed by the service.","example":8080},"metrics":{"type":"array","items":{"type":"object","properties":{"metricName":{"type":"string","pattern":"[a-zA-Z_:][a-zA-Z0-9_:]*$","description":"Name of the custom metric","example":"example-metric"},"metricType":{"type":"string","enum":["gauge","counter"],"description":"Type of metric exposed, this will affect how it'll be queried by the autoscaler component: Gauge will be used as is, Counter will be used with rate()","example":"gauge"},"thresholdValue":{"type":"number","format":"float","description":"Threshold value on which the workload will be scaled. Represents the average value across all running pods.","example":2}},"required":["metricName","metricType","thresholdValue"],"additionalProperties":false},"description":"Array of custom metrics exposed by the service that will be used by the autoscaling configuration. At least one metric is required."}},"required":["enabled","exposedMetricsPath","exposedMetricsPort","metrics"],"additionalProperties":false}},"required":["enabled","minReplicas","maxReplicas"],"additionalProperties":false,"description":"Describes the horizontal autoscaling configuration"}},"additionalProperties":false,"description":"Describes all autoscaling configurations"},"createOptions":{"type":"object","properties":{"volumesToAttach":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39}}},"additionalProperties":false},"serviceType":{"type":"string","enum":["deployment"],"description":"Type of the service (combined, build or deployment)","example":"deployment"},"deployment":{"type":"object","properties":{"type":{"type":"string","enum":["deployment","statefulSet"],"description":"The way the service should be deployed. Either as a deployment (default), or as a stateful set."},"instances":{"type":"integer","minimum":0,"description":"The number of instances to run the service on.","example":1},"buildpack":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customProcess","customCommand","customEntrypointCustomCommand","originalEntrypointCustomCommand"],"description":"Type of buildpack run configuration"},"customProcess":{"type":"string","description":"Custom process which should be run. Required in case where `configType` is `customProcess`"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be run. Required in case where `configType` is `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be run. Required in case where `configType` is `customCommand`, `customEntrypointCustomCommand` or `originalEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of buildpack runtime"},"docker":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customEntrypoint","customCommand","customEntrypointCustomCommand"],"description":"Type of entrypoint & command override configuration","example":"default"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be used. Required in case where `configType` is `customEntrypoint` or `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be used. Required in case where `configType` is `customCommand` or `customEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of docker runtime"},"storage":{"type":"object","properties":{"useHdbStorage":{"type":"boolean"},"usePdSsdStorage":{"type":"boolean"},"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":1024,"description":"Ephemeral storage per container in MB","example":1024}},"additionalProperties":false},"shmSize":{"type":"integer","minimum":64,"description":"Configures the amount of available memory-backed disk space available to /dev/shm"}},"additionalProperties":false},"strategy":{"type":"object","properties":{"type":{"type":"string","enum":["recreate","rollout-steady","rollout-balanced","rollout-fast","custom"],"description":"Configures the instance roll out strategy of your service. Currently only available via feature flag."},"settings":{"type":"object","properties":{"maxSurge":{"oneOf":[{"type":"integer","minimum":0,"description":"A non-negative integer."},{"type":"string","pattern":"^\\d+%$","description":"A percentage string in the range 0% to 100%, e.g. `25%`"}],"description":"Maximum number or percentage of pods that can be created above the desired count."},"maxUnavailable":{"anyOf":[{"type":"integer","minimum":0,"description":"A non-negative integer."},{"type":"string","pattern":"^\\d+%$","description":"A percentage string in the range 0% to 100%, e.g. `25%`"}],"description":"Maximum number or percentage of pods that can be unavailable during the update."}},"required":["maxSurge","maxUnavailable"],"additionalProperties":false}},"additionalProperties":false,"description":"Roll out strategy of the service"},"zonalRedundancy":{"type":"object","properties":{"type":{"type":"string","enum":["disabled","preferred","required"],"description":"Defines scheduling behaviour across different zones within the same region."},"minZones":{"type":"integer","minimum":1,"description":"Defines how many zones are required and will prevent containers from additional scheduling into existing zones. (Only relevant if type is set to \"required\")"}},"additionalProperties":false},"gpu":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"gpuType":{"type":"string"},"gpuCount":{"type":"integer"},"timesliced":{"type":"boolean"}},"required":["gpuType"],"additionalProperties":false}},"additionalProperties":false},"gracePeriodSeconds":{"type":"integer","minimum":15,"maximum":600,"description":"The 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."},"gradualRolloutStrategyId":{"type":"string","pattern":"^[A-Za-z0-9-]+$","nullable":true,"description":"The id of the strategy to be attached to service.","examples":["strategy-id","strategy-id"]},"ssh":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Enables SSH access if the resource matches an SSH identity selector."}},"required":["enabled"],"additionalProperties":false,"description":"Controls related to SSH access within the resource."},"metadata":{"type":"object","properties":{"labels":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom labels for the workload."},"annotations":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom annotations for the workload as string or object."}},"additionalProperties":false,"description":"Allow setting custom labels and annotations for workloads."},"internal":{"type":"object","properties":{"id":{"anyOf":[{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":54,"example":"example-build-service"},{"type":"string","example":"example-project/example-build-service"}],"description":"ID of the build service to deploy"},"branch":{"type":"string","description":"Branch to deploy","example":"master"},"buildSHA":{"oneOf":[{"type":"string","minLength":40,"maxLength":40,"description":"A commit sha."},{"type":"string","enum":["latest"],"description":"Latest commit."}],"description":"Commit SHA to deploy, or 'latest' to deploy the most recent commit","example":"latest"},"buildId":{"type":"string","description":"ID of the build that should be deployed","example":"premium-guide-6393"}},"additionalProperties":false},"external":{"type":"object","properties":{"imagePath":{"type":"string","pattern":"^(?:(?:https?:\\/\\/)?([a-zA-Z0-9\\-]+\\.[a-zA-Z0-9\\.\\-]+)(\\/v1)?)?(?:\\/)?([a-zA-Z/-9\\.\\-_]+)(?:\\:([a-zA-Z/-9\\.\\-_\\:]+)|\\@([a-zA-Z/-9\\.\\-_\\:]+))$","description":"Image to be deployed. When not deploying from Dockerhub the URL must be specified.","example":"nginx:latest"},"credentials":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"ID of the saved credentials to use to access this external image.","example":"example-credentials"}},"required":["imagePath"],"additionalProperties":false},"imageUrl":{"type":"string","description":"Image registry url of the deployed image."}},"required":["instances"],"additionalProperties":false},"id":{"type":"string","description":"Identifier for the service","example":"example-service"},"appId":{"type":"string","description":"Full identifier used for service deployment","example":"/example-user/default-project/example-service"},"cluster":{"type":"object","properties":{"id":{"type":"string","description":"The id of the cluster associated with this project.","example":"nf-europe-west"},"name":{"type":"string","description":"The name of the cluster associated with this project.","example":"nf-europe-west"},"namespace":{"type":"string","description":"Namespace this resource is located within on the cluster.","example":"ns-8zy2mcjh9zn2"},"loadBalancers":{"type":"array","items":{"type":"string","example":"lb.659200800000000000000000.northflank.com"},"description":"Load balancer DNS for the cluster."}},"required":["id","name"],"additionalProperties":false,"description":"Cluster information"},"createdAt":{"type":"string","format":"date-time","description":"time of creation"},"updatedAt":{"type":"string","format":"date-time","description":"time of update"},"status":{"type":"object","properties":{"deployment":{"type":"object","properties":{"status":{"type":"string","enum":["PENDING","IN_PROGRESS","COMPLETED","FAILED"],"description":"The current status of the deployment.","example":"COMPLETED"},"reason":{"type":"string","enum":["SCALING","DEPLOYING"],"description":"The reason the current deployment was started.","example":"DEPLOYING"},"lastTransitionTime":{"type":"string","format":"date-time","description":"The timestamp of when the deployment reached this status.","example":"2021-11-29T11:47:16.624Z"}},"required":["status","reason"],"additionalProperties":false,"description":"Details about the current deployment status."}},"additionalProperties":false,"description":"Details about the current service status."}},"required":["name","billing","serviceType","deployment","id","appId","cluster","status"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Services","project"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"A description of the service.","example":"A service description"},"stageId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"nullable":true},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"billing":{"type":"object","properties":{"deploymentPlan":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The ID of the deployment plan to use.","example":"nf-compute-20"},"gpu":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"gpuType":{"type":"string"},"gpuCount":{"type":"integer"},"timesliced":{"type":"boolean"}},"additionalProperties":false}},"additionalProperties":false}},"additionalProperties":false},"deployment":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["deployment","statefulSet"],"description":"The way the service should be deployed. Either as a deployment (default), or as a stateful set."},"instances":{"type":"integer","minimum":0,"description":"The number of instances to run the service on.","example":1},"buildpack":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customProcess","customCommand","customEntrypointCustomCommand","originalEntrypointCustomCommand"],"description":"Type of buildpack run configuration"},"customProcess":{"type":"string","description":"Custom process which should be run. Required in case where `configType` is `customProcess`"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be run. Required in case where `configType` is `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be run. Required in case where `configType` is `customCommand`, `customEntrypointCustomCommand` or `originalEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of buildpack runtime"},"docker":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customEntrypoint","customCommand","customEntrypointCustomCommand"],"description":"Type of entrypoint & command override configuration","example":"default"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be used. Required in case where `configType` is `customEntrypoint` or `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be used. Required in case where `configType` is `customCommand` or `customEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of docker runtime"},"storage":{"type":"object","properties":{"useHdbStorage":{"type":"boolean"},"usePdSsdStorage":{"type":"boolean"},"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":1024,"description":"Ephemeral storage per container in MB","example":1024}},"additionalProperties":false},"shmSize":{"type":"integer","minimum":64,"description":"Configures the amount of available memory-backed disk space available to /dev/shm"}},"additionalProperties":false},"strategy":{"type":"object","properties":{"type":{"type":"string","enum":["recreate","rollout-steady","rollout-balanced","rollout-fast","custom"],"description":"Configures the instance roll out strategy of your service. Currently only available via feature flag."},"settings":{"type":"object","properties":{"maxSurge":{"oneOf":[{"type":"integer","minimum":0,"description":"A non-negative integer."},{"type":"string","pattern":"^\\d+%$","description":"A percentage string in the range 0% to 100%, e.g. `25%`"}],"description":"Maximum number or percentage of pods that can be created above the desired count."},"maxUnavailable":{"anyOf":[{"type":"integer","minimum":0,"description":"A non-negative integer."},{"type":"string","pattern":"^\\d+%$","description":"A percentage string in the range 0% to 100%, e.g. `25%`"}],"description":"Maximum number or percentage of pods that can be unavailable during the update."}},"required":["maxSurge","maxUnavailable"],"additionalProperties":false}},"additionalProperties":false,"description":"Roll out strategy of the service"},"zonalRedundancy":{"type":"object","properties":{"type":{"type":"string","enum":["disabled","preferred","required"],"description":"Defines scheduling behaviour across different zones within the same region."},"minZones":{"type":"integer","minimum":1,"description":"Defines how many zones are required and will prevent containers from additional scheduling into existing zones. (Only relevant if type is set to \"required\")"}},"additionalProperties":false},"gpu":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"gpuType":{"type":"string"},"gpuCount":{"type":"integer"},"timesliced":{"type":"boolean"}},"required":["gpuType"],"additionalProperties":false}},"additionalProperties":false},"gracePeriodSeconds":{"type":"integer","minimum":15,"maximum":600,"description":"The 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."},"gradualRolloutStrategyId":{"type":"string","pattern":"^[A-Za-z0-9-]+$","nullable":true,"description":"The id of the strategy to be attached to service.","examples":["strategy-id","strategy-id"]},"ssh":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Enables SSH access if the resource matches an SSH identity selector."}},"required":["enabled"],"additionalProperties":false,"description":"Controls related to SSH access within the resource."},"metadata":{"type":"object","properties":{"labels":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom labels for the workload."},"annotations":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom annotations for the workload as string or object."}},"additionalProperties":false,"description":"Allow setting custom labels and annotations for workloads."},"internal":{"type":"object","properties":{"id":{"anyOf":[{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":54,"example":"example-build-service"},{"type":"string","example":"example-project/example-build-service"}],"description":"ID of the build service to deploy"},"branch":{"type":"string","description":"Branch to deploy","example":"master"},"buildSHA":{"oneOf":[{"type":"string","minLength":40,"maxLength":40,"description":"A commit sha."},{"type":"string","enum":["latest"],"description":"Latest commit."}],"description":"Commit SHA to deploy, or 'latest' to deploy the most recent commit","example":"latest"},"buildId":{"type":"string","description":"ID of the build that should be deployed","example":"premium-guide-6393"}},"additionalProperties":false}},"required":["instances","internal"],"additionalProperties":false,"description":"Internal deployment"},{"type":"object","properties":{"type":{"type":"string","enum":["deployment","statefulSet"],"description":"The way the service should be deployed. Either as a deployment (default), or as a stateful set."},"instances":{"type":"integer","minimum":0,"description":"The number of instances to run the service on.","example":1},"buildpack":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customProcess","customCommand","customEntrypointCustomCommand","originalEntrypointCustomCommand"],"description":"Type of buildpack run configuration"},"customProcess":{"type":"string","description":"Custom process which should be run. Required in case where `configType` is `customProcess`"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be run. Required in case where `configType` is `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be run. Required in case where `configType` is `customCommand`, `customEntrypointCustomCommand` or `originalEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of buildpack runtime"},"docker":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customEntrypoint","customCommand","customEntrypointCustomCommand"],"description":"Type of entrypoint & command override configuration","example":"default"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be used. Required in case where `configType` is `customEntrypoint` or `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be used. Required in case where `configType` is `customCommand` or `customEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of docker runtime"},"storage":{"type":"object","properties":{"useHdbStorage":{"type":"boolean"},"usePdSsdStorage":{"type":"boolean"},"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":1024,"description":"Ephemeral storage per container in MB","example":1024}},"additionalProperties":false},"shmSize":{"type":"integer","minimum":64,"description":"Configures the amount of available memory-backed disk space available to /dev/shm"}},"additionalProperties":false},"strategy":{"type":"object","properties":{"type":{"type":"string","enum":["recreate","rollout-steady","rollout-balanced","rollout-fast","custom"],"description":"Configures the instance roll out strategy of your service. Currently only available via feature flag."},"settings":{"type":"object","properties":{"maxSurge":{"oneOf":[{"type":"integer","minimum":0,"description":"A non-negative integer."},{"type":"string","pattern":"^\\d+%$","description":"A percentage string in the range 0% to 100%, e.g. `25%`"}],"description":"Maximum number or percentage of pods that can be created above the desired count."},"maxUnavailable":{"anyOf":[{"type":"integer","minimum":0,"description":"A non-negative integer."},{"type":"string","pattern":"^\\d+%$","description":"A percentage string in the range 0% to 100%, e.g. `25%`"}],"description":"Maximum number or percentage of pods that can be unavailable during the update."}},"required":["maxSurge","maxUnavailable"],"additionalProperties":false}},"additionalProperties":false,"description":"Roll out strategy of the service"},"zonalRedundancy":{"type":"object","properties":{"type":{"type":"string","enum":["disabled","preferred","required"],"description":"Defines scheduling behaviour across different zones within the same region."},"minZones":{"type":"integer","minimum":1,"description":"Defines how many zones are required and will prevent containers from additional scheduling into existing zones. (Only relevant if type is set to \"required\")"}},"additionalProperties":false},"gpu":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"gpuType":{"type":"string"},"gpuCount":{"type":"integer"},"timesliced":{"type":"boolean"}},"required":["gpuType"],"additionalProperties":false}},"additionalProperties":false},"gracePeriodSeconds":{"type":"integer","minimum":15,"maximum":600,"description":"The 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."},"gradualRolloutStrategyId":{"type":"string","pattern":"^[A-Za-z0-9-]+$","nullable":true,"description":"The id of the strategy to be attached to service.","examples":["strategy-id","strategy-id"]},"ssh":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Enables SSH access if the resource matches an SSH identity selector."}},"required":["enabled"],"additionalProperties":false,"description":"Controls related to SSH access within the resource."},"metadata":{"type":"object","properties":{"labels":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom labels for the workload."},"annotations":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom annotations for the workload as string or object."}},"additionalProperties":false,"description":"Allow setting custom labels and annotations for workloads."},"external":{"type":"object","properties":{"imagePath":{"type":"string","pattern":"^(?:(?:https?:\\/\\/)?([a-zA-Z0-9\\-]+\\.[a-zA-Z0-9\\.\\-]+)(\\/v1)?)?(?:\\/)?([a-zA-Z/-9\\.\\-_]+)(?:\\:([a-zA-Z/-9\\.\\-_\\:]+)|\\@([a-zA-Z/-9\\.\\-_\\:]+))$","description":"Image to be deployed. When not deploying from Dockerhub the URL must be specified.","example":"nginx:latest"},"credentials":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"ID of the saved credentials to use to access this external image.","example":"example-credentials"}},"required":["imagePath"],"additionalProperties":false}},"required":["instances","external"],"additionalProperties":false,"description":"External deployment"},{"type":"object","properties":{"type":{"type":"string","enum":["deployment","statefulSet"],"description":"The way the service should be deployed. Either as a deployment (default), or as a stateful set."},"instances":{"type":"integer","minimum":0,"description":"The number of instances to run the service on.","example":1},"buildpack":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customProcess","customCommand","customEntrypointCustomCommand","originalEntrypointCustomCommand"],"description":"Type of buildpack run configuration"},"customProcess":{"type":"string","description":"Custom process which should be run. Required in case where `configType` is `customProcess`"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be run. Required in case where `configType` is `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be run. Required in case where `configType` is `customCommand`, `customEntrypointCustomCommand` or `originalEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of buildpack runtime"},"docker":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customEntrypoint","customCommand","customEntrypointCustomCommand"],"description":"Type of entrypoint & command override configuration","example":"default"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be used. Required in case where `configType` is `customEntrypoint` or `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be used. Required in case where `configType` is `customCommand` or `customEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of docker runtime"},"storage":{"type":"object","properties":{"useHdbStorage":{"type":"boolean"},"usePdSsdStorage":{"type":"boolean"},"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":1024,"description":"Ephemeral storage per container in MB","example":1024}},"additionalProperties":false},"shmSize":{"type":"integer","minimum":64,"description":"Configures the amount of available memory-backed disk space available to /dev/shm"}},"additionalProperties":false},"strategy":{"type":"object","properties":{"type":{"type":"string","enum":["recreate","rollout-steady","rollout-balanced","rollout-fast","custom"],"description":"Configures the instance roll out strategy of your service. Currently only available via feature flag."},"settings":{"type":"object","properties":{"maxSurge":{"oneOf":[{"type":"integer","minimum":0,"description":"A non-negative integer."},{"type":"string","pattern":"^\\d+%$","description":"A percentage string in the range 0% to 100%, e.g. `25%`"}],"description":"Maximum number or percentage of pods that can be created above the desired count."},"maxUnavailable":{"anyOf":[{"type":"integer","minimum":0,"description":"A non-negative integer."},{"type":"string","pattern":"^\\d+%$","description":"A percentage string in the range 0% to 100%, e.g. `25%`"}],"description":"Maximum number or percentage of pods that can be unavailable during the update."}},"required":["maxSurge","maxUnavailable"],"additionalProperties":false}},"additionalProperties":false,"description":"Roll out strategy of the service"},"zonalRedundancy":{"type":"object","properties":{"type":{"type":"string","enum":["disabled","preferred","required"],"description":"Defines scheduling behaviour across different zones within the same region."},"minZones":{"type":"integer","minimum":1,"description":"Defines how many zones are required and will prevent containers from additional scheduling into existing zones. (Only relevant if type is set to \"required\")"}},"additionalProperties":false},"gpu":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"gpuType":{"type":"string"},"gpuCount":{"type":"integer"},"timesliced":{"type":"boolean"}},"required":["gpuType"],"additionalProperties":false}},"additionalProperties":false},"gracePeriodSeconds":{"type":"integer","minimum":15,"maximum":600,"description":"The 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."},"gradualRolloutStrategyId":{"type":"string","pattern":"^[A-Za-z0-9-]+$","nullable":true,"description":"The id of the strategy to be attached to service.","examples":["strategy-id","strategy-id"]},"ssh":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Enables SSH access if the resource matches an SSH identity selector."}},"required":["enabled"],"additionalProperties":false,"description":"Controls related to SSH access within the resource."},"metadata":{"type":"object","properties":{"labels":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom labels for the workload."},"annotations":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom annotations for the workload as string or object."}},"additionalProperties":false,"description":"Allow setting custom labels and annotations for workloads."}},"required":["instances"],"additionalProperties":false,"description":"Choose later"}],"description":"Deployment type"},"ports":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":1,"maxLength":8,"description":"The name used to identify the port.","example":"p01"},"internalPort":{"type":"integer","minimum":1,"maximum":65535,"description":"The port number.","example":8080},"public":{"type":"boolean","description":"If true, the port will be exposed publicly.","example":true,"default":false},"security":{"type":"object","properties":{"credentials":{"type":"array","items":{"type":"object","properties":{"username":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The username to access the service","example":"admin"},"password":{"type":"string","description":"The password to access the service with this username.","example":"password123"},"type":{"type":"string","enum":["basic-auth"],"description":"The type of authentication used","example":"basic-auth"}},"required":["username","password","type"],"additionalProperties":false},"description":"An array of credentials to access the service."},"ip":{"type":"array","items":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","description":"An IP address used by this rule","example":"127.0.0.1"},"description":"An array of IP addresses used for this rule"},"action":{"type":"string","enum":["ALLOW","DENY"],"description":"The action for this rule.","example":"DENY"}},"required":["addresses","action"],"additionalProperties":false},"description":"An array of IP address policies."},"policies":{"type":"array","items":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","description":"An IP address used by this rule","example":"127.0.0.1"},"description":"An array of IP addresses used for this rule"},"action":{"type":"string","enum":["ALLOW","DENY"],"description":"The action for this rule.","example":"DENY"}},"required":["addresses","action"],"additionalProperties":false},"description":"An array of IP address policies."},"sso":{"type":"object","properties":{"organizationId":{"type":"string","description":"ID of the SSO organization that the user will have to be a member of"},"directoryGroupIds":{"type":"array","items":{"type":"string"},"description":"Array of directory groups that will have access"},"allowAnyOrgUsers":{"type":"boolean","description":"Allow entire organization to access this service"},"validateInternalTraffic":{"type":"boolean","description":"Enforce internal traffic through SSO authentication flow"},"setCookieOnRootDomain":{"type":"boolean","description":"Set SSO authentication cookie on root domain"},"allowInternalTrafficViaPublicDns":{"type":"boolean","description":"Allow internal traffic from same or shared projects via public DNS to skip SSO authentication flow"}},"additionalProperties":false,"description":"Configure port authentication via SSO"},"headers":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"regexMode":{"type":"boolean","example":false,"default":false},"name":{"type":"string","pattern":"^[a-zA-Z0-9_\\-%$+]+$","example":"headerName"},"value":{"type":"string","example":"headerValue"}},"required":["name","value"],"additionalProperties":false,"description":"Matches provided headers as strings."},{"type":"object","properties":{"regexMode":{"type":"boolean","example":true,"default":false},"name":{"type":"string","example":"headerName"},"value":{"type":"string","example":"headerValue"}},"required":["name","value"],"additionalProperties":false,"description":"Matches provided headers as regex."}]},"description":"List of header authentication settings, it checks the presence of all headers and compares it against the expected value. Wildcard (*) is supported."},"verificationMode":{"type":"string","enum":["or","and"],"description":"Mode used to verify multiple security features like ip policies and SSO authentication"},"securePathConfiguration":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Enable security policies on a path-level style"},"skipSecurityPoliciesForInternalTrafficViaPublicDns":{"type":"boolean","description":"Allow internal traffic from same or shared projects via public DNS to skip all security policies"},"rules":{"type":"array","items":{"type":"object","properties":{"paths":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"path":{"type":"string","pattern":"^\\/([_a-zA-Z0-9-&?=.]*)((\\/[_a-zA-Z0-9-&?=.]+)*(\\/)?)?$"},"routingMode":{"type":"string","enum":["prefix"],"description":"Mode of the path, determining how the URI will be interpreted.","example":"prefix"},"priority":{"type":"integer","minimum":0,"maximum":100,"example":80}},"required":["path","routingMode","priority"],"additionalProperties":false,"description":"Route when the path starts with the provided prefix."},{"type":"object","properties":{"path":{"type":"string","pattern":"^\\/([_a-zA-Z0-9-&?=.]*)((\\/[_a-zA-Z0-9-&?=.]+)*(\\/)?)?$"},"routingMode":{"type":"string","enum":["exact"],"description":"Mode of the path, determining how the URI will be interpreted.","example":"exact"},"priority":{"type":"integer","minimum":0,"maximum":100,"example":80}},"required":["path","routingMode","priority"],"additionalProperties":false,"description":"Route when the path is an exact match."},{"type":"object","properties":{"path":{"type":"string"},"routingMode":{"type":"string","enum":["regex"],"description":"Mode of the path, determining how the URI will be interpreted.","example":"regex"},"priority":{"type":"integer","minimum":0,"maximum":100,"example":80}},"required":["path","routingMode","priority"],"additionalProperties":false,"description":"Route when the path matches the provided regex."}],"description":"Data about how the path should be handled."},"description":"Array of path objects which represent the paths and their priority for which the security policies will be enforced"},"accessMode":{"type":"string","enum":["protected","unprotected"],"description":"Specify the way the path rule will behave when processing policies. This enables an allow-list/deny-list approach for access control on each path","example":"protected"},"securityPolicies":{"type":"object","properties":{"orPolicies":{"type":"object","properties":{"credentials":{"type":"array","items":{"type":"object","properties":{"username":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The username to access the service","example":"admin"},"password":{"type":"string","description":"The password to access the service with this username.","example":"password123"},"type":{"type":"string","enum":["basic-auth"],"description":"The type of authentication used","example":"basic-auth"}},"required":["username","password","type"],"additionalProperties":false},"description":"An array of credentials to access the service."},"ip":{"type":"array","items":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","description":"An IP address used by this rule","example":"127.0.0.1"},"description":"An array of IP addresses used for this rule"},"action":{"type":"string","enum":["ALLOW","DENY"],"description":"The action for this rule.","example":"DENY"}},"required":["addresses","action"],"additionalProperties":false},"description":"An array of IP address policies."},"policies":{"type":"array","items":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","description":"An IP address used by this rule","example":"127.0.0.1"},"description":"An array of IP addresses used for this rule"},"action":{"type":"string","enum":["ALLOW","DENY"],"description":"The action for this rule.","example":"DENY"}},"required":["addresses","action"],"additionalProperties":false},"description":"An array of IP address policies."},"sso":{"type":"object","properties":{"organizationId":{"type":"string","description":"ID of the SSO organization that the user will have to be a member of"},"directoryGroupIds":{"type":"array","items":{"type":"string"},"description":"Array of directory groups that will have access"},"allowAnyOrgUsers":{"type":"boolean","description":"Allow entire organization to access this service"},"validateInternalTraffic":{"type":"boolean","description":"Enforce internal traffic through SSO authentication flow"},"setCookieOnRootDomain":{"type":"boolean","description":"Set SSO authentication cookie on root domain"},"allowInternalTrafficViaPublicDns":{"type":"boolean","description":"Allow internal traffic from same or shared projects via public DNS to skip SSO authentication flow"}},"additionalProperties":false,"description":"Configure port authentication via SSO"},"headers":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"regexMode":{"type":"boolean","example":false,"default":false},"name":{"type":"string","pattern":"^[a-zA-Z0-9_\\-%$+]+$","example":"headerName"},"value":{"type":"string","example":"headerValue"}},"required":["name","value"],"additionalProperties":false,"description":"Matches provided headers as strings."},{"type":"object","properties":{"regexMode":{"type":"boolean","example":true,"default":false},"name":{"type":"string","example":"headerName"},"value":{"type":"string","example":"headerValue"}},"required":["name","value"],"additionalProperties":false,"description":"Matches provided headers as regex."}]},"description":"List of header authentication settings, it checks the presence of all headers and compares it against the expected value. Wildcard (*) is supported."}},"additionalProperties":false},"requiredPolicies":{"type":"object","properties":{"credentials":{"type":"array","items":{"type":"object","properties":{"username":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The username to access the service","example":"admin"},"password":{"type":"string","description":"The password to access the service with this username.","example":"password123"},"type":{"type":"string","enum":["basic-auth"],"description":"The type of authentication used","example":"basic-auth"}},"required":["username","password","type"],"additionalProperties":false},"description":"An array of credentials to access the service."},"ip":{"type":"array","items":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","description":"An IP address used by this rule","example":"127.0.0.1"},"description":"An array of IP addresses used for this rule"},"action":{"type":"string","enum":["ALLOW","DENY"],"description":"The action for this rule.","example":"DENY"}},"required":["addresses","action"],"additionalProperties":false},"description":"An array of IP address policies."},"policies":{"type":"array","items":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","description":"An IP address used by this rule","example":"127.0.0.1"},"description":"An array of IP addresses used for this rule"},"action":{"type":"string","enum":["ALLOW","DENY"],"description":"The action for this rule.","example":"DENY"}},"required":["addresses","action"],"additionalProperties":false},"description":"An array of IP address policies."},"sso":{"type":"object","properties":{"organizationId":{"type":"string","description":"ID of the SSO organization that the user will have to be a member of"},"directoryGroupIds":{"type":"array","items":{"type":"string"},"description":"Array of directory groups that will have access"},"allowAnyOrgUsers":{"type":"boolean","description":"Allow entire organization to access this service"},"validateInternalTraffic":{"type":"boolean","description":"Enforce internal traffic through SSO authentication flow"},"setCookieOnRootDomain":{"type":"boolean","description":"Set SSO authentication cookie on root domain"},"allowInternalTrafficViaPublicDns":{"type":"boolean","description":"Allow internal traffic from same or shared projects via public DNS to skip SSO authentication flow"}},"additionalProperties":false,"description":"Configure port authentication via SSO"},"headers":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"regexMode":{"type":"boolean","example":false,"default":false},"name":{"type":"string","pattern":"^[a-zA-Z0-9_\\-%$+]+$","example":"headerName"},"value":{"type":"string","example":"headerValue"}},"required":["name","value"],"additionalProperties":false,"description":"Matches provided headers as strings."},{"type":"object","properties":{"regexMode":{"type":"boolean","example":true,"default":false},"name":{"type":"string","example":"headerName"},"value":{"type":"string","example":"headerValue"}},"required":["name","value"],"additionalProperties":false,"description":"Matches provided headers as regex."}]},"description":"List of header authentication settings, it checks the presence of all headers and compares it against the expected value. Wildcard (*) is supported."}},"additionalProperties":false}},"additionalProperties":false}},"required":["paths","accessMode"],"additionalProperties":false},"default":[]}},"additionalProperties":false}},"additionalProperties":false,"default":{"credentials":[],"policies":[],"sso":{}}},"domains":{"type":"array","items":{"type":"string","description":"A domain to redirect to this port.","example":"app.example.com"},"description":"An array of domains to redirect to this port. Each domain must first be verified and registered to your account.","default":[]},"disableNfDomain":{"type":"boolean","description":"Disable routing on the default code.run domain for public HTTP ports with custom domains.","default":false},"advancedOptions":{"type":"object","properties":{"enableTlsPassthrough":{"type":"boolean","description":"Whether this port should use pass through mode for TLS"}},"additionalProperties":false},"protocol":{"type":"string","enum":["HTTP","HTTP/2","TCP","UDP"],"description":"The protocol to use for the port.","example":"HTTP"}},"required":["name","internalPort","protocol"],"additionalProperties":false}},"runtimeEnvironment":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"An object containing the runtime environment to set for the service","example":{"VARIABLE_1":"abcdef","VARIABLE_2":"12345"}},"runtimeFiles":{"type":"object","properties":{},"description":"Secret files as JSON object, encrypted at rest. File path must be absolute","example":{"/dir/fileName":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"healthChecks":{"type":"array","items":{"type":"object","properties":{"protocol":{"type":"string","enum":["HTTP","CMD","TCP"],"description":"The protocol to access the health check with.","example":"HTTP"},"type":{"type":"string","enum":["livenessProbe","readinessProbe","startupProbe"],"description":"The type of health check.","example":"readinessProbe"},"path":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*((\\?([a-zA-Z0-9-._]+(=[a-zA-Z0-9-._]+)?)*)(&([a-zA-Z0-9-._]+(=[a-zA-Z0-9-._]+)?)*)*)?$","description":"The path of the health check endpoint. Required when protocol is HTTP.","example":"/health-check"},"cmd":{"type":"string","description":"The command to run for the health check. Required when protocol is CMD"},"port":{"type":"integer","minimum":1,"description":"Port number for the health check endpoint. Required when protocol is HTTP.","example":8080},"initialDelaySeconds":{"type":"integer","minimum":1,"maximum":180,"description":"Initial delay, in seconds, before the health check is first run.","example":10},"periodSeconds":{"type":"integer","minimum":10,"maximum":600,"description":"The time between each check, in seconds.","example":60},"timeoutSeconds":{"type":"integer","minimum":1,"maximum":60,"description":"The time to wait for a response before marking the health check as a failure.","example":1},"failureThreshold":{"type":"integer","minimum":1,"maximum":255,"description":"The maximum number of allowed failures.","example":3},"successThreshold":{"type":"integer","minimum":1,"maximum":255,"description":"The number of successes required to mark the health check as a success.","example":1}},"required":["protocol","type","initialDelaySeconds","periodSeconds","timeoutSeconds","failureThreshold"],"additionalProperties":false,"description":"A health check object."},"description":"An array of health checks."},"loadBalancing":{"type":"object","properties":{"mode":{"type":"string","enum":["leastConnection","consistentHash","roundRobin","consistentReplicaRouting"]},"consistentHash":{"type":"object","properties":{"mode":{"type":"string","enum":["ip","customHeader"]},"header":{"type":"string","nullable":true}},"required":["mode"],"additionalProperties":false},"consistentReplicaRouting":{"type":"object","properties":{"mode":{"type":"string","enum":["path","header"]}},"required":["mode"],"additionalProperties":false}},"additionalProperties":false},"autoscaling":{"type":"object","properties":{"horizontal":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether horizontal autoscaling should be enabled","example":true},"minReplicas":{"type":"number","format":"float","minimum":1,"description":"Minimum number of replicas which should be running at any time","example":1},"maxReplicas":{"type":"number","format":"float","description":"Maximum number of replicas which can be running at any time","example":3},"cpu":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether autoscaling should take into account cpu usage"},"thresholdPercentage":{"type":"integer","minimum":10,"maximum":100,"description":"Threshold CPU usage percentage at which the workload will be scaled"}},"additionalProperties":false},"memory":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether autoscaling should take into account memory usage"},"thresholdPercentage":{"type":"integer","minimum":10,"maximum":100,"description":"Threshold memory usage percentage at which the workload will be scaled"}},"additionalProperties":false},"rps":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether autoscaling should take into requests-per-second"},"thresholdValue":{"type":"integer","minimum":1,"description":"Threshold rps value on which the workload will be scaled"}},"additionalProperties":false},"userMetrics":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether to enable handling for custom metrics in the autoscaling configuration","example":true},"exposedMetricsPath":{"type":"string","pattern":"^\\/([_a-zA-Z0-9-&?=.]*)((\\/[_a-zA-Z0-9-&?=.]+)*(\\/)?)?$","description":"Path on which the metrics will be exposed by the service..","example":"/metrics"},"exposedMetricsPort":{"type":"integer","description":"Port on which the metrics will be exposed by the service.","example":8080},"metrics":{"type":"array","items":{"type":"object","properties":{"metricName":{"type":"string","pattern":"[a-zA-Z_:][a-zA-Z0-9_:]*$","description":"Name of the custom metric","example":"example-metric"},"metricType":{"type":"string","enum":["gauge","counter"],"description":"Type of metric exposed, this will affect how it'll be queried by the autoscaler component: Gauge will be used as is, Counter will be used with rate()","example":"gauge"},"thresholdValue":{"type":"number","format":"float","description":"Threshold value on which the workload will be scaled. Represents the average value across all running pods.","example":2}},"required":["metricName","metricType","thresholdValue"],"additionalProperties":false},"description":"Array of custom metrics exposed by the service that will be used by the autoscaling configuration. At least one metric is required."}},"additionalProperties":false}},"additionalProperties":false}},"additionalProperties":false}},"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Project > Services > General > Update","x-nf-team-scoped":true,"x-nf-subheading":"patch service","x-nf-cli-command":["patch","service","deployment"]},"v1-projects--projectId--services-deployment--serviceId--patch-team-scoped":{"operationId":"patchProjectsServicesDeploymentServiceid","summary":"Patch deployment service","description":"Updates a deployment service.","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"serviceId","type":"string","required":true,"description":"ID of the service","example":"example-service","in":"path","schema":{"name":"serviceId","type":"string","required":true,"description":"ID of the service","example":"example-service","in":"path"}}],"responses":{"200":{"description":"Details about the updated service.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":54,"description":"The name of the service.","example":"Example Service"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"A description of the service.","example":"A service description"},"stageId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"billing":{"type":"object","properties":{"deploymentPlan":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The ID of the deployment plan to use.","example":"nf-compute-20"},"gpu":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"gpuType":{"type":"string"},"gpuCount":{"type":"integer"},"timesliced":{"type":"boolean"}},"required":["gpuType"],"additionalProperties":false}},"additionalProperties":false}},"required":["deploymentPlan"],"additionalProperties":false},"infrastructure":{"type":"object","properties":{"architecture":{"type":"string","enum":["x86","arm"]}},"additionalProperties":false},"ports":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":1,"maxLength":8,"description":"The name used to identify the port.","example":"p01"},"internalPort":{"type":"integer","minimum":1,"maximum":65535,"description":"The port number.","example":8080},"public":{"type":"boolean","description":"If true, the port will be exposed publicly.","example":true,"default":false},"security":{"type":"object","properties":{"credentials":{"type":"array","items":{"type":"object","properties":{"username":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The username to access the service","example":"admin"},"password":{"type":"string","description":"The password to access the service with this username.","example":"password123"},"type":{"type":"string","enum":["basic-auth"],"description":"The type of authentication used","example":"basic-auth"}},"required":["username","password","type"],"additionalProperties":false},"description":"An array of credentials to access the service."},"ip":{"type":"array","items":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","description":"An IP address used by this rule","example":"127.0.0.1"},"description":"An array of IP addresses used for this rule"},"action":{"type":"string","enum":["ALLOW","DENY"],"description":"The action for this rule.","example":"DENY"}},"required":["addresses","action"],"additionalProperties":false},"description":"An array of IP address policies."},"policies":{"type":"array","items":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","description":"An IP address used by this rule","example":"127.0.0.1"},"description":"An array of IP addresses used for this rule"},"action":{"type":"string","enum":["ALLOW","DENY"],"description":"The action for this rule.","example":"DENY"}},"required":["addresses","action"],"additionalProperties":false},"description":"An array of IP address policies."},"sso":{"type":"object","properties":{"organizationId":{"type":"string","description":"ID of the SSO organization that the user will have to be a member of"},"directoryGroupIds":{"type":"array","items":{"type":"string"},"description":"Array of directory groups that will have access"},"allowAnyOrgUsers":{"type":"boolean","description":"Allow entire organization to access this service"},"validateInternalTraffic":{"type":"boolean","description":"Enforce internal traffic through SSO authentication flow"},"setCookieOnRootDomain":{"type":"boolean","description":"Set SSO authentication cookie on root domain"},"allowInternalTrafficViaPublicDns":{"type":"boolean","description":"Allow internal traffic from same or shared projects via public DNS to skip SSO authentication flow"}},"additionalProperties":false,"description":"Configure port authentication via SSO"},"headers":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"regexMode":{"type":"boolean","example":false,"default":false},"name":{"type":"string","pattern":"^[a-zA-Z0-9_\\-%$+]+$","example":"headerName"},"value":{"type":"string","example":"headerValue"}},"required":["name","value"],"additionalProperties":false,"description":"Matches provided headers as strings."},{"type":"object","properties":{"regexMode":{"type":"boolean","example":true,"default":false},"name":{"type":"string","example":"headerName"},"value":{"type":"string","example":"headerValue"}},"required":["name","value"],"additionalProperties":false,"description":"Matches provided headers as regex."}]},"description":"List of header authentication settings, it checks the presence of all headers and compares it against the expected value. Wildcard (*) is supported."},"verificationMode":{"type":"string","enum":["or","and"],"description":"Mode used to verify multiple security features like ip policies and SSO authentication"},"securePathConfiguration":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Enable security policies on a path-level style"},"skipSecurityPoliciesForInternalTrafficViaPublicDns":{"type":"boolean","description":"Allow internal traffic from same or shared projects via public DNS to skip all security policies"},"rules":{"type":"array","items":{"type":"object","properties":{"paths":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"path":{"type":"string","pattern":"^\\/([_a-zA-Z0-9-&?=.]*)((\\/[_a-zA-Z0-9-&?=.]+)*(\\/)?)?$"},"routingMode":{"type":"string","enum":["prefix"],"description":"Mode of the path, determining how the URI will be interpreted.","example":"prefix"},"priority":{"type":"integer","minimum":0,"maximum":100,"example":80}},"required":["path","routingMode","priority"],"additionalProperties":false,"description":"Route when the path starts with the provided prefix."},{"type":"object","properties":{"path":{"type":"string","pattern":"^\\/([_a-zA-Z0-9-&?=.]*)((\\/[_a-zA-Z0-9-&?=.]+)*(\\/)?)?$"},"routingMode":{"type":"string","enum":["exact"],"description":"Mode of the path, determining how the URI will be interpreted.","example":"exact"},"priority":{"type":"integer","minimum":0,"maximum":100,"example":80}},"required":["path","routingMode","priority"],"additionalProperties":false,"description":"Route when the path is an exact match."},{"type":"object","properties":{"path":{"type":"string"},"routingMode":{"type":"string","enum":["regex"],"description":"Mode of the path, determining how the URI will be interpreted.","example":"regex"},"priority":{"type":"integer","minimum":0,"maximum":100,"example":80}},"required":["path","routingMode","priority"],"additionalProperties":false,"description":"Route when the path matches the provided regex."}],"description":"Data about how the path should be handled."},"description":"Array of path objects which represent the paths and their priority for which the security policies will be enforced"},"accessMode":{"type":"string","enum":["protected","unprotected"],"description":"Specify the way the path rule will behave when processing policies. This enables an allow-list/deny-list approach for access control on each path","example":"protected"},"securityPolicies":{"type":"object","properties":{"orPolicies":{"type":"object","properties":{"credentials":{"type":"array","items":{"type":"object","properties":{"username":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The username to access the service","example":"admin"},"password":{"type":"string","description":"The password to access the service with this username.","example":"password123"},"type":{"type":"string","enum":["basic-auth"],"description":"The type of authentication used","example":"basic-auth"}},"required":["username","password","type"],"additionalProperties":false},"description":"An array of credentials to access the service."},"ip":{"type":"array","items":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","description":"An IP address used by this rule","example":"127.0.0.1"},"description":"An array of IP addresses used for this rule"},"action":{"type":"string","enum":["ALLOW","DENY"],"description":"The action for this rule.","example":"DENY"}},"required":["addresses","action"],"additionalProperties":false},"description":"An array of IP address policies."},"policies":{"type":"array","items":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","description":"An IP address used by this rule","example":"127.0.0.1"},"description":"An array of IP addresses used for this rule"},"action":{"type":"string","enum":["ALLOW","DENY"],"description":"The action for this rule.","example":"DENY"}},"required":["addresses","action"],"additionalProperties":false},"description":"An array of IP address policies."},"sso":{"type":"object","properties":{"organizationId":{"type":"string","description":"ID of the SSO organization that the user will have to be a member of"},"directoryGroupIds":{"type":"array","items":{"type":"string"},"description":"Array of directory groups that will have access"},"allowAnyOrgUsers":{"type":"boolean","description":"Allow entire organization to access this service"},"validateInternalTraffic":{"type":"boolean","description":"Enforce internal traffic through SSO authentication flow"},"setCookieOnRootDomain":{"type":"boolean","description":"Set SSO authentication cookie on root domain"},"allowInternalTrafficViaPublicDns":{"type":"boolean","description":"Allow internal traffic from same or shared projects via public DNS to skip SSO authentication flow"}},"additionalProperties":false,"description":"Configure port authentication via SSO"},"headers":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"regexMode":{"type":"boolean","example":false,"default":false},"name":{"type":"string","pattern":"^[a-zA-Z0-9_\\-%$+]+$","example":"headerName"},"value":{"type":"string","example":"headerValue"}},"required":["name","value"],"additionalProperties":false,"description":"Matches provided headers as strings."},{"type":"object","properties":{"regexMode":{"type":"boolean","example":true,"default":false},"name":{"type":"string","example":"headerName"},"value":{"type":"string","example":"headerValue"}},"required":["name","value"],"additionalProperties":false,"description":"Matches provided headers as regex."}]},"description":"List of header authentication settings, it checks the presence of all headers and compares it against the expected value. Wildcard (*) is supported."}},"additionalProperties":false},"requiredPolicies":{"type":"object","properties":{"credentials":{"type":"array","items":{"type":"object","properties":{"username":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The username to access the service","example":"admin"},"password":{"type":"string","description":"The password to access the service with this username.","example":"password123"},"type":{"type":"string","enum":["basic-auth"],"description":"The type of authentication used","example":"basic-auth"}},"required":["username","password","type"],"additionalProperties":false},"description":"An array of credentials to access the service."},"ip":{"type":"array","items":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","description":"An IP address used by this rule","example":"127.0.0.1"},"description":"An array of IP addresses used for this rule"},"action":{"type":"string","enum":["ALLOW","DENY"],"description":"The action for this rule.","example":"DENY"}},"required":["addresses","action"],"additionalProperties":false},"description":"An array of IP address policies."},"policies":{"type":"array","items":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","description":"An IP address used by this rule","example":"127.0.0.1"},"description":"An array of IP addresses used for this rule"},"action":{"type":"string","enum":["ALLOW","DENY"],"description":"The action for this rule.","example":"DENY"}},"required":["addresses","action"],"additionalProperties":false},"description":"An array of IP address policies."},"sso":{"type":"object","properties":{"organizationId":{"type":"string","description":"ID of the SSO organization that the user will have to be a member of"},"directoryGroupIds":{"type":"array","items":{"type":"string"},"description":"Array of directory groups that will have access"},"allowAnyOrgUsers":{"type":"boolean","description":"Allow entire organization to access this service"},"validateInternalTraffic":{"type":"boolean","description":"Enforce internal traffic through SSO authentication flow"},"setCookieOnRootDomain":{"type":"boolean","description":"Set SSO authentication cookie on root domain"},"allowInternalTrafficViaPublicDns":{"type":"boolean","description":"Allow internal traffic from same or shared projects via public DNS to skip SSO authentication flow"}},"additionalProperties":false,"description":"Configure port authentication via SSO"},"headers":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"regexMode":{"type":"boolean","example":false,"default":false},"name":{"type":"string","pattern":"^[a-zA-Z0-9_\\-%$+]+$","example":"headerName"},"value":{"type":"string","example":"headerValue"}},"required":["name","value"],"additionalProperties":false,"description":"Matches provided headers as strings."},{"type":"object","properties":{"regexMode":{"type":"boolean","example":true,"default":false},"name":{"type":"string","example":"headerName"},"value":{"type":"string","example":"headerValue"}},"required":["name","value"],"additionalProperties":false,"description":"Matches provided headers as regex."}]},"description":"List of header authentication settings, it checks the presence of all headers and compares it against the expected value. Wildcard (*) is supported."}},"additionalProperties":false}},"additionalProperties":false}},"required":["paths","accessMode"],"additionalProperties":false},"default":[]}},"additionalProperties":false}},"additionalProperties":false,"default":{"credentials":[],"policies":[],"sso":{}}},"domains":{"type":"array","items":{"type":"string","description":"A domain to redirect to this port.","example":"app.example.com"},"description":"An array of domains to redirect to this port. Each domain must first be verified and registered to your account.","default":[]},"disableNfDomain":{"type":"boolean","description":"Disable routing on the default code.run domain for public HTTP ports with custom domains.","default":false},"advancedOptions":{"type":"object","properties":{"enableTlsPassthrough":{"type":"boolean","description":"Whether this port should use pass through mode for TLS"}},"additionalProperties":false},"protocol":{"type":"string","oneOf":[{"type":"string","enum":["HTTP","HTTP/2"]},{"type":"string","enum":["HTTP","HTTP/2","TCP","UDP"]}],"description":"The protocol to use for the port.","example":"HTTP"}},"required":["name","internalPort","protocol"],"additionalProperties":false},"default":[]},"runtimeEnvironment":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"An object containing the runtime environment to set for the service","example":{"VARIABLE_1":"abcdef","VARIABLE_2":"12345"},"default":{}},"runtimeFiles":{"type":"object","properties":{},"description":"Secret files as JSON object, encrypted at rest. File path must be absolute","example":{"/dir/fileName":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"healthChecks":{"type":"array","items":{"type":"object","properties":{"protocol":{"type":"string","enum":["HTTP","CMD","TCP"],"description":"The protocol to access the health check with.","example":"HTTP"},"type":{"type":"string","enum":["livenessProbe","readinessProbe","startupProbe"],"description":"The type of health check.","example":"readinessProbe"},"path":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*((\\?([a-zA-Z0-9-._]+(=[a-zA-Z0-9-._]+)?)*)(&([a-zA-Z0-9-._]+(=[a-zA-Z0-9-._]+)?)*)*)?$","description":"The path of the health check endpoint. Required when protocol is HTTP.","example":"/health-check"},"cmd":{"type":"string","description":"The command to run for the health check. Required when protocol is CMD"},"port":{"type":"integer","minimum":1,"description":"Port number for the health check endpoint. Required when protocol is HTTP.","example":8080},"initialDelaySeconds":{"type":"integer","minimum":1,"maximum":180,"description":"Initial delay, in seconds, before the health check is first run.","example":10},"periodSeconds":{"type":"integer","minimum":10,"maximum":600,"description":"The time between each check, in seconds.","example":60},"timeoutSeconds":{"type":"integer","minimum":1,"maximum":60,"description":"The time to wait for a response before marking the health check as a failure.","example":1},"failureThreshold":{"type":"integer","minimum":1,"maximum":255,"description":"The maximum number of allowed failures.","example":3},"successThreshold":{"type":"integer","minimum":1,"maximum":255,"description":"The number of successes required to mark the health check as a success.","example":1}},"required":["protocol","type","initialDelaySeconds","periodSeconds","timeoutSeconds","failureThreshold"],"additionalProperties":false,"description":"A health check object."},"description":"An array of health checks."},"loadBalancing":{"type":"object","properties":{"mode":{"type":"string","enum":["leastConnection","consistentHash","roundRobin","consistentReplicaRouting"]},"consistentHash":{"type":"object","properties":{"mode":{"type":"string","enum":["ip","customHeader"]},"header":{"type":"string","nullable":true}},"required":["mode"],"additionalProperties":false},"consistentReplicaRouting":{"type":"object","properties":{"mode":{"type":"string","enum":["path","header"]}},"required":["mode"],"additionalProperties":false}},"required":["mode"],"additionalProperties":false},"autoscaling":{"type":"object","properties":{"horizontal":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether horizontal autoscaling should be enabled","example":true},"minReplicas":{"type":"number","format":"float","minimum":1,"description":"Minimum number of replicas which should be running at any time","example":1},"maxReplicas":{"type":"number","format":"float","description":"Maximum number of replicas which can be running at any time","example":3},"cpu":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether autoscaling should take into account cpu usage"},"thresholdPercentage":{"type":"integer","minimum":10,"maximum":100,"description":"Threshold CPU usage percentage at which the workload will be scaled"}},"required":["enabled","thresholdPercentage"],"additionalProperties":false},"memory":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether autoscaling should take into account memory usage"},"thresholdPercentage":{"type":"integer","minimum":10,"maximum":100,"description":"Threshold memory usage percentage at which the workload will be scaled"}},"required":["enabled","thresholdPercentage"],"additionalProperties":false},"rps":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether autoscaling should take into requests-per-second"},"thresholdValue":{"type":"integer","minimum":1,"description":"Threshold rps value on which the workload will be scaled"}},"required":["enabled","thresholdValue"],"additionalProperties":false},"userMetrics":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether to enable handling for custom metrics in the autoscaling configuration","example":true},"exposedMetricsPath":{"type":"string","pattern":"^\\/([_a-zA-Z0-9-&?=.]*)((\\/[_a-zA-Z0-9-&?=.]+)*(\\/)?)?$","description":"Path on which the metrics will be exposed by the service..","example":"/metrics"},"exposedMetricsPort":{"type":"integer","description":"Port on which the metrics will be exposed by the service.","example":8080},"metrics":{"type":"array","items":{"type":"object","properties":{"metricName":{"type":"string","pattern":"[a-zA-Z_:][a-zA-Z0-9_:]*$","description":"Name of the custom metric","example":"example-metric"},"metricType":{"type":"string","enum":["gauge","counter"],"description":"Type of metric exposed, this will affect how it'll be queried by the autoscaler component: Gauge will be used as is, Counter will be used with rate()","example":"gauge"},"thresholdValue":{"type":"number","format":"float","description":"Threshold value on which the workload will be scaled. Represents the average value across all running pods.","example":2}},"required":["metricName","metricType","thresholdValue"],"additionalProperties":false},"description":"Array of custom metrics exposed by the service that will be used by the autoscaling configuration. At least one metric is required."}},"required":["enabled","exposedMetricsPath","exposedMetricsPort","metrics"],"additionalProperties":false}},"required":["enabled","minReplicas","maxReplicas"],"additionalProperties":false,"description":"Describes the horizontal autoscaling configuration"}},"additionalProperties":false,"description":"Describes all autoscaling configurations"},"createOptions":{"type":"object","properties":{"volumesToAttach":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39}}},"additionalProperties":false},"serviceType":{"type":"string","enum":["deployment"],"description":"Type of the service (combined, build or deployment)","example":"deployment"},"deployment":{"type":"object","properties":{"type":{"type":"string","enum":["deployment","statefulSet"],"description":"The way the service should be deployed. Either as a deployment (default), or as a stateful set."},"instances":{"type":"integer","minimum":0,"description":"The number of instances to run the service on.","example":1},"buildpack":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customProcess","customCommand","customEntrypointCustomCommand","originalEntrypointCustomCommand"],"description":"Type of buildpack run configuration"},"customProcess":{"type":"string","description":"Custom process which should be run. Required in case where `configType` is `customProcess`"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be run. Required in case where `configType` is `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be run. Required in case where `configType` is `customCommand`, `customEntrypointCustomCommand` or `originalEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of buildpack runtime"},"docker":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customEntrypoint","customCommand","customEntrypointCustomCommand"],"description":"Type of entrypoint & command override configuration","example":"default"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be used. Required in case where `configType` is `customEntrypoint` or `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be used. Required in case where `configType` is `customCommand` or `customEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of docker runtime"},"storage":{"type":"object","properties":{"useHdbStorage":{"type":"boolean"},"usePdSsdStorage":{"type":"boolean"},"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":1024,"description":"Ephemeral storage per container in MB","example":1024}},"additionalProperties":false},"shmSize":{"type":"integer","minimum":64,"description":"Configures the amount of available memory-backed disk space available to /dev/shm"}},"additionalProperties":false},"strategy":{"type":"object","properties":{"type":{"type":"string","enum":["recreate","rollout-steady","rollout-balanced","rollout-fast","custom"],"description":"Configures the instance roll out strategy of your service. Currently only available via feature flag."},"settings":{"type":"object","properties":{"maxSurge":{"oneOf":[{"type":"integer","minimum":0,"description":"A non-negative integer."},{"type":"string","pattern":"^\\d+%$","description":"A percentage string in the range 0% to 100%, e.g. `25%`"}],"description":"Maximum number or percentage of pods that can be created above the desired count."},"maxUnavailable":{"anyOf":[{"type":"integer","minimum":0,"description":"A non-negative integer."},{"type":"string","pattern":"^\\d+%$","description":"A percentage string in the range 0% to 100%, e.g. `25%`"}],"description":"Maximum number or percentage of pods that can be unavailable during the update."}},"required":["maxSurge","maxUnavailable"],"additionalProperties":false}},"additionalProperties":false,"description":"Roll out strategy of the service"},"zonalRedundancy":{"type":"object","properties":{"type":{"type":"string","enum":["disabled","preferred","required"],"description":"Defines scheduling behaviour across different zones within the same region."},"minZones":{"type":"integer","minimum":1,"description":"Defines how many zones are required and will prevent containers from additional scheduling into existing zones. (Only relevant if type is set to \"required\")"}},"additionalProperties":false},"gpu":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"gpuType":{"type":"string"},"gpuCount":{"type":"integer"},"timesliced":{"type":"boolean"}},"required":["gpuType"],"additionalProperties":false}},"additionalProperties":false},"gracePeriodSeconds":{"type":"integer","minimum":15,"maximum":600,"description":"The 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."},"gradualRolloutStrategyId":{"type":"string","pattern":"^[A-Za-z0-9-]+$","nullable":true,"description":"The id of the strategy to be attached to service.","examples":["strategy-id","strategy-id"]},"ssh":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Enables SSH access if the resource matches an SSH identity selector."}},"required":["enabled"],"additionalProperties":false,"description":"Controls related to SSH access within the resource."},"metadata":{"type":"object","properties":{"labels":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom labels for the workload."},"annotations":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom annotations for the workload as string or object."}},"additionalProperties":false,"description":"Allow setting custom labels and annotations for workloads."},"internal":{"type":"object","properties":{"id":{"anyOf":[{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":54,"example":"example-build-service"},{"type":"string","example":"example-project/example-build-service"}],"description":"ID of the build service to deploy"},"branch":{"type":"string","description":"Branch to deploy","example":"master"},"buildSHA":{"oneOf":[{"type":"string","minLength":40,"maxLength":40,"description":"A commit sha."},{"type":"string","enum":["latest"],"description":"Latest commit."}],"description":"Commit SHA to deploy, or 'latest' to deploy the most recent commit","example":"latest"},"buildId":{"type":"string","description":"ID of the build that should be deployed","example":"premium-guide-6393"}},"additionalProperties":false},"external":{"type":"object","properties":{"imagePath":{"type":"string","pattern":"^(?:(?:https?:\\/\\/)?([a-zA-Z0-9\\-]+\\.[a-zA-Z0-9\\.\\-]+)(\\/v1)?)?(?:\\/)?([a-zA-Z/-9\\.\\-_]+)(?:\\:([a-zA-Z/-9\\.\\-_\\:]+)|\\@([a-zA-Z/-9\\.\\-_\\:]+))$","description":"Image to be deployed. When not deploying from Dockerhub the URL must be specified.","example":"nginx:latest"},"credentials":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"ID of the saved credentials to use to access this external image.","example":"example-credentials"}},"required":["imagePath"],"additionalProperties":false},"imageUrl":{"type":"string","description":"Image registry url of the deployed image."}},"required":["instances"],"additionalProperties":false},"id":{"type":"string","description":"Identifier for the service","example":"example-service"},"appId":{"type":"string","description":"Full identifier used for service deployment","example":"/example-user/default-project/example-service"},"cluster":{"type":"object","properties":{"id":{"type":"string","description":"The id of the cluster associated with this project.","example":"nf-europe-west"},"name":{"type":"string","description":"The name of the cluster associated with this project.","example":"nf-europe-west"},"namespace":{"type":"string","description":"Namespace this resource is located within on the cluster.","example":"ns-8zy2mcjh9zn2"},"loadBalancers":{"type":"array","items":{"type":"string","example":"lb.659200800000000000000000.northflank.com"},"description":"Load balancer DNS for the cluster."}},"required":["id","name"],"additionalProperties":false,"description":"Cluster information"},"createdAt":{"type":"string","format":"date-time","description":"time of creation"},"updatedAt":{"type":"string","format":"date-time","description":"time of update"},"status":{"type":"object","properties":{"deployment":{"type":"object","properties":{"status":{"type":"string","enum":["PENDING","IN_PROGRESS","COMPLETED","FAILED"],"description":"The current status of the deployment.","example":"COMPLETED"},"reason":{"type":"string","enum":["SCALING","DEPLOYING"],"description":"The reason the current deployment was started.","example":"DEPLOYING"},"lastTransitionTime":{"type":"string","format":"date-time","description":"The timestamp of when the deployment reached this status.","example":"2021-11-29T11:47:16.624Z"}},"required":["status","reason"],"additionalProperties":false,"description":"Details about the current deployment status."}},"additionalProperties":false,"description":"Details about the current service status."}},"required":["name","billing","serviceType","deployment","id","appId","cluster","status"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Services","project"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"A description of the service.","example":"A service description"},"stageId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"nullable":true},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"billing":{"type":"object","properties":{"deploymentPlan":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The ID of the deployment plan to use.","example":"nf-compute-20"},"gpu":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"gpuType":{"type":"string"},"gpuCount":{"type":"integer"},"timesliced":{"type":"boolean"}},"additionalProperties":false}},"additionalProperties":false}},"additionalProperties":false},"deployment":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["deployment","statefulSet"],"description":"The way the service should be deployed. Either as a deployment (default), or as a stateful set."},"instances":{"type":"integer","minimum":0,"description":"The number of instances to run the service on.","example":1},"buildpack":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customProcess","customCommand","customEntrypointCustomCommand","originalEntrypointCustomCommand"],"description":"Type of buildpack run configuration"},"customProcess":{"type":"string","description":"Custom process which should be run. Required in case where `configType` is `customProcess`"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be run. Required in case where `configType` is `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be run. Required in case where `configType` is `customCommand`, `customEntrypointCustomCommand` or `originalEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of buildpack runtime"},"docker":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customEntrypoint","customCommand","customEntrypointCustomCommand"],"description":"Type of entrypoint & command override configuration","example":"default"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be used. Required in case where `configType` is `customEntrypoint` or `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be used. Required in case where `configType` is `customCommand` or `customEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of docker runtime"},"storage":{"type":"object","properties":{"useHdbStorage":{"type":"boolean"},"usePdSsdStorage":{"type":"boolean"},"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":1024,"description":"Ephemeral storage per container in MB","example":1024}},"additionalProperties":false},"shmSize":{"type":"integer","minimum":64,"description":"Configures the amount of available memory-backed disk space available to /dev/shm"}},"additionalProperties":false},"strategy":{"type":"object","properties":{"type":{"type":"string","enum":["recreate","rollout-steady","rollout-balanced","rollout-fast","custom"],"description":"Configures the instance roll out strategy of your service. Currently only available via feature flag."},"settings":{"type":"object","properties":{"maxSurge":{"oneOf":[{"type":"integer","minimum":0,"description":"A non-negative integer."},{"type":"string","pattern":"^\\d+%$","description":"A percentage string in the range 0% to 100%, e.g. `25%`"}],"description":"Maximum number or percentage of pods that can be created above the desired count."},"maxUnavailable":{"anyOf":[{"type":"integer","minimum":0,"description":"A non-negative integer."},{"type":"string","pattern":"^\\d+%$","description":"A percentage string in the range 0% to 100%, e.g. `25%`"}],"description":"Maximum number or percentage of pods that can be unavailable during the update."}},"required":["maxSurge","maxUnavailable"],"additionalProperties":false}},"additionalProperties":false,"description":"Roll out strategy of the service"},"zonalRedundancy":{"type":"object","properties":{"type":{"type":"string","enum":["disabled","preferred","required"],"description":"Defines scheduling behaviour across different zones within the same region."},"minZones":{"type":"integer","minimum":1,"description":"Defines how many zones are required and will prevent containers from additional scheduling into existing zones. (Only relevant if type is set to \"required\")"}},"additionalProperties":false},"gpu":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"gpuType":{"type":"string"},"gpuCount":{"type":"integer"},"timesliced":{"type":"boolean"}},"required":["gpuType"],"additionalProperties":false}},"additionalProperties":false},"gracePeriodSeconds":{"type":"integer","minimum":15,"maximum":600,"description":"The 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."},"gradualRolloutStrategyId":{"type":"string","pattern":"^[A-Za-z0-9-]+$","nullable":true,"description":"The id of the strategy to be attached to service.","examples":["strategy-id","strategy-id"]},"ssh":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Enables SSH access if the resource matches an SSH identity selector."}},"required":["enabled"],"additionalProperties":false,"description":"Controls related to SSH access within the resource."},"metadata":{"type":"object","properties":{"labels":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom labels for the workload."},"annotations":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom annotations for the workload as string or object."}},"additionalProperties":false,"description":"Allow setting custom labels and annotations for workloads."},"internal":{"type":"object","properties":{"id":{"anyOf":[{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":54,"example":"example-build-service"},{"type":"string","example":"example-project/example-build-service"}],"description":"ID of the build service to deploy"},"branch":{"type":"string","description":"Branch to deploy","example":"master"},"buildSHA":{"oneOf":[{"type":"string","minLength":40,"maxLength":40,"description":"A commit sha."},{"type":"string","enum":["latest"],"description":"Latest commit."}],"description":"Commit SHA to deploy, or 'latest' to deploy the most recent commit","example":"latest"},"buildId":{"type":"string","description":"ID of the build that should be deployed","example":"premium-guide-6393"}},"additionalProperties":false}},"required":["instances","internal"],"additionalProperties":false,"description":"Internal deployment"},{"type":"object","properties":{"type":{"type":"string","enum":["deployment","statefulSet"],"description":"The way the service should be deployed. Either as a deployment (default), or as a stateful set."},"instances":{"type":"integer","minimum":0,"description":"The number of instances to run the service on.","example":1},"buildpack":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customProcess","customCommand","customEntrypointCustomCommand","originalEntrypointCustomCommand"],"description":"Type of buildpack run configuration"},"customProcess":{"type":"string","description":"Custom process which should be run. Required in case where `configType` is `customProcess`"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be run. Required in case where `configType` is `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be run. Required in case where `configType` is `customCommand`, `customEntrypointCustomCommand` or `originalEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of buildpack runtime"},"docker":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customEntrypoint","customCommand","customEntrypointCustomCommand"],"description":"Type of entrypoint & command override configuration","example":"default"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be used. Required in case where `configType` is `customEntrypoint` or `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be used. Required in case where `configType` is `customCommand` or `customEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of docker runtime"},"storage":{"type":"object","properties":{"useHdbStorage":{"type":"boolean"},"usePdSsdStorage":{"type":"boolean"},"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":1024,"description":"Ephemeral storage per container in MB","example":1024}},"additionalProperties":false},"shmSize":{"type":"integer","minimum":64,"description":"Configures the amount of available memory-backed disk space available to /dev/shm"}},"additionalProperties":false},"strategy":{"type":"object","properties":{"type":{"type":"string","enum":["recreate","rollout-steady","rollout-balanced","rollout-fast","custom"],"description":"Configures the instance roll out strategy of your service. Currently only available via feature flag."},"settings":{"type":"object","properties":{"maxSurge":{"oneOf":[{"type":"integer","minimum":0,"description":"A non-negative integer."},{"type":"string","pattern":"^\\d+%$","description":"A percentage string in the range 0% to 100%, e.g. `25%`"}],"description":"Maximum number or percentage of pods that can be created above the desired count."},"maxUnavailable":{"anyOf":[{"type":"integer","minimum":0,"description":"A non-negative integer."},{"type":"string","pattern":"^\\d+%$","description":"A percentage string in the range 0% to 100%, e.g. `25%`"}],"description":"Maximum number or percentage of pods that can be unavailable during the update."}},"required":["maxSurge","maxUnavailable"],"additionalProperties":false}},"additionalProperties":false,"description":"Roll out strategy of the service"},"zonalRedundancy":{"type":"object","properties":{"type":{"type":"string","enum":["disabled","preferred","required"],"description":"Defines scheduling behaviour across different zones within the same region."},"minZones":{"type":"integer","minimum":1,"description":"Defines how many zones are required and will prevent containers from additional scheduling into existing zones. (Only relevant if type is set to \"required\")"}},"additionalProperties":false},"gpu":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"gpuType":{"type":"string"},"gpuCount":{"type":"integer"},"timesliced":{"type":"boolean"}},"required":["gpuType"],"additionalProperties":false}},"additionalProperties":false},"gracePeriodSeconds":{"type":"integer","minimum":15,"maximum":600,"description":"The 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."},"gradualRolloutStrategyId":{"type":"string","pattern":"^[A-Za-z0-9-]+$","nullable":true,"description":"The id of the strategy to be attached to service.","examples":["strategy-id","strategy-id"]},"ssh":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Enables SSH access if the resource matches an SSH identity selector."}},"required":["enabled"],"additionalProperties":false,"description":"Controls related to SSH access within the resource."},"metadata":{"type":"object","properties":{"labels":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom labels for the workload."},"annotations":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom annotations for the workload as string or object."}},"additionalProperties":false,"description":"Allow setting custom labels and annotations for workloads."},"external":{"type":"object","properties":{"imagePath":{"type":"string","pattern":"^(?:(?:https?:\\/\\/)?([a-zA-Z0-9\\-]+\\.[a-zA-Z0-9\\.\\-]+)(\\/v1)?)?(?:\\/)?([a-zA-Z/-9\\.\\-_]+)(?:\\:([a-zA-Z/-9\\.\\-_\\:]+)|\\@([a-zA-Z/-9\\.\\-_\\:]+))$","description":"Image to be deployed. When not deploying from Dockerhub the URL must be specified.","example":"nginx:latest"},"credentials":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"ID of the saved credentials to use to access this external image.","example":"example-credentials"}},"required":["imagePath"],"additionalProperties":false}},"required":["instances","external"],"additionalProperties":false,"description":"External deployment"},{"type":"object","properties":{"type":{"type":"string","enum":["deployment","statefulSet"],"description":"The way the service should be deployed. Either as a deployment (default), or as a stateful set."},"instances":{"type":"integer","minimum":0,"description":"The number of instances to run the service on.","example":1},"buildpack":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customProcess","customCommand","customEntrypointCustomCommand","originalEntrypointCustomCommand"],"description":"Type of buildpack run configuration"},"customProcess":{"type":"string","description":"Custom process which should be run. Required in case where `configType` is `customProcess`"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be run. Required in case where `configType` is `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be run. Required in case where `configType` is `customCommand`, `customEntrypointCustomCommand` or `originalEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of buildpack runtime"},"docker":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customEntrypoint","customCommand","customEntrypointCustomCommand"],"description":"Type of entrypoint & command override configuration","example":"default"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be used. Required in case where `configType` is `customEntrypoint` or `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be used. Required in case where `configType` is `customCommand` or `customEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of docker runtime"},"storage":{"type":"object","properties":{"useHdbStorage":{"type":"boolean"},"usePdSsdStorage":{"type":"boolean"},"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":1024,"description":"Ephemeral storage per container in MB","example":1024}},"additionalProperties":false},"shmSize":{"type":"integer","minimum":64,"description":"Configures the amount of available memory-backed disk space available to /dev/shm"}},"additionalProperties":false},"strategy":{"type":"object","properties":{"type":{"type":"string","enum":["recreate","rollout-steady","rollout-balanced","rollout-fast","custom"],"description":"Configures the instance roll out strategy of your service. Currently only available via feature flag."},"settings":{"type":"object","properties":{"maxSurge":{"oneOf":[{"type":"integer","minimum":0,"description":"A non-negative integer."},{"type":"string","pattern":"^\\d+%$","description":"A percentage string in the range 0% to 100%, e.g. `25%`"}],"description":"Maximum number or percentage of pods that can be created above the desired count."},"maxUnavailable":{"anyOf":[{"type":"integer","minimum":0,"description":"A non-negative integer."},{"type":"string","pattern":"^\\d+%$","description":"A percentage string in the range 0% to 100%, e.g. `25%`"}],"description":"Maximum number or percentage of pods that can be unavailable during the update."}},"required":["maxSurge","maxUnavailable"],"additionalProperties":false}},"additionalProperties":false,"description":"Roll out strategy of the service"},"zonalRedundancy":{"type":"object","properties":{"type":{"type":"string","enum":["disabled","preferred","required"],"description":"Defines scheduling behaviour across different zones within the same region."},"minZones":{"type":"integer","minimum":1,"description":"Defines how many zones are required and will prevent containers from additional scheduling into existing zones. (Only relevant if type is set to \"required\")"}},"additionalProperties":false},"gpu":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"gpuType":{"type":"string"},"gpuCount":{"type":"integer"},"timesliced":{"type":"boolean"}},"required":["gpuType"],"additionalProperties":false}},"additionalProperties":false},"gracePeriodSeconds":{"type":"integer","minimum":15,"maximum":600,"description":"The 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."},"gradualRolloutStrategyId":{"type":"string","pattern":"^[A-Za-z0-9-]+$","nullable":true,"description":"The id of the strategy to be attached to service.","examples":["strategy-id","strategy-id"]},"ssh":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Enables SSH access if the resource matches an SSH identity selector."}},"required":["enabled"],"additionalProperties":false,"description":"Controls related to SSH access within the resource."},"metadata":{"type":"object","properties":{"labels":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom labels for the workload."},"annotations":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom annotations for the workload as string or object."}},"additionalProperties":false,"description":"Allow setting custom labels and annotations for workloads."}},"required":["instances"],"additionalProperties":false,"description":"Choose later"}],"description":"Deployment type"},"ports":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":1,"maxLength":8,"description":"The name used to identify the port.","example":"p01"},"internalPort":{"type":"integer","minimum":1,"maximum":65535,"description":"The port number.","example":8080},"public":{"type":"boolean","description":"If true, the port will be exposed publicly.","example":true,"default":false},"security":{"type":"object","properties":{"credentials":{"type":"array","items":{"type":"object","properties":{"username":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The username to access the service","example":"admin"},"password":{"type":"string","description":"The password to access the service with this username.","example":"password123"},"type":{"type":"string","enum":["basic-auth"],"description":"The type of authentication used","example":"basic-auth"}},"required":["username","password","type"],"additionalProperties":false},"description":"An array of credentials to access the service."},"ip":{"type":"array","items":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","description":"An IP address used by this rule","example":"127.0.0.1"},"description":"An array of IP addresses used for this rule"},"action":{"type":"string","enum":["ALLOW","DENY"],"description":"The action for this rule.","example":"DENY"}},"required":["addresses","action"],"additionalProperties":false},"description":"An array of IP address policies."},"policies":{"type":"array","items":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","description":"An IP address used by this rule","example":"127.0.0.1"},"description":"An array of IP addresses used for this rule"},"action":{"type":"string","enum":["ALLOW","DENY"],"description":"The action for this rule.","example":"DENY"}},"required":["addresses","action"],"additionalProperties":false},"description":"An array of IP address policies."},"sso":{"type":"object","properties":{"organizationId":{"type":"string","description":"ID of the SSO organization that the user will have to be a member of"},"directoryGroupIds":{"type":"array","items":{"type":"string"},"description":"Array of directory groups that will have access"},"allowAnyOrgUsers":{"type":"boolean","description":"Allow entire organization to access this service"},"validateInternalTraffic":{"type":"boolean","description":"Enforce internal traffic through SSO authentication flow"},"setCookieOnRootDomain":{"type":"boolean","description":"Set SSO authentication cookie on root domain"},"allowInternalTrafficViaPublicDns":{"type":"boolean","description":"Allow internal traffic from same or shared projects via public DNS to skip SSO authentication flow"}},"additionalProperties":false,"description":"Configure port authentication via SSO"},"headers":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"regexMode":{"type":"boolean","example":false,"default":false},"name":{"type":"string","pattern":"^[a-zA-Z0-9_\\-%$+]+$","example":"headerName"},"value":{"type":"string","example":"headerValue"}},"required":["name","value"],"additionalProperties":false,"description":"Matches provided headers as strings."},{"type":"object","properties":{"regexMode":{"type":"boolean","example":true,"default":false},"name":{"type":"string","example":"headerName"},"value":{"type":"string","example":"headerValue"}},"required":["name","value"],"additionalProperties":false,"description":"Matches provided headers as regex."}]},"description":"List of header authentication settings, it checks the presence of all headers and compares it against the expected value. Wildcard (*) is supported."},"verificationMode":{"type":"string","enum":["or","and"],"description":"Mode used to verify multiple security features like ip policies and SSO authentication"},"securePathConfiguration":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Enable security policies on a path-level style"},"skipSecurityPoliciesForInternalTrafficViaPublicDns":{"type":"boolean","description":"Allow internal traffic from same or shared projects via public DNS to skip all security policies"},"rules":{"type":"array","items":{"type":"object","properties":{"paths":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"path":{"type":"string","pattern":"^\\/([_a-zA-Z0-9-&?=.]*)((\\/[_a-zA-Z0-9-&?=.]+)*(\\/)?)?$"},"routingMode":{"type":"string","enum":["prefix"],"description":"Mode of the path, determining how the URI will be interpreted.","example":"prefix"},"priority":{"type":"integer","minimum":0,"maximum":100,"example":80}},"required":["path","routingMode","priority"],"additionalProperties":false,"description":"Route when the path starts with the provided prefix."},{"type":"object","properties":{"path":{"type":"string","pattern":"^\\/([_a-zA-Z0-9-&?=.]*)((\\/[_a-zA-Z0-9-&?=.]+)*(\\/)?)?$"},"routingMode":{"type":"string","enum":["exact"],"description":"Mode of the path, determining how the URI will be interpreted.","example":"exact"},"priority":{"type":"integer","minimum":0,"maximum":100,"example":80}},"required":["path","routingMode","priority"],"additionalProperties":false,"description":"Route when the path is an exact match."},{"type":"object","properties":{"path":{"type":"string"},"routingMode":{"type":"string","enum":["regex"],"description":"Mode of the path, determining how the URI will be interpreted.","example":"regex"},"priority":{"type":"integer","minimum":0,"maximum":100,"example":80}},"required":["path","routingMode","priority"],"additionalProperties":false,"description":"Route when the path matches the provided regex."}],"description":"Data about how the path should be handled."},"description":"Array of path objects which represent the paths and their priority for which the security policies will be enforced"},"accessMode":{"type":"string","enum":["protected","unprotected"],"description":"Specify the way the path rule will behave when processing policies. This enables an allow-list/deny-list approach for access control on each path","example":"protected"},"securityPolicies":{"type":"object","properties":{"orPolicies":{"type":"object","properties":{"credentials":{"type":"array","items":{"type":"object","properties":{"username":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The username to access the service","example":"admin"},"password":{"type":"string","description":"The password to access the service with this username.","example":"password123"},"type":{"type":"string","enum":["basic-auth"],"description":"The type of authentication used","example":"basic-auth"}},"required":["username","password","type"],"additionalProperties":false},"description":"An array of credentials to access the service."},"ip":{"type":"array","items":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","description":"An IP address used by this rule","example":"127.0.0.1"},"description":"An array of IP addresses used for this rule"},"action":{"type":"string","enum":["ALLOW","DENY"],"description":"The action for this rule.","example":"DENY"}},"required":["addresses","action"],"additionalProperties":false},"description":"An array of IP address policies."},"policies":{"type":"array","items":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","description":"An IP address used by this rule","example":"127.0.0.1"},"description":"An array of IP addresses used for this rule"},"action":{"type":"string","enum":["ALLOW","DENY"],"description":"The action for this rule.","example":"DENY"}},"required":["addresses","action"],"additionalProperties":false},"description":"An array of IP address policies."},"sso":{"type":"object","properties":{"organizationId":{"type":"string","description":"ID of the SSO organization that the user will have to be a member of"},"directoryGroupIds":{"type":"array","items":{"type":"string"},"description":"Array of directory groups that will have access"},"allowAnyOrgUsers":{"type":"boolean","description":"Allow entire organization to access this service"},"validateInternalTraffic":{"type":"boolean","description":"Enforce internal traffic through SSO authentication flow"},"setCookieOnRootDomain":{"type":"boolean","description":"Set SSO authentication cookie on root domain"},"allowInternalTrafficViaPublicDns":{"type":"boolean","description":"Allow internal traffic from same or shared projects via public DNS to skip SSO authentication flow"}},"additionalProperties":false,"description":"Configure port authentication via SSO"},"headers":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"regexMode":{"type":"boolean","example":false,"default":false},"name":{"type":"string","pattern":"^[a-zA-Z0-9_\\-%$+]+$","example":"headerName"},"value":{"type":"string","example":"headerValue"}},"required":["name","value"],"additionalProperties":false,"description":"Matches provided headers as strings."},{"type":"object","properties":{"regexMode":{"type":"boolean","example":true,"default":false},"name":{"type":"string","example":"headerName"},"value":{"type":"string","example":"headerValue"}},"required":["name","value"],"additionalProperties":false,"description":"Matches provided headers as regex."}]},"description":"List of header authentication settings, it checks the presence of all headers and compares it against the expected value. Wildcard (*) is supported."}},"additionalProperties":false},"requiredPolicies":{"type":"object","properties":{"credentials":{"type":"array","items":{"type":"object","properties":{"username":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The username to access the service","example":"admin"},"password":{"type":"string","description":"The password to access the service with this username.","example":"password123"},"type":{"type":"string","enum":["basic-auth"],"description":"The type of authentication used","example":"basic-auth"}},"required":["username","password","type"],"additionalProperties":false},"description":"An array of credentials to access the service."},"ip":{"type":"array","items":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","description":"An IP address used by this rule","example":"127.0.0.1"},"description":"An array of IP addresses used for this rule"},"action":{"type":"string","enum":["ALLOW","DENY"],"description":"The action for this rule.","example":"DENY"}},"required":["addresses","action"],"additionalProperties":false},"description":"An array of IP address policies."},"policies":{"type":"array","items":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","description":"An IP address used by this rule","example":"127.0.0.1"},"description":"An array of IP addresses used for this rule"},"action":{"type":"string","enum":["ALLOW","DENY"],"description":"The action for this rule.","example":"DENY"}},"required":["addresses","action"],"additionalProperties":false},"description":"An array of IP address policies."},"sso":{"type":"object","properties":{"organizationId":{"type":"string","description":"ID of the SSO organization that the user will have to be a member of"},"directoryGroupIds":{"type":"array","items":{"type":"string"},"description":"Array of directory groups that will have access"},"allowAnyOrgUsers":{"type":"boolean","description":"Allow entire organization to access this service"},"validateInternalTraffic":{"type":"boolean","description":"Enforce internal traffic through SSO authentication flow"},"setCookieOnRootDomain":{"type":"boolean","description":"Set SSO authentication cookie on root domain"},"allowInternalTrafficViaPublicDns":{"type":"boolean","description":"Allow internal traffic from same or shared projects via public DNS to skip SSO authentication flow"}},"additionalProperties":false,"description":"Configure port authentication via SSO"},"headers":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"regexMode":{"type":"boolean","example":false,"default":false},"name":{"type":"string","pattern":"^[a-zA-Z0-9_\\-%$+]+$","example":"headerName"},"value":{"type":"string","example":"headerValue"}},"required":["name","value"],"additionalProperties":false,"description":"Matches provided headers as strings."},{"type":"object","properties":{"regexMode":{"type":"boolean","example":true,"default":false},"name":{"type":"string","example":"headerName"},"value":{"type":"string","example":"headerValue"}},"required":["name","value"],"additionalProperties":false,"description":"Matches provided headers as regex."}]},"description":"List of header authentication settings, it checks the presence of all headers and compares it against the expected value. Wildcard (*) is supported."}},"additionalProperties":false}},"additionalProperties":false}},"required":["paths","accessMode"],"additionalProperties":false},"default":[]}},"additionalProperties":false}},"additionalProperties":false,"default":{"credentials":[],"policies":[],"sso":{}}},"domains":{"type":"array","items":{"type":"string","description":"A domain to redirect to this port.","example":"app.example.com"},"description":"An array of domains to redirect to this port. Each domain must first be verified and registered to your account.","default":[]},"disableNfDomain":{"type":"boolean","description":"Disable routing on the default code.run domain for public HTTP ports with custom domains.","default":false},"advancedOptions":{"type":"object","properties":{"enableTlsPassthrough":{"type":"boolean","description":"Whether this port should use pass through mode for TLS"}},"additionalProperties":false},"protocol":{"type":"string","enum":["HTTP","HTTP/2","TCP","UDP"],"description":"The protocol to use for the port.","example":"HTTP"}},"required":["name","internalPort","protocol"],"additionalProperties":false}},"runtimeEnvironment":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"An object containing the runtime environment to set for the service","example":{"VARIABLE_1":"abcdef","VARIABLE_2":"12345"}},"runtimeFiles":{"type":"object","properties":{},"description":"Secret files as JSON object, encrypted at rest. File path must be absolute","example":{"/dir/fileName":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"healthChecks":{"type":"array","items":{"type":"object","properties":{"protocol":{"type":"string","enum":["HTTP","CMD","TCP"],"description":"The protocol to access the health check with.","example":"HTTP"},"type":{"type":"string","enum":["livenessProbe","readinessProbe","startupProbe"],"description":"The type of health check.","example":"readinessProbe"},"path":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*((\\?([a-zA-Z0-9-._]+(=[a-zA-Z0-9-._]+)?)*)(&([a-zA-Z0-9-._]+(=[a-zA-Z0-9-._]+)?)*)*)?$","description":"The path of the health check endpoint. Required when protocol is HTTP.","example":"/health-check"},"cmd":{"type":"string","description":"The command to run for the health check. Required when protocol is CMD"},"port":{"type":"integer","minimum":1,"description":"Port number for the health check endpoint. Required when protocol is HTTP.","example":8080},"initialDelaySeconds":{"type":"integer","minimum":1,"maximum":180,"description":"Initial delay, in seconds, before the health check is first run.","example":10},"periodSeconds":{"type":"integer","minimum":10,"maximum":600,"description":"The time between each check, in seconds.","example":60},"timeoutSeconds":{"type":"integer","minimum":1,"maximum":60,"description":"The time to wait for a response before marking the health check as a failure.","example":1},"failureThreshold":{"type":"integer","minimum":1,"maximum":255,"description":"The maximum number of allowed failures.","example":3},"successThreshold":{"type":"integer","minimum":1,"maximum":255,"description":"The number of successes required to mark the health check as a success.","example":1}},"required":["protocol","type","initialDelaySeconds","periodSeconds","timeoutSeconds","failureThreshold"],"additionalProperties":false,"description":"A health check object."},"description":"An array of health checks."},"loadBalancing":{"type":"object","properties":{"mode":{"type":"string","enum":["leastConnection","consistentHash","roundRobin","consistentReplicaRouting"]},"consistentHash":{"type":"object","properties":{"mode":{"type":"string","enum":["ip","customHeader"]},"header":{"type":"string","nullable":true}},"required":["mode"],"additionalProperties":false},"consistentReplicaRouting":{"type":"object","properties":{"mode":{"type":"string","enum":["path","header"]}},"required":["mode"],"additionalProperties":false}},"additionalProperties":false},"autoscaling":{"type":"object","properties":{"horizontal":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether horizontal autoscaling should be enabled","example":true},"minReplicas":{"type":"number","format":"float","minimum":1,"description":"Minimum number of replicas which should be running at any time","example":1},"maxReplicas":{"type":"number","format":"float","description":"Maximum number of replicas which can be running at any time","example":3},"cpu":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether autoscaling should take into account cpu usage"},"thresholdPercentage":{"type":"integer","minimum":10,"maximum":100,"description":"Threshold CPU usage percentage at which the workload will be scaled"}},"additionalProperties":false},"memory":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether autoscaling should take into account memory usage"},"thresholdPercentage":{"type":"integer","minimum":10,"maximum":100,"description":"Threshold memory usage percentage at which the workload will be scaled"}},"additionalProperties":false},"rps":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether autoscaling should take into requests-per-second"},"thresholdValue":{"type":"integer","minimum":1,"description":"Threshold rps value on which the workload will be scaled"}},"additionalProperties":false},"userMetrics":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether to enable handling for custom metrics in the autoscaling configuration","example":true},"exposedMetricsPath":{"type":"string","pattern":"^\\/([_a-zA-Z0-9-&?=.]*)((\\/[_a-zA-Z0-9-&?=.]+)*(\\/)?)?$","description":"Path on which the metrics will be exposed by the service..","example":"/metrics"},"exposedMetricsPort":{"type":"integer","description":"Port on which the metrics will be exposed by the service.","example":8080},"metrics":{"type":"array","items":{"type":"object","properties":{"metricName":{"type":"string","pattern":"[a-zA-Z_:][a-zA-Z0-9_:]*$","description":"Name of the custom metric","example":"example-metric"},"metricType":{"type":"string","enum":["gauge","counter"],"description":"Type of metric exposed, this will affect how it'll be queried by the autoscaler component: Gauge will be used as is, Counter will be used with rate()","example":"gauge"},"thresholdValue":{"type":"number","format":"float","description":"Threshold value on which the workload will be scaled. Represents the average value across all running pods.","example":2}},"required":["metricName","metricType","thresholdValue"],"additionalProperties":false},"description":"Array of custom metrics exposed by the service that will be used by the autoscaling configuration. At least one metric is required."}},"additionalProperties":false}},"additionalProperties":false}},"additionalProperties":false}},"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Project > Services > General > Update","x-nf-team-scoped":true,"x-nf-subheading":"patch service","x-nf-cli-command":["patch","service","deployment"]},"v1-projects--projectId--services--serviceId--get":{"operationId":"getProjectsServicesServiceid","summary":"Get service","description":"Gets information about the given service.","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"serviceId","type":"string","required":true,"description":"ID of the service","example":"example-service","in":"path","schema":{"name":"serviceId","type":"string","required":true,"description":"ID of the service","example":"example-service","in":"path"}}],"responses":{"200":{"description":"Details about the service.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","description":"Identifier for the service","example":"example-service"},"appId":{"type":"string","description":"Full identifier used for service deployment","example":"/example-user/default-project/example-service"},"name":{"type":"string","description":"Service name","example":"Example Service"},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"description":{"type":"string","description":"A short description of the service","example":"This is the service description"},"projectId":{"type":"string","description":"ID of the project that the service belongs to","example":"default-project"},"serviceType":{"type":"string","enum":["combined","build","deployment"],"description":"Type of the service (combined, build or deployment)","example":"combined"},"createdAt":{"type":"string","format":"date-time","description":"The time the service was created.","example":"2021-01-20T11:19:53.175Z"},"disabledCI":{"type":"boolean","description":"Whether Continuous Integration is disabled","example":false},"disabledCD":{"type":"boolean","description":"Whether Continuous Deployment is disabled","example":false},"billing":{"type":"object","properties":{"deploymentPlan":{"type":"string","description":"ID of the billing plan used by this service","example":"nf-compute-20"}},"required":["deploymentPlan"],"additionalProperties":false},"status":{"type":"object","properties":{"build":{"type":"object","properties":{"status":{"type":"string","enum":["QUEUED","PENDING","UNSCHEDULABLE","STARTING","CLONING","BUILDING","UPLOADING","ABORTED","FAILURE","SUBMISSION_FAILURE","SUCCESS","CRASHED","IN_PROGRESS"],"description":"The current status of the build.","example":"SUCCESS"},"lastTransitionTime":{"type":"string","format":"date-time","description":"The timestamp of when the build reached this status.","example":"2021-11-29T11:47:16.624Z"}},"required":["status"],"additionalProperties":false,"description":"Details about the status of the most recent build."},"deployment":{"type":"object","properties":{"status":{"type":"string","enum":["PENDING","IN_PROGRESS","COMPLETED","FAILED"],"description":"The current status of the deployment.","example":"COMPLETED"},"reason":{"type":"string","enum":["SCALING","DEPLOYING"],"description":"The reason the current deployment was started.","example":"DEPLOYING"},"lastTransitionTime":{"type":"string","format":"date-time","description":"The timestamp of when the deployment reached this status.","example":"2021-11-29T11:47:16.624Z"}},"required":["status","reason"],"additionalProperties":false,"description":"Details about the current deployment status."}},"additionalProperties":false,"description":"Details about the current service status."},"servicePaused":{"type":"boolean","description":"Is the service paused?"},"buildSource":{"type":"string","enum":["git","bundle"],"description":"Defines the build source for this resource","example":"git"},"vcsData":{"type":"object","properties":{"projectUrl":{"type":"string","description":"URL of the repository being built","example":"https://github.com/northflank/gatsby-with-northflank"},"projectType":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"VCS provider for the repo being built","example":"github"},"selfHostedVcsId":{"type":"string","description":"ID of the self-hosted VCS, if applicable.","example":"example-team/self-hosted-vcs"},"projectBranch":{"type":"string","description":"Branch of the repo being built","example":"master"},"publicRepo":{"type":"boolean","description":"Whether the repo is being accessed without authentication.","example":false},"dockerWorkDir":{"type":"string","description":"Working directory used by the dockerfile","example":"/"},"dockerFilePath":{"type":"string","description":"File path of the Dockerfile","example":"/Dockerfile"}},"required":["projectUrl","projectType","dockerWorkDir","dockerFilePath"],"additionalProperties":false},"bundleData":{"type":"object","properties":{"bundleUrl":{"type":"string","description":"URL of the bundle to be built","example":"https://example.com/archive.tar"},"projectBranch":{"type":"string","description":"Branch of the bundle being built","example":"main"},"dockerWorkDir":{"type":"string","description":"Working directory used by the dockerfile","example":"/"},"dockerFilePath":{"type":"string","description":"File path of the Dockerfile","example":"/Dockerfile"}},"required":["bundleUrl","dockerWorkDir","dockerFilePath"],"additionalProperties":false},"deployment":{"type":"object","properties":{"region":{"type":"string","description":"Region where this service is deployed and/or built","example":"europe-west"},"instances":{"type":"integer","description":"Number of instances/replicas running","example":1},"external":{"type":"object","properties":{"imagePath":{"type":"string","description":"Path of the external image excluding the hostname"},"registryProvider":{"type":"string","enum":["acr","ecr","gar","dockerhub","dhi","github","gitlab","custom","legacy"],"description":"Registry provider hosting the external image"},"privateImage":{"type":"boolean","description":"Does the image require authentication"}},"required":["imagePath","registryProvider","privateImage"],"additionalProperties":false,"description":"Data about a deployment from an external registry."},"internal":{"type":"object","properties":{"nfObjectId":{"type":"string","description":"Database ID of deployed entity","example":"example-service"},"nfObjectType":{"type":"string","enum":["service"],"description":"Type of deployed entity","example":"service"},"repository":{"type":"string","description":"URL of the repository being deployed","example":"https://github.com/northflank/gatsby-with-northflank"},"branch":{"type":"string","description":"Branch of the repo being deployed","example":"master"},"buildSHA":{"type":"string","description":"Commit SHA to be deployed. `latest` means the latest commit is automatically being deployed.","example":"latest"},"deployedSHA":{"type":"string","description":"Currently deployed commit SHA. If buildSHA is set to `latest`, this will show the SHA of the latest commit.","example":"262ed9817b3cad5142fbceabe0c9e371e390d616"}},"required":["nfObjectId","nfObjectType","repository","branch","buildSHA"],"additionalProperties":false},"docker":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customEntrypoint","customCommand","customEntrypointCustomCommand"],"description":"Override configuration which is used at runtime.","example":"default"},"customEntrypoint":{"type":"string","description":"The CMD to run instead of the default if entrypoint override is enabled."},"customCommand":{"type":"string","description":"The CMD to run instead of the default if CMD override is enabled.","examples":["nginx -g","/docker-entrypoint.sh"]}},"required":["configType"],"additionalProperties":false,"description":"Details about the Docker overrides for this deployment."},"buildpack":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customProcess","customCommand","customEntrypointCustomCommand","originalEntrypointCustomCommand"],"description":"Type of buildpack run configuration.","example":"default"},"customProcess":{"type":"string","description":"Custom process which should be run."},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be run."},"customCommand":{"type":"string","description":"Custom command which should be run."}},"required":["configType"],"additionalProperties":false,"description":"Details about the Buildpack overrides for this deployment."},"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"number","format":"float","description":"Ephemeral storage per container in MB","example":1024}},"required":["storageSize"],"additionalProperties":false,"description":"Details about ephemeral storage settings for this deployment."},"shmSize":{"type":"integer","minimum":64,"description":"Configures the amount of available memory-backed disk space available to /dev/shm"}},"additionalProperties":false,"description":"Details about storage settings for this deployment."},"strategy":{"type":"object","properties":{"type":{"type":"string","enum":["recreate","rollout-steady","rollout-balanced","rollout-fast","custom"],"description":"Configures the instance roll out strategy of your service. Currently only available via feature flag."},"settings":{"type":"object","properties":{"maxSurge":{"oneOf":[{"type":"integer","minimum":0,"description":"A non-negative integer."},{"type":"string","pattern":"^\\d+%$","description":"A percentage string in the range 0% to 100%, e.g. `25%`"}],"description":"Maximum number or percentage of pods that can be created above the desired count."},"maxUnavailable":{"anyOf":[{"type":"integer","minimum":0,"description":"A non-negative integer."},{"type":"string","pattern":"^\\d+%$","description":"A percentage string in the range 0% to 100%, e.g. `25%`"}],"description":"Maximum number or percentage of pods that can be unavailable during the update."}},"required":["maxSurge","maxUnavailable"],"additionalProperties":false}},"additionalProperties":false,"description":"Roll out strategy of the service"},"zonalRedundancy":{"type":"object","properties":{"type":{"type":"string","enum":["disabled","preferred","required"],"description":"Defines scheduling behaviour across different zones within the same region."},"minZones":{"type":"integer","minimum":1,"description":"Defines how many zones are required and will prevent containers from additional scheduling into existing zones. (Only relevant if type is set to \"required\")"}},"additionalProperties":false},"gpu":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"gpuType":{"type":"string"},"gpuCount":{"type":"integer"},"timesliced":{"type":"boolean"}},"required":["gpuType"],"additionalProperties":false}},"additionalProperties":false},"gracePeriodSeconds":{"type":"integer","minimum":15,"maximum":600,"description":"The 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."},"metadata":{"type":"object","properties":{"labels":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom labels for the workload."},"annotations":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom annotations for the workload as string or object."}},"additionalProperties":false,"description":"Allow setting custom labels and annotations for workloads."},"imageUrl":{"type":"string","description":"URL at which the service's deployed image is located"}},"additionalProperties":false},"loadBalancing":{"type":"object","properties":{"mode":{"type":"string","enum":["leastConnection","consistentHash","roundRobin","consistentReplicaRouting"]},"consistentHash":{"type":"object","properties":{"mode":{"type":"string","enum":["ip","customHeader"]},"header":{"type":"string","nullable":true}},"required":["mode"],"additionalProperties":false},"consistentReplicaRouting":{"type":"object","properties":{"mode":{"type":"string","enum":["path","header"]}},"required":["mode"],"additionalProperties":false}},"required":["mode"],"additionalProperties":false},"buildConfiguration":{"type":"object","properties":{"prRestrictions":{"type":"array","items":{"type":"string","pattern":"^[^?:@$~ [\\]{}]*$","description":"A pull request build rule. Can contain `*` as a wildcard to match multiple branch names. For example, `feature/*` will build all commits from pull requests from branches that start with `feature/`.","example":"feature/*"},"description":"An array of pull request build rules. Only supported for build services. Each commit belonging to a pull request on a branch that matches one of the provided build rules will be built automatically."},"branchRestrictions":{"type":"array","items":{"type":"string","pattern":"^[^?:@$~ [\\]{}]*$","description":"A branch build rule. Can contain `*` as a wildcard to match multiple branch names. For example, `feature/*` will build all commits from branches that start with `feature/`.","example":"feature/*"},"description":"An array of branch build rules. Only supported for build services. Each commit belonging to a branch that matches one of the provided build rules will be built automatically."},"crossProjectAccess":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Allow this build service to be referenced by resources in other projects.","example":true},"projects":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The ID of a project to include or exclude.","example":"example-project"},"description":"A list of project IDs used as an allow list or deny list."},"isAllowList":{"type":"boolean","description":"If true, only the listed projects can use this build service. If false, all projects except the listed ones can use this build service."}},"required":["enabled","projects","isAllowList"],"additionalProperties":false,"description":"Controls which projects can use this build service."},"pathIgnoreRules":{"type":"array","items":{"type":"string","maxLength":260,"description":"A path ignore rule, following `.gitignore` syntax. For example, `*.md` will ignore all files ending with `.md`.","example":"README.md"},"maxItems":200,"description":"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."},"isAllowList":{"type":"boolean","description":"If `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`.","example":false},"ciIgnoreFlagsEnabled":{"type":"boolean","description":"If `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":{"type":"array","items":{"type":"string","maxLength":72,"description":"A commit ignore flag.","example":"[skip ci]"},"maxItems":200,"description":"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]\"]`","example":["[skip ci]","[ci skip]","[no ci]","[skip nf]","[nf skip]","[northflank skip]","[skip northflank]"]},"dockerfileTarget":{"type":"string","description":"If your Dockerfile contains multiple build stages, you can specify the target stage by entering its name here."},"dockerCredentials":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The ID of the docker credentials to use.","example":"example-docker-credential"}},"includeGitFolder":{"type":"boolean","description":"Include .git folder inside the build context"},"fullGitClone":{"type":"boolean","description":"Include the entire git history as part of the .git folder. Only relevant if \"includeGitFolder\" is set."},"enableGitLfs":{"type":"boolean","description":"Enable Git LFS support for the build"},"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false}},"additionalProperties":false},"buildEngineConfiguration":{"type":"object","properties":{"buildEngine":{"type":"string","enum":["buildpack","buildkit","kaniko"],"description":"The build engine used.","example":"buildpack"},"buildpack":{"type":"object","properties":{"builder":{"type":"string","enum":["HEROKU_24","HEROKU_22","HEROKU_22_CLASSIC","HEROKU_20","HEROKU_18","GOOGLE_22","GOOGLE_V1","CNB_ALPINE","CNB_BIONIC","PAKETO_JAMMY_TINY","PAKETO_JAMMY_BASE","PAKETO_JAMMY_FULL","PAKETO_TINY","PAKETO_BASE","PAKETO_FULL"],"description":"The Buildpack stack used.","example":"HEROKU_24"},"buildpackLocators":{"type":"array","items":{"type":"string","description":"Url or registry identifier of custom Buildpack.","example":"https://buildpack-registry.heroku.com/cnb/mars/create-react-app"},"description":"Array of custom Buildpacks used.","default":[]},"useCache":{"type":"boolean","description":"Should build dependencies be cached?"}},"additionalProperties":false,"description":"Details about Buildpack settings."},"buildkit":{"type":"object","properties":{"useCache":{"type":"boolean","description":"Should intermediate image layers be cached?"},"useInternalCache":{"type":"boolean","description":"Should use persistent storage to store all layers?"},"internalCacheStorage":{"type":"boolean","description":"Storage size to use for internal cache"}},"additionalProperties":false,"description":"Details about Buildkit settings."},"kaniko":{"type":"object","properties":{"useCache":{"type":"boolean","description":"Should intermediate image layers be cached?"}},"additionalProperties":false,"description":"Details about Kaniko settings."}},"additionalProperties":false},"autoscaling":{"type":"object","properties":{"horizontal":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether horizontal autoscaling should be enabled","example":true},"minReplicas":{"type":"number","format":"float","minimum":1,"description":"Minimum number of replicas which should be running at any time","example":1},"maxReplicas":{"type":"number","format":"float","description":"Maximum number of replicas which can be running at any time","example":3},"cpu":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether autoscaling should take into account cpu usage"},"thresholdPercentage":{"type":"integer","minimum":10,"maximum":100,"description":"Threshold CPU usage percentage at which the workload will be scaled"}},"required":["enabled","thresholdPercentage"],"additionalProperties":false},"memory":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether autoscaling should take into account memory usage"},"thresholdPercentage":{"type":"integer","minimum":10,"maximum":100,"description":"Threshold memory usage percentage at which the workload will be scaled"}},"required":["enabled","thresholdPercentage"],"additionalProperties":false},"rps":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether autoscaling should take into requests-per-second"},"thresholdValue":{"type":"integer","minimum":1,"description":"Threshold rps value on which the workload will be scaled"}},"required":["enabled","thresholdValue"],"additionalProperties":false},"userMetrics":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether to enable handling for custom metrics in the autoscaling configuration","example":true},"exposedMetricsPath":{"type":"string","pattern":"^\\/([_a-zA-Z0-9-&?=.]*)((\\/[_a-zA-Z0-9-&?=.]+)*(\\/)?)?$","description":"Path on which the metrics will be exposed by the service..","example":"/metrics"},"exposedMetricsPort":{"type":"integer","description":"Port on which the metrics will be exposed by the service.","example":8080},"metrics":{"type":"array","items":{"type":"object","properties":{"metricName":{"type":"string","pattern":"[a-zA-Z_:][a-zA-Z0-9_:]*$","description":"Name of the custom metric","example":"example-metric"},"metricType":{"type":"string","enum":["gauge","counter"],"description":"Type of metric exposed, this will affect how it'll be queried by the autoscaler component: Gauge will be used as is, Counter will be used with rate()","example":"gauge"},"thresholdValue":{"type":"number","format":"float","description":"Threshold value on which the workload will be scaled. Represents the average value across all running pods.","example":2}},"required":["metricName","metricType","thresholdValue"],"additionalProperties":false},"description":"Array of custom metrics exposed by the service that will be used by the autoscaling configuration. At least one metric is required."}},"required":["enabled","exposedMetricsPath","exposedMetricsPort","metrics"],"additionalProperties":false}},"required":["enabled","minReplicas","maxReplicas"],"additionalProperties":false,"description":"Describes the horizontal autoscaling configuration"}},"additionalProperties":false,"description":"Describes all autoscaling configurations"},"ports":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^[a-z]-?[a-z0-9]+(-[a-z0-9]+)*$","description":"The id used to identify the port across requests.","example":"eonyui"},"name":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","description":"The name of the port used in the public url and UI.","example":"p01"},"internalPort":{"type":"integer","description":"The port number.","example":8080},"protocol":{"type":"string","enum":["HTTP","HTTP/2","TCP","UDP"],"description":"The protocol used by the port.","example":"HTTP"},"public":{"type":"boolean","description":"If true, the port is exposed publicly.","example":true},"dns":{"type":"string","description":"DNS entry for this port.","example":"p01--example-service--default-service--user-abc1.salvo.code.run"},"domains":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"The custom domain redirecting to this port.","example":"app.example.com"},"certificate":{"type":"object","properties":{"inProgress":{"type":"boolean","description":"Is the certificate in the process of being generated?","example":false},"expiryDate":{"type":"string","format":"date-time","description":"The timestamp when the TLS certificate will expire.","example":"2022-04-26T09:25:02.000Z"},"refreshDate":{"type":"string","format":"date-time","description":"The timestamp when a new TLS certificate will be generated.","example":"2022-03-27T09:25:02.000Z"}},"additionalProperties":false,"description":"Details about the TLS certificate generation for this domain."}},"required":["name","certificate"],"additionalProperties":false},"description":"An array of domains that redirect to this port."},"security":{"type":"object","properties":{"credentials":{"type":"array","items":{"type":"object","properties":{"username":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The username to access the service","example":"admin"},"password":{"type":"string","description":"The password to access the service with this username.","example":"password123"},"type":{"type":"string","enum":["basic-auth"],"description":"The type of authentication used","example":"basic-auth"}},"required":["username","password","type"],"additionalProperties":false},"description":"An array of credentials to access the service."},"policies":{"type":"array","items":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","description":"An IP address used by this rule","example":"127.0.0.1"},"description":"An array of IP addresses used for this rule"},"action":{"type":"string","enum":["ALLOW","DENY"],"description":"The action for this rule.","example":"DENY"}},"required":["addresses","action"],"additionalProperties":false},"description":"An array of IP address policies."},"sso":{"type":"object","properties":{"organizationId":{"type":"string","description":"Organization ID of the work OS organization that should be validated.","example":"org_uniquestringidentifier"},"directoryGroupIds":{"type":"array","items":{"type":"string","example":"directory_group_uniquestringidentifier"},"description":"List of directory groupIds, one of which the user has to be a member of."},"allowAnyOrgUsers":{"type":"boolean","description":"Allow entire organization to access this service"},"validateInternalTraffic":{"type":"boolean","description":"Enforce internal traffic through SSO authentication flow","default":false},"setCookieOnRootDomain":{"type":"boolean","description":"Set SSO authentication cookie on root domain","default":false},"allowInternalTrafficViaPublicDns":{"type":"boolean","description":"Allow internal traffic from same or shared projects via public DNS to skip SSO authentication flow","default":false}},"additionalProperties":false,"description":"Configure SSO access control for this port."},"verificationMode":{"type":"string","enum":["or","and"],"description":"Mode used to verify multiple security features like ip policies and SSO authentication"},"headers":{"type":"array","items":{"type":"object","properties":{"regexMode":{"type":"boolean","default":false},"name":{"oneOf":[{"type":"string","x-required":true},{"type":"string","pattern":"^[a-zA-Z0-9_\\-%$+]+$","x-required":true}]},"value":{"type":"string"}},"required":["value"],"additionalProperties":false},"description":"List of header authentication settings, it checks the presence of all headers and compares it against the expected value. Wildcard (*) is supported."}},"additionalProperties":false,"description":"Details about security settings for this port."},"disableNfDomain":{"type":"boolean","description":"Disable routing on the default code.run domain for public HTTP ports with custom domains.","example":false}},"required":["id","name","internalPort","protocol","public","domains"],"additionalProperties":false},"description":"An array of ports of the service."},"cluster":{"type":"object","properties":{"id":{"type":"string","description":"The id of the cluster associated with this project.","example":"nf-europe-west"},"name":{"type":"string","description":"The name of the cluster associated with this project.","example":"nf-europe-west"},"namespace":{"type":"string","description":"Namespace this resource is located within on the cluster.","example":"ns-8zy2mcjh9zn2"},"loadBalancers":{"type":"array","items":{"type":"string","example":"lb.659200800000000000000000.northflank.com"},"description":"Load balancer DNS for the cluster."}},"required":["id","name"],"additionalProperties":false,"description":"Cluster information"}},"required":["id","appId","name","tags","projectId","serviceType","createdAt","disabledCI","disabledCD","billing","status","servicePaused","ports","cluster"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Services","project"],"security":[],"x-nf-permission-required":"Project > Services > General > Read","x-nf-team-scoped":true,"x-nf-cli-command":["get","service"]},"v1-projects--projectId--services--serviceId--get-team-scoped":{"operationId":"getProjectsServicesServiceid","summary":"Get service","description":"Gets information about the given service.","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"serviceId","type":"string","required":true,"description":"ID of the service","example":"example-service","in":"path","schema":{"name":"serviceId","type":"string","required":true,"description":"ID of the service","example":"example-service","in":"path"}}],"responses":{"200":{"description":"Details about the service.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","description":"Identifier for the service","example":"example-service"},"appId":{"type":"string","description":"Full identifier used for service deployment","example":"/example-user/default-project/example-service"},"name":{"type":"string","description":"Service name","example":"Example Service"},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"description":{"type":"string","description":"A short description of the service","example":"This is the service description"},"projectId":{"type":"string","description":"ID of the project that the service belongs to","example":"default-project"},"serviceType":{"type":"string","enum":["combined","build","deployment"],"description":"Type of the service (combined, build or deployment)","example":"combined"},"createdAt":{"type":"string","format":"date-time","description":"The time the service was created.","example":"2021-01-20T11:19:53.175Z"},"disabledCI":{"type":"boolean","description":"Whether Continuous Integration is disabled","example":false},"disabledCD":{"type":"boolean","description":"Whether Continuous Deployment is disabled","example":false},"billing":{"type":"object","properties":{"deploymentPlan":{"type":"string","description":"ID of the billing plan used by this service","example":"nf-compute-20"}},"required":["deploymentPlan"],"additionalProperties":false},"status":{"type":"object","properties":{"build":{"type":"object","properties":{"status":{"type":"string","enum":["QUEUED","PENDING","UNSCHEDULABLE","STARTING","CLONING","BUILDING","UPLOADING","ABORTED","FAILURE","SUBMISSION_FAILURE","SUCCESS","CRASHED","IN_PROGRESS"],"description":"The current status of the build.","example":"SUCCESS"},"lastTransitionTime":{"type":"string","format":"date-time","description":"The timestamp of when the build reached this status.","example":"2021-11-29T11:47:16.624Z"}},"required":["status"],"additionalProperties":false,"description":"Details about the status of the most recent build."},"deployment":{"type":"object","properties":{"status":{"type":"string","enum":["PENDING","IN_PROGRESS","COMPLETED","FAILED"],"description":"The current status of the deployment.","example":"COMPLETED"},"reason":{"type":"string","enum":["SCALING","DEPLOYING"],"description":"The reason the current deployment was started.","example":"DEPLOYING"},"lastTransitionTime":{"type":"string","format":"date-time","description":"The timestamp of when the deployment reached this status.","example":"2021-11-29T11:47:16.624Z"}},"required":["status","reason"],"additionalProperties":false,"description":"Details about the current deployment status."}},"additionalProperties":false,"description":"Details about the current service status."},"servicePaused":{"type":"boolean","description":"Is the service paused?"},"buildSource":{"type":"string","enum":["git","bundle"],"description":"Defines the build source for this resource","example":"git"},"vcsData":{"type":"object","properties":{"projectUrl":{"type":"string","description":"URL of the repository being built","example":"https://github.com/northflank/gatsby-with-northflank"},"projectType":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"VCS provider for the repo being built","example":"github"},"selfHostedVcsId":{"type":"string","description":"ID of the self-hosted VCS, if applicable.","example":"example-team/self-hosted-vcs"},"projectBranch":{"type":"string","description":"Branch of the repo being built","example":"master"},"publicRepo":{"type":"boolean","description":"Whether the repo is being accessed without authentication.","example":false},"dockerWorkDir":{"type":"string","description":"Working directory used by the dockerfile","example":"/"},"dockerFilePath":{"type":"string","description":"File path of the Dockerfile","example":"/Dockerfile"}},"required":["projectUrl","projectType","dockerWorkDir","dockerFilePath"],"additionalProperties":false},"bundleData":{"type":"object","properties":{"bundleUrl":{"type":"string","description":"URL of the bundle to be built","example":"https://example.com/archive.tar"},"projectBranch":{"type":"string","description":"Branch of the bundle being built","example":"main"},"dockerWorkDir":{"type":"string","description":"Working directory used by the dockerfile","example":"/"},"dockerFilePath":{"type":"string","description":"File path of the Dockerfile","example":"/Dockerfile"}},"required":["bundleUrl","dockerWorkDir","dockerFilePath"],"additionalProperties":false},"deployment":{"type":"object","properties":{"region":{"type":"string","description":"Region where this service is deployed and/or built","example":"europe-west"},"instances":{"type":"integer","description":"Number of instances/replicas running","example":1},"external":{"type":"object","properties":{"imagePath":{"type":"string","description":"Path of the external image excluding the hostname"},"registryProvider":{"type":"string","enum":["acr","ecr","gar","dockerhub","dhi","github","gitlab","custom","legacy"],"description":"Registry provider hosting the external image"},"privateImage":{"type":"boolean","description":"Does the image require authentication"}},"required":["imagePath","registryProvider","privateImage"],"additionalProperties":false,"description":"Data about a deployment from an external registry."},"internal":{"type":"object","properties":{"nfObjectId":{"type":"string","description":"Database ID of deployed entity","example":"example-service"},"nfObjectType":{"type":"string","enum":["service"],"description":"Type of deployed entity","example":"service"},"repository":{"type":"string","description":"URL of the repository being deployed","example":"https://github.com/northflank/gatsby-with-northflank"},"branch":{"type":"string","description":"Branch of the repo being deployed","example":"master"},"buildSHA":{"type":"string","description":"Commit SHA to be deployed. `latest` means the latest commit is automatically being deployed.","example":"latest"},"deployedSHA":{"type":"string","description":"Currently deployed commit SHA. If buildSHA is set to `latest`, this will show the SHA of the latest commit.","example":"262ed9817b3cad5142fbceabe0c9e371e390d616"}},"required":["nfObjectId","nfObjectType","repository","branch","buildSHA"],"additionalProperties":false},"docker":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customEntrypoint","customCommand","customEntrypointCustomCommand"],"description":"Override configuration which is used at runtime.","example":"default"},"customEntrypoint":{"type":"string","description":"The CMD to run instead of the default if entrypoint override is enabled."},"customCommand":{"type":"string","description":"The CMD to run instead of the default if CMD override is enabled.","examples":["nginx -g","/docker-entrypoint.sh"]}},"required":["configType"],"additionalProperties":false,"description":"Details about the Docker overrides for this deployment."},"buildpack":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customProcess","customCommand","customEntrypointCustomCommand","originalEntrypointCustomCommand"],"description":"Type of buildpack run configuration.","example":"default"},"customProcess":{"type":"string","description":"Custom process which should be run."},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be run."},"customCommand":{"type":"string","description":"Custom command which should be run."}},"required":["configType"],"additionalProperties":false,"description":"Details about the Buildpack overrides for this deployment."},"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"number","format":"float","description":"Ephemeral storage per container in MB","example":1024}},"required":["storageSize"],"additionalProperties":false,"description":"Details about ephemeral storage settings for this deployment."},"shmSize":{"type":"integer","minimum":64,"description":"Configures the amount of available memory-backed disk space available to /dev/shm"}},"additionalProperties":false,"description":"Details about storage settings for this deployment."},"strategy":{"type":"object","properties":{"type":{"type":"string","enum":["recreate","rollout-steady","rollout-balanced","rollout-fast","custom"],"description":"Configures the instance roll out strategy of your service. Currently only available via feature flag."},"settings":{"type":"object","properties":{"maxSurge":{"oneOf":[{"type":"integer","minimum":0,"description":"A non-negative integer."},{"type":"string","pattern":"^\\d+%$","description":"A percentage string in the range 0% to 100%, e.g. `25%`"}],"description":"Maximum number or percentage of pods that can be created above the desired count."},"maxUnavailable":{"anyOf":[{"type":"integer","minimum":0,"description":"A non-negative integer."},{"type":"string","pattern":"^\\d+%$","description":"A percentage string in the range 0% to 100%, e.g. `25%`"}],"description":"Maximum number or percentage of pods that can be unavailable during the update."}},"required":["maxSurge","maxUnavailable"],"additionalProperties":false}},"additionalProperties":false,"description":"Roll out strategy of the service"},"zonalRedundancy":{"type":"object","properties":{"type":{"type":"string","enum":["disabled","preferred","required"],"description":"Defines scheduling behaviour across different zones within the same region."},"minZones":{"type":"integer","minimum":1,"description":"Defines how many zones are required and will prevent containers from additional scheduling into existing zones. (Only relevant if type is set to \"required\")"}},"additionalProperties":false},"gpu":{"type":"object","properties":{"enabled":{"type":"boolean"},"configuration":{"type":"object","properties":{"gpuType":{"type":"string"},"gpuCount":{"type":"integer"},"timesliced":{"type":"boolean"}},"required":["gpuType"],"additionalProperties":false}},"additionalProperties":false},"gracePeriodSeconds":{"type":"integer","minimum":15,"maximum":600,"description":"The 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."},"metadata":{"type":"object","properties":{"labels":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom labels for the workload."},"annotations":{"type":"object","properties":{},"additionalProperties":false,"description":"Specify custom annotations for the workload as string or object."}},"additionalProperties":false,"description":"Allow setting custom labels and annotations for workloads."},"imageUrl":{"type":"string","description":"URL at which the service's deployed image is located"}},"additionalProperties":false},"loadBalancing":{"type":"object","properties":{"mode":{"type":"string","enum":["leastConnection","consistentHash","roundRobin","consistentReplicaRouting"]},"consistentHash":{"type":"object","properties":{"mode":{"type":"string","enum":["ip","customHeader"]},"header":{"type":"string","nullable":true}},"required":["mode"],"additionalProperties":false},"consistentReplicaRouting":{"type":"object","properties":{"mode":{"type":"string","enum":["path","header"]}},"required":["mode"],"additionalProperties":false}},"required":["mode"],"additionalProperties":false},"buildConfiguration":{"type":"object","properties":{"prRestrictions":{"type":"array","items":{"type":"string","pattern":"^[^?:@$~ [\\]{}]*$","description":"A pull request build rule. Can contain `*` as a wildcard to match multiple branch names. For example, `feature/*` will build all commits from pull requests from branches that start with `feature/`.","example":"feature/*"},"description":"An array of pull request build rules. Only supported for build services. Each commit belonging to a pull request on a branch that matches one of the provided build rules will be built automatically."},"branchRestrictions":{"type":"array","items":{"type":"string","pattern":"^[^?:@$~ [\\]{}]*$","description":"A branch build rule. Can contain `*` as a wildcard to match multiple branch names. For example, `feature/*` will build all commits from branches that start with `feature/`.","example":"feature/*"},"description":"An array of branch build rules. Only supported for build services. Each commit belonging to a branch that matches one of the provided build rules will be built automatically."},"crossProjectAccess":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Allow this build service to be referenced by resources in other projects.","example":true},"projects":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The ID of a project to include or exclude.","example":"example-project"},"description":"A list of project IDs used as an allow list or deny list."},"isAllowList":{"type":"boolean","description":"If true, only the listed projects can use this build service. If false, all projects except the listed ones can use this build service."}},"required":["enabled","projects","isAllowList"],"additionalProperties":false,"description":"Controls which projects can use this build service."},"pathIgnoreRules":{"type":"array","items":{"type":"string","maxLength":260,"description":"A path ignore rule, following `.gitignore` syntax. For example, `*.md` will ignore all files ending with `.md`.","example":"README.md"},"maxItems":200,"description":"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."},"isAllowList":{"type":"boolean","description":"If `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`.","example":false},"ciIgnoreFlagsEnabled":{"type":"boolean","description":"If `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":{"type":"array","items":{"type":"string","maxLength":72,"description":"A commit ignore flag.","example":"[skip ci]"},"maxItems":200,"description":"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]\"]`","example":["[skip ci]","[ci skip]","[no ci]","[skip nf]","[nf skip]","[northflank skip]","[skip northflank]"]},"dockerfileTarget":{"type":"string","description":"If your Dockerfile contains multiple build stages, you can specify the target stage by entering its name here."},"dockerCredentials":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The ID of the docker credentials to use.","example":"example-docker-credential"}},"includeGitFolder":{"type":"boolean","description":"Include .git folder inside the build context"},"fullGitClone":{"type":"boolean","description":"Include the entire git history as part of the .git folder. Only relevant if \"includeGitFolder\" is set."},"enableGitLfs":{"type":"boolean","description":"Enable Git LFS support for the build"},"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false}},"additionalProperties":false},"buildEngineConfiguration":{"type":"object","properties":{"buildEngine":{"type":"string","enum":["buildpack","buildkit","kaniko"],"description":"The build engine used.","example":"buildpack"},"buildpack":{"type":"object","properties":{"builder":{"type":"string","enum":["HEROKU_24","HEROKU_22","HEROKU_22_CLASSIC","HEROKU_20","HEROKU_18","GOOGLE_22","GOOGLE_V1","CNB_ALPINE","CNB_BIONIC","PAKETO_JAMMY_TINY","PAKETO_JAMMY_BASE","PAKETO_JAMMY_FULL","PAKETO_TINY","PAKETO_BASE","PAKETO_FULL"],"description":"The Buildpack stack used.","example":"HEROKU_24"},"buildpackLocators":{"type":"array","items":{"type":"string","description":"Url or registry identifier of custom Buildpack.","example":"https://buildpack-registry.heroku.com/cnb/mars/create-react-app"},"description":"Array of custom Buildpacks used.","default":[]},"useCache":{"type":"boolean","description":"Should build dependencies be cached?"}},"additionalProperties":false,"description":"Details about Buildpack settings."},"buildkit":{"type":"object","properties":{"useCache":{"type":"boolean","description":"Should intermediate image layers be cached?"},"useInternalCache":{"type":"boolean","description":"Should use persistent storage to store all layers?"},"internalCacheStorage":{"type":"boolean","description":"Storage size to use for internal cache"}},"additionalProperties":false,"description":"Details about Buildkit settings."},"kaniko":{"type":"object","properties":{"useCache":{"type":"boolean","description":"Should intermediate image layers be cached?"}},"additionalProperties":false,"description":"Details about Kaniko settings."}},"additionalProperties":false},"autoscaling":{"type":"object","properties":{"horizontal":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether horizontal autoscaling should be enabled","example":true},"minReplicas":{"type":"number","format":"float","minimum":1,"description":"Minimum number of replicas which should be running at any time","example":1},"maxReplicas":{"type":"number","format":"float","description":"Maximum number of replicas which can be running at any time","example":3},"cpu":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether autoscaling should take into account cpu usage"},"thresholdPercentage":{"type":"integer","minimum":10,"maximum":100,"description":"Threshold CPU usage percentage at which the workload will be scaled"}},"required":["enabled","thresholdPercentage"],"additionalProperties":false},"memory":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether autoscaling should take into account memory usage"},"thresholdPercentage":{"type":"integer","minimum":10,"maximum":100,"description":"Threshold memory usage percentage at which the workload will be scaled"}},"required":["enabled","thresholdPercentage"],"additionalProperties":false},"rps":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether autoscaling should take into requests-per-second"},"thresholdValue":{"type":"integer","minimum":1,"description":"Threshold rps value on which the workload will be scaled"}},"required":["enabled","thresholdValue"],"additionalProperties":false},"userMetrics":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether to enable handling for custom metrics in the autoscaling configuration","example":true},"exposedMetricsPath":{"type":"string","pattern":"^\\/([_a-zA-Z0-9-&?=.]*)((\\/[_a-zA-Z0-9-&?=.]+)*(\\/)?)?$","description":"Path on which the metrics will be exposed by the service..","example":"/metrics"},"exposedMetricsPort":{"type":"integer","description":"Port on which the metrics will be exposed by the service.","example":8080},"metrics":{"type":"array","items":{"type":"object","properties":{"metricName":{"type":"string","pattern":"[a-zA-Z_:][a-zA-Z0-9_:]*$","description":"Name of the custom metric","example":"example-metric"},"metricType":{"type":"string","enum":["gauge","counter"],"description":"Type of metric exposed, this will affect how it'll be queried by the autoscaler component: Gauge will be used as is, Counter will be used with rate()","example":"gauge"},"thresholdValue":{"type":"number","format":"float","description":"Threshold value on which the workload will be scaled. Represents the average value across all running pods.","example":2}},"required":["metricName","metricType","thresholdValue"],"additionalProperties":false},"description":"Array of custom metrics exposed by the service that will be used by the autoscaling configuration. At least one metric is required."}},"required":["enabled","exposedMetricsPath","exposedMetricsPort","metrics"],"additionalProperties":false}},"required":["enabled","minReplicas","maxReplicas"],"additionalProperties":false,"description":"Describes the horizontal autoscaling configuration"}},"additionalProperties":false,"description":"Describes all autoscaling configurations"},"ports":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^[a-z]-?[a-z0-9]+(-[a-z0-9]+)*$","description":"The id used to identify the port across requests.","example":"eonyui"},"name":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","description":"The name of the port used in the public url and UI.","example":"p01"},"internalPort":{"type":"integer","description":"The port number.","example":8080},"protocol":{"type":"string","enum":["HTTP","HTTP/2","TCP","UDP"],"description":"The protocol used by the port.","example":"HTTP"},"public":{"type":"boolean","description":"If true, the port is exposed publicly.","example":true},"dns":{"type":"string","description":"DNS entry for this port.","example":"p01--example-service--default-service--user-abc1.salvo.code.run"},"domains":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"The custom domain redirecting to this port.","example":"app.example.com"},"certificate":{"type":"object","properties":{"inProgress":{"type":"boolean","description":"Is the certificate in the process of being generated?","example":false},"expiryDate":{"type":"string","format":"date-time","description":"The timestamp when the TLS certificate will expire.","example":"2022-04-26T09:25:02.000Z"},"refreshDate":{"type":"string","format":"date-time","description":"The timestamp when a new TLS certificate will be generated.","example":"2022-03-27T09:25:02.000Z"}},"additionalProperties":false,"description":"Details about the TLS certificate generation for this domain."}},"required":["name","certificate"],"additionalProperties":false},"description":"An array of domains that redirect to this port."},"security":{"type":"object","properties":{"credentials":{"type":"array","items":{"type":"object","properties":{"username":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The username to access the service","example":"admin"},"password":{"type":"string","description":"The password to access the service with this username.","example":"password123"},"type":{"type":"string","enum":["basic-auth"],"description":"The type of authentication used","example":"basic-auth"}},"required":["username","password","type"],"additionalProperties":false},"description":"An array of credentials to access the service."},"policies":{"type":"array","items":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","description":"An IP address used by this rule","example":"127.0.0.1"},"description":"An array of IP addresses used for this rule"},"action":{"type":"string","enum":["ALLOW","DENY"],"description":"The action for this rule.","example":"DENY"}},"required":["addresses","action"],"additionalProperties":false},"description":"An array of IP address policies."},"sso":{"type":"object","properties":{"organizationId":{"type":"string","description":"Organization ID of the work OS organization that should be validated.","example":"org_uniquestringidentifier"},"directoryGroupIds":{"type":"array","items":{"type":"string","example":"directory_group_uniquestringidentifier"},"description":"List of directory groupIds, one of which the user has to be a member of."},"allowAnyOrgUsers":{"type":"boolean","description":"Allow entire organization to access this service"},"validateInternalTraffic":{"type":"boolean","description":"Enforce internal traffic through SSO authentication flow","default":false},"setCookieOnRootDomain":{"type":"boolean","description":"Set SSO authentication cookie on root domain","default":false},"allowInternalTrafficViaPublicDns":{"type":"boolean","description":"Allow internal traffic from same or shared projects via public DNS to skip SSO authentication flow","default":false}},"additionalProperties":false,"description":"Configure SSO access control for this port."},"verificationMode":{"type":"string","enum":["or","and"],"description":"Mode used to verify multiple security features like ip policies and SSO authentication"},"headers":{"type":"array","items":{"type":"object","properties":{"regexMode":{"type":"boolean","default":false},"name":{"oneOf":[{"type":"string","x-required":true},{"type":"string","pattern":"^[a-zA-Z0-9_\\-%$+]+$","x-required":true}]},"value":{"type":"string"}},"required":["value"],"additionalProperties":false},"description":"List of header authentication settings, it checks the presence of all headers and compares it against the expected value. Wildcard (*) is supported."}},"additionalProperties":false,"description":"Details about security settings for this port."},"disableNfDomain":{"type":"boolean","description":"Disable routing on the default code.run domain for public HTTP ports with custom domains.","example":false}},"required":["id","name","internalPort","protocol","public","domains"],"additionalProperties":false},"description":"An array of ports of the service."},"cluster":{"type":"object","properties":{"id":{"type":"string","description":"The id of the cluster associated with this project.","example":"nf-europe-west"},"name":{"type":"string","description":"The name of the cluster associated with this project.","example":"nf-europe-west"},"namespace":{"type":"string","description":"Namespace this resource is located within on the cluster.","example":"ns-8zy2mcjh9zn2"},"loadBalancers":{"type":"array","items":{"type":"string","example":"lb.659200800000000000000000.northflank.com"},"description":"Load balancer DNS for the cluster."}},"required":["id","name"],"additionalProperties":false,"description":"Cluster information"}},"required":["id","appId","name","tags","projectId","serviceType","createdAt","disabledCI","disabledCD","billing","status","servicePaused","ports","cluster"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Services","project"],"security":[],"x-nf-permission-required":"Project > Services > General > Read","x-nf-team-scoped":true,"x-nf-cli-command":["get","service"]},"v1-projects--projectId--services--serviceId--delete":{"operationId":"deleteProjectsServicesServiceid","summary":"Delete service","description":"Deletes the given service.","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"serviceId","type":"string","required":true,"description":"ID of the service","example":"example-service","in":"path","schema":{"name":"serviceId","type":"string","required":true,"description":"ID of the service","example":"example-service","in":"path"}},{"name":"delete_child_objects","type":"boolean","description":"If true, any volumes attached to this service will also be deleted.","example":false,"default":false,"in":"query","schema":{"name":"delete_child_objects","type":"boolean","description":"If true, any volumes attached to this service will also be deleted.","example":false,"default":false,"in":"query"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Services","project"],"security":[],"x-nf-permission-required":"Project > Services > General > Delete","x-nf-team-scoped":true,"x-nf-cli-command":["delete","service"]},"v1-projects--projectId--services--serviceId--delete-team-scoped":{"operationId":"deleteProjectsServicesServiceid","summary":"Delete service","description":"Deletes the given service.","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"serviceId","type":"string","required":true,"description":"ID of the service","example":"example-service","in":"path","schema":{"name":"serviceId","type":"string","required":true,"description":"ID of the service","example":"example-service","in":"path"}},{"name":"delete_child_objects","type":"boolean","description":"If true, any volumes attached to this service will also be deleted.","example":false,"default":false,"in":"query","schema":{"name":"delete_child_objects","type":"boolean","description":"If true, any volumes attached to this service will also be deleted.","example":false,"default":false,"in":"query"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Services","project"],"security":[],"x-nf-permission-required":"Project > Services > General > Delete","x-nf-team-scoped":true,"x-nf-cli-command":["delete","service"]},"v1-projects--projectId--services--serviceId--branches-get":{"operationId":"getProjectsServicesServiceidBranches","summary":"Get service branches","description":"Gets information about the branches of the given service.","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"serviceId","type":"string","required":true,"description":"ID of the service","example":"example-service","in":"path","schema":{"name":"serviceId","type":"string","required":true,"description":"ID of the service","example":"example-service","in":"path"}},{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query","schema":{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query"}},{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query","schema":{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query"}},{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query","schema":{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query"}}],"responses":{"200":{"description":"Data about the service's available branches.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"branches":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Name of the branch.","example":"main"},"id":{"type":"string","example":"MDM6UmVmMzA0MDU5MzM0OnJlZnMvaGVhZHMvbWFpbg="},"commit":{"type":"object","properties":{"sha":{"type":"string","description":"SHA identifier of the commit.","example":"f8aca180e989be62cba71db629d2ede05f2d10c4"},"author":{"type":"object","properties":{"login":{"type":"string","description":"The login of the commit author.","example":"northflank"}},"required":["login"],"additionalProperties":false,"description":"Details about the commit author."},"message":{"type":"string","description":"Commit message of the commit.","example":"Initial commit"},"date":{"type":"string","format":"date-time","description":"Timestamp of the commit.","example":"2021-09-17T14:04:39.000Z"}},"required":["sha","author"],"additionalProperties":false,"description":"Details about the most recent commit on the branch."}},"required":["name","id","commit"],"additionalProperties":false,"description":"Details about a branch."},"description":"A list of branches for this repository."}},"additionalProperties":false,"description":"Result data."},"pagination":{"type":"object","properties":{"hasNextPage":{"type":"boolean","description":"Is there another page of results available?","example":false},"cursor":{"type":"string","description":"The cursor to access the next page of results."},"count":{"type":"number","format":"float","description":"The number of results returned by this request.","example":1}},"required":["hasNextPage","count"],"additionalProperties":false,"description":"Data about the endpoint pagination."}},"required":["data","pagination"],"additionalProperties":false,"description":"Response object."}}},"tags":["Services","project"],"security":[],"x-nf-permission-required":"Project > Services > General > Read","x-nf-team-scoped":true,"x-nf-cli-command":["get","service","branches"]},"v1-projects--projectId--services--serviceId--branches-get-team-scoped":{"operationId":"getProjectsServicesServiceidBranches","summary":"Get service branches","description":"Gets information about the branches of the given service.","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"serviceId","type":"string","required":true,"description":"ID of the service","example":"example-service","in":"path","schema":{"name":"serviceId","type":"string","required":true,"description":"ID of the service","example":"example-service","in":"path"}},{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query","schema":{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query"}},{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query","schema":{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query"}},{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query","schema":{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query"}}],"responses":{"200":{"description":"Data about the service's available branches.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"branches":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Name of the branch.","example":"main"},"id":{"type":"string","example":"MDM6UmVmMzA0MDU5MzM0OnJlZnMvaGVhZHMvbWFpbg="},"commit":{"type":"object","properties":{"sha":{"type":"string","description":"SHA identifier of the commit.","example":"f8aca180e989be62cba71db629d2ede05f2d10c4"},"author":{"type":"object","properties":{"login":{"type":"string","description":"The login of the commit author.","example":"northflank"}},"required":["login"],"additionalProperties":false,"description":"Details about the commit author."},"message":{"type":"string","description":"Commit message of the commit.","example":"Initial commit"},"date":{"type":"string","format":"date-time","description":"Timestamp of the commit.","example":"2021-09-17T14:04:39.000Z"}},"required":["sha","author"],"additionalProperties":false,"description":"Details about the most recent commit on the branch."}},"required":["name","id","commit"],"additionalProperties":false,"description":"Details about a branch."},"description":"A list of branches for this repository."}},"additionalProperties":false,"description":"Result data."},"pagination":{"type":"object","properties":{"hasNextPage":{"type":"boolean","description":"Is there another page of results available?","example":false},"cursor":{"type":"string","description":"The cursor to access the next page of results."},"count":{"type":"number","format":"float","description":"The number of results returned by this request.","example":1}},"required":["hasNextPage","count"],"additionalProperties":false,"description":"Data about the endpoint pagination."}},"required":["data","pagination"],"additionalProperties":false,"description":"Response object."}}},"tags":["Services","project"],"security":[],"x-nf-permission-required":"Project > Services > General > Read","x-nf-team-scoped":true,"x-nf-cli-command":["get","service","branches"]},"v1-projects--projectId--services--serviceId--build-get":{"operationId":"getProjectsServicesServiceidBuild","summary":"List service builds","description":"Lists the builds for the service","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"serviceId","type":"string","required":true,"description":"ID of the service","example":"example-service","in":"path","schema":{"name":"serviceId","type":"string","required":true,"description":"ID of the service","example":"example-service","in":"path"}},{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query","schema":{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query"}},{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query","schema":{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query"}},{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query","schema":{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query"}}],"responses":{"200":{"description":"Returns a list of builds for the given service.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"builds":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"ID of the build.","example":"joyous-view-6290"},"branch":{"type":"string","description":"Name of the branch the built commit belongs to.","example":"main"},"pullRequestId":{"type":"number","format":"float","nullable":true,"description":"ID of the pull request the commit belongs to."},"status":{"type":"string","enum":["QUEUED","PENDING","UNSCHEDULABLE","STARTING","CLONING","BUILDING","UPLOADING","ABORTED","FAILURE","SUBMISSION_FAILURE","SUCCESS","CRASHED","IN_PROGRESS"],"description":"The status of the build.","example":"SUCCESS"},"sha":{"type":"string","description":"The sha of the built commit.","example":"12c15e7ee25fd78f567ebf87f9178b8ad70025b3"},"registry":{"type":"object","properties":{"uri":{"type":"string","description":"URI of that can be used to pull the image from the registry"}},"additionalProperties":false},"concluded":{"type":"boolean","description":"Whether the build has finished.","example":true},"createdAt":{"type":"string","description":"Timestamp of the build initiation.","example":"2021-07-28T15:55:38.296Z"},"success":{"type":"boolean","description":"Whether the build was successful.","example":true},"message":{"type":"string","nullable":true,"description":"Description of the build status.","example":"Image successfully built"},"buildConcludedAt":{"type":"number","format":"float","description":"Timestamp of the build concluding.","example":1606237973}},"required":["id"],"additionalProperties":false},"description":"An array of builds."}},"required":["builds"],"additionalProperties":false,"description":"Result data."},"pagination":{"type":"object","properties":{"hasNextPage":{"type":"boolean","description":"Is there another page of results available?","example":false},"cursor":{"type":"string","description":"The cursor to access the next page of results."},"count":{"type":"number","format":"float","description":"The number of results returned by this request.","example":1}},"required":["hasNextPage","count"],"additionalProperties":false,"description":"Data about the endpoint pagination."}},"required":["data","pagination"],"additionalProperties":false,"description":"Response object."}}},"tags":["Services","project"],"security":[],"x-nf-permission-required":"Project > Services > General > Read","x-nf-team-scoped":true,"x-nf-cli-command":["get","service","builds"]},"v1-projects--projectId--services--serviceId--build-get-team-scoped":{"operationId":"getProjectsServicesServiceidBuild","summary":"List service builds","description":"Lists the builds for the service","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"serviceId","type":"string","required":true,"description":"ID of the service","example":"example-service","in":"path","schema":{"name":"serviceId","type":"string","required":true,"description":"ID of the service","example":"example-service","in":"path"}},{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query","schema":{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query"}},{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query","schema":{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query"}},{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query","schema":{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query"}}],"responses":{"200":{"description":"Returns a list of builds for the given service.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"builds":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"ID of the build.","example":"joyous-view-6290"},"branch":{"type":"string","description":"Name of the branch the built commit belongs to.","example":"main"},"pullRequestId":{"type":"number","format":"float","nullable":true,"description":"ID of the pull request the commit belongs to."},"status":{"type":"string","enum":["QUEUED","PENDING","UNSCHEDULABLE","STARTING","CLONING","BUILDING","UPLOADING","ABORTED","FAILURE","SUBMISSION_FAILURE","SUCCESS","CRASHED","IN_PROGRESS"],"description":"The status of the build.","example":"SUCCESS"},"sha":{"type":"string","description":"The sha of the built commit.","example":"12c15e7ee25fd78f567ebf87f9178b8ad70025b3"},"registry":{"type":"object","properties":{"uri":{"type":"string","description":"URI of that can be used to pull the image from the registry"}},"additionalProperties":false},"concluded":{"type":"boolean","description":"Whether the build has finished.","example":true},"createdAt":{"type":"string","description":"Timestamp of the build initiation.","example":"2021-07-28T15:55:38.296Z"},"success":{"type":"boolean","description":"Whether the build was successful.","example":true},"message":{"type":"string","nullable":true,"description":"Description of the build status.","example":"Image successfully built"},"buildConcludedAt":{"type":"number","format":"float","description":"Timestamp of the build concluding.","example":1606237973}},"required":["id"],"additionalProperties":false},"description":"An array of builds."}},"required":["builds"],"additionalProperties":false,"description":"Result data."},"pagination":{"type":"object","properties":{"hasNextPage":{"type":"boolean","description":"Is there another page of results available?","example":false},"cursor":{"type":"string","description":"The cursor to access the next page of results."},"count":{"type":"number","format":"float","description":"The number of results returned by this request.","example":1}},"required":["hasNextPage","count"],"additionalProperties":false,"description":"Data about the endpoint pagination."}},"required":["data","pagination"],"additionalProperties":false,"description":"Response object."}}},"tags":["Services","project"],"security":[],"x-nf-permission-required":"Project > Services > General > Read","x-nf-team-scoped":true,"x-nf-cli-command":["get","service","builds"]},"v1-projects--projectId--services--serviceId--build-post":{"operationId":"postProjectsServicesServiceidBuild","summary":"Start service build","description":"Start a new build for the given combined or build service. If given a commit sha, it will build that commit. Otherwise, the most recent relevant commit will be built. If the service provided is a build service, a branch name or pull request to build from is required.","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"serviceId","type":"string","required":true,"description":"ID of the service","example":"example-service","in":"path","schema":{"name":"serviceId","type":"string","required":true,"description":"ID of the service","example":"example-service","in":"path"}}],"responses":{"200":{"description":"Returns data about the build initiated","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","description":"ID of the build.","example":"joyous-view-6290"},"branch":{"type":"string","description":"Name of the branch the built commit belongs to.","example":"main"},"pullRequestId":{"type":"number","format":"float","nullable":true,"description":"ID of the pull request the commit belongs to."},"sha":{"type":"string","description":"The sha of the built commit.","example":"12c15e7ee25fd78f567ebf87f9178b8ad70025b3"},"registry":{"type":"object","properties":{"uri":{"type":"string","description":"URI of that can be used to pull the image from the registry"}},"additionalProperties":false},"createdAt":{"type":"string","description":"Timestamp of the build initiation.","example":"2021-07-28T15:55:38.296Z"},"status":{"type":"string","description":"The status of the build.","example":"PENDING"},"concluded":{"type":"boolean","description":"Whether the build has finished.","example":false}},"required":["id"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Services","project"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"anyOf":[{"type":"object","properties":{"bundleUrl":{"type":"string","description":"URL of the bundle to be built","example":"https://example.com/archive.tar"},"branch":{"type":"string"},"sha":{"type":"string"}},"required":["bundleUrl"],"additionalProperties":false,"description":"Build from bundle","x-required":true},{"type":"object","properties":{"sha":{"type":"string","minLength":40,"maxLength":40,"description":"Commit sha to build. If not provided, builds the most recent relevant commit.","example":"262ed9817b3cad5142fbceabe0c9e371e390d616"},"branch":{"type":"string","description":"Branch to build from. If `sha` is not provided, the latest commit of this branch will be built. Only supported by build services. Build services require either `branch` or `pullRequestId` field, but cannot be provided with both."},"pullRequestId":{"type":"integer","description":"ID of a pull request to build from. If `sha` is not provided, the latest commit of this pull request will be built. Only supported by build services. Build services require either `branch` or `pullRequestId` field, but cannot be provided with both."},"overrides":{"type":"object","properties":{"buildArguments":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Build arguments that will be set on this build only. In case of conflicts these values take precedence.","example":{"ARGUMENT_1":"abcdef","ARGUMENT_2":"12345"}},"buildFiles":{"type":"object","properties":{},"description":"Secret files as JSON object, encrypted at rest. File path must be absolute","example":{"/dir/fileName":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"dockerSecretMounts":{"type":"object","properties":{},"description":"Docker secret mount contents as JSON object, encrypted at rest. Must be a valid Docker secret mount identifier","example":{"example-secret-mount_1":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"docker":{"type":"object","properties":{"dockerFilePath":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]+$","description":"The file path of the Dockerfile.","example":"/Dockerfile"},"dockerWorkDir":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*$","description":"The working directory of the Dockerfile.","example":"/"},"dockerfileTarget":{"type":"string","pattern":"^[a-zA-Z0-9-_]+$","description":"If your Dockerfile contains multiple build stages, you can specify the target stage by entering its name here."}},"additionalProperties":false,"description":"Overrides for docker build settings."}},"additionalProperties":false,"description":"An optional object that may specify several different overrides on the build level."}},"additionalProperties":false,"description":"Build from git repository","x-required":true}],"description":"Build type"}}},"required":true},"x-nf-permission-required":"Project > Services > Deployment > Deploy Build","x-nf-team-scoped":true,"x-nf-cli-command":["start","service","build"]},"v1-projects--projectId--services--serviceId--build-post-team-scoped":{"operationId":"postProjectsServicesServiceidBuild","summary":"Start service build","description":"Start a new build for the given combined or build service. If given a commit sha, it will build that commit. Otherwise, the most recent relevant commit will be built. If the service provided is a build service, a branch name or pull request to build from is required.","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"serviceId","type":"string","required":true,"description":"ID of the service","example":"example-service","in":"path","schema":{"name":"serviceId","type":"string","required":true,"description":"ID of the service","example":"example-service","in":"path"}}],"responses":{"200":{"description":"Returns data about the build initiated","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","description":"ID of the build.","example":"joyous-view-6290"},"branch":{"type":"string","description":"Name of the branch the built commit belongs to.","example":"main"},"pullRequestId":{"type":"number","format":"float","nullable":true,"description":"ID of the pull request the commit belongs to."},"sha":{"type":"string","description":"The sha of the built commit.","example":"12c15e7ee25fd78f567ebf87f9178b8ad70025b3"},"registry":{"type":"object","properties":{"uri":{"type":"string","description":"URI of that can be used to pull the image from the registry"}},"additionalProperties":false},"createdAt":{"type":"string","description":"Timestamp of the build initiation.","example":"2021-07-28T15:55:38.296Z"},"status":{"type":"string","description":"The status of the build.","example":"PENDING"},"concluded":{"type":"boolean","description":"Whether the build has finished.","example":false}},"required":["id"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Services","project"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"anyOf":[{"type":"object","properties":{"bundleUrl":{"type":"string","description":"URL of the bundle to be built","example":"https://example.com/archive.tar"},"branch":{"type":"string"},"sha":{"type":"string"}},"required":["bundleUrl"],"additionalProperties":false,"description":"Build from bundle","x-required":true},{"type":"object","properties":{"sha":{"type":"string","minLength":40,"maxLength":40,"description":"Commit sha to build. If not provided, builds the most recent relevant commit.","example":"262ed9817b3cad5142fbceabe0c9e371e390d616"},"branch":{"type":"string","description":"Branch to build from. If `sha` is not provided, the latest commit of this branch will be built. Only supported by build services. Build services require either `branch` or `pullRequestId` field, but cannot be provided with both."},"pullRequestId":{"type":"integer","description":"ID of a pull request to build from. If `sha` is not provided, the latest commit of this pull request will be built. Only supported by build services. Build services require either `branch` or `pullRequestId` field, but cannot be provided with both."},"overrides":{"type":"object","properties":{"buildArguments":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Build arguments that will be set on this build only. In case of conflicts these values take precedence.","example":{"ARGUMENT_1":"abcdef","ARGUMENT_2":"12345"}},"buildFiles":{"type":"object","properties":{},"description":"Secret files as JSON object, encrypted at rest. File path must be absolute","example":{"/dir/fileName":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"dockerSecretMounts":{"type":"object","properties":{},"description":"Docker secret mount contents as JSON object, encrypted at rest. Must be a valid Docker secret mount identifier","example":{"example-secret-mount_1":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"docker":{"type":"object","properties":{"dockerFilePath":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]+$","description":"The file path of the Dockerfile.","example":"/Dockerfile"},"dockerWorkDir":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*$","description":"The working directory of the Dockerfile.","example":"/"},"dockerfileTarget":{"type":"string","pattern":"^[a-zA-Z0-9-_]+$","description":"If your Dockerfile contains multiple build stages, you can specify the target stage by entering its name here."}},"additionalProperties":false,"description":"Overrides for docker build settings."}},"additionalProperties":false,"description":"An optional object that may specify several different overrides on the build level."}},"additionalProperties":false,"description":"Build from git repository","x-required":true}],"description":"Build type"}}},"required":true},"x-nf-permission-required":"Project > Services > Deployment > Deploy Build","x-nf-team-scoped":true,"x-nf-cli-command":["start","service","build"]},"v1-projects--projectId--services--serviceId--build-arguments-get":{"operationId":"getProjectsServicesServiceidBuildArguments","summary":"Get service build arguments","description":"Gets the build arguments of the given service. If the API key does not have the permission 'Project > Secrets > General > Read', secrets inherited from secret groups will not be displayed.","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"serviceId","type":"string","required":true,"description":"ID of the service","example":"example-service","in":"path","schema":{"name":"serviceId","type":"string","required":true,"description":"ID of the service","example":"example-service","in":"path"}},{"name":"show","type":"string","enum":["this","inherited","all"],"description":"Which secrets to display - if set to `this` only the group's secrets are displayed, if set to `inherited` only secrets from linked addons are displayed, if set to `all` or not provided, both are displayed.","example":"all","in":"query","schema":{"name":"show","type":"string","enum":["this","inherited","all"],"description":"Which secrets to display - if set to `this` only the group's secrets are displayed, if set to `inherited` only secrets from linked addons are displayed, if set to `all` or not provided, both are displayed.","example":"all","in":"query"}},{"name":"replaceTemplatedValues","type":"string","enum":["true"],"description":"If templated secrets should be replaced with their inferred value rather than returned as template strings.","example":"true","in":"query","schema":{"name":"replaceTemplatedValues","type":"string","enum":["true"],"description":"If templated secrets should be replaced with their inferred value rather than returned as template strings.","example":"true","in":"query"}}],"responses":{"200":{"description":"The build arguments for the service.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"buildArguments":{"type":"object","properties":{},"additionalProperties":false,"description":"The build arguments, formatted as a JSON object. If the `show` parameter is set to `this`, this will only contain secrets saved to this entity. If the `show` parameter is set to `inherited`, this will only contain secrets inherited from linked secret groups. Otherwise, this will contain both.","example":{"ARGUMENT_1":"abcdef","ARGUMENT_2":"12345"}},"buildFiles":{"type":"object","properties":{},"additionalProperties":false,"description":"The build secret files, formatted as a JSON object. If the `show` parameter is set to `this`, this will only contain files saved to this entity. If the `show` parameter is set to `inherited`, this will only contain files inherited from linked secret groups. Otherwise, this will contain both.","example":{"/dir/fileName":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}}},"required":["buildArguments","buildFiles"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Services","project"],"security":[],"deprecated":true,"x-nf-permission-required":"Project > Secrets > Services > Read","x-nf-team-scoped":true,"x-nf-cli-command":["get","service","build-arguments"],"x-nf-deprecation-replacement":"/services/get-service","x-nf-deprecation-message":"Requests should instead use the relevant GET endpoint."},"v1-projects--projectId--services--serviceId--build-arguments-get-team-scoped":{"operationId":"getProjectsServicesServiceidBuildArguments","summary":"Get service build arguments","description":"Gets the build arguments of the given service. If the API key does not have the permission 'Project > Secrets > General > Read', secrets inherited from secret groups will not be displayed.","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"serviceId","type":"string","required":true,"description":"ID of the service","example":"example-service","in":"path","schema":{"name":"serviceId","type":"string","required":true,"description":"ID of the service","example":"example-service","in":"path"}},{"name":"show","type":"string","enum":["this","inherited","all"],"description":"Which secrets to display - if set to `this` only the group's secrets are displayed, if set to `inherited` only secrets from linked addons are displayed, if set to `all` or not provided, both are displayed.","example":"all","in":"query","schema":{"name":"show","type":"string","enum":["this","inherited","all"],"description":"Which secrets to display - if set to `this` only the group's secrets are displayed, if set to `inherited` only secrets from linked addons are displayed, if set to `all` or not provided, both are displayed.","example":"all","in":"query"}},{"name":"replaceTemplatedValues","type":"string","enum":["true"],"description":"If templated secrets should be replaced with their inferred value rather than returned as template strings.","example":"true","in":"query","schema":{"name":"replaceTemplatedValues","type":"string","enum":["true"],"description":"If templated secrets should be replaced with their inferred value rather than returned as template strings.","example":"true","in":"query"}}],"responses":{"200":{"description":"The build arguments for the service.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"buildArguments":{"type":"object","properties":{},"additionalProperties":false,"description":"The build arguments, formatted as a JSON object. If the `show` parameter is set to `this`, this will only contain secrets saved to this entity. If the `show` parameter is set to `inherited`, this will only contain secrets inherited from linked secret groups. Otherwise, this will contain both.","example":{"ARGUMENT_1":"abcdef","ARGUMENT_2":"12345"}},"buildFiles":{"type":"object","properties":{},"additionalProperties":false,"description":"The build secret files, formatted as a JSON object. If the `show` parameter is set to `this`, this will only contain files saved to this entity. If the `show` parameter is set to `inherited`, this will only contain files inherited from linked secret groups. Otherwise, this will contain both.","example":{"/dir/fileName":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}}},"required":["buildArguments","buildFiles"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Services","project"],"security":[],"deprecated":true,"x-nf-permission-required":"Project > Secrets > Services > Read","x-nf-team-scoped":true,"x-nf-cli-command":["get","service","build-arguments"],"x-nf-deprecation-replacement":"/services/get-service","x-nf-deprecation-message":"Requests should instead use the relevant GET endpoint."},"v1-projects--projectId--services--serviceId--build-arguments-post":{"operationId":"postProjectsServicesServiceidBuildArguments","summary":"Edit service build arguments","description":"Sets the build arguments for the given service.","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"serviceId","type":"string","required":true,"description":"ID of the service","example":"example-service","in":"path","schema":{"name":"serviceId","type":"string","required":true,"description":"ID of the service","example":"example-service","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Services","project"],"security":[],"deprecated":true,"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"buildArguments":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"An object containing the all of the build arguments to set for the service. Keys may only contain letters, numbers, hyphens, forward slashes and dots.","example":{"ARGUMENT_1":"abcdef","ARGUMENT_2":"12345"}},"buildFiles":{"type":"object","properties":{},"description":"Secret files as JSON object, encrypted at rest. File path must be absolute","example":{"/dir/fileName":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"dockerSecretMounts":{"type":"object","properties":{},"description":"Docker secret mount contents as JSON object, encrypted at rest. Must be a valid Docker secret mount identifier","example":{"example-secret-mount_1":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}}},"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Project > Secrets > Services > Update","x-nf-team-scoped":true,"x-nf-cli-command":["update","service","build-arguments"],"x-nf-deprecation-replacement":"/services/patch-combined-service","x-nf-deprecation-message":"Requests should instead use the relevant PATCH endpoint."},"v1-projects--projectId--services--serviceId--build-arguments-post-team-scoped":{"operationId":"postProjectsServicesServiceidBuildArguments","summary":"Edit service build arguments","description":"Sets the build arguments for the given service.","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"serviceId","type":"string","required":true,"description":"ID of the service","example":"example-service","in":"path","schema":{"name":"serviceId","type":"string","required":true,"description":"ID of the service","example":"example-service","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Services","project"],"security":[],"deprecated":true,"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"buildArguments":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"An object containing the all of the build arguments to set for the service. Keys may only contain letters, numbers, hyphens, forward slashes and dots.","example":{"ARGUMENT_1":"abcdef","ARGUMENT_2":"12345"}},"buildFiles":{"type":"object","properties":{},"description":"Secret files as JSON object, encrypted at rest. File path must be absolute","example":{"/dir/fileName":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"dockerSecretMounts":{"type":"object","properties":{},"description":"Docker secret mount contents as JSON object, encrypted at rest. Must be a valid Docker secret mount identifier","example":{"example-secret-mount_1":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}}},"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Project > Secrets > Services > Update","x-nf-team-scoped":true,"x-nf-cli-command":["update","service","build-arguments"],"x-nf-deprecation-replacement":"/services/patch-combined-service","x-nf-deprecation-message":"Requests should instead use the relevant PATCH endpoint."},"v1-projects--projectId--services--serviceId--build-arguments-details-get":{"operationId":"getProjectsServicesServiceidBuildArgumentsDetails","summary":"Get service build arguments details","description":"Get details about the build arguments accessible by the given service. Also requires the permission 'Project > Secrets > General > Read'","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"serviceId","type":"string","required":true,"description":"ID of the service","example":"example-service","in":"path","schema":{"name":"serviceId","type":"string","required":true,"description":"ID of the service","example":"example-service","in":"path"}}],"responses":{"200":{"description":"Details of the build arguments of the service.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"buildArguments":{"type":"object","properties":{"MY_VARIABLE_NAME":{"type":"object","properties":{"value":{"description":"The value of the secret.","example":"abcdef123456"},"inheritedFrom":{"type":"string","description":"The ID of the secret group the secret is inherited from, if applicable.","example":"example-secret"},"addonId":{"type":"string","description":"The ID of the addon the secret is inherited from, if applicable.","example":"example-addon"},"priority":{"type":"integer","description":"The priority of the secret group the secret is inherited from, if applicable.","example":10},"overriding":{"type":"array","items":{"type":"object","properties":{"value":{"description":"The value of the secret.","example":"ffffffffffff"},"inheritedFrom":{"type":"string","description":"The ID of the secret group the secret is inherited from.","example":"secret-2"},"addonId":{"type":"string","description":"The ID of the addon the secret is inherited from, if applicable.","example":"addon-2"},"priority":{"type":"integer","description":"The priority of the secret group the secret is inherited from.","example":0}},"required":["value","inheritedFrom","priority"],"additionalProperties":false,"description":"Data about an overridden secret."},"description":"An array containing data about other places the secret has been inherited from, but that are not being used as a secret with the same key exists with a higher priority."}},"required":["value","overriding"],"additionalProperties":false,"description":"A stored secret and details about it and its value. This can have the name of any saved secret."}},"description":"Details about all the secrets accessible by the service."},"buildFiles":{"type":"object","properties":{"/dir/fileName":{"type":"object","properties":{"value":{"type":"object","properties":{"data":{"type":"string","description":"base64 encoded string of the file contents","example":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU="},"encoding":{"type":"string","description":"Original encoding of the file","example":"utf-8"}},"additionalProperties":false,"description":"The value of the secret.","example":{"/dir/fileName":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"inheritedFrom":{"type":"string","description":"The ID of the secret group the secret is inherited from, if applicable.","example":"example-secret"},"priority":{"type":"integer","description":"The priority of the secret group the secret is inherited from, if applicable.","example":10},"overriding":{"type":"array","items":{"type":"object","properties":{"value":{"description":"The value of the secret.","example":"ffffffffffff"},"inheritedFrom":{"type":"string","description":"The ID of the secret group the secret is inherited from.","example":"secret-2"},"priority":{"type":"integer","description":"The priority of the secret group the secret is inherited from.","example":0}},"required":["value","inheritedFrom","priority"],"additionalProperties":false,"description":"Data about an overridden secret."},"description":"An array containing data about other places the file has been inherited from, but that are not being used as a secret with the same file path exists with a higher priority."}},"required":["value","overriding"],"additionalProperties":false,"description":"A stored secret and details about it and its value. This can have the name of any saved secret."}},"description":"Details about all the secrets accessible by the service."}},"required":["buildArguments","buildFiles"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Services","project"],"security":[],"deprecated":true,"x-nf-permission-required":"Project > Secrets > Services > Read","x-nf-team-scoped":true,"x-nf-cli-command":["get","service","build-argument-details"],"x-nf-deprecation-replacement":"/services/get-service","x-nf-deprecation-message":"Requests should instead use the relevant GET endpoint."},"v1-projects--projectId--services--serviceId--build-arguments-details-get-team-scoped":{"operationId":"getProjectsServicesServiceidBuildArgumentsDetails","summary":"Get service build arguments details","description":"Get details about the build arguments accessible by the given service. Also requires the permission 'Project > Secrets > General > Read'","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"serviceId","type":"string","required":true,"description":"ID of the service","example":"example-service","in":"path","schema":{"name":"serviceId","type":"string","required":true,"description":"ID of the service","example":"example-service","in":"path"}}],"responses":{"200":{"description":"Details of the build arguments of the service.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"buildArguments":{"type":"object","properties":{"MY_VARIABLE_NAME":{"type":"object","properties":{"value":{"description":"The value of the secret.","example":"abcdef123456"},"inheritedFrom":{"type":"string","description":"The ID of the secret group the secret is inherited from, if applicable.","example":"example-secret"},"addonId":{"type":"string","description":"The ID of the addon the secret is inherited from, if applicable.","example":"example-addon"},"priority":{"type":"integer","description":"The priority of the secret group the secret is inherited from, if applicable.","example":10},"overriding":{"type":"array","items":{"type":"object","properties":{"value":{"description":"The value of the secret.","example":"ffffffffffff"},"inheritedFrom":{"type":"string","description":"The ID of the secret group the secret is inherited from.","example":"secret-2"},"addonId":{"type":"string","description":"The ID of the addon the secret is inherited from, if applicable.","example":"addon-2"},"priority":{"type":"integer","description":"The priority of the secret group the secret is inherited from.","example":0}},"required":["value","inheritedFrom","priority"],"additionalProperties":false,"description":"Data about an overridden secret."},"description":"An array containing data about other places the secret has been inherited from, but that are not being used as a secret with the same key exists with a higher priority."}},"required":["value","overriding"],"additionalProperties":false,"description":"A stored secret and details about it and its value. This can have the name of any saved secret."}},"description":"Details about all the secrets accessible by the service."},"buildFiles":{"type":"object","properties":{"/dir/fileName":{"type":"object","properties":{"value":{"type":"object","properties":{"data":{"type":"string","description":"base64 encoded string of the file contents","example":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU="},"encoding":{"type":"string","description":"Original encoding of the file","example":"utf-8"}},"additionalProperties":false,"description":"The value of the secret.","example":{"/dir/fileName":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"inheritedFrom":{"type":"string","description":"The ID of the secret group the secret is inherited from, if applicable.","example":"example-secret"},"priority":{"type":"integer","description":"The priority of the secret group the secret is inherited from, if applicable.","example":10},"overriding":{"type":"array","items":{"type":"object","properties":{"value":{"description":"The value of the secret.","example":"ffffffffffff"},"inheritedFrom":{"type":"string","description":"The ID of the secret group the secret is inherited from.","example":"secret-2"},"priority":{"type":"integer","description":"The priority of the secret group the secret is inherited from.","example":0}},"required":["value","inheritedFrom","priority"],"additionalProperties":false,"description":"Data about an overridden secret."},"description":"An array containing data about other places the file has been inherited from, but that are not being used as a secret with the same file path exists with a higher priority."}},"required":["value","overriding"],"additionalProperties":false,"description":"A stored secret and details about it and its value. This can have the name of any saved secret."}},"description":"Details about all the secrets accessible by the service."}},"required":["buildArguments","buildFiles"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Services","project"],"security":[],"deprecated":true,"x-nf-permission-required":"Project > Secrets > Services > Read","x-nf-team-scoped":true,"x-nf-cli-command":["get","service","build-argument-details"],"x-nf-deprecation-replacement":"/services/get-service","x-nf-deprecation-message":"Requests should instead use the relevant GET endpoint."},"v1-projects--projectId--services--serviceId--build-cache-delete":{"operationId":"deleteProjectsServicesServiceidBuildCache","summary":"Clear the build cache of a service","description":"Clears the build cache of a given combined or build service.","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"serviceId","type":"string","required":true,"description":"ID of the service","example":"example-service","in":"path","schema":{"name":"serviceId","type":"string","required":true,"description":"ID of the service","example":"example-service","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Services","project"],"security":[],"x-nf-permission-required":"Project > Services > General > Update","x-nf-team-scoped":true,"x-nf-cli-command":["reset","service","build-cache"]},"v1-projects--projectId--services--serviceId--build-cache-delete-team-scoped":{"operationId":"deleteProjectsServicesServiceidBuildCache","summary":"Clear the build cache of a service","description":"Clears the build cache of a given combined or build service.","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"serviceId","type":"string","required":true,"description":"ID of the service","example":"example-service","in":"path","schema":{"name":"serviceId","type":"string","required":true,"description":"ID of the service","example":"example-service","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Services","project"],"security":[],"x-nf-permission-required":"Project > Services > General > Update","x-nf-team-scoped":true,"x-nf-cli-command":["reset","service","build-cache"]},"v1-projects--projectId--services--serviceId--build-logs-get":{"operationId":"getProjectsServicesServiceidBuildLogs","summary":"Get service build logs","description":"Get logs for a service build","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"serviceId","type":"string","required":true,"description":"ID of the service","example":"example-service","in":"path","schema":{"name":"serviceId","type":"string","required":true,"description":"ID of the service","example":"example-service","in":"path"}},{"name":"buildId","type":"string","description":"Selects logs for specific build.","example":"fantastic-build-2345","in":"query","schema":{"name":"buildId","type":"string","description":"Selects logs for specific build.","example":"fantastic-build-2345","in":"query"}},{"name":"queryType","type":"string","enum":["range"],"description":"`range` selects a log range and returns immediately.","example":"range","default":"range","in":"query","schema":{"name":"queryType","type":"string","enum":["range"],"description":"`range` selects a log range and returns immediately.","example":"range","default":"range","in":"query"}},{"name":"startTime","type":"string","format":"date-time","description":"Fetch logs generated after this timestamp.","example":"2023-02-16T14:00:00.000Z","in":"query","schema":{"name":"startTime","type":"string","format":"date-time","description":"Fetch logs generated after this timestamp.","example":"2023-02-16T14:00:00.000Z","in":"query"}},{"name":"endTime","type":"string","format":"date-time","description":"Fetch logs generated before this timestamp.","example":"2023-02-16T15:00:00.000Z","in":"query","schema":{"name":"endTime","type":"string","format":"date-time","description":"Fetch logs generated before this timestamp.","example":"2023-02-16T15:00:00.000Z","in":"query"}},{"name":"duration","type":"integer","description":"Range duration in seconds. If set, only one of `startTime` or `endTime` can be set.","example":600,"in":"query","schema":{"name":"duration","type":"integer","description":"Range duration in seconds. If set, only one of `startTime` or `endTime` can be set.","example":600,"in":"query"}},{"name":"lineLimit","type":"number","format":"float","minimum":0,"maximum":1000,"description":"Number of log lines to fetch.","example":250,"in":"query","schema":{"name":"lineLimit","type":"number","format":"float","minimum":0,"maximum":1000,"description":"Number of log lines to fetch.","example":250,"in":"query"}},{"name":"direction","type":"string","enum":["backward","forward"],"description":"Ordering of log lines","example":"backward","default":"backward","in":"query","schema":{"name":"direction","type":"string","enum":["backward","forward"],"description":"Ordering of log lines","example":"backward","default":"backward","in":"query"}},{"name":"textIncludes","type":"string","minLength":1,"maxLength":100,"description":"Filter log lines to match this search string","example":"myvalue","in":"query","schema":{"name":"textIncludes","type":"string","minLength":1,"maxLength":100,"description":"Filter log lines to match this search string","example":"myvalue","in":"query"}},{"name":"textNotIncludes","type":"string","minLength":1,"maxLength":100,"description":"Filter log lines to not match this search string","example":"myvalue","in":"query","schema":{"name":"textNotIncludes","type":"string","minLength":1,"maxLength":100,"description":"Filter log lines to not match this search string","example":"myvalue","in":"query"}},{"name":"regexIncludes","type":"string","minLength":1,"maxLength":100,"description":"Filter log lines to match this regular expression","example":"my.*value","in":"query","schema":{"name":"regexIncludes","type":"string","minLength":1,"maxLength":100,"description":"Filter log lines to match this regular expression","example":"my.*value","in":"query"}},{"name":"regexNotIncludes","type":"string","minLength":1,"maxLength":100,"description":"Filter log lines to not match this regular expression","example":"my.*value","in":"query","schema":{"name":"regexNotIncludes","type":"string","minLength":1,"maxLength":100,"description":"Filter log lines to not match this regular expression","example":"my.*value","in":"query"}}],"responses":{"200":{"description":"List of logs values","schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"containerId":{"type":"string"},"log":{"example":"stdout F This is a log line"},"ts":{"type":"string","format":"date-time","example":"2023-03-21T15:01:17.310Z"}},"required":["containerId","log","ts"],"additionalProperties":false},"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Services","project"],"security":[],"x-nf-link":"undefined/v1/api/log-tailing","x-nf-link-description":"For more information on live log tailing, see our documentation page.","x-nf-permission-required":"Project > Services > Deployment > View Instance Logs","x-nf-team-scoped":true,"x-nf-cli-command":["get","service","build-logs"]},"v1-projects--projectId--services--serviceId--build-logs-get-team-scoped":{"operationId":"getProjectsServicesServiceidBuildLogs","summary":"Get service build logs","description":"Get logs for a service build","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"serviceId","type":"string","required":true,"description":"ID of the service","example":"example-service","in":"path","schema":{"name":"serviceId","type":"string","required":true,"description":"ID of the service","example":"example-service","in":"path"}},{"name":"buildId","type":"string","description":"Selects logs for specific build.","example":"fantastic-build-2345","in":"query","schema":{"name":"buildId","type":"string","description":"Selects logs for specific build.","example":"fantastic-build-2345","in":"query"}},{"name":"queryType","type":"string","enum":["range"],"description":"`range` selects a log range and returns immediately.","example":"range","default":"range","in":"query","schema":{"name":"queryType","type":"string","enum":["range"],"description":"`range` selects a log range and returns immediately.","example":"range","default":"range","in":"query"}},{"name":"startTime","type":"string","format":"date-time","description":"Fetch logs generated after this timestamp.","example":"2023-02-16T14:00:00.000Z","in":"query","schema":{"name":"startTime","type":"string","format":"date-time","description":"Fetch logs generated after this timestamp.","example":"2023-02-16T14:00:00.000Z","in":"query"}},{"name":"endTime","type":"string","format":"date-time","description":"Fetch logs generated before this timestamp.","example":"2023-02-16T15:00:00.000Z","in":"query","schema":{"name":"endTime","type":"string","format":"date-time","description":"Fetch logs generated before this timestamp.","example":"2023-02-16T15:00:00.000Z","in":"query"}},{"name":"duration","type":"integer","description":"Range duration in seconds. If set, only one of `startTime` or `endTime` can be set.","example":600,"in":"query","schema":{"name":"duration","type":"integer","description":"Range duration in seconds. If set, only one of `startTime` or `endTime` can be set.","example":600,"in":"query"}},{"name":"lineLimit","type":"number","format":"float","minimum":0,"maximum":1000,"description":"Number of log lines to fetch.","example":250,"in":"query","schema":{"name":"lineLimit","type":"number","format":"float","minimum":0,"maximum":1000,"description":"Number of log lines to fetch.","example":250,"in":"query"}},{"name":"direction","type":"string","enum":["backward","forward"],"description":"Ordering of log lines","example":"backward","default":"backward","in":"query","schema":{"name":"direction","type":"string","enum":["backward","forward"],"description":"Ordering of log lines","example":"backward","default":"backward","in":"query"}},{"name":"textIncludes","type":"string","minLength":1,"maxLength":100,"description":"Filter log lines to match this search string","example":"myvalue","in":"query","schema":{"name":"textIncludes","type":"string","minLength":1,"maxLength":100,"description":"Filter log lines to match this search string","example":"myvalue","in":"query"}},{"name":"textNotIncludes","type":"string","minLength":1,"maxLength":100,"description":"Filter log lines to not match this search string","example":"myvalue","in":"query","schema":{"name":"textNotIncludes","type":"string","minLength":1,"maxLength":100,"description":"Filter log lines to not match this search string","example":"myvalue","in":"query"}},{"name":"regexIncludes","type":"string","minLength":1,"maxLength":100,"description":"Filter log lines to match this regular expression","example":"my.*value","in":"query","schema":{"name":"regexIncludes","type":"string","minLength":1,"maxLength":100,"description":"Filter log lines to match this regular expression","example":"my.*value","in":"query"}},{"name":"regexNotIncludes","type":"string","minLength":1,"maxLength":100,"description":"Filter log lines to not match this regular expression","example":"my.*value","in":"query","schema":{"name":"regexNotIncludes","type":"string","minLength":1,"maxLength":100,"description":"Filter log lines to not match this regular expression","example":"my.*value","in":"query"}}],"responses":{"200":{"description":"List of logs values","schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"containerId":{"type":"string"},"log":{"example":"stdout F This is a log line"},"ts":{"type":"string","format":"date-time","example":"2023-03-21T15:01:17.310Z"}},"required":["containerId","log","ts"],"additionalProperties":false},"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Services","project"],"security":[],"x-nf-link":"undefined/v1/api/log-tailing","x-nf-link-description":"For more information on live log tailing, see our documentation page.","x-nf-permission-required":"Project > Services > Deployment > View Instance Logs","x-nf-team-scoped":true,"x-nf-cli-command":["get","service","build-logs"]},"v1-projects--projectId--services--serviceId--build-metrics-get":{"operationId":"getProjectsServicesServiceidBuildMetrics","summary":"Get service build metrics","description":"Get metrics for a service build","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"serviceId","type":"string","required":true,"description":"ID of the service","example":"example-service","in":"path","schema":{"name":"serviceId","type":"string","required":true,"description":"ID of the service","example":"example-service","in":"path"}},{"name":"buildId","type":"string","description":"Selects metrics for specific build.","examples":["fantastic-build-2345","fantastic-build-2345"],"in":"query","schema":{"name":"buildId","type":"string","description":"Selects metrics for specific build.","examples":["fantastic-build-2345","fantastic-build-2345"],"in":"query"}},{"name":"queryType","type":"string","enum":["range","single"],"description":"Selects metrics for specified timestamp.","examples":["range","single"],"default":"single","in":"query","schema":{"name":"queryType","type":"string","enum":["range","single"],"description":"Selects metrics for specified timestamp.","examples":["range","single"],"default":"single","in":"query"}},{"name":"metricTypes","type":"string","enum":["cpu","memory","networkIngress","networkEgress","tcpConnectionsOpen","diskUsage","requests","http4xxResponses","http5xxResponses","bandwidth","bandwidthVolume"],"description":"Type of metric. Multiple metric types can be selected by specifying the query parameter repeatedly.","in":"query","schema":{"name":"metricTypes","type":"string","enum":["cpu","memory","networkIngress","networkEgress","tcpConnectionsOpen","diskUsage","requests","http4xxResponses","http5xxResponses","bandwidth","bandwidthVolume"],"description":"Type of metric. Multiple metric types can be selected by specifying the query parameter repeatedly.","in":"query"}},{"name":"startTime","type":"string","format":"date-time","description":"Fetch metrics generated after this timestamp. Only valid for queryType: `range`.","example":"2023-02-16T14:00:00.000Z","in":"query","schema":{"name":"startTime","type":"string","format":"date-time","description":"Fetch metrics generated after this timestamp. Only valid for queryType: `range`.","example":"2023-02-16T14:00:00.000Z","in":"query"}},{"name":"endTime","type":"string","format":"date-time","description":"Fetch metrics generated before this timestamp. Only valid for queryType: `range`.","example":"2023-02-16T15:00:00.000Z","in":"query","schema":{"name":"endTime","type":"string","format":"date-time","description":"Fetch metrics generated before this timestamp. Only valid for queryType: `range`.","example":"2023-02-16T15:00:00.000Z","in":"query"}},{"name":"duration","type":"integer","description":"Range duration in seconds. If set, only one of `startTime` or `endTime` can be set.","example":600,"in":"query","schema":{"name":"duration","type":"integer","description":"Range duration in seconds. If set, only one of `startTime` or `endTime` can be set.","example":600,"in":"query"}},{"name":"time","type":"string","format":"date-time","description":"Fetch metrics at this timestamp. If not provided will use current time. Only valid for queryType: `single`.","example":"2023-02-16T14:00:00.000Z","in":"query","schema":{"name":"time","type":"string","format":"date-time","description":"Fetch metrics at this timestamp. If not provided will use current time. Only valid for queryType: `single`.","example":"2023-02-16T14:00:00.000Z","in":"query"}}],"responses":{"200":{"description":"List of metrics values","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"cpu":{"type":"object","properties":{"metricInfo":{"type":"object","properties":{"metricId":{"type":"string","enum":["cpu","memory","networkIngress","networkEgress","tcpConnectionsOpen","diskUsage","requests","http4xxResponses","http5xxResponses","bandwidth","bandwidthVolume"],"description":"Type of metric to fetch"},"metricUnit":{"type":"string","enum":["pct","vCPU","mb","kbps","rps","count"],"example":"pct"},"metricResolution":{"type":"number","format":"float","example":10}},"required":["metricId","metricUnit"],"additionalProperties":false},"values":{"type":"array","items":{"type":"object","properties":{"metadata":{"type":"object","properties":{"containerId":{"type":"string","example":"nginx-669cc865b7-5458n"},"volumeId":{"type":"string","example":"data-volume-1"}},"required":["containerId"],"additionalProperties":false},"data":{"type":"array","items":{"type":"object","properties":{"value":{"type":"number","format":"float","example":0.5},"ts":{"type":"string","format":"date-time","example":"2023-03-21T15:01:17.310Z"}},"required":["value","ts"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}},"required":["values"],"additionalProperties":false},"memory":{"type":"object","properties":{"metricInfo":{"type":"object","properties":{"metricId":{"type":"string","enum":["cpu","memory","networkIngress","networkEgress","tcpConnectionsOpen","diskUsage","requests","http4xxResponses","http5xxResponses","bandwidth","bandwidthVolume"],"description":"Type of metric to fetch"},"metricUnit":{"type":"string","enum":["pct","vCPU","mb","kbps","rps","count"],"example":"pct"},"metricResolution":{"type":"number","format":"float","example":10}},"required":["metricId","metricUnit"],"additionalProperties":false},"values":{"type":"array","items":{"type":"object","properties":{"metadata":{"type":"object","properties":{"containerId":{"type":"string","example":"nginx-669cc865b7-5458n"},"volumeId":{"type":"string","example":"data-volume-1"}},"required":["containerId"],"additionalProperties":false},"data":{"type":"array","items":{"type":"object","properties":{"value":{"type":"number","format":"float","example":0.5},"ts":{"type":"string","format":"date-time","example":"2023-03-21T15:01:17.310Z"}},"required":["value","ts"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}},"required":["values"],"additionalProperties":false},"networkIngress":{"type":"object","properties":{"metricInfo":{"type":"object","properties":{"metricId":{"type":"string","enum":["cpu","memory","networkIngress","networkEgress","tcpConnectionsOpen","diskUsage","requests","http4xxResponses","http5xxResponses","bandwidth","bandwidthVolume"],"description":"Type of metric to fetch"},"metricUnit":{"type":"string","enum":["pct","vCPU","mb","kbps","rps","count"],"example":"pct"},"metricResolution":{"type":"number","format":"float","example":10}},"required":["metricId","metricUnit"],"additionalProperties":false},"values":{"type":"array","items":{"type":"object","properties":{"metadata":{"type":"object","properties":{"containerId":{"type":"string","example":"nginx-669cc865b7-5458n"},"volumeId":{"type":"string","example":"data-volume-1"}},"required":["containerId"],"additionalProperties":false},"data":{"type":"array","items":{"type":"object","properties":{"value":{"type":"number","format":"float","example":0.5},"ts":{"type":"string","format":"date-time","example":"2023-03-21T15:01:17.310Z"}},"required":["value","ts"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}},"required":["values"],"additionalProperties":false},"networkEgress":{"type":"object","properties":{"metricInfo":{"type":"object","properties":{"metricId":{"type":"string","enum":["cpu","memory","networkIngress","networkEgress","tcpConnectionsOpen","diskUsage","requests","http4xxResponses","http5xxResponses","bandwidth","bandwidthVolume"],"description":"Type of metric to fetch"},"metricUnit":{"type":"string","enum":["pct","vCPU","mb","kbps","rps","count"],"example":"pct"},"metricResolution":{"type":"number","format":"float","example":10}},"required":["metricId","metricUnit"],"additionalProperties":false},"values":{"type":"array","items":{"type":"object","properties":{"metadata":{"type":"object","properties":{"containerId":{"type":"string","example":"nginx-669cc865b7-5458n"},"volumeId":{"type":"string","example":"data-volume-1"}},"required":["containerId"],"additionalProperties":false},"data":{"type":"array","items":{"type":"object","properties":{"value":{"type":"number","format":"float","example":0.5},"ts":{"type":"string","format":"date-time","example":"2023-03-21T15:01:17.310Z"}},"required":["value","ts"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}},"required":["values"],"additionalProperties":false},"tcpConnectionsOpen":{"type":"object","properties":{"metricInfo":{"type":"object","properties":{"metricId":{"type":"string","enum":["cpu","memory","networkIngress","networkEgress","tcpConnectionsOpen","diskUsage","requests","http4xxResponses","http5xxResponses","bandwidth","bandwidthVolume"],"description":"Type of metric to fetch"},"metricUnit":{"type":"string","enum":["pct","vCPU","mb","kbps","rps","count"],"example":"pct"},"metricResolution":{"type":"number","format":"float","example":10}},"required":["metricId","metricUnit"],"additionalProperties":false},"values":{"type":"array","items":{"type":"object","properties":{"metadata":{"type":"object","properties":{"containerId":{"type":"string","example":"nginx-669cc865b7-5458n"},"volumeId":{"type":"string","example":"data-volume-1"}},"required":["containerId"],"additionalProperties":false},"data":{"type":"array","items":{"type":"object","properties":{"value":{"type":"number","format":"float","example":0.5},"ts":{"type":"string","format":"date-time","example":"2023-03-21T15:01:17.310Z"}},"required":["value","ts"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}},"required":["values"],"additionalProperties":false},"diskUsage":{"type":"object","properties":{"metricInfo":{"type":"object","properties":{"metricId":{"type":"string","enum":["cpu","memory","networkIngress","networkEgress","tcpConnectionsOpen","diskUsage","requests","http4xxResponses","http5xxResponses","bandwidth","bandwidthVolume"],"description":"Type of metric to fetch"},"metricUnit":{"type":"string","enum":["pct","vCPU","mb","kbps","rps","count"],"example":"pct"},"metricResolution":{"type":"number","format":"float","example":10}},"required":["metricId","metricUnit"],"additionalProperties":false},"values":{"type":"array","items":{"type":"object","properties":{"metadata":{"type":"object","properties":{"containerId":{"type":"string","example":"nginx-669cc865b7-5458n"},"volumeId":{"type":"string","example":"data-volume-1"}},"required":["containerId"],"additionalProperties":false},"data":{"type":"array","items":{"type":"object","properties":{"value":{"type":"number","format":"float","example":0.5},"ts":{"type":"string","format":"date-time","example":"2023-03-21T15:01:17.310Z"}},"required":["value","ts"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}},"required":["values"],"additionalProperties":false},"requests":{"type":"object","properties":{"metricInfo":{"type":"object","properties":{"metricId":{"type":"string","enum":["cpu","memory","networkIngress","networkEgress","tcpConnectionsOpen","diskUsage","requests","http4xxResponses","http5xxResponses","bandwidth","bandwidthVolume"],"description":"Type of metric to fetch"},"metricUnit":{"type":"string","enum":["pct","vCPU","mb","kbps","rps","count"],"example":"pct"},"metricResolution":{"type":"number","format":"float","example":10}},"required":["metricId","metricUnit"],"additionalProperties":false},"values":{"type":"array","items":{"type":"object","properties":{"metadata":{"type":"object","properties":{"containerId":{"type":"string","example":"nginx-669cc865b7-5458n"},"volumeId":{"type":"string","example":"data-volume-1"}},"required":["containerId"],"additionalProperties":false},"data":{"type":"array","items":{"type":"object","properties":{"value":{"type":"number","format":"float","example":0.5},"ts":{"type":"string","format":"date-time","example":"2023-03-21T15:01:17.310Z"}},"required":["value","ts"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}},"required":["values"],"additionalProperties":false},"http4xxResponses":{"type":"object","properties":{"metricInfo":{"type":"object","properties":{"metricId":{"type":"string","enum":["cpu","memory","networkIngress","networkEgress","tcpConnectionsOpen","diskUsage","requests","http4xxResponses","http5xxResponses","bandwidth","bandwidthVolume"],"description":"Type of metric to fetch"},"metricUnit":{"type":"string","enum":["pct","vCPU","mb","kbps","rps","count"],"example":"pct"},"metricResolution":{"type":"number","format":"float","example":10}},"required":["metricId","metricUnit"],"additionalProperties":false},"values":{"type":"array","items":{"type":"object","properties":{"metadata":{"type":"object","properties":{"containerId":{"type":"string","example":"nginx-669cc865b7-5458n"},"volumeId":{"type":"string","example":"data-volume-1"}},"required":["containerId"],"additionalProperties":false},"data":{"type":"array","items":{"type":"object","properties":{"value":{"type":"number","format":"float","example":0.5},"ts":{"type":"string","format":"date-time","example":"2023-03-21T15:01:17.310Z"}},"required":["value","ts"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}},"required":["values"],"additionalProperties":false},"http5xxResponses":{"type":"object","properties":{"metricInfo":{"type":"object","properties":{"metricId":{"type":"string","enum":["cpu","memory","networkIngress","networkEgress","tcpConnectionsOpen","diskUsage","requests","http4xxResponses","http5xxResponses","bandwidth","bandwidthVolume"],"description":"Type of metric to fetch"},"metricUnit":{"type":"string","enum":["pct","vCPU","mb","kbps","rps","count"],"example":"pct"},"metricResolution":{"type":"number","format":"float","example":10}},"required":["metricId","metricUnit"],"additionalProperties":false},"values":{"type":"array","items":{"type":"object","properties":{"metadata":{"type":"object","properties":{"containerId":{"type":"string","example":"nginx-669cc865b7-5458n"},"volumeId":{"type":"string","example":"data-volume-1"}},"required":["containerId"],"additionalProperties":false},"data":{"type":"array","items":{"type":"object","properties":{"value":{"type":"number","format":"float","example":0.5},"ts":{"type":"string","format":"date-time","example":"2023-03-21T15:01:17.310Z"}},"required":["value","ts"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}},"required":["values"],"additionalProperties":false},"bandwidth":{"type":"object","properties":{"metricInfo":{"type":"object","properties":{"metricId":{"type":"string","enum":["cpu","memory","networkIngress","networkEgress","tcpConnectionsOpen","diskUsage","requests","http4xxResponses","http5xxResponses","bandwidth","bandwidthVolume"],"description":"Type of metric to fetch"},"metricUnit":{"type":"string","enum":["pct","vCPU","mb","kbps","rps","count"],"example":"pct"},"metricResolution":{"type":"number","format":"float","example":10}},"required":["metricId","metricUnit"],"additionalProperties":false},"values":{"type":"array","items":{"type":"object","properties":{"metadata":{"type":"object","properties":{"containerId":{"type":"string","example":"nginx-669cc865b7-5458n"},"volumeId":{"type":"string","example":"data-volume-1"}},"required":["containerId"],"additionalProperties":false},"data":{"type":"array","items":{"type":"object","properties":{"value":{"type":"number","format":"float","example":0.5},"ts":{"type":"string","format":"date-time","example":"2023-03-21T15:01:17.310Z"}},"required":["value","ts"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}},"required":["values"],"additionalProperties":false},"bandwidthVolume":{"type":"object","properties":{"metricInfo":{"type":"object","properties":{"metricId":{"type":"string","enum":["cpu","memory","networkIngress","networkEgress","tcpConnectionsOpen","diskUsage","requests","http4xxResponses","http5xxResponses","bandwidth","bandwidthVolume"],"description":"Type of metric to fetch"},"metricUnit":{"type":"string","enum":["pct","vCPU","mb","kbps","rps","count"],"example":"pct"},"metricResolution":{"type":"number","format":"float","example":10}},"required":["metricId","metricUnit"],"additionalProperties":false},"values":{"type":"array","items":{"type":"object","properties":{"metadata":{"type":"object","properties":{"containerId":{"type":"string","example":"nginx-669cc865b7-5458n"},"volumeId":{"type":"string","example":"data-volume-1"}},"required":["containerId"],"additionalProperties":false},"data":{"type":"array","items":{"type":"object","properties":{"value":{"type":"number","format":"float","example":0.5},"ts":{"type":"string","format":"date-time","example":"2023-03-21T15:01:17.310Z"}},"required":["value","ts"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}},"required":["values"],"additionalProperties":false}},"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Services","project"],"security":[],"x-nf-jsclient":[{"title":"Range","description":"Query over a range","schema":{"type":"object","properties":{"buildId":{"type":"string","description":"Selects metrics for specific build.","example":"fantastic-build-2345"},"metricTypes":{"type":"string","enum":["cpu","memory","networkIngress","networkEgress","tcpConnectionsOpen","diskUsage","requests","http4xxResponses","http5xxResponses","bandwidth","bandwidthVolume"],"description":"Type of metric. Multiple metric types can be selected by specifying the query parameter repeatedly."},"startTime":{"type":"string","format":"date-time","description":"Fetch metrics generated after this timestamp. Only valid for queryType: `range`.","example":"2023-02-16T14:00:00.000Z"},"endTime":{"type":"string","format":"date-time","description":"Fetch metrics generated before this timestamp. Only valid for queryType: `range`.","example":"2023-02-16T15:00:00.000Z"},"duration":{"type":"integer","description":"Range duration in seconds. If set, only one of `startTime` or `endTime` can be set.","example":600}},"additionalProperties":false},"x-nf-cli-command":["get","service","build-metrics-range"]},{"title":"Single","description":"Query a specific timestamp","schema":{"type":"object","properties":{"buildId":{"type":"string","description":"Selects metrics for specific build.","example":"fantastic-build-2345"},"metricTypes":{"type":"string","enum":["cpu","memory","networkIngress","networkEgress","tcpConnectionsOpen","diskUsage","requests","http4xxResponses","http5xxResponses","bandwidth","bandwidthVolume"],"description":"Type of metric. Multiple metric types can be selected by specifying the query parameter repeatedly."},"timestamp":{"type":"string","format":"date-time","description":"Fetch metrics at this timestamp. If not provided will use current time. Only valid for queryType: `single`.","example":"2023-02-16T14:00:00.000Z"}},"additionalProperties":false},"x-nf-cli-command":["get","service","build-metrics"]}],"x-nf-permission-required":"Project > Services > Deployment > View Instance Metrics","x-nf-team-scoped":true,"x-nf-cli-command":["get","service","build-metrics"]},"v1-projects--projectId--services--serviceId--build-metrics-get-team-scoped":{"operationId":"getProjectsServicesServiceidBuildMetrics","summary":"Get service build metrics","description":"Get metrics for a service build","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"serviceId","type":"string","required":true,"description":"ID of the service","example":"example-service","in":"path","schema":{"name":"serviceId","type":"string","required":true,"description":"ID of the service","example":"example-service","in":"path"}},{"name":"buildId","type":"string","description":"Selects metrics for specific build.","examples":["fantastic-build-2345","fantastic-build-2345"],"in":"query","schema":{"name":"buildId","type":"string","description":"Selects metrics for specific build.","examples":["fantastic-build-2345","fantastic-build-2345"],"in":"query"}},{"name":"queryType","type":"string","enum":["range","single"],"description":"Selects metrics for specified timestamp.","examples":["range","single"],"default":"single","in":"query","schema":{"name":"queryType","type":"string","enum":["range","single"],"description":"Selects metrics for specified timestamp.","examples":["range","single"],"default":"single","in":"query"}},{"name":"metricTypes","type":"string","enum":["cpu","memory","networkIngress","networkEgress","tcpConnectionsOpen","diskUsage","requests","http4xxResponses","http5xxResponses","bandwidth","bandwidthVolume"],"description":"Type of metric. Multiple metric types can be selected by specifying the query parameter repeatedly.","in":"query","schema":{"name":"metricTypes","type":"string","enum":["cpu","memory","networkIngress","networkEgress","tcpConnectionsOpen","diskUsage","requests","http4xxResponses","http5xxResponses","bandwidth","bandwidthVolume"],"description":"Type of metric. Multiple metric types can be selected by specifying the query parameter repeatedly.","in":"query"}},{"name":"startTime","type":"string","format":"date-time","description":"Fetch metrics generated after this timestamp. Only valid for queryType: `range`.","example":"2023-02-16T14:00:00.000Z","in":"query","schema":{"name":"startTime","type":"string","format":"date-time","description":"Fetch metrics generated after this timestamp. Only valid for queryType: `range`.","example":"2023-02-16T14:00:00.000Z","in":"query"}},{"name":"endTime","type":"string","format":"date-time","description":"Fetch metrics generated before this timestamp. Only valid for queryType: `range`.","example":"2023-02-16T15:00:00.000Z","in":"query","schema":{"name":"endTime","type":"string","format":"date-time","description":"Fetch metrics generated before this timestamp. Only valid for queryType: `range`.","example":"2023-02-16T15:00:00.000Z","in":"query"}},{"name":"duration","type":"integer","description":"Range duration in seconds. If set, only one of `startTime` or `endTime` can be set.","example":600,"in":"query","schema":{"name":"duration","type":"integer","description":"Range duration in seconds. If set, only one of `startTime` or `endTime` can be set.","example":600,"in":"query"}},{"name":"time","type":"string","format":"date-time","description":"Fetch metrics at this timestamp. If not provided will use current time. Only valid for queryType: `single`.","example":"2023-02-16T14:00:00.000Z","in":"query","schema":{"name":"time","type":"string","format":"date-time","description":"Fetch metrics at this timestamp. If not provided will use current time. Only valid for queryType: `single`.","example":"2023-02-16T14:00:00.000Z","in":"query"}}],"responses":{"200":{"description":"List of metrics values","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"cpu":{"type":"object","properties":{"metricInfo":{"type":"object","properties":{"metricId":{"type":"string","enum":["cpu","memory","networkIngress","networkEgress","tcpConnectionsOpen","diskUsage","requests","http4xxResponses","http5xxResponses","bandwidth","bandwidthVolume"],"description":"Type of metric to fetch"},"metricUnit":{"type":"string","enum":["pct","vCPU","mb","kbps","rps","count"],"example":"pct"},"metricResolution":{"type":"number","format":"float","example":10}},"required":["metricId","metricUnit"],"additionalProperties":false},"values":{"type":"array","items":{"type":"object","properties":{"metadata":{"type":"object","properties":{"containerId":{"type":"string","example":"nginx-669cc865b7-5458n"},"volumeId":{"type":"string","example":"data-volume-1"}},"required":["containerId"],"additionalProperties":false},"data":{"type":"array","items":{"type":"object","properties":{"value":{"type":"number","format":"float","example":0.5},"ts":{"type":"string","format":"date-time","example":"2023-03-21T15:01:17.310Z"}},"required":["value","ts"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}},"required":["values"],"additionalProperties":false},"memory":{"type":"object","properties":{"metricInfo":{"type":"object","properties":{"metricId":{"type":"string","enum":["cpu","memory","networkIngress","networkEgress","tcpConnectionsOpen","diskUsage","requests","http4xxResponses","http5xxResponses","bandwidth","bandwidthVolume"],"description":"Type of metric to fetch"},"metricUnit":{"type":"string","enum":["pct","vCPU","mb","kbps","rps","count"],"example":"pct"},"metricResolution":{"type":"number","format":"float","example":10}},"required":["metricId","metricUnit"],"additionalProperties":false},"values":{"type":"array","items":{"type":"object","properties":{"metadata":{"type":"object","properties":{"containerId":{"type":"string","example":"nginx-669cc865b7-5458n"},"volumeId":{"type":"string","example":"data-volume-1"}},"required":["containerId"],"additionalProperties":false},"data":{"type":"array","items":{"type":"object","properties":{"value":{"type":"number","format":"float","example":0.5},"ts":{"type":"string","format":"date-time","example":"2023-03-21T15:01:17.310Z"}},"required":["value","ts"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}},"required":["values"],"additionalProperties":false},"networkIngress":{"type":"object","properties":{"metricInfo":{"type":"object","properties":{"metricId":{"type":"string","enum":["cpu","memory","networkIngress","networkEgress","tcpConnectionsOpen","diskUsage","requests","http4xxResponses","http5xxResponses","bandwidth","bandwidthVolume"],"description":"Type of metric to fetch"},"metricUnit":{"type":"string","enum":["pct","vCPU","mb","kbps","rps","count"],"example":"pct"},"metricResolution":{"type":"number","format":"float","example":10}},"required":["metricId","metricUnit"],"additionalProperties":false},"values":{"type":"array","items":{"type":"object","properties":{"metadata":{"type":"object","properties":{"containerId":{"type":"string","example":"nginx-669cc865b7-5458n"},"volumeId":{"type":"string","example":"data-volume-1"}},"required":["containerId"],"additionalProperties":false},"data":{"type":"array","items":{"type":"object","properties":{"value":{"type":"number","format":"float","example":0.5},"ts":{"type":"string","format":"date-time","example":"2023-03-21T15:01:17.310Z"}},"required":["value","ts"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}},"required":["values"],"additionalProperties":false},"networkEgress":{"type":"object","properties":{"metricInfo":{"type":"object","properties":{"metricId":{"type":"string","enum":["cpu","memory","networkIngress","networkEgress","tcpConnectionsOpen","diskUsage","requests","http4xxResponses","http5xxResponses","bandwidth","bandwidthVolume"],"description":"Type of metric to fetch"},"metricUnit":{"type":"string","enum":["pct","vCPU","mb","kbps","rps","count"],"example":"pct"},"metricResolution":{"type":"number","format":"float","example":10}},"required":["metricId","metricUnit"],"additionalProperties":false},"values":{"type":"array","items":{"type":"object","properties":{"metadata":{"type":"object","properties":{"containerId":{"type":"string","example":"nginx-669cc865b7-5458n"},"volumeId":{"type":"string","example":"data-volume-1"}},"required":["containerId"],"additionalProperties":false},"data":{"type":"array","items":{"type":"object","properties":{"value":{"type":"number","format":"float","example":0.5},"ts":{"type":"string","format":"date-time","example":"2023-03-21T15:01:17.310Z"}},"required":["value","ts"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}},"required":["values"],"additionalProperties":false},"tcpConnectionsOpen":{"type":"object","properties":{"metricInfo":{"type":"object","properties":{"metricId":{"type":"string","enum":["cpu","memory","networkIngress","networkEgress","tcpConnectionsOpen","diskUsage","requests","http4xxResponses","http5xxResponses","bandwidth","bandwidthVolume"],"description":"Type of metric to fetch"},"metricUnit":{"type":"string","enum":["pct","vCPU","mb","kbps","rps","count"],"example":"pct"},"metricResolution":{"type":"number","format":"float","example":10}},"required":["metricId","metricUnit"],"additionalProperties":false},"values":{"type":"array","items":{"type":"object","properties":{"metadata":{"type":"object","properties":{"containerId":{"type":"string","example":"nginx-669cc865b7-5458n"},"volumeId":{"type":"string","example":"data-volume-1"}},"required":["containerId"],"additionalProperties":false},"data":{"type":"array","items":{"type":"object","properties":{"value":{"type":"number","format":"float","example":0.5},"ts":{"type":"string","format":"date-time","example":"2023-03-21T15:01:17.310Z"}},"required":["value","ts"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}},"required":["values"],"additionalProperties":false},"diskUsage":{"type":"object","properties":{"metricInfo":{"type":"object","properties":{"metricId":{"type":"string","enum":["cpu","memory","networkIngress","networkEgress","tcpConnectionsOpen","diskUsage","requests","http4xxResponses","http5xxResponses","bandwidth","bandwidthVolume"],"description":"Type of metric to fetch"},"metricUnit":{"type":"string","enum":["pct","vCPU","mb","kbps","rps","count"],"example":"pct"},"metricResolution":{"type":"number","format":"float","example":10}},"required":["metricId","metricUnit"],"additionalProperties":false},"values":{"type":"array","items":{"type":"object","properties":{"metadata":{"type":"object","properties":{"containerId":{"type":"string","example":"nginx-669cc865b7-5458n"},"volumeId":{"type":"string","example":"data-volume-1"}},"required":["containerId"],"additionalProperties":false},"data":{"type":"array","items":{"type":"object","properties":{"value":{"type":"number","format":"float","example":0.5},"ts":{"type":"string","format":"date-time","example":"2023-03-21T15:01:17.310Z"}},"required":["value","ts"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}},"required":["values"],"additionalProperties":false},"requests":{"type":"object","properties":{"metricInfo":{"type":"object","properties":{"metricId":{"type":"string","enum":["cpu","memory","networkIngress","networkEgress","tcpConnectionsOpen","diskUsage","requests","http4xxResponses","http5xxResponses","bandwidth","bandwidthVolume"],"description":"Type of metric to fetch"},"metricUnit":{"type":"string","enum":["pct","vCPU","mb","kbps","rps","count"],"example":"pct"},"metricResolution":{"type":"number","format":"float","example":10}},"required":["metricId","metricUnit"],"additionalProperties":false},"values":{"type":"array","items":{"type":"object","properties":{"metadata":{"type":"object","properties":{"containerId":{"type":"string","example":"nginx-669cc865b7-5458n"},"volumeId":{"type":"string","example":"data-volume-1"}},"required":["containerId"],"additionalProperties":false},"data":{"type":"array","items":{"type":"object","properties":{"value":{"type":"number","format":"float","example":0.5},"ts":{"type":"string","format":"date-time","example":"2023-03-21T15:01:17.310Z"}},"required":["value","ts"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}},"required":["values"],"additionalProperties":false},"http4xxResponses":{"type":"object","properties":{"metricInfo":{"type":"object","properties":{"metricId":{"type":"string","enum":["cpu","memory","networkIngress","networkEgress","tcpConnectionsOpen","diskUsage","requests","http4xxResponses","http5xxResponses","bandwidth","bandwidthVolume"],"description":"Type of metric to fetch"},"metricUnit":{"type":"string","enum":["pct","vCPU","mb","kbps","rps","count"],"example":"pct"},"metricResolution":{"type":"number","format":"float","example":10}},"required":["metricId","metricUnit"],"additionalProperties":false},"values":{"type":"array","items":{"type":"object","properties":{"metadata":{"type":"object","properties":{"containerId":{"type":"string","example":"nginx-669cc865b7-5458n"},"volumeId":{"type":"string","example":"data-volume-1"}},"required":["containerId"],"additionalProperties":false},"data":{"type":"array","items":{"type":"object","properties":{"value":{"type":"number","format":"float","example":0.5},"ts":{"type":"string","format":"date-time","example":"2023-03-21T15:01:17.310Z"}},"required":["value","ts"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}},"required":["values"],"additionalProperties":false},"http5xxResponses":{"type":"object","properties":{"metricInfo":{"type":"object","properties":{"metricId":{"type":"string","enum":["cpu","memory","networkIngress","networkEgress","tcpConnectionsOpen","diskUsage","requests","http4xxResponses","http5xxResponses","bandwidth","bandwidthVolume"],"description":"Type of metric to fetch"},"metricUnit":{"type":"string","enum":["pct","vCPU","mb","kbps","rps","count"],"example":"pct"},"metricResolution":{"type":"number","format":"float","example":10}},"required":["metricId","metricUnit"],"additionalProperties":false},"values":{"type":"array","items":{"type":"object","properties":{"metadata":{"type":"object","properties":{"containerId":{"type":"string","example":"nginx-669cc865b7-5458n"},"volumeId":{"type":"string","example":"data-volume-1"}},"required":["containerId"],"additionalProperties":false},"data":{"type":"array","items":{"type":"object","properties":{"value":{"type":"number","format":"float","example":0.5},"ts":{"type":"string","format":"date-time","example":"2023-03-21T15:01:17.310Z"}},"required":["value","ts"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}},"required":["values"],"additionalProperties":false},"bandwidth":{"type":"object","properties":{"metricInfo":{"type":"object","properties":{"metricId":{"type":"string","enum":["cpu","memory","networkIngress","networkEgress","tcpConnectionsOpen","diskUsage","requests","http4xxResponses","http5xxResponses","bandwidth","bandwidthVolume"],"description":"Type of metric to fetch"},"metricUnit":{"type":"string","enum":["pct","vCPU","mb","kbps","rps","count"],"example":"pct"},"metricResolution":{"type":"number","format":"float","example":10}},"required":["metricId","metricUnit"],"additionalProperties":false},"values":{"type":"array","items":{"type":"object","properties":{"metadata":{"type":"object","properties":{"containerId":{"type":"string","example":"nginx-669cc865b7-5458n"},"volumeId":{"type":"string","example":"data-volume-1"}},"required":["containerId"],"additionalProperties":false},"data":{"type":"array","items":{"type":"object","properties":{"value":{"type":"number","format":"float","example":0.5},"ts":{"type":"string","format":"date-time","example":"2023-03-21T15:01:17.310Z"}},"required":["value","ts"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}},"required":["values"],"additionalProperties":false},"bandwidthVolume":{"type":"object","properties":{"metricInfo":{"type":"object","properties":{"metricId":{"type":"string","enum":["cpu","memory","networkIngress","networkEgress","tcpConnectionsOpen","diskUsage","requests","http4xxResponses","http5xxResponses","bandwidth","bandwidthVolume"],"description":"Type of metric to fetch"},"metricUnit":{"type":"string","enum":["pct","vCPU","mb","kbps","rps","count"],"example":"pct"},"metricResolution":{"type":"number","format":"float","example":10}},"required":["metricId","metricUnit"],"additionalProperties":false},"values":{"type":"array","items":{"type":"object","properties":{"metadata":{"type":"object","properties":{"containerId":{"type":"string","example":"nginx-669cc865b7-5458n"},"volumeId":{"type":"string","example":"data-volume-1"}},"required":["containerId"],"additionalProperties":false},"data":{"type":"array","items":{"type":"object","properties":{"value":{"type":"number","format":"float","example":0.5},"ts":{"type":"string","format":"date-time","example":"2023-03-21T15:01:17.310Z"}},"required":["value","ts"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}},"required":["values"],"additionalProperties":false}},"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Services","project"],"security":[],"x-nf-jsclient":[{"title":"Range","description":"Query over a range","schema":{"type":"object","properties":{"buildId":{"type":"string","description":"Selects metrics for specific build.","example":"fantastic-build-2345"},"metricTypes":{"type":"string","enum":["cpu","memory","networkIngress","networkEgress","tcpConnectionsOpen","diskUsage","requests","http4xxResponses","http5xxResponses","bandwidth","bandwidthVolume"],"description":"Type of metric. Multiple metric types can be selected by specifying the query parameter repeatedly."},"startTime":{"type":"string","format":"date-time","description":"Fetch metrics generated after this timestamp. Only valid for queryType: `range`.","example":"2023-02-16T14:00:00.000Z"},"endTime":{"type":"string","format":"date-time","description":"Fetch metrics generated before this timestamp. Only valid for queryType: `range`.","example":"2023-02-16T15:00:00.000Z"},"duration":{"type":"integer","description":"Range duration in seconds. If set, only one of `startTime` or `endTime` can be set.","example":600}},"additionalProperties":false},"x-nf-cli-command":["get","service","build-metrics-range"]},{"title":"Single","description":"Query a specific timestamp","schema":{"type":"object","properties":{"buildId":{"type":"string","description":"Selects metrics for specific build.","example":"fantastic-build-2345"},"metricTypes":{"type":"string","enum":["cpu","memory","networkIngress","networkEgress","tcpConnectionsOpen","diskUsage","requests","http4xxResponses","http5xxResponses","bandwidth","bandwidthVolume"],"description":"Type of metric. Multiple metric types can be selected by specifying the query parameter repeatedly."},"timestamp":{"type":"string","format":"date-time","description":"Fetch metrics at this timestamp. If not provided will use current time. Only valid for queryType: `single`.","example":"2023-02-16T14:00:00.000Z"}},"additionalProperties":false},"x-nf-cli-command":["get","service","build-metrics"]}],"x-nf-permission-required":"Project > Services > Deployment > View Instance Metrics","x-nf-team-scoped":true,"x-nf-cli-command":["get","service","build-metrics"]},"v1-projects--projectId--services--serviceId--build-options-post":{"operationId":"postProjectsServicesServiceidBuildOptions","summary":"Update service build options","description":"Updates the build options for a given service.","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"serviceId","type":"string","required":true,"description":"ID of the service","example":"example-service","in":"path","schema":{"name":"serviceId","type":"string","required":true,"description":"ID of the service","example":"example-service","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Services","project"],"security":[],"deprecated":true,"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"dockerfile":{"type":"object","properties":{"buildEngine":{"type":"string","enum":["buildkit","kaniko"],"description":"Build engine to use. Defaults to recommended build engine `buildkit`","example":"buildkit"},"dockerFilePath":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]+$","description":"The file path of the Dockerfile.","example":"/Dockerfile"},"dockerWorkDir":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*$","description":"The working directory of the Dockerfile.","example":"/"},"buildkit":{"type":"object","properties":{"useCache":{"type":"boolean","description":"Use persistent storage to cache build layers.","default":false},"cacheStorageSize":{"type":"integer","description":"The amount of persistent storage available to each build in MB."},"useInternalCache":{"type":"boolean","description":"DEPRECATED: This field will be removed in the near future.","default":false},"internalCacheStorage":{"type":"integer","description":"DEPRECATED: This field will be removed in the near future."}},"additionalProperties":false}},"additionalProperties":false},"prRestrictions":{"type":"array","items":{"type":"string","pattern":"^[^?:@$~ [\\]{}]*$","description":"A pull request build rule. Can contain `*` as a wildcard to match multiple branch names. For example, `feature/*` will build all commits from pull requests from branches that start with `feature/`.","example":"feature/*"},"description":"An array of pull request build rules. Only supported for build services. Each commit belonging to a pull request on a branch that matches one of the provided build rules will be built automatically."},"branchRestrictions":{"type":"array","items":{"type":"string","pattern":"^[^?:@$~ [\\]{}]*$","description":"A branch build rule. Can contain `*` as a wildcard to match multiple branch names. For example, `feature/*` will build all commits from branches that start with `feature/`.","example":"feature/*"},"description":"An array of branch build rules. Only supported for build services. Each commit belonging to a branch that matches one of the provided build rules will be built automatically."},"crossProjectAccess":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Allow this build service to be referenced by resources in other projects.","example":true},"projects":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The ID of a project to include or exclude.","example":"example-project"},"description":"A list of project IDs used as an allow list or deny list."},"isAllowList":{"type":"boolean","description":"If true, only the listed projects can use this build service. If false, all projects except the listed ones can use this build service."}},"required":["enabled","projects","isAllowList"],"additionalProperties":false,"description":"Controls which projects can use this build service."},"pathIgnoreRules":{"type":"array","items":{"type":"string","maxLength":260,"description":"A path ignore rule, following `.gitignore` syntax. For example, `*.md` will ignore all files ending with `.md`.","example":"README.md"},"maxItems":200,"description":"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."},"isAllowList":{"type":"boolean","description":"If `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`.","example":false},"ciIgnoreFlagsEnabled":{"type":"boolean","description":"If `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":{"type":"array","items":{"type":"string","maxLength":72,"description":"A commit ignore flag.","example":"[skip ci]"},"maxItems":200,"description":"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]\"]`","example":["[skip ci]","[ci skip]","[no ci]","[skip nf]","[nf skip]","[northflank skip]","[skip northflank]"]},"dockerfileTarget":{"type":"string","description":"If your Dockerfile contains multiple build stages, you can specify the target stage by entering its name here."},"dockerCredentials":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The ID of the docker credentials to use.","example":"example-docker-credential"}},"includeGitFolder":{"type":"boolean","description":"Include .git folder inside the build context"},"fullGitClone":{"type":"boolean","description":"Include the entire git history as part of the .git folder. Only relevant if \"includeGitFolder\" is set."},"enableGitLfs":{"type":"boolean","description":"Enable Git LFS support for the build"},"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false}},"required":["dockerfile"],"additionalProperties":false,"description":"Build from a Dockerfile"},{"type":"object","properties":{"buildpack":{"type":"object","properties":{"builder":{"type":"string","enum":["HEROKU_24","HEROKU_22","HEROKU_22_CLASSIC","HEROKU_20","HEROKU_18","GOOGLE_22","GOOGLE_V1","CNB_ALPINE","CNB_BIONIC","PAKETO_JAMMY_TINY","PAKETO_JAMMY_BASE","PAKETO_JAMMY_FULL","PAKETO_TINY","PAKETO_BASE","PAKETO_FULL"],"description":"Buildpack stack to use. Defaults to recommended stack `HEROKU_24`.","example":"HEROKU_24"},"buildpackLocators":{"type":"array","items":{"type":"string","description":"Url or registry identifier of custom buildpack.","example":"https://buildpack-registry.heroku.com/cnb/mars/create-react-app"},"description":"Array of custom buildpacks to use."},"buildContext":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*$","description":"The working directory to build in.","example":"/"},"useCache":{"type":"boolean","description":"Should build dependencies be cached?","example":false}},"additionalProperties":false},"pathIgnoreRules":{"type":"array","items":{"type":"string","maxLength":260,"description":"A path ignore rule, following `.gitignore` syntax. For example, `*.md` will ignore all files ending with `.md`.","example":"README.md"},"maxItems":200,"description":"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."},"isAllowList":{"type":"boolean","description":"If `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`.","example":false},"ciIgnoreFlagsEnabled":{"type":"boolean","description":"If `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":{"type":"array","items":{"type":"string","maxLength":72,"description":"A commit ignore flag.","example":"[skip ci]"},"maxItems":200,"description":"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]\"]`","example":["[skip ci]","[ci skip]","[no ci]","[skip nf]","[nf skip]","[northflank skip]","[skip northflank]"]}},"required":["buildpack"],"additionalProperties":false,"description":"Build from a Buildpack"},{"type":"object","properties":{"prRestrictions":{"type":"array","items":{"type":"string","pattern":"^[^?:@$~ [\\]{}]*$","description":"A pull request build rule. Can contain `*` as a wildcard to match multiple branch names. For example, `feature/*` will build all commits from pull requests from branches that start with `feature/`.","example":"feature/*"},"description":"An array of pull request build rules. Only supported for build services. Each commit belonging to a pull request on a branch that matches one of the provided build rules will be built automatically."},"branchRestrictions":{"type":"array","items":{"type":"string","pattern":"^[^?:@$~ [\\]{}]*$","description":"A branch build rule. Can contain `*` as a wildcard to match multiple branch names. For example, `feature/*` will build all commits from branches that start with `feature/`.","example":"feature/*"},"description":"An array of branch build rules. Only supported for build services. Each commit belonging to a branch that matches one of the provided build rules will be built automatically."},"crossProjectAccess":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Allow this build service to be referenced by resources in other projects.","example":true},"projects":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The ID of a project to include or exclude.","example":"example-project"},"description":"A list of project IDs used as an allow list or deny list."},"isAllowList":{"type":"boolean","description":"If true, only the listed projects can use this build service. If false, all projects except the listed ones can use this build service."}},"required":["enabled","projects","isAllowList"],"additionalProperties":false,"description":"Controls which projects can use this build service."},"pathIgnoreRules":{"type":"array","items":{"type":"string","maxLength":260,"description":"A path ignore rule, following `.gitignore` syntax. For example, `*.md` will ignore all files ending with `.md`.","example":"README.md"},"maxItems":200,"description":"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."},"isAllowList":{"type":"boolean","description":"If `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`.","example":false},"ciIgnoreFlagsEnabled":{"type":"boolean","description":"If `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":{"type":"array","items":{"type":"string","maxLength":72,"description":"A commit ignore flag.","example":"[skip ci]"},"maxItems":200,"description":"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]\"]`","example":["[skip ci]","[ci skip]","[no ci]","[skip nf]","[nf skip]","[northflank skip]","[skip northflank]"]},"dockerfileTarget":{"type":"string","description":"If your Dockerfile contains multiple build stages, you can specify the target stage by entering its name here."},"dockerCredentials":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The ID of the docker credentials to use.","example":"example-docker-credential"}},"includeGitFolder":{"type":"boolean","description":"Include .git folder inside the build context"},"fullGitClone":{"type":"boolean","description":"Include the entire git history as part of the .git folder. Only relevant if \"includeGitFolder\" is set."},"enableGitLfs":{"type":"boolean","description":"Enable Git LFS support for the build"},"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false}},"additionalProperties":false,"description":"Don't modify build type settings"}],"description":"Modify build settings"}}},"required":true},"x-nf-permission-required":"Project > Services > General > Update","x-nf-team-scoped":true,"x-nf-cli-command":["update","service","build-options"],"x-nf-deprecation-replacement":"/services/patch-combined-service","x-nf-deprecation-message":"Requests should instead use the relevant PATCH endpoint."},"v1-projects--projectId--services--serviceId--build-options-post-team-scoped":{"operationId":"postProjectsServicesServiceidBuildOptions","summary":"Update service build options","description":"Updates the build options for a given service.","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"serviceId","type":"string","required":true,"description":"ID of the service","example":"example-service","in":"path","schema":{"name":"serviceId","type":"string","required":true,"description":"ID of the service","example":"example-service","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Services","project"],"security":[],"deprecated":true,"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"dockerfile":{"type":"object","properties":{"buildEngine":{"type":"string","enum":["buildkit","kaniko"],"description":"Build engine to use. Defaults to recommended build engine `buildkit`","example":"buildkit"},"dockerFilePath":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]+$","description":"The file path of the Dockerfile.","example":"/Dockerfile"},"dockerWorkDir":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*$","description":"The working directory of the Dockerfile.","example":"/"},"buildkit":{"type":"object","properties":{"useCache":{"type":"boolean","description":"Use persistent storage to cache build layers.","default":false},"cacheStorageSize":{"type":"integer","description":"The amount of persistent storage available to each build in MB."},"useInternalCache":{"type":"boolean","description":"DEPRECATED: This field will be removed in the near future.","default":false},"internalCacheStorage":{"type":"integer","description":"DEPRECATED: This field will be removed in the near future."}},"additionalProperties":false}},"additionalProperties":false},"prRestrictions":{"type":"array","items":{"type":"string","pattern":"^[^?:@$~ [\\]{}]*$","description":"A pull request build rule. Can contain `*` as a wildcard to match multiple branch names. For example, `feature/*` will build all commits from pull requests from branches that start with `feature/`.","example":"feature/*"},"description":"An array of pull request build rules. Only supported for build services. Each commit belonging to a pull request on a branch that matches one of the provided build rules will be built automatically."},"branchRestrictions":{"type":"array","items":{"type":"string","pattern":"^[^?:@$~ [\\]{}]*$","description":"A branch build rule. Can contain `*` as a wildcard to match multiple branch names. For example, `feature/*` will build all commits from branches that start with `feature/`.","example":"feature/*"},"description":"An array of branch build rules. Only supported for build services. Each commit belonging to a branch that matches one of the provided build rules will be built automatically."},"crossProjectAccess":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Allow this build service to be referenced by resources in other projects.","example":true},"projects":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The ID of a project to include or exclude.","example":"example-project"},"description":"A list of project IDs used as an allow list or deny list."},"isAllowList":{"type":"boolean","description":"If true, only the listed projects can use this build service. If false, all projects except the listed ones can use this build service."}},"required":["enabled","projects","isAllowList"],"additionalProperties":false,"description":"Controls which projects can use this build service."},"pathIgnoreRules":{"type":"array","items":{"type":"string","maxLength":260,"description":"A path ignore rule, following `.gitignore` syntax. For example, `*.md` will ignore all files ending with `.md`.","example":"README.md"},"maxItems":200,"description":"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."},"isAllowList":{"type":"boolean","description":"If `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`.","example":false},"ciIgnoreFlagsEnabled":{"type":"boolean","description":"If `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":{"type":"array","items":{"type":"string","maxLength":72,"description":"A commit ignore flag.","example":"[skip ci]"},"maxItems":200,"description":"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]\"]`","example":["[skip ci]","[ci skip]","[no ci]","[skip nf]","[nf skip]","[northflank skip]","[skip northflank]"]},"dockerfileTarget":{"type":"string","description":"If your Dockerfile contains multiple build stages, you can specify the target stage by entering its name here."},"dockerCredentials":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The ID of the docker credentials to use.","example":"example-docker-credential"}},"includeGitFolder":{"type":"boolean","description":"Include .git folder inside the build context"},"fullGitClone":{"type":"boolean","description":"Include the entire git history as part of the .git folder. Only relevant if \"includeGitFolder\" is set."},"enableGitLfs":{"type":"boolean","description":"Enable Git LFS support for the build"},"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false}},"required":["dockerfile"],"additionalProperties":false,"description":"Build from a Dockerfile"},{"type":"object","properties":{"buildpack":{"type":"object","properties":{"builder":{"type":"string","enum":["HEROKU_24","HEROKU_22","HEROKU_22_CLASSIC","HEROKU_20","HEROKU_18","GOOGLE_22","GOOGLE_V1","CNB_ALPINE","CNB_BIONIC","PAKETO_JAMMY_TINY","PAKETO_JAMMY_BASE","PAKETO_JAMMY_FULL","PAKETO_TINY","PAKETO_BASE","PAKETO_FULL"],"description":"Buildpack stack to use. Defaults to recommended stack `HEROKU_24`.","example":"HEROKU_24"},"buildpackLocators":{"type":"array","items":{"type":"string","description":"Url or registry identifier of custom buildpack.","example":"https://buildpack-registry.heroku.com/cnb/mars/create-react-app"},"description":"Array of custom buildpacks to use."},"buildContext":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*$","description":"The working directory to build in.","example":"/"},"useCache":{"type":"boolean","description":"Should build dependencies be cached?","example":false}},"additionalProperties":false},"pathIgnoreRules":{"type":"array","items":{"type":"string","maxLength":260,"description":"A path ignore rule, following `.gitignore` syntax. For example, `*.md` will ignore all files ending with `.md`.","example":"README.md"},"maxItems":200,"description":"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."},"isAllowList":{"type":"boolean","description":"If `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`.","example":false},"ciIgnoreFlagsEnabled":{"type":"boolean","description":"If `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":{"type":"array","items":{"type":"string","maxLength":72,"description":"A commit ignore flag.","example":"[skip ci]"},"maxItems":200,"description":"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]\"]`","example":["[skip ci]","[ci skip]","[no ci]","[skip nf]","[nf skip]","[northflank skip]","[skip northflank]"]}},"required":["buildpack"],"additionalProperties":false,"description":"Build from a Buildpack"},{"type":"object","properties":{"prRestrictions":{"type":"array","items":{"type":"string","pattern":"^[^?:@$~ [\\]{}]*$","description":"A pull request build rule. Can contain `*` as a wildcard to match multiple branch names. For example, `feature/*` will build all commits from pull requests from branches that start with `feature/`.","example":"feature/*"},"description":"An array of pull request build rules. Only supported for build services. Each commit belonging to a pull request on a branch that matches one of the provided build rules will be built automatically."},"branchRestrictions":{"type":"array","items":{"type":"string","pattern":"^[^?:@$~ [\\]{}]*$","description":"A branch build rule. Can contain `*` as a wildcard to match multiple branch names. For example, `feature/*` will build all commits from branches that start with `feature/`.","example":"feature/*"},"description":"An array of branch build rules. Only supported for build services. Each commit belonging to a branch that matches one of the provided build rules will be built automatically."},"crossProjectAccess":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Allow this build service to be referenced by resources in other projects.","example":true},"projects":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The ID of a project to include or exclude.","example":"example-project"},"description":"A list of project IDs used as an allow list or deny list."},"isAllowList":{"type":"boolean","description":"If true, only the listed projects can use this build service. If false, all projects except the listed ones can use this build service."}},"required":["enabled","projects","isAllowList"],"additionalProperties":false,"description":"Controls which projects can use this build service."},"pathIgnoreRules":{"type":"array","items":{"type":"string","maxLength":260,"description":"A path ignore rule, following `.gitignore` syntax. For example, `*.md` will ignore all files ending with `.md`.","example":"README.md"},"maxItems":200,"description":"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."},"isAllowList":{"type":"boolean","description":"If `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`.","example":false},"ciIgnoreFlagsEnabled":{"type":"boolean","description":"If `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":{"type":"array","items":{"type":"string","maxLength":72,"description":"A commit ignore flag.","example":"[skip ci]"},"maxItems":200,"description":"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]\"]`","example":["[skip ci]","[ci skip]","[no ci]","[skip nf]","[nf skip]","[northflank skip]","[skip northflank]"]},"dockerfileTarget":{"type":"string","description":"If your Dockerfile contains multiple build stages, you can specify the target stage by entering its name here."},"dockerCredentials":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The ID of the docker credentials to use.","example":"example-docker-credential"}},"includeGitFolder":{"type":"boolean","description":"Include .git folder inside the build context"},"fullGitClone":{"type":"boolean","description":"Include the entire git history as part of the .git folder. Only relevant if \"includeGitFolder\" is set."},"enableGitLfs":{"type":"boolean","description":"Enable Git LFS support for the build"},"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":16384,"maximum":65536,"enum":[16384,32768,65536,131072,262144,524288],"description":"Ephemeral storage per build in MB","example":16384}},"additionalProperties":false}},"additionalProperties":false}},"additionalProperties":false,"description":"Don't modify build type settings"}],"description":"Modify build settings"}}},"required":true},"x-nf-permission-required":"Project > Services > General > Update","x-nf-team-scoped":true,"x-nf-cli-command":["update","service","build-options"],"x-nf-deprecation-replacement":"/services/patch-combined-service","x-nf-deprecation-message":"Requests should instead use the relevant PATCH endpoint."},"v1-projects--projectId--services--serviceId--build-source-post":{"operationId":"postProjectsServicesServiceidBuildSource","summary":"Update service build source","description":"Updates the version control source for a given build or combined service.","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"serviceId","type":"string","required":true,"description":"ID of the service","example":"example-service","in":"path","schema":{"name":"serviceId","type":"string","required":true,"description":"ID of the service","example":"example-service","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Services","project"],"security":[],"deprecated":true,"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"projectUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo to build.","example":"https://github.com/northflank/gatsby-with-northflank"},"projectType":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"projectBranch":{"type":"string","description":"The name of the branch to use.","example":"master"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"}},"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Project > Services > General > Update","x-nf-team-scoped":true,"x-nf-cli-command":["update","service","build-source"],"x-nf-deprecation-replacement":"/services/patch-combined-service","x-nf-deprecation-message":"Requests should instead use the relevant PATCH endpoint."},"v1-projects--projectId--services--serviceId--build-source-post-team-scoped":{"operationId":"postProjectsServicesServiceidBuildSource","summary":"Update service build source","description":"Updates the version control source for a given build or combined service.","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"serviceId","type":"string","required":true,"description":"ID of the service","example":"example-service","in":"path","schema":{"name":"serviceId","type":"string","required":true,"description":"ID of the service","example":"example-service","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Services","project"],"security":[],"deprecated":true,"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"projectUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo to build.","example":"https://github.com/northflank/gatsby-with-northflank"},"projectType":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"projectBranch":{"type":"string","description":"The name of the branch to use.","example":"master"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"}},"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Project > Services > General > Update","x-nf-team-scoped":true,"x-nf-cli-command":["update","service","build-source"],"x-nf-deprecation-replacement":"/services/patch-combined-service","x-nf-deprecation-message":"Requests should instead use the relevant PATCH endpoint."},"v1-projects--projectId--services--serviceId--build--buildId--get":{"operationId":"getProjectsServicesServiceidBuildBuildid","summary":"Get service build","description":"Gets information about a build for the service","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"serviceId","type":"string","required":true,"description":"ID of the service","example":"example-service","in":"path","schema":{"name":"serviceId","type":"string","required":true,"description":"ID of the service","example":"example-service","in":"path"}},{"name":"buildId","type":"string","required":true,"description":"ID of the service build","example":"joyous-view-6290","in":"path","schema":{"name":"buildId","type":"string","required":true,"description":"ID of the service build","example":"joyous-view-6290","in":"path"}}],"responses":{"200":{"description":"Returns data about the specified build.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","description":"ID of the build.","example":"joyous-view-6290"},"branch":{"type":"string","description":"Name of the branch the built commit belongs to.","example":"main"},"pullRequestId":{"type":"number","format":"float","nullable":true,"description":"ID of the pull request the commit belongs to."},"status":{"type":"string","enum":["QUEUED","PENDING","UNSCHEDULABLE","STARTING","CLONING","BUILDING","UPLOADING","ABORTED","FAILURE","SUBMISSION_FAILURE","SUCCESS","CRASHED","IN_PROGRESS"],"description":"The status of the build.","example":"SUCCESS"},"sha":{"type":"string","description":"The sha of the built commit.","example":"12c15e7ee25fd78f567ebf87f9178b8ad70025b3"},"registry":{"type":"object","properties":{"uri":{"type":"string","description":"URI of that can be used to pull the image from the registry"}},"additionalProperties":false},"concluded":{"type":"boolean","description":"Whether the build has finished.","example":true},"createdAt":{"type":"string","description":"Timestamp of the build initiation.","example":"2021-07-28T15:55:38.296Z"},"success":{"type":"boolean","description":"Whether the build was successful.","example":true},"message":{"type":"string","nullable":true,"description":"Description of the build status.","example":"Image successfully built"},"buildConcludedAt":{"type":"number","format":"float","description":"Timestamp of the build concluding.","example":1606237973}},"required":["id"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Services","project"],"security":[],"x-nf-permission-required":"Project > Services > General > Read","x-nf-team-scoped":true,"x-nf-cli-command":["get","service","build"]},"v1-projects--projectId--services--serviceId--build--buildId--get-team-scoped":{"operationId":"getProjectsServicesServiceidBuildBuildid","summary":"Get service build","description":"Gets information about a build for the service","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"serviceId","type":"string","required":true,"description":"ID of the service","example":"example-service","in":"path","schema":{"name":"serviceId","type":"string","required":true,"description":"ID of the service","example":"example-service","in":"path"}},{"name":"buildId","type":"string","required":true,"description":"ID of the service build","example":"joyous-view-6290","in":"path","schema":{"name":"buildId","type":"string","required":true,"description":"ID of the service build","example":"joyous-view-6290","in":"path"}}],"responses":{"200":{"description":"Returns data about the specified build.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","description":"ID of the build.","example":"joyous-view-6290"},"branch":{"type":"string","description":"Name of the branch the built commit belongs to.","example":"main"},"pullRequestId":{"type":"number","format":"float","nullable":true,"description":"ID of the pull request the commit belongs to."},"status":{"type":"string","enum":["QUEUED","PENDING","UNSCHEDULABLE","STARTING","CLONING","BUILDING","UPLOADING","ABORTED","FAILURE","SUBMISSION_FAILURE","SUCCESS","CRASHED","IN_PROGRESS"],"description":"The status of the build.","example":"SUCCESS"},"sha":{"type":"string","description":"The sha of the built commit.","example":"12c15e7ee25fd78f567ebf87f9178b8ad70025b3"},"registry":{"type":"object","properties":{"uri":{"type":"string","description":"URI of that can be used to pull the image from the registry"}},"additionalProperties":false},"concluded":{"type":"boolean","description":"Whether the build has finished.","example":true},"createdAt":{"type":"string","description":"Timestamp of the build initiation.","example":"2021-07-28T15:55:38.296Z"},"success":{"type":"boolean","description":"Whether the build was successful.","example":true},"message":{"type":"string","nullable":true,"description":"Description of the build status.","example":"Image successfully built"},"buildConcludedAt":{"type":"number","format":"float","description":"Timestamp of the build concluding.","example":1606237973}},"required":["id"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Services","project"],"security":[],"x-nf-permission-required":"Project > Services > General > Read","x-nf-team-scoped":true,"x-nf-cli-command":["get","service","build"]},"v1-projects--projectId--services--serviceId--build--buildId--delete":{"operationId":"deleteProjectsServicesServiceidBuildBuildid","summary":"Abort service build","description":"Aborts the given service build","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"serviceId","type":"string","required":true,"description":"ID of the service","example":"example-service","in":"path","schema":{"name":"serviceId","type":"string","required":true,"description":"ID of the service","example":"example-service","in":"path"}},{"name":"buildId","type":"string","required":true,"description":"ID of the service build","example":"joyous-view-6290","in":"path","schema":{"name":"buildId","type":"string","required":true,"description":"ID of the service build","example":"joyous-view-6290","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Services","project"],"security":[],"x-nf-permission-required":"Project > Services > Deployment > Deploy Build","x-nf-team-scoped":true,"x-nf-cli-command":["abort","service","build"]},"v1-projects--projectId--services--serviceId--build--buildId--delete-team-scoped":{"operationId":"deleteProjectsServicesServiceidBuildBuildid","summary":"Abort service build","description":"Aborts the given service build","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"serviceId","type":"string","required":true,"description":"ID of the service","example":"example-service","in":"path","schema":{"name":"serviceId","type":"string","required":true,"description":"ID of the service","example":"example-service","in":"path"}},{"name":"buildId","type":"string","required":true,"description":"ID of the service build","example":"joyous-view-6290","in":"path","schema":{"name":"buildId","type":"string","required":true,"description":"ID of the service build","example":"joyous-view-6290","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Services","project"],"security":[],"x-nf-permission-required":"Project > Services > Deployment > Deploy Build","x-nf-team-scoped":true,"x-nf-cli-command":["abort","service","build"]},"v1-projects--projectId--services--serviceId--containers-get":{"operationId":"getProjectsServicesServiceidContainers","summary":"List service containers","description":"Gets a list of containers for the given service.","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"serviceId","type":"string","required":true,"description":"ID of the service","example":"example-service","in":"path","schema":{"name":"serviceId","type":"string","required":true,"description":"ID of the service","example":"example-service","in":"path"}},{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query","schema":{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query"}},{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query","schema":{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query"}},{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query","schema":{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query"}}],"responses":{"200":{"description":"Details about the addon's containers.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"containers":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"The name of the container.","example":"example-service-78b4d4459d-sbtn8"},"createdAt":{"type":"integer","minimum":1,"description":"The timestamp the container was created.","example":1611241087},"status":{"type":"string","enum":["TASK_RUNNING","TASK_STARTING","TASK_STAGING","TASK_KILLING","TASK_KILLED","TASK_FAILED","TASK_FINISHED"],"description":"The current status of the container.","example":"TASK_RUNNING"},"nodeName":{"type":"string","description":"BYOC only: the name of the node the container was scheduled to"},"nodePoolUserId":{"type":"string","description":"BYOC only: the user facing ID of the node pool that the container was scheduled to"},"nodePoolProviderId":{"type":"string","description":"BYOC only: the provider facing ID of the node pool that the container was scheduled to"},"host":{"type":"string","description":"BYOC only: the host address of the node the container was scheduled to"},"ipAddresses":{"type":"array","items":{"type":"string"},"description":"BYOC only: the IP addresses mapping to the container"},"updatedAt":{"type":"integer","minimum":1,"description":"The timestamp the container was last updated.","example":1611241087}},"required":["name","createdAt","status","updatedAt"],"additionalProperties":false,"description":"Data about a container."}}},"additionalProperties":false,"description":"Result data."},"pagination":{"type":"object","properties":{"hasNextPage":{"type":"boolean","description":"Is there another page of results available?","example":false},"cursor":{"type":"string","description":"The cursor to access the next page of results."},"count":{"type":"number","format":"float","description":"The number of results returned by this request.","example":1}},"required":["hasNextPage","count"],"additionalProperties":false,"description":"Data about the endpoint pagination."}},"required":["data","pagination"],"additionalProperties":false,"description":"Response object."}}},"tags":["Services","project"],"security":[],"x-nf-permission-required":"Project > Services > Deployment > View Instances","x-nf-team-scoped":true,"x-nf-cli-command":["get","service","containers"]},"v1-projects--projectId--services--serviceId--containers-get-team-scoped":{"operationId":"getProjectsServicesServiceidContainers","summary":"List service containers","description":"Gets a list of containers for the given service.","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"serviceId","type":"string","required":true,"description":"ID of the service","example":"example-service","in":"path","schema":{"name":"serviceId","type":"string","required":true,"description":"ID of the service","example":"example-service","in":"path"}},{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query","schema":{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query"}},{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query","schema":{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query"}},{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query","schema":{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query"}}],"responses":{"200":{"description":"Details about the addon's containers.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"containers":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"The name of the container.","example":"example-service-78b4d4459d-sbtn8"},"createdAt":{"type":"integer","minimum":1,"description":"The timestamp the container was created.","example":1611241087},"status":{"type":"string","enum":["TASK_RUNNING","TASK_STARTING","TASK_STAGING","TASK_KILLING","TASK_KILLED","TASK_FAILED","TASK_FINISHED"],"description":"The current status of the container.","example":"TASK_RUNNING"},"nodeName":{"type":"string","description":"BYOC only: the name of the node the container was scheduled to"},"nodePoolUserId":{"type":"string","description":"BYOC only: the user facing ID of the node pool that the container was scheduled to"},"nodePoolProviderId":{"type":"string","description":"BYOC only: the provider facing ID of the node pool that the container was scheduled to"},"host":{"type":"string","description":"BYOC only: the host address of the node the container was scheduled to"},"ipAddresses":{"type":"array","items":{"type":"string"},"description":"BYOC only: the IP addresses mapping to the container"},"updatedAt":{"type":"integer","minimum":1,"description":"The timestamp the container was last updated.","example":1611241087}},"required":["name","createdAt","status","updatedAt"],"additionalProperties":false,"description":"Data about a container."}}},"additionalProperties":false,"description":"Result data."},"pagination":{"type":"object","properties":{"hasNextPage":{"type":"boolean","description":"Is there another page of results available?","example":false},"cursor":{"type":"string","description":"The cursor to access the next page of results."},"count":{"type":"number","format":"float","description":"The number of results returned by this request.","example":1}},"required":["hasNextPage","count"],"additionalProperties":false,"description":"Data about the endpoint pagination."}},"required":["data","pagination"],"additionalProperties":false,"description":"Response object."}}},"tags":["Services","project"],"security":[],"x-nf-permission-required":"Project > Services > Deployment > View Instances","x-nf-team-scoped":true,"x-nf-cli-command":["get","service","containers"]},"v1-projects--projectId--services--serviceId--deployment-get":{"operationId":"getProjectsServicesServiceidDeployment","summary":"Get service deployment","description":"Gets information about the deployment of the given service.","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"serviceId","type":"string","required":true,"description":"ID of the service","example":"example-service","in":"path","schema":{"name":"serviceId","type":"string","required":true,"description":"ID of the service","example":"example-service","in":"path"}}],"responses":{"200":{"description":"Data about the service deployment.","schema":{"type":"object","properties":{"data":{"oneOf":[{"type":"object","properties":{"region":{"type":"string","description":"Region where this service is deployed and/or built","example":"europe-west"},"instances":{"type":"integer","description":"Number of instances/replicas running","example":1},"docker":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customEntrypoint","customCommand","customEntrypointCustomCommand"],"description":"Override configuration which is used at runtime.","example":"default"},"customEntrypoint":{"type":"string","description":"The CMD to run instead of the default if entrypoint override is enabled."},"customCommand":{"type":"string","description":"The CMD to run instead of the default if CMD override is enabled.","examples":["nginx -g","/docker-entrypoint.sh"]}},"required":["configType"],"additionalProperties":false,"description":"Details about the Docker overrides for this deployment."},"buildpack":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customProcess","customCommand","customEntrypointCustomCommand","originalEntrypointCustomCommand"],"description":"Type of buildpack run configuration.","example":"default"},"customProcess":{"type":"string","description":"Custom process which should be run."},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be run."},"customCommand":{"type":"string","description":"Custom command which should be run."}},"required":["configType"],"additionalProperties":false,"description":"Details about the Buildpack overrides for this deployment."},"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"number","format":"float","description":"Ephemeral storage per container in MB","example":1024}},"required":["storageSize"],"additionalProperties":false,"description":"Details about ephemeral storage settings for this deployment."},"shmSize":{"type":"integer","minimum":64,"description":"Configures the amount of available memory-backed disk space available to /dev/shm"}},"additionalProperties":false,"description":"Details about storage settings for this deployment."},"internal":{"type":"object","properties":{"appId":{"type":"string","description":"Full identifier of deployed entity","example":"/example-user/default-project/example-service"},"nfObjectId":{"type":"string","description":"ID of deployed entity","example":"example-service"},"nfObjectType":{"type":"string","enum":["service"],"description":"Type of deployed entity","example":"service"},"repository":{"type":"string","description":"URL of the repository being deployed","example":"https://github.com/northflank/gatsby-with-northflank"},"branch":{"type":"string","description":"Branch of the repo being deployed","example":"master"},"buildId":{"type":"string","description":"ID of the build currently deployed.","example":"incredible-land-3266"},"buildSHA":{"type":"string","description":"Commit SHA being deployed. `latest` means the latest commit is automatically being deployed.","example":"latest"},"deployedSHA":{"type":"string","description":"Currently deployed commit SHA. If buildSHA is set to `latest`, this will show the SHA of the latest commit.","example":"262ed9817b3cad5142fbceabe0c9e371e390d616"}},"required":["appId","nfObjectId","nfObjectType","repository","branch","buildId","buildSHA"],"additionalProperties":false}},"required":["internal"],"additionalProperties":false,"description":"Service deploying a Northflank entity","x-required":true},{"type":"object","properties":{"region":{"type":"string","description":"Region where this service is deployed and/or built","example":"europe-west"},"instances":{"type":"integer","description":"Number of instances/replicas running","example":1},"docker":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customEntrypoint","customCommand","customEntrypointCustomCommand"],"description":"Override configuration which is used at runtime.","example":"default"},"customEntrypoint":{"type":"string","description":"The CMD to run instead of the default if entrypoint override is enabled."},"customCommand":{"type":"string","description":"The CMD to run instead of the default if CMD override is enabled.","examples":["nginx -g","/docker-entrypoint.sh"]}},"required":["configType"],"additionalProperties":false,"description":"Details about the Docker overrides for this deployment."},"buildpack":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customProcess","customCommand","customEntrypointCustomCommand","originalEntrypointCustomCommand"],"description":"Type of buildpack run configuration.","example":"default"},"customProcess":{"type":"string","description":"Custom process which should be run."},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be run."},"customCommand":{"type":"string","description":"Custom command which should be run."}},"required":["configType"],"additionalProperties":false,"description":"Details about the Buildpack overrides for this deployment."},"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"number","format":"float","description":"Ephemeral storage per container in MB","example":1024}},"required":["storageSize"],"additionalProperties":false,"description":"Details about ephemeral storage settings for this deployment."},"shmSize":{"type":"integer","minimum":64,"description":"Configures the amount of available memory-backed disk space available to /dev/shm"}},"additionalProperties":false,"description":"Details about storage settings for this deployment."},"external":{"type":"object","properties":{"imagePath":{"type":"string","description":"Path of the external image excluding the hostname","example":"nginx:latest"},"registryProvider":{"type":"string","enum":["acr","ecr","gar","dockerhub","dhi","github","gitlab","custom","legacy"],"description":"Registry provider hosting the external image","example":"dockerhub"},"privateImage":{"type":"boolean","description":"Does the image require authentication","example":false}},"required":["imagePath","registryProvider","privateImage"],"additionalProperties":false}},"required":["external"],"additionalProperties":false,"description":"Service deploying an external image","x-required":true}],"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Services","project"],"security":[],"deprecated":true,"x-nf-permission-required":"Project > Services > Deployment > View Instances","x-nf-team-scoped":true,"x-nf-cli-command":["get","service","deployment"],"x-nf-deprecation-replacement":"/services/get-service","x-nf-deprecation-message":"Requests should instead use the relevant GET endpoint."},"v1-projects--projectId--services--serviceId--deployment-get-team-scoped":{"operationId":"getProjectsServicesServiceidDeployment","summary":"Get service deployment","description":"Gets information about the deployment of the given service.","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"serviceId","type":"string","required":true,"description":"ID of the service","example":"example-service","in":"path","schema":{"name":"serviceId","type":"string","required":true,"description":"ID of the service","example":"example-service","in":"path"}}],"responses":{"200":{"description":"Data about the service deployment.","schema":{"type":"object","properties":{"data":{"oneOf":[{"type":"object","properties":{"region":{"type":"string","description":"Region where this service is deployed and/or built","example":"europe-west"},"instances":{"type":"integer","description":"Number of instances/replicas running","example":1},"docker":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customEntrypoint","customCommand","customEntrypointCustomCommand"],"description":"Override configuration which is used at runtime.","example":"default"},"customEntrypoint":{"type":"string","description":"The CMD to run instead of the default if entrypoint override is enabled."},"customCommand":{"type":"string","description":"The CMD to run instead of the default if CMD override is enabled.","examples":["nginx -g","/docker-entrypoint.sh"]}},"required":["configType"],"additionalProperties":false,"description":"Details about the Docker overrides for this deployment."},"buildpack":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customProcess","customCommand","customEntrypointCustomCommand","originalEntrypointCustomCommand"],"description":"Type of buildpack run configuration.","example":"default"},"customProcess":{"type":"string","description":"Custom process which should be run."},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be run."},"customCommand":{"type":"string","description":"Custom command which should be run."}},"required":["configType"],"additionalProperties":false,"description":"Details about the Buildpack overrides for this deployment."},"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"number","format":"float","description":"Ephemeral storage per container in MB","example":1024}},"required":["storageSize"],"additionalProperties":false,"description":"Details about ephemeral storage settings for this deployment."},"shmSize":{"type":"integer","minimum":64,"description":"Configures the amount of available memory-backed disk space available to /dev/shm"}},"additionalProperties":false,"description":"Details about storage settings for this deployment."},"internal":{"type":"object","properties":{"appId":{"type":"string","description":"Full identifier of deployed entity","example":"/example-user/default-project/example-service"},"nfObjectId":{"type":"string","description":"ID of deployed entity","example":"example-service"},"nfObjectType":{"type":"string","enum":["service"],"description":"Type of deployed entity","example":"service"},"repository":{"type":"string","description":"URL of the repository being deployed","example":"https://github.com/northflank/gatsby-with-northflank"},"branch":{"type":"string","description":"Branch of the repo being deployed","example":"master"},"buildId":{"type":"string","description":"ID of the build currently deployed.","example":"incredible-land-3266"},"buildSHA":{"type":"string","description":"Commit SHA being deployed. `latest` means the latest commit is automatically being deployed.","example":"latest"},"deployedSHA":{"type":"string","description":"Currently deployed commit SHA. If buildSHA is set to `latest`, this will show the SHA of the latest commit.","example":"262ed9817b3cad5142fbceabe0c9e371e390d616"}},"required":["appId","nfObjectId","nfObjectType","repository","branch","buildId","buildSHA"],"additionalProperties":false}},"required":["internal"],"additionalProperties":false,"description":"Service deploying a Northflank entity","x-required":true},{"type":"object","properties":{"region":{"type":"string","description":"Region where this service is deployed and/or built","example":"europe-west"},"instances":{"type":"integer","description":"Number of instances/replicas running","example":1},"docker":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customEntrypoint","customCommand","customEntrypointCustomCommand"],"description":"Override configuration which is used at runtime.","example":"default"},"customEntrypoint":{"type":"string","description":"The CMD to run instead of the default if entrypoint override is enabled."},"customCommand":{"type":"string","description":"The CMD to run instead of the default if CMD override is enabled.","examples":["nginx -g","/docker-entrypoint.sh"]}},"required":["configType"],"additionalProperties":false,"description":"Details about the Docker overrides for this deployment."},"buildpack":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customProcess","customCommand","customEntrypointCustomCommand","originalEntrypointCustomCommand"],"description":"Type of buildpack run configuration.","example":"default"},"customProcess":{"type":"string","description":"Custom process which should be run."},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be run."},"customCommand":{"type":"string","description":"Custom command which should be run."}},"required":["configType"],"additionalProperties":false,"description":"Details about the Buildpack overrides for this deployment."},"storage":{"type":"object","properties":{"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"number","format":"float","description":"Ephemeral storage per container in MB","example":1024}},"required":["storageSize"],"additionalProperties":false,"description":"Details about ephemeral storage settings for this deployment."},"shmSize":{"type":"integer","minimum":64,"description":"Configures the amount of available memory-backed disk space available to /dev/shm"}},"additionalProperties":false,"description":"Details about storage settings for this deployment."},"external":{"type":"object","properties":{"imagePath":{"type":"string","description":"Path of the external image excluding the hostname","example":"nginx:latest"},"registryProvider":{"type":"string","enum":["acr","ecr","gar","dockerhub","dhi","github","gitlab","custom","legacy"],"description":"Registry provider hosting the external image","example":"dockerhub"},"privateImage":{"type":"boolean","description":"Does the image require authentication","example":false}},"required":["imagePath","registryProvider","privateImage"],"additionalProperties":false}},"required":["external"],"additionalProperties":false,"description":"Service deploying an external image","x-required":true}],"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Services","project"],"security":[],"deprecated":true,"x-nf-permission-required":"Project > Services > Deployment > View Instances","x-nf-team-scoped":true,"x-nf-cli-command":["get","service","deployment"],"x-nf-deprecation-replacement":"/services/get-service","x-nf-deprecation-message":"Requests should instead use the relevant GET endpoint."},"v1-projects--projectId--services--serviceId--deployment-post":{"operationId":"postProjectsServicesServiceidDeployment","summary":"Update service deployment","description":"Updates the deployment settings of the given service.","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"serviceId","type":"string","required":true,"description":"ID of the service","example":"example-service","in":"path","schema":{"name":"serviceId","type":"string","required":true,"description":"ID of the service","example":"example-service","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Services","project"],"security":[],"deprecated":true,"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"external":{"type":"object","properties":{"imagePath":{"type":"string","pattern":"^(?:(?:https?:\\/\\/)?([a-zA-Z0-9\\-]+\\.[a-zA-Z0-9\\.\\-]+)(\\/v1)?)?(?:\\/)?([a-zA-Z/-9\\.\\-_]+)(?:\\:([a-zA-Z/-9\\.\\-_\\:]+)|\\@([a-zA-Z/-9\\.\\-_\\:]+))$","description":"Image to be deployed. When not deploying from Dockerhub the URL must be specified.","example":"nginx:latest"},"credentials":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"ID of the saved credentials to use to access this external image.","example":"example-credentials"}},"required":["imagePath"],"additionalProperties":false},"docker":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customEntrypoint","customCommand","customEntrypointCustomCommand"],"description":"Type of entrypoint & command override configuration","example":"default"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be used. Required in case where `configType` is `customEntrypoint` or `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be used. Required in case where `configType` is `customCommand` or `customEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of docker runtime"}},"required":["external"],"additionalProperties":false,"description":"An external deployment"},{"type":"object","properties":{"internal":{"type":"object","properties":{"id":{"anyOf":[{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":54,"example":"example-build-service"},{"type":"string","example":"example-project/example-build-service"}],"description":"ID of the build service to deploy"},"branch":{"type":"string","description":"Branch to deploy","example":"master"},"buildSHA":{"oneOf":[{"type":"string","minLength":40,"maxLength":40,"description":"A commit sha."},{"type":"string","enum":["latest"],"description":"Latest commit."}],"description":"Commit SHA to deploy, or 'latest' to deploy the most recent commit","example":"latest"},"buildId":{"type":"string","description":"ID of the build that should be deployed","example":"premium-guide-6393"}},"additionalProperties":false},"buildpack":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customProcess","customCommand","customEntrypointCustomCommand","originalEntrypointCustomCommand"],"description":"Type of buildpack run configuration"},"customProcess":{"type":"string","description":"Custom process which should be run. Required in case where `configType` is `customProcess`"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be run. Required in case where `configType` is `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be run. Required in case where `configType` is `customCommand`, `customEntrypointCustomCommand` or `originalEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of buildpack runtime"},"docker":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customEntrypoint","customCommand","customEntrypointCustomCommand"],"description":"Type of entrypoint & command override configuration","example":"default"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be used. Required in case where `configType` is `customEntrypoint` or `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be used. Required in case where `configType` is `customCommand` or `customEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of docker runtime"}},"required":["internal"],"additionalProperties":false,"description":"An internal deployment"},{"type":"object","properties":{"buildpack":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customProcess","customCommand","customEntrypointCustomCommand","originalEntrypointCustomCommand"],"description":"Type of buildpack run configuration"},"customProcess":{"type":"string","description":"Custom process which should be run. Required in case where `configType` is `customProcess`"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be run. Required in case where `configType` is `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be run. Required in case where `configType` is `customCommand`, `customEntrypointCustomCommand` or `originalEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of buildpack runtime"},"docker":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customEntrypoint","customCommand","customEntrypointCustomCommand"],"description":"Type of entrypoint & command override configuration","example":"default"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be used. Required in case where `configType` is `customEntrypoint` or `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be used. Required in case where `configType` is `customCommand` or `customEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of docker runtime"}},"additionalProperties":false,"description":"Don't modify the deployment"}],"description":"Deployment type"}}},"required":true},"x-nf-permission-required":"Project > Services > Deployment > Update Deployment","x-nf-team-scoped":true,"x-nf-cli-command":["update","service","deployment"],"x-nf-deprecation-replacement":"/services/patch-combined-service","x-nf-deprecation-message":"Requests should instead use the relevant PATCH endpoint."},"v1-projects--projectId--services--serviceId--deployment-post-team-scoped":{"operationId":"postProjectsServicesServiceidDeployment","summary":"Update service deployment","description":"Updates the deployment settings of the given service.","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"serviceId","type":"string","required":true,"description":"ID of the service","example":"example-service","in":"path","schema":{"name":"serviceId","type":"string","required":true,"description":"ID of the service","example":"example-service","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Services","project"],"security":[],"deprecated":true,"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"external":{"type":"object","properties":{"imagePath":{"type":"string","pattern":"^(?:(?:https?:\\/\\/)?([a-zA-Z0-9\\-]+\\.[a-zA-Z0-9\\.\\-]+)(\\/v1)?)?(?:\\/)?([a-zA-Z/-9\\.\\-_]+)(?:\\:([a-zA-Z/-9\\.\\-_\\:]+)|\\@([a-zA-Z/-9\\.\\-_\\:]+))$","description":"Image to be deployed. When not deploying from Dockerhub the URL must be specified.","example":"nginx:latest"},"credentials":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"ID of the saved credentials to use to access this external image.","example":"example-credentials"}},"required":["imagePath"],"additionalProperties":false},"docker":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customEntrypoint","customCommand","customEntrypointCustomCommand"],"description":"Type of entrypoint & command override configuration","example":"default"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be used. Required in case where `configType` is `customEntrypoint` or `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be used. Required in case where `configType` is `customCommand` or `customEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of docker runtime"}},"required":["external"],"additionalProperties":false,"description":"An external deployment"},{"type":"object","properties":{"internal":{"type":"object","properties":{"id":{"anyOf":[{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":54,"example":"example-build-service"},{"type":"string","example":"example-project/example-build-service"}],"description":"ID of the build service to deploy"},"branch":{"type":"string","description":"Branch to deploy","example":"master"},"buildSHA":{"oneOf":[{"type":"string","minLength":40,"maxLength":40,"description":"A commit sha."},{"type":"string","enum":["latest"],"description":"Latest commit."}],"description":"Commit SHA to deploy, or 'latest' to deploy the most recent commit","example":"latest"},"buildId":{"type":"string","description":"ID of the build that should be deployed","example":"premium-guide-6393"}},"additionalProperties":false},"buildpack":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customProcess","customCommand","customEntrypointCustomCommand","originalEntrypointCustomCommand"],"description":"Type of buildpack run configuration"},"customProcess":{"type":"string","description":"Custom process which should be run. Required in case where `configType` is `customProcess`"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be run. Required in case where `configType` is `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be run. Required in case where `configType` is `customCommand`, `customEntrypointCustomCommand` or `originalEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of buildpack runtime"},"docker":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customEntrypoint","customCommand","customEntrypointCustomCommand"],"description":"Type of entrypoint & command override configuration","example":"default"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be used. Required in case where `configType` is `customEntrypoint` or `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be used. Required in case where `configType` is `customCommand` or `customEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of docker runtime"}},"required":["internal"],"additionalProperties":false,"description":"An internal deployment"},{"type":"object","properties":{"buildpack":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customProcess","customCommand","customEntrypointCustomCommand","originalEntrypointCustomCommand"],"description":"Type of buildpack run configuration"},"customProcess":{"type":"string","description":"Custom process which should be run. Required in case where `configType` is `customProcess`"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be run. Required in case where `configType` is `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be run. Required in case where `configType` is `customCommand`, `customEntrypointCustomCommand` or `originalEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of buildpack runtime"},"docker":{"type":"object","properties":{"configType":{"type":"string","enum":["default","customEntrypoint","customCommand","customEntrypointCustomCommand"],"description":"Type of entrypoint & command override configuration","example":"default"},"customEntrypoint":{"type":"string","description":"Custom entrypoint which should be used. Required in case where `configType` is `customEntrypoint` or `customEntrypointCustomCommand`"},"customCommand":{"type":"string","description":"Custom command which should be used. Required in case where `configType` is `customCommand` or `customEntrypointCustomCommand`"}},"required":["configType"],"additionalProperties":false,"description":"Allows for customization of docker runtime"}},"additionalProperties":false,"description":"Don't modify the deployment"}],"description":"Deployment type"}}},"required":true},"x-nf-permission-required":"Project > Services > Deployment > Update Deployment","x-nf-team-scoped":true,"x-nf-cli-command":["update","service","deployment"],"x-nf-deprecation-replacement":"/services/patch-combined-service","x-nf-deprecation-message":"Requests should instead use the relevant PATCH endpoint."},"v1-projects--projectId--services--serviceId--health-checks-get":{"operationId":"getProjectsServicesServiceidHealthChecks","summary":"Get service health checks","description":"Lists the health checks for the given service.","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"serviceId","type":"string","required":true,"description":"ID of the service","example":"example-service","in":"path","schema":{"name":"serviceId","type":"string","required":true,"description":"ID of the service","example":"example-service","in":"path"}}],"responses":{"200":{"description":"Details about the health checks for the service.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"healthChecks":{"type":"array","items":{"type":"object","properties":{"protocol":{"type":"string","enum":["HTTP","CMD","TCP"],"description":"The protocol to access the health check with.","example":"HTTP"},"type":{"type":"string","enum":["livenessProbe","readinessProbe"],"description":"The type of health check.","example":"readinessProbe"},"path":{"type":"string","nullable":true,"description":"The path of the health check endpoint.","example":"/health-check"},"cmd":{"description":"The command to run for the health check."},"httpPort":{"description":"HTTP port number for the health check endpoint.","example":3000},"tcpSocketPort":{"description":"TCP port number for the health check endpoint."},"initialDelaySeconds":{"type":"integer","minimum":1,"description":"Initial delay, in seconds, before the health check is first run.","example":10},"periodSeconds":{"type":"integer","minimum":1,"description":"The time between each check, in seconds.","example":60},"timeoutSeconds":{"type":"integer","minimum":1,"description":"The time to wait for a response before marking the health check as a failure.","example":1},"failureThreshold":{"type":"integer","minimum":1,"description":"The maximum number of allowed failures.","example":3},"successThreshold":{"description":"The number of successes required to mark the health check as a success.","example":1}},"required":["protocol","type","initialDelaySeconds","periodSeconds","timeoutSeconds","failureThreshold"],"additionalProperties":false},"description":"An array of health checks."}},"required":["healthChecks"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Services","project"],"security":[],"deprecated":true,"x-nf-permission-required":"Project > Services > General > Read","x-nf-team-scoped":true,"x-nf-cli-command":["get","service","health-checks"],"x-nf-deprecation-replacement":"/services/get-service","x-nf-deprecation-message":"Requests should instead use the relevant GET endpoint."},"v1-projects--projectId--services--serviceId--health-checks-get-team-scoped":{"operationId":"getProjectsServicesServiceidHealthChecks","summary":"Get service health checks","description":"Lists the health checks for the given service.","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"serviceId","type":"string","required":true,"description":"ID of the service","example":"example-service","in":"path","schema":{"name":"serviceId","type":"string","required":true,"description":"ID of the service","example":"example-service","in":"path"}}],"responses":{"200":{"description":"Details about the health checks for the service.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"healthChecks":{"type":"array","items":{"type":"object","properties":{"protocol":{"type":"string","enum":["HTTP","CMD","TCP"],"description":"The protocol to access the health check with.","example":"HTTP"},"type":{"type":"string","enum":["livenessProbe","readinessProbe"],"description":"The type of health check.","example":"readinessProbe"},"path":{"type":"string","nullable":true,"description":"The path of the health check endpoint.","example":"/health-check"},"cmd":{"description":"The command to run for the health check."},"httpPort":{"description":"HTTP port number for the health check endpoint.","example":3000},"tcpSocketPort":{"description":"TCP port number for the health check endpoint."},"initialDelaySeconds":{"type":"integer","minimum":1,"description":"Initial delay, in seconds, before the health check is first run.","example":10},"periodSeconds":{"type":"integer","minimum":1,"description":"The time between each check, in seconds.","example":60},"timeoutSeconds":{"type":"integer","minimum":1,"description":"The time to wait for a response before marking the health check as a failure.","example":1},"failureThreshold":{"type":"integer","minimum":1,"description":"The maximum number of allowed failures.","example":3},"successThreshold":{"description":"The number of successes required to mark the health check as a success.","example":1}},"required":["protocol","type","initialDelaySeconds","periodSeconds","timeoutSeconds","failureThreshold"],"additionalProperties":false},"description":"An array of health checks."}},"required":["healthChecks"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Services","project"],"security":[],"deprecated":true,"x-nf-permission-required":"Project > Services > General > Read","x-nf-team-scoped":true,"x-nf-cli-command":["get","service","health-checks"],"x-nf-deprecation-replacement":"/services/get-service","x-nf-deprecation-message":"Requests should instead use the relevant GET endpoint."},"v1-projects--projectId--services--serviceId--health-checks-post":{"operationId":"postProjectsServicesServiceidHealthChecks","summary":"Update service health checks","description":"Updates health checks for the given service.","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"serviceId","type":"string","required":true,"description":"ID of the service","example":"example-service","in":"path","schema":{"name":"serviceId","type":"string","required":true,"description":"ID of the service","example":"example-service","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Services","project"],"security":[],"deprecated":true,"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"healthChecks":{"type":"array","items":{"type":"object","properties":{"protocol":{"type":"string","enum":["HTTP","CMD","TCP"],"description":"The protocol to access the health check with.","example":"HTTP"},"type":{"type":"string","enum":["livenessProbe","readinessProbe","startupProbe"],"description":"The type of health check.","example":"readinessProbe"},"path":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*((\\?([a-zA-Z0-9-._]+(=[a-zA-Z0-9-._]+)?)*)(&([a-zA-Z0-9-._]+(=[a-zA-Z0-9-._]+)?)*)*)?$","description":"The path of the health check endpoint. Required when protocol is HTTP.","example":"/health-check"},"cmd":{"type":"string","description":"The command to run for the health check. Required when protocol is CMD"},"port":{"type":"integer","minimum":1,"description":"Port number for the health check endpoint. Required when protocol is HTTP.","example":8080},"initialDelaySeconds":{"type":"integer","minimum":1,"maximum":180,"description":"Initial delay, in seconds, before the health check is first run.","example":10},"periodSeconds":{"type":"integer","minimum":10,"maximum":600,"description":"The time between each check, in seconds.","example":60},"timeoutSeconds":{"type":"integer","minimum":1,"maximum":60,"description":"The time to wait for a response before marking the health check as a failure.","example":1},"failureThreshold":{"type":"integer","minimum":1,"maximum":255,"description":"The maximum number of allowed failures.","example":3},"successThreshold":{"type":"integer","minimum":1,"maximum":255,"description":"The number of successes required to mark the health check as a success.","example":1}},"required":["protocol","type","initialDelaySeconds","periodSeconds","timeoutSeconds","failureThreshold"],"additionalProperties":false,"description":"A health check object."},"description":"An array of health checks."}},"required":["healthChecks"],"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Project > Services > General > Update","x-nf-team-scoped":true,"x-nf-cli-command":["update","service","health-checks"],"x-nf-deprecation-replacement":"/services/patch-combined-service","x-nf-deprecation-message":"Requests should instead use the relevant PATCH endpoint."},"v1-projects--projectId--services--serviceId--health-checks-post-team-scoped":{"operationId":"postProjectsServicesServiceidHealthChecks","summary":"Update service health checks","description":"Updates health checks for the given service.","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"serviceId","type":"string","required":true,"description":"ID of the service","example":"example-service","in":"path","schema":{"name":"serviceId","type":"string","required":true,"description":"ID of the service","example":"example-service","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Services","project"],"security":[],"deprecated":true,"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"healthChecks":{"type":"array","items":{"type":"object","properties":{"protocol":{"type":"string","enum":["HTTP","CMD","TCP"],"description":"The protocol to access the health check with.","example":"HTTP"},"type":{"type":"string","enum":["livenessProbe","readinessProbe","startupProbe"],"description":"The type of health check.","example":"readinessProbe"},"path":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]*((\\?([a-zA-Z0-9-._]+(=[a-zA-Z0-9-._]+)?)*)(&([a-zA-Z0-9-._]+(=[a-zA-Z0-9-._]+)?)*)*)?$","description":"The path of the health check endpoint. Required when protocol is HTTP.","example":"/health-check"},"cmd":{"type":"string","description":"The command to run for the health check. Required when protocol is CMD"},"port":{"type":"integer","minimum":1,"description":"Port number for the health check endpoint. Required when protocol is HTTP.","example":8080},"initialDelaySeconds":{"type":"integer","minimum":1,"maximum":180,"description":"Initial delay, in seconds, before the health check is first run.","example":10},"periodSeconds":{"type":"integer","minimum":10,"maximum":600,"description":"The time between each check, in seconds.","example":60},"timeoutSeconds":{"type":"integer","minimum":1,"maximum":60,"description":"The time to wait for a response before marking the health check as a failure.","example":1},"failureThreshold":{"type":"integer","minimum":1,"maximum":255,"description":"The maximum number of allowed failures.","example":3},"successThreshold":{"type":"integer","minimum":1,"maximum":255,"description":"The number of successes required to mark the health check as a success.","example":1}},"required":["protocol","type","initialDelaySeconds","periodSeconds","timeoutSeconds","failureThreshold"],"additionalProperties":false,"description":"A health check object."},"description":"An array of health checks."}},"required":["healthChecks"],"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Project > Services > General > Update","x-nf-team-scoped":true,"x-nf-cli-command":["update","service","health-checks"],"x-nf-deprecation-replacement":"/services/patch-combined-service","x-nf-deprecation-message":"Requests should instead use the relevant PATCH endpoint."},"v1-projects--projectId--services--serviceId--logs-get":{"operationId":"getProjectsServicesServiceidLogs","summary":"Get service logs","description":"Get logs for a service","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"serviceId","type":"string","required":true,"description":"ID of the service","example":"example-service","in":"path","schema":{"name":"serviceId","type":"string","required":true,"description":"ID of the service","example":"example-service","in":"path"}},{"name":"deploymentId","type":"string","description":"Limit logs to a specific deployment.","example":"latest","in":"query","schema":{"name":"deploymentId","type":"string","description":"Limit logs to a specific deployment.","example":"latest","in":"query"}},{"name":"type","type":"string","enum":["cdn","mesh","ingress","runtime","build","backup","restore"],"description":"Type of log. Multiple log types can be selected by specifying the query parameter repeatedly.","in":"query","schema":{"name":"type","type":"string","enum":["cdn","mesh","ingress","runtime","build","backup","restore"],"description":"Type of log. Multiple log types can be selected by specifying the query parameter repeatedly.","in":"query"}},{"name":"containerName","type":"string","minLength":3,"maxLength":64,"description":"Limits logs to a specific container.","example":"my-container-67d6d748c5-kgvwh","default":"all","in":"query","schema":{"name":"containerName","type":"string","minLength":3,"maxLength":64,"description":"Limits logs to a specific container.","example":"my-container-67d6d748c5-kgvwh","default":"all","in":"query"}},{"name":"queryType","type":"string","enum":["range"],"description":"`range` selects a log range and returns immediately.","example":"range","default":"range","in":"query","schema":{"name":"queryType","type":"string","enum":["range"],"description":"`range` selects a log range and returns immediately.","example":"range","default":"range","in":"query"}},{"name":"startTime","type":"string","format":"date-time","description":"Fetch logs generated after this timestamp.","example":"2023-02-16T14:00:00.000Z","in":"query","schema":{"name":"startTime","type":"string","format":"date-time","description":"Fetch logs generated after this timestamp.","example":"2023-02-16T14:00:00.000Z","in":"query"}},{"name":"endTime","type":"string","format":"date-time","description":"Fetch logs generated before this timestamp.","example":"2023-02-16T15:00:00.000Z","in":"query","schema":{"name":"endTime","type":"string","format":"date-time","description":"Fetch logs generated before this timestamp.","example":"2023-02-16T15:00:00.000Z","in":"query"}},{"name":"duration","type":"integer","description":"Range duration in seconds. If set, only one of `startTime` or `endTime` can be set.","example":600,"in":"query","schema":{"name":"duration","type":"integer","description":"Range duration in seconds. If set, only one of `startTime` or `endTime` can be set.","example":600,"in":"query"}},{"name":"lineLimit","type":"number","format":"float","minimum":0,"maximum":1000,"description":"Number of log lines to fetch.","example":250,"in":"query","schema":{"name":"lineLimit","type":"number","format":"float","minimum":0,"maximum":1000,"description":"Number of log lines to fetch.","example":250,"in":"query"}},{"name":"direction","type":"string","enum":["backward","forward"],"description":"Ordering of log lines","example":"backward","default":"backward","in":"query","schema":{"name":"direction","type":"string","enum":["backward","forward"],"description":"Ordering of log lines","example":"backward","default":"backward","in":"query"}},{"name":"textIncludes","type":"string","minLength":1,"maxLength":100,"description":"Filter log lines to match this search string","example":"myvalue","in":"query","schema":{"name":"textIncludes","type":"string","minLength":1,"maxLength":100,"description":"Filter log lines to match this search string","example":"myvalue","in":"query"}},{"name":"textNotIncludes","type":"string","minLength":1,"maxLength":100,"description":"Filter log lines to not match this search string","example":"myvalue","in":"query","schema":{"name":"textNotIncludes","type":"string","minLength":1,"maxLength":100,"description":"Filter log lines to not match this search string","example":"myvalue","in":"query"}},{"name":"regexIncludes","type":"string","minLength":1,"maxLength":100,"description":"Filter log lines to match this regular expression","example":"my.*value","in":"query","schema":{"name":"regexIncludes","type":"string","minLength":1,"maxLength":100,"description":"Filter log lines to match this regular expression","example":"my.*value","in":"query"}},{"name":"regexNotIncludes","type":"string","minLength":1,"maxLength":100,"description":"Filter log lines to not match this regular expression","example":"my.*value","in":"query","schema":{"name":"regexNotIncludes","type":"string","minLength":1,"maxLength":100,"description":"Filter log lines to not match this regular expression","example":"my.*value","in":"query"}}],"responses":{"200":{"description":"List of logs values","schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"containerId":{"type":"string"},"log":{"example":"stdout F This is a log line"},"ts":{"type":"string","format":"date-time","example":"2023-03-21T15:01:17.310Z"}},"required":["containerId","log","ts"],"additionalProperties":false},"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Services","project"],"security":[],"x-nf-link":"undefined/v1/api/log-tailing","x-nf-link-description":"For more information on live log tailing, see our documentation page.","x-nf-permission-required":"Project > Services > Deployment > View Instance Logs","x-nf-team-scoped":true,"x-nf-cli-command":["get","service","logs"]},"v1-projects--projectId--services--serviceId--logs-get-team-scoped":{"operationId":"getProjectsServicesServiceidLogs","summary":"Get service logs","description":"Get logs for a service","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"serviceId","type":"string","required":true,"description":"ID of the service","example":"example-service","in":"path","schema":{"name":"serviceId","type":"string","required":true,"description":"ID of the service","example":"example-service","in":"path"}},{"name":"deploymentId","type":"string","description":"Limit logs to a specific deployment.","example":"latest","in":"query","schema":{"name":"deploymentId","type":"string","description":"Limit logs to a specific deployment.","example":"latest","in":"query"}},{"name":"type","type":"string","enum":["cdn","mesh","ingress","runtime","build","backup","restore"],"description":"Type of log. Multiple log types can be selected by specifying the query parameter repeatedly.","in":"query","schema":{"name":"type","type":"string","enum":["cdn","mesh","ingress","runtime","build","backup","restore"],"description":"Type of log. Multiple log types can be selected by specifying the query parameter repeatedly.","in":"query"}},{"name":"containerName","type":"string","minLength":3,"maxLength":64,"description":"Limits logs to a specific container.","example":"my-container-67d6d748c5-kgvwh","default":"all","in":"query","schema":{"name":"containerName","type":"string","minLength":3,"maxLength":64,"description":"Limits logs to a specific container.","example":"my-container-67d6d748c5-kgvwh","default":"all","in":"query"}},{"name":"queryType","type":"string","enum":["range"],"description":"`range` selects a log range and returns immediately.","example":"range","default":"range","in":"query","schema":{"name":"queryType","type":"string","enum":["range"],"description":"`range` selects a log range and returns immediately.","example":"range","default":"range","in":"query"}},{"name":"startTime","type":"string","format":"date-time","description":"Fetch logs generated after this timestamp.","example":"2023-02-16T14:00:00.000Z","in":"query","schema":{"name":"startTime","type":"string","format":"date-time","description":"Fetch logs generated after this timestamp.","example":"2023-02-16T14:00:00.000Z","in":"query"}},{"name":"endTime","type":"string","format":"date-time","description":"Fetch logs generated before this timestamp.","example":"2023-02-16T15:00:00.000Z","in":"query","schema":{"name":"endTime","type":"string","format":"date-time","description":"Fetch logs generated before this timestamp.","example":"2023-02-16T15:00:00.000Z","in":"query"}},{"name":"duration","type":"integer","description":"Range duration in seconds. If set, only one of `startTime` or `endTime` can be set.","example":600,"in":"query","schema":{"name":"duration","type":"integer","description":"Range duration in seconds. If set, only one of `startTime` or `endTime` can be set.","example":600,"in":"query"}},{"name":"lineLimit","type":"number","format":"float","minimum":0,"maximum":1000,"description":"Number of log lines to fetch.","example":250,"in":"query","schema":{"name":"lineLimit","type":"number","format":"float","minimum":0,"maximum":1000,"description":"Number of log lines to fetch.","example":250,"in":"query"}},{"name":"direction","type":"string","enum":["backward","forward"],"description":"Ordering of log lines","example":"backward","default":"backward","in":"query","schema":{"name":"direction","type":"string","enum":["backward","forward"],"description":"Ordering of log lines","example":"backward","default":"backward","in":"query"}},{"name":"textIncludes","type":"string","minLength":1,"maxLength":100,"description":"Filter log lines to match this search string","example":"myvalue","in":"query","schema":{"name":"textIncludes","type":"string","minLength":1,"maxLength":100,"description":"Filter log lines to match this search string","example":"myvalue","in":"query"}},{"name":"textNotIncludes","type":"string","minLength":1,"maxLength":100,"description":"Filter log lines to not match this search string","example":"myvalue","in":"query","schema":{"name":"textNotIncludes","type":"string","minLength":1,"maxLength":100,"description":"Filter log lines to not match this search string","example":"myvalue","in":"query"}},{"name":"regexIncludes","type":"string","minLength":1,"maxLength":100,"description":"Filter log lines to match this regular expression","example":"my.*value","in":"query","schema":{"name":"regexIncludes","type":"string","minLength":1,"maxLength":100,"description":"Filter log lines to match this regular expression","example":"my.*value","in":"query"}},{"name":"regexNotIncludes","type":"string","minLength":1,"maxLength":100,"description":"Filter log lines to not match this regular expression","example":"my.*value","in":"query","schema":{"name":"regexNotIncludes","type":"string","minLength":1,"maxLength":100,"description":"Filter log lines to not match this regular expression","example":"my.*value","in":"query"}}],"responses":{"200":{"description":"List of logs values","schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"containerId":{"type":"string"},"log":{"example":"stdout F This is a log line"},"ts":{"type":"string","format":"date-time","example":"2023-03-21T15:01:17.310Z"}},"required":["containerId","log","ts"],"additionalProperties":false},"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Services","project"],"security":[],"x-nf-link":"undefined/v1/api/log-tailing","x-nf-link-description":"For more information on live log tailing, see our documentation page.","x-nf-permission-required":"Project > Services > Deployment > View Instance Logs","x-nf-team-scoped":true,"x-nf-cli-command":["get","service","logs"]},"v1-projects--projectId--services--serviceId--metrics-get":{"operationId":"getProjectsServicesServiceidMetrics","summary":"Get service metrics","description":"Get metrics for a service","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"serviceId","type":"string","required":true,"description":"ID of the service","example":"example-service","in":"path","schema":{"name":"serviceId","type":"string","required":true,"description":"ID of the service","example":"example-service","in":"path"}},{"name":"queryType","type":"string","enum":["range","single"],"description":"Selects metrics for specified timestamp.","examples":["range","single"],"default":"single","in":"query","schema":{"name":"queryType","type":"string","enum":["range","single"],"description":"Selects metrics for specified timestamp.","examples":["range","single"],"default":"single","in":"query"}},{"name":"metricTypes","type":"string","enum":["cpu","memory","networkIngress","networkEgress","tcpConnectionsOpen","diskUsage","requests","http4xxResponses","http5xxResponses","bandwidth","bandwidthVolume"],"description":"Type of metric. Multiple metric types can be selected by specifying the query parameter repeatedly.","in":"query","schema":{"name":"metricTypes","type":"string","enum":["cpu","memory","networkIngress","networkEgress","tcpConnectionsOpen","diskUsage","requests","http4xxResponses","http5xxResponses","bandwidth","bandwidthVolume"],"description":"Type of metric. Multiple metric types can be selected by specifying the query parameter repeatedly.","in":"query"}},{"name":"startTime","type":"string","format":"date-time","description":"Fetch metrics generated after this timestamp. Only valid for queryType: `range`.","example":"2023-02-16T14:00:00.000Z","in":"query","schema":{"name":"startTime","type":"string","format":"date-time","description":"Fetch metrics generated after this timestamp. Only valid for queryType: `range`.","example":"2023-02-16T14:00:00.000Z","in":"query"}},{"name":"endTime","type":"string","format":"date-time","description":"Fetch metrics generated before this timestamp. Only valid for queryType: `range`.","example":"2023-02-16T15:00:00.000Z","in":"query","schema":{"name":"endTime","type":"string","format":"date-time","description":"Fetch metrics generated before this timestamp. Only valid for queryType: `range`.","example":"2023-02-16T15:00:00.000Z","in":"query"}},{"name":"duration","type":"integer","description":"Range duration in seconds. If set, only one of `startTime` or `endTime` can be set.","example":600,"in":"query","schema":{"name":"duration","type":"integer","description":"Range duration in seconds. If set, only one of `startTime` or `endTime` can be set.","example":600,"in":"query"}},{"name":"containerName","type":"string","minLength":3,"maxLength":64,"description":"Limits metrics to a specific container.","examples":["my-container-67d6d748c5-kgvwh","my-container-67d6d748c5-kgvwh"],"default":"all","in":"query","schema":{"name":"containerName","type":"string","minLength":3,"maxLength":64,"description":"Limits metrics to a specific container.","examples":["my-container-67d6d748c5-kgvwh","my-container-67d6d748c5-kgvwh"],"default":"all","in":"query"}},{"name":"deploymentId","type":"string","description":"Limits metrics to a specific deployment","examples":["latest","latest"],"in":"query","schema":{"name":"deploymentId","type":"string","description":"Limits metrics to a specific deployment","examples":["latest","latest"],"in":"query"}},{"name":"time","type":"string","format":"date-time","description":"Fetch metrics at this timestamp. If not provided will use current time. Only valid for queryType: `single`.","example":"2023-02-16T14:00:00.000Z","in":"query","schema":{"name":"time","type":"string","format":"date-time","description":"Fetch metrics at this timestamp. If not provided will use current time. Only valid for queryType: `single`.","example":"2023-02-16T14:00:00.000Z","in":"query"}}],"responses":{"200":{"description":"List of metrics values","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"cpu":{"type":"object","properties":{"metricInfo":{"type":"object","properties":{"metricId":{"type":"string","enum":["cpu","memory","networkIngress","networkEgress","tcpConnectionsOpen","diskUsage","requests","http4xxResponses","http5xxResponses","bandwidth","bandwidthVolume"],"description":"Type of metric to fetch"},"metricUnit":{"type":"string","enum":["pct","vCPU","mb","kbps","rps","count"],"example":"pct"},"metricResolution":{"type":"number","format":"float","example":10}},"required":["metricId","metricUnit"],"additionalProperties":false},"values":{"type":"array","items":{"type":"object","properties":{"metadata":{"type":"object","properties":{"containerId":{"type":"string","example":"nginx-669cc865b7-5458n"},"volumeId":{"type":"string","example":"data-volume-1"}},"required":["containerId"],"additionalProperties":false},"data":{"type":"array","items":{"type":"object","properties":{"value":{"type":"number","format":"float","example":0.5},"ts":{"type":"string","format":"date-time","example":"2023-03-21T15:01:17.310Z"}},"required":["value","ts"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}},"required":["values"],"additionalProperties":false},"memory":{"type":"object","properties":{"metricInfo":{"type":"object","properties":{"metricId":{"type":"string","enum":["cpu","memory","networkIngress","networkEgress","tcpConnectionsOpen","diskUsage","requests","http4xxResponses","http5xxResponses","bandwidth","bandwidthVolume"],"description":"Type of metric to fetch"},"metricUnit":{"type":"string","enum":["pct","vCPU","mb","kbps","rps","count"],"example":"pct"},"metricResolution":{"type":"number","format":"float","example":10}},"required":["metricId","metricUnit"],"additionalProperties":false},"values":{"type":"array","items":{"type":"object","properties":{"metadata":{"type":"object","properties":{"containerId":{"type":"string","example":"nginx-669cc865b7-5458n"},"volumeId":{"type":"string","example":"data-volume-1"}},"required":["containerId"],"additionalProperties":false},"data":{"type":"array","items":{"type":"object","properties":{"value":{"type":"number","format":"float","example":0.5},"ts":{"type":"string","format":"date-time","example":"2023-03-21T15:01:17.310Z"}},"required":["value","ts"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}},"required":["values"],"additionalProperties":false},"networkIngress":{"type":"object","properties":{"metricInfo":{"type":"object","properties":{"metricId":{"type":"string","enum":["cpu","memory","networkIngress","networkEgress","tcpConnectionsOpen","diskUsage","requests","http4xxResponses","http5xxResponses","bandwidth","bandwidthVolume"],"description":"Type of metric to fetch"},"metricUnit":{"type":"string","enum":["pct","vCPU","mb","kbps","rps","count"],"example":"pct"},"metricResolution":{"type":"number","format":"float","example":10}},"required":["metricId","metricUnit"],"additionalProperties":false},"values":{"type":"array","items":{"type":"object","properties":{"metadata":{"type":"object","properties":{"containerId":{"type":"string","example":"nginx-669cc865b7-5458n"},"volumeId":{"type":"string","example":"data-volume-1"}},"required":["containerId"],"additionalProperties":false},"data":{"type":"array","items":{"type":"object","properties":{"value":{"type":"number","format":"float","example":0.5},"ts":{"type":"string","format":"date-time","example":"2023-03-21T15:01:17.310Z"}},"required":["value","ts"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}},"required":["values"],"additionalProperties":false},"networkEgress":{"type":"object","properties":{"metricInfo":{"type":"object","properties":{"metricId":{"type":"string","enum":["cpu","memory","networkIngress","networkEgress","tcpConnectionsOpen","diskUsage","requests","http4xxResponses","http5xxResponses","bandwidth","bandwidthVolume"],"description":"Type of metric to fetch"},"metricUnit":{"type":"string","enum":["pct","vCPU","mb","kbps","rps","count"],"example":"pct"},"metricResolution":{"type":"number","format":"float","example":10}},"required":["metricId","metricUnit"],"additionalProperties":false},"values":{"type":"array","items":{"type":"object","properties":{"metadata":{"type":"object","properties":{"containerId":{"type":"string","example":"nginx-669cc865b7-5458n"},"volumeId":{"type":"string","example":"data-volume-1"}},"required":["containerId"],"additionalProperties":false},"data":{"type":"array","items":{"type":"object","properties":{"value":{"type":"number","format":"float","example":0.5},"ts":{"type":"string","format":"date-time","example":"2023-03-21T15:01:17.310Z"}},"required":["value","ts"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}},"required":["values"],"additionalProperties":false},"tcpConnectionsOpen":{"type":"object","properties":{"metricInfo":{"type":"object","properties":{"metricId":{"type":"string","enum":["cpu","memory","networkIngress","networkEgress","tcpConnectionsOpen","diskUsage","requests","http4xxResponses","http5xxResponses","bandwidth","bandwidthVolume"],"description":"Type of metric to fetch"},"metricUnit":{"type":"string","enum":["pct","vCPU","mb","kbps","rps","count"],"example":"pct"},"metricResolution":{"type":"number","format":"float","example":10}},"required":["metricId","metricUnit"],"additionalProperties":false},"values":{"type":"array","items":{"type":"object","properties":{"metadata":{"type":"object","properties":{"containerId":{"type":"string","example":"nginx-669cc865b7-5458n"},"volumeId":{"type":"string","example":"data-volume-1"}},"required":["containerId"],"additionalProperties":false},"data":{"type":"array","items":{"type":"object","properties":{"value":{"type":"number","format":"float","example":0.5},"ts":{"type":"string","format":"date-time","example":"2023-03-21T15:01:17.310Z"}},"required":["value","ts"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}},"required":["values"],"additionalProperties":false},"diskUsage":{"type":"object","properties":{"metricInfo":{"type":"object","properties":{"metricId":{"type":"string","enum":["cpu","memory","networkIngress","networkEgress","tcpConnectionsOpen","diskUsage","requests","http4xxResponses","http5xxResponses","bandwidth","bandwidthVolume"],"description":"Type of metric to fetch"},"metricUnit":{"type":"string","enum":["pct","vCPU","mb","kbps","rps","count"],"example":"pct"},"metricResolution":{"type":"number","format":"float","example":10}},"required":["metricId","metricUnit"],"additionalProperties":false},"values":{"type":"array","items":{"type":"object","properties":{"metadata":{"type":"object","properties":{"containerId":{"type":"string","example":"nginx-669cc865b7-5458n"},"volumeId":{"type":"string","example":"data-volume-1"}},"required":["containerId"],"additionalProperties":false},"data":{"type":"array","items":{"type":"object","properties":{"value":{"type":"number","format":"float","example":0.5},"ts":{"type":"string","format":"date-time","example":"2023-03-21T15:01:17.310Z"}},"required":["value","ts"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}},"required":["values"],"additionalProperties":false},"requests":{"type":"object","properties":{"metricInfo":{"type":"object","properties":{"metricId":{"type":"string","enum":["cpu","memory","networkIngress","networkEgress","tcpConnectionsOpen","diskUsage","requests","http4xxResponses","http5xxResponses","bandwidth","bandwidthVolume"],"description":"Type of metric to fetch"},"metricUnit":{"type":"string","enum":["pct","vCPU","mb","kbps","rps","count"],"example":"pct"},"metricResolution":{"type":"number","format":"float","example":10}},"required":["metricId","metricUnit"],"additionalProperties":false},"values":{"type":"array","items":{"type":"object","properties":{"metadata":{"type":"object","properties":{"containerId":{"type":"string","example":"nginx-669cc865b7-5458n"},"volumeId":{"type":"string","example":"data-volume-1"}},"required":["containerId"],"additionalProperties":false},"data":{"type":"array","items":{"type":"object","properties":{"value":{"type":"number","format":"float","example":0.5},"ts":{"type":"string","format":"date-time","example":"2023-03-21T15:01:17.310Z"}},"required":["value","ts"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}},"required":["values"],"additionalProperties":false},"http4xxResponses":{"type":"object","properties":{"metricInfo":{"type":"object","properties":{"metricId":{"type":"string","enum":["cpu","memory","networkIngress","networkEgress","tcpConnectionsOpen","diskUsage","requests","http4xxResponses","http5xxResponses","bandwidth","bandwidthVolume"],"description":"Type of metric to fetch"},"metricUnit":{"type":"string","enum":["pct","vCPU","mb","kbps","rps","count"],"example":"pct"},"metricResolution":{"type":"number","format":"float","example":10}},"required":["metricId","metricUnit"],"additionalProperties":false},"values":{"type":"array","items":{"type":"object","properties":{"metadata":{"type":"object","properties":{"containerId":{"type":"string","example":"nginx-669cc865b7-5458n"},"volumeId":{"type":"string","example":"data-volume-1"}},"required":["containerId"],"additionalProperties":false},"data":{"type":"array","items":{"type":"object","properties":{"value":{"type":"number","format":"float","example":0.5},"ts":{"type":"string","format":"date-time","example":"2023-03-21T15:01:17.310Z"}},"required":["value","ts"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}},"required":["values"],"additionalProperties":false},"http5xxResponses":{"type":"object","properties":{"metricInfo":{"type":"object","properties":{"metricId":{"type":"string","enum":["cpu","memory","networkIngress","networkEgress","tcpConnectionsOpen","diskUsage","requests","http4xxResponses","http5xxResponses","bandwidth","bandwidthVolume"],"description":"Type of metric to fetch"},"metricUnit":{"type":"string","enum":["pct","vCPU","mb","kbps","rps","count"],"example":"pct"},"metricResolution":{"type":"number","format":"float","example":10}},"required":["metricId","metricUnit"],"additionalProperties":false},"values":{"type":"array","items":{"type":"object","properties":{"metadata":{"type":"object","properties":{"containerId":{"type":"string","example":"nginx-669cc865b7-5458n"},"volumeId":{"type":"string","example":"data-volume-1"}},"required":["containerId"],"additionalProperties":false},"data":{"type":"array","items":{"type":"object","properties":{"value":{"type":"number","format":"float","example":0.5},"ts":{"type":"string","format":"date-time","example":"2023-03-21T15:01:17.310Z"}},"required":["value","ts"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}},"required":["values"],"additionalProperties":false},"bandwidth":{"type":"object","properties":{"metricInfo":{"type":"object","properties":{"metricId":{"type":"string","enum":["cpu","memory","networkIngress","networkEgress","tcpConnectionsOpen","diskUsage","requests","http4xxResponses","http5xxResponses","bandwidth","bandwidthVolume"],"description":"Type of metric to fetch"},"metricUnit":{"type":"string","enum":["pct","vCPU","mb","kbps","rps","count"],"example":"pct"},"metricResolution":{"type":"number","format":"float","example":10}},"required":["metricId","metricUnit"],"additionalProperties":false},"values":{"type":"array","items":{"type":"object","properties":{"metadata":{"type":"object","properties":{"containerId":{"type":"string","example":"nginx-669cc865b7-5458n"},"volumeId":{"type":"string","example":"data-volume-1"}},"required":["containerId"],"additionalProperties":false},"data":{"type":"array","items":{"type":"object","properties":{"value":{"type":"number","format":"float","example":0.5},"ts":{"type":"string","format":"date-time","example":"2023-03-21T15:01:17.310Z"}},"required":["value","ts"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}},"required":["values"],"additionalProperties":false},"bandwidthVolume":{"type":"object","properties":{"metricInfo":{"type":"object","properties":{"metricId":{"type":"string","enum":["cpu","memory","networkIngress","networkEgress","tcpConnectionsOpen","diskUsage","requests","http4xxResponses","http5xxResponses","bandwidth","bandwidthVolume"],"description":"Type of metric to fetch"},"metricUnit":{"type":"string","enum":["pct","vCPU","mb","kbps","rps","count"],"example":"pct"},"metricResolution":{"type":"number","format":"float","example":10}},"required":["metricId","metricUnit"],"additionalProperties":false},"values":{"type":"array","items":{"type":"object","properties":{"metadata":{"type":"object","properties":{"containerId":{"type":"string","example":"nginx-669cc865b7-5458n"},"volumeId":{"type":"string","example":"data-volume-1"}},"required":["containerId"],"additionalProperties":false},"data":{"type":"array","items":{"type":"object","properties":{"value":{"type":"number","format":"float","example":0.5},"ts":{"type":"string","format":"date-time","example":"2023-03-21T15:01:17.310Z"}},"required":["value","ts"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}},"required":["values"],"additionalProperties":false}},"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Services","project"],"security":[],"x-nf-jsclient":[{"title":"Range","description":"Query over a range","schema":{"type":"object","properties":{"containerName":{"type":"string","minLength":3,"maxLength":64,"description":"Limits metrics to a specific container.","example":"my-container-67d6d748c5-kgvwh","default":"all"},"metricTypes":{"type":"string","enum":["cpu","memory","networkIngress","networkEgress","tcpConnectionsOpen","diskUsage","requests","http4xxResponses","http5xxResponses","bandwidth","bandwidthVolume"],"description":"Type of metric. Multiple metric types can be selected by specifying the query parameter repeatedly."},"startTime":{"type":"string","format":"date-time","description":"Fetch metrics generated after this timestamp. Only valid for queryType: `range`.","example":"2023-02-16T14:00:00.000Z"},"endTime":{"type":"string","format":"date-time","description":"Fetch metrics generated before this timestamp. Only valid for queryType: `range`.","example":"2023-02-16T15:00:00.000Z"},"duration":{"type":"integer","description":"Range duration in seconds. If set, only one of `startTime` or `endTime` can be set.","example":600}},"additionalProperties":false},"x-nf-cli-command":["get","service","metrics-range"]},{"title":"Single","description":"Query a specific timestamp","schema":{"type":"object","properties":{"containerName":{"type":"string","minLength":3,"maxLength":64,"description":"Limits metrics to a specific container.","example":"my-container-67d6d748c5-kgvwh","default":"all"},"metricTypes":{"type":"string","enum":["cpu","memory","networkIngress","networkEgress","tcpConnectionsOpen","diskUsage","requests","http4xxResponses","http5xxResponses","bandwidth","bandwidthVolume"],"description":"Type of metric. Multiple metric types can be selected by specifying the query parameter repeatedly."},"timestamp":{"type":"string","format":"date-time","description":"Fetch metrics at this timestamp. If not provided will use current time. Only valid for queryType: `single`.","example":"2023-02-16T14:00:00.000Z"}},"additionalProperties":false},"x-nf-cli-command":["get","service","metrics"]}],"x-nf-permission-required":"Project > Services > Deployment > View Instance Metrics","x-nf-team-scoped":true,"x-nf-cli-command":["get","service","metrics"]},"v1-projects--projectId--services--serviceId--metrics-get-team-scoped":{"operationId":"getProjectsServicesServiceidMetrics","summary":"Get service metrics","description":"Get metrics for a service","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"serviceId","type":"string","required":true,"description":"ID of the service","example":"example-service","in":"path","schema":{"name":"serviceId","type":"string","required":true,"description":"ID of the service","example":"example-service","in":"path"}},{"name":"queryType","type":"string","enum":["range","single"],"description":"Selects metrics for specified timestamp.","examples":["range","single"],"default":"single","in":"query","schema":{"name":"queryType","type":"string","enum":["range","single"],"description":"Selects metrics for specified timestamp.","examples":["range","single"],"default":"single","in":"query"}},{"name":"metricTypes","type":"string","enum":["cpu","memory","networkIngress","networkEgress","tcpConnectionsOpen","diskUsage","requests","http4xxResponses","http5xxResponses","bandwidth","bandwidthVolume"],"description":"Type of metric. Multiple metric types can be selected by specifying the query parameter repeatedly.","in":"query","schema":{"name":"metricTypes","type":"string","enum":["cpu","memory","networkIngress","networkEgress","tcpConnectionsOpen","diskUsage","requests","http4xxResponses","http5xxResponses","bandwidth","bandwidthVolume"],"description":"Type of metric. Multiple metric types can be selected by specifying the query parameter repeatedly.","in":"query"}},{"name":"startTime","type":"string","format":"date-time","description":"Fetch metrics generated after this timestamp. Only valid for queryType: `range`.","example":"2023-02-16T14:00:00.000Z","in":"query","schema":{"name":"startTime","type":"string","format":"date-time","description":"Fetch metrics generated after this timestamp. Only valid for queryType: `range`.","example":"2023-02-16T14:00:00.000Z","in":"query"}},{"name":"endTime","type":"string","format":"date-time","description":"Fetch metrics generated before this timestamp. Only valid for queryType: `range`.","example":"2023-02-16T15:00:00.000Z","in":"query","schema":{"name":"endTime","type":"string","format":"date-time","description":"Fetch metrics generated before this timestamp. Only valid for queryType: `range`.","example":"2023-02-16T15:00:00.000Z","in":"query"}},{"name":"duration","type":"integer","description":"Range duration in seconds. If set, only one of `startTime` or `endTime` can be set.","example":600,"in":"query","schema":{"name":"duration","type":"integer","description":"Range duration in seconds. If set, only one of `startTime` or `endTime` can be set.","example":600,"in":"query"}},{"name":"containerName","type":"string","minLength":3,"maxLength":64,"description":"Limits metrics to a specific container.","examples":["my-container-67d6d748c5-kgvwh","my-container-67d6d748c5-kgvwh"],"default":"all","in":"query","schema":{"name":"containerName","type":"string","minLength":3,"maxLength":64,"description":"Limits metrics to a specific container.","examples":["my-container-67d6d748c5-kgvwh","my-container-67d6d748c5-kgvwh"],"default":"all","in":"query"}},{"name":"deploymentId","type":"string","description":"Limits metrics to a specific deployment","examples":["latest","latest"],"in":"query","schema":{"name":"deploymentId","type":"string","description":"Limits metrics to a specific deployment","examples":["latest","latest"],"in":"query"}},{"name":"time","type":"string","format":"date-time","description":"Fetch metrics at this timestamp. If not provided will use current time. Only valid for queryType: `single`.","example":"2023-02-16T14:00:00.000Z","in":"query","schema":{"name":"time","type":"string","format":"date-time","description":"Fetch metrics at this timestamp. If not provided will use current time. Only valid for queryType: `single`.","example":"2023-02-16T14:00:00.000Z","in":"query"}}],"responses":{"200":{"description":"List of metrics values","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"cpu":{"type":"object","properties":{"metricInfo":{"type":"object","properties":{"metricId":{"type":"string","enum":["cpu","memory","networkIngress","networkEgress","tcpConnectionsOpen","diskUsage","requests","http4xxResponses","http5xxResponses","bandwidth","bandwidthVolume"],"description":"Type of metric to fetch"},"metricUnit":{"type":"string","enum":["pct","vCPU","mb","kbps","rps","count"],"example":"pct"},"metricResolution":{"type":"number","format":"float","example":10}},"required":["metricId","metricUnit"],"additionalProperties":false},"values":{"type":"array","items":{"type":"object","properties":{"metadata":{"type":"object","properties":{"containerId":{"type":"string","example":"nginx-669cc865b7-5458n"},"volumeId":{"type":"string","example":"data-volume-1"}},"required":["containerId"],"additionalProperties":false},"data":{"type":"array","items":{"type":"object","properties":{"value":{"type":"number","format":"float","example":0.5},"ts":{"type":"string","format":"date-time","example":"2023-03-21T15:01:17.310Z"}},"required":["value","ts"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}},"required":["values"],"additionalProperties":false},"memory":{"type":"object","properties":{"metricInfo":{"type":"object","properties":{"metricId":{"type":"string","enum":["cpu","memory","networkIngress","networkEgress","tcpConnectionsOpen","diskUsage","requests","http4xxResponses","http5xxResponses","bandwidth","bandwidthVolume"],"description":"Type of metric to fetch"},"metricUnit":{"type":"string","enum":["pct","vCPU","mb","kbps","rps","count"],"example":"pct"},"metricResolution":{"type":"number","format":"float","example":10}},"required":["metricId","metricUnit"],"additionalProperties":false},"values":{"type":"array","items":{"type":"object","properties":{"metadata":{"type":"object","properties":{"containerId":{"type":"string","example":"nginx-669cc865b7-5458n"},"volumeId":{"type":"string","example":"data-volume-1"}},"required":["containerId"],"additionalProperties":false},"data":{"type":"array","items":{"type":"object","properties":{"value":{"type":"number","format":"float","example":0.5},"ts":{"type":"string","format":"date-time","example":"2023-03-21T15:01:17.310Z"}},"required":["value","ts"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}},"required":["values"],"additionalProperties":false},"networkIngress":{"type":"object","properties":{"metricInfo":{"type":"object","properties":{"metricId":{"type":"string","enum":["cpu","memory","networkIngress","networkEgress","tcpConnectionsOpen","diskUsage","requests","http4xxResponses","http5xxResponses","bandwidth","bandwidthVolume"],"description":"Type of metric to fetch"},"metricUnit":{"type":"string","enum":["pct","vCPU","mb","kbps","rps","count"],"example":"pct"},"metricResolution":{"type":"number","format":"float","example":10}},"required":["metricId","metricUnit"],"additionalProperties":false},"values":{"type":"array","items":{"type":"object","properties":{"metadata":{"type":"object","properties":{"containerId":{"type":"string","example":"nginx-669cc865b7-5458n"},"volumeId":{"type":"string","example":"data-volume-1"}},"required":["containerId"],"additionalProperties":false},"data":{"type":"array","items":{"type":"object","properties":{"value":{"type":"number","format":"float","example":0.5},"ts":{"type":"string","format":"date-time","example":"2023-03-21T15:01:17.310Z"}},"required":["value","ts"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}},"required":["values"],"additionalProperties":false},"networkEgress":{"type":"object","properties":{"metricInfo":{"type":"object","properties":{"metricId":{"type":"string","enum":["cpu","memory","networkIngress","networkEgress","tcpConnectionsOpen","diskUsage","requests","http4xxResponses","http5xxResponses","bandwidth","bandwidthVolume"],"description":"Type of metric to fetch"},"metricUnit":{"type":"string","enum":["pct","vCPU","mb","kbps","rps","count"],"example":"pct"},"metricResolution":{"type":"number","format":"float","example":10}},"required":["metricId","metricUnit"],"additionalProperties":false},"values":{"type":"array","items":{"type":"object","properties":{"metadata":{"type":"object","properties":{"containerId":{"type":"string","example":"nginx-669cc865b7-5458n"},"volumeId":{"type":"string","example":"data-volume-1"}},"required":["containerId"],"additionalProperties":false},"data":{"type":"array","items":{"type":"object","properties":{"value":{"type":"number","format":"float","example":0.5},"ts":{"type":"string","format":"date-time","example":"2023-03-21T15:01:17.310Z"}},"required":["value","ts"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}},"required":["values"],"additionalProperties":false},"tcpConnectionsOpen":{"type":"object","properties":{"metricInfo":{"type":"object","properties":{"metricId":{"type":"string","enum":["cpu","memory","networkIngress","networkEgress","tcpConnectionsOpen","diskUsage","requests","http4xxResponses","http5xxResponses","bandwidth","bandwidthVolume"],"description":"Type of metric to fetch"},"metricUnit":{"type":"string","enum":["pct","vCPU","mb","kbps","rps","count"],"example":"pct"},"metricResolution":{"type":"number","format":"float","example":10}},"required":["metricId","metricUnit"],"additionalProperties":false},"values":{"type":"array","items":{"type":"object","properties":{"metadata":{"type":"object","properties":{"containerId":{"type":"string","example":"nginx-669cc865b7-5458n"},"volumeId":{"type":"string","example":"data-volume-1"}},"required":["containerId"],"additionalProperties":false},"data":{"type":"array","items":{"type":"object","properties":{"value":{"type":"number","format":"float","example":0.5},"ts":{"type":"string","format":"date-time","example":"2023-03-21T15:01:17.310Z"}},"required":["value","ts"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}},"required":["values"],"additionalProperties":false},"diskUsage":{"type":"object","properties":{"metricInfo":{"type":"object","properties":{"metricId":{"type":"string","enum":["cpu","memory","networkIngress","networkEgress","tcpConnectionsOpen","diskUsage","requests","http4xxResponses","http5xxResponses","bandwidth","bandwidthVolume"],"description":"Type of metric to fetch"},"metricUnit":{"type":"string","enum":["pct","vCPU","mb","kbps","rps","count"],"example":"pct"},"metricResolution":{"type":"number","format":"float","example":10}},"required":["metricId","metricUnit"],"additionalProperties":false},"values":{"type":"array","items":{"type":"object","properties":{"metadata":{"type":"object","properties":{"containerId":{"type":"string","example":"nginx-669cc865b7-5458n"},"volumeId":{"type":"string","example":"data-volume-1"}},"required":["containerId"],"additionalProperties":false},"data":{"type":"array","items":{"type":"object","properties":{"value":{"type":"number","format":"float","example":0.5},"ts":{"type":"string","format":"date-time","example":"2023-03-21T15:01:17.310Z"}},"required":["value","ts"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}},"required":["values"],"additionalProperties":false},"requests":{"type":"object","properties":{"metricInfo":{"type":"object","properties":{"metricId":{"type":"string","enum":["cpu","memory","networkIngress","networkEgress","tcpConnectionsOpen","diskUsage","requests","http4xxResponses","http5xxResponses","bandwidth","bandwidthVolume"],"description":"Type of metric to fetch"},"metricUnit":{"type":"string","enum":["pct","vCPU","mb","kbps","rps","count"],"example":"pct"},"metricResolution":{"type":"number","format":"float","example":10}},"required":["metricId","metricUnit"],"additionalProperties":false},"values":{"type":"array","items":{"type":"object","properties":{"metadata":{"type":"object","properties":{"containerId":{"type":"string","example":"nginx-669cc865b7-5458n"},"volumeId":{"type":"string","example":"data-volume-1"}},"required":["containerId"],"additionalProperties":false},"data":{"type":"array","items":{"type":"object","properties":{"value":{"type":"number","format":"float","example":0.5},"ts":{"type":"string","format":"date-time","example":"2023-03-21T15:01:17.310Z"}},"required":["value","ts"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}},"required":["values"],"additionalProperties":false},"http4xxResponses":{"type":"object","properties":{"metricInfo":{"type":"object","properties":{"metricId":{"type":"string","enum":["cpu","memory","networkIngress","networkEgress","tcpConnectionsOpen","diskUsage","requests","http4xxResponses","http5xxResponses","bandwidth","bandwidthVolume"],"description":"Type of metric to fetch"},"metricUnit":{"type":"string","enum":["pct","vCPU","mb","kbps","rps","count"],"example":"pct"},"metricResolution":{"type":"number","format":"float","example":10}},"required":["metricId","metricUnit"],"additionalProperties":false},"values":{"type":"array","items":{"type":"object","properties":{"metadata":{"type":"object","properties":{"containerId":{"type":"string","example":"nginx-669cc865b7-5458n"},"volumeId":{"type":"string","example":"data-volume-1"}},"required":["containerId"],"additionalProperties":false},"data":{"type":"array","items":{"type":"object","properties":{"value":{"type":"number","format":"float","example":0.5},"ts":{"type":"string","format":"date-time","example":"2023-03-21T15:01:17.310Z"}},"required":["value","ts"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}},"required":["values"],"additionalProperties":false},"http5xxResponses":{"type":"object","properties":{"metricInfo":{"type":"object","properties":{"metricId":{"type":"string","enum":["cpu","memory","networkIngress","networkEgress","tcpConnectionsOpen","diskUsage","requests","http4xxResponses","http5xxResponses","bandwidth","bandwidthVolume"],"description":"Type of metric to fetch"},"metricUnit":{"type":"string","enum":["pct","vCPU","mb","kbps","rps","count"],"example":"pct"},"metricResolution":{"type":"number","format":"float","example":10}},"required":["metricId","metricUnit"],"additionalProperties":false},"values":{"type":"array","items":{"type":"object","properties":{"metadata":{"type":"object","properties":{"containerId":{"type":"string","example":"nginx-669cc865b7-5458n"},"volumeId":{"type":"string","example":"data-volume-1"}},"required":["containerId"],"additionalProperties":false},"data":{"type":"array","items":{"type":"object","properties":{"value":{"type":"number","format":"float","example":0.5},"ts":{"type":"string","format":"date-time","example":"2023-03-21T15:01:17.310Z"}},"required":["value","ts"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}},"required":["values"],"additionalProperties":false},"bandwidth":{"type":"object","properties":{"metricInfo":{"type":"object","properties":{"metricId":{"type":"string","enum":["cpu","memory","networkIngress","networkEgress","tcpConnectionsOpen","diskUsage","requests","http4xxResponses","http5xxResponses","bandwidth","bandwidthVolume"],"description":"Type of metric to fetch"},"metricUnit":{"type":"string","enum":["pct","vCPU","mb","kbps","rps","count"],"example":"pct"},"metricResolution":{"type":"number","format":"float","example":10}},"required":["metricId","metricUnit"],"additionalProperties":false},"values":{"type":"array","items":{"type":"object","properties":{"metadata":{"type":"object","properties":{"containerId":{"type":"string","example":"nginx-669cc865b7-5458n"},"volumeId":{"type":"string","example":"data-volume-1"}},"required":["containerId"],"additionalProperties":false},"data":{"type":"array","items":{"type":"object","properties":{"value":{"type":"number","format":"float","example":0.5},"ts":{"type":"string","format":"date-time","example":"2023-03-21T15:01:17.310Z"}},"required":["value","ts"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}},"required":["values"],"additionalProperties":false},"bandwidthVolume":{"type":"object","properties":{"metricInfo":{"type":"object","properties":{"metricId":{"type":"string","enum":["cpu","memory","networkIngress","networkEgress","tcpConnectionsOpen","diskUsage","requests","http4xxResponses","http5xxResponses","bandwidth","bandwidthVolume"],"description":"Type of metric to fetch"},"metricUnit":{"type":"string","enum":["pct","vCPU","mb","kbps","rps","count"],"example":"pct"},"metricResolution":{"type":"number","format":"float","example":10}},"required":["metricId","metricUnit"],"additionalProperties":false},"values":{"type":"array","items":{"type":"object","properties":{"metadata":{"type":"object","properties":{"containerId":{"type":"string","example":"nginx-669cc865b7-5458n"},"volumeId":{"type":"string","example":"data-volume-1"}},"required":["containerId"],"additionalProperties":false},"data":{"type":"array","items":{"type":"object","properties":{"value":{"type":"number","format":"float","example":0.5},"ts":{"type":"string","format":"date-time","example":"2023-03-21T15:01:17.310Z"}},"required":["value","ts"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}},"required":["values"],"additionalProperties":false}},"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Services","project"],"security":[],"x-nf-jsclient":[{"title":"Range","description":"Query over a range","schema":{"type":"object","properties":{"containerName":{"type":"string","minLength":3,"maxLength":64,"description":"Limits metrics to a specific container.","example":"my-container-67d6d748c5-kgvwh","default":"all"},"metricTypes":{"type":"string","enum":["cpu","memory","networkIngress","networkEgress","tcpConnectionsOpen","diskUsage","requests","http4xxResponses","http5xxResponses","bandwidth","bandwidthVolume"],"description":"Type of metric. Multiple metric types can be selected by specifying the query parameter repeatedly."},"startTime":{"type":"string","format":"date-time","description":"Fetch metrics generated after this timestamp. Only valid for queryType: `range`.","example":"2023-02-16T14:00:00.000Z"},"endTime":{"type":"string","format":"date-time","description":"Fetch metrics generated before this timestamp. Only valid for queryType: `range`.","example":"2023-02-16T15:00:00.000Z"},"duration":{"type":"integer","description":"Range duration in seconds. If set, only one of `startTime` or `endTime` can be set.","example":600}},"additionalProperties":false},"x-nf-cli-command":["get","service","metrics-range"]},{"title":"Single","description":"Query a specific timestamp","schema":{"type":"object","properties":{"containerName":{"type":"string","minLength":3,"maxLength":64,"description":"Limits metrics to a specific container.","example":"my-container-67d6d748c5-kgvwh","default":"all"},"metricTypes":{"type":"string","enum":["cpu","memory","networkIngress","networkEgress","tcpConnectionsOpen","diskUsage","requests","http4xxResponses","http5xxResponses","bandwidth","bandwidthVolume"],"description":"Type of metric. Multiple metric types can be selected by specifying the query parameter repeatedly."},"timestamp":{"type":"string","format":"date-time","description":"Fetch metrics at this timestamp. If not provided will use current time. Only valid for queryType: `single`.","example":"2023-02-16T14:00:00.000Z"}},"additionalProperties":false},"x-nf-cli-command":["get","service","metrics"]}],"x-nf-permission-required":"Project > Services > Deployment > View Instance Metrics","x-nf-team-scoped":true,"x-nf-cli-command":["get","service","metrics"]},"v1-projects--projectId--services--serviceId--pause-post":{"operationId":"postProjectsServicesServiceidPause","summary":"Pause service","description":"Pause the given service.","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"serviceId","type":"string","required":true,"description":"ID of the service","example":"example-service","in":"path","schema":{"name":"serviceId","type":"string","required":true,"description":"ID of the service","example":"example-service","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Services","project"],"security":[],"x-nf-permission-required":"Project > Services > General > Update","x-nf-team-scoped":true,"x-nf-cli-command":["pause","service"]},"v1-projects--projectId--services--serviceId--pause-post-team-scoped":{"operationId":"postProjectsServicesServiceidPause","summary":"Pause service","description":"Pause the given service.","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"serviceId","type":"string","required":true,"description":"ID of the service","example":"example-service","in":"path","schema":{"name":"serviceId","type":"string","required":true,"description":"ID of the service","example":"example-service","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Services","project"],"security":[],"x-nf-permission-required":"Project > Services > General > Update","x-nf-team-scoped":true,"x-nf-cli-command":["pause","service"]},"v1-projects--projectId--services--serviceId--ports-get":{"operationId":"getProjectsServicesServiceidPorts","summary":"Get service ports","description":"Lists the ports for the given service.","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"serviceId","type":"string","required":true,"description":"ID of the service","example":"example-service","in":"path","schema":{"name":"serviceId","type":"string","required":true,"description":"ID of the service","example":"example-service","in":"path"}}],"responses":{"200":{"description":"Details about the ports for the service.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"ports":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^[a-z]-?[a-z0-9]+(-[a-z0-9]+)*$","description":"The id used to identify the port across requests.","example":"eonyui"},"name":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","description":"The name of the port used in the public url and UI.","example":"p01"},"internalPort":{"type":"integer","description":"The port number.","example":8080},"protocol":{"type":"string","enum":["HTTP","HTTP/2","TCP","UDP"],"description":"The protocol used by the port.","example":"HTTP"},"public":{"type":"boolean","description":"If true, the port is exposed publicly.","example":true},"dns":{"type":"string","description":"DNS entry for this port.","example":"p01--example-service--default-service--user-abc1.salvo.code.run"},"domains":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"The custom domain redirecting to this port.","example":"app.example.com"},"certificate":{"type":"object","properties":{"inProgress":{"type":"boolean","description":"Is the certificate in the process of being generated?","example":false},"expiryDate":{"type":"string","format":"date-time","description":"The timestamp when the TLS certificate will expire.","example":"2022-04-26T09:25:02.000Z"},"refreshDate":{"type":"string","format":"date-time","description":"The timestamp when a new TLS certificate will be generated.","example":"2022-03-27T09:25:02.000Z"}},"additionalProperties":false,"description":"Details about the TLS certificate generation for this domain."}},"required":["name","certificate"],"additionalProperties":false},"description":"An array of domains that redirect to this port."},"security":{"type":"object","properties":{"credentials":{"type":"array","items":{"type":"object","properties":{"username":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The username to access the service","example":"admin"},"password":{"type":"string","description":"The password to access the service with this username.","example":"password123"},"type":{"type":"string","enum":["basic-auth"],"description":"The type of authentication used","example":"basic-auth"}},"required":["username","password","type"],"additionalProperties":false},"description":"An array of credentials to access the service."},"policies":{"type":"array","items":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","description":"An IP address used by this rule","example":"127.0.0.1"},"description":"An array of IP addresses used for this rule"},"action":{"type":"string","enum":["ALLOW","DENY"],"description":"The action for this rule.","example":"DENY"}},"required":["addresses","action"],"additionalProperties":false},"description":"An array of IP address policies."},"sso":{"type":"object","properties":{"organizationId":{"type":"string","description":"Organization ID of the work OS organization that should be validated.","example":"org_uniquestringidentifier"},"directoryGroupIds":{"type":"array","items":{"type":"string","example":"directory_group_uniquestringidentifier"},"description":"List of directory groupIds, one of which the user has to be a member of."},"allowAnyOrgUsers":{"type":"boolean","description":"Allow entire organization to access this service"},"validateInternalTraffic":{"type":"boolean","description":"Enforce internal traffic through SSO authentication flow","default":false},"setCookieOnRootDomain":{"type":"boolean","description":"Set SSO authentication cookie on root domain","default":false},"allowInternalTrafficViaPublicDns":{"type":"boolean","description":"Allow internal traffic from same or shared projects via public DNS to skip SSO authentication flow","default":false}},"additionalProperties":false,"description":"Configure SSO access control for this port."},"verificationMode":{"type":"string","enum":["or","and"],"description":"Mode used to verify multiple security features like ip policies and SSO authentication"},"headers":{"type":"array","items":{"type":"object","properties":{"regexMode":{"type":"boolean","default":false},"name":{"oneOf":[{"type":"string","x-required":true},{"type":"string","pattern":"^[a-zA-Z0-9_\\-%$+]+$","x-required":true}]},"value":{"type":"string"}},"required":["value"],"additionalProperties":false},"description":"List of header authentication settings, it checks the presence of all headers and compares it against the expected value. Wildcard (*) is supported."}},"additionalProperties":false,"description":"Details about security settings for this port."},"disableNfDomain":{"type":"boolean","description":"Disable routing on the default code.run domain for public HTTP ports with custom domains.","example":false}},"required":["id","name","internalPort","protocol","public","domains"],"additionalProperties":false},"description":"An array of ports of the service."}},"required":["ports"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Services","project"],"security":[],"deprecated":true,"x-nf-permission-required":"Project > Services > General > Read","x-nf-team-scoped":true,"x-nf-cli-command":["get","service","ports"],"x-nf-deprecation-replacement":"/services/get-service","x-nf-deprecation-message":"Requests should instead use the relevant GET endpoint."},"v1-projects--projectId--services--serviceId--ports-get-team-scoped":{"operationId":"getProjectsServicesServiceidPorts","summary":"Get service ports","description":"Lists the ports for the given service.","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"serviceId","type":"string","required":true,"description":"ID of the service","example":"example-service","in":"path","schema":{"name":"serviceId","type":"string","required":true,"description":"ID of the service","example":"example-service","in":"path"}}],"responses":{"200":{"description":"Details about the ports for the service.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"ports":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^[a-z]-?[a-z0-9]+(-[a-z0-9]+)*$","description":"The id used to identify the port across requests.","example":"eonyui"},"name":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","description":"The name of the port used in the public url and UI.","example":"p01"},"internalPort":{"type":"integer","description":"The port number.","example":8080},"protocol":{"type":"string","enum":["HTTP","HTTP/2","TCP","UDP"],"description":"The protocol used by the port.","example":"HTTP"},"public":{"type":"boolean","description":"If true, the port is exposed publicly.","example":true},"dns":{"type":"string","description":"DNS entry for this port.","example":"p01--example-service--default-service--user-abc1.salvo.code.run"},"domains":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"The custom domain redirecting to this port.","example":"app.example.com"},"certificate":{"type":"object","properties":{"inProgress":{"type":"boolean","description":"Is the certificate in the process of being generated?","example":false},"expiryDate":{"type":"string","format":"date-time","description":"The timestamp when the TLS certificate will expire.","example":"2022-04-26T09:25:02.000Z"},"refreshDate":{"type":"string","format":"date-time","description":"The timestamp when a new TLS certificate will be generated.","example":"2022-03-27T09:25:02.000Z"}},"additionalProperties":false,"description":"Details about the TLS certificate generation for this domain."}},"required":["name","certificate"],"additionalProperties":false},"description":"An array of domains that redirect to this port."},"security":{"type":"object","properties":{"credentials":{"type":"array","items":{"type":"object","properties":{"username":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The username to access the service","example":"admin"},"password":{"type":"string","description":"The password to access the service with this username.","example":"password123"},"type":{"type":"string","enum":["basic-auth"],"description":"The type of authentication used","example":"basic-auth"}},"required":["username","password","type"],"additionalProperties":false},"description":"An array of credentials to access the service."},"policies":{"type":"array","items":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","description":"An IP address used by this rule","example":"127.0.0.1"},"description":"An array of IP addresses used for this rule"},"action":{"type":"string","enum":["ALLOW","DENY"],"description":"The action for this rule.","example":"DENY"}},"required":["addresses","action"],"additionalProperties":false},"description":"An array of IP address policies."},"sso":{"type":"object","properties":{"organizationId":{"type":"string","description":"Organization ID of the work OS organization that should be validated.","example":"org_uniquestringidentifier"},"directoryGroupIds":{"type":"array","items":{"type":"string","example":"directory_group_uniquestringidentifier"},"description":"List of directory groupIds, one of which the user has to be a member of."},"allowAnyOrgUsers":{"type":"boolean","description":"Allow entire organization to access this service"},"validateInternalTraffic":{"type":"boolean","description":"Enforce internal traffic through SSO authentication flow","default":false},"setCookieOnRootDomain":{"type":"boolean","description":"Set SSO authentication cookie on root domain","default":false},"allowInternalTrafficViaPublicDns":{"type":"boolean","description":"Allow internal traffic from same or shared projects via public DNS to skip SSO authentication flow","default":false}},"additionalProperties":false,"description":"Configure SSO access control for this port."},"verificationMode":{"type":"string","enum":["or","and"],"description":"Mode used to verify multiple security features like ip policies and SSO authentication"},"headers":{"type":"array","items":{"type":"object","properties":{"regexMode":{"type":"boolean","default":false},"name":{"oneOf":[{"type":"string","x-required":true},{"type":"string","pattern":"^[a-zA-Z0-9_\\-%$+]+$","x-required":true}]},"value":{"type":"string"}},"required":["value"],"additionalProperties":false},"description":"List of header authentication settings, it checks the presence of all headers and compares it against the expected value. Wildcard (*) is supported."}},"additionalProperties":false,"description":"Details about security settings for this port."},"disableNfDomain":{"type":"boolean","description":"Disable routing on the default code.run domain for public HTTP ports with custom domains.","example":false}},"required":["id","name","internalPort","protocol","public","domains"],"additionalProperties":false},"description":"An array of ports of the service."}},"required":["ports"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Services","project"],"security":[],"deprecated":true,"x-nf-permission-required":"Project > Services > General > Read","x-nf-team-scoped":true,"x-nf-cli-command":["get","service","ports"],"x-nf-deprecation-replacement":"/services/get-service","x-nf-deprecation-message":"Requests should instead use the relevant GET endpoint."},"v1-projects--projectId--services--serviceId--ports-post":{"operationId":"postProjectsServicesServiceidPorts","summary":"Update service ports","description":"Updates the list of ports for the given service.","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"serviceId","type":"string","required":true,"description":"ID of the service","example":"example-service","in":"path","schema":{"name":"serviceId","type":"string","required":true,"description":"ID of the service","example":"example-service","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}},"404":{"description":"One of the provided domains has not been registered to this account."}},"tags":["Services","project"],"security":[],"deprecated":true,"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"ports":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^[a-z]-?[a-z0-9]+(-[a-z0-9]+)*$","description":"The id of an existing port. Pass this when changing in order to keep security configurations.","example":"p01"},"name":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":1,"maxLength":8,"description":"The name used to identify the port.","example":"p01"},"internalPort":{"type":"integer","minimum":1,"maximum":65535,"not":{"enum":[15000,15020,65000]},"description":"The port number.","example":12345},"public":{"type":"boolean","description":"If true, the port will be exposed publicly.","example":true,"default":false},"protocol":{"type":"string","enum":["HTTP","HTTP/2","TCP","UDP"],"description":"The protocol to use for the port. Public ports only support `HTTP` and `HTTP/2`.","example":"HTTP"},"domains":{"type":"array","items":{"type":"string","description":"A domain to redirect to this port.","example":"app.example.com"},"description":"An array of domains to redirect to this port. Each domain must first be verified and registered to your account.","default":[]},"security":{"type":"object","properties":{"credentials":{"type":"array","items":{"type":"object","properties":{"username":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The username to access the service","example":"admin"},"password":{"type":"string","description":"The password to access the service with this username.","example":"password123"},"type":{"type":"string","enum":["basic-auth"],"description":"The type of authentication used","example":"basic-auth"}},"required":["username","password","type"],"additionalProperties":false},"description":"An array of credentials to access the service."},"ip":{"type":"array","items":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","description":"An IP address used by this rule","example":"127.0.0.1"},"description":"An array of IP addresses used for this rule"},"action":{"type":"string","enum":["ALLOW","DENY"],"description":"The action for this rule.","example":"DENY"}},"required":["addresses","action"],"additionalProperties":false},"description":"An array of IP address policies."},"policies":{"type":"array","items":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","description":"An IP address used by this rule","example":"127.0.0.1"},"description":"An array of IP addresses used for this rule"},"action":{"type":"string","enum":["ALLOW","DENY"],"description":"The action for this rule.","example":"DENY"}},"required":["addresses","action"],"additionalProperties":false},"description":"An array of IP address policies."},"sso":{"type":"object","properties":{"organizationId":{"type":"string","description":"ID of the SSO organization that the user will have to be a member of"},"directoryGroupIds":{"type":"array","items":{"type":"string"},"description":"Array of directory groups that will have access"},"allowAnyOrgUsers":{"type":"boolean","description":"Allow entire organization to access this service"},"validateInternalTraffic":{"type":"boolean","description":"Enforce internal traffic through SSO authentication flow"},"setCookieOnRootDomain":{"type":"boolean","description":"Set SSO authentication cookie on root domain"},"allowInternalTrafficViaPublicDns":{"type":"boolean","description":"Allow internal traffic from same or shared projects via public DNS to skip SSO authentication flow"}},"additionalProperties":false,"description":"Configure port authentication via SSO"},"headers":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"regexMode":{"type":"boolean","example":false,"default":false},"name":{"type":"string","pattern":"^[a-zA-Z0-9_\\-%$+]+$","example":"headerName"},"value":{"type":"string","example":"headerValue"}},"required":["name","value"],"additionalProperties":false,"description":"Matches provided headers as strings."},{"type":"object","properties":{"regexMode":{"type":"boolean","example":true,"default":false},"name":{"type":"string","example":"headerName"},"value":{"type":"string","example":"headerValue"}},"required":["name","value"],"additionalProperties":false,"description":"Matches provided headers as regex."}]},"description":"List of header authentication settings, it checks the presence of all headers and compares it against the expected value. Wildcard (*) is supported."},"verificationMode":{"type":"string","enum":["or","and"],"description":"Mode used to verify multiple security features like ip policies and SSO authentication"},"securePathConfiguration":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Enable security policies on a path-level style"},"skipSecurityPoliciesForInternalTrafficViaPublicDns":{"type":"boolean","description":"Allow internal traffic from same or shared projects via public DNS to skip all security policies"},"rules":{"type":"array","items":{"type":"object","properties":{"paths":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"path":{"type":"string","pattern":"^\\/([_a-zA-Z0-9-&?=.]*)((\\/[_a-zA-Z0-9-&?=.]+)*(\\/)?)?$"},"routingMode":{"type":"string","enum":["prefix"],"description":"Mode of the path, determining how the URI will be interpreted.","example":"prefix"},"priority":{"type":"integer","minimum":0,"maximum":100,"example":80}},"required":["path","routingMode","priority"],"additionalProperties":false,"description":"Route when the path starts with the provided prefix."},{"type":"object","properties":{"path":{"type":"string","pattern":"^\\/([_a-zA-Z0-9-&?=.]*)((\\/[_a-zA-Z0-9-&?=.]+)*(\\/)?)?$"},"routingMode":{"type":"string","enum":["exact"],"description":"Mode of the path, determining how the URI will be interpreted.","example":"exact"},"priority":{"type":"integer","minimum":0,"maximum":100,"example":80}},"required":["path","routingMode","priority"],"additionalProperties":false,"description":"Route when the path is an exact match."},{"type":"object","properties":{"path":{"type":"string"},"routingMode":{"type":"string","enum":["regex"],"description":"Mode of the path, determining how the URI will be interpreted.","example":"regex"},"priority":{"type":"integer","minimum":0,"maximum":100,"example":80}},"required":["path","routingMode","priority"],"additionalProperties":false,"description":"Route when the path matches the provided regex."}],"description":"Data about how the path should be handled."},"description":"Array of path objects which represent the paths and their priority for which the security policies will be enforced"},"accessMode":{"type":"string","enum":["protected","unprotected"],"description":"Specify the way the path rule will behave when processing policies. This enables an allow-list/deny-list approach for access control on each path","example":"protected"},"securityPolicies":{"type":"object","properties":{"orPolicies":{"type":"object","properties":{"credentials":{"type":"array","items":{"type":"object","properties":{"username":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The username to access the service","example":"admin"},"password":{"type":"string","description":"The password to access the service with this username.","example":"password123"},"type":{"type":"string","enum":["basic-auth"],"description":"The type of authentication used","example":"basic-auth"}},"required":["username","password","type"],"additionalProperties":false},"description":"An array of credentials to access the service."},"ip":{"type":"array","items":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","description":"An IP address used by this rule","example":"127.0.0.1"},"description":"An array of IP addresses used for this rule"},"action":{"type":"string","enum":["ALLOW","DENY"],"description":"The action for this rule.","example":"DENY"}},"required":["addresses","action"],"additionalProperties":false},"description":"An array of IP address policies."},"policies":{"type":"array","items":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","description":"An IP address used by this rule","example":"127.0.0.1"},"description":"An array of IP addresses used for this rule"},"action":{"type":"string","enum":["ALLOW","DENY"],"description":"The action for this rule.","example":"DENY"}},"required":["addresses","action"],"additionalProperties":false},"description":"An array of IP address policies."},"sso":{"type":"object","properties":{"organizationId":{"type":"string","description":"ID of the SSO organization that the user will have to be a member of"},"directoryGroupIds":{"type":"array","items":{"type":"string"},"description":"Array of directory groups that will have access"},"allowAnyOrgUsers":{"type":"boolean","description":"Allow entire organization to access this service"},"validateInternalTraffic":{"type":"boolean","description":"Enforce internal traffic through SSO authentication flow"},"setCookieOnRootDomain":{"type":"boolean","description":"Set SSO authentication cookie on root domain"},"allowInternalTrafficViaPublicDns":{"type":"boolean","description":"Allow internal traffic from same or shared projects via public DNS to skip SSO authentication flow"}},"additionalProperties":false,"description":"Configure port authentication via SSO"},"headers":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"regexMode":{"type":"boolean","example":false,"default":false},"name":{"type":"string","pattern":"^[a-zA-Z0-9_\\-%$+]+$","example":"headerName"},"value":{"type":"string","example":"headerValue"}},"required":["name","value"],"additionalProperties":false,"description":"Matches provided headers as strings."},{"type":"object","properties":{"regexMode":{"type":"boolean","example":true,"default":false},"name":{"type":"string","example":"headerName"},"value":{"type":"string","example":"headerValue"}},"required":["name","value"],"additionalProperties":false,"description":"Matches provided headers as regex."}]},"description":"List of header authentication settings, it checks the presence of all headers and compares it against the expected value. Wildcard (*) is supported."}},"additionalProperties":false},"requiredPolicies":{"type":"object","properties":{"credentials":{"type":"array","items":{"type":"object","properties":{"username":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The username to access the service","example":"admin"},"password":{"type":"string","description":"The password to access the service with this username.","example":"password123"},"type":{"type":"string","enum":["basic-auth"],"description":"The type of authentication used","example":"basic-auth"}},"required":["username","password","type"],"additionalProperties":false},"description":"An array of credentials to access the service."},"ip":{"type":"array","items":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","description":"An IP address used by this rule","example":"127.0.0.1"},"description":"An array of IP addresses used for this rule"},"action":{"type":"string","enum":["ALLOW","DENY"],"description":"The action for this rule.","example":"DENY"}},"required":["addresses","action"],"additionalProperties":false},"description":"An array of IP address policies."},"policies":{"type":"array","items":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","description":"An IP address used by this rule","example":"127.0.0.1"},"description":"An array of IP addresses used for this rule"},"action":{"type":"string","enum":["ALLOW","DENY"],"description":"The action for this rule.","example":"DENY"}},"required":["addresses","action"],"additionalProperties":false},"description":"An array of IP address policies."},"sso":{"type":"object","properties":{"organizationId":{"type":"string","description":"ID of the SSO organization that the user will have to be a member of"},"directoryGroupIds":{"type":"array","items":{"type":"string"},"description":"Array of directory groups that will have access"},"allowAnyOrgUsers":{"type":"boolean","description":"Allow entire organization to access this service"},"validateInternalTraffic":{"type":"boolean","description":"Enforce internal traffic through SSO authentication flow"},"setCookieOnRootDomain":{"type":"boolean","description":"Set SSO authentication cookie on root domain"},"allowInternalTrafficViaPublicDns":{"type":"boolean","description":"Allow internal traffic from same or shared projects via public DNS to skip SSO authentication flow"}},"additionalProperties":false,"description":"Configure port authentication via SSO"},"headers":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"regexMode":{"type":"boolean","example":false,"default":false},"name":{"type":"string","pattern":"^[a-zA-Z0-9_\\-%$+]+$","example":"headerName"},"value":{"type":"string","example":"headerValue"}},"required":["name","value"],"additionalProperties":false,"description":"Matches provided headers as strings."},{"type":"object","properties":{"regexMode":{"type":"boolean","example":true,"default":false},"name":{"type":"string","example":"headerName"},"value":{"type":"string","example":"headerValue"}},"required":["name","value"],"additionalProperties":false,"description":"Matches provided headers as regex."}]},"description":"List of header authentication settings, it checks the presence of all headers and compares it against the expected value. Wildcard (*) is supported."}},"additionalProperties":false}},"additionalProperties":false}},"required":["paths","accessMode"],"additionalProperties":false},"default":[]}},"additionalProperties":false}},"additionalProperties":false,"default":{"credentials":[],"policies":[],"sso":{}}},"disableNfDomain":{"type":"boolean","description":"Disable routing on the default code.run domain for public HTTP ports with custom domains.","default":false}},"required":["name","internalPort","protocol"],"additionalProperties":false},"uniqueItems":true,"description":"An array of ports to replace or update existing ports with."}},"required":["ports"],"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Project > Services > General > Update","x-nf-team-scoped":true,"x-nf-cli-command":["update","service","ports"],"x-nf-deprecation-replacement":"/services/patch-combined-service","x-nf-deprecation-message":"Requests should instead use the relevant PATCH endpoint."},"v1-projects--projectId--services--serviceId--ports-post-team-scoped":{"operationId":"postProjectsServicesServiceidPorts","summary":"Update service ports","description":"Updates the list of ports for the given service.","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"serviceId","type":"string","required":true,"description":"ID of the service","example":"example-service","in":"path","schema":{"name":"serviceId","type":"string","required":true,"description":"ID of the service","example":"example-service","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}},"404":{"description":"One of the provided domains has not been registered to this account."}},"tags":["Services","project"],"security":[],"deprecated":true,"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"ports":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^[a-z]-?[a-z0-9]+(-[a-z0-9]+)*$","description":"The id of an existing port. Pass this when changing in order to keep security configurations.","example":"p01"},"name":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":1,"maxLength":8,"description":"The name used to identify the port.","example":"p01"},"internalPort":{"type":"integer","minimum":1,"maximum":65535,"not":{"enum":[15000,15020,65000]},"description":"The port number.","example":12345},"public":{"type":"boolean","description":"If true, the port will be exposed publicly.","example":true,"default":false},"protocol":{"type":"string","enum":["HTTP","HTTP/2","TCP","UDP"],"description":"The protocol to use for the port. Public ports only support `HTTP` and `HTTP/2`.","example":"HTTP"},"domains":{"type":"array","items":{"type":"string","description":"A domain to redirect to this port.","example":"app.example.com"},"description":"An array of domains to redirect to this port. Each domain must first be verified and registered to your account.","default":[]},"security":{"type":"object","properties":{"credentials":{"type":"array","items":{"type":"object","properties":{"username":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The username to access the service","example":"admin"},"password":{"type":"string","description":"The password to access the service with this username.","example":"password123"},"type":{"type":"string","enum":["basic-auth"],"description":"The type of authentication used","example":"basic-auth"}},"required":["username","password","type"],"additionalProperties":false},"description":"An array of credentials to access the service."},"ip":{"type":"array","items":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","description":"An IP address used by this rule","example":"127.0.0.1"},"description":"An array of IP addresses used for this rule"},"action":{"type":"string","enum":["ALLOW","DENY"],"description":"The action for this rule.","example":"DENY"}},"required":["addresses","action"],"additionalProperties":false},"description":"An array of IP address policies."},"policies":{"type":"array","items":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","description":"An IP address used by this rule","example":"127.0.0.1"},"description":"An array of IP addresses used for this rule"},"action":{"type":"string","enum":["ALLOW","DENY"],"description":"The action for this rule.","example":"DENY"}},"required":["addresses","action"],"additionalProperties":false},"description":"An array of IP address policies."},"sso":{"type":"object","properties":{"organizationId":{"type":"string","description":"ID of the SSO organization that the user will have to be a member of"},"directoryGroupIds":{"type":"array","items":{"type":"string"},"description":"Array of directory groups that will have access"},"allowAnyOrgUsers":{"type":"boolean","description":"Allow entire organization to access this service"},"validateInternalTraffic":{"type":"boolean","description":"Enforce internal traffic through SSO authentication flow"},"setCookieOnRootDomain":{"type":"boolean","description":"Set SSO authentication cookie on root domain"},"allowInternalTrafficViaPublicDns":{"type":"boolean","description":"Allow internal traffic from same or shared projects via public DNS to skip SSO authentication flow"}},"additionalProperties":false,"description":"Configure port authentication via SSO"},"headers":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"regexMode":{"type":"boolean","example":false,"default":false},"name":{"type":"string","pattern":"^[a-zA-Z0-9_\\-%$+]+$","example":"headerName"},"value":{"type":"string","example":"headerValue"}},"required":["name","value"],"additionalProperties":false,"description":"Matches provided headers as strings."},{"type":"object","properties":{"regexMode":{"type":"boolean","example":true,"default":false},"name":{"type":"string","example":"headerName"},"value":{"type":"string","example":"headerValue"}},"required":["name","value"],"additionalProperties":false,"description":"Matches provided headers as regex."}]},"description":"List of header authentication settings, it checks the presence of all headers and compares it against the expected value. Wildcard (*) is supported."},"verificationMode":{"type":"string","enum":["or","and"],"description":"Mode used to verify multiple security features like ip policies and SSO authentication"},"securePathConfiguration":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Enable security policies on a path-level style"},"skipSecurityPoliciesForInternalTrafficViaPublicDns":{"type":"boolean","description":"Allow internal traffic from same or shared projects via public DNS to skip all security policies"},"rules":{"type":"array","items":{"type":"object","properties":{"paths":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"path":{"type":"string","pattern":"^\\/([_a-zA-Z0-9-&?=.]*)((\\/[_a-zA-Z0-9-&?=.]+)*(\\/)?)?$"},"routingMode":{"type":"string","enum":["prefix"],"description":"Mode of the path, determining how the URI will be interpreted.","example":"prefix"},"priority":{"type":"integer","minimum":0,"maximum":100,"example":80}},"required":["path","routingMode","priority"],"additionalProperties":false,"description":"Route when the path starts with the provided prefix."},{"type":"object","properties":{"path":{"type":"string","pattern":"^\\/([_a-zA-Z0-9-&?=.]*)((\\/[_a-zA-Z0-9-&?=.]+)*(\\/)?)?$"},"routingMode":{"type":"string","enum":["exact"],"description":"Mode of the path, determining how the URI will be interpreted.","example":"exact"},"priority":{"type":"integer","minimum":0,"maximum":100,"example":80}},"required":["path","routingMode","priority"],"additionalProperties":false,"description":"Route when the path is an exact match."},{"type":"object","properties":{"path":{"type":"string"},"routingMode":{"type":"string","enum":["regex"],"description":"Mode of the path, determining how the URI will be interpreted.","example":"regex"},"priority":{"type":"integer","minimum":0,"maximum":100,"example":80}},"required":["path","routingMode","priority"],"additionalProperties":false,"description":"Route when the path matches the provided regex."}],"description":"Data about how the path should be handled."},"description":"Array of path objects which represent the paths and their priority for which the security policies will be enforced"},"accessMode":{"type":"string","enum":["protected","unprotected"],"description":"Specify the way the path rule will behave when processing policies. This enables an allow-list/deny-list approach for access control on each path","example":"protected"},"securityPolicies":{"type":"object","properties":{"orPolicies":{"type":"object","properties":{"credentials":{"type":"array","items":{"type":"object","properties":{"username":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The username to access the service","example":"admin"},"password":{"type":"string","description":"The password to access the service with this username.","example":"password123"},"type":{"type":"string","enum":["basic-auth"],"description":"The type of authentication used","example":"basic-auth"}},"required":["username","password","type"],"additionalProperties":false},"description":"An array of credentials to access the service."},"ip":{"type":"array","items":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","description":"An IP address used by this rule","example":"127.0.0.1"},"description":"An array of IP addresses used for this rule"},"action":{"type":"string","enum":["ALLOW","DENY"],"description":"The action for this rule.","example":"DENY"}},"required":["addresses","action"],"additionalProperties":false},"description":"An array of IP address policies."},"policies":{"type":"array","items":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","description":"An IP address used by this rule","example":"127.0.0.1"},"description":"An array of IP addresses used for this rule"},"action":{"type":"string","enum":["ALLOW","DENY"],"description":"The action for this rule.","example":"DENY"}},"required":["addresses","action"],"additionalProperties":false},"description":"An array of IP address policies."},"sso":{"type":"object","properties":{"organizationId":{"type":"string","description":"ID of the SSO organization that the user will have to be a member of"},"directoryGroupIds":{"type":"array","items":{"type":"string"},"description":"Array of directory groups that will have access"},"allowAnyOrgUsers":{"type":"boolean","description":"Allow entire organization to access this service"},"validateInternalTraffic":{"type":"boolean","description":"Enforce internal traffic through SSO authentication flow"},"setCookieOnRootDomain":{"type":"boolean","description":"Set SSO authentication cookie on root domain"},"allowInternalTrafficViaPublicDns":{"type":"boolean","description":"Allow internal traffic from same or shared projects via public DNS to skip SSO authentication flow"}},"additionalProperties":false,"description":"Configure port authentication via SSO"},"headers":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"regexMode":{"type":"boolean","example":false,"default":false},"name":{"type":"string","pattern":"^[a-zA-Z0-9_\\-%$+]+$","example":"headerName"},"value":{"type":"string","example":"headerValue"}},"required":["name","value"],"additionalProperties":false,"description":"Matches provided headers as strings."},{"type":"object","properties":{"regexMode":{"type":"boolean","example":true,"default":false},"name":{"type":"string","example":"headerName"},"value":{"type":"string","example":"headerValue"}},"required":["name","value"],"additionalProperties":false,"description":"Matches provided headers as regex."}]},"description":"List of header authentication settings, it checks the presence of all headers and compares it against the expected value. Wildcard (*) is supported."}},"additionalProperties":false},"requiredPolicies":{"type":"object","properties":{"credentials":{"type":"array","items":{"type":"object","properties":{"username":{"type":"string","pattern":"^[a-zA-Z](-?[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The username to access the service","example":"admin"},"password":{"type":"string","description":"The password to access the service with this username.","example":"password123"},"type":{"type":"string","enum":["basic-auth"],"description":"The type of authentication used","example":"basic-auth"}},"required":["username","password","type"],"additionalProperties":false},"description":"An array of credentials to access the service."},"ip":{"type":"array","items":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","description":"An IP address used by this rule","example":"127.0.0.1"},"description":"An array of IP addresses used for this rule"},"action":{"type":"string","enum":["ALLOW","DENY"],"description":"The action for this rule.","example":"DENY"}},"required":["addresses","action"],"additionalProperties":false},"description":"An array of IP address policies."},"policies":{"type":"array","items":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","description":"An IP address used by this rule","example":"127.0.0.1"},"description":"An array of IP addresses used for this rule"},"action":{"type":"string","enum":["ALLOW","DENY"],"description":"The action for this rule.","example":"DENY"}},"required":["addresses","action"],"additionalProperties":false},"description":"An array of IP address policies."},"sso":{"type":"object","properties":{"organizationId":{"type":"string","description":"ID of the SSO organization that the user will have to be a member of"},"directoryGroupIds":{"type":"array","items":{"type":"string"},"description":"Array of directory groups that will have access"},"allowAnyOrgUsers":{"type":"boolean","description":"Allow entire organization to access this service"},"validateInternalTraffic":{"type":"boolean","description":"Enforce internal traffic through SSO authentication flow"},"setCookieOnRootDomain":{"type":"boolean","description":"Set SSO authentication cookie on root domain"},"allowInternalTrafficViaPublicDns":{"type":"boolean","description":"Allow internal traffic from same or shared projects via public DNS to skip SSO authentication flow"}},"additionalProperties":false,"description":"Configure port authentication via SSO"},"headers":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"regexMode":{"type":"boolean","example":false,"default":false},"name":{"type":"string","pattern":"^[a-zA-Z0-9_\\-%$+]+$","example":"headerName"},"value":{"type":"string","example":"headerValue"}},"required":["name","value"],"additionalProperties":false,"description":"Matches provided headers as strings."},{"type":"object","properties":{"regexMode":{"type":"boolean","example":true,"default":false},"name":{"type":"string","example":"headerName"},"value":{"type":"string","example":"headerValue"}},"required":["name","value"],"additionalProperties":false,"description":"Matches provided headers as regex."}]},"description":"List of header authentication settings, it checks the presence of all headers and compares it against the expected value. Wildcard (*) is supported."}},"additionalProperties":false}},"additionalProperties":false}},"required":["paths","accessMode"],"additionalProperties":false},"default":[]}},"additionalProperties":false}},"additionalProperties":false,"default":{"credentials":[],"policies":[],"sso":{}}},"disableNfDomain":{"type":"boolean","description":"Disable routing on the default code.run domain for public HTTP ports with custom domains.","default":false}},"required":["name","internalPort","protocol"],"additionalProperties":false},"uniqueItems":true,"description":"An array of ports to replace or update existing ports with."}},"required":["ports"],"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Project > Services > General > Update","x-nf-team-scoped":true,"x-nf-cli-command":["update","service","ports"],"x-nf-deprecation-replacement":"/services/patch-combined-service","x-nf-deprecation-message":"Requests should instead use the relevant PATCH endpoint."},"v1-projects--projectId--services--serviceId--pull-requests-get":{"operationId":"getProjectsServicesServiceidPullRequests","summary":"Get service pull requests","description":"Gets information about the pull-requests of the given service.","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"serviceId","type":"string","required":true,"description":"ID of the service","example":"example-service","in":"path","schema":{"name":"serviceId","type":"string","required":true,"description":"ID of the service","example":"example-service","in":"path"}},{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query","schema":{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query"}},{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query","schema":{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query"}},{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query","schema":{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query"}}],"responses":{"200":{"description":"Data about the service's available pull requests.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"pullRequests":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","description":"ID number of the pull request.","example":1},"state":{"type":"string","description":"Status of the pull request.","example":"OPEN"},"title":{"type":"string","description":"Title of the pull request.","example":"Add new feature handling"},"source":{"type":"string","description":"Name of the branch the pull request is merging from.","example":"feature/new-feature"},"destination":{"type":"string","description":"Name of the branch the pull request is being merged into.","example":"main"},"sha":{"type":"string","description":"SHA of the most recent commit of the pull request.","example":"4f101d8821aeb3e4f81f95f3e886a2759ba7b9db"},"created_at":{"type":"string","format":"date-time","description":"The timestamp the pull request was opened.","example":"2021-03-22T11:05:52.000Z"},"updated_at":{"type":"string","format":"date-time","description":"The timestamp the pull request was last updated at.","example":"2021-05-11T16:05:43.000Z"},"html_url":{"type":"string"}},"required":["id","state","title","source","destination","sha","created_at","updated_at","html_url"],"additionalProperties":false,"description":"Details about a pull request."},"description":"A list of pull requests for this repository."}},"additionalProperties":false,"description":"Result data."},"pagination":{"type":"object","properties":{"hasNextPage":{"type":"boolean","description":"Is there another page of results available?","example":false},"cursor":{"type":"string","description":"The cursor to access the next page of results."},"count":{"type":"number","format":"float","description":"The number of results returned by this request.","example":1}},"required":["hasNextPage","count"],"additionalProperties":false,"description":"Data about the endpoint pagination."}},"required":["data","pagination"],"additionalProperties":false,"description":"Response object."}}},"tags":["Services","project"],"security":[],"x-nf-permission-required":"Project > Services > General > Read","x-nf-team-scoped":true,"x-nf-cli-command":["get","service","pull-requests"]},"v1-projects--projectId--services--serviceId--pull-requests-get-team-scoped":{"operationId":"getProjectsServicesServiceidPullRequests","summary":"Get service pull requests","description":"Gets information about the pull-requests of the given service.","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"serviceId","type":"string","required":true,"description":"ID of the service","example":"example-service","in":"path","schema":{"name":"serviceId","type":"string","required":true,"description":"ID of the service","example":"example-service","in":"path"}},{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query","schema":{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query"}},{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query","schema":{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query"}},{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query","schema":{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query"}}],"responses":{"200":{"description":"Data about the service's available pull requests.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"pullRequests":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","description":"ID number of the pull request.","example":1},"state":{"type":"string","description":"Status of the pull request.","example":"OPEN"},"title":{"type":"string","description":"Title of the pull request.","example":"Add new feature handling"},"source":{"type":"string","description":"Name of the branch the pull request is merging from.","example":"feature/new-feature"},"destination":{"type":"string","description":"Name of the branch the pull request is being merged into.","example":"main"},"sha":{"type":"string","description":"SHA of the most recent commit of the pull request.","example":"4f101d8821aeb3e4f81f95f3e886a2759ba7b9db"},"created_at":{"type":"string","format":"date-time","description":"The timestamp the pull request was opened.","example":"2021-03-22T11:05:52.000Z"},"updated_at":{"type":"string","format":"date-time","description":"The timestamp the pull request was last updated at.","example":"2021-05-11T16:05:43.000Z"},"html_url":{"type":"string"}},"required":["id","state","title","source","destination","sha","created_at","updated_at","html_url"],"additionalProperties":false,"description":"Details about a pull request."},"description":"A list of pull requests for this repository."}},"additionalProperties":false,"description":"Result data."},"pagination":{"type":"object","properties":{"hasNextPage":{"type":"boolean","description":"Is there another page of results available?","example":false},"cursor":{"type":"string","description":"The cursor to access the next page of results."},"count":{"type":"number","format":"float","description":"The number of results returned by this request.","example":1}},"required":["hasNextPage","count"],"additionalProperties":false,"description":"Data about the endpoint pagination."}},"required":["data","pagination"],"additionalProperties":false,"description":"Response object."}}},"tags":["Services","project"],"security":[],"x-nf-permission-required":"Project > Services > General > Read","x-nf-team-scoped":true,"x-nf-cli-command":["get","service","pull-requests"]},"v1-projects--projectId--services--serviceId--restart-post":{"operationId":"postProjectsServicesServiceidRestart","summary":"Restart service","description":"Restarts the given service.","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"serviceId","type":"string","required":true,"description":"ID of the service","example":"example-service","in":"path","schema":{"name":"serviceId","type":"string","required":true,"description":"ID of the service","example":"example-service","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Services","project"],"security":[],"x-nf-permission-required":"Project > Services > General > Update","x-nf-team-scoped":true,"x-nf-cli-command":["restart","service"]},"v1-projects--projectId--services--serviceId--restart-post-team-scoped":{"operationId":"postProjectsServicesServiceidRestart","summary":"Restart service","description":"Restarts the given service.","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"serviceId","type":"string","required":true,"description":"ID of the service","example":"example-service","in":"path","schema":{"name":"serviceId","type":"string","required":true,"description":"ID of the service","example":"example-service","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Services","project"],"security":[],"x-nf-permission-required":"Project > Services > General > Update","x-nf-team-scoped":true,"x-nf-cli-command":["restart","service"]},"v1-projects--projectId--services--serviceId--resume-post":{"operationId":"postProjectsServicesServiceidResume","summary":"Resume service","description":"Resumes the given service. Optionally takes several arguments to override resumed settings.","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"serviceId","type":"string","required":true,"description":"ID of the service","example":"example-service","in":"path","schema":{"name":"serviceId","type":"string","required":true,"description":"ID of the service","example":"example-service","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}},"409":{"description":"The service could not be resumed as it is not paused."}},"tags":["Services","project"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"instances":{"type":"integer","minimum":0,"description":"The number of instances to scale the service to upon resuming","example":1},"disabledCI":{"type":"boolean","description":"Whether CI should be disabled","example":false},"disabledCD":{"type":"boolean","description":"Whether CD should be disabled","example":false}},"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Project > Services > General > Update","x-nf-team-scoped":true,"x-nf-cli-command":["resume","service"]},"v1-projects--projectId--services--serviceId--resume-post-team-scoped":{"operationId":"postProjectsServicesServiceidResume","summary":"Resume service","description":"Resumes the given service. Optionally takes several arguments to override resumed settings.","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"serviceId","type":"string","required":true,"description":"ID of the service","example":"example-service","in":"path","schema":{"name":"serviceId","type":"string","required":true,"description":"ID of the service","example":"example-service","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}},"409":{"description":"The service could not be resumed as it is not paused."}},"tags":["Services","project"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"instances":{"type":"integer","minimum":0,"description":"The number of instances to scale the service to upon resuming","example":1},"disabledCI":{"type":"boolean","description":"Whether CI should be disabled","example":false},"disabledCD":{"type":"boolean","description":"Whether CD should be disabled","example":false}},"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Project > Services > General > Update","x-nf-team-scoped":true,"x-nf-cli-command":["resume","service"]},"v1-projects--projectId--services--serviceId--runtime-environment-get":{"operationId":"getProjectsServicesServiceidRuntimeEnvironment","summary":"Get service runtime environment","description":"Gets the runtime environment of the given service. If the API key does not have the permission 'Project > Secrets > General > Read', secrets inherited from secret groups will not be displayed.","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"serviceId","type":"string","required":true,"description":"ID of the service","example":"example-service","in":"path","schema":{"name":"serviceId","type":"string","required":true,"description":"ID of the service","example":"example-service","in":"path"}},{"name":"show","type":"string","enum":["this","inherited","all"],"description":"Which secrets to display - if set to `this` only the group's secrets are displayed, if set to `inherited` only secrets from linked addons are displayed, if set to `all` or not provided, both are displayed.","example":"all","in":"query","schema":{"name":"show","type":"string","enum":["this","inherited","all"],"description":"Which secrets to display - if set to `this` only the group's secrets are displayed, if set to `inherited` only secrets from linked addons are displayed, if set to `all` or not provided, both are displayed.","example":"all","in":"query"}},{"name":"replaceTemplatedValues","type":"string","enum":["true"],"description":"If templated secrets should be replaced with their inferred value rather than returned as template strings.","example":"true","in":"query","schema":{"name":"replaceTemplatedValues","type":"string","enum":["true"],"description":"If templated secrets should be replaced with their inferred value rather than returned as template strings.","example":"true","in":"query"}}],"responses":{"200":{"description":"The runtime environment of the service.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"runtimeEnvironment":{"type":"object","properties":{},"additionalProperties":false,"description":"The runtime environment variables, formatted as a JSON object. If the `show` parameter is set to `this`, this will only contain secrets saved to this entity. If the `show` parameter is set to `inherited`, this will only contain secrets inherited from linked secret groups. Otherwise, this will contain both.","example":{"VARIABLE_1":"abcdef","VARIABLE_2":"12345"}},"runtimeFiles":{"type":"object","properties":{},"additionalProperties":false,"description":"The runtime secret files, formatted as a JSON object. If the `show` parameter is set to `this`, this will only contain files saved to this entity. If the `show` parameter is set to `inherited`, this will only contain files inherited from linked secret groups. Otherwise, this will contain both.","example":{"/dir/fileName":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}}},"required":["runtimeEnvironment","runtimeFiles"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Services","project"],"security":[],"deprecated":true,"x-nf-permission-required":"Project > Secrets > Services > Read","x-nf-team-scoped":true,"x-nf-cli-command":["get","service","runtime-environment"],"x-nf-deprecation-replacement":"/services/get-service","x-nf-deprecation-message":"Requests should instead use the relevant GET endpoint."},"v1-projects--projectId--services--serviceId--runtime-environment-get-team-scoped":{"operationId":"getProjectsServicesServiceidRuntimeEnvironment","summary":"Get service runtime environment","description":"Gets the runtime environment of the given service. If the API key does not have the permission 'Project > Secrets > General > Read', secrets inherited from secret groups will not be displayed.","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"serviceId","type":"string","required":true,"description":"ID of the service","example":"example-service","in":"path","schema":{"name":"serviceId","type":"string","required":true,"description":"ID of the service","example":"example-service","in":"path"}},{"name":"show","type":"string","enum":["this","inherited","all"],"description":"Which secrets to display - if set to `this` only the group's secrets are displayed, if set to `inherited` only secrets from linked addons are displayed, if set to `all` or not provided, both are displayed.","example":"all","in":"query","schema":{"name":"show","type":"string","enum":["this","inherited","all"],"description":"Which secrets to display - if set to `this` only the group's secrets are displayed, if set to `inherited` only secrets from linked addons are displayed, if set to `all` or not provided, both are displayed.","example":"all","in":"query"}},{"name":"replaceTemplatedValues","type":"string","enum":["true"],"description":"If templated secrets should be replaced with their inferred value rather than returned as template strings.","example":"true","in":"query","schema":{"name":"replaceTemplatedValues","type":"string","enum":["true"],"description":"If templated secrets should be replaced with their inferred value rather than returned as template strings.","example":"true","in":"query"}}],"responses":{"200":{"description":"The runtime environment of the service.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"runtimeEnvironment":{"type":"object","properties":{},"additionalProperties":false,"description":"The runtime environment variables, formatted as a JSON object. If the `show` parameter is set to `this`, this will only contain secrets saved to this entity. If the `show` parameter is set to `inherited`, this will only contain secrets inherited from linked secret groups. Otherwise, this will contain both.","example":{"VARIABLE_1":"abcdef","VARIABLE_2":"12345"}},"runtimeFiles":{"type":"object","properties":{},"additionalProperties":false,"description":"The runtime secret files, formatted as a JSON object. If the `show` parameter is set to `this`, this will only contain files saved to this entity. If the `show` parameter is set to `inherited`, this will only contain files inherited from linked secret groups. Otherwise, this will contain both.","example":{"/dir/fileName":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}}},"required":["runtimeEnvironment","runtimeFiles"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Services","project"],"security":[],"deprecated":true,"x-nf-permission-required":"Project > Secrets > Services > Read","x-nf-team-scoped":true,"x-nf-cli-command":["get","service","runtime-environment"],"x-nf-deprecation-replacement":"/services/get-service","x-nf-deprecation-message":"Requests should instead use the relevant GET endpoint."},"v1-projects--projectId--services--serviceId--runtime-environment-post":{"operationId":"postProjectsServicesServiceidRuntimeEnvironment","summary":"Edit service runtime environment","description":"Sets the runtime environment for the given service.","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"serviceId","type":"string","required":true,"description":"ID of the service","example":"example-service","in":"path","schema":{"name":"serviceId","type":"string","required":true,"description":"ID of the service","example":"example-service","in":"path"}}],"responses":{"200":{"description":"Details about the updated runtime environment.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"success":{"type":"boolean","description":"True if the operation was successful.","example":true},"restartSuccessful":{"type":"boolean","description":"Did the service successfully restart with the new environment variables?","example":true}},"required":["success","restartSuccessful"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Services","project"],"security":[],"deprecated":true,"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"runtimeEnvironment":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"An object containing the all of the environment variables to set for the service. Keys may only contain letters, numbers, hyphens, forward slashes and dots.","example":{"VARIABLE_1":"abcdef","VARIABLE_2":"12345"}},"runtimeFiles":{"type":"object","properties":{},"description":"Secret files as JSON object, encrypted at rest. File path must be absolute","example":{"/dir/fileName":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}}},"required":["runtimeEnvironment"],"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Project > Secrets > Services > Update","x-nf-team-scoped":true,"x-nf-cli-command":["update","service","runtime-environment"],"x-nf-deprecation-replacement":"/services/patch-combined-service","x-nf-deprecation-message":"Requests should instead use the relevant PATCH endpoint."},"v1-projects--projectId--services--serviceId--runtime-environment-post-team-scoped":{"operationId":"postProjectsServicesServiceidRuntimeEnvironment","summary":"Edit service runtime environment","description":"Sets the runtime environment for the given service.","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"serviceId","type":"string","required":true,"description":"ID of the service","example":"example-service","in":"path","schema":{"name":"serviceId","type":"string","required":true,"description":"ID of the service","example":"example-service","in":"path"}}],"responses":{"200":{"description":"Details about the updated runtime environment.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"success":{"type":"boolean","description":"True if the operation was successful.","example":true},"restartSuccessful":{"type":"boolean","description":"Did the service successfully restart with the new environment variables?","example":true}},"required":["success","restartSuccessful"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Services","project"],"security":[],"deprecated":true,"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"runtimeEnvironment":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"An object containing the all of the environment variables to set for the service. Keys may only contain letters, numbers, hyphens, forward slashes and dots.","example":{"VARIABLE_1":"abcdef","VARIABLE_2":"12345"}},"runtimeFiles":{"type":"object","properties":{},"description":"Secret files as JSON object, encrypted at rest. File path must be absolute","example":{"/dir/fileName":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}}},"required":["runtimeEnvironment"],"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Project > Secrets > Services > Update","x-nf-team-scoped":true,"x-nf-cli-command":["update","service","runtime-environment"],"x-nf-deprecation-replacement":"/services/patch-combined-service","x-nf-deprecation-message":"Requests should instead use the relevant PATCH endpoint."},"v1-projects--projectId--services--serviceId--runtime-environment-details-get":{"operationId":"getProjectsServicesServiceidRuntimeEnvironmentDetails","summary":"Get service runtime environment details","description":"Get details about the runtime environment accessible by the given service. Also requires the permission 'Project > Secrets > General > Read'","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"serviceId","type":"string","required":true,"description":"ID of the service","example":"example-service","in":"path","schema":{"name":"serviceId","type":"string","required":true,"description":"ID of the service","example":"example-service","in":"path"}}],"responses":{"200":{"description":"Details of the runtime environment of the service.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"runtimeEnvironment":{"type":"object","properties":{"MY_VARIABLE_NAME":{"type":"object","properties":{"value":{"description":"The value of the secret.","example":"abcdef123456"},"inheritedFrom":{"type":"string","description":"The ID of the secret group the secret is inherited from, if applicable.","example":"example-secret"},"addonId":{"type":"string","description":"The ID of the addon the secret is inherited from, if applicable.","example":"example-addon"},"priority":{"type":"integer","description":"The priority of the secret group the secret is inherited from, if applicable.","example":10},"overriding":{"type":"array","items":{"type":"object","properties":{"value":{"description":"The value of the secret.","example":"ffffffffffff"},"inheritedFrom":{"type":"string","description":"The ID of the secret group the secret is inherited from.","example":"secret-2"},"addonId":{"type":"string","description":"The ID of the addon the secret is inherited from, if applicable.","example":"addon-2"},"priority":{"type":"integer","description":"The priority of the secret group the secret is inherited from.","example":0}},"required":["value","inheritedFrom","priority"],"additionalProperties":false,"description":"Data about an overridden secret."},"description":"An array containing data about other places the secret has been inherited from, but that are not being used as a secret with the same key exists with a higher priority."}},"required":["value","overriding"],"additionalProperties":false,"description":"A stored secret and details about it and its value. This can have the name of any saved secret."}},"description":"Details about all the secrets accessible by the service."},"runtimeFiles":{"type":"object","properties":{"/dir/fileName":{"type":"object","properties":{"value":{"type":"object","properties":{"data":{"type":"string","description":"base64 encoded string of the file contents","example":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU="},"encoding":{"type":"string","description":"Original encoding of the file","example":"utf-8"}},"additionalProperties":false,"description":"The value of the secret.","example":{"/dir/fileName":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"inheritedFrom":{"type":"string","description":"The ID of the secret group the secret is inherited from, if applicable.","example":"example-secret"},"priority":{"type":"integer","description":"The priority of the secret group the secret is inherited from, if applicable.","example":10},"overriding":{"type":"array","items":{"type":"object","properties":{"value":{"description":"The value of the secret.","example":"ffffffffffff"},"inheritedFrom":{"type":"string","description":"The ID of the secret group the secret is inherited from.","example":"secret-2"},"priority":{"type":"integer","description":"The priority of the secret group the secret is inherited from.","example":0}},"required":["value","inheritedFrom","priority"],"additionalProperties":false,"description":"Data about an overridden secret."},"description":"An array containing data about other places the file has been inherited from, but that are not being used as a secret with the same file path exists with a higher priority."}},"required":["value","overriding"],"additionalProperties":false,"description":"A stored secret and details about it and its value. This can have the name of any saved secret."}},"description":"Details about all the secrets accessible by the service."}},"required":["runtimeEnvironment","runtimeFiles"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Services","project"],"security":[],"deprecated":true,"x-nf-permission-required":"Project > Secrets > Services > Read","x-nf-team-scoped":true,"x-nf-cli-command":["get","service","runtime-environment-details"],"x-nf-deprecation-replacement":"/services/get-service","x-nf-deprecation-message":"Requests should instead use the relevant GET endpoint."},"v1-projects--projectId--services--serviceId--runtime-environment-details-get-team-scoped":{"operationId":"getProjectsServicesServiceidRuntimeEnvironmentDetails","summary":"Get service runtime environment details","description":"Get details about the runtime environment accessible by the given service. Also requires the permission 'Project > Secrets > General > Read'","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"serviceId","type":"string","required":true,"description":"ID of the service","example":"example-service","in":"path","schema":{"name":"serviceId","type":"string","required":true,"description":"ID of the service","example":"example-service","in":"path"}}],"responses":{"200":{"description":"Details of the runtime environment of the service.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"runtimeEnvironment":{"type":"object","properties":{"MY_VARIABLE_NAME":{"type":"object","properties":{"value":{"description":"The value of the secret.","example":"abcdef123456"},"inheritedFrom":{"type":"string","description":"The ID of the secret group the secret is inherited from, if applicable.","example":"example-secret"},"addonId":{"type":"string","description":"The ID of the addon the secret is inherited from, if applicable.","example":"example-addon"},"priority":{"type":"integer","description":"The priority of the secret group the secret is inherited from, if applicable.","example":10},"overriding":{"type":"array","items":{"type":"object","properties":{"value":{"description":"The value of the secret.","example":"ffffffffffff"},"inheritedFrom":{"type":"string","description":"The ID of the secret group the secret is inherited from.","example":"secret-2"},"addonId":{"type":"string","description":"The ID of the addon the secret is inherited from, if applicable.","example":"addon-2"},"priority":{"type":"integer","description":"The priority of the secret group the secret is inherited from.","example":0}},"required":["value","inheritedFrom","priority"],"additionalProperties":false,"description":"Data about an overridden secret."},"description":"An array containing data about other places the secret has been inherited from, but that are not being used as a secret with the same key exists with a higher priority."}},"required":["value","overriding"],"additionalProperties":false,"description":"A stored secret and details about it and its value. This can have the name of any saved secret."}},"description":"Details about all the secrets accessible by the service."},"runtimeFiles":{"type":"object","properties":{"/dir/fileName":{"type":"object","properties":{"value":{"type":"object","properties":{"data":{"type":"string","description":"base64 encoded string of the file contents","example":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU="},"encoding":{"type":"string","description":"Original encoding of the file","example":"utf-8"}},"additionalProperties":false,"description":"The value of the secret.","example":{"/dir/fileName":{"data":"VGhpcyBpcyBhbiBleGFtcGxlIHdpdGggYSB0ZW1wbGF0ZWQgJHtOT0RFX0VOVn0gdmFyaWFibGU=","encoding":"utf-8"}}},"inheritedFrom":{"type":"string","description":"The ID of the secret group the secret is inherited from, if applicable.","example":"example-secret"},"priority":{"type":"integer","description":"The priority of the secret group the secret is inherited from, if applicable.","example":10},"overriding":{"type":"array","items":{"type":"object","properties":{"value":{"description":"The value of the secret.","example":"ffffffffffff"},"inheritedFrom":{"type":"string","description":"The ID of the secret group the secret is inherited from.","example":"secret-2"},"priority":{"type":"integer","description":"The priority of the secret group the secret is inherited from.","example":0}},"required":["value","inheritedFrom","priority"],"additionalProperties":false,"description":"Data about an overridden secret."},"description":"An array containing data about other places the file has been inherited from, but that are not being used as a secret with the same file path exists with a higher priority."}},"required":["value","overriding"],"additionalProperties":false,"description":"A stored secret and details about it and its value. This can have the name of any saved secret."}},"description":"Details about all the secrets accessible by the service."}},"required":["runtimeEnvironment","runtimeFiles"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Services","project"],"security":[],"deprecated":true,"x-nf-permission-required":"Project > Secrets > Services > Read","x-nf-team-scoped":true,"x-nf-cli-command":["get","service","runtime-environment-details"],"x-nf-deprecation-replacement":"/services/get-service","x-nf-deprecation-message":"Requests should instead use the relevant GET endpoint."},"v1-projects--projectId--services--serviceId--scale-post":{"operationId":"postProjectsServicesServiceidScale","summary":"Scale service","description":"Modifies the scaling settings for the given service.","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"serviceId","type":"string","required":true,"description":"ID of the service","example":"example-service","in":"path","schema":{"name":"serviceId","type":"string","required":true,"description":"ID of the service","example":"example-service","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Services","project"],"security":[],"deprecated":true,"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"instances":{"type":"integer","minimum":0,"description":"The number of instances to scale the service to","example":1},"deploymentPlan":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"ID of the deployment plan to switch to.","example":"nf-compute-20"},"storage":{"type":"object","properties":{"useHdbStorage":{"type":"boolean"},"usePdSsdStorage":{"type":"boolean"},"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":1024,"description":"Ephemeral storage per container in MB","example":1024}},"additionalProperties":false},"shmSize":{"type":"integer","minimum":64,"description":"Configures the amount of available memory-backed disk space available to /dev/shm"}},"additionalProperties":false},"gracePeriodSeconds":{"type":"integer","minimum":15,"maximum":600,"description":"The 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."}},"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Project > Services > Deployment > Scale Service","x-nf-team-scoped":true,"x-nf-cli-command":["scale","service"],"x-nf-deprecation-replacement":"/services/patch-combined-service","x-nf-deprecation-message":"Requests should instead use the relevant PATCH endpoint."},"v1-projects--projectId--services--serviceId--scale-post-team-scoped":{"operationId":"postProjectsServicesServiceidScale","summary":"Scale service","description":"Modifies the scaling settings for the given service.","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"serviceId","type":"string","required":true,"description":"ID of the service","example":"example-service","in":"path","schema":{"name":"serviceId","type":"string","required":true,"description":"ID of the service","example":"example-service","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Services","project"],"security":[],"deprecated":true,"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"instances":{"type":"integer","minimum":0,"description":"The number of instances to scale the service to","example":1},"deploymentPlan":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"ID of the deployment plan to switch to.","example":"nf-compute-20"},"storage":{"type":"object","properties":{"useHdbStorage":{"type":"boolean"},"usePdSsdStorage":{"type":"boolean"},"ephemeralStorage":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":1024,"description":"Ephemeral storage per container in MB","example":1024}},"additionalProperties":false},"shmSize":{"type":"integer","minimum":64,"description":"Configures the amount of available memory-backed disk space available to /dev/shm"}},"additionalProperties":false},"gracePeriodSeconds":{"type":"integer","minimum":15,"maximum":600,"description":"The 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."}},"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Project > Services > Deployment > Scale Service","x-nf-team-scoped":true,"x-nf-cli-command":["scale","service"],"x-nf-deprecation-replacement":"/services/patch-combined-service","x-nf-deprecation-message":"Requests should instead use the relevant PATCH endpoint."},"v1-projects--projectId--volumes-get":{"operationId":"getProjectsVolumes","summary":"List volumes","description":"Gets a list of volumes belonging to the project","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query","schema":{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query"}},{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query","schema":{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query"}},{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query","schema":{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query"}}],"responses":{"200":{"description":"The list of volumes.","schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Identifier for the volume","example":"example-volume"},"name":{"type":"string","description":"Volume name","example":"Example Volume"},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"spec":{"type":"object","properties":{"accessMode":{"type":"string","enum":["ReadWriteOnce","ReadWriteMany"],"description":"Access mode of the volume. Only `ReadWriteOnce` is generally available."},"storageClassName":{"type":"string","description":"The type of the storage.","example":"ssd"},"storageSize":{"type":"integer","minimum":1,"description":"The size of the storage, in megabytes. Configurable sizes depend on the storage class.","example":6144}},"required":["accessMode","storageSize"],"additionalProperties":false,"description":"Example storage schema"},"attachedObjects":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The id of object to attach this volume to.","example":"example-service"},"type":{"type":"string","enum":["service","job"],"description":"The type of the object to attach this volume to.","example":"service"}},"required":["id","type"],"additionalProperties":false,"description":"The object to attach this volume to."},"description":"List of objects this volume is attached to."},"status":{"type":"string","description":"Status the volume is in on the cluster","example":"BOUND"},"createdAt":{"type":"string","format":"date-time","description":"The timestamp the volume was created at","example":"2021-01-01 12:00:00.000Z"},"updatedAt":{"type":"string","format":"date-time","description":"The timestamp the volume was last updated at","example":"2021-01-01 12:00:00.000Z"}},"required":["id","name","tags","spec","status","createdAt","updatedAt"],"additionalProperties":false,"description":"A volume object"},"description":"Result data."},"pagination":{"type":"object","properties":{"hasNextPage":{"type":"boolean","description":"Is there another page of results available?","example":false},"cursor":{"type":"string","description":"The cursor to access the next page of results."},"count":{"type":"number","format":"float","description":"The number of results returned by this request.","example":1}},"required":["hasNextPage","count"],"additionalProperties":false,"description":"Data about the endpoint pagination."}},"required":["data","pagination"],"additionalProperties":false,"description":"Response object."}}},"tags":["Volumes","project"],"security":[],"x-nf-permission-required":"Project > Volumes > General > Read","x-nf-team-scoped":true,"x-nf-cli-command":["list","volumes"]},"v1-projects--projectId--volumes-get-team-scoped":{"operationId":"getProjectsVolumes","summary":"List volumes","description":"Gets a list of volumes belonging to the project","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query","schema":{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query"}},{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query","schema":{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query"}},{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query","schema":{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query"}}],"responses":{"200":{"description":"The list of volumes.","schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Identifier for the volume","example":"example-volume"},"name":{"type":"string","description":"Volume name","example":"Example Volume"},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"spec":{"type":"object","properties":{"accessMode":{"type":"string","enum":["ReadWriteOnce","ReadWriteMany"],"description":"Access mode of the volume. Only `ReadWriteOnce` is generally available."},"storageClassName":{"type":"string","description":"The type of the storage.","example":"ssd"},"storageSize":{"type":"integer","minimum":1,"description":"The size of the storage, in megabytes. Configurable sizes depend on the storage class.","example":6144}},"required":["accessMode","storageSize"],"additionalProperties":false,"description":"Example storage schema"},"attachedObjects":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The id of object to attach this volume to.","example":"example-service"},"type":{"type":"string","enum":["service","job"],"description":"The type of the object to attach this volume to.","example":"service"}},"required":["id","type"],"additionalProperties":false,"description":"The object to attach this volume to."},"description":"List of objects this volume is attached to."},"status":{"type":"string","description":"Status the volume is in on the cluster","example":"BOUND"},"createdAt":{"type":"string","format":"date-time","description":"The timestamp the volume was created at","example":"2021-01-01 12:00:00.000Z"},"updatedAt":{"type":"string","format":"date-time","description":"The timestamp the volume was last updated at","example":"2021-01-01 12:00:00.000Z"}},"required":["id","name","tags","spec","status","createdAt","updatedAt"],"additionalProperties":false,"description":"A volume object"},"description":"Result data."},"pagination":{"type":"object","properties":{"hasNextPage":{"type":"boolean","description":"Is there another page of results available?","example":false},"cursor":{"type":"string","description":"The cursor to access the next page of results."},"count":{"type":"number","format":"float","description":"The number of results returned by this request.","example":1}},"required":["hasNextPage","count"],"additionalProperties":false,"description":"Data about the endpoint pagination."}},"required":["data","pagination"],"additionalProperties":false,"description":"Response object."}}},"tags":["Volumes","project"],"security":[],"x-nf-permission-required":"Project > Volumes > General > Read","x-nf-team-scoped":true,"x-nf-cli-command":["list","volumes"]},"v1-projects--projectId--volumes-post":{"operationId":"postProjectsVolumes","summary":"Create volume","description":"Creates a volume with the specified payload","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}}],"responses":{"200":{"description":"Details about the newly created volume.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","description":"Identifier for the volume","example":"example-volume"},"name":{"type":"string","description":"Volume name","example":"Example Volume"},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"spec":{"type":"object","properties":{"accessMode":{"type":"string","enum":["ReadWriteOnce","ReadWriteMany"],"description":"Access mode of the volume. Only `ReadWriteOnce` is generally available."},"storageClassName":{"type":"string","description":"The type of the storage.","example":"ssd"},"storageSize":{"type":"integer","minimum":1,"description":"The size of the storage, in megabytes. Configurable sizes depend on the storage class.","example":6144}},"required":["accessMode","storageSize"],"additionalProperties":false,"description":"Example storage schema"},"attachedObjects":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The id of object to attach this volume to.","example":"example-service"},"type":{"type":"string","enum":["service","job"],"description":"The type of the object to attach this volume to.","example":"service"}},"required":["id","type"],"additionalProperties":false,"description":"The object to attach this volume to."},"description":"List of objects this volume is attached to."},"status":{"type":"string","description":"Status the volume is in on the cluster","example":"BOUND"},"createdAt":{"type":"string","format":"date-time","description":"The timestamp the volume was created at","example":"2021-01-01 12:00:00.000Z"},"updatedAt":{"type":"string","format":"date-time","description":"The timestamp the volume was last updated at","example":"2021-01-01 12:00:00.000Z"}},"required":["id","name","tags","spec","status","createdAt","updatedAt"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}},"409":{"description":"There is already a volume with the same derived identifier"}},"tags":["Volumes","project"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The name of the volume.","example":"Example Volume"},"stageId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"mounts":{"type":"array","items":{"type":"object","properties":{"volumeMountPath":{"type":"string","pattern":"^((?!\\.\\.).)*$","description":"Optionally specify the path inside this volume that should be mounted","example":""},"containerMountPath":{"type":"string","pattern":"^((?!:).)*$","not":{"enum":["/"]},"description":"Specify the path into which the volume should be mounted","example":"/container"}},"required":["containerMountPath"],"additionalProperties":false},"uniqueItems":true,"description":"Array of mounts, containerMountPaths must be unique"},"spec":{"type":"object","properties":{"accessMode":{"type":"string","enum":["ReadWriteOnce","ReadWriteMany"],"description":"Access mode of the volume. Only `ReadWriteOnce` is generally available."},"storageClassName":{"type":"string","description":"The type of the storage.","example":"ssd"},"storageSize":{"type":"integer","minimum":1,"description":"The size of the storage, in megabytes. Configurable sizes depend on the storage class.","example":6144}},"required":["accessMode","storageSize"],"additionalProperties":false,"description":"Example storage schema"},"source":{"type":"object","properties":{"type":{"type":"string","enum":["volume","backup"]},"sourceId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The ID of the source object"}},"required":["type","sourceId"],"additionalProperties":false},"owningObject":{"type":"object","properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The id of object to attach this volume to."},"type":{"type":"string","enum":["service","job"],"description":"The type of the object to attach this volume to."}},"required":["id","type"],"additionalProperties":false,"description":"DEPRECATED: The object to attach this volume to."},"attachedObjects":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The id of object to attach this volume to.","example":"example-service"},"type":{"type":"string","enum":["service","job"],"description":"The type of the object to attach this volume to.","example":"service"}},"required":["id","type"],"additionalProperties":false,"description":"The object to attach this volume to."},"maxItems":100,"uniqueItems":true,"description":"Array of objects this volume is attached to."}},"required":["name","mounts","spec"],"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Project > Volumes > General > Create","x-nf-team-scoped":true,"x-nf-cli-command":["create","volume"]},"v1-projects--projectId--volumes-post-team-scoped":{"operationId":"postProjectsVolumes","summary":"Create volume","description":"Creates a volume with the specified payload","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}}],"responses":{"200":{"description":"Details about the newly created volume.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","description":"Identifier for the volume","example":"example-volume"},"name":{"type":"string","description":"Volume name","example":"Example Volume"},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"spec":{"type":"object","properties":{"accessMode":{"type":"string","enum":["ReadWriteOnce","ReadWriteMany"],"description":"Access mode of the volume. Only `ReadWriteOnce` is generally available."},"storageClassName":{"type":"string","description":"The type of the storage.","example":"ssd"},"storageSize":{"type":"integer","minimum":1,"description":"The size of the storage, in megabytes. Configurable sizes depend on the storage class.","example":6144}},"required":["accessMode","storageSize"],"additionalProperties":false,"description":"Example storage schema"},"attachedObjects":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The id of object to attach this volume to.","example":"example-service"},"type":{"type":"string","enum":["service","job"],"description":"The type of the object to attach this volume to.","example":"service"}},"required":["id","type"],"additionalProperties":false,"description":"The object to attach this volume to."},"description":"List of objects this volume is attached to."},"status":{"type":"string","description":"Status the volume is in on the cluster","example":"BOUND"},"createdAt":{"type":"string","format":"date-time","description":"The timestamp the volume was created at","example":"2021-01-01 12:00:00.000Z"},"updatedAt":{"type":"string","format":"date-time","description":"The timestamp the volume was last updated at","example":"2021-01-01 12:00:00.000Z"}},"required":["id","name","tags","spec","status","createdAt","updatedAt"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}},"409":{"description":"There is already a volume with the same derived identifier"}},"tags":["Volumes","project"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The name of the volume.","example":"Example Volume"},"stageId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"mounts":{"type":"array","items":{"type":"object","properties":{"volumeMountPath":{"type":"string","pattern":"^((?!\\.\\.).)*$","description":"Optionally specify the path inside this volume that should be mounted","example":""},"containerMountPath":{"type":"string","pattern":"^((?!:).)*$","not":{"enum":["/"]},"description":"Specify the path into which the volume should be mounted","example":"/container"}},"required":["containerMountPath"],"additionalProperties":false},"uniqueItems":true,"description":"Array of mounts, containerMountPaths must be unique"},"spec":{"type":"object","properties":{"accessMode":{"type":"string","enum":["ReadWriteOnce","ReadWriteMany"],"description":"Access mode of the volume. Only `ReadWriteOnce` is generally available."},"storageClassName":{"type":"string","description":"The type of the storage.","example":"ssd"},"storageSize":{"type":"integer","minimum":1,"description":"The size of the storage, in megabytes. Configurable sizes depend on the storage class.","example":6144}},"required":["accessMode","storageSize"],"additionalProperties":false,"description":"Example storage schema"},"source":{"type":"object","properties":{"type":{"type":"string","enum":["volume","backup"]},"sourceId":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"The ID of the source object"}},"required":["type","sourceId"],"additionalProperties":false},"owningObject":{"type":"object","properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The id of object to attach this volume to."},"type":{"type":"string","enum":["service","job"],"description":"The type of the object to attach this volume to."}},"required":["id","type"],"additionalProperties":false,"description":"DEPRECATED: The object to attach this volume to."},"attachedObjects":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The id of object to attach this volume to.","example":"example-service"},"type":{"type":"string","enum":["service","job"],"description":"The type of the object to attach this volume to.","example":"service"}},"required":["id","type"],"additionalProperties":false,"description":"The object to attach this volume to."},"maxItems":100,"uniqueItems":true,"description":"Array of objects this volume is attached to."}},"required":["name","mounts","spec"],"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Project > Volumes > General > Create","x-nf-team-scoped":true,"x-nf-cli-command":["create","volume"]},"v1-projects--projectId--volumes--volumeId--get":{"operationId":"getProjectsVolumesVolumeid","summary":"Get volume","description":"Retrieve a volume","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"volumeId","type":"string","required":true,"description":"ID of the volume","example":"example-volume","in":"path","schema":{"name":"volumeId","type":"string","required":true,"description":"ID of the volume","example":"example-volume","in":"path"}}],"responses":{"200":{"description":"Details about the specified Volume.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","description":"Identifier for the volume","example":"example-volume"},"name":{"type":"string","description":"Volume name","example":"Example Volume"},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"spec":{"type":"object","properties":{"accessMode":{"type":"string","enum":["ReadWriteOnce","ReadWriteMany"],"description":"Access mode of the volume. Only `ReadWriteOnce` is generally available."},"storageClassName":{"type":"string","description":"The type of the storage.","example":"ssd"},"storageSize":{"type":"integer","minimum":1,"description":"The size of the storage, in megabytes. Configurable sizes depend on the storage class.","example":6144}},"required":["accessMode","storageSize"],"additionalProperties":false,"description":"Example storage schema"},"attachedObjects":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The id of object to attach this volume to.","example":"example-service"},"type":{"type":"string","enum":["service","job"],"description":"The type of the object to attach this volume to.","example":"service"}},"required":["id","type"],"additionalProperties":false,"description":"The object to attach this volume to."},"description":"List of objects this volume is attached to."},"status":{"type":"string","description":"Status the volume is in on the cluster","example":"BOUND"},"createdAt":{"type":"string","format":"date-time","description":"The timestamp the volume was created at","example":"2021-01-01 12:00:00.000Z"},"updatedAt":{"type":"string","format":"date-time","description":"The timestamp the volume was last updated at","example":"2021-01-01 12:00:00.000Z"}},"required":["id","name","tags","spec","status","createdAt","updatedAt"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Volumes","project"],"security":[],"x-nf-permission-required":"Project > Volumes > General > Read","x-nf-team-scoped":true,"x-nf-cli-command":["get","volume"]},"v1-projects--projectId--volumes--volumeId--get-team-scoped":{"operationId":"getProjectsVolumesVolumeid","summary":"Get volume","description":"Retrieve a volume","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"volumeId","type":"string","required":true,"description":"ID of the volume","example":"example-volume","in":"path","schema":{"name":"volumeId","type":"string","required":true,"description":"ID of the volume","example":"example-volume","in":"path"}}],"responses":{"200":{"description":"Details about the specified Volume.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","description":"Identifier for the volume","example":"example-volume"},"name":{"type":"string","description":"Volume name","example":"Example Volume"},"tags":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":"An array of previously defined tags to help identify and group the resource."},"spec":{"type":"object","properties":{"accessMode":{"type":"string","enum":["ReadWriteOnce","ReadWriteMany"],"description":"Access mode of the volume. Only `ReadWriteOnce` is generally available."},"storageClassName":{"type":"string","description":"The type of the storage.","example":"ssd"},"storageSize":{"type":"integer","minimum":1,"description":"The size of the storage, in megabytes. Configurable sizes depend on the storage class.","example":6144}},"required":["accessMode","storageSize"],"additionalProperties":false,"description":"Example storage schema"},"attachedObjects":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The id of object to attach this volume to.","example":"example-service"},"type":{"type":"string","enum":["service","job"],"description":"The type of the object to attach this volume to.","example":"service"}},"required":["id","type"],"additionalProperties":false,"description":"The object to attach this volume to."},"description":"List of objects this volume is attached to."},"status":{"type":"string","description":"Status the volume is in on the cluster","example":"BOUND"},"createdAt":{"type":"string","format":"date-time","description":"The timestamp the volume was created at","example":"2021-01-01 12:00:00.000Z"},"updatedAt":{"type":"string","format":"date-time","description":"The timestamp the volume was last updated at","example":"2021-01-01 12:00:00.000Z"}},"required":["id","name","tags","spec","status","createdAt","updatedAt"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Volumes","project"],"security":[],"x-nf-permission-required":"Project > Volumes > General > Read","x-nf-team-scoped":true,"x-nf-cli-command":["get","volume"]},"v1-projects--projectId--volumes--volumeId--post":{"operationId":"postProjectsVolumesVolumeid","summary":"Update volume","description":"Update volume mounts and storage size","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"volumeId","type":"string","required":true,"description":"ID of the volume","example":"example-volume","in":"path","schema":{"name":"volumeId","type":"string","required":true,"description":"ID of the volume","example":"example-volume","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Volumes","project"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"mounts":{"type":"array","items":{"type":"object","properties":{"volumeMountPath":{"type":"string","pattern":"^((?!\\.\\.).)*$","description":"Optionally specify the path inside this volume that should be mounted","example":""},"containerMountPath":{"type":"string","pattern":"^((?!:).)*$","not":{"enum":["/"]},"description":"Specify the path into which the volume should be mounted","example":"/container"}},"required":["containerMountPath"],"additionalProperties":false},"uniqueItems":true,"description":"Array of mounts, containerMountPaths must be unique"},"spec":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":1,"description":"The size of the storage, in megabytes. Configurable sizes depend on the storage class.","example":6144}},"additionalProperties":false}},"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Project > Volumes > General > Update","x-nf-team-scoped":true,"x-nf-cli-command":["update","volume"]},"v1-projects--projectId--volumes--volumeId--post-team-scoped":{"operationId":"postProjectsVolumesVolumeid","summary":"Update volume","description":"Update volume mounts and storage size","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"volumeId","type":"string","required":true,"description":"ID of the volume","example":"example-volume","in":"path","schema":{"name":"volumeId","type":"string","required":true,"description":"ID of the volume","example":"example-volume","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Volumes","project"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"mounts":{"type":"array","items":{"type":"object","properties":{"volumeMountPath":{"type":"string","pattern":"^((?!\\.\\.).)*$","description":"Optionally specify the path inside this volume that should be mounted","example":""},"containerMountPath":{"type":"string","pattern":"^((?!:).)*$","not":{"enum":["/"]},"description":"Specify the path into which the volume should be mounted","example":"/container"}},"required":["containerMountPath"],"additionalProperties":false},"uniqueItems":true,"description":"Array of mounts, containerMountPaths must be unique"},"spec":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":1,"description":"The size of the storage, in megabytes. Configurable sizes depend on the storage class.","example":6144}},"additionalProperties":false}},"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Project > Volumes > General > Update","x-nf-team-scoped":true,"x-nf-cli-command":["update","volume"]},"v1-projects--projectId--volumes--volumeId--delete":{"operationId":"deleteProjectsVolumesVolumeid","summary":"Delete volume","description":"Deletes this volume and its associated data.","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"volumeId","type":"string","required":true,"description":"ID of the volume","example":"example-volume","in":"path","schema":{"name":"volumeId","type":"string","required":true,"description":"ID of the volume","example":"example-volume","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Volumes","project"],"security":[],"x-nf-permission-required":"Project > Volumes > General > Delete","x-nf-team-scoped":true,"x-nf-cli-command":["delete","volume"]},"v1-projects--projectId--volumes--volumeId--delete-team-scoped":{"operationId":"deleteProjectsVolumesVolumeid","summary":"Delete volume","description":"Deletes this volume and its associated data.","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"volumeId","type":"string","required":true,"description":"ID of the volume","example":"example-volume","in":"path","schema":{"name":"volumeId","type":"string","required":true,"description":"ID of the volume","example":"example-volume","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Volumes","project"],"security":[],"x-nf-permission-required":"Project > Volumes > General > Delete","x-nf-team-scoped":true,"x-nf-cli-command":["delete","volume"]},"v1-projects--projectId--volumes--volumeId--attach-post":{"operationId":"postProjectsVolumesVolumeidAttach","summary":"Attach volume","description":"Attach a volume","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"volumeId","type":"string","required":true,"description":"ID of the volume","example":"example-volume","in":"path","schema":{"name":"volumeId","type":"string","required":true,"description":"ID of the volume","example":"example-volume","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Volumes","project"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"owningObject":{"type":"object","properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The id of object to attach this volume to."},"type":{"type":"string","enum":["service","job"],"description":"The type of the object to attach this volume to."}},"required":["id","type"],"additionalProperties":false,"description":"DEPRECATED: The object to attach this volume to."},"nfObject":{"type":"object","properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The id of object to attach this volume to.","example":"example-service"},"type":{"type":"string","enum":["service","job"],"description":"The type of the object to attach this volume to.","example":"service"}},"required":["id","type"],"additionalProperties":false,"description":"The object to attach this volume to."}},"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Project > Volumes > General > Update","x-nf-team-scoped":true,"x-nf-cli-command":["attach","volume"]},"v1-projects--projectId--volumes--volumeId--attach-post-team-scoped":{"operationId":"postProjectsVolumesVolumeidAttach","summary":"Attach volume","description":"Attach a volume","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"volumeId","type":"string","required":true,"description":"ID of the volume","example":"example-volume","in":"path","schema":{"name":"volumeId","type":"string","required":true,"description":"ID of the volume","example":"example-volume","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Volumes","project"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"owningObject":{"type":"object","properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The id of object to attach this volume to."},"type":{"type":"string","enum":["service","job"],"description":"The type of the object to attach this volume to."}},"required":["id","type"],"additionalProperties":false,"description":"DEPRECATED: The object to attach this volume to."},"nfObject":{"type":"object","properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The id of object to attach this volume to.","example":"example-service"},"type":{"type":"string","enum":["service","job"],"description":"The type of the object to attach this volume to.","example":"service"}},"required":["id","type"],"additionalProperties":false,"description":"The object to attach this volume to."}},"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Project > Volumes > General > Update","x-nf-team-scoped":true,"x-nf-cli-command":["attach","volume"]},"v1-projects--projectId--volumes--volumeId--backups-get":{"operationId":"getProjectsVolumesVolumeidBackups","summary":"Get volume backups","description":"Get list of backups associated with a volume","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"volumeId","type":"string","required":true,"description":"ID of the volume","example":"example-volume","in":"path","schema":{"name":"volumeId","type":"string","required":true,"description":"ID of the volume","example":"example-volume","in":"path"}},{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query","schema":{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query"}},{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query","schema":{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query"}},{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query","schema":{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query"}}],"responses":{"200":{"description":"The list of volume backups.","schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Identifier for the backup","example":"example-backup"},"name":{"type":"string"},"description":{"type":"string"},"status":{"type":"string"},"spec":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":1}},"additionalProperties":false},"source":{"type":"object","properties":{"type":{"type":"string"},"sourceObject":{"type":"object","properties":{"id":{"type":"string"},"spec":{"type":"object","properties":{"accessMode":{"type":"string"},"storageSize":{"type":"integer","minimum":1},"storageClassName":{"type":"string"}},"additionalProperties":false}},"additionalProperties":false}},"additionalProperties":false},"createdAt":{"type":"string","format":"date-time","description":"time of creation"},"updatedAt":{"type":"string","format":"date-time","description":"time of update"}},"required":["id","name","status"],"additionalProperties":false},"description":"Result data."},"pagination":{"type":"object","properties":{"hasNextPage":{"type":"boolean","description":"Is there another page of results available?","example":false},"cursor":{"type":"string","description":"The cursor to access the next page of results."},"count":{"type":"number","format":"float","description":"The number of results returned by this request.","example":1}},"required":["hasNextPage","count"],"additionalProperties":false,"description":"Data about the endpoint pagination."}},"required":["data","pagination"],"additionalProperties":false,"description":"Response object."}}},"tags":["Volumes","project"],"security":[],"x-nf-permission-required":"Project > Volumes > Backups > Read","x-nf-team-scoped":true,"x-nf-cli-command":["get","volume","backups"]},"v1-projects--projectId--volumes--volumeId--backups-get-team-scoped":{"operationId":"getProjectsVolumesVolumeidBackups","summary":"Get volume backups","description":"Get list of backups associated with a volume","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"volumeId","type":"string","required":true,"description":"ID of the volume","example":"example-volume","in":"path","schema":{"name":"volumeId","type":"string","required":true,"description":"ID of the volume","example":"example-volume","in":"path"}},{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query","schema":{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query"}},{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query","schema":{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query"}},{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query","schema":{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query"}}],"responses":{"200":{"description":"The list of volume backups.","schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Identifier for the backup","example":"example-backup"},"name":{"type":"string"},"description":{"type":"string"},"status":{"type":"string"},"spec":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":1}},"additionalProperties":false},"source":{"type":"object","properties":{"type":{"type":"string"},"sourceObject":{"type":"object","properties":{"id":{"type":"string"},"spec":{"type":"object","properties":{"accessMode":{"type":"string"},"storageSize":{"type":"integer","minimum":1},"storageClassName":{"type":"string"}},"additionalProperties":false}},"additionalProperties":false}},"additionalProperties":false},"createdAt":{"type":"string","format":"date-time","description":"time of creation"},"updatedAt":{"type":"string","format":"date-time","description":"time of update"}},"required":["id","name","status"],"additionalProperties":false},"description":"Result data."},"pagination":{"type":"object","properties":{"hasNextPage":{"type":"boolean","description":"Is there another page of results available?","example":false},"cursor":{"type":"string","description":"The cursor to access the next page of results."},"count":{"type":"number","format":"float","description":"The number of results returned by this request.","example":1}},"required":["hasNextPage","count"],"additionalProperties":false,"description":"Data about the endpoint pagination."}},"required":["data","pagination"],"additionalProperties":false,"description":"Response object."}}},"tags":["Volumes","project"],"security":[],"x-nf-permission-required":"Project > Volumes > Backups > Read","x-nf-team-scoped":true,"x-nf-cli-command":["get","volume","backups"]},"v1-projects--projectId--volumes--volumeId--backups-post":{"operationId":"postProjectsVolumesVolumeidBackups","summary":"Backup volume","description":"Initiates a backup for a given volume","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"volumeId","type":"string","required":true,"description":"ID of the volume","example":"example-volume","in":"path","schema":{"name":"volumeId","type":"string","required":true,"description":"ID of the volume","example":"example-volume","in":"path"}}],"responses":{"200":{"description":"Details about the created volume backup.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","description":"Identifier for the backup","example":"example-backup"},"name":{"type":"string"},"description":{"type":"string"},"status":{"type":"string"},"spec":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":1}},"additionalProperties":false},"source":{"type":"object","properties":{"type":{"type":"string"},"sourceObject":{"type":"object","properties":{"id":{"type":"string"},"spec":{"type":"object","properties":{"accessMode":{"type":"string"},"storageSize":{"type":"integer","minimum":1},"storageClassName":{"type":"string"}},"additionalProperties":false}},"additionalProperties":false}},"additionalProperties":false},"createdAt":{"type":"string","format":"date-time","description":"time of creation"},"updatedAt":{"type":"string","format":"date-time","description":"time of update"}},"required":["id","name","status"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Volumes","project"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The name of the backup.","example":"Example Backup"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"The description for the backup.","example":"Example backup description"}},"required":["name"],"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Project > Volumes > Backups > Create","x-nf-team-scoped":true,"x-nf-cli-command":["backup","volume"]},"v1-projects--projectId--volumes--volumeId--backups-post-team-scoped":{"operationId":"postProjectsVolumesVolumeidBackups","summary":"Backup volume","description":"Initiates a backup for a given volume","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"volumeId","type":"string","required":true,"description":"ID of the volume","example":"example-volume","in":"path","schema":{"name":"volumeId","type":"string","required":true,"description":"ID of the volume","example":"example-volume","in":"path"}}],"responses":{"200":{"description":"Details about the created volume backup.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","description":"Identifier for the backup","example":"example-backup"},"name":{"type":"string"},"description":{"type":"string"},"status":{"type":"string"},"spec":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":1}},"additionalProperties":false},"source":{"type":"object","properties":{"type":{"type":"string"},"sourceObject":{"type":"object","properties":{"id":{"type":"string"},"spec":{"type":"object","properties":{"accessMode":{"type":"string"},"storageSize":{"type":"integer","minimum":1},"storageClassName":{"type":"string"}},"additionalProperties":false}},"additionalProperties":false}},"additionalProperties":false},"createdAt":{"type":"string","format":"date-time","description":"time of creation"},"updatedAt":{"type":"string","format":"date-time","description":"time of update"}},"required":["id","name","status"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Volumes","project"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The name of the backup.","example":"Example Backup"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"The description for the backup.","example":"Example backup description"}},"required":["name"],"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Project > Volumes > Backups > Create","x-nf-team-scoped":true,"x-nf-cli-command":["backup","volume"]},"v1-projects--projectId--volumes--volumeId--backups--backupId--get":{"operationId":"getProjectsVolumesVolumeidBackupsBackupid","summary":"Get volume backup details","description":"Get details for a specific volume backup","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"volumeId","type":"string","required":true,"description":"ID of the volume","example":"example-volume","in":"path","schema":{"name":"volumeId","type":"string","required":true,"description":"ID of the volume","example":"example-volume","in":"path"}},{"name":"backupId","type":"string","required":true,"description":"ID of the backup","example":"example-backup","in":"path","schema":{"name":"backupId","type":"string","required":true,"description":"ID of the backup","example":"example-backup","in":"path"}}],"responses":{"200":{"description":"Details about the specified volume backup.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","description":"Identifier for the backup","example":"example-backup"},"name":{"type":"string"},"description":{"type":"string"},"status":{"type":"string"},"spec":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":1}},"additionalProperties":false},"source":{"type":"object","properties":{"type":{"type":"string"},"sourceObject":{"type":"object","properties":{"id":{"type":"string"},"spec":{"type":"object","properties":{"accessMode":{"type":"string"},"storageSize":{"type":"integer","minimum":1},"storageClassName":{"type":"string"}},"additionalProperties":false}},"additionalProperties":false}},"additionalProperties":false},"createdAt":{"type":"string","format":"date-time","description":"time of creation"},"updatedAt":{"type":"string","format":"date-time","description":"time of update"}},"required":["id","name","status"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Volumes","project"],"security":[],"x-nf-permission-required":"Project > Volumes > Backups > Read","x-nf-team-scoped":true,"x-nf-cli-command":["get","volume","backup"]},"v1-projects--projectId--volumes--volumeId--backups--backupId--get-team-scoped":{"operationId":"getProjectsVolumesVolumeidBackupsBackupid","summary":"Get volume backup details","description":"Get details for a specific volume backup","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"volumeId","type":"string","required":true,"description":"ID of the volume","example":"example-volume","in":"path","schema":{"name":"volumeId","type":"string","required":true,"description":"ID of the volume","example":"example-volume","in":"path"}},{"name":"backupId","type":"string","required":true,"description":"ID of the backup","example":"example-backup","in":"path","schema":{"name":"backupId","type":"string","required":true,"description":"ID of the backup","example":"example-backup","in":"path"}}],"responses":{"200":{"description":"Details about the specified volume backup.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","description":"Identifier for the backup","example":"example-backup"},"name":{"type":"string"},"description":{"type":"string"},"status":{"type":"string"},"spec":{"type":"object","properties":{"storageSize":{"type":"integer","minimum":1}},"additionalProperties":false},"source":{"type":"object","properties":{"type":{"type":"string"},"sourceObject":{"type":"object","properties":{"id":{"type":"string"},"spec":{"type":"object","properties":{"accessMode":{"type":"string"},"storageSize":{"type":"integer","minimum":1},"storageClassName":{"type":"string"}},"additionalProperties":false}},"additionalProperties":false}},"additionalProperties":false},"createdAt":{"type":"string","format":"date-time","description":"time of creation"},"updatedAt":{"type":"string","format":"date-time","description":"time of update"}},"required":["id","name","status"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Volumes","project"],"security":[],"x-nf-permission-required":"Project > Volumes > Backups > Read","x-nf-team-scoped":true,"x-nf-cli-command":["get","volume","backup"]},"v1-projects--projectId--volumes--volumeId--backups--backupId--delete":{"operationId":"deleteProjectsVolumesVolumeidBackupsBackupid","summary":"Delete volume backup","description":"Delete the volume backup","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"volumeId","type":"string","required":true,"description":"ID of the volume","example":"example-volume","in":"path","schema":{"name":"volumeId","type":"string","required":true,"description":"ID of the volume","example":"example-volume","in":"path"}},{"name":"backupId","type":"string","required":true,"description":"ID of the backup","example":"example-backup","in":"path","schema":{"name":"backupId","type":"string","required":true,"description":"ID of the backup","example":"example-backup","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Volumes","project"],"security":[],"x-nf-permission-required":"Project > Volumes > Backups > Delete","x-nf-team-scoped":true,"x-nf-cli-command":["delete","volume","backup"]},"v1-projects--projectId--volumes--volumeId--backups--backupId--delete-team-scoped":{"operationId":"deleteProjectsVolumesVolumeidBackupsBackupid","summary":"Delete volume backup","description":"Delete the volume backup","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"volumeId","type":"string","required":true,"description":"ID of the volume","example":"example-volume","in":"path","schema":{"name":"volumeId","type":"string","required":true,"description":"ID of the volume","example":"example-volume","in":"path"}},{"name":"backupId","type":"string","required":true,"description":"ID of the backup","example":"example-backup","in":"path","schema":{"name":"backupId","type":"string","required":true,"description":"ID of the backup","example":"example-backup","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Volumes","project"],"security":[],"x-nf-permission-required":"Project > Volumes > Backups > Delete","x-nf-team-scoped":true,"x-nf-cli-command":["delete","volume","backup"]},"v1-projects--projectId--volumes--volumeId--detach-post":{"operationId":"postProjectsVolumesVolumeidDetach","summary":"Detach volume","description":"Detach a volume","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"volumeId","type":"string","required":true,"description":"ID of the volume","example":"example-volume","in":"path","schema":{"name":"volumeId","type":"string","required":true,"description":"ID of the volume","example":"example-volume","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Volumes","project"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"nfObject":{"type":"object","properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The id of object to detach this volume to.","example":"example-service"},"type":{"type":"string","enum":["service","job"],"description":"The type of the object to detach this volume to.","example":"service"}},"required":["id","type"],"additionalProperties":false,"description":"The object to detach this volume to."}},"required":["nfObject"],"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Project > Volumes > General > Update","x-nf-team-scoped":true,"x-nf-cli-command":["detach","volume"]},"v1-projects--projectId--volumes--volumeId--detach-post-team-scoped":{"operationId":"postProjectsVolumesVolumeidDetach","summary":"Detach volume","description":"Detach a volume","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"volumeId","type":"string","required":true,"description":"ID of the volume","example":"example-volume","in":"path","schema":{"name":"volumeId","type":"string","required":true,"description":"ID of the volume","example":"example-volume","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Volumes","project"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"nfObject":{"type":"object","properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9-]+$","description":"The id of object to detach this volume to.","example":"example-service"},"type":{"type":"string","enum":["service","job"],"description":"The type of the object to detach this volume to.","example":"service"}},"required":["id","type"],"additionalProperties":false,"description":"The object to detach this volume to."}},"required":["nfObject"],"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Project > Volumes > General > Update","x-nf-team-scoped":true,"x-nf-cli-command":["detach","volume"]},"v1-projects--projectId--workflows-get":{"operationId":"getProjectsWorkflows","summary":"List workflows","description":"Lists all workflows for a project","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query","schema":{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query"}},{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query","schema":{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query"}},{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query","schema":{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query"}}],"responses":{"200":{"description":"A list of workflows that belong to the project.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"pipelines":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"Name of the template.","example":"Example Template"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"Description of the template.","example":"This is a sample template."},"apiVersion":{"type":"string","enum":["v1.2"],"description":"The version of the Northflank API to run the template against.","example":"v1.2"},"options":{"type":"object","properties":{"autorun":{"type":"boolean","description":"If true, the template will run automatically whenever a change is made to it.","example":false},"concurrencyPolicy":{"type":"string","enum":["allow","queue","forbid","latest","replace"],"description":"Defines the concurrency behaviour of the template with respect to parallel runs.","example":"allow"}},"additionalProperties":false,"description":"Options regarding how the template is run."},"id":{"type":"string","description":"Identifier for the workflow","example":"example-workflow"},"createdAt":{"type":"string","format":"date-time","description":"time of creation"},"updatedAt":{"type":"string","format":"date-time","description":"time of update"}},"required":["name","apiVersion","id"],"additionalProperties":false,"description":"A workflow."},"description":"An array of workflows in this project."}},"required":["pipelines"],"additionalProperties":false,"description":"Result data."},"pagination":{"type":"object","properties":{"hasNextPage":{"type":"boolean","description":"Is there another page of results available?","example":false},"cursor":{"type":"string","description":"The cursor to access the next page of results."},"count":{"type":"number","format":"float","description":"The number of results returned by this request.","example":1}},"required":["hasNextPage","count"],"additionalProperties":false,"description":"Data about the endpoint pagination."}},"required":["data","pagination"],"additionalProperties":false,"description":"Response object."}}},"tags":["Workflows","project"],"security":[],"x-nf-permission-required":"Project > Workflows > General > Read","x-nf-team-scoped":true,"x-nf-cli-command":["list","workflows"]},"v1-projects--projectId--workflows-get-team-scoped":{"operationId":"getProjectsWorkflows","summary":"List workflows","description":"Lists all workflows for a project","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query","schema":{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query"}},{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query","schema":{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query"}},{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query","schema":{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query"}}],"responses":{"200":{"description":"A list of workflows that belong to the project.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"pipelines":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"Name of the template.","example":"Example Template"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"Description of the template.","example":"This is a sample template."},"apiVersion":{"type":"string","enum":["v1.2"],"description":"The version of the Northflank API to run the template against.","example":"v1.2"},"options":{"type":"object","properties":{"autorun":{"type":"boolean","description":"If true, the template will run automatically whenever a change is made to it.","example":false},"concurrencyPolicy":{"type":"string","enum":["allow","queue","forbid","latest","replace"],"description":"Defines the concurrency behaviour of the template with respect to parallel runs.","example":"allow"}},"additionalProperties":false,"description":"Options regarding how the template is run."},"id":{"type":"string","description":"Identifier for the workflow","example":"example-workflow"},"createdAt":{"type":"string","format":"date-time","description":"time of creation"},"updatedAt":{"type":"string","format":"date-time","description":"time of update"}},"required":["name","apiVersion","id"],"additionalProperties":false,"description":"A workflow."},"description":"An array of workflows in this project."}},"required":["pipelines"],"additionalProperties":false,"description":"Result data."},"pagination":{"type":"object","properties":{"hasNextPage":{"type":"boolean","description":"Is there another page of results available?","example":false},"cursor":{"type":"string","description":"The cursor to access the next page of results."},"count":{"type":"number","format":"float","description":"The number of results returned by this request.","example":1}},"required":["hasNextPage","count"],"additionalProperties":false,"description":"Data about the endpoint pagination."}},"required":["data","pagination"],"additionalProperties":false,"description":"Response object."}}},"tags":["Workflows","project"],"security":[],"x-nf-permission-required":"Project > Workflows > General > Read","x-nf-team-scoped":true,"x-nf-cli-command":["list","workflows"]},"v1-projects--projectId--workflows-post":{"operationId":"postProjectsWorkflows","summary":"Create workflow","description":"Create a workflow","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}}],"responses":{"200":{"description":"success"}},"tags":["Workflows","project"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"arguments":{"type":"object","properties":{},"description":"A set of arguments that can be referenced in a template using '${args.argumentName}'."},"gitops":{"type":"object","properties":{"vcsService":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string","description":"Legacy key. Please used accountLogin instead."},"repoUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo to sync the file with.","example":"https://github.com/northflank-examples/remix-postgres-redis-demo"},"branch":{"type":"string","description":"The name of the branch to use.","example":"main"},"filePath":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]+$","description":"The file path in the repository. If using an existing file, it should be in JSON format.","examples":["/Dockerfile","northflank.json"]}},"required":["vcsService","repoUrl","branch","filePath"],"additionalProperties":false},"$schema":{"type":"string"},"name":{"type":"string","pattern":"^[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200},"richInputs":{"type":"array","items":{"$ref":"#/components/schemas/V1ReleaseFlowRichInputSchema"},"description":"An array of rich UI override inputs for the workflow."},"options":{"type":"object","properties":{"autorun":{"type":"boolean","description":"If true, the template will run automatically whenever a change is made to it.","example":false},"concurrencyPolicy":{"type":"string","enum":["allow","queue","forbid","latest","replace"],"description":"Defines the concurrency behaviour of the template with respect to parallel runs.","example":"allow"}},"additionalProperties":false,"description":"Options regarding how the template is run."},"teardownSpec":{"type":"object","properties":{"spec":{"description":"The root node of the teardown workflow."},"failurePolicy":{"type":"string","enum":["ignore","block"],"description":"Controls what happens if the teardown spec fails or times out. `ignore` (default) — proceed with resource deletion regardless. `block` — halt deletion and set the environment to `teardown_failed`","default":"ignore"}},"required":["spec"],"additionalProperties":false,"nullable":true,"description":"Optional spec to run when the workflow is deleted."},"argumentOverrides":{"type":"object","properties":{},"description":"A set of arguments that can be referenced in a template using '${args.argumentName}'."},"crossProjectAccess":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Allow this workflow to be run from other projects."},"projects":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9-]+$","example":"example-project"},"description":"A list of project IDs used as an allow list or deny list."},"isAllowList":{"type":"boolean","description":"If true, only the listed projects can run this workflow. If false, all projects except the listed ones can run this workflow."}},"required":["enabled","projects","isAllowList"],"additionalProperties":false,"description":"Controls which projects can run this workflow."},"stageId":{"oneOf":[{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"nullable":true,"description":"ID of the stage"},{"type":"string","pattern":".*\\${.*}.*","description":"A string containing one or more references that resolve to iD of the stage"}],"description":"ID of the stage"},"triggers":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"kind":{"type":"string","enum":["vcs-push"]},"spec":{"type":"object","properties":{"vcs":{"type":"object","properties":{"vcsService":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string"},"repoUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo that will trigger the template.","example":"https://github.com/northflank-examples/remix-postgres-redis-demo"}},"required":["vcsService","repoUrl"]},"branchNamePatterns":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z/*0-9%\\-.#_!'();,&=+]*$"},"default":[]},"commitMessageFlags":{"type":"object","properties":{"enabled":{"type":"boolean","default":false},"flags":{"type":"array","items":{"type":"string","maxLength":72,"description":"A commit ignore flag.","example":"[skip ci]"},"maxItems":200,"description":"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]\"]`","example":["[skip ci]","[ci skip]","[no ci]","[skip nf]","[nf skip]","[northflank skip]","[skip northflank]"],"default":[]}},"additionalProperties":false},"filePaths":{"type":"object","properties":{"enabled":{"type":"boolean","default":false},"allowList":{"type":"boolean","default":false},"paths":{"type":"array","items":{"type":"string","maxLength":260,"description":"A path ignore rule, following `.gitignore` syntax. For example, `*.md` will ignore all files ending with `.md`.","example":"README.md"},"maxItems":200,"description":"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.","default":[]}},"additionalProperties":false}},"additionalProperties":false},"ref":{"type":"string","description":"A reference that can be used to access the output of this trigger in the template."},"id":{"type":"string"}},"required":["kind","spec"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["vcs-pr"]},"spec":{"type":"object","properties":{"vcs":{"type":"object","properties":{"vcsService":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string"},"repoUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo that will trigger the template.","example":"https://github.com/northflank-examples/remix-postgres-redis-demo"}},"required":["vcsService","repoUrl"]},"branchNamePatterns":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z/*0-9%\\-.#_!'();,&=+]*$"},"default":[]},"commitMessageFlags":{"type":"object","properties":{"enabled":{"type":"boolean","default":false},"flags":{"type":"array","items":{"type":"string","maxLength":72,"description":"A commit ignore flag.","example":"[skip ci]"},"maxItems":200,"description":"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]\"]`","example":["[skip ci]","[ci skip]","[no ci]","[skip nf]","[nf skip]","[northflank skip]","[skip northflank]"],"default":[]}},"additionalProperties":false},"filePaths":{"type":"object","properties":{"enabled":{"type":"boolean","default":false},"allowList":{"type":"boolean","default":false},"paths":{"type":"array","items":{"type":"string","maxLength":260,"description":"A path ignore rule, following `.gitignore` syntax. For example, `*.md` will ignore all files ending with `.md`.","example":"README.md"},"maxItems":200,"description":"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.","default":[]}},"additionalProperties":false},"ignoreDrafts":{"type":"boolean","description":"If `true`, draft pull requests from this repo will not trigger the template.","default":false}},"additionalProperties":false},"ref":{"type":"string","description":"A reference that can be used to access the output of this trigger in the template."},"id":{"type":"string"}},"required":["kind","spec"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["webhook"]},"spec":{"type":"object","properties":{"token":{"type":"string"}},"required":["token"],"additionalProperties":false},"ref":{"type":"string","description":"A reference that can be used to access the output of this trigger in the template."},"id":{"type":"string"}},"required":["kind","spec"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["vcs-release"]},"spec":{"type":"object","properties":{"vcs":{"type":"object","properties":{"vcsService":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string"},"repoUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo that will trigger the template.","example":"https://github.com/northflank-examples/remix-postgres-redis-demo"}},"required":["vcsService","repoUrl"]}},"additionalProperties":false},"ref":{"type":"string","description":"A reference that can be used to access the output of this trigger in the template."},"id":{"type":"string"}},"required":["kind","spec"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["vcs-pr-label"]},"spec":{"type":"object","properties":{"vcs":{"type":"object","properties":{"vcsService":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string"},"repoUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo that will trigger the template.","example":"https://github.com/northflank-examples/remix-postgres-redis-demo"}},"required":["vcsService","repoUrl"]},"labelNamePatterns":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z/*0-9%\\-.#_!'();,&=+]*$"},"default":[]},"branchNamePatterns":{"type":"object","properties":{"enabled":{"type":"boolean","default":false},"names":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z/*0-9%\\-.#_!'();,&=+]*$"},"default":[]}},"additionalProperties":false},"commitMessageFlags":{"type":"object","properties":{"enabled":{"type":"boolean","default":false},"flags":{"type":"array","items":{"type":"string","maxLength":72,"description":"A commit ignore flag.","example":"[skip ci]"},"maxItems":200,"description":"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]\"]`","example":["[skip ci]","[ci skip]","[no ci]","[skip nf]","[nf skip]","[northflank skip]","[skip northflank]"],"default":[]}},"additionalProperties":false},"filePaths":{"type":"object","properties":{"enabled":{"type":"boolean","default":false},"allowList":{"type":"boolean","default":false},"paths":{"type":"array","items":{"type":"string","maxLength":260,"description":"A path ignore rule, following `.gitignore` syntax. For example, `*.md` will ignore all files ending with `.md`.","example":"README.md"},"maxItems":200,"description":"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.","default":[]}},"additionalProperties":false},"ignoreDrafts":{"type":"boolean","description":"If `true`, draft pull requests from this repo will not trigger the template.","default":false}},"additionalProperties":false},"ref":{"type":"string","description":"A reference that can be used to access the output of this trigger in the template."},"id":{"type":"string"}},"required":["kind","spec"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["cron"]},"spec":{"type":"object","properties":{"cron":{"type":"string","description":"A cron expression that defines the schedule on which the template will be executed.","example":"0 * * * *"}},"required":["cron"],"additionalProperties":false},"ref":{"type":"string","description":"A reference that can be used to access the output of this trigger in the template."},"id":{"type":"string"}},"required":["kind","spec"],"additionalProperties":false}]},"default":[]},"apiVersion":{"type":"string"},"project":{"type":"object","properties":{}},"spec":{"type":"object","properties":{}}},"required":["name","apiVersion","spec"],"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Project > Workflows > General > Create","x-nf-team-scoped":true,"x-nf-cli-command":["create","workflow"]},"v1-projects--projectId--workflows-post-team-scoped":{"operationId":"postProjectsWorkflows","summary":"Create workflow","description":"Create a workflow","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}}],"responses":{"200":{"description":"success"}},"tags":["Workflows","project"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"arguments":{"type":"object","properties":{},"description":"A set of arguments that can be referenced in a template using '${args.argumentName}'."},"gitops":{"type":"object","properties":{"vcsService":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string","description":"Legacy key. Please used accountLogin instead."},"repoUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo to sync the file with.","example":"https://github.com/northflank-examples/remix-postgres-redis-demo"},"branch":{"type":"string","description":"The name of the branch to use.","example":"main"},"filePath":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]+$","description":"The file path in the repository. If using an existing file, it should be in JSON format.","examples":["/Dockerfile","northflank.json"]}},"required":["vcsService","repoUrl","branch","filePath"],"additionalProperties":false},"$schema":{"type":"string"},"name":{"type":"string","pattern":"^[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200},"richInputs":{"type":"array","items":{"$ref":"#/components/schemas/V1ReleaseFlowRichInputSchema"},"description":"An array of rich UI override inputs for the workflow."},"options":{"type":"object","properties":{"autorun":{"type":"boolean","description":"If true, the template will run automatically whenever a change is made to it.","example":false},"concurrencyPolicy":{"type":"string","enum":["allow","queue","forbid","latest","replace"],"description":"Defines the concurrency behaviour of the template with respect to parallel runs.","example":"allow"}},"additionalProperties":false,"description":"Options regarding how the template is run."},"teardownSpec":{"type":"object","properties":{"spec":{"description":"The root node of the teardown workflow."},"failurePolicy":{"type":"string","enum":["ignore","block"],"description":"Controls what happens if the teardown spec fails or times out. `ignore` (default) — proceed with resource deletion regardless. `block` — halt deletion and set the environment to `teardown_failed`","default":"ignore"}},"required":["spec"],"additionalProperties":false,"nullable":true,"description":"Optional spec to run when the workflow is deleted."},"argumentOverrides":{"type":"object","properties":{},"description":"A set of arguments that can be referenced in a template using '${args.argumentName}'."},"crossProjectAccess":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Allow this workflow to be run from other projects."},"projects":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9-]+$","example":"example-project"},"description":"A list of project IDs used as an allow list or deny list."},"isAllowList":{"type":"boolean","description":"If true, only the listed projects can run this workflow. If false, all projects except the listed ones can run this workflow."}},"required":["enabled","projects","isAllowList"],"additionalProperties":false,"description":"Controls which projects can run this workflow."},"stageId":{"oneOf":[{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"nullable":true,"description":"ID of the stage"},{"type":"string","pattern":".*\\${.*}.*","description":"A string containing one or more references that resolve to iD of the stage"}],"description":"ID of the stage"},"triggers":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"kind":{"type":"string","enum":["vcs-push"]},"spec":{"type":"object","properties":{"vcs":{"type":"object","properties":{"vcsService":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string"},"repoUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo that will trigger the template.","example":"https://github.com/northflank-examples/remix-postgres-redis-demo"}},"required":["vcsService","repoUrl"]},"branchNamePatterns":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z/*0-9%\\-.#_!'();,&=+]*$"},"default":[]},"commitMessageFlags":{"type":"object","properties":{"enabled":{"type":"boolean","default":false},"flags":{"type":"array","items":{"type":"string","maxLength":72,"description":"A commit ignore flag.","example":"[skip ci]"},"maxItems":200,"description":"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]\"]`","example":["[skip ci]","[ci skip]","[no ci]","[skip nf]","[nf skip]","[northflank skip]","[skip northflank]"],"default":[]}},"additionalProperties":false},"filePaths":{"type":"object","properties":{"enabled":{"type":"boolean","default":false},"allowList":{"type":"boolean","default":false},"paths":{"type":"array","items":{"type":"string","maxLength":260,"description":"A path ignore rule, following `.gitignore` syntax. For example, `*.md` will ignore all files ending with `.md`.","example":"README.md"},"maxItems":200,"description":"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.","default":[]}},"additionalProperties":false}},"additionalProperties":false},"ref":{"type":"string","description":"A reference that can be used to access the output of this trigger in the template."},"id":{"type":"string"}},"required":["kind","spec"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["vcs-pr"]},"spec":{"type":"object","properties":{"vcs":{"type":"object","properties":{"vcsService":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string"},"repoUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo that will trigger the template.","example":"https://github.com/northflank-examples/remix-postgres-redis-demo"}},"required":["vcsService","repoUrl"]},"branchNamePatterns":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z/*0-9%\\-.#_!'();,&=+]*$"},"default":[]},"commitMessageFlags":{"type":"object","properties":{"enabled":{"type":"boolean","default":false},"flags":{"type":"array","items":{"type":"string","maxLength":72,"description":"A commit ignore flag.","example":"[skip ci]"},"maxItems":200,"description":"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]\"]`","example":["[skip ci]","[ci skip]","[no ci]","[skip nf]","[nf skip]","[northflank skip]","[skip northflank]"],"default":[]}},"additionalProperties":false},"filePaths":{"type":"object","properties":{"enabled":{"type":"boolean","default":false},"allowList":{"type":"boolean","default":false},"paths":{"type":"array","items":{"type":"string","maxLength":260,"description":"A path ignore rule, following `.gitignore` syntax. For example, `*.md` will ignore all files ending with `.md`.","example":"README.md"},"maxItems":200,"description":"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.","default":[]}},"additionalProperties":false},"ignoreDrafts":{"type":"boolean","description":"If `true`, draft pull requests from this repo will not trigger the template.","default":false}},"additionalProperties":false},"ref":{"type":"string","description":"A reference that can be used to access the output of this trigger in the template."},"id":{"type":"string"}},"required":["kind","spec"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["webhook"]},"spec":{"type":"object","properties":{"token":{"type":"string"}},"required":["token"],"additionalProperties":false},"ref":{"type":"string","description":"A reference that can be used to access the output of this trigger in the template."},"id":{"type":"string"}},"required":["kind","spec"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["vcs-release"]},"spec":{"type":"object","properties":{"vcs":{"type":"object","properties":{"vcsService":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string"},"repoUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo that will trigger the template.","example":"https://github.com/northflank-examples/remix-postgres-redis-demo"}},"required":["vcsService","repoUrl"]}},"additionalProperties":false},"ref":{"type":"string","description":"A reference that can be used to access the output of this trigger in the template."},"id":{"type":"string"}},"required":["kind","spec"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["vcs-pr-label"]},"spec":{"type":"object","properties":{"vcs":{"type":"object","properties":{"vcsService":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string"},"repoUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo that will trigger the template.","example":"https://github.com/northflank-examples/remix-postgres-redis-demo"}},"required":["vcsService","repoUrl"]},"labelNamePatterns":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z/*0-9%\\-.#_!'();,&=+]*$"},"default":[]},"branchNamePatterns":{"type":"object","properties":{"enabled":{"type":"boolean","default":false},"names":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z/*0-9%\\-.#_!'();,&=+]*$"},"default":[]}},"additionalProperties":false},"commitMessageFlags":{"type":"object","properties":{"enabled":{"type":"boolean","default":false},"flags":{"type":"array","items":{"type":"string","maxLength":72,"description":"A commit ignore flag.","example":"[skip ci]"},"maxItems":200,"description":"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]\"]`","example":["[skip ci]","[ci skip]","[no ci]","[skip nf]","[nf skip]","[northflank skip]","[skip northflank]"],"default":[]}},"additionalProperties":false},"filePaths":{"type":"object","properties":{"enabled":{"type":"boolean","default":false},"allowList":{"type":"boolean","default":false},"paths":{"type":"array","items":{"type":"string","maxLength":260,"description":"A path ignore rule, following `.gitignore` syntax. For example, `*.md` will ignore all files ending with `.md`.","example":"README.md"},"maxItems":200,"description":"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.","default":[]}},"additionalProperties":false},"ignoreDrafts":{"type":"boolean","description":"If `true`, draft pull requests from this repo will not trigger the template.","default":false}},"additionalProperties":false},"ref":{"type":"string","description":"A reference that can be used to access the output of this trigger in the template."},"id":{"type":"string"}},"required":["kind","spec"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["cron"]},"spec":{"type":"object","properties":{"cron":{"type":"string","description":"A cron expression that defines the schedule on which the template will be executed.","example":"0 * * * *"}},"required":["cron"],"additionalProperties":false},"ref":{"type":"string","description":"A reference that can be used to access the output of this trigger in the template."},"id":{"type":"string"}},"required":["kind","spec"],"additionalProperties":false}]},"default":[]},"apiVersion":{"type":"string"},"project":{"type":"object","properties":{}},"spec":{"type":"object","properties":{}}},"required":["name","apiVersion","spec"],"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Project > Workflows > General > Create","x-nf-team-scoped":true,"x-nf-cli-command":["create","workflow"]},"v1-projects--projectId--workflows--workflowId--get":{"operationId":"getProjectsWorkflowsWorkflowid","summary":"Get workflow","description":"Gets details about a workflow","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"workflowId","type":"string","required":true,"description":"ID of the workflow","example":"development","in":"path","schema":{"name":"workflowId","type":"string","required":true,"description":"ID of the workflow","example":"development","in":"path"}}],"responses":{"200":{"description":"Details about a workflow.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"apiVersion":{"type":"string","enum":["v1.2"],"description":"The version of the Northflank API to run the template against.","example":"v1.2"},"arguments":{"type":"object","properties":{},"description":"A set of arguments that can be referenced in a template using '${args.argumentName}'."},"gitops":{"type":"object","properties":{"vcsService":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string","description":"Legacy key. Please used accountLogin instead."},"repoUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo to sync the file with.","example":"https://github.com/northflank-examples/remix-postgres-redis-demo"},"branch":{"type":"string","description":"The name of the branch to use.","example":"main"},"filePath":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]+$","description":"The file path in the repository. If using an existing file, it should be in JSON format.","examples":["/Dockerfile","northflank.json"]}},"required":["vcsService","repoUrl","branch","filePath"],"additionalProperties":false},"$schema":{"type":"string"},"name":{"type":"string","pattern":"^[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200},"spec":{"$ref":"#/components/schemas/V1ReleaseFlowTemplateNodeSchema"},"richInputs":{"type":"array","items":{"$ref":"#/components/schemas/V1ReleaseFlowRichInputSchema"},"description":"An array of rich UI override inputs for the workflow."},"options":{"type":"object","properties":{"autorun":{"type":"boolean","description":"If true, the template will run automatically whenever a change is made to it.","example":false},"concurrencyPolicy":{"type":"string","enum":["allow","queue","forbid","latest","replace"],"description":"Defines the concurrency behaviour of the template with respect to parallel runs.","example":"allow"}},"additionalProperties":false,"description":"Options regarding how the template is run."},"teardownSpec":{"type":"object","properties":{"spec":{"description":"The root node of the teardown workflow."},"failurePolicy":{"type":"string","enum":["ignore","block"],"description":"Controls what happens if the teardown spec fails or times out. `ignore` (default) — proceed with resource deletion regardless. `block` — halt deletion and set the environment to `teardown_failed`","default":"ignore"}},"required":["spec"],"additionalProperties":false,"nullable":true,"description":"Optional spec to run when the workflow is deleted."},"argumentOverrides":{"type":"object","properties":{},"description":"A set of arguments that can be referenced in a template using '${args.argumentName}'."},"crossProjectAccess":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Allow this workflow to be run from other projects."},"projects":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9-]+$","example":"example-project"},"description":"A list of project IDs used as an allow list or deny list."},"isAllowList":{"type":"boolean","description":"If true, only the listed projects can run this workflow. If false, all projects except the listed ones can run this workflow."}},"required":["enabled","projects","isAllowList"],"additionalProperties":false,"description":"Controls which projects can run this workflow."},"stageId":{"oneOf":[{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"nullable":true,"description":"ID of the stage"},{"type":"string","pattern":".*\\${.*}.*","description":"A string containing one or more references that resolve to iD of the stage"}],"description":"ID of the stage"},"triggers":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"kind":{"type":"string","enum":["vcs-push"]},"spec":{"type":"object","properties":{"vcs":{"type":"object","properties":{"vcsService":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string"},"repoUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo that will trigger the template.","example":"https://github.com/northflank-examples/remix-postgres-redis-demo"}},"required":["vcsService","repoUrl"]},"branchNamePatterns":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z/*0-9%\\-.#_!'();,&=+]*$"},"default":[]},"commitMessageFlags":{"type":"object","properties":{"enabled":{"type":"boolean","default":false},"flags":{"type":"array","items":{"type":"string","maxLength":72,"description":"A commit ignore flag.","example":"[skip ci]"},"maxItems":200,"description":"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]\"]`","example":["[skip ci]","[ci skip]","[no ci]","[skip nf]","[nf skip]","[northflank skip]","[skip northflank]"],"default":[]}},"additionalProperties":false},"filePaths":{"type":"object","properties":{"enabled":{"type":"boolean","default":false},"allowList":{"type":"boolean","default":false},"paths":{"type":"array","items":{"type":"string","maxLength":260,"description":"A path ignore rule, following `.gitignore` syntax. For example, `*.md` will ignore all files ending with `.md`.","example":"README.md"},"maxItems":200,"description":"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.","default":[]}},"additionalProperties":false}},"additionalProperties":false},"ref":{"type":"string","description":"A reference that can be used to access the output of this trigger in the template."},"id":{"type":"string"}},"required":["kind","spec"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["vcs-pr"]},"spec":{"type":"object","properties":{"vcs":{"type":"object","properties":{"vcsService":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string"},"repoUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo that will trigger the template.","example":"https://github.com/northflank-examples/remix-postgres-redis-demo"}},"required":["vcsService","repoUrl"]},"branchNamePatterns":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z/*0-9%\\-.#_!'();,&=+]*$"},"default":[]},"commitMessageFlags":{"type":"object","properties":{"enabled":{"type":"boolean","default":false},"flags":{"type":"array","items":{"type":"string","maxLength":72,"description":"A commit ignore flag.","example":"[skip ci]"},"maxItems":200,"description":"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]\"]`","example":["[skip ci]","[ci skip]","[no ci]","[skip nf]","[nf skip]","[northflank skip]","[skip northflank]"],"default":[]}},"additionalProperties":false},"filePaths":{"type":"object","properties":{"enabled":{"type":"boolean","default":false},"allowList":{"type":"boolean","default":false},"paths":{"type":"array","items":{"type":"string","maxLength":260,"description":"A path ignore rule, following `.gitignore` syntax. For example, `*.md` will ignore all files ending with `.md`.","example":"README.md"},"maxItems":200,"description":"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.","default":[]}},"additionalProperties":false},"ignoreDrafts":{"type":"boolean","description":"If `true`, draft pull requests from this repo will not trigger the template.","default":false}},"additionalProperties":false},"ref":{"type":"string","description":"A reference that can be used to access the output of this trigger in the template."},"id":{"type":"string"}},"required":["kind","spec"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["webhook"]},"spec":{"type":"object","properties":{"token":{"type":"string"}},"required":["token"],"additionalProperties":false},"ref":{"type":"string","description":"A reference that can be used to access the output of this trigger in the template."},"id":{"type":"string"}},"required":["kind","spec"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["vcs-release"]},"spec":{"type":"object","properties":{"vcs":{"type":"object","properties":{"vcsService":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string"},"repoUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo that will trigger the template.","example":"https://github.com/northflank-examples/remix-postgres-redis-demo"}},"required":["vcsService","repoUrl"]}},"additionalProperties":false},"ref":{"type":"string","description":"A reference that can be used to access the output of this trigger in the template."},"id":{"type":"string"}},"required":["kind","spec"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["vcs-pr-label"]},"spec":{"type":"object","properties":{"vcs":{"type":"object","properties":{"vcsService":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string"},"repoUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo that will trigger the template.","example":"https://github.com/northflank-examples/remix-postgres-redis-demo"}},"required":["vcsService","repoUrl"]},"labelNamePatterns":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z/*0-9%\\-.#_!'();,&=+]*$"},"default":[]},"branchNamePatterns":{"type":"object","properties":{"enabled":{"type":"boolean","default":false},"names":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z/*0-9%\\-.#_!'();,&=+]*$"},"default":[]}},"additionalProperties":false},"commitMessageFlags":{"type":"object","properties":{"enabled":{"type":"boolean","default":false},"flags":{"type":"array","items":{"type":"string","maxLength":72,"description":"A commit ignore flag.","example":"[skip ci]"},"maxItems":200,"description":"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]\"]`","example":["[skip ci]","[ci skip]","[no ci]","[skip nf]","[nf skip]","[northflank skip]","[skip northflank]"],"default":[]}},"additionalProperties":false},"filePaths":{"type":"object","properties":{"enabled":{"type":"boolean","default":false},"allowList":{"type":"boolean","default":false},"paths":{"type":"array","items":{"type":"string","maxLength":260,"description":"A path ignore rule, following `.gitignore` syntax. For example, `*.md` will ignore all files ending with `.md`.","example":"README.md"},"maxItems":200,"description":"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.","default":[]}},"additionalProperties":false},"ignoreDrafts":{"type":"boolean","description":"If `true`, draft pull requests from this repo will not trigger the template.","default":false}},"additionalProperties":false},"ref":{"type":"string","description":"A reference that can be used to access the output of this trigger in the template."},"id":{"type":"string"}},"required":["kind","spec"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["cron"]},"spec":{"type":"object","properties":{"cron":{"type":"string","description":"A cron expression that defines the schedule on which the template will be executed.","example":"0 * * * *"}},"required":["cron"],"additionalProperties":false},"ref":{"type":"string","description":"A reference that can be used to access the output of this trigger in the template."},"id":{"type":"string"}},"required":["kind","spec"],"additionalProperties":false}]},"default":[]},"concurrencyPolicy":{"type":"string","enum":["allow","queue","forbid","latest","replace"],"description":"Defines the concurrency behaviour of the template with respect to parallel runs.","example":"allow"},"status":{"type":"string","enum":["pending","running","success","failure","aborted","aborting","queued","unknown","skipped","waiting","retrying","async_wait","approval_wait"],"description":"Status of the template run","example":"success","default":"pending"},"paused":{"type":"boolean","description":"Whether triggers are paused for this workflow. If `true`, Git triggers and webhook triggers will not run the workflow.","example":false},"createdAt":{"type":"string","format":"date-time","description":"Timestamp the template was created at.","example":"2021-01-01 12:00:00.000Z"},"updatedAt":{"type":"string","format":"date-time","description":"Timestamp the template was last updated at.","example":"2021-01-01 12:00:00.000Z"}},"required":["apiVersion","name","status","paused","createdAt","updatedAt"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Workflows","project"],"security":[],"x-nf-permission-required":"Project > Workflows > General > Read","x-nf-team-scoped":true,"x-nf-cli-command":["get","workflow"]},"v1-projects--projectId--workflows--workflowId--get-team-scoped":{"operationId":"getProjectsWorkflowsWorkflowid","summary":"Get workflow","description":"Gets details about a workflow","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"workflowId","type":"string","required":true,"description":"ID of the workflow","example":"development","in":"path","schema":{"name":"workflowId","type":"string","required":true,"description":"ID of the workflow","example":"development","in":"path"}}],"responses":{"200":{"description":"Details about a workflow.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"apiVersion":{"type":"string","enum":["v1.2"],"description":"The version of the Northflank API to run the template against.","example":"v1.2"},"arguments":{"type":"object","properties":{},"description":"A set of arguments that can be referenced in a template using '${args.argumentName}'."},"gitops":{"type":"object","properties":{"vcsService":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string","description":"Legacy key. Please used accountLogin instead."},"repoUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo to sync the file with.","example":"https://github.com/northflank-examples/remix-postgres-redis-demo"},"branch":{"type":"string","description":"The name of the branch to use.","example":"main"},"filePath":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]+$","description":"The file path in the repository. If using an existing file, it should be in JSON format.","examples":["/Dockerfile","northflank.json"]}},"required":["vcsService","repoUrl","branch","filePath"],"additionalProperties":false},"$schema":{"type":"string"},"name":{"type":"string","pattern":"^[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200},"spec":{"$ref":"#/components/schemas/V1ReleaseFlowTemplateNodeSchema"},"richInputs":{"type":"array","items":{"$ref":"#/components/schemas/V1ReleaseFlowRichInputSchema"},"description":"An array of rich UI override inputs for the workflow."},"options":{"type":"object","properties":{"autorun":{"type":"boolean","description":"If true, the template will run automatically whenever a change is made to it.","example":false},"concurrencyPolicy":{"type":"string","enum":["allow","queue","forbid","latest","replace"],"description":"Defines the concurrency behaviour of the template with respect to parallel runs.","example":"allow"}},"additionalProperties":false,"description":"Options regarding how the template is run."},"teardownSpec":{"type":"object","properties":{"spec":{"description":"The root node of the teardown workflow."},"failurePolicy":{"type":"string","enum":["ignore","block"],"description":"Controls what happens if the teardown spec fails or times out. `ignore` (default) — proceed with resource deletion regardless. `block` — halt deletion and set the environment to `teardown_failed`","default":"ignore"}},"required":["spec"],"additionalProperties":false,"nullable":true,"description":"Optional spec to run when the workflow is deleted."},"argumentOverrides":{"type":"object","properties":{},"description":"A set of arguments that can be referenced in a template using '${args.argumentName}'."},"crossProjectAccess":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Allow this workflow to be run from other projects."},"projects":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9-]+$","example":"example-project"},"description":"A list of project IDs used as an allow list or deny list."},"isAllowList":{"type":"boolean","description":"If true, only the listed projects can run this workflow. If false, all projects except the listed ones can run this workflow."}},"required":["enabled","projects","isAllowList"],"additionalProperties":false,"description":"Controls which projects can run this workflow."},"stageId":{"oneOf":[{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"nullable":true,"description":"ID of the stage"},{"type":"string","pattern":".*\\${.*}.*","description":"A string containing one or more references that resolve to iD of the stage"}],"description":"ID of the stage"},"triggers":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"kind":{"type":"string","enum":["vcs-push"]},"spec":{"type":"object","properties":{"vcs":{"type":"object","properties":{"vcsService":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string"},"repoUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo that will trigger the template.","example":"https://github.com/northflank-examples/remix-postgres-redis-demo"}},"required":["vcsService","repoUrl"]},"branchNamePatterns":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z/*0-9%\\-.#_!'();,&=+]*$"},"default":[]},"commitMessageFlags":{"type":"object","properties":{"enabled":{"type":"boolean","default":false},"flags":{"type":"array","items":{"type":"string","maxLength":72,"description":"A commit ignore flag.","example":"[skip ci]"},"maxItems":200,"description":"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]\"]`","example":["[skip ci]","[ci skip]","[no ci]","[skip nf]","[nf skip]","[northflank skip]","[skip northflank]"],"default":[]}},"additionalProperties":false},"filePaths":{"type":"object","properties":{"enabled":{"type":"boolean","default":false},"allowList":{"type":"boolean","default":false},"paths":{"type":"array","items":{"type":"string","maxLength":260,"description":"A path ignore rule, following `.gitignore` syntax. For example, `*.md` will ignore all files ending with `.md`.","example":"README.md"},"maxItems":200,"description":"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.","default":[]}},"additionalProperties":false}},"additionalProperties":false},"ref":{"type":"string","description":"A reference that can be used to access the output of this trigger in the template."},"id":{"type":"string"}},"required":["kind","spec"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["vcs-pr"]},"spec":{"type":"object","properties":{"vcs":{"type":"object","properties":{"vcsService":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string"},"repoUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo that will trigger the template.","example":"https://github.com/northflank-examples/remix-postgres-redis-demo"}},"required":["vcsService","repoUrl"]},"branchNamePatterns":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z/*0-9%\\-.#_!'();,&=+]*$"},"default":[]},"commitMessageFlags":{"type":"object","properties":{"enabled":{"type":"boolean","default":false},"flags":{"type":"array","items":{"type":"string","maxLength":72,"description":"A commit ignore flag.","example":"[skip ci]"},"maxItems":200,"description":"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]\"]`","example":["[skip ci]","[ci skip]","[no ci]","[skip nf]","[nf skip]","[northflank skip]","[skip northflank]"],"default":[]}},"additionalProperties":false},"filePaths":{"type":"object","properties":{"enabled":{"type":"boolean","default":false},"allowList":{"type":"boolean","default":false},"paths":{"type":"array","items":{"type":"string","maxLength":260,"description":"A path ignore rule, following `.gitignore` syntax. For example, `*.md` will ignore all files ending with `.md`.","example":"README.md"},"maxItems":200,"description":"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.","default":[]}},"additionalProperties":false},"ignoreDrafts":{"type":"boolean","description":"If `true`, draft pull requests from this repo will not trigger the template.","default":false}},"additionalProperties":false},"ref":{"type":"string","description":"A reference that can be used to access the output of this trigger in the template."},"id":{"type":"string"}},"required":["kind","spec"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["webhook"]},"spec":{"type":"object","properties":{"token":{"type":"string"}},"required":["token"],"additionalProperties":false},"ref":{"type":"string","description":"A reference that can be used to access the output of this trigger in the template."},"id":{"type":"string"}},"required":["kind","spec"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["vcs-release"]},"spec":{"type":"object","properties":{"vcs":{"type":"object","properties":{"vcsService":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string"},"repoUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo that will trigger the template.","example":"https://github.com/northflank-examples/remix-postgres-redis-demo"}},"required":["vcsService","repoUrl"]}},"additionalProperties":false},"ref":{"type":"string","description":"A reference that can be used to access the output of this trigger in the template."},"id":{"type":"string"}},"required":["kind","spec"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["vcs-pr-label"]},"spec":{"type":"object","properties":{"vcs":{"type":"object","properties":{"vcsService":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string"},"repoUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo that will trigger the template.","example":"https://github.com/northflank-examples/remix-postgres-redis-demo"}},"required":["vcsService","repoUrl"]},"labelNamePatterns":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z/*0-9%\\-.#_!'();,&=+]*$"},"default":[]},"branchNamePatterns":{"type":"object","properties":{"enabled":{"type":"boolean","default":false},"names":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z/*0-9%\\-.#_!'();,&=+]*$"},"default":[]}},"additionalProperties":false},"commitMessageFlags":{"type":"object","properties":{"enabled":{"type":"boolean","default":false},"flags":{"type":"array","items":{"type":"string","maxLength":72,"description":"A commit ignore flag.","example":"[skip ci]"},"maxItems":200,"description":"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]\"]`","example":["[skip ci]","[ci skip]","[no ci]","[skip nf]","[nf skip]","[northflank skip]","[skip northflank]"],"default":[]}},"additionalProperties":false},"filePaths":{"type":"object","properties":{"enabled":{"type":"boolean","default":false},"allowList":{"type":"boolean","default":false},"paths":{"type":"array","items":{"type":"string","maxLength":260,"description":"A path ignore rule, following `.gitignore` syntax. For example, `*.md` will ignore all files ending with `.md`.","example":"README.md"},"maxItems":200,"description":"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.","default":[]}},"additionalProperties":false},"ignoreDrafts":{"type":"boolean","description":"If `true`, draft pull requests from this repo will not trigger the template.","default":false}},"additionalProperties":false},"ref":{"type":"string","description":"A reference that can be used to access the output of this trigger in the template."},"id":{"type":"string"}},"required":["kind","spec"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["cron"]},"spec":{"type":"object","properties":{"cron":{"type":"string","description":"A cron expression that defines the schedule on which the template will be executed.","example":"0 * * * *"}},"required":["cron"],"additionalProperties":false},"ref":{"type":"string","description":"A reference that can be used to access the output of this trigger in the template."},"id":{"type":"string"}},"required":["kind","spec"],"additionalProperties":false}]},"default":[]},"concurrencyPolicy":{"type":"string","enum":["allow","queue","forbid","latest","replace"],"description":"Defines the concurrency behaviour of the template with respect to parallel runs.","example":"allow"},"status":{"type":"string","enum":["pending","running","success","failure","aborted","aborting","queued","unknown","skipped","waiting","retrying","async_wait","approval_wait"],"description":"Status of the template run","example":"success","default":"pending"},"paused":{"type":"boolean","description":"Whether triggers are paused for this workflow. If `true`, Git triggers and webhook triggers will not run the workflow.","example":false},"createdAt":{"type":"string","format":"date-time","description":"Timestamp the template was created at.","example":"2021-01-01 12:00:00.000Z"},"updatedAt":{"type":"string","format":"date-time","description":"Timestamp the template was last updated at.","example":"2021-01-01 12:00:00.000Z"}},"required":["apiVersion","name","status","paused","createdAt","updatedAt"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Workflows","project"],"security":[],"x-nf-permission-required":"Project > Workflows > General > Read","x-nf-team-scoped":true,"x-nf-cli-command":["get","workflow"]},"v1-projects--projectId--workflows--workflowId--post":{"operationId":"postProjectsWorkflowsWorkflowid","summary":"Update workflow","description":"Updates a workflow","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"workflowId","type":"string","required":true,"description":"ID of the workflow","example":"development","in":"path","schema":{"name":"workflowId","type":"string","required":true,"description":"ID of the workflow","example":"development","in":"path"}}],"responses":{"200":{"description":"success"}},"tags":["Workflows","project"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"arguments":{"type":"object","properties":{},"description":"A set of arguments that can be referenced in a template using '${args.argumentName}'."},"gitops":{"type":"object","properties":{"vcsService":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string","description":"Legacy key. Please used accountLogin instead."},"repoUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo to sync the file with.","example":"https://github.com/northflank-examples/remix-postgres-redis-demo"},"branch":{"type":"string","description":"The name of the branch to use.","example":"main"},"filePath":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]+$","description":"The file path in the repository. If using an existing file, it should be in JSON format.","examples":["/Dockerfile","northflank.json"]}},"required":["vcsService","repoUrl","branch","filePath"],"additionalProperties":false},"$schema":{"type":"string"},"name":{"type":"string","pattern":"^[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200},"richInputs":{"type":"array","items":{"$ref":"#/components/schemas/V1ReleaseFlowRichInputSchema"},"description":"An array of rich UI override inputs for the workflow."},"options":{"type":"object","properties":{"autorun":{"type":"boolean","description":"If true, the template will run automatically whenever a change is made to it.","example":false},"concurrencyPolicy":{"type":"string","enum":["allow","queue","forbid","latest","replace"],"description":"Defines the concurrency behaviour of the template with respect to parallel runs.","example":"allow"}},"additionalProperties":false,"description":"Options regarding how the template is run."},"teardownSpec":{"type":"object","properties":{"spec":{"description":"The root node of the teardown workflow."},"failurePolicy":{"type":"string","enum":["ignore","block"],"description":"Controls what happens if the teardown spec fails or times out. `ignore` (default) — proceed with resource deletion regardless. `block` — halt deletion and set the environment to `teardown_failed`","default":"ignore"}},"required":["spec"],"additionalProperties":false,"nullable":true,"description":"Optional spec to run when the workflow is deleted."},"argumentOverrides":{"type":"object","properties":{},"description":"A set of arguments that can be referenced in a template using '${args.argumentName}'."},"crossProjectAccess":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Allow this workflow to be run from other projects."},"projects":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9-]+$","example":"example-project"},"description":"A list of project IDs used as an allow list or deny list."},"isAllowList":{"type":"boolean","description":"If true, only the listed projects can run this workflow. If false, all projects except the listed ones can run this workflow."}},"required":["enabled","projects","isAllowList"],"additionalProperties":false,"description":"Controls which projects can run this workflow."},"stageId":{"oneOf":[{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"nullable":true,"description":"ID of the stage"},{"type":"string","pattern":".*\\${.*}.*","description":"A string containing one or more references that resolve to iD of the stage"}],"description":"ID of the stage"},"triggers":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"kind":{"type":"string","enum":["vcs-push"]},"spec":{"type":"object","properties":{"vcs":{"type":"object","properties":{"vcsService":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string"},"repoUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo that will trigger the template.","example":"https://github.com/northflank-examples/remix-postgres-redis-demo"}},"required":["vcsService","repoUrl"]},"branchNamePatterns":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z/*0-9%\\-.#_!'();,&=+]*$"},"default":[]},"commitMessageFlags":{"type":"object","properties":{"enabled":{"type":"boolean","default":false},"flags":{"type":"array","items":{"type":"string","maxLength":72,"description":"A commit ignore flag.","example":"[skip ci]"},"maxItems":200,"description":"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]\"]`","example":["[skip ci]","[ci skip]","[no ci]","[skip nf]","[nf skip]","[northflank skip]","[skip northflank]"],"default":[]}},"additionalProperties":false},"filePaths":{"type":"object","properties":{"enabled":{"type":"boolean","default":false},"allowList":{"type":"boolean","default":false},"paths":{"type":"array","items":{"type":"string","maxLength":260,"description":"A path ignore rule, following `.gitignore` syntax. For example, `*.md` will ignore all files ending with `.md`.","example":"README.md"},"maxItems":200,"description":"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.","default":[]}},"additionalProperties":false}},"additionalProperties":false},"ref":{"type":"string","description":"A reference that can be used to access the output of this trigger in the template."},"id":{"type":"string"}},"required":["kind","spec"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["vcs-pr"]},"spec":{"type":"object","properties":{"vcs":{"type":"object","properties":{"vcsService":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string"},"repoUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo that will trigger the template.","example":"https://github.com/northflank-examples/remix-postgres-redis-demo"}},"required":["vcsService","repoUrl"]},"branchNamePatterns":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z/*0-9%\\-.#_!'();,&=+]*$"},"default":[]},"commitMessageFlags":{"type":"object","properties":{"enabled":{"type":"boolean","default":false},"flags":{"type":"array","items":{"type":"string","maxLength":72,"description":"A commit ignore flag.","example":"[skip ci]"},"maxItems":200,"description":"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]\"]`","example":["[skip ci]","[ci skip]","[no ci]","[skip nf]","[nf skip]","[northflank skip]","[skip northflank]"],"default":[]}},"additionalProperties":false},"filePaths":{"type":"object","properties":{"enabled":{"type":"boolean","default":false},"allowList":{"type":"boolean","default":false},"paths":{"type":"array","items":{"type":"string","maxLength":260,"description":"A path ignore rule, following `.gitignore` syntax. For example, `*.md` will ignore all files ending with `.md`.","example":"README.md"},"maxItems":200,"description":"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.","default":[]}},"additionalProperties":false},"ignoreDrafts":{"type":"boolean","description":"If `true`, draft pull requests from this repo will not trigger the template.","default":false}},"additionalProperties":false},"ref":{"type":"string","description":"A reference that can be used to access the output of this trigger in the template."},"id":{"type":"string"}},"required":["kind","spec"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["webhook"]},"spec":{"type":"object","properties":{"token":{"type":"string"}},"required":["token"],"additionalProperties":false},"ref":{"type":"string","description":"A reference that can be used to access the output of this trigger in the template."},"id":{"type":"string"}},"required":["kind","spec"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["vcs-release"]},"spec":{"type":"object","properties":{"vcs":{"type":"object","properties":{"vcsService":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string"},"repoUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo that will trigger the template.","example":"https://github.com/northflank-examples/remix-postgres-redis-demo"}},"required":["vcsService","repoUrl"]}},"additionalProperties":false},"ref":{"type":"string","description":"A reference that can be used to access the output of this trigger in the template."},"id":{"type":"string"}},"required":["kind","spec"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["vcs-pr-label"]},"spec":{"type":"object","properties":{"vcs":{"type":"object","properties":{"vcsService":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string"},"repoUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo that will trigger the template.","example":"https://github.com/northflank-examples/remix-postgres-redis-demo"}},"required":["vcsService","repoUrl"]},"labelNamePatterns":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z/*0-9%\\-.#_!'();,&=+]*$"},"default":[]},"branchNamePatterns":{"type":"object","properties":{"enabled":{"type":"boolean","default":false},"names":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z/*0-9%\\-.#_!'();,&=+]*$"},"default":[]}},"additionalProperties":false},"commitMessageFlags":{"type":"object","properties":{"enabled":{"type":"boolean","default":false},"flags":{"type":"array","items":{"type":"string","maxLength":72,"description":"A commit ignore flag.","example":"[skip ci]"},"maxItems":200,"description":"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]\"]`","example":["[skip ci]","[ci skip]","[no ci]","[skip nf]","[nf skip]","[northflank skip]","[skip northflank]"],"default":[]}},"additionalProperties":false},"filePaths":{"type":"object","properties":{"enabled":{"type":"boolean","default":false},"allowList":{"type":"boolean","default":false},"paths":{"type":"array","items":{"type":"string","maxLength":260,"description":"A path ignore rule, following `.gitignore` syntax. For example, `*.md` will ignore all files ending with `.md`.","example":"README.md"},"maxItems":200,"description":"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.","default":[]}},"additionalProperties":false},"ignoreDrafts":{"type":"boolean","description":"If `true`, draft pull requests from this repo will not trigger the template.","default":false}},"additionalProperties":false},"ref":{"type":"string","description":"A reference that can be used to access the output of this trigger in the template."},"id":{"type":"string"}},"required":["kind","spec"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["cron"]},"spec":{"type":"object","properties":{"cron":{"type":"string","description":"A cron expression that defines the schedule on which the template will be executed.","example":"0 * * * *"}},"required":["cron"],"additionalProperties":false},"ref":{"type":"string","description":"A reference that can be used to access the output of this trigger in the template."},"id":{"type":"string"}},"required":["kind","spec"],"additionalProperties":false}]},"default":[]},"apiVersion":{"type":"string"},"project":{"type":"object","properties":{}},"spec":{"type":"object","properties":{}}},"required":["name","apiVersion","spec"],"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Project > Workflows > General > Update","x-nf-team-scoped":true,"x-nf-cli-command":["update","workflow"]},"v1-projects--projectId--workflows--workflowId--post-team-scoped":{"operationId":"postProjectsWorkflowsWorkflowid","summary":"Update workflow","description":"Updates a workflow","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"workflowId","type":"string","required":true,"description":"ID of the workflow","example":"development","in":"path","schema":{"name":"workflowId","type":"string","required":true,"description":"ID of the workflow","example":"development","in":"path"}}],"responses":{"200":{"description":"success"}},"tags":["Workflows","project"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"arguments":{"type":"object","properties":{},"description":"A set of arguments that can be referenced in a template using '${args.argumentName}'."},"gitops":{"type":"object","properties":{"vcsService":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string","description":"Legacy key. Please used accountLogin instead."},"repoUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo to sync the file with.","example":"https://github.com/northflank-examples/remix-postgres-redis-demo"},"branch":{"type":"string","description":"The name of the branch to use.","example":"main"},"filePath":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]+$","description":"The file path in the repository. If using an existing file, it should be in JSON format.","examples":["/Dockerfile","northflank.json"]}},"required":["vcsService","repoUrl","branch","filePath"],"additionalProperties":false},"$schema":{"type":"string"},"name":{"type":"string","pattern":"^[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200},"richInputs":{"type":"array","items":{"$ref":"#/components/schemas/V1ReleaseFlowRichInputSchema"},"description":"An array of rich UI override inputs for the workflow."},"options":{"type":"object","properties":{"autorun":{"type":"boolean","description":"If true, the template will run automatically whenever a change is made to it.","example":false},"concurrencyPolicy":{"type":"string","enum":["allow","queue","forbid","latest","replace"],"description":"Defines the concurrency behaviour of the template with respect to parallel runs.","example":"allow"}},"additionalProperties":false,"description":"Options regarding how the template is run."},"teardownSpec":{"type":"object","properties":{"spec":{"description":"The root node of the teardown workflow."},"failurePolicy":{"type":"string","enum":["ignore","block"],"description":"Controls what happens if the teardown spec fails or times out. `ignore` (default) — proceed with resource deletion regardless. `block` — halt deletion and set the environment to `teardown_failed`","default":"ignore"}},"required":["spec"],"additionalProperties":false,"nullable":true,"description":"Optional spec to run when the workflow is deleted."},"argumentOverrides":{"type":"object","properties":{},"description":"A set of arguments that can be referenced in a template using '${args.argumentName}'."},"crossProjectAccess":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Allow this workflow to be run from other projects."},"projects":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9-]+$","example":"example-project"},"description":"A list of project IDs used as an allow list or deny list."},"isAllowList":{"type":"boolean","description":"If true, only the listed projects can run this workflow. If false, all projects except the listed ones can run this workflow."}},"required":["enabled","projects","isAllowList"],"additionalProperties":false,"description":"Controls which projects can run this workflow."},"stageId":{"oneOf":[{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"nullable":true,"description":"ID of the stage"},{"type":"string","pattern":".*\\${.*}.*","description":"A string containing one or more references that resolve to iD of the stage"}],"description":"ID of the stage"},"triggers":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"kind":{"type":"string","enum":["vcs-push"]},"spec":{"type":"object","properties":{"vcs":{"type":"object","properties":{"vcsService":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string"},"repoUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo that will trigger the template.","example":"https://github.com/northflank-examples/remix-postgres-redis-demo"}},"required":["vcsService","repoUrl"]},"branchNamePatterns":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z/*0-9%\\-.#_!'();,&=+]*$"},"default":[]},"commitMessageFlags":{"type":"object","properties":{"enabled":{"type":"boolean","default":false},"flags":{"type":"array","items":{"type":"string","maxLength":72,"description":"A commit ignore flag.","example":"[skip ci]"},"maxItems":200,"description":"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]\"]`","example":["[skip ci]","[ci skip]","[no ci]","[skip nf]","[nf skip]","[northflank skip]","[skip northflank]"],"default":[]}},"additionalProperties":false},"filePaths":{"type":"object","properties":{"enabled":{"type":"boolean","default":false},"allowList":{"type":"boolean","default":false},"paths":{"type":"array","items":{"type":"string","maxLength":260,"description":"A path ignore rule, following `.gitignore` syntax. For example, `*.md` will ignore all files ending with `.md`.","example":"README.md"},"maxItems":200,"description":"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.","default":[]}},"additionalProperties":false}},"additionalProperties":false},"ref":{"type":"string","description":"A reference that can be used to access the output of this trigger in the template."},"id":{"type":"string"}},"required":["kind","spec"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["vcs-pr"]},"spec":{"type":"object","properties":{"vcs":{"type":"object","properties":{"vcsService":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string"},"repoUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo that will trigger the template.","example":"https://github.com/northflank-examples/remix-postgres-redis-demo"}},"required":["vcsService","repoUrl"]},"branchNamePatterns":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z/*0-9%\\-.#_!'();,&=+]*$"},"default":[]},"commitMessageFlags":{"type":"object","properties":{"enabled":{"type":"boolean","default":false},"flags":{"type":"array","items":{"type":"string","maxLength":72,"description":"A commit ignore flag.","example":"[skip ci]"},"maxItems":200,"description":"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]\"]`","example":["[skip ci]","[ci skip]","[no ci]","[skip nf]","[nf skip]","[northflank skip]","[skip northflank]"],"default":[]}},"additionalProperties":false},"filePaths":{"type":"object","properties":{"enabled":{"type":"boolean","default":false},"allowList":{"type":"boolean","default":false},"paths":{"type":"array","items":{"type":"string","maxLength":260,"description":"A path ignore rule, following `.gitignore` syntax. For example, `*.md` will ignore all files ending with `.md`.","example":"README.md"},"maxItems":200,"description":"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.","default":[]}},"additionalProperties":false},"ignoreDrafts":{"type":"boolean","description":"If `true`, draft pull requests from this repo will not trigger the template.","default":false}},"additionalProperties":false},"ref":{"type":"string","description":"A reference that can be used to access the output of this trigger in the template."},"id":{"type":"string"}},"required":["kind","spec"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["webhook"]},"spec":{"type":"object","properties":{"token":{"type":"string"}},"required":["token"],"additionalProperties":false},"ref":{"type":"string","description":"A reference that can be used to access the output of this trigger in the template."},"id":{"type":"string"}},"required":["kind","spec"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["vcs-release"]},"spec":{"type":"object","properties":{"vcs":{"type":"object","properties":{"vcsService":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string"},"repoUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo that will trigger the template.","example":"https://github.com/northflank-examples/remix-postgres-redis-demo"}},"required":["vcsService","repoUrl"]}},"additionalProperties":false},"ref":{"type":"string","description":"A reference that can be used to access the output of this trigger in the template."},"id":{"type":"string"}},"required":["kind","spec"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["vcs-pr-label"]},"spec":{"type":"object","properties":{"vcs":{"type":"object","properties":{"vcsService":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string"},"repoUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo that will trigger the template.","example":"https://github.com/northflank-examples/remix-postgres-redis-demo"}},"required":["vcsService","repoUrl"]},"labelNamePatterns":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z/*0-9%\\-.#_!'();,&=+]*$"},"default":[]},"branchNamePatterns":{"type":"object","properties":{"enabled":{"type":"boolean","default":false},"names":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z/*0-9%\\-.#_!'();,&=+]*$"},"default":[]}},"additionalProperties":false},"commitMessageFlags":{"type":"object","properties":{"enabled":{"type":"boolean","default":false},"flags":{"type":"array","items":{"type":"string","maxLength":72,"description":"A commit ignore flag.","example":"[skip ci]"},"maxItems":200,"description":"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]\"]`","example":["[skip ci]","[ci skip]","[no ci]","[skip nf]","[nf skip]","[northflank skip]","[skip northflank]"],"default":[]}},"additionalProperties":false},"filePaths":{"type":"object","properties":{"enabled":{"type":"boolean","default":false},"allowList":{"type":"boolean","default":false},"paths":{"type":"array","items":{"type":"string","maxLength":260,"description":"A path ignore rule, following `.gitignore` syntax. For example, `*.md` will ignore all files ending with `.md`.","example":"README.md"},"maxItems":200,"description":"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.","default":[]}},"additionalProperties":false},"ignoreDrafts":{"type":"boolean","description":"If `true`, draft pull requests from this repo will not trigger the template.","default":false}},"additionalProperties":false},"ref":{"type":"string","description":"A reference that can be used to access the output of this trigger in the template."},"id":{"type":"string"}},"required":["kind","spec"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["cron"]},"spec":{"type":"object","properties":{"cron":{"type":"string","description":"A cron expression that defines the schedule on which the template will be executed.","example":"0 * * * *"}},"required":["cron"],"additionalProperties":false},"ref":{"type":"string","description":"A reference that can be used to access the output of this trigger in the template."},"id":{"type":"string"}},"required":["kind","spec"],"additionalProperties":false}]},"default":[]},"apiVersion":{"type":"string"},"project":{"type":"object","properties":{}},"spec":{"type":"object","properties":{}}},"required":["name","apiVersion","spec"],"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Project > Workflows > General > Update","x-nf-team-scoped":true,"x-nf-cli-command":["update","workflow"]},"v1-projects--projectId--workflows--workflowId--runs-post":{"operationId":"postProjectsWorkflowsWorkflowidRuns","summary":"Run workflow","description":"Runs a given workflow with given arguments. This endpoint can be used as part of a CI pipeline to automatically trigger a release process.","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"workflowId","type":"string","required":true,"description":"ID of the workflow","example":"development","in":"path","schema":{"name":"workflowId","type":"string","required":true,"description":"ID of the workflow","example":"development","in":"path"}}],"responses":{"200":{"description":"success"}},"tags":["Workflows","project"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The optional name of the workflow run.","example":"Example Run"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"The optional description of the workflow run.","example":"This is a description for the workflow run."},"arguments":{"type":"object","properties":{},"description":"A set of arguments that can be referenced in a template using '${args.argumentName}'.","example":{"ARG_1":"value"}},"overrides":{"type":"object","properties":{},"additionalProperties":false,"description":"Overrides for specific reference values. This should be an object where each key corresponds to a ref defined in the template. The values of each of these keys should also be an object, where each key value pair provided will overwrite the value for that key in the given ref. For example, the value `{ 'example-ref': { 'branch': 'devel' } }` would set the `branch` field to `devel` for the node with ref `example-ref`.","example":{"example-ref":{"branch":"devel"}}},"releaseNodeOverrides":{"type":"object","properties":{},"additionalProperties":false,"description":"Overrides for release nodes. This should be an object where each key is the id of a deployment service used in a release node. The value of each of these keys should be also be an object containing the new spec of the release for that deployment service.","example":{"example-service":{"type":"registry","origin":{"imagePath":"nginx:latest"}}}}},"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Project > Workflows > Runs > Start","x-nf-team-scoped":true,"x-nf-cli-command":["run","workflow"]},"v1-projects--projectId--workflows--workflowId--runs-post-team-scoped":{"operationId":"postProjectsWorkflowsWorkflowidRuns","summary":"Run workflow","description":"Runs a given workflow with given arguments. This endpoint can be used as part of a CI pipeline to automatically trigger a release process.","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"workflowId","type":"string","required":true,"description":"ID of the workflow","example":"development","in":"path","schema":{"name":"workflowId","type":"string","required":true,"description":"ID of the workflow","example":"development","in":"path"}}],"responses":{"200":{"description":"success"}},"tags":["Workflows","project"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z]((-|\\s)?[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*)?$","minLength":3,"maxLength":39,"description":"The optional name of the workflow run.","example":"Example Run"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"The optional description of the workflow run.","example":"This is a description for the workflow run."},"arguments":{"type":"object","properties":{},"description":"A set of arguments that can be referenced in a template using '${args.argumentName}'.","example":{"ARG_1":"value"}},"overrides":{"type":"object","properties":{},"additionalProperties":false,"description":"Overrides for specific reference values. This should be an object where each key corresponds to a ref defined in the template. The values of each of these keys should also be an object, where each key value pair provided will overwrite the value for that key in the given ref. For example, the value `{ 'example-ref': { 'branch': 'devel' } }` would set the `branch` field to `devel` for the node with ref `example-ref`.","example":{"example-ref":{"branch":"devel"}}},"releaseNodeOverrides":{"type":"object","properties":{},"additionalProperties":false,"description":"Overrides for release nodes. This should be an object where each key is the id of a deployment service used in a release node. The value of each of these keys should be also be an object containing the new spec of the release for that deployment service.","example":{"example-service":{"type":"registry","origin":{"imagePath":"nginx:latest"}}}}},"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Project > Workflows > Runs > Start","x-nf-team-scoped":true,"x-nf-cli-command":["run","workflow"]},"v1-projects--projectId--workflows--workflowId--runs-get":{"operationId":"getProjectsWorkflowsWorkflowidRuns","summary":"List workflow runs","description":"Lists runs of a workflow","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"workflowId","type":"string","required":true,"description":"ID of the workflow","example":"development","in":"path","schema":{"name":"workflowId","type":"string","required":true,"description":"ID of the workflow","example":"development","in":"path"}},{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query","schema":{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query"}},{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query","schema":{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query"}},{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query","schema":{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query"}}],"responses":{"200":{"description":"A list of runs for this workflow.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"runs":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"ID of the workflow run","example":"110ddb52-bdcd-482d-8ac2-05ba580afe2f"},"name":{"type":"string","description":"Optional name for the workflow run","example":"Example run"},"description":{"type":"string","description":"Optional description for the workflow run","example":"This is an example description"},"status":{"type":"string","enum":["pending","running","success","failure","aborted","aborting","queued","unknown","skipped","waiting","retrying","async_wait","approval_wait"],"description":"Status of the template run","example":"success","default":"pending"},"startedAt":{"type":"string","format":"date-time","description":"Timestamp the run started at.","example":"2021-01-01 12:01:00.000Z"},"concluded":{"type":"boolean","description":"Whether the run has concluded (aborted, success, failed)","example":true,"default":false},"concludedAt":{"type":"string","format":"date-time","description":"Timestamp the run concluded at.","example":"2021-01-01 12:10:00.000Z"},"createdAt":{"type":"string","format":"date-time","description":"Timestamp the run was created at.","example":"2021-01-01 12:00:00.000Z"},"updatedAt":{"type":"string","format":"date-time","description":"Timestamp the run was last updated at.","example":"2021-01-01 12:00:00.000Z"}},"required":["id","status","concluded","createdAt","updatedAt"],"additionalProperties":false},"description":"A workflow run"}},"additionalProperties":false,"description":"Result data."},"pagination":{"type":"object","properties":{"hasNextPage":{"type":"boolean","description":"Is there another page of results available?","example":false},"cursor":{"type":"string","description":"The cursor to access the next page of results."},"count":{"type":"number","format":"float","description":"The number of results returned by this request.","example":1}},"required":["hasNextPage","count"],"additionalProperties":false,"description":"Data about the endpoint pagination."}},"required":["data","pagination"],"additionalProperties":false,"description":"Response object."}}},"tags":["Workflows","project"],"security":[],"x-nf-permission-required":"Project > Workflows > Runs > Read","x-nf-team-scoped":true,"x-nf-cli-command":["list","workflow-runs"]},"v1-projects--projectId--workflows--workflowId--runs-get-team-scoped":{"operationId":"getProjectsWorkflowsWorkflowidRuns","summary":"List workflow runs","description":"Lists runs of a workflow","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"workflowId","type":"string","required":true,"description":"ID of the workflow","example":"development","in":"path","schema":{"name":"workflowId","type":"string","required":true,"description":"ID of the workflow","example":"development","in":"path"}},{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query","schema":{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query"}},{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query","schema":{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query"}},{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query","schema":{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query"}}],"responses":{"200":{"description":"A list of runs for this workflow.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"runs":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"ID of the workflow run","example":"110ddb52-bdcd-482d-8ac2-05ba580afe2f"},"name":{"type":"string","description":"Optional name for the workflow run","example":"Example run"},"description":{"type":"string","description":"Optional description for the workflow run","example":"This is an example description"},"status":{"type":"string","enum":["pending","running","success","failure","aborted","aborting","queued","unknown","skipped","waiting","retrying","async_wait","approval_wait"],"description":"Status of the template run","example":"success","default":"pending"},"startedAt":{"type":"string","format":"date-time","description":"Timestamp the run started at.","example":"2021-01-01 12:01:00.000Z"},"concluded":{"type":"boolean","description":"Whether the run has concluded (aborted, success, failed)","example":true,"default":false},"concludedAt":{"type":"string","format":"date-time","description":"Timestamp the run concluded at.","example":"2021-01-01 12:10:00.000Z"},"createdAt":{"type":"string","format":"date-time","description":"Timestamp the run was created at.","example":"2021-01-01 12:00:00.000Z"},"updatedAt":{"type":"string","format":"date-time","description":"Timestamp the run was last updated at.","example":"2021-01-01 12:00:00.000Z"}},"required":["id","status","concluded","createdAt","updatedAt"],"additionalProperties":false},"description":"A workflow run"}},"additionalProperties":false,"description":"Result data."},"pagination":{"type":"object","properties":{"hasNextPage":{"type":"boolean","description":"Is there another page of results available?","example":false},"cursor":{"type":"string","description":"The cursor to access the next page of results."},"count":{"type":"number","format":"float","description":"The number of results returned by this request.","example":1}},"required":["hasNextPage","count"],"additionalProperties":false,"description":"Data about the endpoint pagination."}},"required":["data","pagination"],"additionalProperties":false,"description":"Response object."}}},"tags":["Workflows","project"],"security":[],"x-nf-permission-required":"Project > Workflows > Runs > Read","x-nf-team-scoped":true,"x-nf-cli-command":["list","workflow-runs"]},"v1-projects--projectId--workflows--workflowId--runs--runId--get":{"operationId":"getProjectsWorkflowsWorkflowidRunsRunid","summary":"Get workflow run details","description":"Get information about the given workflow run","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"workflowId","type":"string","required":true,"description":"ID of the workflow","example":"development","in":"path","schema":{"name":"workflowId","type":"string","required":true,"description":"ID of the workflow","example":"development","in":"path"}},{"name":"runId","type":"string","required":true,"description":"ID of the workflow run","example":"development","in":"path","schema":{"name":"runId","type":"string","required":true,"description":"ID of the workflow run","example":"development","in":"path"}}],"responses":{"200":{"description":"Details about a workflow run.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"apiVersion":{"type":"string","enum":["v1.2"],"description":"The version of the Northflank API to run the template against.","example":"v1.2"},"arguments":{"type":"object","properties":{},"description":"A set of arguments that can be referenced in a template using '${args.argumentName}'."},"triggers":{"type":"array","items":{"type":"object","properties":{"ref":{"type":"string","description":"A reference that can be used to access the output of this trigger in the template."},"vcsService":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If vcsService is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string"},"repoUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo that will trigger the template.","example":"https://github.com/northflank-examples/remix-postgres-redis-demo"},"branchRestrictions":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z/*0-9%\\-.#_!'();,&=+]*$"},"default":[]},"prRestrictions":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z/*0-9%\\-.#_!'();,&=+]*$"},"default":[]},"pathIgnoreRules":{"type":"array","items":{"type":"string","maxLength":260,"description":"A path ignore rule, following `.gitignore` syntax. For example, `*.md` will ignore all files ending with `.md`.","example":"README.md"},"maxItems":200,"description":"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.","default":[]},"ciIgnoreFlags":{"type":"array","items":{"type":"string","maxLength":72,"description":"A commit ignore flag.","example":"[skip ci]"},"maxItems":200,"description":"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]\"]`","example":["[skip ci]","[ci skip]","[no ci]","[skip nf]","[nf skip]","[northflank skip]","[skip northflank]"],"default":[]},"ciIgnoreFlagsEnabled":{"type":"boolean","default":false},"isAllowList":{"type":"boolean","default":false},"ignoreDrafts":{"type":"boolean","description":"If `true`, draft pull requests from this repo will not trigger the template.","default":false}},"required":["vcsService","repoUrl"],"additionalProperties":false},"default":[]},"options":{"type":"object","properties":{"concurrencyPolicy":{"type":"string","enum":["allow","queue","forbid","latest","replace"],"description":"Defines the concurrency behaviour of the template with respect to parallel runs.","example":"allow"},"paused":{"type":"boolean","description":"If `true`, the template will not run when triggered by git.","example":false}},"additionalProperties":false,"description":"Options regarding how the template is run."},"gitops":{"type":"object","properties":{"vcsService":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string","description":"Legacy key. Please used accountLogin instead."},"repoUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo to sync the file with.","example":"https://github.com/northflank-examples/remix-postgres-redis-demo"},"branch":{"type":"string","description":"The name of the branch to use.","example":"main"},"filePath":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]+$","description":"The file path in the repository. If using an existing file, it should be in JSON format.","examples":["/Dockerfile","northflank.json"]}},"required":["vcsService","repoUrl","branch","filePath"],"additionalProperties":false},"$schema":{"type":"string"},"spec":{"$ref":"#/components/schemas/V1ReleaseFlowTemplateNodeRunSchema"},"refs":{"type":"object","properties":{},"additionalProperties":false},"id":{"type":"string","description":"ID of the workflow run","example":"110ddb52-bdcd-482d-8ac2-05ba580afe2f"},"name":{"type":"string","description":"Optional name for the workflow run","example":"Example run"},"description":{"type":"string","description":"Optional description for the workflow run","example":"This is an example description"},"status":{"type":"string","enum":["pending","running","success","failure","aborted","aborting","queued","unknown","skipped","waiting","retrying","async_wait","approval_wait"],"description":"Status of the template run","example":"success","default":"pending"},"startedAt":{"type":"string","format":"date-time","description":"Timestamp the run started at.","example":"2021-01-01 12:01:00.000Z"},"concluded":{"type":"boolean","description":"Whether the run has concluded (aborted, success, failed)","example":true,"default":false},"concludedAt":{"type":"string","format":"date-time","description":"Timestamp the run concluded at.","example":"2021-01-01 12:10:00.000Z"},"createdAt":{"type":"string","format":"date-time","description":"Timestamp the run was created at.","example":"2021-01-01 12:00:00.000Z"},"updatedAt":{"type":"string","format":"date-time","description":"Timestamp the run was last updated at.","example":"2021-01-01 12:00:00.000Z"}},"required":["apiVersion","spec","id","status","concluded","createdAt","updatedAt"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Workflows","project"],"security":[],"x-nf-permission-required":"Project > Workflows > Runs > Read","x-nf-team-scoped":true,"x-nf-cli-command":["get","workflow-run"]},"v1-projects--projectId--workflows--workflowId--runs--runId--get-team-scoped":{"operationId":"getProjectsWorkflowsWorkflowidRunsRunid","summary":"Get workflow run details","description":"Get information about the given workflow run","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"workflowId","type":"string","required":true,"description":"ID of the workflow","example":"development","in":"path","schema":{"name":"workflowId","type":"string","required":true,"description":"ID of the workflow","example":"development","in":"path"}},{"name":"runId","type":"string","required":true,"description":"ID of the workflow run","example":"development","in":"path","schema":{"name":"runId","type":"string","required":true,"description":"ID of the workflow run","example":"development","in":"path"}}],"responses":{"200":{"description":"Details about a workflow run.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"apiVersion":{"type":"string","enum":["v1.2"],"description":"The version of the Northflank API to run the template against.","example":"v1.2"},"arguments":{"type":"object","properties":{},"description":"A set of arguments that can be referenced in a template using '${args.argumentName}'."},"triggers":{"type":"array","items":{"type":"object","properties":{"ref":{"type":"string","description":"A reference that can be used to access the output of this trigger in the template."},"vcsService":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If vcsService is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string"},"repoUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo that will trigger the template.","example":"https://github.com/northflank-examples/remix-postgres-redis-demo"},"branchRestrictions":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z/*0-9%\\-.#_!'();,&=+]*$"},"default":[]},"prRestrictions":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z/*0-9%\\-.#_!'();,&=+]*$"},"default":[]},"pathIgnoreRules":{"type":"array","items":{"type":"string","maxLength":260,"description":"A path ignore rule, following `.gitignore` syntax. For example, `*.md` will ignore all files ending with `.md`.","example":"README.md"},"maxItems":200,"description":"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.","default":[]},"ciIgnoreFlags":{"type":"array","items":{"type":"string","maxLength":72,"description":"A commit ignore flag.","example":"[skip ci]"},"maxItems":200,"description":"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]\"]`","example":["[skip ci]","[ci skip]","[no ci]","[skip nf]","[nf skip]","[northflank skip]","[skip northflank]"],"default":[]},"ciIgnoreFlagsEnabled":{"type":"boolean","default":false},"isAllowList":{"type":"boolean","default":false},"ignoreDrafts":{"type":"boolean","description":"If `true`, draft pull requests from this repo will not trigger the template.","default":false}},"required":["vcsService","repoUrl"],"additionalProperties":false},"default":[]},"options":{"type":"object","properties":{"concurrencyPolicy":{"type":"string","enum":["allow","queue","forbid","latest","replace"],"description":"Defines the concurrency behaviour of the template with respect to parallel runs.","example":"allow"},"paused":{"type":"boolean","description":"If `true`, the template will not run when triggered by git.","example":false}},"additionalProperties":false,"description":"Options regarding how the template is run."},"gitops":{"type":"object","properties":{"vcsService":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string","description":"Legacy key. Please used accountLogin instead."},"repoUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo to sync the file with.","example":"https://github.com/northflank-examples/remix-postgres-redis-demo"},"branch":{"type":"string","description":"The name of the branch to use.","example":"main"},"filePath":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]+$","description":"The file path in the repository. If using an existing file, it should be in JSON format.","examples":["/Dockerfile","northflank.json"]}},"required":["vcsService","repoUrl","branch","filePath"],"additionalProperties":false},"$schema":{"type":"string"},"spec":{"$ref":"#/components/schemas/V1ReleaseFlowTemplateNodeRunSchema"},"refs":{"type":"object","properties":{},"additionalProperties":false},"id":{"type":"string","description":"ID of the workflow run","example":"110ddb52-bdcd-482d-8ac2-05ba580afe2f"},"name":{"type":"string","description":"Optional name for the workflow run","example":"Example run"},"description":{"type":"string","description":"Optional description for the workflow run","example":"This is an example description"},"status":{"type":"string","enum":["pending","running","success","failure","aborted","aborting","queued","unknown","skipped","waiting","retrying","async_wait","approval_wait"],"description":"Status of the template run","example":"success","default":"pending"},"startedAt":{"type":"string","format":"date-time","description":"Timestamp the run started at.","example":"2021-01-01 12:01:00.000Z"},"concluded":{"type":"boolean","description":"Whether the run has concluded (aborted, success, failed)","example":true,"default":false},"concludedAt":{"type":"string","format":"date-time","description":"Timestamp the run concluded at.","example":"2021-01-01 12:10:00.000Z"},"createdAt":{"type":"string","format":"date-time","description":"Timestamp the run was created at.","example":"2021-01-01 12:00:00.000Z"},"updatedAt":{"type":"string","format":"date-time","description":"Timestamp the run was last updated at.","example":"2021-01-01 12:00:00.000Z"}},"required":["apiVersion","spec","id","status","concluded","createdAt","updatedAt"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Workflows","project"],"security":[],"x-nf-permission-required":"Project > Workflows > Runs > Read","x-nf-team-scoped":true,"x-nf-cli-command":["get","workflow-run"]},"v1-projects--projectId--workflows--workflowId--runs--runId--abort-post":{"operationId":"postProjectsWorkflowsWorkflowidRunsRunidAbort","summary":"Abort workflow run","description":"Abort the given workflow run","parameters":[{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"workflowId","type":"string","required":true,"description":"ID of the workflow","example":"development","in":"path","schema":{"name":"workflowId","type":"string","required":true,"description":"ID of the workflow","example":"development","in":"path"}},{"name":"runId","type":"string","required":true,"description":"ID of the workflow run","example":"development","in":"path","schema":{"name":"runId","type":"string","required":true,"description":"ID of the workflow run","example":"development","in":"path"}}],"responses":{"200":{"description":"Details about the aborting run.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"apiVersion":{"type":"string","enum":["v1.2"],"description":"The version of the Northflank API to run the template against.","example":"v1.2"},"arguments":{"type":"object","properties":{},"description":"A set of arguments that can be referenced in a template using '${args.argumentName}'."},"triggers":{"type":"array","items":{"type":"object","properties":{"ref":{"type":"string","description":"A reference that can be used to access the output of this trigger in the template."},"vcsService":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If vcsService is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string"},"repoUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo that will trigger the template.","example":"https://github.com/northflank-examples/remix-postgres-redis-demo"},"branchRestrictions":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z/*0-9%\\-.#_!'();,&=+]*$"},"default":[]},"prRestrictions":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z/*0-9%\\-.#_!'();,&=+]*$"},"default":[]},"pathIgnoreRules":{"type":"array","items":{"type":"string","maxLength":260,"description":"A path ignore rule, following `.gitignore` syntax. For example, `*.md` will ignore all files ending with `.md`.","example":"README.md"},"maxItems":200,"description":"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.","default":[]},"ciIgnoreFlags":{"type":"array","items":{"type":"string","maxLength":72,"description":"A commit ignore flag.","example":"[skip ci]"},"maxItems":200,"description":"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]\"]`","example":["[skip ci]","[ci skip]","[no ci]","[skip nf]","[nf skip]","[northflank skip]","[skip northflank]"],"default":[]},"ciIgnoreFlagsEnabled":{"type":"boolean","default":false},"isAllowList":{"type":"boolean","default":false},"ignoreDrafts":{"type":"boolean","description":"If `true`, draft pull requests from this repo will not trigger the template.","default":false}},"required":["vcsService","repoUrl"],"additionalProperties":false},"default":[]},"options":{"type":"object","properties":{"concurrencyPolicy":{"type":"string","enum":["allow","queue","forbid","latest","replace"],"description":"Defines the concurrency behaviour of the template with respect to parallel runs.","example":"allow"},"paused":{"type":"boolean","description":"If `true`, the template will not run when triggered by git.","example":false}},"additionalProperties":false,"description":"Options regarding how the template is run."},"gitops":{"type":"object","properties":{"vcsService":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string","description":"Legacy key. Please used accountLogin instead."},"repoUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo to sync the file with.","example":"https://github.com/northflank-examples/remix-postgres-redis-demo"},"branch":{"type":"string","description":"The name of the branch to use.","example":"main"},"filePath":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]+$","description":"The file path in the repository. If using an existing file, it should be in JSON format.","examples":["/Dockerfile","northflank.json"]}},"required":["vcsService","repoUrl","branch","filePath"],"additionalProperties":false},"$schema":{"type":"string"},"spec":{"$ref":"#/components/schemas/V1ReleaseFlowTemplateNodeRunSchema"},"refs":{"type":"object","properties":{},"additionalProperties":false},"id":{"type":"string","description":"ID of the workflow run","example":"110ddb52-bdcd-482d-8ac2-05ba580afe2f"},"name":{"type":"string","description":"Optional name for the workflow run","example":"Example run"},"description":{"type":"string","description":"Optional description for the workflow run","example":"This is an example description"},"status":{"type":"string","enum":["pending","running","success","failure","aborted","aborting","queued","unknown","skipped","waiting","retrying","async_wait","approval_wait"],"description":"Status of the template run","example":"success","default":"pending"},"startedAt":{"type":"string","format":"date-time","description":"Timestamp the run started at.","example":"2021-01-01 12:01:00.000Z"},"concluded":{"type":"boolean","description":"Whether the run has concluded (aborted, success, failed)","example":true,"default":false},"concludedAt":{"type":"string","format":"date-time","description":"Timestamp the run concluded at.","example":"2021-01-01 12:10:00.000Z"},"createdAt":{"type":"string","format":"date-time","description":"Timestamp the run was created at.","example":"2021-01-01 12:00:00.000Z"},"updatedAt":{"type":"string","format":"date-time","description":"Timestamp the run was last updated at.","example":"2021-01-01 12:00:00.000Z"}},"required":["apiVersion","spec","id","status","concluded","createdAt","updatedAt"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Workflows","project"],"security":[],"x-nf-permission-required":"Project > Workflows > Runs > Abort","x-nf-team-scoped":true,"x-nf-cli-command":["abort","workflow-run"]},"v1-projects--projectId--workflows--workflowId--runs--runId--abort-post-team-scoped":{"operationId":"postProjectsWorkflowsWorkflowidRunsRunidAbort","summary":"Abort workflow run","description":"Abort the given workflow run","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path","schema":{"name":"projectId","type":"string","required":true,"description":"ID of the project","example":"default-project","in":"path"}},{"name":"workflowId","type":"string","required":true,"description":"ID of the workflow","example":"development","in":"path","schema":{"name":"workflowId","type":"string","required":true,"description":"ID of the workflow","example":"development","in":"path"}},{"name":"runId","type":"string","required":true,"description":"ID of the workflow run","example":"development","in":"path","schema":{"name":"runId","type":"string","required":true,"description":"ID of the workflow run","example":"development","in":"path"}}],"responses":{"200":{"description":"Details about the aborting run.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"apiVersion":{"type":"string","enum":["v1.2"],"description":"The version of the Northflank API to run the template against.","example":"v1.2"},"arguments":{"type":"object","properties":{},"description":"A set of arguments that can be referenced in a template using '${args.argumentName}'."},"triggers":{"type":"array","items":{"type":"object","properties":{"ref":{"type":"string","description":"A reference that can be used to access the output of this trigger in the template."},"vcsService":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If vcsService is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string"},"repoUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo that will trigger the template.","example":"https://github.com/northflank-examples/remix-postgres-redis-demo"},"branchRestrictions":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z/*0-9%\\-.#_!'();,&=+]*$"},"default":[]},"prRestrictions":{"type":"array","items":{"type":"string","pattern":"^[a-zA-Z/*0-9%\\-.#_!'();,&=+]*$"},"default":[]},"pathIgnoreRules":{"type":"array","items":{"type":"string","maxLength":260,"description":"A path ignore rule, following `.gitignore` syntax. For example, `*.md` will ignore all files ending with `.md`.","example":"README.md"},"maxItems":200,"description":"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.","default":[]},"ciIgnoreFlags":{"type":"array","items":{"type":"string","maxLength":72,"description":"A commit ignore flag.","example":"[skip ci]"},"maxItems":200,"description":"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]\"]`","example":["[skip ci]","[ci skip]","[no ci]","[skip nf]","[nf skip]","[northflank skip]","[skip northflank]"],"default":[]},"ciIgnoreFlagsEnabled":{"type":"boolean","default":false},"isAllowList":{"type":"boolean","default":false},"ignoreDrafts":{"type":"boolean","description":"If `true`, draft pull requests from this repo will not trigger the template.","default":false}},"required":["vcsService","repoUrl"],"additionalProperties":false},"default":[]},"options":{"type":"object","properties":{"concurrencyPolicy":{"type":"string","enum":["allow","queue","forbid","latest","replace"],"description":"Defines the concurrency behaviour of the template with respect to parallel runs.","example":"allow"},"paused":{"type":"boolean","description":"If `true`, the template will not run when triggered by git.","example":false}},"additionalProperties":false,"description":"Options regarding how the template is run."},"gitops":{"type":"object","properties":{"vcsService":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string","description":"Legacy key. Please used accountLogin instead."},"repoUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo to sync the file with.","example":"https://github.com/northflank-examples/remix-postgres-redis-demo"},"branch":{"type":"string","description":"The name of the branch to use.","example":"main"},"filePath":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]+$","description":"The file path in the repository. If using an existing file, it should be in JSON format.","examples":["/Dockerfile","northflank.json"]}},"required":["vcsService","repoUrl","branch","filePath"],"additionalProperties":false},"$schema":{"type":"string"},"spec":{"$ref":"#/components/schemas/V1ReleaseFlowTemplateNodeRunSchema"},"refs":{"type":"object","properties":{},"additionalProperties":false},"id":{"type":"string","description":"ID of the workflow run","example":"110ddb52-bdcd-482d-8ac2-05ba580afe2f"},"name":{"type":"string","description":"Optional name for the workflow run","example":"Example run"},"description":{"type":"string","description":"Optional description for the workflow run","example":"This is an example description"},"status":{"type":"string","enum":["pending","running","success","failure","aborted","aborting","queued","unknown","skipped","waiting","retrying","async_wait","approval_wait"],"description":"Status of the template run","example":"success","default":"pending"},"startedAt":{"type":"string","format":"date-time","description":"Timestamp the run started at.","example":"2021-01-01 12:01:00.000Z"},"concluded":{"type":"boolean","description":"Whether the run has concluded (aborted, success, failed)","example":true,"default":false},"concludedAt":{"type":"string","format":"date-time","description":"Timestamp the run concluded at.","example":"2021-01-01 12:10:00.000Z"},"createdAt":{"type":"string","format":"date-time","description":"Timestamp the run was created at.","example":"2021-01-01 12:00:00.000Z"},"updatedAt":{"type":"string","format":"date-time","description":"Timestamp the run was last updated at.","example":"2021-01-01 12:00:00.000Z"}},"required":["apiVersion","spec","id","status","concluded","createdAt","updatedAt"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Workflows","project"],"security":[],"x-nf-permission-required":"Project > Workflows > Runs > Abort","x-nf-team-scoped":true,"x-nf-cli-command":["abort","workflow-run"]},"v1-secrets-get":{"operationId":"getSecrets","summary":"List global secrets","description":"Gets a list of global secrets","parameters":[{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query","schema":{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query"}},{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query","schema":{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query"}},{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query","schema":{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query"}}],"responses":{"200":{"description":"The list of secrets.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"secrets":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Identifier for the global secret","example":"example-secret"},"name":{"type":"string","description":"Global secret name","example":"Example Secret"},"description":{"type":"string","description":"A short description of the global secret","example":"This is the global secret description"},"type":{"type":"string","enum":["secret","config"],"description":"The permission type of the global secret.","example":"secret"},"createdAt":{"type":"string","format":"date-time","description":"The time the global secret was created.","example":"2020-01-01T12:00:00.000Z"},"updatedAt":{"type":"string","format":"date-time","description":"The time the global secret was last updated.","example":"2020-01-01T12:00:00.000Z"}},"required":["id","name","type","createdAt","updatedAt"],"additionalProperties":false,"description":"A global secret object"},"description":"An array of global secrets"}},"required":["secrets"],"additionalProperties":false,"description":"Result data."},"pagination":{"type":"object","properties":{"hasNextPage":{"type":"boolean","description":"Is there another page of results available?","example":false},"cursor":{"type":"string","description":"The cursor to access the next page of results."},"count":{"type":"number","format":"float","description":"The number of results returned by this request.","example":1}},"required":["hasNextPage","count"],"additionalProperties":false,"description":"Data about the endpoint pagination."}},"required":["data","pagination"],"additionalProperties":false,"description":"Response object."}}},"tags":["Secrets"],"security":[],"x-nf-team-scoped":true,"x-nf-cli-command":["list","global-secrets"]},"v1-secrets-get-team-scoped":{"operationId":"getSecrets","summary":"List global secrets","description":"Gets a list of global secrets","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query","schema":{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query"}},{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query","schema":{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query"}},{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query","schema":{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query"}}],"responses":{"200":{"description":"The list of secrets.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"secrets":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Identifier for the global secret","example":"example-secret"},"name":{"type":"string","description":"Global secret name","example":"Example Secret"},"description":{"type":"string","description":"A short description of the global secret","example":"This is the global secret description"},"type":{"type":"string","enum":["secret","config"],"description":"The permission type of the global secret.","example":"secret"},"createdAt":{"type":"string","format":"date-time","description":"The time the global secret was created.","example":"2020-01-01T12:00:00.000Z"},"updatedAt":{"type":"string","format":"date-time","description":"The time the global secret was last updated.","example":"2020-01-01T12:00:00.000Z"}},"required":["id","name","type","createdAt","updatedAt"],"additionalProperties":false,"description":"A global secret object"},"description":"An array of global secrets"}},"required":["secrets"],"additionalProperties":false,"description":"Result data."},"pagination":{"type":"object","properties":{"hasNextPage":{"type":"boolean","description":"Is there another page of results available?","example":false},"cursor":{"type":"string","description":"The cursor to access the next page of results."},"count":{"type":"number","format":"float","description":"The number of results returned by this request.","example":1}},"required":["hasNextPage","count"],"additionalProperties":false,"description":"Data about the endpoint pagination."}},"required":["data","pagination"],"additionalProperties":false,"description":"Response object."}}},"tags":["Secrets","team"],"security":[],"x-nf-team-scoped":true,"x-nf-cli-command":["list","global-secrets"]},"v1-secrets-post":{"operationId":"postSecrets","summary":"Create global secret","description":"Creates a global secret with the specified payload","parameters":[],"responses":{"200":{"description":"Details about the newly created secret.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200},"secrets":{"type":"object","properties":{"values":{"type":"object","properties":{}},"files":{"type":"object","properties":{},"additionalProperties":false}},"required":["values"],"additionalProperties":false},"type":{"type":"string","enum":["secret","config"],"description":"The permission type of the global secret.","example":"secret"},"gitops":{"type":"object","properties":{"vcsService":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string","description":"Legacy key. Please used accountLogin instead."},"repoUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo to sync the file with.","example":"https://github.com/northflank-examples/remix-postgres-redis-demo"},"branch":{"type":"string","description":"The name of the branch to use.","example":"main"},"filePath":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]+$","description":"The file path in the repository. If using an existing file, it should be in JSON format.","examples":["/Dockerfile","northflank.json"]}},"required":["vcsService","repoUrl","branch","filePath"],"additionalProperties":false},"createdAt":{"type":"string","format":"date-time","description":"time of creation"},"updatedAt":{"type":"string","format":"date-time","description":"time of update"}},"required":["name","type"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}},"409":{"description":"There is already a secret with the same derived identifier"}},"tags":["Secrets"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200},"secrets":{"type":"object","properties":{"values":{"type":"object","properties":{}},"files":{"type":"object","properties":{},"additionalProperties":false}},"required":["values"],"additionalProperties":false},"type":{"type":"string","enum":["secret","config"],"description":"The permission type of the global secret.","example":"secret"},"gitops":{"type":"object","properties":{"vcsService":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string","description":"Legacy key. Please used accountLogin instead."},"repoUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo to sync the file with.","example":"https://github.com/northflank-examples/remix-postgres-redis-demo"},"branch":{"type":"string","description":"The name of the branch to use.","example":"main"},"filePath":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]+$","description":"The file path in the repository. If using an existing file, it should be in JSON format.","examples":["/Dockerfile","northflank.json"]}},"required":["vcsService","repoUrl","branch","filePath"],"additionalProperties":false}},"required":["name","type"],"additionalProperties":false}}},"required":true},"x-nf-team-scoped":true,"x-nf-cli-command":["create","global-secret"]},"v1-secrets-post-team-scoped":{"operationId":"postSecrets","summary":"Create global secret","description":"Creates a global secret with the specified payload","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}}],"responses":{"200":{"description":"Details about the newly created secret.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200},"secrets":{"type":"object","properties":{"values":{"type":"object","properties":{}},"files":{"type":"object","properties":{},"additionalProperties":false}},"required":["values"],"additionalProperties":false},"type":{"type":"string","enum":["secret","config"],"description":"The permission type of the global secret.","example":"secret"},"gitops":{"type":"object","properties":{"vcsService":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string","description":"Legacy key. Please used accountLogin instead."},"repoUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo to sync the file with.","example":"https://github.com/northflank-examples/remix-postgres-redis-demo"},"branch":{"type":"string","description":"The name of the branch to use.","example":"main"},"filePath":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]+$","description":"The file path in the repository. If using an existing file, it should be in JSON format.","examples":["/Dockerfile","northflank.json"]}},"required":["vcsService","repoUrl","branch","filePath"],"additionalProperties":false},"createdAt":{"type":"string","format":"date-time","description":"time of creation"},"updatedAt":{"type":"string","format":"date-time","description":"time of update"}},"required":["name","type"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}},"409":{"description":"There is already a secret with the same derived identifier"}},"tags":["Secrets","team"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200},"secrets":{"type":"object","properties":{"values":{"type":"object","properties":{}},"files":{"type":"object","properties":{},"additionalProperties":false}},"required":["values"],"additionalProperties":false},"type":{"type":"string","enum":["secret","config"],"description":"The permission type of the global secret.","example":"secret"},"gitops":{"type":"object","properties":{"vcsService":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string","description":"Legacy key. Please used accountLogin instead."},"repoUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo to sync the file with.","example":"https://github.com/northflank-examples/remix-postgres-redis-demo"},"branch":{"type":"string","description":"The name of the branch to use.","example":"main"},"filePath":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]+$","description":"The file path in the repository. If using an existing file, it should be in JSON format.","examples":["/Dockerfile","northflank.json"]}},"required":["vcsService","repoUrl","branch","filePath"],"additionalProperties":false}},"required":["name","type"],"additionalProperties":false}}},"required":true},"x-nf-team-scoped":true,"x-nf-cli-command":["create","global-secret"]},"v1-secrets-put":{"operationId":"putSecrets","summary":"Put global secret","description":"Creates or updates a global secret with the specified payload","parameters":[],"responses":{"200":{"description":"Details about the created or updated secret.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200},"secrets":{"type":"object","properties":{"values":{"type":"object","properties":{}},"files":{"type":"object","properties":{},"additionalProperties":false}},"required":["values"],"additionalProperties":false},"type":{"type":"string","enum":["secret","config"],"description":"The permission type of the global secret.","example":"secret"},"gitops":{"type":"object","properties":{"vcsService":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string","description":"Legacy key. Please used accountLogin instead."},"repoUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo to sync the file with.","example":"https://github.com/northflank-examples/remix-postgres-redis-demo"},"branch":{"type":"string","description":"The name of the branch to use.","example":"main"},"filePath":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]+$","description":"The file path in the repository. If using an existing file, it should be in JSON format.","examples":["/Dockerfile","northflank.json"]}},"required":["vcsService","repoUrl","branch","filePath"],"additionalProperties":false},"createdAt":{"type":"string","format":"date-time","description":"time of creation"},"updatedAt":{"type":"string","format":"date-time","description":"time of update"}},"required":["name","type"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Secrets"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200},"secrets":{"type":"object","properties":{"values":{"type":"object","properties":{}},"files":{"type":"object","properties":{},"additionalProperties":false}},"required":["values"],"additionalProperties":false},"type":{"type":"string","enum":["secret","config"],"description":"The permission type of the global secret.","example":"secret"},"gitops":{"type":"object","properties":{"vcsService":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string","description":"Legacy key. Please used accountLogin instead."},"repoUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo to sync the file with.","example":"https://github.com/northflank-examples/remix-postgres-redis-demo"},"branch":{"type":"string","description":"The name of the branch to use.","example":"main"},"filePath":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]+$","description":"The file path in the repository. If using an existing file, it should be in JSON format.","examples":["/Dockerfile","northflank.json"]}},"required":["vcsService","repoUrl","branch","filePath"],"additionalProperties":false}},"required":["name","type"],"additionalProperties":false}}},"required":true},"x-nf-team-scoped":true,"x-nf-cli-command":["put","global-secret"]},"v1-secrets-put-team-scoped":{"operationId":"putSecrets","summary":"Put global secret","description":"Creates or updates a global secret with the specified payload","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}}],"responses":{"200":{"description":"Details about the created or updated secret.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200},"secrets":{"type":"object","properties":{"values":{"type":"object","properties":{}},"files":{"type":"object","properties":{},"additionalProperties":false}},"required":["values"],"additionalProperties":false},"type":{"type":"string","enum":["secret","config"],"description":"The permission type of the global secret.","example":"secret"},"gitops":{"type":"object","properties":{"vcsService":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string","description":"Legacy key. Please used accountLogin instead."},"repoUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo to sync the file with.","example":"https://github.com/northflank-examples/remix-postgres-redis-demo"},"branch":{"type":"string","description":"The name of the branch to use.","example":"main"},"filePath":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]+$","description":"The file path in the repository. If using an existing file, it should be in JSON format.","examples":["/Dockerfile","northflank.json"]}},"required":["vcsService","repoUrl","branch","filePath"],"additionalProperties":false},"createdAt":{"type":"string","format":"date-time","description":"time of creation"},"updatedAt":{"type":"string","format":"date-time","description":"time of update"}},"required":["name","type"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Secrets","team"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200},"secrets":{"type":"object","properties":{"values":{"type":"object","properties":{}},"files":{"type":"object","properties":{},"additionalProperties":false}},"required":["values"],"additionalProperties":false},"type":{"type":"string","enum":["secret","config"],"description":"The permission type of the global secret.","example":"secret"},"gitops":{"type":"object","properties":{"vcsService":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string","description":"Legacy key. Please used accountLogin instead."},"repoUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo to sync the file with.","example":"https://github.com/northflank-examples/remix-postgres-redis-demo"},"branch":{"type":"string","description":"The name of the branch to use.","example":"main"},"filePath":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]+$","description":"The file path in the repository. If using an existing file, it should be in JSON format.","examples":["/Dockerfile","northflank.json"]}},"required":["vcsService","repoUrl","branch","filePath"],"additionalProperties":false}},"required":["name","type"],"additionalProperties":false}}},"required":true},"x-nf-team-scoped":true,"x-nf-cli-command":["put","global-secret"]},"v1-secrets--secretId--patch":{"operationId":"patchSecretsSecretid","summary":"Patch global secret","description":"Updates a global secret with the specified payload","parameters":[{"name":"secretId","type":"string","required":true,"description":"ID of the secret","example":"example-secret","in":"path","schema":{"name":"secretId","type":"string","required":true,"description":"ID of the secret","example":"example-secret","in":"path"}}],"responses":{"200":{"description":"Details about the updated secret.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200},"secrets":{"type":"object","properties":{"values":{"type":"object","properties":{}},"files":{"type":"object","properties":{},"additionalProperties":false}},"required":["values"],"additionalProperties":false},"type":{"type":"string","enum":["secret","config"],"description":"The permission type of the global secret.","example":"secret"},"gitops":{"type":"object","properties":{"vcsService":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string","description":"Legacy key. Please used accountLogin instead."},"repoUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo to sync the file with.","example":"https://github.com/northflank-examples/remix-postgres-redis-demo"},"branch":{"type":"string","description":"The name of the branch to use.","example":"main"},"filePath":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]+$","description":"The file path in the repository. If using an existing file, it should be in JSON format.","examples":["/Dockerfile","northflank.json"]}},"required":["vcsService","repoUrl","branch","filePath"],"additionalProperties":false},"createdAt":{"type":"string","format":"date-time","description":"time of creation"},"updatedAt":{"type":"string","format":"date-time","description":"time of update"}},"required":["name","type"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Secrets"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200},"secrets":{"type":"object","properties":{"values":{"type":"object","properties":{}},"files":{"type":"object","properties":{},"additionalProperties":false}},"additionalProperties":false},"gitops":{"type":"object","properties":{"vcsService":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string","description":"Legacy key. Please used accountLogin instead."},"repoUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo to sync the file with.","example":"https://github.com/northflank-examples/remix-postgres-redis-demo"},"branch":{"type":"string","description":"The name of the branch to use.","example":"main"},"filePath":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]+$","description":"The file path in the repository. If using an existing file, it should be in JSON format.","examples":["/Dockerfile","northflank.json"]}},"required":["vcsService","repoUrl","branch","filePath"],"additionalProperties":false}},"additionalProperties":false}}},"required":true},"x-nf-team-scoped":true,"x-nf-cli-command":["patch","global-secret"]},"v1-secrets--secretId--patch-team-scoped":{"operationId":"patchSecretsSecretid","summary":"Patch global secret","description":"Updates a global secret with the specified payload","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"secretId","type":"string","required":true,"description":"ID of the secret","example":"example-secret","in":"path","schema":{"name":"secretId","type":"string","required":true,"description":"ID of the secret","example":"example-secret","in":"path"}}],"responses":{"200":{"description":"Details about the updated secret.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200},"secrets":{"type":"object","properties":{"values":{"type":"object","properties":{}},"files":{"type":"object","properties":{},"additionalProperties":false}},"required":["values"],"additionalProperties":false},"type":{"type":"string","enum":["secret","config"],"description":"The permission type of the global secret.","example":"secret"},"gitops":{"type":"object","properties":{"vcsService":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string","description":"Legacy key. Please used accountLogin instead."},"repoUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo to sync the file with.","example":"https://github.com/northflank-examples/remix-postgres-redis-demo"},"branch":{"type":"string","description":"The name of the branch to use.","example":"main"},"filePath":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]+$","description":"The file path in the repository. If using an existing file, it should be in JSON format.","examples":["/Dockerfile","northflank.json"]}},"required":["vcsService","repoUrl","branch","filePath"],"additionalProperties":false},"createdAt":{"type":"string","format":"date-time","description":"time of creation"},"updatedAt":{"type":"string","format":"date-time","description":"time of update"}},"required":["name","type"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Secrets","team"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200},"secrets":{"type":"object","properties":{"values":{"type":"object","properties":{}},"files":{"type":"object","properties":{},"additionalProperties":false}},"additionalProperties":false},"gitops":{"type":"object","properties":{"vcsService":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string","description":"Legacy key. Please used accountLogin instead."},"repoUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo to sync the file with.","example":"https://github.com/northflank-examples/remix-postgres-redis-demo"},"branch":{"type":"string","description":"The name of the branch to use.","example":"main"},"filePath":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]+$","description":"The file path in the repository. If using an existing file, it should be in JSON format.","examples":["/Dockerfile","northflank.json"]}},"required":["vcsService","repoUrl","branch","filePath"],"additionalProperties":false}},"additionalProperties":false}}},"required":true},"x-nf-team-scoped":true,"x-nf-cli-command":["patch","global-secret"]},"v1-secrets--secretId--get":{"operationId":"getSecretsSecretid","summary":"Get global secret","description":"Get a global secret including its contents","parameters":[{"name":"secretId","type":"string","required":true,"description":"ID of the secret","example":"example-secret","in":"path","schema":{"name":"secretId","type":"string","required":true,"description":"ID of the secret","example":"example-secret","in":"path"}}],"responses":{"200":{"description":"Details about the given secret.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200},"secrets":{"type":"object","properties":{"values":{"type":"object","properties":{}},"files":{"type":"object","properties":{},"additionalProperties":false}},"required":["values"],"additionalProperties":false},"type":{"type":"string","enum":["secret","config"],"description":"The permission type of the global secret.","example":"secret"},"gitops":{"type":"object","properties":{"vcsService":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string","description":"Legacy key. Please used accountLogin instead."},"repoUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo to sync the file with.","example":"https://github.com/northflank-examples/remix-postgres-redis-demo"},"branch":{"type":"string","description":"The name of the branch to use.","example":"main"},"filePath":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]+$","description":"The file path in the repository. If using an existing file, it should be in JSON format.","examples":["/Dockerfile","northflank.json"]}},"required":["vcsService","repoUrl","branch","filePath"],"additionalProperties":false},"createdAt":{"type":"string","format":"date-time","description":"time of creation"},"updatedAt":{"type":"string","format":"date-time","description":"time of update"}},"required":["name","type"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Secrets"],"security":[],"x-nf-team-scoped":true,"x-nf-cli-command":["get","global-secret"]},"v1-secrets--secretId--get-team-scoped":{"operationId":"getSecretsSecretid","summary":"Get global secret","description":"Get a global secret including its contents","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"secretId","type":"string","required":true,"description":"ID of the secret","example":"example-secret","in":"path","schema":{"name":"secretId","type":"string","required":true,"description":"ID of the secret","example":"example-secret","in":"path"}}],"responses":{"200":{"description":"Details about the given secret.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200},"secrets":{"type":"object","properties":{"values":{"type":"object","properties":{}},"files":{"type":"object","properties":{},"additionalProperties":false}},"required":["values"],"additionalProperties":false},"type":{"type":"string","enum":["secret","config"],"description":"The permission type of the global secret.","example":"secret"},"gitops":{"type":"object","properties":{"vcsService":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string","description":"Legacy key. Please used accountLogin instead."},"repoUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo to sync the file with.","example":"https://github.com/northflank-examples/remix-postgres-redis-demo"},"branch":{"type":"string","description":"The name of the branch to use.","example":"main"},"filePath":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]+$","description":"The file path in the repository. If using an existing file, it should be in JSON format.","examples":["/Dockerfile","northflank.json"]}},"required":["vcsService","repoUrl","branch","filePath"],"additionalProperties":false},"createdAt":{"type":"string","format":"date-time","description":"time of creation"},"updatedAt":{"type":"string","format":"date-time","description":"time of update"}},"required":["name","type"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Secrets","team"],"security":[],"x-nf-team-scoped":true,"x-nf-cli-command":["get","global-secret"]},"v1-secrets--secretId--delete":{"operationId":"deleteSecretsSecretid","summary":"Delete global secret","description":"Delete a global secret","parameters":[{"name":"secretId","type":"string","required":true,"description":"ID of the secret","example":"example-secret","in":"path","schema":{"name":"secretId","type":"string","required":true,"description":"ID of the secret","example":"example-secret","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Secrets"],"security":[],"x-nf-team-scoped":true,"x-nf-cli-command":["delete","global-secret"]},"v1-secrets--secretId--delete-team-scoped":{"operationId":"deleteSecretsSecretid","summary":"Delete global secret","description":"Delete a global secret","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"secretId","type":"string","required":true,"description":"ID of the secret","example":"example-secret","in":"path","schema":{"name":"secretId","type":"string","required":true,"description":"ID of the secret","example":"example-secret","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Secrets","team"],"security":[],"x-nf-team-scoped":true,"x-nf-cli-command":["delete","global-secret"]},"v1-tags-get":{"operationId":"getTags","summary":"List tags","description":"List the resource tags for this entity.","parameters":[{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query","schema":{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query"}},{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query","schema":{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query"}},{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query","schema":{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query"}}],"responses":{"200":{"description":"A list of tags for this entity.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"tags":{"type":"array","items":{"type":"object","properties":{"useSpotNodes":{"type":"boolean","description":"Schedule workloads to spot nodes","example":false},"useOnDemandNodes":{"type":"boolean","description":"Also allow workloads to schedule to on demand nodes. Only relevant if you want workloads to schedule across both spot and on demand nodes","example":false},"nodeAffinities":{"type":"array","items":{"type":"object","properties":{"preference":{"type":"boolean","default":false},"weight":{"type":"number","format":"float","minimum":1,"maximum":100,"description":"The node affinity weight. Required when `preference` is `true`."},"matchExpressions":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"operator":{"type":"string","enum":["In","NotIn"]},"values":{"type":"array","items":{"type":"string"}}},"required":["key","operator","values"],"additionalProperties":false},"minItems":1}},"required":["matchExpressions"],"additionalProperties":false}},"sandboxing":{"type":"object","properties":{"builds":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Enables runtime scheduling constraints for builds","example":false},"runtimeClass":{"oneOf":[{"type":"string","enum":["gvisor","kata-clh","kata-qemu"],"description":"Defines which runtime scheduling constraints apply for builds","example":"gvisor","x-required":true},{"type":"string","enum":["none","gvisor","kata-clh","kata-qemu"],"description":"Defines which runtime scheduling constraints apply for builds","example":"gvisor"}]}},"required":["enabled"],"additionalProperties":false,"description":"Build sandboxing runtime configurations"},"services":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Enables runtime scheduling constraints for services","example":false},"runtimeClass":{"oneOf":[{"type":"string","enum":["gvisor","kata-clh","kata-qemu"],"description":"Defines which runtime scheduling constraints apply for services","example":"gvisor","x-required":true},{"type":"string","enum":["none","gvisor","kata-clh","kata-qemu"],"description":"Defines which runtime scheduling constraints apply for services","example":"gvisor"}]}},"required":["enabled"],"additionalProperties":false,"description":"Service sandboxing runtime configurations"},"addons":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Enables runtime scheduling constraints for addons","example":false},"runtimeClass":{"oneOf":[{"type":"string","enum":["gvisor","kata-clh","kata-qemu"],"description":"Defines which runtime scheduling constraints apply for addons","example":"gvisor","x-required":true},{"type":"string","enum":["none","gvisor","kata-clh","kata-qemu"],"description":"Defines which runtime scheduling constraints apply for addons","example":"gvisor"}]}},"required":["enabled"],"additionalProperties":false,"description":"Addon sandboxing runtime configurations"},"jobs":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Enables runtime scheduling constraints for jobs","example":false},"runtimeClass":{"oneOf":[{"type":"string","enum":["gvisor","kata-clh","kata-qemu"],"description":"Defines which runtime scheduling constraints apply for jobs","example":"gvisor","x-required":true},{"type":"string","enum":["none","gvisor","kata-clh","kata-qemu"],"description":"Defines which runtime scheduling constraints apply for jobs","example":"gvisor"}]}},"required":["enabled"],"additionalProperties":false,"description":"Job secure runtime configurations"}},"additionalProperties":false},"color":{"type":"string","pattern":"^#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$","example":"#57637A"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200},"name":{"type":"string","pattern":"^[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"example":"Example Tag"},"id":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"example":"example-tag"},"createdAt":{"type":"string","format":"date-time","description":"time of creation","example":"2000-01-01T12:00:00.000Z"}},"required":["name","id"],"additionalProperties":false},"description":"A list of available resource tags."}},"required":["tags"],"additionalProperties":false,"description":"Result data."},"pagination":{"type":"object","properties":{"hasNextPage":{"type":"boolean","description":"Is there another page of results available?","example":false},"cursor":{"type":"string","description":"The cursor to access the next page of results."},"count":{"type":"number","format":"float","description":"The number of results returned by this request.","example":1}},"required":["hasNextPage","count"],"additionalProperties":false,"description":"Data about the endpoint pagination."}},"required":["data","pagination"],"additionalProperties":false,"description":"Response object."}}},"tags":["Tags"],"security":[],"x-nf-permission-required":"Account > Tags > General > Read","x-nf-team-scoped":true,"x-nf-cli-command":["list","tags"]},"v1-tags-get-team-scoped":{"operationId":"getTags","summary":"List tags","description":"List the resource tags for this entity.","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query","schema":{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query"}},{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query","schema":{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query"}},{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query","schema":{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query"}}],"responses":{"200":{"description":"A list of tags for this entity.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"tags":{"type":"array","items":{"type":"object","properties":{"useSpotNodes":{"type":"boolean","description":"Schedule workloads to spot nodes","example":false},"useOnDemandNodes":{"type":"boolean","description":"Also allow workloads to schedule to on demand nodes. Only relevant if you want workloads to schedule across both spot and on demand nodes","example":false},"nodeAffinities":{"type":"array","items":{"type":"object","properties":{"preference":{"type":"boolean","default":false},"weight":{"type":"number","format":"float","minimum":1,"maximum":100,"description":"The node affinity weight. Required when `preference` is `true`."},"matchExpressions":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"operator":{"type":"string","enum":["In","NotIn"]},"values":{"type":"array","items":{"type":"string"}}},"required":["key","operator","values"],"additionalProperties":false},"minItems":1}},"required":["matchExpressions"],"additionalProperties":false}},"sandboxing":{"type":"object","properties":{"builds":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Enables runtime scheduling constraints for builds","example":false},"runtimeClass":{"oneOf":[{"type":"string","enum":["gvisor","kata-clh","kata-qemu"],"description":"Defines which runtime scheduling constraints apply for builds","example":"gvisor","x-required":true},{"type":"string","enum":["none","gvisor","kata-clh","kata-qemu"],"description":"Defines which runtime scheduling constraints apply for builds","example":"gvisor"}]}},"required":["enabled"],"additionalProperties":false,"description":"Build sandboxing runtime configurations"},"services":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Enables runtime scheduling constraints for services","example":false},"runtimeClass":{"oneOf":[{"type":"string","enum":["gvisor","kata-clh","kata-qemu"],"description":"Defines which runtime scheduling constraints apply for services","example":"gvisor","x-required":true},{"type":"string","enum":["none","gvisor","kata-clh","kata-qemu"],"description":"Defines which runtime scheduling constraints apply for services","example":"gvisor"}]}},"required":["enabled"],"additionalProperties":false,"description":"Service sandboxing runtime configurations"},"addons":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Enables runtime scheduling constraints for addons","example":false},"runtimeClass":{"oneOf":[{"type":"string","enum":["gvisor","kata-clh","kata-qemu"],"description":"Defines which runtime scheduling constraints apply for addons","example":"gvisor","x-required":true},{"type":"string","enum":["none","gvisor","kata-clh","kata-qemu"],"description":"Defines which runtime scheduling constraints apply for addons","example":"gvisor"}]}},"required":["enabled"],"additionalProperties":false,"description":"Addon sandboxing runtime configurations"},"jobs":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Enables runtime scheduling constraints for jobs","example":false},"runtimeClass":{"oneOf":[{"type":"string","enum":["gvisor","kata-clh","kata-qemu"],"description":"Defines which runtime scheduling constraints apply for jobs","example":"gvisor","x-required":true},{"type":"string","enum":["none","gvisor","kata-clh","kata-qemu"],"description":"Defines which runtime scheduling constraints apply for jobs","example":"gvisor"}]}},"required":["enabled"],"additionalProperties":false,"description":"Job secure runtime configurations"}},"additionalProperties":false},"color":{"type":"string","pattern":"^#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$","example":"#57637A"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200},"name":{"type":"string","pattern":"^[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"example":"Example Tag"},"id":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"example":"example-tag"},"createdAt":{"type":"string","format":"date-time","description":"time of creation","example":"2000-01-01T12:00:00.000Z"}},"required":["name","id"],"additionalProperties":false},"description":"A list of available resource tags."}},"required":["tags"],"additionalProperties":false,"description":"Result data."},"pagination":{"type":"object","properties":{"hasNextPage":{"type":"boolean","description":"Is there another page of results available?","example":false},"cursor":{"type":"string","description":"The cursor to access the next page of results."},"count":{"type":"number","format":"float","description":"The number of results returned by this request.","example":1}},"required":["hasNextPage","count"],"additionalProperties":false,"description":"Data about the endpoint pagination."}},"required":["data","pagination"],"additionalProperties":false,"description":"Response object."}}},"tags":["Tags","team"],"security":[],"x-nf-permission-required":"Account > Tags > General > Read","x-nf-team-scoped":true,"x-nf-cli-command":["list","tags"]},"v1-tags-post":{"operationId":"postTags","summary":"Add tag","description":"Add a new resource tag for this entity.","parameters":[],"responses":{"200":{"description":"Data about the newly created tag.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"useSpotNodes":{"type":"boolean","description":"Schedule workloads to spot nodes","example":false},"useOnDemandNodes":{"type":"boolean","description":"Also allow workloads to schedule to on demand nodes. Only relevant if you want workloads to schedule across both spot and on demand nodes","example":false},"nodeAffinities":{"type":"array","items":{"type":"object","properties":{"preference":{"type":"boolean","default":false},"weight":{"type":"number","format":"float","minimum":1,"maximum":100,"description":"The node affinity weight. Required when `preference` is `true`."},"matchExpressions":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"operator":{"type":"string","enum":["In","NotIn"]},"values":{"type":"array","items":{"type":"string"}}},"required":["key","operator","values"],"additionalProperties":false},"minItems":1}},"required":["matchExpressions"],"additionalProperties":false}},"sandboxing":{"type":"object","properties":{"builds":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Enables runtime scheduling constraints for builds","example":false},"runtimeClass":{"oneOf":[{"type":"string","enum":["gvisor","kata-clh","kata-qemu"],"description":"Defines which runtime scheduling constraints apply for builds","example":"gvisor","x-required":true},{"type":"string","enum":["none","gvisor","kata-clh","kata-qemu"],"description":"Defines which runtime scheduling constraints apply for builds","example":"gvisor"}]}},"required":["enabled"],"additionalProperties":false,"description":"Build sandboxing runtime configurations"},"services":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Enables runtime scheduling constraints for services","example":false},"runtimeClass":{"oneOf":[{"type":"string","enum":["gvisor","kata-clh","kata-qemu"],"description":"Defines which runtime scheduling constraints apply for services","example":"gvisor","x-required":true},{"type":"string","enum":["none","gvisor","kata-clh","kata-qemu"],"description":"Defines which runtime scheduling constraints apply for services","example":"gvisor"}]}},"required":["enabled"],"additionalProperties":false,"description":"Service sandboxing runtime configurations"},"addons":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Enables runtime scheduling constraints for addons","example":false},"runtimeClass":{"oneOf":[{"type":"string","enum":["gvisor","kata-clh","kata-qemu"],"description":"Defines which runtime scheduling constraints apply for addons","example":"gvisor","x-required":true},{"type":"string","enum":["none","gvisor","kata-clh","kata-qemu"],"description":"Defines which runtime scheduling constraints apply for addons","example":"gvisor"}]}},"required":["enabled"],"additionalProperties":false,"description":"Addon sandboxing runtime configurations"},"jobs":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Enables runtime scheduling constraints for jobs","example":false},"runtimeClass":{"oneOf":[{"type":"string","enum":["gvisor","kata-clh","kata-qemu"],"description":"Defines which runtime scheduling constraints apply for jobs","example":"gvisor","x-required":true},{"type":"string","enum":["none","gvisor","kata-clh","kata-qemu"],"description":"Defines which runtime scheduling constraints apply for jobs","example":"gvisor"}]}},"required":["enabled"],"additionalProperties":false,"description":"Job secure runtime configurations"}},"additionalProperties":false},"color":{"type":"string","pattern":"^#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$","example":"#57637A"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200},"name":{"type":"string","pattern":"^[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"example":"Example Tag"},"id":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"example":"example-tag"},"createdAt":{"type":"string","format":"date-time","description":"time of creation","example":"2000-01-01T12:00:00.000Z"}},"required":["name","id"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Tags"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"useSpotNodes":{"type":"boolean","description":"Schedule workloads to spot nodes","example":false},"useOnDemandNodes":{"type":"boolean","description":"Also allow workloads to schedule to on demand nodes. Only relevant if you want workloads to schedule across both spot and on demand nodes","example":false},"nodeAffinities":{"type":"array","items":{"type":"object","properties":{"preference":{"type":"boolean","default":false},"weight":{"type":"number","format":"float","minimum":1,"maximum":100,"description":"The node affinity weight. Required when `preference` is `true`."},"matchExpressions":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"operator":{"type":"string","enum":["In","NotIn"]},"values":{"type":"array","items":{"type":"string"}}},"required":["key","operator","values"],"additionalProperties":false},"minItems":1}},"required":["matchExpressions"],"additionalProperties":false}},"sandboxing":{"type":"object","properties":{"builds":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Enables runtime scheduling constraints for builds","example":false},"runtimeClass":{"oneOf":[{"type":"string","enum":["gvisor","kata-clh","kata-qemu"],"description":"Defines which runtime scheduling constraints apply for builds","example":"gvisor","x-required":true},{"type":"string","enum":["none","gvisor","kata-clh","kata-qemu"],"description":"Defines which runtime scheduling constraints apply for builds","example":"gvisor"}]}},"required":["enabled"],"additionalProperties":false,"description":"Build sandboxing runtime configurations"},"services":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Enables runtime scheduling constraints for services","example":false},"runtimeClass":{"oneOf":[{"type":"string","enum":["gvisor","kata-clh","kata-qemu"],"description":"Defines which runtime scheduling constraints apply for services","example":"gvisor","x-required":true},{"type":"string","enum":["none","gvisor","kata-clh","kata-qemu"],"description":"Defines which runtime scheduling constraints apply for services","example":"gvisor"}]}},"required":["enabled"],"additionalProperties":false,"description":"Service sandboxing runtime configurations"},"addons":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Enables runtime scheduling constraints for addons","example":false},"runtimeClass":{"oneOf":[{"type":"string","enum":["gvisor","kata-clh","kata-qemu"],"description":"Defines which runtime scheduling constraints apply for addons","example":"gvisor","x-required":true},{"type":"string","enum":["none","gvisor","kata-clh","kata-qemu"],"description":"Defines which runtime scheduling constraints apply for addons","example":"gvisor"}]}},"required":["enabled"],"additionalProperties":false,"description":"Addon sandboxing runtime configurations"},"jobs":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Enables runtime scheduling constraints for jobs","example":false},"runtimeClass":{"oneOf":[{"type":"string","enum":["gvisor","kata-clh","kata-qemu"],"description":"Defines which runtime scheduling constraints apply for jobs","example":"gvisor","x-required":true},{"type":"string","enum":["none","gvisor","kata-clh","kata-qemu"],"description":"Defines which runtime scheduling constraints apply for jobs","example":"gvisor"}]}},"required":["enabled"],"additionalProperties":false,"description":"Job secure runtime configurations"}},"additionalProperties":false},"color":{"type":"string","pattern":"^#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$","example":"#57637A"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200},"name":{"type":"string","pattern":"^[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"example":"Example Tag"}},"required":["name"],"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Account > Tags > General > Create","x-nf-team-scoped":true,"x-nf-cli-command":["add","tag"]},"v1-tags-post-team-scoped":{"operationId":"postTags","summary":"Add tag","description":"Add a new resource tag for this entity.","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}}],"responses":{"200":{"description":"Data about the newly created tag.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"useSpotNodes":{"type":"boolean","description":"Schedule workloads to spot nodes","example":false},"useOnDemandNodes":{"type":"boolean","description":"Also allow workloads to schedule to on demand nodes. Only relevant if you want workloads to schedule across both spot and on demand nodes","example":false},"nodeAffinities":{"type":"array","items":{"type":"object","properties":{"preference":{"type":"boolean","default":false},"weight":{"type":"number","format":"float","minimum":1,"maximum":100,"description":"The node affinity weight. Required when `preference` is `true`."},"matchExpressions":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"operator":{"type":"string","enum":["In","NotIn"]},"values":{"type":"array","items":{"type":"string"}}},"required":["key","operator","values"],"additionalProperties":false},"minItems":1}},"required":["matchExpressions"],"additionalProperties":false}},"sandboxing":{"type":"object","properties":{"builds":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Enables runtime scheduling constraints for builds","example":false},"runtimeClass":{"oneOf":[{"type":"string","enum":["gvisor","kata-clh","kata-qemu"],"description":"Defines which runtime scheduling constraints apply for builds","example":"gvisor","x-required":true},{"type":"string","enum":["none","gvisor","kata-clh","kata-qemu"],"description":"Defines which runtime scheduling constraints apply for builds","example":"gvisor"}]}},"required":["enabled"],"additionalProperties":false,"description":"Build sandboxing runtime configurations"},"services":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Enables runtime scheduling constraints for services","example":false},"runtimeClass":{"oneOf":[{"type":"string","enum":["gvisor","kata-clh","kata-qemu"],"description":"Defines which runtime scheduling constraints apply for services","example":"gvisor","x-required":true},{"type":"string","enum":["none","gvisor","kata-clh","kata-qemu"],"description":"Defines which runtime scheduling constraints apply for services","example":"gvisor"}]}},"required":["enabled"],"additionalProperties":false,"description":"Service sandboxing runtime configurations"},"addons":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Enables runtime scheduling constraints for addons","example":false},"runtimeClass":{"oneOf":[{"type":"string","enum":["gvisor","kata-clh","kata-qemu"],"description":"Defines which runtime scheduling constraints apply for addons","example":"gvisor","x-required":true},{"type":"string","enum":["none","gvisor","kata-clh","kata-qemu"],"description":"Defines which runtime scheduling constraints apply for addons","example":"gvisor"}]}},"required":["enabled"],"additionalProperties":false,"description":"Addon sandboxing runtime configurations"},"jobs":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Enables runtime scheduling constraints for jobs","example":false},"runtimeClass":{"oneOf":[{"type":"string","enum":["gvisor","kata-clh","kata-qemu"],"description":"Defines which runtime scheduling constraints apply for jobs","example":"gvisor","x-required":true},{"type":"string","enum":["none","gvisor","kata-clh","kata-qemu"],"description":"Defines which runtime scheduling constraints apply for jobs","example":"gvisor"}]}},"required":["enabled"],"additionalProperties":false,"description":"Job secure runtime configurations"}},"additionalProperties":false},"color":{"type":"string","pattern":"^#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$","example":"#57637A"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200},"name":{"type":"string","pattern":"^[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"example":"Example Tag"},"id":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"example":"example-tag"},"createdAt":{"type":"string","format":"date-time","description":"time of creation","example":"2000-01-01T12:00:00.000Z"}},"required":["name","id"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Tags","team"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"useSpotNodes":{"type":"boolean","description":"Schedule workloads to spot nodes","example":false},"useOnDemandNodes":{"type":"boolean","description":"Also allow workloads to schedule to on demand nodes. Only relevant if you want workloads to schedule across both spot and on demand nodes","example":false},"nodeAffinities":{"type":"array","items":{"type":"object","properties":{"preference":{"type":"boolean","default":false},"weight":{"type":"number","format":"float","minimum":1,"maximum":100,"description":"The node affinity weight. Required when `preference` is `true`."},"matchExpressions":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"operator":{"type":"string","enum":["In","NotIn"]},"values":{"type":"array","items":{"type":"string"}}},"required":["key","operator","values"],"additionalProperties":false},"minItems":1}},"required":["matchExpressions"],"additionalProperties":false}},"sandboxing":{"type":"object","properties":{"builds":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Enables runtime scheduling constraints for builds","example":false},"runtimeClass":{"oneOf":[{"type":"string","enum":["gvisor","kata-clh","kata-qemu"],"description":"Defines which runtime scheduling constraints apply for builds","example":"gvisor","x-required":true},{"type":"string","enum":["none","gvisor","kata-clh","kata-qemu"],"description":"Defines which runtime scheduling constraints apply for builds","example":"gvisor"}]}},"required":["enabled"],"additionalProperties":false,"description":"Build sandboxing runtime configurations"},"services":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Enables runtime scheduling constraints for services","example":false},"runtimeClass":{"oneOf":[{"type":"string","enum":["gvisor","kata-clh","kata-qemu"],"description":"Defines which runtime scheduling constraints apply for services","example":"gvisor","x-required":true},{"type":"string","enum":["none","gvisor","kata-clh","kata-qemu"],"description":"Defines which runtime scheduling constraints apply for services","example":"gvisor"}]}},"required":["enabled"],"additionalProperties":false,"description":"Service sandboxing runtime configurations"},"addons":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Enables runtime scheduling constraints for addons","example":false},"runtimeClass":{"oneOf":[{"type":"string","enum":["gvisor","kata-clh","kata-qemu"],"description":"Defines which runtime scheduling constraints apply for addons","example":"gvisor","x-required":true},{"type":"string","enum":["none","gvisor","kata-clh","kata-qemu"],"description":"Defines which runtime scheduling constraints apply for addons","example":"gvisor"}]}},"required":["enabled"],"additionalProperties":false,"description":"Addon sandboxing runtime configurations"},"jobs":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Enables runtime scheduling constraints for jobs","example":false},"runtimeClass":{"oneOf":[{"type":"string","enum":["gvisor","kata-clh","kata-qemu"],"description":"Defines which runtime scheduling constraints apply for jobs","example":"gvisor","x-required":true},{"type":"string","enum":["none","gvisor","kata-clh","kata-qemu"],"description":"Defines which runtime scheduling constraints apply for jobs","example":"gvisor"}]}},"required":["enabled"],"additionalProperties":false,"description":"Job secure runtime configurations"}},"additionalProperties":false},"color":{"type":"string","pattern":"^#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$","example":"#57637A"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200},"name":{"type":"string","pattern":"^[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"example":"Example Tag"}},"required":["name"],"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Account > Tags > General > Create","x-nf-team-scoped":true,"x-nf-cli-command":["add","tag"]},"v1-tags-put":{"operationId":"putTags","summary":"Put tag","description":"Update or create a resource tag.","parameters":[{"name":"resourceTagId","type":"string","required":true,"description":"ID of the tag","example":"example-tag","in":"path","schema":{"name":"resourceTagId","type":"string","required":true,"description":"ID of the tag","example":"example-tag","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Tags"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"useSpotNodes":{"type":"boolean","description":"Schedule workloads to spot nodes","example":false},"useOnDemandNodes":{"type":"boolean","description":"Also allow workloads to schedule to on demand nodes. Only relevant if you want workloads to schedule across both spot and on demand nodes","example":false},"nodeAffinities":{"type":"array","items":{"type":"object","properties":{"preference":{"type":"boolean","default":false},"weight":{"type":"number","format":"float","minimum":1,"maximum":100,"description":"The node affinity weight. Required when `preference` is `true`."},"matchExpressions":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"operator":{"type":"string","enum":["In","NotIn"]},"values":{"type":"array","items":{"type":"string"}}},"required":["key","operator","values"],"additionalProperties":false},"minItems":1}},"required":["matchExpressions"],"additionalProperties":false}},"sandboxing":{"type":"object","properties":{"builds":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Enables runtime scheduling constraints for builds","example":false},"runtimeClass":{"oneOf":[{"type":"string","enum":["gvisor","kata-clh","kata-qemu"],"description":"Defines which runtime scheduling constraints apply for builds","example":"gvisor","x-required":true},{"type":"string","enum":["none","gvisor","kata-clh","kata-qemu"],"description":"Defines which runtime scheduling constraints apply for builds","example":"gvisor"}]}},"required":["enabled"],"additionalProperties":false,"description":"Build sandboxing runtime configurations"},"services":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Enables runtime scheduling constraints for services","example":false},"runtimeClass":{"oneOf":[{"type":"string","enum":["gvisor","kata-clh","kata-qemu"],"description":"Defines which runtime scheduling constraints apply for services","example":"gvisor","x-required":true},{"type":"string","enum":["none","gvisor","kata-clh","kata-qemu"],"description":"Defines which runtime scheduling constraints apply for services","example":"gvisor"}]}},"required":["enabled"],"additionalProperties":false,"description":"Service sandboxing runtime configurations"},"addons":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Enables runtime scheduling constraints for addons","example":false},"runtimeClass":{"oneOf":[{"type":"string","enum":["gvisor","kata-clh","kata-qemu"],"description":"Defines which runtime scheduling constraints apply for addons","example":"gvisor","x-required":true},{"type":"string","enum":["none","gvisor","kata-clh","kata-qemu"],"description":"Defines which runtime scheduling constraints apply for addons","example":"gvisor"}]}},"required":["enabled"],"additionalProperties":false,"description":"Addon sandboxing runtime configurations"},"jobs":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Enables runtime scheduling constraints for jobs","example":false},"runtimeClass":{"oneOf":[{"type":"string","enum":["gvisor","kata-clh","kata-qemu"],"description":"Defines which runtime scheduling constraints apply for jobs","example":"gvisor","x-required":true},{"type":"string","enum":["none","gvisor","kata-clh","kata-qemu"],"description":"Defines which runtime scheduling constraints apply for jobs","example":"gvisor"}]}},"required":["enabled"],"additionalProperties":false,"description":"Job secure runtime configurations"}},"additionalProperties":false},"color":{"type":"string","pattern":"^#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$","example":"#57637A"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200},"name":{"type":"string","pattern":"^[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"example":"Example Tag"}},"required":["name"],"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Account > Tags > General > Update","x-nf-team-scoped":true,"x-nf-cli-command":["put","tag"]},"v1-tags-put-team-scoped":{"operationId":"putTags","summary":"Put tag","description":"Update or create a resource tag.","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"resourceTagId","type":"string","required":true,"description":"ID of the tag","example":"example-tag","in":"path","schema":{"name":"resourceTagId","type":"string","required":true,"description":"ID of the tag","example":"example-tag","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Tags","team"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"useSpotNodes":{"type":"boolean","description":"Schedule workloads to spot nodes","example":false},"useOnDemandNodes":{"type":"boolean","description":"Also allow workloads to schedule to on demand nodes. Only relevant if you want workloads to schedule across both spot and on demand nodes","example":false},"nodeAffinities":{"type":"array","items":{"type":"object","properties":{"preference":{"type":"boolean","default":false},"weight":{"type":"number","format":"float","minimum":1,"maximum":100,"description":"The node affinity weight. Required when `preference` is `true`."},"matchExpressions":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"operator":{"type":"string","enum":["In","NotIn"]},"values":{"type":"array","items":{"type":"string"}}},"required":["key","operator","values"],"additionalProperties":false},"minItems":1}},"required":["matchExpressions"],"additionalProperties":false}},"sandboxing":{"type":"object","properties":{"builds":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Enables runtime scheduling constraints for builds","example":false},"runtimeClass":{"oneOf":[{"type":"string","enum":["gvisor","kata-clh","kata-qemu"],"description":"Defines which runtime scheduling constraints apply for builds","example":"gvisor","x-required":true},{"type":"string","enum":["none","gvisor","kata-clh","kata-qemu"],"description":"Defines which runtime scheduling constraints apply for builds","example":"gvisor"}]}},"required":["enabled"],"additionalProperties":false,"description":"Build sandboxing runtime configurations"},"services":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Enables runtime scheduling constraints for services","example":false},"runtimeClass":{"oneOf":[{"type":"string","enum":["gvisor","kata-clh","kata-qemu"],"description":"Defines which runtime scheduling constraints apply for services","example":"gvisor","x-required":true},{"type":"string","enum":["none","gvisor","kata-clh","kata-qemu"],"description":"Defines which runtime scheduling constraints apply for services","example":"gvisor"}]}},"required":["enabled"],"additionalProperties":false,"description":"Service sandboxing runtime configurations"},"addons":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Enables runtime scheduling constraints for addons","example":false},"runtimeClass":{"oneOf":[{"type":"string","enum":["gvisor","kata-clh","kata-qemu"],"description":"Defines which runtime scheduling constraints apply for addons","example":"gvisor","x-required":true},{"type":"string","enum":["none","gvisor","kata-clh","kata-qemu"],"description":"Defines which runtime scheduling constraints apply for addons","example":"gvisor"}]}},"required":["enabled"],"additionalProperties":false,"description":"Addon sandboxing runtime configurations"},"jobs":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Enables runtime scheduling constraints for jobs","example":false},"runtimeClass":{"oneOf":[{"type":"string","enum":["gvisor","kata-clh","kata-qemu"],"description":"Defines which runtime scheduling constraints apply for jobs","example":"gvisor","x-required":true},{"type":"string","enum":["none","gvisor","kata-clh","kata-qemu"],"description":"Defines which runtime scheduling constraints apply for jobs","example":"gvisor"}]}},"required":["enabled"],"additionalProperties":false,"description":"Job secure runtime configurations"}},"additionalProperties":false},"color":{"type":"string","pattern":"^#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$","example":"#57637A"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200},"name":{"type":"string","pattern":"^[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"example":"Example Tag"}},"required":["name"],"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Account > Tags > General > Update","x-nf-team-scoped":true,"x-nf-cli-command":["put","tag"]},"v1-tags--resourceTagId--get":{"operationId":"getTagsResourcetagid","summary":"Get tag","description":"View details for a given resource tag.","parameters":[{"name":"resourceTagId","type":"string","required":true,"description":"ID of the tag","example":"example-tag","in":"path","schema":{"name":"resourceTagId","type":"string","required":true,"description":"ID of the tag","example":"example-tag","in":"path"}}],"responses":{"200":{"description":"Data about the resource tag.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"useSpotNodes":{"type":"boolean","description":"Schedule workloads to spot nodes","example":false},"useOnDemandNodes":{"type":"boolean","description":"Also allow workloads to schedule to on demand nodes. Only relevant if you want workloads to schedule across both spot and on demand nodes","example":false},"nodeAffinities":{"type":"array","items":{"type":"object","properties":{"preference":{"type":"boolean","default":false},"weight":{"type":"number","format":"float","minimum":1,"maximum":100,"description":"The node affinity weight. Required when `preference` is `true`."},"matchExpressions":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"operator":{"type":"string","enum":["In","NotIn"]},"values":{"type":"array","items":{"type":"string"}}},"required":["key","operator","values"],"additionalProperties":false},"minItems":1}},"required":["matchExpressions"],"additionalProperties":false}},"sandboxing":{"type":"object","properties":{"builds":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Enables runtime scheduling constraints for builds","example":false},"runtimeClass":{"oneOf":[{"type":"string","enum":["gvisor","kata-clh","kata-qemu"],"description":"Defines which runtime scheduling constraints apply for builds","example":"gvisor","x-required":true},{"type":"string","enum":["none","gvisor","kata-clh","kata-qemu"],"description":"Defines which runtime scheduling constraints apply for builds","example":"gvisor"}]}},"required":["enabled"],"additionalProperties":false,"description":"Build sandboxing runtime configurations"},"services":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Enables runtime scheduling constraints for services","example":false},"runtimeClass":{"oneOf":[{"type":"string","enum":["gvisor","kata-clh","kata-qemu"],"description":"Defines which runtime scheduling constraints apply for services","example":"gvisor","x-required":true},{"type":"string","enum":["none","gvisor","kata-clh","kata-qemu"],"description":"Defines which runtime scheduling constraints apply for services","example":"gvisor"}]}},"required":["enabled"],"additionalProperties":false,"description":"Service sandboxing runtime configurations"},"addons":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Enables runtime scheduling constraints for addons","example":false},"runtimeClass":{"oneOf":[{"type":"string","enum":["gvisor","kata-clh","kata-qemu"],"description":"Defines which runtime scheduling constraints apply for addons","example":"gvisor","x-required":true},{"type":"string","enum":["none","gvisor","kata-clh","kata-qemu"],"description":"Defines which runtime scheduling constraints apply for addons","example":"gvisor"}]}},"required":["enabled"],"additionalProperties":false,"description":"Addon sandboxing runtime configurations"},"jobs":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Enables runtime scheduling constraints for jobs","example":false},"runtimeClass":{"oneOf":[{"type":"string","enum":["gvisor","kata-clh","kata-qemu"],"description":"Defines which runtime scheduling constraints apply for jobs","example":"gvisor","x-required":true},{"type":"string","enum":["none","gvisor","kata-clh","kata-qemu"],"description":"Defines which runtime scheduling constraints apply for jobs","example":"gvisor"}]}},"required":["enabled"],"additionalProperties":false,"description":"Job secure runtime configurations"}},"additionalProperties":false},"color":{"type":"string","pattern":"^#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$","example":"#57637A"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200},"name":{"type":"string","pattern":"^[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"example":"Example Tag"},"id":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"example":"example-tag"},"createdAt":{"type":"string","format":"date-time","description":"time of creation","example":"2000-01-01T12:00:00.000Z"}},"required":["name","id"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Tags"],"security":[],"x-nf-permission-required":"Account > Tags > General > Read","x-nf-team-scoped":true,"x-nf-cli-command":["get","tag"]},"v1-tags--resourceTagId--get-team-scoped":{"operationId":"getTagsResourcetagid","summary":"Get tag","description":"View details for a given resource tag.","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"resourceTagId","type":"string","required":true,"description":"ID of the tag","example":"example-tag","in":"path","schema":{"name":"resourceTagId","type":"string","required":true,"description":"ID of the tag","example":"example-tag","in":"path"}}],"responses":{"200":{"description":"Data about the resource tag.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"useSpotNodes":{"type":"boolean","description":"Schedule workloads to spot nodes","example":false},"useOnDemandNodes":{"type":"boolean","description":"Also allow workloads to schedule to on demand nodes. Only relevant if you want workloads to schedule across both spot and on demand nodes","example":false},"nodeAffinities":{"type":"array","items":{"type":"object","properties":{"preference":{"type":"boolean","default":false},"weight":{"type":"number","format":"float","minimum":1,"maximum":100,"description":"The node affinity weight. Required when `preference` is `true`."},"matchExpressions":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"operator":{"type":"string","enum":["In","NotIn"]},"values":{"type":"array","items":{"type":"string"}}},"required":["key","operator","values"],"additionalProperties":false},"minItems":1}},"required":["matchExpressions"],"additionalProperties":false}},"sandboxing":{"type":"object","properties":{"builds":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Enables runtime scheduling constraints for builds","example":false},"runtimeClass":{"oneOf":[{"type":"string","enum":["gvisor","kata-clh","kata-qemu"],"description":"Defines which runtime scheduling constraints apply for builds","example":"gvisor","x-required":true},{"type":"string","enum":["none","gvisor","kata-clh","kata-qemu"],"description":"Defines which runtime scheduling constraints apply for builds","example":"gvisor"}]}},"required":["enabled"],"additionalProperties":false,"description":"Build sandboxing runtime configurations"},"services":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Enables runtime scheduling constraints for services","example":false},"runtimeClass":{"oneOf":[{"type":"string","enum":["gvisor","kata-clh","kata-qemu"],"description":"Defines which runtime scheduling constraints apply for services","example":"gvisor","x-required":true},{"type":"string","enum":["none","gvisor","kata-clh","kata-qemu"],"description":"Defines which runtime scheduling constraints apply for services","example":"gvisor"}]}},"required":["enabled"],"additionalProperties":false,"description":"Service sandboxing runtime configurations"},"addons":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Enables runtime scheduling constraints for addons","example":false},"runtimeClass":{"oneOf":[{"type":"string","enum":["gvisor","kata-clh","kata-qemu"],"description":"Defines which runtime scheduling constraints apply for addons","example":"gvisor","x-required":true},{"type":"string","enum":["none","gvisor","kata-clh","kata-qemu"],"description":"Defines which runtime scheduling constraints apply for addons","example":"gvisor"}]}},"required":["enabled"],"additionalProperties":false,"description":"Addon sandboxing runtime configurations"},"jobs":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Enables runtime scheduling constraints for jobs","example":false},"runtimeClass":{"oneOf":[{"type":"string","enum":["gvisor","kata-clh","kata-qemu"],"description":"Defines which runtime scheduling constraints apply for jobs","example":"gvisor","x-required":true},{"type":"string","enum":["none","gvisor","kata-clh","kata-qemu"],"description":"Defines which runtime scheduling constraints apply for jobs","example":"gvisor"}]}},"required":["enabled"],"additionalProperties":false,"description":"Job secure runtime configurations"}},"additionalProperties":false},"color":{"type":"string","pattern":"^#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$","example":"#57637A"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200},"name":{"type":"string","pattern":"^[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"example":"Example Tag"},"id":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"example":"example-tag"},"createdAt":{"type":"string","format":"date-time","description":"time of creation","example":"2000-01-01T12:00:00.000Z"}},"required":["name","id"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Tags","team"],"security":[],"x-nf-permission-required":"Account > Tags > General > Read","x-nf-team-scoped":true,"x-nf-cli-command":["get","tag"]},"v1-tags--resourceTagId--patch":{"operationId":"patchTagsResourcetagid","summary":"Update tag","description":"Patch a resource tag.","parameters":[{"name":"resourceTagId","type":"string","required":true,"description":"ID of the tag","example":"example-tag","in":"path","schema":{"name":"resourceTagId","type":"string","required":true,"description":"ID of the tag","example":"example-tag","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Tags"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"useSpotNodes":{"type":"boolean","description":"Schedule workloads to spot nodes","example":false},"useOnDemandNodes":{"type":"boolean","description":"Also allow workloads to schedule to on demand nodes. Only relevant if you want workloads to schedule across both spot and on demand nodes","example":false},"nodeAffinities":{"type":"array","items":{"type":"object","properties":{"preference":{"type":"boolean","default":false},"weight":{"type":"number","format":"float","minimum":1,"maximum":100,"description":"The node affinity weight. Required when `preference` is `true`."},"matchExpressions":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"operator":{"type":"string","enum":["In","NotIn"]},"values":{"type":"array","items":{"type":"string"}}},"required":["key","operator","values"],"additionalProperties":false},"minItems":1}},"required":["matchExpressions"],"additionalProperties":false}},"sandboxing":{"type":"object","properties":{"builds":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Enables runtime scheduling constraints for builds","example":false},"runtimeClass":{"oneOf":[{"type":"string","enum":["gvisor","kata-clh","kata-qemu"],"description":"Defines which runtime scheduling constraints apply for builds","example":"gvisor","x-required":true},{"type":"string","enum":["none","gvisor","kata-clh","kata-qemu"],"description":"Defines which runtime scheduling constraints apply for builds","example":"gvisor"}]}},"required":["enabled"],"additionalProperties":false,"description":"Build sandboxing runtime configurations"},"services":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Enables runtime scheduling constraints for services","example":false},"runtimeClass":{"oneOf":[{"type":"string","enum":["gvisor","kata-clh","kata-qemu"],"description":"Defines which runtime scheduling constraints apply for services","example":"gvisor","x-required":true},{"type":"string","enum":["none","gvisor","kata-clh","kata-qemu"],"description":"Defines which runtime scheduling constraints apply for services","example":"gvisor"}]}},"required":["enabled"],"additionalProperties":false,"description":"Service sandboxing runtime configurations"},"addons":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Enables runtime scheduling constraints for addons","example":false},"runtimeClass":{"oneOf":[{"type":"string","enum":["gvisor","kata-clh","kata-qemu"],"description":"Defines which runtime scheduling constraints apply for addons","example":"gvisor","x-required":true},{"type":"string","enum":["none","gvisor","kata-clh","kata-qemu"],"description":"Defines which runtime scheduling constraints apply for addons","example":"gvisor"}]}},"required":["enabled"],"additionalProperties":false,"description":"Addon sandboxing runtime configurations"},"jobs":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Enables runtime scheduling constraints for jobs","example":false},"runtimeClass":{"oneOf":[{"type":"string","enum":["gvisor","kata-clh","kata-qemu"],"description":"Defines which runtime scheduling constraints apply for jobs","example":"gvisor","x-required":true},{"type":"string","enum":["none","gvisor","kata-clh","kata-qemu"],"description":"Defines which runtime scheduling constraints apply for jobs","example":"gvisor"}]}},"required":["enabled"],"additionalProperties":false,"description":"Job secure runtime configurations"}},"additionalProperties":false},"color":{"type":"string","pattern":"^#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$","example":"#57637A"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200}},"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Account > Tags > General > Update","x-nf-team-scoped":true,"x-nf-cli-command":["patch","tag"]},"v1-tags--resourceTagId--patch-team-scoped":{"operationId":"patchTagsResourcetagid","summary":"Update tag","description":"Patch a resource tag.","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"resourceTagId","type":"string","required":true,"description":"ID of the tag","example":"example-tag","in":"path","schema":{"name":"resourceTagId","type":"string","required":true,"description":"ID of the tag","example":"example-tag","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Tags","team"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"useSpotNodes":{"type":"boolean","description":"Schedule workloads to spot nodes","example":false},"useOnDemandNodes":{"type":"boolean","description":"Also allow workloads to schedule to on demand nodes. Only relevant if you want workloads to schedule across both spot and on demand nodes","example":false},"nodeAffinities":{"type":"array","items":{"type":"object","properties":{"preference":{"type":"boolean","default":false},"weight":{"type":"number","format":"float","minimum":1,"maximum":100,"description":"The node affinity weight. Required when `preference` is `true`."},"matchExpressions":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"operator":{"type":"string","enum":["In","NotIn"]},"values":{"type":"array","items":{"type":"string"}}},"required":["key","operator","values"],"additionalProperties":false},"minItems":1}},"required":["matchExpressions"],"additionalProperties":false}},"sandboxing":{"type":"object","properties":{"builds":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Enables runtime scheduling constraints for builds","example":false},"runtimeClass":{"oneOf":[{"type":"string","enum":["gvisor","kata-clh","kata-qemu"],"description":"Defines which runtime scheduling constraints apply for builds","example":"gvisor","x-required":true},{"type":"string","enum":["none","gvisor","kata-clh","kata-qemu"],"description":"Defines which runtime scheduling constraints apply for builds","example":"gvisor"}]}},"required":["enabled"],"additionalProperties":false,"description":"Build sandboxing runtime configurations"},"services":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Enables runtime scheduling constraints for services","example":false},"runtimeClass":{"oneOf":[{"type":"string","enum":["gvisor","kata-clh","kata-qemu"],"description":"Defines which runtime scheduling constraints apply for services","example":"gvisor","x-required":true},{"type":"string","enum":["none","gvisor","kata-clh","kata-qemu"],"description":"Defines which runtime scheduling constraints apply for services","example":"gvisor"}]}},"required":["enabled"],"additionalProperties":false,"description":"Service sandboxing runtime configurations"},"addons":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Enables runtime scheduling constraints for addons","example":false},"runtimeClass":{"oneOf":[{"type":"string","enum":["gvisor","kata-clh","kata-qemu"],"description":"Defines which runtime scheduling constraints apply for addons","example":"gvisor","x-required":true},{"type":"string","enum":["none","gvisor","kata-clh","kata-qemu"],"description":"Defines which runtime scheduling constraints apply for addons","example":"gvisor"}]}},"required":["enabled"],"additionalProperties":false,"description":"Addon sandboxing runtime configurations"},"jobs":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Enables runtime scheduling constraints for jobs","example":false},"runtimeClass":{"oneOf":[{"type":"string","enum":["gvisor","kata-clh","kata-qemu"],"description":"Defines which runtime scheduling constraints apply for jobs","example":"gvisor","x-required":true},{"type":"string","enum":["none","gvisor","kata-clh","kata-qemu"],"description":"Defines which runtime scheduling constraints apply for jobs","example":"gvisor"}]}},"required":["enabled"],"additionalProperties":false,"description":"Job secure runtime configurations"}},"additionalProperties":false},"color":{"type":"string","pattern":"^#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$","example":"#57637A"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200}},"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Account > Tags > General > Update","x-nf-team-scoped":true,"x-nf-cli-command":["patch","tag"]},"v1-tags--resourceTagId--delete":{"operationId":"deleteTagsResourcetagid","summary":"Delete tag","description":"Delete a resource tag.","parameters":[{"name":"resourceTagId","type":"string","required":true,"description":"ID of the tag","example":"example-tag","in":"path","schema":{"name":"resourceTagId","type":"string","required":true,"description":"ID of the tag","example":"example-tag","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Tags"],"security":[],"x-nf-permission-required":"Account > Tags > General > Delete","x-nf-team-scoped":true,"x-nf-cli-command":["delete","tag"]},"v1-tags--resourceTagId--delete-team-scoped":{"operationId":"deleteTagsResourcetagid","summary":"Delete tag","description":"Delete a resource tag.","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"resourceTagId","type":"string","required":true,"description":"ID of the tag","example":"example-tag","in":"path","schema":{"name":"resourceTagId","type":"string","required":true,"description":"ID of the tag","example":"example-tag","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Tags","team"],"security":[],"x-nf-permission-required":"Account > Tags > General > Delete","x-nf-team-scoped":true,"x-nf-cli-command":["delete","tag"]},"v1-templates-get":{"operationId":"getTemplates","summary":"List templates","description":"Get a list of templates","parameters":[{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query","schema":{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query"}},{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query","schema":{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query"}},{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query","schema":{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query"}}],"responses":{"200":{"description":"A list of templates.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"templates":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"Name of the template.","example":"Example Template"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"Description of the template.","example":"This is a sample template."},"apiVersion":{"type":"string","enum":["v1.2"],"description":"The version of the Northflank API to run the template against.","example":"v1.2"},"options":{"type":"object","properties":{"autorun":{"type":"boolean","description":"If true, the template will run automatically whenever a change is made to it.","example":false},"concurrencyPolicy":{"type":"string","enum":["allow","queue","forbid","latest","replace"],"description":"Defines the concurrency behaviour of the template with respect to parallel runs.","example":"allow"}},"additionalProperties":false,"description":"Options regarding how the template is run."},"id":{"type":"string","description":"Identifier for the template","example":"example-template"},"concurrencyPolicy":{"type":"string","enum":["allow","queue","forbid","latest","replace"],"description":"Defines the concurrency behaviour of the template with respect to parallel runs.","example":"allow"},"createdAt":{"type":"string","format":"date-time","description":"time of creation"},"updatedAt":{"type":"string","format":"date-time","description":"time of update"}},"required":["name","apiVersion","id"],"additionalProperties":false},"description":"An array of template objects."}},"required":["templates"],"additionalProperties":false,"description":"Result data."},"pagination":{"type":"object","properties":{"hasNextPage":{"type":"boolean","description":"Is there another page of results available?","example":false},"cursor":{"type":"string","description":"The cursor to access the next page of results."},"count":{"type":"number","format":"float","description":"The number of results returned by this request.","example":1}},"required":["hasNextPage","count"],"additionalProperties":false,"description":"Data about the endpoint pagination."}},"required":["data","pagination"],"additionalProperties":false,"description":"Response object."}}},"tags":["Templates"],"security":[],"x-nf-permission-required":"Account > Templates > General > Read","x-nf-team-scoped":true,"x-nf-cli-command":["list","templates"]},"v1-templates-get-team-scoped":{"operationId":"getTemplates","summary":"List templates","description":"Get a list of templates","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query","schema":{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query"}},{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query","schema":{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query"}},{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query","schema":{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query"}}],"responses":{"200":{"description":"A list of templates.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"templates":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"Name of the template.","example":"Example Template"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"Description of the template.","example":"This is a sample template."},"apiVersion":{"type":"string","enum":["v1.2"],"description":"The version of the Northflank API to run the template against.","example":"v1.2"},"options":{"type":"object","properties":{"autorun":{"type":"boolean","description":"If true, the template will run automatically whenever a change is made to it.","example":false},"concurrencyPolicy":{"type":"string","enum":["allow","queue","forbid","latest","replace"],"description":"Defines the concurrency behaviour of the template with respect to parallel runs.","example":"allow"}},"additionalProperties":false,"description":"Options regarding how the template is run."},"id":{"type":"string","description":"Identifier for the template","example":"example-template"},"concurrencyPolicy":{"type":"string","enum":["allow","queue","forbid","latest","replace"],"description":"Defines the concurrency behaviour of the template with respect to parallel runs.","example":"allow"},"createdAt":{"type":"string","format":"date-time","description":"time of creation"},"updatedAt":{"type":"string","format":"date-time","description":"time of update"}},"required":["name","apiVersion","id"],"additionalProperties":false},"description":"An array of template objects."}},"required":["templates"],"additionalProperties":false,"description":"Result data."},"pagination":{"type":"object","properties":{"hasNextPage":{"type":"boolean","description":"Is there another page of results available?","example":false},"cursor":{"type":"string","description":"The cursor to access the next page of results."},"count":{"type":"number","format":"float","description":"The number of results returned by this request.","example":1}},"required":["hasNextPage","count"],"additionalProperties":false,"description":"Data about the endpoint pagination."}},"required":["data","pagination"],"additionalProperties":false,"description":"Response object."}}},"tags":["Templates","team"],"security":[],"x-nf-permission-required":"Account > Templates > General > Read","x-nf-team-scoped":true,"x-nf-cli-command":["list","templates"]},"v1-templates-post":{"operationId":"postTemplates","summary":"Create template","description":"Create a template","parameters":[],"responses":{"200":{"description":"Details about the newly created template.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"template":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"Name of the template.","example":"Example Template"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"Description of the template.","example":"This is a sample template."},"apiVersion":{"type":"string","enum":["v1.2"],"description":"The version of the Northflank API to run the template against.","example":"v1.2"},"arguments":{"type":"object","properties":{},"description":"A set of arguments that can be referenced in a template using '${args.argumentName}'."},"$schema":{"type":"string"},"spec":{"$ref":"#/components/schemas/V1TemplateNodeSchema"},"teardownSpec":{"type":"object","properties":{"spec":{"$ref":"#/components/schemas/V1TeardownNodeSchema"},"failurePolicy":{"type":"string","enum":["ignore","block"],"description":"Controls what happens if the teardown spec fails or times out. `ignore` (default) — proceed with resource deletion regardless. `block` — halt deletion and set the environment to `teardown_failed`","default":"ignore"}},"required":["spec"],"additionalProperties":false,"nullable":true,"description":"Optional spec to run when the template is deleted."},"id":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"Identifier for the template","example":"example-template"},"gitops":{"type":"object","properties":{"vcsService":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string","description":"Legacy key. Please used accountLogin instead."},"repoUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo to sync the file with.","example":"https://github.com/northflank-examples/remix-postgres-redis-demo"},"branch":{"type":"string","description":"The name of the branch to use.","example":"main"},"filePath":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]+$","description":"The file path in the repository. If using an existing file, it should be in JSON format.","examples":["/Dockerfile","northflank.json"]},"templateSha":{"type":"string","description":"The SHA of the current commit that is being used for the template.","example":"8c7e040ee3737ddc3a713363ae72bbe960e9fb16"}},"required":["vcsService","repoUrl","branch","filePath","templateSha"],"additionalProperties":false},"concurrencyPolicy":{"type":"string","enum":["allow","queue","forbid","latest","replace"],"description":"Defines the concurrency behaviour of the template with respect to parallel runs.","example":"allow"},"options":{"type":"object","properties":{"autorun":{"type":"boolean","description":"Whether autorun is enabled"}},"required":["autorun"],"additionalProperties":false},"createdAt":{"type":"string","format":"date-time","description":"time of creation"},"updatedAt":{"type":"string","format":"date-time","description":"time of update"}},"required":["name","apiVersion","spec","id","options"],"additionalProperties":false,"description":"Details about the newly created template."},"templateRun":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"Name of the template.","example":"Example Template"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"Description of the template.","example":"This is a sample template."},"apiVersion":{"type":"string","enum":["v1.2"],"description":"The version of the Northflank API to run the template against.","example":"v1.2"},"options":{"type":"object","properties":{"autorun":{"type":"boolean","description":"If true, the template will run automatically whenever a change is made to it.","example":false},"concurrencyPolicy":{"type":"string","enum":["allow","queue","forbid","latest","replace"],"description":"Defines the concurrency behaviour of the template with respect to parallel runs.","example":"allow"}},"additionalProperties":false,"description":"Options regarding how the template is run."},"arguments":{"type":"object","properties":{},"description":"A set of arguments that can be referenced in a template using '${args.argumentName}'."},"gitops":{"type":"object","properties":{"vcsService":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string","description":"Legacy key. Please used accountLogin instead."},"repoUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo to sync the file with.","example":"https://github.com/northflank-examples/remix-postgres-redis-demo"},"branch":{"type":"string","description":"The name of the branch to use.","example":"main"},"filePath":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]+$","description":"The file path in the repository. If using an existing file, it should be in JSON format.","examples":["/Dockerfile","northflank.json"]}},"required":["vcsService","repoUrl","branch","filePath"],"additionalProperties":false},"$schema":{"type":"string"},"spec":{"$ref":"#/components/schemas/V1TemplateNodeRunSchema"},"refs":{"type":"object","properties":{},"additionalProperties":false},"id":{"type":"string","description":"Identifier for the template run","example":"3dd592f6-ce63-45ee-acf8-13dc5ec5235c"},"templateId":{"type":"string","description":"Identifier for the template","example":"example-template"},"status":{"type":"string","enum":["pending","running","success","failure","aborted","aborting","queued","unknown","skipped","waiting","retrying","async_wait","approval_wait"],"description":"Status of the template run","example":"success","default":"pending"},"concluded":{"type":"boolean","description":"Whether the run has concluded (aborted, success, failed)","example":true,"default":false},"createdAt":{"type":"string","format":"date-time","description":"Timestamp the run was created at.","example":"2021-01-01 12:00:00.000Z"},"updatedAt":{"type":"string","format":"date-time","description":"Timestamp the run was last updated at.","example":"2021-01-01 12:00:00.000Z"}},"required":["name","apiVersion","spec","id","templateId","status","concluded","createdAt","updatedAt"],"additionalProperties":false}},"required":["template"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Templates"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"Name of the template.","example":"Example Template"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"Description of the template.","example":"This is a sample template."},"apiVersion":{"type":"string","enum":["v1.2"],"description":"The version of the Northflank API to run the template against.","example":"v1.2"},"arguments":{"type":"object","properties":{},"description":"A set of arguments that can be referenced in a template using '${args.argumentName}'."},"gitops":{"type":"object","properties":{"vcsService":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string","description":"Legacy key. Please used accountLogin instead."},"repoUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo to sync the file with.","example":"https://github.com/northflank-examples/remix-postgres-redis-demo"},"branch":{"type":"string","description":"The name of the branch to use.","example":"main"},"filePath":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]+$","description":"The file path in the repository. If using an existing file, it should be in JSON format.","examples":["/Dockerfile","northflank.json"]}},"required":["vcsService","repoUrl","branch","filePath"],"additionalProperties":false},"spec":{"$ref":"#/components/schemas/V1TemplateNodeSchema"},"teardownSpec":{"type":"object","properties":{"spec":{"$ref":"#/components/schemas/V1TeardownNodeSchema"},"failurePolicy":{"type":"string","enum":["ignore","block"],"description":"Controls what happens if the teardown spec fails or times out. `ignore` (default) — proceed with resource deletion regardless. `block` — halt deletion and set the environment to `teardown_failed`","default":"ignore"}},"required":["spec"],"additionalProperties":false,"nullable":true,"description":"Optional spec to run when the template is deleted."},"argumentOverrides":{"type":"object","properties":{},"description":"Argument overrides stored outside of the template. If GitOps is enabled, these will not be saved in version control."},"options":{"type":"object","properties":{"autorun":{"type":"boolean","description":"If true, the template will run automatically whenever a change is made to it.","example":false},"concurrencyPolicy":{"type":"string","enum":["allow","queue","forbid","latest","replace"],"description":"Defines the concurrency behaviour of the template with respect to parallel runs.","example":"allow"},"runOnCreation":{"type":"boolean","description":"If true, the template will be ran immediately after creation.","example":true},"runOnCreationArgumentOverrides":{"type":"object","properties":{},"description":"Argument overrides for the initial run. Valid only if `runOnCreation` is `true`."}},"additionalProperties":false,"description":"Options regarding how the template is run."}},"required":["name","apiVersion","spec"],"additionalProperties":false,"description":"Create a new template"},{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"Name of the template.","example":"Example Template"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"Description of the template.","example":"This is a sample template."},"arguments":{"type":"object","properties":{},"description":"A set of arguments that can be referenced in a template using '${args.argumentName}'."},"teardownSpec":{"type":"object","properties":{"spec":{"$ref":"#/components/schemas/V1TeardownNodeSchema"},"failurePolicy":{"type":"string","enum":["ignore","block"],"description":"Controls what happens if the teardown spec fails or times out. `ignore` (default) — proceed with resource deletion regardless. `block` — halt deletion and set the environment to `teardown_failed`","default":"ignore"}},"required":["spec"],"additionalProperties":false,"nullable":true,"description":"Optional spec to run when the template is deleted."},"argumentOverrides":{"type":"object","properties":{},"description":"Argument overrides stored outside of the template. If GitOps is enabled, these will not be saved in version control."},"options":{"type":"object","properties":{"autorun":{"type":"boolean","description":"If true, the template will run automatically whenever a change is made to it.","example":false},"concurrencyPolicy":{"type":"string","enum":["allow","queue","forbid","latest","replace"],"description":"Defines the concurrency behaviour of the template with respect to parallel runs.","example":"allow"},"runOnCreation":{"type":"boolean","description":"If true, the template will be ran immediately after creation.","example":true},"runOnCreationArgumentOverrides":{"type":"object","properties":{},"description":"Argument overrides for the initial run. Valid only if `runOnCreation` is `true`."}},"additionalProperties":false,"description":"Options regarding how the template is run."},"gitops":{"type":"object","properties":{"vcsService":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string","description":"Legacy key. Please used accountLogin instead."},"repoUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo to sync the file with.","example":"https://github.com/northflank-examples/remix-postgres-redis-demo"},"branch":{"type":"string","description":"The name of the branch to use.","example":"main"},"filePath":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]+$","description":"The file path in the repository. If using an existing file, it should be in JSON format.","examples":["/Dockerfile","northflank.json"]}},"required":["vcsService","repoUrl","branch","filePath"],"additionalProperties":false,"description":"GitOps data for syncing this template with a file in version control."},"project":{"type":"object","properties":{}}},"required":["name","gitops"],"description":"Create a new template with GitOps enabled (use an existing git template)"}],"description":"Create a new template"}}},"required":true},"x-nf-permission-required":"Account > Templates > General > Create","x-nf-team-scoped":true,"x-nf-cli-command":["create","template"]},"v1-templates-post-team-scoped":{"operationId":"postTemplates","summary":"Create template","description":"Create a template","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}}],"responses":{"200":{"description":"Details about the newly created template.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"template":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"Name of the template.","example":"Example Template"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"Description of the template.","example":"This is a sample template."},"apiVersion":{"type":"string","enum":["v1.2"],"description":"The version of the Northflank API to run the template against.","example":"v1.2"},"arguments":{"type":"object","properties":{},"description":"A set of arguments that can be referenced in a template using '${args.argumentName}'."},"$schema":{"type":"string"},"spec":{"$ref":"#/components/schemas/V1TemplateNodeSchema"},"teardownSpec":{"type":"object","properties":{"spec":{"$ref":"#/components/schemas/V1TeardownNodeSchema"},"failurePolicy":{"type":"string","enum":["ignore","block"],"description":"Controls what happens if the teardown spec fails or times out. `ignore` (default) — proceed with resource deletion regardless. `block` — halt deletion and set the environment to `teardown_failed`","default":"ignore"}},"required":["spec"],"additionalProperties":false,"nullable":true,"description":"Optional spec to run when the template is deleted."},"id":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"Identifier for the template","example":"example-template"},"gitops":{"type":"object","properties":{"vcsService":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string","description":"Legacy key. Please used accountLogin instead."},"repoUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo to sync the file with.","example":"https://github.com/northflank-examples/remix-postgres-redis-demo"},"branch":{"type":"string","description":"The name of the branch to use.","example":"main"},"filePath":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]+$","description":"The file path in the repository. If using an existing file, it should be in JSON format.","examples":["/Dockerfile","northflank.json"]},"templateSha":{"type":"string","description":"The SHA of the current commit that is being used for the template.","example":"8c7e040ee3737ddc3a713363ae72bbe960e9fb16"}},"required":["vcsService","repoUrl","branch","filePath","templateSha"],"additionalProperties":false},"concurrencyPolicy":{"type":"string","enum":["allow","queue","forbid","latest","replace"],"description":"Defines the concurrency behaviour of the template with respect to parallel runs.","example":"allow"},"options":{"type":"object","properties":{"autorun":{"type":"boolean","description":"Whether autorun is enabled"}},"required":["autorun"],"additionalProperties":false},"createdAt":{"type":"string","format":"date-time","description":"time of creation"},"updatedAt":{"type":"string","format":"date-time","description":"time of update"}},"required":["name","apiVersion","spec","id","options"],"additionalProperties":false,"description":"Details about the newly created template."},"templateRun":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"Name of the template.","example":"Example Template"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"Description of the template.","example":"This is a sample template."},"apiVersion":{"type":"string","enum":["v1.2"],"description":"The version of the Northflank API to run the template against.","example":"v1.2"},"options":{"type":"object","properties":{"autorun":{"type":"boolean","description":"If true, the template will run automatically whenever a change is made to it.","example":false},"concurrencyPolicy":{"type":"string","enum":["allow","queue","forbid","latest","replace"],"description":"Defines the concurrency behaviour of the template with respect to parallel runs.","example":"allow"}},"additionalProperties":false,"description":"Options regarding how the template is run."},"arguments":{"type":"object","properties":{},"description":"A set of arguments that can be referenced in a template using '${args.argumentName}'."},"gitops":{"type":"object","properties":{"vcsService":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string","description":"Legacy key. Please used accountLogin instead."},"repoUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo to sync the file with.","example":"https://github.com/northflank-examples/remix-postgres-redis-demo"},"branch":{"type":"string","description":"The name of the branch to use.","example":"main"},"filePath":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]+$","description":"The file path in the repository. If using an existing file, it should be in JSON format.","examples":["/Dockerfile","northflank.json"]}},"required":["vcsService","repoUrl","branch","filePath"],"additionalProperties":false},"$schema":{"type":"string"},"spec":{"$ref":"#/components/schemas/V1TemplateNodeRunSchema"},"refs":{"type":"object","properties":{},"additionalProperties":false},"id":{"type":"string","description":"Identifier for the template run","example":"3dd592f6-ce63-45ee-acf8-13dc5ec5235c"},"templateId":{"type":"string","description":"Identifier for the template","example":"example-template"},"status":{"type":"string","enum":["pending","running","success","failure","aborted","aborting","queued","unknown","skipped","waiting","retrying","async_wait","approval_wait"],"description":"Status of the template run","example":"success","default":"pending"},"concluded":{"type":"boolean","description":"Whether the run has concluded (aborted, success, failed)","example":true,"default":false},"createdAt":{"type":"string","format":"date-time","description":"Timestamp the run was created at.","example":"2021-01-01 12:00:00.000Z"},"updatedAt":{"type":"string","format":"date-time","description":"Timestamp the run was last updated at.","example":"2021-01-01 12:00:00.000Z"}},"required":["name","apiVersion","spec","id","templateId","status","concluded","createdAt","updatedAt"],"additionalProperties":false}},"required":["template"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Templates","team"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"Name of the template.","example":"Example Template"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"Description of the template.","example":"This is a sample template."},"apiVersion":{"type":"string","enum":["v1.2"],"description":"The version of the Northflank API to run the template against.","example":"v1.2"},"arguments":{"type":"object","properties":{},"description":"A set of arguments that can be referenced in a template using '${args.argumentName}'."},"gitops":{"type":"object","properties":{"vcsService":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string","description":"Legacy key. Please used accountLogin instead."},"repoUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo to sync the file with.","example":"https://github.com/northflank-examples/remix-postgres-redis-demo"},"branch":{"type":"string","description":"The name of the branch to use.","example":"main"},"filePath":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]+$","description":"The file path in the repository. If using an existing file, it should be in JSON format.","examples":["/Dockerfile","northflank.json"]}},"required":["vcsService","repoUrl","branch","filePath"],"additionalProperties":false},"spec":{"$ref":"#/components/schemas/V1TemplateNodeSchema"},"teardownSpec":{"type":"object","properties":{"spec":{"$ref":"#/components/schemas/V1TeardownNodeSchema"},"failurePolicy":{"type":"string","enum":["ignore","block"],"description":"Controls what happens if the teardown spec fails or times out. `ignore` (default) — proceed with resource deletion regardless. `block` — halt deletion and set the environment to `teardown_failed`","default":"ignore"}},"required":["spec"],"additionalProperties":false,"nullable":true,"description":"Optional spec to run when the template is deleted."},"argumentOverrides":{"type":"object","properties":{},"description":"Argument overrides stored outside of the template. If GitOps is enabled, these will not be saved in version control."},"options":{"type":"object","properties":{"autorun":{"type":"boolean","description":"If true, the template will run automatically whenever a change is made to it.","example":false},"concurrencyPolicy":{"type":"string","enum":["allow","queue","forbid","latest","replace"],"description":"Defines the concurrency behaviour of the template with respect to parallel runs.","example":"allow"},"runOnCreation":{"type":"boolean","description":"If true, the template will be ran immediately after creation.","example":true},"runOnCreationArgumentOverrides":{"type":"object","properties":{},"description":"Argument overrides for the initial run. Valid only if `runOnCreation` is `true`."}},"additionalProperties":false,"description":"Options regarding how the template is run."}},"required":["name","apiVersion","spec"],"additionalProperties":false,"description":"Create a new template"},{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"Name of the template.","example":"Example Template"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"Description of the template.","example":"This is a sample template."},"arguments":{"type":"object","properties":{},"description":"A set of arguments that can be referenced in a template using '${args.argumentName}'."},"teardownSpec":{"type":"object","properties":{"spec":{"$ref":"#/components/schemas/V1TeardownNodeSchema"},"failurePolicy":{"type":"string","enum":["ignore","block"],"description":"Controls what happens if the teardown spec fails or times out. `ignore` (default) — proceed with resource deletion regardless. `block` — halt deletion and set the environment to `teardown_failed`","default":"ignore"}},"required":["spec"],"additionalProperties":false,"nullable":true,"description":"Optional spec to run when the template is deleted."},"argumentOverrides":{"type":"object","properties":{},"description":"Argument overrides stored outside of the template. If GitOps is enabled, these will not be saved in version control."},"options":{"type":"object","properties":{"autorun":{"type":"boolean","description":"If true, the template will run automatically whenever a change is made to it.","example":false},"concurrencyPolicy":{"type":"string","enum":["allow","queue","forbid","latest","replace"],"description":"Defines the concurrency behaviour of the template with respect to parallel runs.","example":"allow"},"runOnCreation":{"type":"boolean","description":"If true, the template will be ran immediately after creation.","example":true},"runOnCreationArgumentOverrides":{"type":"object","properties":{},"description":"Argument overrides for the initial run. Valid only if `runOnCreation` is `true`."}},"additionalProperties":false,"description":"Options regarding how the template is run."},"gitops":{"type":"object","properties":{"vcsService":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string","description":"Legacy key. Please used accountLogin instead."},"repoUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo to sync the file with.","example":"https://github.com/northflank-examples/remix-postgres-redis-demo"},"branch":{"type":"string","description":"The name of the branch to use.","example":"main"},"filePath":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]+$","description":"The file path in the repository. If using an existing file, it should be in JSON format.","examples":["/Dockerfile","northflank.json"]}},"required":["vcsService","repoUrl","branch","filePath"],"additionalProperties":false,"description":"GitOps data for syncing this template with a file in version control."},"project":{"type":"object","properties":{}}},"required":["name","gitops"],"description":"Create a new template with GitOps enabled (use an existing git template)"}],"description":"Create a new template"}}},"required":true},"x-nf-permission-required":"Account > Templates > General > Create","x-nf-team-scoped":true,"x-nf-cli-command":["create","template"]},"v1-templates--templateId--get":{"operationId":"getTemplatesTemplateid","summary":"Get template","description":"Get information about the given template.","parameters":[{"name":"templateId","type":"string","required":true,"description":"ID of the template","example":"example-template","in":"path","schema":{"name":"templateId","type":"string","required":true,"description":"ID of the template","example":"example-template","in":"path"}},{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query","schema":{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query"}},{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query","schema":{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query"}},{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query","schema":{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query"}}],"responses":{"200":{"description":"Details about the template.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"Name of the template.","example":"Example Template"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"Description of the template.","example":"This is a sample template."},"apiVersion":{"type":"string","enum":["v1.2"],"description":"The version of the Northflank API to run the template against.","example":"v1.2"},"arguments":{"type":"object","properties":{},"description":"A set of arguments that can be referenced in a template using '${args.argumentName}'."},"$schema":{"type":"string"},"spec":{"$ref":"#/components/schemas/V1TemplateNodeSchema"},"teardownSpec":{"type":"object","properties":{"spec":{"$ref":"#/components/schemas/V1TeardownNodeSchema"},"failurePolicy":{"type":"string","enum":["ignore","block"],"description":"Controls what happens if the teardown spec fails or times out. `ignore` (default) — proceed with resource deletion regardless. `block` — halt deletion and set the environment to `teardown_failed`","default":"ignore"}},"required":["spec"],"additionalProperties":false,"nullable":true,"description":"Optional spec to run when the template is deleted."},"id":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"Identifier for the template","example":"example-template"},"gitops":{"type":"object","properties":{"vcsService":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string","description":"Legacy key. Please used accountLogin instead."},"repoUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo to sync the file with.","example":"https://github.com/northflank-examples/remix-postgres-redis-demo"},"branch":{"type":"string","description":"The name of the branch to use.","example":"main"},"filePath":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]+$","description":"The file path in the repository. If using an existing file, it should be in JSON format.","examples":["/Dockerfile","northflank.json"]},"templateSha":{"type":"string","description":"The SHA of the current commit that is being used for the template.","example":"8c7e040ee3737ddc3a713363ae72bbe960e9fb16"}},"required":["vcsService","repoUrl","branch","filePath","templateSha"],"additionalProperties":false},"concurrencyPolicy":{"type":"string","enum":["allow","queue","forbid","latest","replace"],"description":"Defines the concurrency behaviour of the template with respect to parallel runs.","example":"allow"},"options":{"type":"object","properties":{"autorun":{"type":"boolean","description":"Whether autorun is enabled"}},"required":["autorun"],"additionalProperties":false},"createdAt":{"type":"string","format":"date-time","description":"time of creation"},"updatedAt":{"type":"string","format":"date-time","description":"time of update"}},"required":["name","apiVersion","spec","id","options"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Templates"],"security":[],"x-nf-permission-required":"Account > Templates > General > Read","x-nf-team-scoped":true,"x-nf-cli-command":["get","template"]},"v1-templates--templateId--get-team-scoped":{"operationId":"getTemplatesTemplateid","summary":"Get template","description":"Get information about the given template.","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"templateId","type":"string","required":true,"description":"ID of the template","example":"example-template","in":"path","schema":{"name":"templateId","type":"string","required":true,"description":"ID of the template","example":"example-template","in":"path"}},{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query","schema":{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query"}},{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query","schema":{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query"}},{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query","schema":{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query"}}],"responses":{"200":{"description":"Details about the template.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"Name of the template.","example":"Example Template"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"Description of the template.","example":"This is a sample template."},"apiVersion":{"type":"string","enum":["v1.2"],"description":"The version of the Northflank API to run the template against.","example":"v1.2"},"arguments":{"type":"object","properties":{},"description":"A set of arguments that can be referenced in a template using '${args.argumentName}'."},"$schema":{"type":"string"},"spec":{"$ref":"#/components/schemas/V1TemplateNodeSchema"},"teardownSpec":{"type":"object","properties":{"spec":{"$ref":"#/components/schemas/V1TeardownNodeSchema"},"failurePolicy":{"type":"string","enum":["ignore","block"],"description":"Controls what happens if the teardown spec fails or times out. `ignore` (default) — proceed with resource deletion regardless. `block` — halt deletion and set the environment to `teardown_failed`","default":"ignore"}},"required":["spec"],"additionalProperties":false,"nullable":true,"description":"Optional spec to run when the template is deleted."},"id":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"Identifier for the template","example":"example-template"},"gitops":{"type":"object","properties":{"vcsService":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string","description":"Legacy key. Please used accountLogin instead."},"repoUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo to sync the file with.","example":"https://github.com/northflank-examples/remix-postgres-redis-demo"},"branch":{"type":"string","description":"The name of the branch to use.","example":"main"},"filePath":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]+$","description":"The file path in the repository. If using an existing file, it should be in JSON format.","examples":["/Dockerfile","northflank.json"]},"templateSha":{"type":"string","description":"The SHA of the current commit that is being used for the template.","example":"8c7e040ee3737ddc3a713363ae72bbe960e9fb16"}},"required":["vcsService","repoUrl","branch","filePath","templateSha"],"additionalProperties":false},"concurrencyPolicy":{"type":"string","enum":["allow","queue","forbid","latest","replace"],"description":"Defines the concurrency behaviour of the template with respect to parallel runs.","example":"allow"},"options":{"type":"object","properties":{"autorun":{"type":"boolean","description":"Whether autorun is enabled"}},"required":["autorun"],"additionalProperties":false},"createdAt":{"type":"string","format":"date-time","description":"time of creation"},"updatedAt":{"type":"string","format":"date-time","description":"time of update"}},"required":["name","apiVersion","spec","id","options"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Templates","team"],"security":[],"x-nf-permission-required":"Account > Templates > General > Read","x-nf-team-scoped":true,"x-nf-cli-command":["get","template"]},"v1-templates--templateId--post":{"operationId":"postTemplatesTemplateid","summary":"Update template","description":"Update a template","parameters":[{"name":"templateId","type":"string","required":true,"description":"ID of the template","example":"example-template","in":"path","schema":{"name":"templateId","type":"string","required":true,"description":"ID of the template","example":"example-template","in":"path"}}],"responses":{"200":{"description":"Details about the newly updated template.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"template":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"Name of the template.","example":"Example Template"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"Description of the template.","example":"This is a sample template."},"apiVersion":{"type":"string","enum":["v1.2"],"description":"The version of the Northflank API to run the template against.","example":"v1.2"},"arguments":{"type":"object","properties":{},"description":"A set of arguments that can be referenced in a template using '${args.argumentName}'."},"$schema":{"type":"string"},"spec":{"$ref":"#/components/schemas/V1TemplateNodeSchema"},"teardownSpec":{"type":"object","properties":{"spec":{"$ref":"#/components/schemas/V1TeardownNodeSchema"},"failurePolicy":{"type":"string","enum":["ignore","block"],"description":"Controls what happens if the teardown spec fails or times out. `ignore` (default) — proceed with resource deletion regardless. `block` — halt deletion and set the environment to `teardown_failed`","default":"ignore"}},"required":["spec"],"additionalProperties":false,"nullable":true,"description":"Optional spec to run when the template is deleted."},"id":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"Identifier for the template","example":"example-template"},"gitops":{"type":"object","properties":{"vcsService":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string","description":"Legacy key. Please used accountLogin instead."},"repoUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo to sync the file with.","example":"https://github.com/northflank-examples/remix-postgres-redis-demo"},"branch":{"type":"string","description":"The name of the branch to use.","example":"main"},"filePath":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]+$","description":"The file path in the repository. If using an existing file, it should be in JSON format.","examples":["/Dockerfile","northflank.json"]},"templateSha":{"type":"string","description":"The SHA of the current commit that is being used for the template.","example":"8c7e040ee3737ddc3a713363ae72bbe960e9fb16"}},"required":["vcsService","repoUrl","branch","filePath","templateSha"],"additionalProperties":false},"concurrencyPolicy":{"type":"string","enum":["allow","queue","forbid","latest","replace"],"description":"Defines the concurrency behaviour of the template with respect to parallel runs.","example":"allow"},"options":{"type":"object","properties":{"autorun":{"type":"boolean","description":"Whether autorun is enabled"}},"required":["autorun"],"additionalProperties":false},"createdAt":{"type":"string","format":"date-time","description":"time of creation"},"updatedAt":{"type":"string","format":"date-time","description":"time of update"}},"required":["name","apiVersion","spec","id","options"],"additionalProperties":false,"description":"Details about the updated template."},"templateRun":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"Name of the template.","example":"Example Template"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"Description of the template.","example":"This is a sample template."},"apiVersion":{"type":"string","enum":["v1.2"],"description":"The version of the Northflank API to run the template against.","example":"v1.2"},"options":{"type":"object","properties":{"autorun":{"type":"boolean","description":"If true, the template will run automatically whenever a change is made to it.","example":false},"concurrencyPolicy":{"type":"string","enum":["allow","queue","forbid","latest","replace"],"description":"Defines the concurrency behaviour of the template with respect to parallel runs.","example":"allow"}},"additionalProperties":false,"description":"Options regarding how the template is run."},"arguments":{"type":"object","properties":{},"description":"A set of arguments that can be referenced in a template using '${args.argumentName}'."},"gitops":{"type":"object","properties":{"vcsService":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string","description":"Legacy key. Please used accountLogin instead."},"repoUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo to sync the file with.","example":"https://github.com/northflank-examples/remix-postgres-redis-demo"},"branch":{"type":"string","description":"The name of the branch to use.","example":"main"},"filePath":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]+$","description":"The file path in the repository. If using an existing file, it should be in JSON format.","examples":["/Dockerfile","northflank.json"]}},"required":["vcsService","repoUrl","branch","filePath"],"additionalProperties":false},"$schema":{"type":"string"},"spec":{"$ref":"#/components/schemas/V1TemplateNodeRunSchema"},"refs":{"type":"object","properties":{},"additionalProperties":false},"id":{"type":"string","description":"Identifier for the template run","example":"3dd592f6-ce63-45ee-acf8-13dc5ec5235c"},"templateId":{"type":"string","description":"Identifier for the template","example":"example-template"},"status":{"type":"string","enum":["pending","running","success","failure","aborted","aborting","queued","unknown","skipped","waiting","retrying","async_wait","approval_wait"],"description":"Status of the template run","example":"success","default":"pending"},"concluded":{"type":"boolean","description":"Whether the run has concluded (aborted, success, failed)","example":true,"default":false},"createdAt":{"type":"string","format":"date-time","description":"Timestamp the run was created at.","example":"2021-01-01 12:00:00.000Z"},"updatedAt":{"type":"string","format":"date-time","description":"Timestamp the run was last updated at.","example":"2021-01-01 12:00:00.000Z"}},"required":["name","apiVersion","spec","id","templateId","status","concluded","createdAt","updatedAt"],"additionalProperties":false}},"required":["template"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Templates"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"Name of the template.","example":"Example Template"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"Description of the template.","example":"This is a sample template."},"apiVersion":{"type":"string","enum":["v1.2"],"description":"The version of the Northflank API to run the template against.","example":"v1.2"},"options":{"type":"object","properties":{"autorun":{"type":"boolean","description":"If true, the template will run automatically whenever a change is made to it.","example":false},"concurrencyPolicy":{"type":"string","enum":["allow","queue","forbid","latest","replace"],"description":"Defines the concurrency behaviour of the template with respect to parallel runs.","example":"allow"}},"additionalProperties":false,"description":"Options regarding how the template is run."},"arguments":{"type":"object","properties":{},"description":"A set of arguments that can be referenced in a template using '${args.argumentName}'."},"gitops":{"type":"object","properties":{"vcsService":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string","description":"Legacy key. Please used accountLogin instead."},"repoUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo to sync the file with.","example":"https://github.com/northflank-examples/remix-postgres-redis-demo"},"branch":{"type":"string","description":"The name of the branch to use.","example":"main"},"filePath":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]+$","description":"The file path in the repository. If using an existing file, it should be in JSON format.","examples":["/Dockerfile","northflank.json"]}},"required":["vcsService","repoUrl","branch","filePath"],"additionalProperties":false},"$schema":{"type":"string"},"spec":{"$ref":"#/components/schemas/V1TemplateNodeSchema"},"teardownSpec":{"type":"object","properties":{"spec":{"$ref":"#/components/schemas/V1TeardownNodeSchema"},"failurePolicy":{"type":"string","enum":["ignore","block"],"description":"Controls what happens if the teardown spec fails or times out. `ignore` (default) — proceed with resource deletion regardless. `block` — halt deletion and set the environment to `teardown_failed`","default":"ignore"}},"required":["spec"],"additionalProperties":false,"nullable":true,"description":"Optional spec to run when the template is deleted."},"argumentOverrides":{"type":"object","properties":{},"description":"Argument overrides stored outside of the template. If GitOps is enabled, these will not be saved in version control."}},"required":["name","apiVersion","spec"],"additionalProperties":false,"description":"Update template"},{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"Name of the template.","example":"Example Template"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"Description of the template.","example":"This is a sample template."},"argumentOverrides":{"type":"object","properties":{},"description":"Argument overrides stored outside of the template. If GitOps is enabled, these will not be saved in version control."},"gitops":{"type":"object","properties":{"vcsService":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string","description":"Legacy key. Please used accountLogin instead."},"repoUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo to sync the file with.","example":"https://github.com/northflank-examples/remix-postgres-redis-demo"},"branch":{"type":"string","description":"The name of the branch to use.","example":"main"},"filePath":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]+$","description":"The file path in the repository. If using an existing file, it should be in JSON format.","examples":["/Dockerfile","northflank.json"]}},"required":["vcsService","repoUrl","branch","filePath"],"additionalProperties":false,"nullable":true,"description":"GitOps data for syncing this template with a file in version control. If set to `null`, removes GitOps handling from this template."}},"required":["name","gitops"],"additionalProperties":false,"description":"Update template GitOps settings (replace current template with git template)"}],"description":"Update a template"}}},"required":true},"x-nf-permission-required":"Account > Templates > General > Update","x-nf-team-scoped":true,"x-nf-cli-command":["update","template"]},"v1-templates--templateId--post-team-scoped":{"operationId":"postTemplatesTemplateid","summary":"Update template","description":"Update a template","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"templateId","type":"string","required":true,"description":"ID of the template","example":"example-template","in":"path","schema":{"name":"templateId","type":"string","required":true,"description":"ID of the template","example":"example-template","in":"path"}}],"responses":{"200":{"description":"Details about the newly updated template.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"template":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"Name of the template.","example":"Example Template"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"Description of the template.","example":"This is a sample template."},"apiVersion":{"type":"string","enum":["v1.2"],"description":"The version of the Northflank API to run the template against.","example":"v1.2"},"arguments":{"type":"object","properties":{},"description":"A set of arguments that can be referenced in a template using '${args.argumentName}'."},"$schema":{"type":"string"},"spec":{"$ref":"#/components/schemas/V1TemplateNodeSchema"},"teardownSpec":{"type":"object","properties":{"spec":{"$ref":"#/components/schemas/V1TeardownNodeSchema"},"failurePolicy":{"type":"string","enum":["ignore","block"],"description":"Controls what happens if the teardown spec fails or times out. `ignore` (default) — proceed with resource deletion regardless. `block` — halt deletion and set the environment to `teardown_failed`","default":"ignore"}},"required":["spec"],"additionalProperties":false,"nullable":true,"description":"Optional spec to run when the template is deleted."},"id":{"type":"string","pattern":"^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"Identifier for the template","example":"example-template"},"gitops":{"type":"object","properties":{"vcsService":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string","description":"Legacy key. Please used accountLogin instead."},"repoUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo to sync the file with.","example":"https://github.com/northflank-examples/remix-postgres-redis-demo"},"branch":{"type":"string","description":"The name of the branch to use.","example":"main"},"filePath":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]+$","description":"The file path in the repository. If using an existing file, it should be in JSON format.","examples":["/Dockerfile","northflank.json"]},"templateSha":{"type":"string","description":"The SHA of the current commit that is being used for the template.","example":"8c7e040ee3737ddc3a713363ae72bbe960e9fb16"}},"required":["vcsService","repoUrl","branch","filePath","templateSha"],"additionalProperties":false},"concurrencyPolicy":{"type":"string","enum":["allow","queue","forbid","latest","replace"],"description":"Defines the concurrency behaviour of the template with respect to parallel runs.","example":"allow"},"options":{"type":"object","properties":{"autorun":{"type":"boolean","description":"Whether autorun is enabled"}},"required":["autorun"],"additionalProperties":false},"createdAt":{"type":"string","format":"date-time","description":"time of creation"},"updatedAt":{"type":"string","format":"date-time","description":"time of update"}},"required":["name","apiVersion","spec","id","options"],"additionalProperties":false,"description":"Details about the updated template."},"templateRun":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"Name of the template.","example":"Example Template"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"Description of the template.","example":"This is a sample template."},"apiVersion":{"type":"string","enum":["v1.2"],"description":"The version of the Northflank API to run the template against.","example":"v1.2"},"options":{"type":"object","properties":{"autorun":{"type":"boolean","description":"If true, the template will run automatically whenever a change is made to it.","example":false},"concurrencyPolicy":{"type":"string","enum":["allow","queue","forbid","latest","replace"],"description":"Defines the concurrency behaviour of the template with respect to parallel runs.","example":"allow"}},"additionalProperties":false,"description":"Options regarding how the template is run."},"arguments":{"type":"object","properties":{},"description":"A set of arguments that can be referenced in a template using '${args.argumentName}'."},"gitops":{"type":"object","properties":{"vcsService":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string","description":"Legacy key. Please used accountLogin instead."},"repoUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo to sync the file with.","example":"https://github.com/northflank-examples/remix-postgres-redis-demo"},"branch":{"type":"string","description":"The name of the branch to use.","example":"main"},"filePath":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]+$","description":"The file path in the repository. If using an existing file, it should be in JSON format.","examples":["/Dockerfile","northflank.json"]}},"required":["vcsService","repoUrl","branch","filePath"],"additionalProperties":false},"$schema":{"type":"string"},"spec":{"$ref":"#/components/schemas/V1TemplateNodeRunSchema"},"refs":{"type":"object","properties":{},"additionalProperties":false},"id":{"type":"string","description":"Identifier for the template run","example":"3dd592f6-ce63-45ee-acf8-13dc5ec5235c"},"templateId":{"type":"string","description":"Identifier for the template","example":"example-template"},"status":{"type":"string","enum":["pending","running","success","failure","aborted","aborting","queued","unknown","skipped","waiting","retrying","async_wait","approval_wait"],"description":"Status of the template run","example":"success","default":"pending"},"concluded":{"type":"boolean","description":"Whether the run has concluded (aborted, success, failed)","example":true,"default":false},"createdAt":{"type":"string","format":"date-time","description":"Timestamp the run was created at.","example":"2021-01-01 12:00:00.000Z"},"updatedAt":{"type":"string","format":"date-time","description":"Timestamp the run was last updated at.","example":"2021-01-01 12:00:00.000Z"}},"required":["name","apiVersion","spec","id","templateId","status","concluded","createdAt","updatedAt"],"additionalProperties":false}},"required":["template"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Templates","team"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"Name of the template.","example":"Example Template"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"Description of the template.","example":"This is a sample template."},"apiVersion":{"type":"string","enum":["v1.2"],"description":"The version of the Northflank API to run the template against.","example":"v1.2"},"options":{"type":"object","properties":{"autorun":{"type":"boolean","description":"If true, the template will run automatically whenever a change is made to it.","example":false},"concurrencyPolicy":{"type":"string","enum":["allow","queue","forbid","latest","replace"],"description":"Defines the concurrency behaviour of the template with respect to parallel runs.","example":"allow"}},"additionalProperties":false,"description":"Options regarding how the template is run."},"arguments":{"type":"object","properties":{},"description":"A set of arguments that can be referenced in a template using '${args.argumentName}'."},"gitops":{"type":"object","properties":{"vcsService":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string","description":"Legacy key. Please used accountLogin instead."},"repoUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo to sync the file with.","example":"https://github.com/northflank-examples/remix-postgres-redis-demo"},"branch":{"type":"string","description":"The name of the branch to use.","example":"main"},"filePath":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]+$","description":"The file path in the repository. If using an existing file, it should be in JSON format.","examples":["/Dockerfile","northflank.json"]}},"required":["vcsService","repoUrl","branch","filePath"],"additionalProperties":false},"$schema":{"type":"string"},"spec":{"$ref":"#/components/schemas/V1TemplateNodeSchema"},"teardownSpec":{"type":"object","properties":{"spec":{"$ref":"#/components/schemas/V1TeardownNodeSchema"},"failurePolicy":{"type":"string","enum":["ignore","block"],"description":"Controls what happens if the teardown spec fails or times out. `ignore` (default) — proceed with resource deletion regardless. `block` — halt deletion and set the environment to `teardown_failed`","default":"ignore"}},"required":["spec"],"additionalProperties":false,"nullable":true,"description":"Optional spec to run when the template is deleted."},"argumentOverrides":{"type":"object","properties":{},"description":"Argument overrides stored outside of the template. If GitOps is enabled, these will not be saved in version control."}},"required":["name","apiVersion","spec"],"additionalProperties":false,"description":"Update template"},{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"Name of the template.","example":"Example Template"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"Description of the template.","example":"This is a sample template."},"argumentOverrides":{"type":"object","properties":{},"description":"Argument overrides stored outside of the template. If GitOps is enabled, these will not be saved in version control."},"gitops":{"type":"object","properties":{"vcsService":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string","description":"Legacy key. Please used accountLogin instead."},"repoUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo to sync the file with.","example":"https://github.com/northflank-examples/remix-postgres-redis-demo"},"branch":{"type":"string","description":"The name of the branch to use.","example":"main"},"filePath":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]+$","description":"The file path in the repository. If using an existing file, it should be in JSON format.","examples":["/Dockerfile","northflank.json"]}},"required":["vcsService","repoUrl","branch","filePath"],"additionalProperties":false,"nullable":true,"description":"GitOps data for syncing this template with a file in version control. If set to `null`, removes GitOps handling from this template."}},"required":["name","gitops"],"additionalProperties":false,"description":"Update template GitOps settings (replace current template with git template)"}],"description":"Update a template"}}},"required":true},"x-nf-permission-required":"Account > Templates > General > Update","x-nf-team-scoped":true,"x-nf-cli-command":["update","template"]},"v1-templates--templateId--delete":{"operationId":"deleteTemplatesTemplateid","summary":"Delete template","description":"Delete a template","parameters":[{"name":"templateId","type":"string","required":true,"description":"ID of the template","example":"example-template","in":"path","schema":{"name":"templateId","type":"string","required":true,"description":"ID of the template","example":"example-template","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Templates"],"security":[],"x-nf-permission-required":"Account > Templates > General > Delete","x-nf-team-scoped":true,"x-nf-cli-command":["delete","template"]},"v1-templates--templateId--delete-team-scoped":{"operationId":"deleteTemplatesTemplateid","summary":"Delete template","description":"Delete a template","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"templateId","type":"string","required":true,"description":"ID of the template","example":"example-template","in":"path","schema":{"name":"templateId","type":"string","required":true,"description":"ID of the template","example":"example-template","in":"path"}}],"responses":{"200":{"description":"The operation was performed successfully.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"additionalProperties":false,"description":"Result data.","example":{}}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Templates","team"],"security":[],"x-nf-permission-required":"Account > Templates > General > Delete","x-nf-team-scoped":true,"x-nf-cli-command":["delete","template"]},"v1-templates--templateId--runs-post":{"operationId":"postTemplatesTemplateidRuns","summary":"Run template","description":"Run a template","parameters":[{"name":"templateId","type":"string","required":true,"description":"ID of the template","example":"example-template","in":"path","schema":{"name":"templateId","type":"string","required":true,"description":"ID of the template","example":"example-template","in":"path"}}],"responses":{"200":{"description":"Details about the newly create template run.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"Name of the template.","example":"Example Template"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"Description of the template.","example":"This is a sample template."},"apiVersion":{"type":"string","enum":["v1.2"],"description":"The version of the Northflank API to run the template against.","example":"v1.2"},"options":{"type":"object","properties":{"autorun":{"type":"boolean","description":"If true, the template will run automatically whenever a change is made to it.","example":false},"concurrencyPolicy":{"type":"string","enum":["allow","queue","forbid","latest","replace"],"description":"Defines the concurrency behaviour of the template with respect to parallel runs.","example":"allow"}},"additionalProperties":false,"description":"Options regarding how the template is run."},"arguments":{"type":"object","properties":{},"description":"A set of arguments that can be referenced in a template using '${args.argumentName}'."},"gitops":{"type":"object","properties":{"vcsService":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string","description":"Legacy key. Please used accountLogin instead."},"repoUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo to sync the file with.","example":"https://github.com/northflank-examples/remix-postgres-redis-demo"},"branch":{"type":"string","description":"The name of the branch to use.","example":"main"},"filePath":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]+$","description":"The file path in the repository. If using an existing file, it should be in JSON format.","examples":["/Dockerfile","northflank.json"]}},"required":["vcsService","repoUrl","branch","filePath"],"additionalProperties":false},"$schema":{"type":"string"},"spec":{"$ref":"#/components/schemas/V1TemplateNodeRunSchema"},"refs":{"type":"object","properties":{},"additionalProperties":false},"id":{"type":"string","description":"Identifier for the template run","example":"3dd592f6-ce63-45ee-acf8-13dc5ec5235c"},"templateId":{"type":"string","description":"Identifier for the template","example":"example-template"},"status":{"type":"string","enum":["pending","running","success","failure","aborted","aborting","queued","unknown","skipped","waiting","retrying","async_wait","approval_wait"],"description":"Status of the template run","example":"success","default":"pending"},"concluded":{"type":"boolean","description":"Whether the run has concluded (aborted, success, failed)","example":true,"default":false},"createdAt":{"type":"string","format":"date-time","description":"Timestamp the run was created at.","example":"2021-01-01 12:00:00.000Z"},"updatedAt":{"type":"string","format":"date-time","description":"Timestamp the run was last updated at.","example":"2021-01-01 12:00:00.000Z"}},"required":["name","apiVersion","spec","id","templateId","status","concluded","createdAt","updatedAt"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Templates"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"arguments":{"type":"object","properties":{},"description":"A set of arguments that can be referenced in a template using '${args.argumentName}'."}},"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Account > Templates > General > Run","x-nf-team-scoped":true,"x-nf-cli-command":["run","template"]},"v1-templates--templateId--runs-post-team-scoped":{"operationId":"postTemplatesTemplateidRuns","summary":"Run template","description":"Run a template","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"templateId","type":"string","required":true,"description":"ID of the template","example":"example-template","in":"path","schema":{"name":"templateId","type":"string","required":true,"description":"ID of the template","example":"example-template","in":"path"}}],"responses":{"200":{"description":"Details about the newly create template run.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"Name of the template.","example":"Example Template"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"Description of the template.","example":"This is a sample template."},"apiVersion":{"type":"string","enum":["v1.2"],"description":"The version of the Northflank API to run the template against.","example":"v1.2"},"options":{"type":"object","properties":{"autorun":{"type":"boolean","description":"If true, the template will run automatically whenever a change is made to it.","example":false},"concurrencyPolicy":{"type":"string","enum":["allow","queue","forbid","latest","replace"],"description":"Defines the concurrency behaviour of the template with respect to parallel runs.","example":"allow"}},"additionalProperties":false,"description":"Options regarding how the template is run."},"arguments":{"type":"object","properties":{},"description":"A set of arguments that can be referenced in a template using '${args.argumentName}'."},"gitops":{"type":"object","properties":{"vcsService":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string","description":"Legacy key. Please used accountLogin instead."},"repoUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo to sync the file with.","example":"https://github.com/northflank-examples/remix-postgres-redis-demo"},"branch":{"type":"string","description":"The name of the branch to use.","example":"main"},"filePath":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]+$","description":"The file path in the repository. If using an existing file, it should be in JSON format.","examples":["/Dockerfile","northflank.json"]}},"required":["vcsService","repoUrl","branch","filePath"],"additionalProperties":false},"$schema":{"type":"string"},"spec":{"$ref":"#/components/schemas/V1TemplateNodeRunSchema"},"refs":{"type":"object","properties":{},"additionalProperties":false},"id":{"type":"string","description":"Identifier for the template run","example":"3dd592f6-ce63-45ee-acf8-13dc5ec5235c"},"templateId":{"type":"string","description":"Identifier for the template","example":"example-template"},"status":{"type":"string","enum":["pending","running","success","failure","aborted","aborting","queued","unknown","skipped","waiting","retrying","async_wait","approval_wait"],"description":"Status of the template run","example":"success","default":"pending"},"concluded":{"type":"boolean","description":"Whether the run has concluded (aborted, success, failed)","example":true,"default":false},"createdAt":{"type":"string","format":"date-time","description":"Timestamp the run was created at.","example":"2021-01-01 12:00:00.000Z"},"updatedAt":{"type":"string","format":"date-time","description":"Timestamp the run was last updated at.","example":"2021-01-01 12:00:00.000Z"}},"required":["name","apiVersion","spec","id","templateId","status","concluded","createdAt","updatedAt"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Templates","team"],"security":[],"requestBody":{"description":"Request body","content":{"application/json":{"schema":{"type":"object","properties":{"arguments":{"type":"object","properties":{},"description":"A set of arguments that can be referenced in a template using '${args.argumentName}'."}},"additionalProperties":false}}},"required":true},"x-nf-permission-required":"Account > Templates > General > Run","x-nf-team-scoped":true,"x-nf-cli-command":["run","template"]},"v1-templates--templateId--runs-get":{"operationId":"getTemplatesTemplateidRuns","summary":"List template runs","description":"Get a list of template runs","parameters":[{"name":"templateId","type":"string","required":true,"description":"ID of the template","example":"example-template","in":"path","schema":{"name":"templateId","type":"string","required":true,"description":"ID of the template","example":"example-template","in":"path"}},{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query","schema":{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query"}},{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query","schema":{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query"}},{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query","schema":{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query"}},{"name":"status","type":"string","enum":["pending","running","success","failure","aborted","aborting","queued","unknown","skipped","waiting","retrying","async_wait","approval_wait"],"description":"Filter by template status.","example":"success","default":"pending","in":"query","schema":{"name":"status","type":"string","enum":["pending","running","success","failure","aborted","aborting","queued","unknown","skipped","waiting","retrying","async_wait","approval_wait"],"description":"Filter by template status.","example":"success","default":"pending","in":"query"}},{"name":"concluded","type":"boolean","description":"Filter by whether the template is concluded.","in":"query","schema":{"name":"concluded","type":"boolean","description":"Filter by whether the template is concluded.","in":"query"}}],"responses":{"200":{"description":"A list of template runs.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"templateRuns":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"Name of the template.","example":"Example Template"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"Description of the template.","example":"This is a sample template."},"apiVersion":{"type":"string","enum":["v1.2"],"description":"The version of the Northflank API to run the template against.","example":"v1.2"},"options":{"type":"object","properties":{"autorun":{"type":"boolean","description":"If true, the template will run automatically whenever a change is made to it.","example":false},"concurrencyPolicy":{"type":"string","enum":["allow","queue","forbid","latest","replace"],"description":"Defines the concurrency behaviour of the template with respect to parallel runs.","example":"allow"}},"additionalProperties":false,"description":"Options regarding how the template is run."},"id":{"type":"string","description":"Identifier for the template run","example":"3dd592f6-ce63-45ee-acf8-13dc5ec5235c"},"templateId":{"type":"string","description":"Identifier for the template","example":"example-template"},"status":{"type":"string","enum":["pending","running","success","failure","aborted","aborting","queued","unknown","skipped","waiting","retrying","async_wait","approval_wait"],"description":"Status of the template run","example":"success","default":"pending"},"startedAt":{"type":"string","format":"date-time","description":"Timestamp the run started at.","example":"2021-01-01 12:01:00.000Z"},"concluded":{"type":"boolean","description":"Whether the run has concluded (aborted, success, failed)","example":true,"default":false},"concludedAt":{"type":"string","format":"date-time","description":"Timestamp the run concluded at.","example":"2021-01-01 12:10:00.000Z"},"createdAt":{"type":"string","format":"date-time","description":"Timestamp the run was created at.","example":"2021-01-01 12:00:00.000Z"},"updatedAt":{"type":"string","format":"date-time","description":"Timestamp the run was last updated at.","example":"2021-01-01 12:00:00.000Z"}},"required":["name","apiVersion","id","templateId","status","concluded","createdAt","updatedAt"],"additionalProperties":false},"description":"An array of template run objects."}},"required":["templateRuns"],"additionalProperties":false,"description":"Result data."},"pagination":{"type":"object","properties":{"hasNextPage":{"type":"boolean","description":"Is there another page of results available?","example":false},"cursor":{"type":"string","description":"The cursor to access the next page of results."},"count":{"type":"number","format":"float","description":"The number of results returned by this request.","example":1}},"required":["hasNextPage","count"],"additionalProperties":false,"description":"Data about the endpoint pagination."}},"required":["data","pagination"],"additionalProperties":false,"description":"Response object."}}},"tags":["Templates"],"security":[],"x-nf-permission-required":"Account > Templates > General > Read","x-nf-team-scoped":true,"x-nf-cli-command":["list","template-runs"]},"v1-templates--templateId--runs-get-team-scoped":{"operationId":"getTemplatesTemplateidRuns","summary":"List template runs","description":"Get a list of template runs","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"templateId","type":"string","required":true,"description":"ID of the template","example":"example-template","in":"path","schema":{"name":"templateId","type":"string","required":true,"description":"ID of the template","example":"example-template","in":"path"}},{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query","schema":{"name":"per_page","type":"integer","minimum":1,"maximum":100,"description":"The number of results to display per request. Maximum of 100 results per page.","example":50,"default":50,"in":"query"}},{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query","schema":{"name":"page","type":"integer","minimum":1,"description":"The page number to access.","example":1,"in":"query"}},{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query","schema":{"name":"cursor","type":"string","minLength":24,"maxLength":24,"description":"The cursor returned from the previous page of results, used to request the next page.","in":"query"}},{"name":"status","type":"string","enum":["pending","running","success","failure","aborted","aborting","queued","unknown","skipped","waiting","retrying","async_wait","approval_wait"],"description":"Filter by template status.","example":"success","default":"pending","in":"query","schema":{"name":"status","type":"string","enum":["pending","running","success","failure","aborted","aborting","queued","unknown","skipped","waiting","retrying","async_wait","approval_wait"],"description":"Filter by template status.","example":"success","default":"pending","in":"query"}},{"name":"concluded","type":"boolean","description":"Filter by whether the template is concluded.","in":"query","schema":{"name":"concluded","type":"boolean","description":"Filter by whether the template is concluded.","in":"query"}}],"responses":{"200":{"description":"A list of template runs.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"templateRuns":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"Name of the template.","example":"Example Template"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"Description of the template.","example":"This is a sample template."},"apiVersion":{"type":"string","enum":["v1.2"],"description":"The version of the Northflank API to run the template against.","example":"v1.2"},"options":{"type":"object","properties":{"autorun":{"type":"boolean","description":"If true, the template will run automatically whenever a change is made to it.","example":false},"concurrencyPolicy":{"type":"string","enum":["allow","queue","forbid","latest","replace"],"description":"Defines the concurrency behaviour of the template with respect to parallel runs.","example":"allow"}},"additionalProperties":false,"description":"Options regarding how the template is run."},"id":{"type":"string","description":"Identifier for the template run","example":"3dd592f6-ce63-45ee-acf8-13dc5ec5235c"},"templateId":{"type":"string","description":"Identifier for the template","example":"example-template"},"status":{"type":"string","enum":["pending","running","success","failure","aborted","aborting","queued","unknown","skipped","waiting","retrying","async_wait","approval_wait"],"description":"Status of the template run","example":"success","default":"pending"},"startedAt":{"type":"string","format":"date-time","description":"Timestamp the run started at.","example":"2021-01-01 12:01:00.000Z"},"concluded":{"type":"boolean","description":"Whether the run has concluded (aborted, success, failed)","example":true,"default":false},"concludedAt":{"type":"string","format":"date-time","description":"Timestamp the run concluded at.","example":"2021-01-01 12:10:00.000Z"},"createdAt":{"type":"string","format":"date-time","description":"Timestamp the run was created at.","example":"2021-01-01 12:00:00.000Z"},"updatedAt":{"type":"string","format":"date-time","description":"Timestamp the run was last updated at.","example":"2021-01-01 12:00:00.000Z"}},"required":["name","apiVersion","id","templateId","status","concluded","createdAt","updatedAt"],"additionalProperties":false},"description":"An array of template run objects."}},"required":["templateRuns"],"additionalProperties":false,"description":"Result data."},"pagination":{"type":"object","properties":{"hasNextPage":{"type":"boolean","description":"Is there another page of results available?","example":false},"cursor":{"type":"string","description":"The cursor to access the next page of results."},"count":{"type":"number","format":"float","description":"The number of results returned by this request.","example":1}},"required":["hasNextPage","count"],"additionalProperties":false,"description":"Data about the endpoint pagination."}},"required":["data","pagination"],"additionalProperties":false,"description":"Response object."}}},"tags":["Templates","team"],"security":[],"x-nf-permission-required":"Account > Templates > General > Read","x-nf-team-scoped":true,"x-nf-cli-command":["list","template-runs"]},"v1-templates--templateId--runs--templateRunId--get":{"operationId":"getTemplatesTemplateidRunsTemplaterunid","summary":"Get template run","description":"Get information about the given template run.","parameters":[{"name":"templateId","type":"string","required":true,"description":"ID of the template","example":"example-template","in":"path","schema":{"name":"templateId","type":"string","required":true,"description":"ID of the template","example":"example-template","in":"path"}},{"name":"templateRunId","type":"string","required":true,"description":"ID of the template run","example":"16cf800b-ab28-421a-8ff9-a935b5ee89ad","in":"path","schema":{"name":"templateRunId","type":"string","required":true,"description":"ID of the template run","example":"16cf800b-ab28-421a-8ff9-a935b5ee89ad","in":"path"}}],"responses":{"200":{"description":"Details about the template run.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"Name of the template.","example":"Example Template"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"Description of the template.","example":"This is a sample template."},"apiVersion":{"type":"string","enum":["v1.2"],"description":"The version of the Northflank API to run the template against.","example":"v1.2"},"options":{"type":"object","properties":{"autorun":{"type":"boolean","description":"If true, the template will run automatically whenever a change is made to it.","example":false},"concurrencyPolicy":{"type":"string","enum":["allow","queue","forbid","latest","replace"],"description":"Defines the concurrency behaviour of the template with respect to parallel runs.","example":"allow"}},"additionalProperties":false,"description":"Options regarding how the template is run."},"arguments":{"type":"object","properties":{},"description":"A set of arguments that can be referenced in a template using '${args.argumentName}'."},"gitops":{"type":"object","properties":{"vcsService":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string","description":"Legacy key. Please used accountLogin instead."},"repoUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo to sync the file with.","example":"https://github.com/northflank-examples/remix-postgres-redis-demo"},"branch":{"type":"string","description":"The name of the branch to use.","example":"main"},"filePath":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]+$","description":"The file path in the repository. If using an existing file, it should be in JSON format.","examples":["/Dockerfile","northflank.json"]}},"required":["vcsService","repoUrl","branch","filePath"],"additionalProperties":false},"$schema":{"type":"string"},"spec":{"$ref":"#/components/schemas/V1TemplateNodeRunSchema"},"refs":{"type":"object","properties":{},"additionalProperties":false},"id":{"type":"string","description":"Identifier for the template run","example":"3dd592f6-ce63-45ee-acf8-13dc5ec5235c"},"templateId":{"type":"string","description":"Identifier for the template","example":"example-template"},"status":{"type":"string","enum":["pending","running","success","failure","aborted","aborting","queued","unknown","skipped","waiting","retrying","async_wait","approval_wait"],"description":"Status of the template run","example":"success","default":"pending"},"concluded":{"type":"boolean","description":"Whether the run has concluded (aborted, success, failed)","example":true,"default":false},"createdAt":{"type":"string","format":"date-time","description":"Timestamp the run was created at.","example":"2021-01-01 12:00:00.000Z"},"updatedAt":{"type":"string","format":"date-time","description":"Timestamp the run was last updated at.","example":"2021-01-01 12:00:00.000Z"}},"required":["name","apiVersion","spec","id","templateId","status","concluded","createdAt","updatedAt"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Templates"],"security":[],"x-nf-permission-required":"Account > Templates > General > Read","x-nf-team-scoped":true,"x-nf-cli-command":["get","template-run"]},"v1-templates--templateId--runs--templateRunId--get-team-scoped":{"operationId":"getTemplatesTemplateidRunsTemplaterunid","summary":"Get template run","description":"Get information about the given template run.","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"templateId","type":"string","required":true,"description":"ID of the template","example":"example-template","in":"path","schema":{"name":"templateId","type":"string","required":true,"description":"ID of the template","example":"example-template","in":"path"}},{"name":"templateRunId","type":"string","required":true,"description":"ID of the template run","example":"16cf800b-ab28-421a-8ff9-a935b5ee89ad","in":"path","schema":{"name":"templateRunId","type":"string","required":true,"description":"ID of the template run","example":"16cf800b-ab28-421a-8ff9-a935b5ee89ad","in":"path"}}],"responses":{"200":{"description":"Details about the template run.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"Name of the template.","example":"Example Template"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"Description of the template.","example":"This is a sample template."},"apiVersion":{"type":"string","enum":["v1.2"],"description":"The version of the Northflank API to run the template against.","example":"v1.2"},"options":{"type":"object","properties":{"autorun":{"type":"boolean","description":"If true, the template will run automatically whenever a change is made to it.","example":false},"concurrencyPolicy":{"type":"string","enum":["allow","queue","forbid","latest","replace"],"description":"Defines the concurrency behaviour of the template with respect to parallel runs.","example":"allow"}},"additionalProperties":false,"description":"Options regarding how the template is run."},"arguments":{"type":"object","properties":{},"description":"A set of arguments that can be referenced in a template using '${args.argumentName}'."},"gitops":{"type":"object","properties":{"vcsService":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string","description":"Legacy key. Please used accountLogin instead."},"repoUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo to sync the file with.","example":"https://github.com/northflank-examples/remix-postgres-redis-demo"},"branch":{"type":"string","description":"The name of the branch to use.","example":"main"},"filePath":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]+$","description":"The file path in the repository. If using an existing file, it should be in JSON format.","examples":["/Dockerfile","northflank.json"]}},"required":["vcsService","repoUrl","branch","filePath"],"additionalProperties":false},"$schema":{"type":"string"},"spec":{"$ref":"#/components/schemas/V1TemplateNodeRunSchema"},"refs":{"type":"object","properties":{},"additionalProperties":false},"id":{"type":"string","description":"Identifier for the template run","example":"3dd592f6-ce63-45ee-acf8-13dc5ec5235c"},"templateId":{"type":"string","description":"Identifier for the template","example":"example-template"},"status":{"type":"string","enum":["pending","running","success","failure","aborted","aborting","queued","unknown","skipped","waiting","retrying","async_wait","approval_wait"],"description":"Status of the template run","example":"success","default":"pending"},"concluded":{"type":"boolean","description":"Whether the run has concluded (aborted, success, failed)","example":true,"default":false},"createdAt":{"type":"string","format":"date-time","description":"Timestamp the run was created at.","example":"2021-01-01 12:00:00.000Z"},"updatedAt":{"type":"string","format":"date-time","description":"Timestamp the run was last updated at.","example":"2021-01-01 12:00:00.000Z"}},"required":["name","apiVersion","spec","id","templateId","status","concluded","createdAt","updatedAt"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Templates","team"],"security":[],"x-nf-permission-required":"Account > Templates > General > Read","x-nf-team-scoped":true,"x-nf-cli-command":["get","template-run"]},"v1-templates--templateId--runs--templateRunId--abort-post":{"operationId":"postTemplatesTemplateidRunsTemplaterunidAbort","summary":"Abort template run","description":"Abort the given template run.","parameters":[{"name":"templateId","type":"string","required":true,"description":"ID of the template","example":"example-template","in":"path","schema":{"name":"templateId","type":"string","required":true,"description":"ID of the template","example":"example-template","in":"path"}},{"name":"templateRunId","type":"string","required":true,"description":"ID of the template run","example":"16cf800b-ab28-421a-8ff9-a935b5ee89ad","in":"path","schema":{"name":"templateRunId","type":"string","required":true,"description":"ID of the template run","example":"16cf800b-ab28-421a-8ff9-a935b5ee89ad","in":"path"}}],"responses":{"200":{"description":"Details about the template run.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"Name of the template.","example":"Example Template"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"Description of the template.","example":"This is a sample template."},"apiVersion":{"type":"string","enum":["v1.2"],"description":"The version of the Northflank API to run the template against.","example":"v1.2"},"options":{"type":"object","properties":{"autorun":{"type":"boolean","description":"If true, the template will run automatically whenever a change is made to it.","example":false},"concurrencyPolicy":{"type":"string","enum":["allow","queue","forbid","latest","replace"],"description":"Defines the concurrency behaviour of the template with respect to parallel runs.","example":"allow"}},"additionalProperties":false,"description":"Options regarding how the template is run."},"arguments":{"type":"object","properties":{},"description":"A set of arguments that can be referenced in a template using '${args.argumentName}'."},"gitops":{"type":"object","properties":{"vcsService":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string","description":"Legacy key. Please used accountLogin instead."},"repoUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo to sync the file with.","example":"https://github.com/northflank-examples/remix-postgres-redis-demo"},"branch":{"type":"string","description":"The name of the branch to use.","example":"main"},"filePath":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]+$","description":"The file path in the repository. If using an existing file, it should be in JSON format.","examples":["/Dockerfile","northflank.json"]}},"required":["vcsService","repoUrl","branch","filePath"],"additionalProperties":false},"$schema":{"type":"string"},"spec":{"$ref":"#/components/schemas/V1TemplateNodeRunSchema"},"refs":{"type":"object","properties":{},"additionalProperties":false},"id":{"type":"string","description":"Identifier for the template run","example":"3dd592f6-ce63-45ee-acf8-13dc5ec5235c"},"templateId":{"type":"string","description":"Identifier for the template","example":"example-template"},"status":{"type":"string","enum":["pending","running","success","failure","aborted","aborting","queued","unknown","skipped","waiting","retrying","async_wait","approval_wait"],"description":"Status of the template run","example":"success","default":"pending"},"concluded":{"type":"boolean","description":"Whether the run has concluded (aborted, success, failed)","example":true,"default":false},"createdAt":{"type":"string","format":"date-time","description":"Timestamp the run was created at.","example":"2021-01-01 12:00:00.000Z"},"updatedAt":{"type":"string","format":"date-time","description":"Timestamp the run was last updated at.","example":"2021-01-01 12:00:00.000Z"}},"required":["name","apiVersion","spec","id","templateId","status","concluded","createdAt","updatedAt"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Templates"],"security":[],"x-nf-permission-required":"Account > Templates > Runs > Abort","x-nf-team-scoped":true,"x-nf-cli-command":["abort","template-run"]},"v1-templates--templateId--runs--templateRunId--abort-post-team-scoped":{"operationId":"postTemplatesTemplateidRunsTemplaterunidAbort","summary":"Abort template run","description":"Abort the given template run.","parameters":[{"name":"teamId","in":"path","required":true,"description":"ID of the team","schema":{"type":"string"}},{"name":"templateId","type":"string","required":true,"description":"ID of the template","example":"example-template","in":"path","schema":{"name":"templateId","type":"string","required":true,"description":"ID of the template","example":"example-template","in":"path"}},{"name":"templateRunId","type":"string","required":true,"description":"ID of the template run","example":"16cf800b-ab28-421a-8ff9-a935b5ee89ad","in":"path","schema":{"name":"templateRunId","type":"string","required":true,"description":"ID of the template run","example":"16cf800b-ab28-421a-8ff9-a935b5ee89ad","in":"path"}}],"responses":{"200":{"description":"Details about the template run.","schema":{"type":"object","properties":{"data":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z0-9]+((-|\\s)[a-zA-Z0-9]+)*$","minLength":3,"maxLength":100,"description":"Name of the template.","example":"Example Template"},"description":{"type":"string","pattern":"^[a-zA-Z0-9.,?\\s\\\\/'\"()[\\];`%^&*\\-_:!]+$","maxLength":200,"description":"Description of the template.","example":"This is a sample template."},"apiVersion":{"type":"string","enum":["v1.2"],"description":"The version of the Northflank API to run the template against.","example":"v1.2"},"options":{"type":"object","properties":{"autorun":{"type":"boolean","description":"If true, the template will run automatically whenever a change is made to it.","example":false},"concurrencyPolicy":{"type":"string","enum":["allow","queue","forbid","latest","replace"],"description":"Defines the concurrency behaviour of the template with respect to parallel runs.","example":"allow"}},"additionalProperties":false,"description":"Options regarding how the template is run."},"arguments":{"type":"object","properties":{},"description":"A set of arguments that can be referenced in a template using '${args.argumentName}'."},"gitops":{"type":"object","properties":{"vcsService":{"type":"string","enum":["bitbucket","gitlab","github","self-hosted","azure"],"description":"The VCS provider to use.","example":"github"},"selfHostedVcsId":{"type":"string","pattern":"^([A-Za-z0-9-]+)|([0-9a-f]{24})$","description":"If projectType is self-hosted, the ID of the self-hosted vcs to use."},"accountLogin":{"type":"string","description":"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.","example":"github-user"},"vcsLinkId":{"type":"string","description":"Legacy key. Please used accountLogin instead."},"repoUrl":{"type":"string","pattern":"^(https:\\/\\/)?((www(\\.[a-zA-Z0-9\\-]{2,})+\\.)?[a-zA-Z0-9\\-]{2,})(\\.([a-zA-Z0-9\\-]{2,}))+(\\/([a-zA-Z0-9\\-._]{2,}))+?$","description":"URL of the Git repo to sync the file with.","example":"https://github.com/northflank-examples/remix-postgres-redis-demo"},"branch":{"type":"string","description":"The name of the branch to use.","example":"main"},"filePath":{"type":"string","pattern":"^\\/([a-zA-Z0-9-._]+\\/)*[a-zA-Z0-9-._]+$","description":"The file path in the repository. If using an existing file, it should be in JSON format.","examples":["/Dockerfile","northflank.json"]}},"required":["vcsService","repoUrl","branch","filePath"],"additionalProperties":false},"$schema":{"type":"string"},"spec":{"$ref":"#/components/schemas/V1TemplateNodeRunSchema"},"refs":{"type":"object","properties":{},"additionalProperties":false},"id":{"type":"string","description":"Identifier for the template run","example":"3dd592f6-ce63-45ee-acf8-13dc5ec5235c"},"templateId":{"type":"string","description":"Identifier for the template","example":"example-template"},"status":{"type":"string","enum":["pending","running","success","failure","aborted","aborting","queued","unknown","skipped","waiting","retrying","async_wait","approval_wait"],"description":"Status of the template run","example":"success","default":"pending"},"concluded":{"type":"boolean","description":"Whether the run has concluded (aborted, success, failed)","example":true,"default":false},"createdAt":{"type":"string","format":"date-time","description":"Timestamp the run was created at.","example":"2021-01-01 12:00:00.000Z"},"updatedAt":{"type":"string","format":"date-time","description":"Timestamp the run was last updated at.","example":"2021-01-01 12:00:00.000Z"}},"required":["name","apiVersion","spec","id","templateId","status","concluded","createdAt","updatedAt"],"additionalProperties":false,"description":"Result data."}},"required":["data"],"additionalProperties":false,"description":"Response object."}}},"tags":["Templates","team"],"security":[],"x-nf-permission-required":"Account > Templates > Runs > Abort","x-nf-team-scoped":true,"x-nf-cli-command":["abort","template-run"]}}}}