{"openapi":"3.1.0","info":{"title":"Public EMMA API","description":"### About Infrastructure API\n\n**Base URL:** **<u>https://api.emma.ms/external</u>**\n\n This **Infrastructure API** is for managing the emma cloud infrastructure within a project. The API enables you to view, create, edit, and delete _Virtual machines, Spot instances, Applications, Kubernetes clusters, SSH keys, Security groups, and Backup policies_. For creating the resources you can use the endpoints with the dictionaries: _Data centers, Locations, Providers, Operating systems, Virtual machines configurations, Spot instances configurations, Kubernetes clusters configurations._\n\n ### Authentication\n\n #### 1. Create service application\n\n To access the API, enter your project, navigate to **Settings** > **Service Apps**, and create a service application. Select the access level **Read**, **Operate**, or **Manage**.\n\n - **Read** - only GET methods are allowed in the API.\n\n - **Operate** - some operations are allowed with the resources (e.g. _Start, Reboot,_ and _Shutdown_ of the Virtual machines).\n\n - **Manage** - full creating, updating, and deleting of the resources is allowed.\n\n\n #### 2. Get access token\n\n - Copy the **Client ID** and **Client Secret** in the service application.\n - Send an API request to the endpoint **/issue-token** as specified in the **Authentication** section of the API documentation. You will receive access and refresh tokens in the response.\n\n _For Linux / Mac:_\n ```\n curl -X POST https://api.emma.ms/external/v1/issue-token \\\n -H \"Content-Type: application/json\" \\\n -d '{\"clientId\": \"YOUR-CLIENT-ID\", \"clientSecret\": \"YOUR-CLIENT-SECRET\"}'\n ```\n _For Windows:_\n ```\n curl -X POST https://api.emma.ms/external/v1/issue-token ^\n -H \"Content-Type: application/json\" ^\n -d \"{\\\"clientId\\\": \\\"YOUR-CLIENT-ID\\\", \\\"clientSecret\\\": \\\"YOUR-CLIENT-SECRET\\\"}\"\n ```\n\n #### 3. Use access token in requests\n The Bearer access token is a text string, included in the request header, for example:\n\n _For Linux / Mac:_\n ```\n curl -X GET https://api.emma.ms/external/v1/locations -H \"Authorization: Bearer YOUR-ACCESS-TOKEN-HERE\"\n ```\n\n Use this token for the API requests. \n\n #### 4. Refresh token\n The access token will expire in 10 minutes. A new access token may be created using the refresh token (without Client ID and Client Secret).\n\n To get a new access token send a request to the **/refresh-token** endpoint:\n\n\n _For Linux / Mac:_\n ```\n curl -X POST https://api.emma.ms/external/v1/refresh-token \\\n -H \"Content-Type: application/json\" \\\n -d '{\"refreshToken\": \"YOUR-REFRESH-TOKEN\"}'\n ```    \n\n ### Possible response status codes\n\n We use standard HTTP response codes to show the success or failure of requests.\n\n `2xx` - successful responses.\n\n `4xx` - client error responses (the response contains an explanation of the error).\n\n `5xx` - server error responses.\n\n The API uses the following status codes:\n\n | Status Code | Description                  | Notes                                                                  |\n |-------------|------------------------------|------------------------------------------------------------------------|\n | 200         | OK                           | The request was successful.                                             |\n | 201         | Created                      | The object was successfully created. This code is only used with objects that are created immediately.\n | 204         | No content                   | A successful request, but there is no additional information to send back in the response body (in a case when the object was deleted).  \n | 400         | Bad Request                  | The request could not be understood by the server. Incoming parameters might not be valid. |\n | 401         | Unauthorized            | The client is unauthenticated. The client must authenticate itself to get the requested response. |\n | 403         | Forbidden                   | The client does not have access rights to the content.\n | 404         | Not Found                    | The requested resource is not found.                                    |\n | 409         | Conflict | This response is sent when a request conflicts with the current state of the object (e.g. deleting the security group with the compute instances in it).|\n | 422         | Unprocessable Content   | The request was well-formed but was unable to be followed due to incorrect field values (e.g. creation of a virtual machine in the non-existent data center).  |\n | 500         | Internal server Error                 | The server could not return the representation due to an internal server error. |\n","version":"1.1.38"},"servers":[{"url":"https://api.emma.ms/external","description":"Public EMMA API"}],"tags":[{"name":"Accelerator types","description":"GPU accelerator types"},{"name":"Authentication","description":"Includes two endpoints for obtaining access tokens for authentication in the current API. The first endpoint enables you to get an access token and a refresh token. To send a request, you first need to create a Service application in your project (in the Settings section). After creating the application, you will get a Client ID and a Client Secret. Use them in your API request body to get the access and refresh tokens.\n\nThe second endpoint is used for getting a new access token using the refresh token. Since the access token can expire in a few minutes, you can generate a new access token without providing the Client ID and Client Secret.\n"},{"name":"Compute instances configurations","description":"When creating virtual machines, spot instances, or Kubernetes clusters, you need to provide the desired hardware configurations. These configurations include CPU, CPU type, RAM, volume size, and volume type. Different cloud providers offer various configurations in different data centers. Therefore, before creating any compute instance, you need to verify the available configurations.\n\nUse these three endpoints as references for available configurations for virtual machines, spot instances, and Kubernetes clusters. You can search the available configurations by different parameters (provider, location, data center, cloud network type, CPU, CPU type, RAM, volume size, volume type, and price).\n\nWhen you find an appropriate configuration, provide the hardware parameters in the endpoint for creating or editing a virtual machine, spot instance, or Kubernetes cluster.\n"},{"name":"Data centers","description":"Data centers from cloud providers. The data center ID is necessary for creating compute instances. Use data center endpoints to find the provider's data centers.\n"},{"name":"Kubernetes clusters","description":"Provides a comprehensive suite of endpoints for managing Kubernetes clusters within the project. This includes creating, retrieving, updating, and deleting Kubernetes clusters.\n"},{"name":"Locations","description":"Geographic locations of the provider's data centers. These endpoints provide the ID and name of each geographic location. Use the retrieved location ID for searching data centers.\n"},{"name":"Network","description":"Manage multi-cloud network in project\n"},{"name":"Operating systems","description":"Operating systems of compute instances supported by the cloud providers. Endpoints provide detailed information about each operating system, including its family, type, version, and architecture. The operating system ID is necessary when creating virtual machines and spot instances.\n"},{"name":"Providers","description":"Cloud service provider is a third-party company that provides scalable computing resources that users can access over emma platform. When you create any computing resources in emma you create them in the provider's datacenters.\n"},{"name":"Security groups","description":"A security group refers to a set of rules that determine what network traffic is allowed to enter or leave a particular network or system. It acts as a virtual firewall, controlling inbound and outbound traffic based on predefined rules.\nSecurity groups operate based on predefined rules that allow traffic based on specified criteria, such as source IP address, destination IP address, port number, and protocol. You can create and modify security groups, and add or delete compute instances from the security group.\n"},{"name":"Spot instances","description":"A Spot Instance is a specialized compute instance that allows you to access and utilize unused instance capacity at a steeply discounted rate.  Spot price is charged on an hourly basis.\n"},{"name":"SSH keys","description":"Provides endpoints for managing SSH keys within the project. These endpoints allow users to create, retrieve, update, and delete SSH keys, facilitating secure access to cloud resources.\nYou can only manage the SSH keys created by the current Service application that you use to authenticate to the API. You can't retrieve a list of SSH keys created by other users. You can't use other user's SSH keys when creating compute instances.\n"},{"name":"Subnetworks","description":"Provides endpoints for creating and managing subnetworks at the project level. This feature allows defining IP address ranges for deploying virtual machines within specified subnetworks. Initially available for DigitalOcean and Gcore, it includes additional option for specifying private IP for Gcore virtual machines during deployment.\n"},{"name":"Virtual machines","description":"Provides a comprehensive set of endpoints for managing virtual machines (VMs) within the project. These endpoints enable users to create, retrieve, update, and delete virtual machines.\n"},{"name":"Volumes","description":"A volume is a block storage resource used by virtual machines to store and retrieve data continuously. The endpoint allows users to increase the storage capacity of existing volumes.\n"},{"name":"Volumes configurations","description":"Available volume configurations. Use this endpoint to reference configurations for volumes, searchable by the following parameters: provider, location, data center, volume size, and volume type.\n"},{"name":"Workflows","description":"Workflows are reusable infrastructure templates for single-instance deployments. Endpoints are provided to create, update, delete, and retrieve workflows.\n\nEvery workflow template maintains an immutable history of versions. Each save (create or update) produces a new immutable snapshot that becomes the active version — the one used when creating instances. The active version can be identified by `activeVersionId` / `activeVersionName` on the workflow template. Past versions are exposed as a sub-resource under `/v1/workflow-templates/{id}/versions` and can be previewed, renamed, restored, or deleted. Each workflow can hold up to 20 non-deleted versions; on the 21st save the caller must confirm auto-deletion of the oldest non-active version via `forceDeleteOldest = true`\n"}],"paths":{"/v1/issue-token":{"post":{"tags":["Authentication"],"summary":"Issue token","description":"Returns an access token and a refresh token for this API. The bearer access token enables you to get access and send requests to the endpoints in this API.\n\nTo get the tokens, you need to send a Client ID and a Client Secret, which you can obtain from the Service application in your project. First, create a Service app in your project (Project -> Settings -> Service apps).\n\nTo manage access rights to the API, select an appropriate access level for your app when creating the service app - **Read**, **Operate,** or **Manage**.\n\nThe Bearer access token is a text string, included in the request header, for example:\n\n```\ncurl -X GET https://api.emma.ms/external/v1/locations -H \"Authorization: Bearer YOUR-ACCESS-TOKEN-HERE\"\n```\n","operationId":"issueToken","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Credentials"}}}},"responses":{"200":{"description":"Successful operation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Token"}}}},"400":{"$ref":"#/components/responses/BadRequestError"},"500":{"$ref":"#/components/responses/InternalServerError"}},"x-codeSamples":[{"lang":"CURL","label":"CURL","source":"curl --location 'https://api.emma.ms/external/v1/issue-token' \\\n--header 'Content-Type: application/json' \\\n--header 'Accept: application/json' \\\n--data '{\n  \"clientId\": \"YOUR-CLIENT-ID\",\n  \"clientSecret\": \"YOUR-CLIENT-SECRET\"\n}'"}]}},"/v1/refresh-token":{"post":{"tags":["Authentication"],"summary":"Refresh token","description":"Returns an access token for this API using a refresh token. The refresh token enables you to get a new access token (when it is expired) without needing the Client ID and Client Secret. To get the access token, you need to send the refresh token in the payload. You can obtain the refresh token from the `/v1/issue-token` endpoint.\n","operationId":"refreshToken","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RefreshToken"}}}},"responses":{"200":{"description":"Successful operation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Token"}}}},"400":{"$ref":"#/components/responses/BadRequestError"},"500":{"$ref":"#/components/responses/InternalServerError"}},"x-codeSamples":[{"lang":"CURL","label":"CURL","source":"curl --location 'https://api.emma.ms/external/v1/refresh-token' \\\n--header 'Content-Type: application/json' \\\n--header 'Accept: application/json' \\\n--data '{\n  \"refreshToken\": \"YOUR-REFRESH-TOKEN\"\n}'"}]}},"/v1/accelerator-types":{"get":{"tags":["Accelerator types"],"summary":"Get list of GPU accelerator types","description":"Returns a list of GPU accelerator types.\n","operationId":"GetAcceleratorTypes","responses":{"200":{"description":"Successful operation","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/AcceleratorType"}}}}},"400":{"$ref":"#/components/responses/BadRequestError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"500":{"$ref":"#/components/responses/InternalServerError"}},"security":[{"bearerAuth":[]}],"x-codeSamples":[{"lang":"CURL","label":"CURL","source":"curl --location 'https://api.emma.ms/external/v1/accelerator-types' \\\n--header 'Accept: application/json' \\\n--header 'Authorization: Bearer YOUR-BEARER-TOKEN'"}]}},"/v1/connectivity-centers":{"get":{"tags":["Network"],"summary":"List connectivity centers in direct connect network","description":"Returns a list of locations where connectivity centers can be deployed for the direct connect network.","operationId":"listConnectivityCenters","parameters":[{"$ref":"#/components/parameters/locationFilter"},{"$ref":"#/components/parameters/locationNeFilter"},{"$ref":"#/components/parameters/locationLikeFilter"},{"$ref":"#/components/parameters/locationNlikeFilter"},{"$ref":"#/components/parameters/macroRegionFilter"},{"$ref":"#/components/parameters/networkTypeFilter"},{"$ref":"#/components/parameters/networkTypeNeFilter"}],"responses":{"200":{"description":"Successful operation","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ConnectivityCenter"}}}}},"400":{"$ref":"#/components/responses/BadRequestError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"500":{"$ref":"#/components/responses/InternalServerError"}},"security":[{"bearerAuth":[]}],"x-codeSamples":[{"lang":"CURL","label":"CURL","source":"curl --location 'https://api.emma.ms/external/v1/connectivity-centers' \\\n--header 'Accept: application/json' \\\n--header 'Authorization: Bearer YOUR-BEARER-TOKEN'"}]}},"/v1/connectivity-centers/{id}":{"get":{"tags":["Network"],"summary":"Get connectivity center by ID","description":"Returns a single location where connectivity center can be deployed for the direct connect network.","operationId":"getProjectConnectivityCenterById","parameters":[{"$ref":"#/components/parameters/connectivityCenterId"}],"responses":{"200":{"description":"Successful operation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConnectivityCenter"}}}},"400":{"$ref":"#/components/responses/BadRequestError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"500":{"$ref":"#/components/responses/InternalServerError"}},"security":[{"bearerAuth":[]}],"x-codeSamples":[{"lang":"CURL","label":"CURL","source":"curl --location 'https://api.emma.ms/external/v1/connectivity-centers/{id}' \\\n--header 'Accept: application/json' \\\n--header 'Authorization: Bearer YOUR-BEARER-TOKEN'         "}]}},"/v1/data-centers":{"get":{"tags":["Data centers"],"summary":"Get list of data centers","description":"Returns a list of data centers from cloud providers. All compute instances are created in data centers. The data center ID is necessary for creating any compute instance. Use this endpoint to find the provider's data centers.\n","operationId":"GetDataCenters","parameters":[{"$ref":"#/components/parameters/dataCenterName"},{"$ref":"#/components/parameters/locationIdQuery"},{"$ref":"#/components/parameters/providerName"},{"$ref":"#/components/parameters/projectIdQuery"}],"responses":{"200":{"description":"Successful operation","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/DataCenter"}}}}},"400":{"$ref":"#/components/responses/BadRequestError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"500":{"$ref":"#/components/responses/InternalServerError"}},"security":[{"bearerAuth":[]}],"x-codeSamples":[{"lang":"CURL","label":"CURL","source":"curl --location 'https://api.emma.ms/external/v1/data-centers' \\\n--header 'Accept: application/json' \\\n--header 'Authorization: Bearer YOUR-BEARER-TOKEN'"}]}},"/v1/data-centers/{dataCenterId}":{"get":{"tags":["Data centers"],"summary":"Get data center by ID","description":"Returns a data center from a cloud provider by data center ID. Information on the data center includes its name, provider and location.\n","operationId":"GetDataCenter","parameters":[{"$ref":"#/components/parameters/dataCenterId"},{"$ref":"#/components/parameters/projectIdQuery"}],"responses":{"200":{"description":"Successful operation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DataCenter"}}}},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"404":{"$ref":"#/components/responses/NotFoundError"},"500":{"$ref":"#/components/responses/InternalServerError"}},"security":[{"bearerAuth":[]}],"x-codeSamples":[{"lang":"CURL","label":"CURL","source":"curl --location 'https://api.emma.ms/external/v1/data-centers/YOUR-DATA-CENTER-ID' \\\n--header 'Accept: application/json' \\\n--header 'Authorization: Bearer YOUR-BEARER-TOKEN'"}]}},"/v1/kubernetes":{"get":{"tags":["Kubernetes clusters"],"summary":"Get list of Kubernetes clusters","description":"Returns a list of created Kubernetes clusters.\n","operationId":"GetKubernetesClusters","parameters":[{"$ref":"#/components/parameters/projectIdQuery"}],"responses":{"200":{"description":"Successful operation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KubernetesListResponse"}}}},"400":{"$ref":"#/components/responses/BadRequestError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"500":{"$ref":"#/components/responses/InternalServerError"}},"security":[{"bearerAuth":[]}],"x-codeSamples":[{"lang":"CURL","label":"CURL","source":"curl --location 'https://api.emma.ms/external/v1/kubernetes' \\\n--header 'Accept: application/json' \\\n--header 'Authorization: Bearer YOUR-BEARER-TOKEN'"}]},"post":{"tags":["Kubernetes clusters"],"summary":"Create Kubernetes cluster","description":"Creates a Managed Kubernetes cluster. Kubernetes Service provides the ability to deploy and manage Kubernetes clusters without worrying about the setup and maintenance of master nodes. emma manages the Kubernetes control plane, so you can focus on deploying and managing your applications. You do not need to create master nodes.\n\nWe offer reliable and highly available infrastructure for your cluster across multiple cloud providers. For Direct Connect, clusters can be deployed on AWS, Azure, and GCP. For Internet Connect, clusters can be deployed on AWS, Azure, and GCP by default. DigitalOcean and Gcore are also available for Internet Connect on request.\n\nBy default, clusters can be deployed only in the European region. Deployment in the US region is available on request.\n\nChoose the network type: Direct Connect or Internet Connect. Direct Connect requires this option to be enabled in the Network section. Internet Connect does not require any additional actions.\n\nWhen creating worker nodes, you need to select the appropriate hardware configuration. The available configuration depends on the provider and the data center. Use the `/v1/kubernetes-configs` endpoint to find available worker node configurations.\n\nIf workerNodes is not provided, at least one autoscaling group must have minimumNodes >= 1.\n\nA cluster currently supports up to 5 autoscaling groups and a total of 16 worker nodes.\n","operationId":"CreateKubernetesCluster","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/KubernetesCreateRequest"}}}},"responses":{"200":{"description":"Successful operation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KubernetesCreateResponse"}}}},"400":{"$ref":"#/components/responses/BadRequestError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"422":{"$ref":"#/components/responses/UnprocessableEntityError"},"500":{"$ref":"#/components/responses/InternalServerError"}},"security":[{"bearerAuth":[]}],"x-codeSamples":[{"lang":"CURL","label":"CURL","source":"curl --location 'https://api.emma.ms/external/v1/kubernetes' \\\n--header 'Content-Type: application/json' \\\n--header 'Accept: application/json' \\\n--header 'Authorization: Bearer YOUR-BEARER-TOKEN' \\\n--data '{\n  \"name\": \"default-k8s-managed-cluster-name\",\n  \"deploymentLocation\": \"eu\", \n  \"k8sConnectionType\": \"internet_connect\",\n  \"workerNodes\": [\n    {\n      \"name\": \"default-name\",\n      \"dataCenterId\": \"europe-west1-d\",\n      \"vCpuType\": \"shared\",\n      \"vCpu\": 2,\n      \"ramGb\": 4,\n      \"volumeType\": \"ssd\",\n      \"volumeGb\": 16\n    }\n  ],\n  \"autoscalingConfigs\": [\n    {\n      \"groupName\": \"nodegroup\",\n      \"dataCenterId\": \"aws-us-west-1\",\n      \"minimumNodes\": 1,\n      \"maximumNodes\": 2,\n      \"targetNodes\": 1,\n      \"minimumVCpus\": 1,\n      \"maximumVCpus\": 5,\n      \"targetVCpus\": 1,\n      \"nodeGroupPriceLimit\": 5,\n      \"useOnDemandInstancesInsteadOfSpots\": true,\n      \"spotPercent\": 50,\n      \"spotMarkup\": 5,\n      \"userLabels\": [\n        {\n          \"key\": \"workload\",\n          \"value\": \"batch\"\n        }\n      ],\n      \"configurationPriorities\": [\n        {\n          \"vCpuType\": \"shared\",\n          \"vCpu\": 2,\n          \"ramGb\": 2,\n          \"volumeGb\": 16,\n          \"volumeType\": \"ssd\",\n          \"priority\": \"high\"\n        }\n      ]\n    }\n  ]\n}'"}]}},"/v1/kubernetes/{kubernetesId}":{"get":{"tags":["Kubernetes clusters"],"summary":"Get Kubernetes cluster by id","description":"Returns a Managed Kubernetes cluster by cluster ID.\n","operationId":"GetKubernetesCluster","parameters":[{"$ref":"#/components/parameters/kubernetesId"},{"$ref":"#/components/parameters/projectIdQuery"}],"responses":{"200":{"description":"Successful operation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KubernetesGetResponse"}}}},"400":{"$ref":"#/components/responses/BadRequestError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"404":{"$ref":"#/components/responses/NotFoundError"},"500":{"$ref":"#/components/responses/InternalServerError"}},"security":[{"bearerAuth":[]}],"x-codeSamples":[{"lang":"CURL","label":"CURL","source":"curl --location 'https://api.emma.ms/external/v1/kubernetes/{kubernetesId}' \\\n--header 'Accept: application/json' \\\n--header 'Authorization: Bearer YOUR-BEARER-TOKEN'"}]},"put":{"tags":["Kubernetes clusters"],"summary":"Edit Kubernetes cluster","description":"The method for editing a Managed Kubernetes cluster enables you to delete and add new worker nodes and autoscaling groups, as well as change the settings of existing autoscaling groups. You can only edit a cluster when it is in \"ACTIVE\" status. To select hardware configurations for worker nodes, use the /v1/kubernetes-configs endpoint.\n\nWhen editing a Kubernetes cluster, you can only add or delete worker nodes, but you cannot change the name or configuration of existing worker nodes. If you want to keep a node when editing a cluster, simply specify its ID in the 'workerNodes' object. All other fields in 'workerNodes' are ignored for existing nodes and are not required. If you want to delete a node, remove its ID.\n\nWhen you create a new node, all fields in the 'workerNodes' object (except ID) are required. Do not add the ID field for a new node.\n\nPlease note that the spotMarkup field is ignored for the GCP provider.\n\nIf workerNodes is not provided, at least one autoscaling group must have minimumNodes >= 1. \n\nWhen you delete an autoscaling group with existing worker nodes, the worker nodes are also deleted.\n\nDuring the changes, the cluster status will change to \"UPDATING.\" Nodes undergoing changes will be displayed with a \"PROVISIONING\", \"JOINING\" status. When the changes are successfully applied, the cluster will transition back to the \"ACTIVE\" status, and the nodes will be in the \"ACTIVE\" status.\n","operationId":"EditKubernetesCluster","parameters":[{"$ref":"#/components/parameters/kubernetesId"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/KubernetesUpdateRequest"}}}},"responses":{"200":{"description":"Successful operation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KubernetesUpdateResponse"}}}},"400":{"$ref":"#/components/responses/BadRequestError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"404":{"$ref":"#/components/responses/NotFoundError"},"422":{"$ref":"#/components/responses/UnprocessableEntityError"},"500":{"$ref":"#/components/responses/InternalServerError"}},"security":[{"bearerAuth":[]}],"x-codeSamples":[{"lang":"CURL","label":"CURL","source":"curl --location --request PUT 'https://api.emma.ms/external/v1/kubernetes/{kubernetesId}' \\\n--header 'Content-Type: application/json' \\\n--header 'Accept: application/json' \\\n--header 'Authorization: Bearer YOUR-BEARER-TOKEN' \\\n--data '{\n  \"workerNodes\": [\n    {\n      \"id\": 18,\n      \"name\": \"default-name\",\n      \"dataCenterId\": \"europe-west1-d\",\n      \"vCpuType\": \"shared\",\n      \"vCpu\": 2,\n      \"ramGb\": 4,\n      \"volumeType\": \"ssd\",\n      \"volumeGb\": 16\n    }\n  ],\n  \"autoscalingConfigs\": [\n    {\n      \"groupName\": \"nodegroup\",\n      \"dataCenterId\": \"aws-us-west-1\",\n      \"minimumNodes\": 1,\n      \"maximumNodes\": 2,\n      \"targetNodes\": 1,\n      \"minimumVCpus\": null,\n      \"maximumVCpus\": null,\n      \"targetVCpus\": null,\n      \"nodeGroupPriceLimit\": 5,\n      \"useOnDemandInstancesInsteadOfSpots\": true,\n      \"spotPercent\": 50,\n      \"spotMarkup\": 5,\n      \"userLabels\": [\n       {\n        \"key\": \"workload\",\n        \"value\": \"batch\"\n       }\n      ],\n      \"configurationPriorities\": [\n        {\n          \"vCpuType\": \"shared\",\n          \"vCpu\": 2,\n          \"ramGb\": 4,\n          \"volumeGb\": 16,\n          \"volumeType\": \"ssd\",\n          \"priority\": \"high\"\n        }\n      ]\n    }\n  ]\n}'\n"}]},"delete":{"tags":["Kubernetes clusters"],"summary":"Delete Kubernetes cluster","description":"This method deletes an existing managed Kubernetes cluster. Deleting a cluster will result in the termination of all the worker nodes and the master node that was part of the cluster. All the data stored on the nodes, including the container images, logs, and application data, will also be lost.\n","operationId":"DeleteKubernetesCluster","parameters":[{"$ref":"#/components/parameters/kubernetesId"}],"responses":{"200":{"description":"Successful operation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KubernetesDelete"}}}},"400":{"$ref":"#/components/responses/BadRequestError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"404":{"$ref":"#/components/responses/NotFoundError"},"500":{"$ref":"#/components/responses/InternalServerError"}},"security":[{"bearerAuth":[]}],"x-codeSamples":[{"lang":"CURL","label":"CURL","source":"curl --location --request DELETE 'https://api.emma.ms/external/v1/kubernetes/{kubernetesId}' \\\n--header 'Accept: application/json' \\\n--header 'Authorization: Bearer YOUR-BEARER-TOKEN'"}]}},"/v1/kubernetes/{kubernetesId}/nodes":{"post":{"tags":["Kubernetes clusters"],"summary":"Add worker nodes","description":"Adds one or more worker nodes to an existing Managed Kubernetes cluster without a full cluster-update request. The rest of the cluster (other nodes, autoscaling groups) is left untouched.\n\nThe cluster must be in \"ACTIVE\" status. The operation is asynchronous: the method returns 202 with the cluster payload where the new nodes appear in a transitional status (\"PROVISIONING\", then \"JOINING\"). Poll a node via GET /v1/kubernetes/{kubernetesId}/nodes/{nodeId} or the cluster GET until it reaches the \"ACTIVE\" status. To select hardware configurations for worker nodes, use the /v1/kubernetes-configs endpoint.\n\nOptional Kubernetes labels and taints are applied to the node after it joins the cluster.\n","operationId":"AddKubernetesNodes","parameters":[{"$ref":"#/components/parameters/kubernetesId"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/KubernetesNodesAddRequest"}}},"required":true},"responses":{"202":{"description":"Request accepted; the nodes are being provisioned","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KubernetesUpdateResponse"}}}},"400":{"$ref":"#/components/responses/BadRequestError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"404":{"$ref":"#/components/responses/NotFoundError"},"422":{"$ref":"#/components/responses/UnprocessableEntityError"},"500":{"$ref":"#/components/responses/InternalServerError"}},"security":[{"bearerAuth":[]}],"x-codeSamples":[{"lang":"CURL","label":"CURL","source":"curl --location 'https://api.emma.ms/external/v1/kubernetes/{kubernetesId}/nodes' \\\n--header 'Content-Type: application/json' \\\n--header 'Accept: application/json' \\\n--header 'Authorization: Bearer YOUR-BEARER-TOKEN' \\\n--data '{\n  \"nodes\": [\n    {\n      \"name\": \"worker-extra\",\n      \"dataCenterId\": \"gcp-europe-west4-a\",\n      \"vCpuType\": \"shared\",\n      \"vCpu\": 2,\n      \"ramGb\": 4,\n      \"volumeType\": \"ssd\",\n      \"volumeGb\": 16,\n      \"labels\": [ { \"key\": \"emma.ms/pool\", \"value\": \"batch\" } ],\n      \"taints\": [ { \"key\": \"dedicated\", \"value\": \"batch\", \"effect\": \"NoSchedule\" } ]\n    }\n  ]\n}'\n"}]},"delete":{"tags":["Kubernetes clusters"],"summary":"Delete worker nodes","description":"Removes one or more worker nodes from a Managed Kubernetes cluster without a full cluster-update request. The operation is asynchronous: the method returns 204 and the nodes are drained and deleted in the background. Progress is observable via the cluster GET (the nodes stay visible in a deleting status until the underlying compute instances are removed — that is when billing is released).\n\nNodes that belong to an autoscaling group cannot be removed through this endpoint — change the group configuration instead.\n","operationId":"DeleteKubernetesNodes","parameters":[{"$ref":"#/components/parameters/kubernetesId"},{"$ref":"#/components/parameters/kubernetesNodeIdsQuery"}],"responses":{"204":{"description":"Request accepted; the nodes are being deleted"},"400":{"$ref":"#/components/responses/BadRequestError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"404":{"$ref":"#/components/responses/NotFoundError"},"409":{"$ref":"#/components/responses/ConflictError"},"422":{"$ref":"#/components/responses/UnprocessableEntityError"},"500":{"$ref":"#/components/responses/InternalServerError"}},"security":[{"bearerAuth":[]}],"x-codeSamples":[{"lang":"CURL","label":"CURL","source":"curl --location --request DELETE 'https://api.emma.ms/external/v1/kubernetes/{kubernetesId}/nodes?nodeId=108380&nodeId=108381' \\\n--header 'Accept: application/json' \\\n--header 'Authorization: Bearer YOUR-BEARER-TOKEN'"}]},"patch":{"tags":["Kubernetes clusters"],"summary":"Update worker node labels and taints","description":"Replaces the Kubernetes labels and taints of existing worker nodes. The operation is synchronous and does not change the node hardware or billing: the new sets fully replace the previous ones, labels/taints present before but absent from the request are removed from the node.\n\nNodes that belong to an autoscaling group cannot be updated through this endpoint — change the group configuration instead.\n","operationId":"UpdateKubernetesNodes","parameters":[{"$ref":"#/components/parameters/kubernetesId"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/KubernetesNodesPatchRequest"}}},"required":true},"responses":{"200":{"description":"Successful operation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KubernetesUpdateResponse"}}}},"400":{"$ref":"#/components/responses/BadRequestError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"404":{"$ref":"#/components/responses/NotFoundError"},"409":{"$ref":"#/components/responses/ConflictError"},"422":{"$ref":"#/components/responses/UnprocessableEntityError"},"500":{"$ref":"#/components/responses/InternalServerError"}},"security":[{"bearerAuth":[]}],"x-codeSamples":[{"lang":"CURL","label":"CURL","source":"curl --location --request PATCH 'https://api.emma.ms/external/v1/kubernetes/{kubernetesId}/nodes' \\\n--header 'Content-Type: application/json' \\\n--header 'Accept: application/json' \\\n--header 'Authorization: Bearer YOUR-BEARER-TOKEN' \\\n--data '{\n  \"nodes\": [\n    {\n      \"id\": 108380,\n      \"labels\": [ { \"key\": \"emma.ms/pool\", \"value\": \"batch\" } ],\n      \"taints\": []\n    }\n  ]\n}'\n"}]}},"/v1/kubernetes/{kubernetesId}/nodes/{nodeId}":{"get":{"tags":["Kubernetes clusters"],"summary":"Get Kubernetes cluster node by id","description":"Returns a single worker node of a Managed Kubernetes cluster. Use this method to poll the node status after adding nodes: a new node progresses through \"PROVISIONING\" and \"JOINING\" to the \"ACTIVE\" status.\n","operationId":"GetKubernetesNode","parameters":[{"$ref":"#/components/parameters/kubernetesId"},{"$ref":"#/components/parameters/kubernetesNodeId"}],"responses":{"200":{"description":"Successful operation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KubernetesNodeGetResponse"}}}},"400":{"$ref":"#/components/responses/BadRequestError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"404":{"$ref":"#/components/responses/NotFoundError"},"500":{"$ref":"#/components/responses/InternalServerError"}},"security":[{"bearerAuth":[]}],"x-codeSamples":[{"lang":"CURL","label":"CURL","source":"curl --location 'https://api.emma.ms/external/v1/kubernetes/{kubernetesId}/nodes/{nodeId}' \\\n--header 'Accept: application/json' \\\n--header 'Authorization: Bearer YOUR-BEARER-TOKEN'"}]}},"/v1/kubernetes/{kubernetesId}/groups":{"post":{"tags":["Kubernetes clusters"],"summary":"Add autoscaling groups","description":"Adds one or more autoscaling groups to an existing Managed Kubernetes cluster without a full cluster-update request. Existing groups and worker nodes are left untouched.\n\nThe cluster must be in \"ACTIVE\" status. The operation is asynchronous: the method returns 202 with the cluster payload and the groups' nodes are provisioned in the background.\n","operationId":"AddKubernetesGroups","parameters":[{"$ref":"#/components/parameters/kubernetesId"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/KubernetesGroupsAddRequest"}}},"required":true},"responses":{"202":{"description":"Request accepted; the groups are being provisioned","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KubernetesUpdateResponse"}}}},"400":{"$ref":"#/components/responses/BadRequestError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"404":{"$ref":"#/components/responses/NotFoundError"},"409":{"$ref":"#/components/responses/ConflictError"},"422":{"$ref":"#/components/responses/UnprocessableEntityError"},"500":{"$ref":"#/components/responses/InternalServerError"}},"security":[{"bearerAuth":[]}],"x-codeSamples":[{"lang":"CURL","label":"CURL","source":"curl --location 'https://api.emma.ms/external/v1/kubernetes/{kubernetesId}/groups' \\\n--header 'Content-Type: application/json' \\\n--header 'Accept: application/json' \\\n--header 'Authorization: Bearer YOUR-BEARER-TOKEN' \\\n--data '{\n  \"groups\": [\n    {\n      \"groupName\": \"batch-asg\",\n      \"dataCenterId\": \"aws-us-west-1\",\n      \"minimumNodes\": 1,\n      \"maximumNodes\": 5,\n      \"minOnDemandCount\": 2,\n      \"useOnDemandInstancesInsteadOfSpots\": true,\n      \"configurationPriorities\": [\n        { \"vCpuType\": \"shared\", \"vCpu\": 2, \"ramGb\": 4, \"volumeGb\": 16, \"volumeType\": \"ssd\", \"priority\": \"high\" }\n      ]\n    }\n  ]\n}'\n"}]},"delete":{"tags":["Kubernetes clusters"],"summary":"Delete autoscaling groups","description":"Removes one or more autoscaling groups from a Managed Kubernetes cluster. The operation is asynchronous: the method returns 204; the groups' worker nodes are drained and deleted first, the groups themselves are removed once their nodes are physically gone.\n","operationId":"DeleteKubernetesGroups","parameters":[{"$ref":"#/components/parameters/kubernetesId"},{"$ref":"#/components/parameters/kubernetesGroupNamesQuery"}],"responses":{"204":{"description":"Request accepted; the groups are being deleted"},"400":{"$ref":"#/components/responses/BadRequestError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"404":{"$ref":"#/components/responses/NotFoundError"},"422":{"$ref":"#/components/responses/UnprocessableEntityError"},"500":{"$ref":"#/components/responses/InternalServerError"}},"security":[{"bearerAuth":[]}],"x-codeSamples":[{"lang":"CURL","label":"CURL","source":"curl --location --request DELETE 'https://api.emma.ms/external/v1/kubernetes/{kubernetesId}/groups?groupName=batch-asg' \\\n--header 'Accept: application/json' \\\n--header 'Authorization: Bearer YOUR-BEARER-TOKEN'"}]},"patch":{"tags":["Kubernetes clusters"],"summary":"Update autoscaling groups","description":"Replaces the configuration of existing autoscaling groups, matched by groupName. Groups not mentioned in the request are left untouched. Each listed item is a complete group definition — the same shape as when adding a group.\n\nThe cluster must be in \"ACTIVE\" status. The operation is asynchronous: the method returns 202 with the cluster payload; scaling to the new targets happens in the background.\n","operationId":"UpdateKubernetesGroups","parameters":[{"$ref":"#/components/parameters/kubernetesId"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/KubernetesGroupsPatchRequest"}}},"required":true},"responses":{"202":{"description":"Request accepted; the groups are being updated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KubernetesUpdateResponse"}}}},"400":{"$ref":"#/components/responses/BadRequestError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"404":{"$ref":"#/components/responses/NotFoundError"},"409":{"$ref":"#/components/responses/ConflictError"},"422":{"$ref":"#/components/responses/UnprocessableEntityError"},"500":{"$ref":"#/components/responses/InternalServerError"}},"security":[{"bearerAuth":[]}],"x-codeSamples":[{"lang":"CURL","label":"CURL","source":"curl --location --request PATCH 'https://api.emma.ms/external/v1/kubernetes/{kubernetesId}/groups' \\\n--header 'Content-Type: application/json' \\\n--header 'Accept: application/json' \\\n--header 'Authorization: Bearer YOUR-BEARER-TOKEN' \\\n--data '{\n  \"groups\": [\n    {\n      \"groupName\": \"batch-asg\",\n      \"dataCenterId\": \"aws-us-west-1\",\n      \"minimumNodes\": 1,\n      \"maximumNodes\": 8,\n      \"minOnDemandCount\": 4,\n      \"useOnDemandInstancesInsteadOfSpots\": true,\n      \"configurationPriorities\": [\n        { \"vCpuType\": \"shared\", \"vCpu\": 2, \"ramGb\": 4, \"volumeGb\": 16, \"volumeType\": \"ssd\", \"priority\": \"high\" }\n      ]\n    }\n  ]\n}'\n"}]}},"/v1/locations":{"get":{"tags":["Locations"],"summary":"Get list of locations","description":"Returns a list of geographic locations of the provider's data centers. Locations are cities or states (in the case of the USA). When creating any compute instance, you need to specify a data center. This method helps you find locations with data centers.\n","operationId":"GetLocations","parameters":[{"$ref":"#/components/parameters/locationName"},{"$ref":"#/components/parameters/projectIdQuery"}],"responses":{"200":{"description":"Successful operation","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Location"}}}}},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"500":{"$ref":"#/components/responses/InternalServerError"}},"security":[{"bearerAuth":[]}],"x-codeSamples":[{"lang":"CURL","label":"CURL","source":"curl --location 'https://api.emma.ms/external/v1/locations' \\\n--header 'Accept: application/json' \\\n--header 'Authorization: Bearer YOUR-BEARER-TOKEN'"}]}},"/v1/locations/{locationId}":{"get":{"tags":["Locations"],"summary":"Get location by ID","description":"Returns a geographic location by its ID. Locations are cities or states (in the case of the USA) where providers have data centers.\n","operationId":"GetLocation","parameters":[{"$ref":"#/components/parameters/locationId"},{"$ref":"#/components/parameters/projectIdQuery"}],"responses":{"200":{"description":"Successful operation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Location"}}}},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"404":{"$ref":"#/components/responses/NotFoundError"},"500":{"$ref":"#/components/responses/InternalServerError"}},"security":[{"bearerAuth":[]}],"x-codeSamples":[{"lang":"CURL","label":"CURL","source":"curl --location 'https://api.emma.ms/external/v1/locations/YOUR-LOCATION-ID' \\\n--header 'Accept: application/json' \\\n--header 'Authorization: Bearer YOUR-BEARER-TOKEN'"}]}},"/v1/multi-cloud-networks":{"get":{"tags":["Network"],"summary":"Get the Direct Connect multi-cloud network configuration across the EMEA, AMER, and APAC macro regions.","description":"Returns the Direct Connect multi-cloud network configuration across the EMEA, AMER, and APAC macro regions.\n","operationId":"GetMultiCloudNetworks","parameters":[{"$ref":"#/components/parameters/projectIdQuery"}],"responses":{"200":{"description":"Successful operation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MultiCloudNetwork"}}}},"400":{"$ref":"#/components/responses/BadRequestError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"500":{"$ref":"#/components/responses/InternalServerError"}},"security":[{"bearerAuth":[]}],"x-codeSamples":[{"lang":"CURL","label":"CURL","source":"curl --location 'https://api.emma.ms/external/v1/multi-cloud-networks' \\\n--header 'Accept: application/json' \\\n--header 'Authorization: Bearer YOUR-BEARER-TOKEN'"}]}},"/v1/multi-cloud-networks/actions":{"post":{"tags":["Network"],"summary":"Perform an action on multi-cloud network resources (enable/disable).","description":"Performs an action (enable/disable) over networks, network cloud connections, and cross-region connections.\n","operationId":"PostMultiCloudNetworkAction","parameters":[{"$ref":"#/components/parameters/projectIdQuery"}],"requestBody":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/McnDirectNetworkEnable"},{"$ref":"#/components/schemas/McnDirectNetworkDisable"},{"$ref":"#/components/schemas/McnDirectCloudConnectAction"},{"$ref":"#/components/schemas/McnDirectCrossConnectAction"}]}}},"required":true},"responses":{"200":{"description":"Successful operation","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/MultiCloudNetwork"}}}}},"400":{"$ref":"#/components/responses/BadRequestError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"500":{"$ref":"#/components/responses/InternalServerError"}},"security":[{"bearerAuth":[]}],"x-codeSamples":[{"lang":"CURL","label":"CURL","source":"curl --location 'https://api.emma.ms/external/v1/multi-cloud-networks/actions' \\\n--header 'Accept: application/json' \\\n--header 'Content-Type: application/json' \\\n--header 'Authorization: Bearer YOUR-BEARER-TOKEN' \\\n--data '{\n  \"networkType\": \"direct-connect\",\n  \"macroRegion\": \"emea\",\n  \"connectivityCenterId\": 1,\n  \"action\": \"enable\"\n}'"}]}},"/v1/operating-systems":{"get":{"tags":["Operating systems"],"summary":"Get list of operating systems","description":"Returns a list of available operating systems of compute instances supported by the cloud providers. The method provides detailed information about each operating system, including its family, type, version, and architecture. Use this list of the operating systems to find an OS when you create any compute instance.\n","operationId":"GetOperatingSystems","parameters":[{"$ref":"#/components/parameters/osType"},{"$ref":"#/components/parameters/osArchitecture"},{"$ref":"#/components/parameters/osVersion"},{"$ref":"#/components/parameters/projectIdQuery"}],"responses":{"200":{"description":"Successful operation","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/OperatingSystem"}}}}},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"500":{"$ref":"#/components/responses/InternalServerError"}},"security":[{"bearerAuth":[]}],"x-codeSamples":[{"lang":"CURL","label":"CURL","source":"curl --location 'https://api.emma.ms/external/v1/operating-systems' \\\n--header 'Accept: application/json' \\\n--header 'Authorization: Bearer YOUR-BEARER-TOKEN'"}]}},"/v1/operating-systems/{operatingSystemId}":{"get":{"tags":["Operating systems"],"summary":"Get operating system by ID","description":"Returns an operating system (supported by the cloud providers) by its ID. The method provides detailed information about each operating system, including its family, type, version, and architecture.\n","operationId":"GetOperatingSystem","parameters":[{"$ref":"#/components/parameters/operatingSystemId"},{"$ref":"#/components/parameters/projectIdQuery"}],"responses":{"200":{"description":"Successful operation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperatingSystem"}}}},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"404":{"$ref":"#/components/responses/NotFoundError"},"500":{"$ref":"#/components/responses/InternalServerError"}},"security":[{"bearerAuth":[]}],"x-codeSamples":[{"lang":"CURL","label":"CURL","source":"curl --location 'https://api.emma.ms/external/v1/operating-systems/YOUR-OPERATING-SYSTEM-ID' \\\n--header 'Accept: application/json' \\\n--header 'Authorization: Bearer YOUR-BEARER-TOKEN'"}]}},"/v1/providers":{"get":{"tags":["Providers"],"summary":"Get list of cloud providers","description":"Returns a list of cloud providers. Cloud service provider is a third-party company that provides scalable computing resources that users can access over emma platform. When you create any computing resources in emma you create them in the provider's datacenters.\nProvider is necessary when you select a data center for creating compute instances.\n","operationId":"GetProviders","parameters":[{"$ref":"#/components/parameters/providerName"},{"$ref":"#/components/parameters/projectIdQuery"}],"responses":{"200":{"description":"Successful operation","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Provider"}}}}},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"500":{"$ref":"#/components/responses/InternalServerError"}},"security":[{"bearerAuth":[]}],"x-codeSamples":[{"lang":"CURL","label":"CURL","source":"curl --location 'https://api.emma.ms/external/v1/providers?providerName=%3Cstring%3E' \\\n--header 'Accept: application/json' \\\n--header 'Authorization: Bearer YOUR-BEARER-TOKEN'"}]}},"/v1/providers/{providerId}":{"get":{"tags":["Providers"],"summary":"Get cloud provider by ID","description":"Returns a cloud provider by provider ID. Cloud service provider is a third-party company that provides scalable computing resources that users can access over emma platform.\nProvider is necessary when you select a data center for creating compute instances.\n","operationId":"GetProvider","parameters":[{"$ref":"#/components/parameters/providerId"},{"$ref":"#/components/parameters/projectIdQuery"}],"responses":{"200":{"description":"Successful operation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Provider"}}}},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"404":{"$ref":"#/components/responses/NotFoundError"},"500":{"$ref":"#/components/responses/InternalServerError"}},"security":[{"bearerAuth":[]}],"x-codeSamples":[{"lang":"CURL","label":"CURL","source":"curl --location 'https://api.emma.ms/external/v1/providers/{providerId}' \\\n--header 'Accept: application/json'"}]}},"/v1/security-groups":{"get":{"tags":["Security groups"],"summary":"Get list of security groups","description":"Returns a list of security groups.\nA security group refers to a set of rules that determine what network traffic is allowed to enter or leave a particular compute instance. It acts as a virtual firewall, controlling inbound and outbound traffic based on predefined rules.\nSecurity groups operate based on predefined rules that allow traffic based on specified criteria, such as source IP address, destination IP address, port number, and protocol.\n","operationId":"GetSecurityGroups","parameters":[{"$ref":"#/components/parameters/projectIdQuery"}],"responses":{"200":{"description":"Successful operation","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/SecurityGroup"}}}}},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"404":{"$ref":"#/components/responses/NotFoundError"},"500":{"$ref":"#/components/responses/InternalServerError"}},"security":[{"bearerAuth":[]}],"x-codeSamples":[{"lang":"CURL","label":"CURL","source":"curl --location 'https://api.emma.ms/external/v1/security-groups' \\\n--header 'Accept: application/json' \\\n--header 'Authorization: Bearer YOUR-BEARER-TOKEN'"}]},"post":{"tags":["Security groups"],"summary":"Create security group","description":"This method creates a security group.\n\nA security group refers to a set of rules that determine what network traffic is allowed to enter or leave a particular compute instance. It acts as a virtual firewall, controlling inbound and outbound traffic based on predefined rules.\n\nSecurity groups operate based on predefined rules that allow traffic based on specified criteria, such as source IP address, destination IP address, port number, and protocol.\n\nWhen creating a security group, provide its name and a set of inbound and outbound rules. You can only define rules that allow traffic, not deny it. All traffic is denied except for explicitly allowed traffic.\n\nSecurity groups control TCP, UDP and ICMP protocols, or all the selected protocols at once.\n\nBoth IPv4 and IPv6 addresses are supported in the 'ipRange' field.\n\nAll traffic in the selected protocol is allowed if the IP range in a rule is set to `0.0.0.0/0`.\n","operationId":"SecurityGroupCreate","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SecurityGroupRequest"}}}},"responses":{"200":{"description":"Successful operation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SecurityGroup"}}}},"400":{"$ref":"#/components/responses/BadRequestError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"404":{"$ref":"#/components/responses/NotFoundError"},"500":{"$ref":"#/components/responses/InternalServerError"}},"security":[{"bearerAuth":[]}],"x-codeSamples":[{"lang":"CURL","label":"CURL","source":"curl --location 'https://api.emma.ms/external/v1/security-groups' \\\n--header 'Content-Type: application/json' \\\n--header 'Accept: application/json' \\\n--header 'Authorization: Bearer YOUR-BEARER-TOKEN' \\\n--data '{\n  \"name\": \"new_default\",\n  \"rules\": [\n    {\n      \"direction\": \"INBOUND\",\n      \"protocol\": \"TCP\",\n      \"ports\": \"1-30321\",\n      \"ipRange\": \"0.0.0.0/0\"\n    }\n  ]\n}'"}]}},"/v1/security-groups/{securityGroupId}":{"get":{"tags":["Security groups"],"summary":"Get security group by ID","description":"Returns a security group by its ID.\n\nA security group refers to a set of rules that determine what network traffic is allowed to enter or leave a particular compute instance. It acts as a virtual firewall, controlling inbound and outbound traffic based on predefined rules.\n\nSecurity groups operate based on predefined rules that allow traffic based on specified criteria, such as source IP address, destination IP address, port number, and protocol.\n","operationId":"GetSecurityGroup","parameters":[{"$ref":"#/components/parameters/securityGroupId"},{"$ref":"#/components/parameters/projectIdQuery"}],"responses":{"200":{"description":"Successful operation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SecurityGroup"}}}},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"404":{"$ref":"#/components/responses/NotFoundError"},"500":{"$ref":"#/components/responses/InternalServerError"}},"security":[{"bearerAuth":[]}],"x-codeSamples":[{"lang":"CURL","label":"CURL","source":"curl --location 'https://api.emma.ms/external/v1/security-groups/{securityGroupId}' \\\n--header 'Accept: application/json' \\\n--header 'Authorization: Bearer YOUR-BEARER-TOKEN'"}]},"put":{"tags":["Security groups"],"summary":"Update security group","description":"This method updates a security group.\n\nA security group refers to a set of rules that determine what network traffic is allowed to enter or leave a particular compute instance. It acts as a virtual firewall, controlling inbound and outbound traffic based on predefined rules.\n\nSecurity groups operate based on predefined rules that allow traffic based on specified criteria, such as source IP address, destination IP address, port number, and protocol.\n\nWhen editing a security group, you can add and delete the inbound and outbound rules. You can only define rules that allow traffic, not deny it. All traffic is denied except for explicitly allowed traffic.\n\nSecurity groups control TCP, UDP and ICMP protocols, or all the selected protocols at once.\n\nBoth IPv4 and IPv6 addresses are supported in the 'ipRange' field.\n\nAll traffic in the selected protocol is allowed if the IP range in a rule is set to `0.0.0.0/0`.\n","operationId":"SecurityGroupUpdate","parameters":[{"$ref":"#/components/parameters/securityGroupId"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SecurityGroupRequest"}}}},"responses":{"200":{"description":"Successful operation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SecurityGroup"}}}},"400":{"$ref":"#/components/responses/BadRequestError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"404":{"$ref":"#/components/responses/NotFoundError"},"409":{"$ref":"#/components/responses/ConflictError"},"500":{"$ref":"#/components/responses/InternalServerError"}},"security":[{"bearerAuth":[]}],"x-codeSamples":[{"lang":"CURL","label":"CURL","source":"curl --location --request PUT 'https://api.emma.ms/external/v1/security-groups/{securityGroupId}' \\\n--header 'Content-Type: application/json' \\\n--header 'Accept: application/json' \\\n--header 'Authorization: Bearer YOUR-BEARER-TOKEN' \\\n--data '{\n  \"name\": \"new_default\",\n  \"rules\": [\n    {\n      \"direction\": \"INBOUND\",\n      \"protocol\": \"TCP\",\n      \"ipRange\": \"1-30321\",\n      \"ports\": \"0.0.0.0/0\"\n    }\n  ]\n}'"}]},"delete":{"tags":["Security groups"],"summary":"Delete security group","description":"This method deletes a security group.\n\nA security group refers to a set of rules that determine what network traffic is allowed to enter or leave a particular compute instance. It acts as a virtual firewall, controlling inbound and outbound traffic based on predefined rules.\n\nSecurity groups operate based on predefined rules that allow traffic based on specified criteria, such as source IP address, destination IP address, port number, and protocol.\n\nYou can't delete a security group if any compute instance is using this security group. To delete a security group, first remove a compute instance from the security group using this method: `POST /v1/security-groups/{securityGroupId}/instances`\n","operationId":"SecurityGroupDelete","parameters":[{"$ref":"#/components/parameters/securityGroupId"}],"responses":{"200":{"description":"Successful operation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SecurityGroup"}}}},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"404":{"$ref":"#/components/responses/NotFoundError"},"409":{"$ref":"#/components/responses/ConflictError"},"500":{"$ref":"#/components/responses/InternalServerError"}},"security":[{"bearerAuth":[]}],"x-codeSamples":[{"lang":"CURL","label":"CURL","source":"curl --location --request DELETE 'https://api.emma.ms/external/v1/security-groups/{securityGroupId}' \\\n--header 'Accept: application/json' \\\n--header 'Authorization: Bearer YOUR-BEARER-TOKEN'"}]}},"/v1/security-groups/{securityGroupId}/instances":{"get":{"tags":["Security groups"],"summary":"Get instances in security group","description":"Returns a list of compute instances using the selected security group.\n\nA security group refers to a set of rules that determine what network traffic is allowed to enter or leave a particular compute instance. It acts as a virtual firewall, controlling inbound and outbound traffic based on predefined rules.\n\nSecurity groups operate based on predefined rules that allow traffic based on specified criteria, such as source IP address, destination IP address, port number, and protocol.\n","operationId":"SecurityGroupInstances","parameters":[{"$ref":"#/components/parameters/securityGroupId"},{"$ref":"#/components/parameters/projectIdQuery"}],"responses":{"200":{"description":"Successful operation","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Vm"}}}}},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"404":{"$ref":"#/components/responses/NotFoundError"},"500":{"$ref":"#/components/responses/InternalServerError"}},"security":[{"bearerAuth":[]}],"x-codeSamples":[{"lang":"CURL","label":"CURL","source":"curl --location 'https://api.emma.ms/external/v1/security-groups/{securityGroupId}/instances' \\\n--header 'Accept: application/json' \\\n--header 'Authorization: Bearer YOUR-BEARER-TOKEN'"}]},"post":{"tags":["Security groups"],"summary":"Add instance to security group","description":"This method adds a compute instance to the selected security group.\n\nA security group refers to a set of rules that determine what network traffic is allowed to enter or leave a particular compute instance. It acts as a virtual firewall, controlling inbound and outbound traffic based on predefined rules.\n\nSecurity groups operate based on predefined rules that allow traffic based on specified criteria, such as source IP address, destination IP address, port number, and protocol.\n\nAny compute instance always uses some security group since its creation. Adding a compute instance to a security group effectively means moving it from one security group to another. When adding a compute instance to a new security group, it is automatically removed from the previous security group.\n","operationId":"SecurityGroupInstanceAdd","parameters":[{"$ref":"#/components/parameters/securityGroupId"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SecurityGroupInstanceAdd"}}}},"responses":{"200":{"description":"Successful operation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Vm"}}}},"400":{"$ref":"#/components/responses/BadRequestError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"404":{"$ref":"#/components/responses/NotFoundError"},"422":{"$ref":"#/components/responses/UnprocessableEntityError"},"500":{"$ref":"#/components/responses/InternalServerError"}},"security":[{"bearerAuth":[]}],"x-codeSamples":[{"lang":"CURL","label":"CURL","source":"curl --location 'https://api.emma.ms/external/v1/security-groups/{securityGroupId}/instances' \\\n--header 'Content-Type: application/json' \\\n--header 'Accept: application/json' \\\n--header 'Authorization: Bearer YOUR-BEARER-TOKEN' \\\n--data '{\n  \"instanceId\": \"8003\"\n}'"}]}},"/v1/spot-instances":{"get":{"tags":["Spot instances"],"summary":"Get list of spot instances","description":"Returns a list of spot instances. \nA Spot Instance is a specialized compute instance that allows you to access and utilize unused instance capacity at a steeply discounted rate.  Spot price is charged on an hourly basis.\n","operationId":"GetSpots","parameters":[{"$ref":"#/components/parameters/projectIdQuery"}],"responses":{"200":{"description":"Successful operation","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/SpotVm"}}}}},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"description":"Forbidden - Access is denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"}}}},"500":{"$ref":"#/components/responses/InternalServerError"}},"security":[{"bearerAuth":[]}],"x-codeSamples":[{"lang":"CURL","label":"CURL","source":"curl --location 'https://api.emma.ms/external/v1/spot-instances' \\\n--header 'Accept: application/json' \\\n--header 'Authorization: Bearer YOUR-BEARER-TOKEN'"}]},"post":{"tags":["Spot instances"],"summary":"Create spot instance","description":"This method creates a spot instance according to the specified parameters.\n\nA Spot Instance is a specialized compute instance that allows you to access and utilize unused instance capacity at a steeply discounted rate. Spot price is charged on an hourly basis.\n\nTo create a spot instance, follow these steps:\n\n1. Select a data center using the `/v1/data-centers` endpoint. The data center determines the provider and location of the spot instance.\n\n2. Select an available hardware configuration for the spot instance using the `/v1/spots-configs` endpoint.\n\nTo create a GPU spot instance, include `acceleratorTypeId` and `accelerators` fields in the request body. Obtain these values from the selected configuration in the GET /v1/spots-configs response.\n\n3. Select an SSH key for the Linux spot instance using the `/v1/ssh-keys` endpoint.\n\n4. Select an operating system using the `/v1/operating-systems` endpoint.\n\n5. Choose one of the cloud network types: _multi-cloud_, _isolated,_ or _default_. Choose the _multi-cloud_ network type if you need to connect compute instances from different providers.\n       \nYou may choose not to specify a security group. In this case, the spot instance will be added to the default security group.\n        \nA `price` field of a spot instance is required. \n\nThe spot instance market operates on a bidding system. Your specified price acts as your bid in this market. If your bid is higher than the current spot price, your instance request will likely be fulfilled. However, if the market price exceeds your bid, your instance may not be launched or could be terminated if already running.\n","operationId":"SpotCreate","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SpotCreate"}}}},"responses":{"200":{"description":"Spot instance created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SpotVm"}}}},"400":{"$ref":"#/components/responses/BadRequestError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"description":"Forbidden - Access is denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"}}}},"422":{"$ref":"#/components/responses/UnprocessableEntityError"},"500":{"$ref":"#/components/responses/InternalServerError"}},"security":[{"bearerAuth":[]}],"x-codeSamples":[{"lang":"CURL","label":"CURL","source":"curl --location 'https://api.emma.ms/external/v1/spot-instances' \\\n--header 'Content-Type: application/json' \\\n--header 'Accept: application/json' \\\n--header 'Authorization: Bearer YOUR-BEARER-TOKEN' \\\n--data '{\n  \"name\": \"spot-default\",\n  \"dataCenterId\": \"aws-us-west-1\",\n  \"osId\": \"35\",\n  \"cloudNetworkType\": \"multi-cloud\",\n  \"vCpuType\": \"shared\",\n  \"vCpu\": \"4\",\n  \"ramGb\": \"1\",\n  \"volumeType\": \"ssd\",\n  \"volumeGb\": \"16\",\n  \"sshKeyId\": \"124\",\n  \"securityGroupId\": \"208\",\n  \"price\": \"0.002635\"\n}'"},{"lang":"CURL","label":"CURL (GPU)","source":"curl --location 'https://api.emma.ms/external/v1/spot-instances' \\\n--header 'Content-Type: application/json' \\\n--header 'Accept: application/json' \\\n--header 'Authorization: Bearer YOUR-BEARER-TOKEN' \\\n--data '{\n  \"name\": \"spot-gpu-default\",\n  \"dataCenterId\": \"aws-us-west-1\",\n  \"osId\": \"35\",\n  \"cloudNetworkType\": \"multi-cloud\",\n  \"vCpuType\": \"shared\",\n  \"vCpu\": \"4\",\n  \"ramGb\": \"1\",\n  \"volumeType\": \"ssd\",\n  \"volumeGb\": \"16\",\n  \"sshKeyId\": \"124\",\n  \"securityGroupId\": \"208\",\n  \"acceleratorTypeId\": \"7bf9d828-e3e8-496f-9901-9045640bb287\",\n  \"accelerators\": 1,\n  \"price\": \"0.002635\"\n}'"}]}},"/v1/spot-instances/{spotInstanceId}":{"get":{"tags":["Spot instances"],"summary":"Get spot instance by ID","description":"Returns a spot instance by its ID.\n\nA Spot Instance is a specialized compute instance that allows you to access and utilize unused instance capacity at a steeply discounted rate.  Spot price is charged on an hourly basis.\n","operationId":"GetSpot","parameters":[{"$ref":"#/components/parameters/spotInstanceId"},{"$ref":"#/components/parameters/projectIdQuery"}],"responses":{"200":{"description":"Successful operation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SpotVm"}}}},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"description":"Forbidden - Access is denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"}}}},"404":{"$ref":"#/components/responses/NotFoundError"},"500":{"$ref":"#/components/responses/InternalServerError"}},"security":[{"bearerAuth":[]}],"x-codeSamples":[{"lang":"CURL","label":"CURL","source":"curl --location 'https://api.emma.ms/external/v1/spot-instances/{spotInstanceId}' \\\n--header 'Accept: application/json' \\\n--header 'Authorization: Bearer YOUR-BEARER-TOKEN'"}]},"delete":{"tags":["Spot instances"],"summary":"Delete spot instance","description":"This method deletes a spot instance.\n","operationId":"SpotDelete","parameters":[{"$ref":"#/components/parameters/spotInstanceId"}],"responses":{"200":{"description":"Successful operation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SpotVm"}}}},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"description":"Forbidden - Access is denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"}}}},"404":{"$ref":"#/components/responses/NotFoundError"},"500":{"$ref":"#/components/responses/InternalServerError"}},"security":[{"bearerAuth":[]}],"x-codeSamples":[{"lang":"CURL","label":"CURL","source":"curl --location --request DELETE 'https://api.emma.ms/external/v1/spot-instances/{spotInstanceId}' \\\n--header 'Accept: application/json' \\\n--header 'Authorization: Bearer YOUR-BEARER-TOKEN'"}]}},"/v1/spot-instances/{spotInstanceId}/actions":{"post":{"tags":["Spot instances"],"summary":"Perform actions with a spot instance","description":"This method performs several actions with a spot instance:\n  - Start a spot instance\n  - Shutdown a spot instance\n  - Reboot a spot instance\n  - Change price for a spot instance. The price change action allows only an increase in price.\n  - Rename a spot instance\n","operationId":"SpotActions","parameters":[{"$ref":"#/components/parameters/spotInstanceId"}],"requestBody":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/SpotReboot"},{"$ref":"#/components/schemas/SpotStart"},{"$ref":"#/components/schemas/SpotShutdown"},{"$ref":"#/components/schemas/SpotChangePrice"},{"$ref":"#/components/schemas/SpotRename"}]}}}},"responses":{"200":{"description":"Successful operation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SpotVm"}}}},"400":{"$ref":"#/components/responses/BadRequestError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"description":"Forbidden - Access is denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"}}}},"404":{"$ref":"#/components/responses/NotFoundError"},"422":{"$ref":"#/components/responses/UnprocessableEntityError"},"500":{"$ref":"#/components/responses/InternalServerError"}},"security":[{"bearerAuth":[]}],"x-codeSamples":[{"lang":"CURL","label":"CURL","source":"curl --location 'https://api.emma.ms/external/v1/spot-instances/{spotInstanceId}/actions' \\\n--header 'Content-Type: application/json' \\\n--header 'Accept: application/json' \\\n--header 'Authorization: Bearer YOUR-BEARER-TOKEN' \\\n--data '{\n  \"action\": \"reboot\"\n}'"}]}},"/v1/ssh-keys":{"get":{"tags":["SSH keys"],"summary":"Get list of SSH keys","description":"Returns a list of the SSH keys for access to Linux compute instances. You can use these keys to create compute instances. \n\nThe list only contains the SSH keys created by the current Service application that you use to send a request. \n\nYou can't retrieve a list of SSH keys created by other users and applications.\n","operationId":"SshKeys","responses":{"200":{"description":"Successful operation","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/SshKey"}}}}},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"500":{"$ref":"#/components/responses/InternalServerError"}},"security":[{"bearerAuth":[]}],"x-codeSamples":[{"lang":"CURL","label":"CURL","source":"curl --location 'https://api.emma.ms/external/v1/ssh-keys' \\\n--header 'Accept: application/json' \\\n--header 'Authorization: Bearer YOUR-BEARER-TOKEN'"}]},"post":{"tags":["SSH keys"],"summary":"Create or import SSH key","description":"This method creates an SSH key that can be used for Linux compute instance creation. An SSH key can be created in two ways: generated by emma or imported by the user.\n\nIf you want to **generate** a key, specify two fields: name and keyType (RSA or ED25519). The key will be generated, and you will receive a private key in the response. The private key will be shown only once, so copy and save it to connect to the Linux compute instances.\n\nIf you want to **import** an existing SSH key, specify two fields: name and key. In the key field, insert your public SSH key as a string. It will be imported.\n","operationId":"SshKeysCreateImport","requestBody":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/SshKeyCreate"},{"$ref":"#/components/schemas/SshKeyImport"}]}}}},"responses":{"201":{"description":"Successful operation","content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/SshKey"},{"$ref":"#/components/schemas/SshKeyGenerated"}]}}}},"400":{"$ref":"#/components/responses/BadRequestError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"description":"Forbidden - Access is denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"}}}},"500":{"$ref":"#/components/responses/InternalServerError"}},"security":[{"bearerAuth":[]}],"x-codeSamples":[{"lang":"CURL","label":"CURL","source":"curl --location 'https://api.emma.ms/external/v1/ssh-keys' \\\n--header 'Content-Type: application/json' \\\n--header 'Accept: application/json' \\\n--header 'Authorization: Bearer YOUR-BEARER-TOKEN' \\\n--data '{\n  \"name\": \"mykey\",\n  \"keyType\": \"RSA\"\n}'"}]}},"/v1/ssh-keys/{sshKeyId}":{"get":{"tags":["SSH keys"],"summary":"Get SSH key by id","description":"Returns an SSH key by ID for access to Linux compute instances. You can only retrieve the SSH keys created by the current Service application that you use to send a request. You can't retrieve SSH keys created by other users and applications.\n","operationId":"GetSshKey","parameters":[{"$ref":"#/components/parameters/sshKeyId"}],"responses":{"200":{"description":"Successful operation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SshKey"}}}},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"404":{"$ref":"#/components/responses/NotFoundError"},"500":{"$ref":"#/components/responses/InternalServerError"}},"security":[{"bearerAuth":[]}],"x-codeSamples":[{"lang":"CURL","label":"CURL","source":"curl --location 'https://api.emma.ms/external/v1/ssh-keys/{sshKeyId}' \\\n--header 'Accept: application/json' \\\n--header 'Authorization: Bearer YOUR-BEARER-TOKEN'"}]},"put":{"tags":["SSH keys"],"summary":"Update SSH keys","description":"This method updates a name of an existing SSH-key. You can only update an SSH key created by the current Service application that you use to send a request. You can't update SSH keys created by other users and applications.\n","operationId":"SshKeyUpdate","parameters":[{"$ref":"#/components/parameters/sshKeyId"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SshKeyUpdate"}}}},"responses":{"200":{"description":"Successful operation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SshKey"}}}},"400":{"$ref":"#/components/responses/BadRequestError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"404":{"$ref":"#/components/responses/NotFoundError"},"500":{"$ref":"#/components/responses/InternalServerError"}},"security":[{"bearerAuth":[]}],"x-codeSamples":[{"lang":"CURL","label":"CURL","source":"curl --location --request PUT 'https://api.emma.ms/external/v1/ssh-keys/{sshKeyId}' \\\n--header 'Content-Type: application/json' \\\n--header 'Accept: application/json' \\\n--header 'Authorization: Bearer YOUR-BEARER-TOKEN' \\\n--data '{\n  \"name\": \"mykey\"\n}'"}]},"delete":{"tags":["SSH keys"],"summary":"Delete SSH keys","description":"This method deletes a SSH key. You can only delete an SSH key created by the current Service application that you use to send a request. You can't delete SSH keys created by other users and applications.\n","operationId":"SshKeyDelete","parameters":[{"$ref":"#/components/parameters/sshKeyId"}],"responses":{"204":{"description":"Successful operation"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"404":{"$ref":"#/components/responses/NotFoundError"},"500":{"$ref":"#/components/responses/InternalServerError"}},"security":[{"bearerAuth":[]}],"x-codeSamples":[{"lang":"CURL","label":"CURL","source":"curl --location --request DELETE 'https://api.emma.ms/external/v1/ssh-keys/{sshKeyId}' \\\n--header 'Accept: application/json' \\\n--header 'Authorization: Bearer YOUR-BEARER-TOKEN'"}]}},"/v1/subnetworks":{"get":{"tags":["Subnetworks"],"summary":"Get list of subnetworks","description":"Returns a list of subnetworks within the project.\n","operationId":"GetSubnetworks","parameters":[{"$ref":"#/components/parameters/projectIdQuery"}],"responses":{"200":{"description":"Successful operation","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Subnetwork"}}}}},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"description":"Forbidden - Access is denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"}}}},"500":{"$ref":"#/components/responses/InternalServerError"}},"security":[{"bearerAuth":[]}],"x-codeSamples":[{"lang":"CURL","label":"CURL","source":"curl --location --request 'https://api.emma.ms/external/v1/subnetworks' \\\n--header 'Accept: application/json' \\\n--header 'Authorization: Bearer YOUR-BEARER-TOKEN'"}]},"post":{"tags":["Subnetworks"],"summary":"Create subnetwork","description":"This method creates a subnetwork.\nTo create a subnetwork, consider the following parameters:\n1. Select a data center using the `/v1/data-centers` endpoint. The data center determines the provider and location of the subnetwork.\n2. Specify the IP address range (optional). Subnetwork prefix values can have exceptions depending on that provider and must be in ranges: 10.0.0.0 - 10.255.255.255, 172.16.0.0 - 172.31.255.255, 192.168.0.0 - 192.168.255.255.\n\nSpecific conditions are depending on the provider:\n- GCP: 2 first and 2 last addresses are reserved by the provider. Notice that VMs in different GCP subnetworks can be connected to each other.\n- Azure: 4 first and the last ones are reserved by the provider.\n- AWS: 3 first and the last one are reserved by the provider.\n\n3. Specify the network size (required). Network size must be: for DigitalOcean /28-/16, for Gcore /24-/16, for Azure /29 - /2, for AWS /28 - /16\n","operationId":"SubnetworkCreate","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubnetworkCreate"}}}},"responses":{"200":{"description":"Successful operation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Subnetwork"}}}},"400":{"$ref":"#/components/responses/BadRequestError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"description":"Forbidden - Access is denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"}}}},"500":{"$ref":"#/components/responses/InternalServerError"}},"security":[{"bearerAuth":[]}],"x-codeSamples":[{"lang":"CURL","label":"CURL","source":"curl --location 'https://api.emma.ms/external/v1/subnetworks' \\\n--header 'Content-Type: application/json' \\\n--header 'Accept: application/json' \\\n--header 'Authorization: Bearer YOUR_BEARER_TOKEN' \\\n  --data '{\n  \"dataCenterId\": \"gcore-frankfurt\",\n  \"subnetworkSize\": \"24\",\n  \"name\": \"subnetworks-name\",\n  \"subnetworkPrefix\": \"192.168.0.0\"\n}'"}]}},"/v1/subnetworks/{subnetworkId}":{"get":{"tags":["Subnetworks"],"summary":"Get subnetwork by ID","description":"Returns a subnetwork by its ID.\n","operationId":"GetSubnetwork","parameters":[{"$ref":"#/components/parameters/subnetworkId"},{"$ref":"#/components/parameters/projectIdQuery"}],"responses":{"200":{"description":"Successful operation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Subnetwork"}}}},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"description":"Forbidden - Access is denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"}}}},"404":{"$ref":"#/components/responses/NotFoundError"},"500":{"$ref":"#/components/responses/InternalServerError"}},"security":[{"bearerAuth":[]}],"x-codeSamples":[{"lang":"CURL","label":"CURL","source":"curl --location 'https://api.emma.ms/external/v1/subnetworks/{subnetworkId}' \\\n--header 'Accept: application/json' \\\n--header 'Authorization: Bearer YOUR_BEARER_TOKEN'"}]},"put":{"tags":["Subnetworks"],"summary":"Update subnetwork","description":"This method updates a subnetwork. Only the subnetwork name can be updated.\n","operationId":"SubnetworkUpdate","parameters":[{"$ref":"#/components/parameters/subnetworkId"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubnetworkEdit"}}}},"responses":{"200":{"description":"Successful operation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Subnetwork"}}}},"400":{"$ref":"#/components/responses/BadRequestError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"description":"Forbidden - Access is denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"}}}},"404":{"$ref":"#/components/responses/NotFoundError"},"500":{"$ref":"#/components/responses/InternalServerError"}},"security":[{"bearerAuth":[]}],"x-codeSamples":[{"lang":"CURL","label":"CURL","source":"curl --location --request PUT 'https://api.emma.ms/external/v1/subnetworks/{subnetworkId}' \\\n--header 'Content-Type: application/json' \\\n--header 'Accept: application/json' \\\n--header 'Authorization: Bearer YOUR_BEARER_TOKEN'\n--data '{\n  \"name\": \"subnetwork-name\"\n}'"}]},"delete":{"tags":["Subnetworks"],"summary":"Delete subnetwork","description":"This method deletes a subnetwork.\n","operationId":"SubnetworkDelete","parameters":[{"$ref":"#/components/parameters/subnetworkId"}],"responses":{"200":{"description":"Successful operation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Subnetwork"}}}},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"description":"Forbidden - Access is denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"}}}},"404":{"$ref":"#/components/responses/NotFoundError"},"500":{"$ref":"#/components/responses/InternalServerError"}},"security":[{"bearerAuth":[]}],"x-codeSamples":[{"lang":"CURL","label":"CURL","source":"curl --location --request DELETE 'https://api.emma.ms/external/v1/subnetworks/{subnetworkId}' \\\n--header 'Accept: application/json' \\\n--header 'Authorization: Bearer YOUR_BEARER_TOKEN'"}]}},"/v1/vms":{"get":{"tags":["Virtual machines"],"summary":"Get list of virtual machines","description":"Returns a list of virtual machines within the project.","operationId":"GetVms","parameters":[{"$ref":"#/components/parameters/projectIdQuery"}],"responses":{"200":{"description":"Successful operation","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Vm"}}}}},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"description":"Forbidden - Access is denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"}}}},"500":{"$ref":"#/components/responses/InternalServerError"}},"security":[{"bearerAuth":[]}],"x-codeSamples":[{"lang":"CURL","label":"CURL","source":"curl --location 'https://api.emma.ms/external/v1/vms' \\\n--header 'Accept: application/json' \\\n--header 'Authorization: Bearer YOUR-BEARER-TOKEN'"}]},"post":{"tags":["Virtual machines"],"summary":"Create virtual machine","description":"This method creates a virtual machine according to the specified parameters.\n\nTo create a virtual machine, follow these steps:\n\n1. Select a data center using the `/v1/data-centers` endpoint. The data center determines the provider and location of the virtual machine.\n\n2. Select an available hardware configuration for the virtual machine using the `/v1/vms-configs` endpoint.\n\n3. Select an SSH key for the Linux virtual machine using the `/v1/ssh-keys` endpoint.\n\n4. Select an operating system using the `/v1/operating-systems` endpoint.\n\n5. Choose one of the cloud network types: _multi-cloud_, _isolated,_ or _default_. Choose the _multi-cloud_ network type if you need to connect compute instances from different providers.\n\nProviders support the following types of networks:\n- AWS - multi-cloud, isolated, default\n- Azure - multi-cloud, isolated, default\n- DigitalOcean - default\n- Gcore - default\n- GCP - multi-cloud, isolated, default\n- IONOS - default\n- OVHCloud - default\n- VMware - default\n- Nebius - default\n- Hetzner - default\n\nYou may choose not to specify a security group. In this case, the virtual machine will be added to the default security group.\n","operationId":"VmCreate","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VmCreate"}}}},"responses":{"200":{"description":"Virtual machine created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Vm"}}}},"400":{"$ref":"#/components/responses/BadRequestError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"description":"Forbidden - Access is denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"}}}},"422":{"$ref":"#/components/responses/UnprocessableEntityError"},"500":{"$ref":"#/components/responses/InternalServerError"}},"security":[{"bearerAuth":[]}],"x-codeSamples":[{"lang":"CURL","label":"CURL","source":"curl --location 'https://api.emma.ms/external/v1/vms' \\\n--header 'Content-Type: application/json' \\\n--header 'Accept: application/json' \\\n--header 'Authorization: Bearer YOUR-BEARER-TOKEN' \\\n--data '{\n  \"name\": \"vm-test1\",\n  \"dataCenterId\": \"aws-us-west-1\",\n  \"osId\": 5,\n  \"cloudNetworkType\": \"multi-cloud\",\n  \"vCpuType\": \"shared\",\n  \"vCpu\": 2,\n  \"ramGb\": 1,\n  \"volumeType\": \"ssd\",\n  \"volumeGb\": 16,\n  \"sshKeyId\": 124,\n  \"securityGroupId\": 208,\n  \"password\": \"Hdjfru345djg!\"\n}'"}]}},"/v1/vms/{vmId}":{"get":{"tags":["Virtual machines"],"summary":"Get virtual machine by id","description":"This endpoint returns a virtual machine by ID.\n","operationId":"GetVm","parameters":[{"$ref":"#/components/parameters/vmId"},{"$ref":"#/components/parameters/projectIdQuery"}],"responses":{"200":{"description":"Successful operation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Vm"}}}},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"description":"Forbidden - Access is denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"}}}},"404":{"$ref":"#/components/responses/NotFoundError"},"500":{"$ref":"#/components/responses/InternalServerError"}},"security":[{"bearerAuth":[]}],"x-codeSamples":[{"lang":"CURL","label":"CURL","source":"curl --location 'https://api.emma.ms/external/v1/vms/{vmId}' \\\n--header 'Accept: application/json' \\\n--header 'Authorization: Bearer YOUR-BEARER-TOKEN'"}]},"delete":{"tags":["Virtual machines"],"summary":"Delete virtual machine","description":"This method deletes a virtual machine.\n","operationId":"VmDelete","parameters":[{"$ref":"#/components/parameters/vmId"}],"responses":{"200":{"description":"Successful operation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Vm"}}}},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"description":"Forbidden - Access is denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"}}}},"404":{"$ref":"#/components/responses/NotFoundError"},"500":{"$ref":"#/components/responses/InternalServerError"}},"security":[{"bearerAuth":[]}],"x-codeSamples":[{"lang":"CURL","label":"CURL","source":"curl --location --request DELETE 'https://api.emma.ms/external/v1/vms/{vmId}' \\\n--header 'Accept: application/json' \\\n--header 'Authorization: Bearer YOUR-BEARER-TOKEN'"}]}},"/v1/vms/{vmId}/actions":{"post":{"tags":["Virtual machines"],"summary":"Perform actions with a virtual machine","description":"This method performs several actions with a virtual machine:\n  - Start a virtual machine\n  - Shutdown a virtual machine\n  - Reboot a virtual machine\n  - Transfer a virtual machine\n  - Clone a virtual machine\n  - Edit compute resources of a virtual machine (for DigitalOcean, OVH, Hetzner virtual machine resize use `VmEditHardware` option only)\n  - Edit compute resources and system disk of a virtual machine\n  - Attach data volume to the virtual machine\n  - Detach volume from the virtual machine\n  - Rename a virtual machine\n","operationId":"VmActions","parameters":[{"$ref":"#/components/parameters/vmId"}],"requestBody":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/VmStart"},{"$ref":"#/components/schemas/VmShutdown"},{"$ref":"#/components/schemas/VmReboot"},{"$ref":"#/components/schemas/VmTransfer"},{"$ref":"#/components/schemas/VmClone"},{"$ref":"#/components/schemas/VmResizeCompute"},{"$ref":"#/components/schemas/VmEditHardware"},{"$ref":"#/components/schemas/VolumeAttach"},{"$ref":"#/components/schemas/VolumeDetach"},{"$ref":"#/components/schemas/VmRename"}]}}}},"responses":{"200":{"description":"Successful operation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Vm"}}}},"400":{"$ref":"#/components/responses/BadRequestError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"description":"Forbidden - Access is denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"}}}},"404":{"$ref":"#/components/responses/NotFoundError"},"422":{"$ref":"#/components/responses/UnprocessableEntityError"},"500":{"$ref":"#/components/responses/InternalServerError"}},"security":[{"bearerAuth":[]}],"x-codeSamples":[{"lang":"CURL","label":"CURL","source":"curl --location 'https://api.emma.ms/external/v1/vms/{vmId}/actions' \\\n--header 'Content-Type: application/json' \\\n--header 'Accept: application/json' \\\n--header 'Authorization: Bearer YOUR-BEARER-TOKEN' \\\n--data '{\"action\": \"start\"}'"}]}},"/v1/vms-configs":{"get":{"tags":["Compute instances configurations"],"summary":"List of available configurations for virtual machine creation","description":"When creating virtual machines you need to provide the desired hardware configurations. These configurations include CPU, CPU type, RAM, volume size, and volume type. Different cloud providers offer various configurations in different data centers. Therefore, before creating any compute instance, you need to verify the available configurations.\n\nUse this endpoint as a reference for available configurations for virtual machines. You can search the available configurations by different parameters (provider, location, data center, cloud network type, CPU, CPU type, RAM, volume size, volume type, and price).\n\nWhen you find an appropriate configuration, provide the hardware parameters in the endpoint for creating or editing a virtual machine.\n","operationId":"GetVmConfigs","parameters":[{"$ref":"#/components/parameters/acceleratorTypeId"},{"$ref":"#/components/parameters/acceleratorsMin"},{"$ref":"#/components/parameters/acceleratorsMax"},{"$ref":"#/components/parameters/cloudNetworkType"},{"$ref":"#/components/parameters/dataCenterIdQuery"},{"$ref":"#/components/parameters/locationIdQuery"},{"$ref":"#/components/parameters/priceMax"},{"$ref":"#/components/parameters/priceMin"},{"$ref":"#/components/parameters/providerIdQuery"},{"$ref":"#/components/parameters/ramGb"},{"$ref":"#/components/parameters/ramGbMax"},{"$ref":"#/components/parameters/ramGbMin"},{"$ref":"#/components/parameters/vCpu"},{"$ref":"#/components/parameters/vCpuMax"},{"$ref":"#/components/parameters/vCpuMin"},{"$ref":"#/components/parameters/vCpuType"},{"$ref":"#/components/parameters/volumeGb"},{"$ref":"#/components/parameters/volumeGbMax"},{"$ref":"#/components/parameters/volumeGbMin"},{"$ref":"#/components/parameters/volumeType"},{"$ref":"#/components/parameters/pageQuery"},{"$ref":"#/components/parameters/sizeQuery"},{"$ref":"#/components/parameters/projectIdQuery"}],"responses":{"200":{"description":"Successful operation","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/PaginatedResult"},{"type":"object","properties":{"content":{"type":"array","items":{"$ref":"#/components/schemas/VmConfiguration"}}}}]}}}},"400":{"$ref":"#/components/responses/BadRequestError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"description":"Forbidden - Access is denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"}}}},"500":{"$ref":"#/components/responses/InternalServerError"}},"security":[{"bearerAuth":[]}],"x-codeSamples":[{"lang":"CURL","label":"CURL","source":"curl --location 'https://api.emma.ms/external/v1/vms-configs' \\\n--header 'Accept: application/json' \\\n--header 'Authorization: Bearer YOUR-BEARER-TOKEN'"}]}},"/v1/vms-resize-configs":{"get":{"tags":["Compute instances configurations"],"summary":"List of available configurations for virtual machine resize","description":"Virtual machines configurations are limited by provider-specific options, which differ across data centers. To resize or modify a compute instance, verify the list of supported configurations for your VM to avoid incompatible changes.\n\nUse this endpoint as a reference for available configurations for a virtual machine resize. \nYou can search the available configurations by different parameters (virtual machine id, CPU, CPU type, RAM, and price).\n\nWhen you find an appropriate configuration, provide the hardware parameters in the endpoint for editing a virtual machine.\n\n**Note:** To retrieve available configurations for DigitalOcean virtual machines, use the `GET v1/vms-configs` method  \n","operationId":"GetVmResizeConfigs","parameters":[{"$ref":"#/components/parameters/vmIdQuery"},{"$ref":"#/components/parameters/vCpuType"},{"$ref":"#/components/parameters/vCpu"},{"$ref":"#/components/parameters/vCpuMin"},{"$ref":"#/components/parameters/vCpuMax"},{"$ref":"#/components/parameters/ramGb"},{"$ref":"#/components/parameters/ramGbMin"},{"$ref":"#/components/parameters/ramGbMax"},{"$ref":"#/components/parameters/priceMin"},{"$ref":"#/components/parameters/priceMax"},{"$ref":"#/components/parameters/pageQuery"},{"$ref":"#/components/parameters/sizeQuery"},{"$ref":"#/components/parameters/projectIdQuery"}],"responses":{"200":{"description":"Successful operation","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/PaginatedResult"},{"type":"object","properties":{"content":{"type":"array","items":{"$ref":"#/components/schemas/VmResizeConfiguration"}}}}]}}}},"400":{"$ref":"#/components/responses/BadRequestError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"description":"Forbidden - Access is denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"}}}},"500":{"$ref":"#/components/responses/InternalServerError"}},"security":[{"bearerAuth":[]}],"x-codeSamples":[{"lang":"CURL","label":"CURL","source":"curl --location 'https://api.emma.ms/external/v1/vms-resize-configs' \\\n--header 'Accept: application/json' \\\n--header 'Authorization: Bearer YOUR-BEARER-TOKEN'          "}]}},"/v1/volume-configs":{"get":{"tags":["Volumes configurations"],"summary":"List of available configurations for volumes","description":"When creating data volume or upsizing a volume you need to provide the desired volume size. Different cloud providers offer various configurations in different data centers. Therefore, before creating or editing a volume, you need to verify the available configurations.\n\nUse this endpoint as a reference for available volume configurations. \n\nTo search configurations for data volumes specify `isBootable: false` and needed filters in parameters: provider, location, data center, volume size, volume type.\n\nTo search configurations for system volume resize specify `isBootable: true` and vmId. You can also set the volumeGbMin to filter configurations that have not enough size.\n\nWhen you find an appropriate configuration, provide its parameters in the endpoint for creating or resizing a volume.\n","operationId":"GetVolumeConfigs","parameters":[{"$ref":"#/components/parameters/isBootable"},{"$ref":"#/components/parameters/vmIdQuery"},{"$ref":"#/components/parameters/providerIdQuery"},{"$ref":"#/components/parameters/locationIdQuery"},{"$ref":"#/components/parameters/dataCenterIdQuery"},{"$ref":"#/components/parameters/volumeGbMin"},{"$ref":"#/components/parameters/dataVolumeType"},{"$ref":"#/components/parameters/pageQuery"},{"$ref":"#/components/parameters/sizeQuery"},{"$ref":"#/components/parameters/projectIdQuery"}],"responses":{"200":{"description":"Successful operation","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/PaginatedResult"},{"type":"object","properties":{"content":{"type":"array","items":{"$ref":"#/components/schemas/VolumeConfiguration"}}}}]}}}},"400":{"$ref":"#/components/responses/BadRequestError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"description":"Forbidden - Access is denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"}}}},"500":{"$ref":"#/components/responses/InternalServerError"}},"security":[{"bearerAuth":[]}],"x-codeSamples":[{"lang":"CURL","label":"CURL","source":"curl --location 'https://api.emma.ms/external/v1/volume-configs' \\\n--header 'Accept: application/json' \\\n--header 'Authorization: Bearer YOUR-BEARER-TOKEN'"}]}},"/v1/system-volumes-configs":{"get":{"tags":["Volumes configurations"],"summary":"List of available configurations for system volumes","description":"When upsizing a system volume you need to provide the desired volume size and verify it matches the virtual machine requirements.\n\nUse this endpoint as a reference for available configurations for system volumes. You can search the available configurations by\ndifferent parameters (virtual machine id, volume size, volume type).\n\nWhen you find an appropriate configuration, provide its parameters in the endpoint for editing a system volume.\n\n**Note:** To retrieve available configurations for DigitalOcean system volumes, use the `GET v1/vms-configs` method\n","operationId":"GetSystemVolumeConfigs","parameters":[{"$ref":"#/components/parameters/attachedToId"},{"$ref":"#/components/parameters/volumeGbMin"},{"$ref":"#/components/parameters/volumeType"},{"$ref":"#/components/parameters/pageQuery"},{"$ref":"#/components/parameters/sizeQuery"},{"$ref":"#/components/parameters/projectIdQuery"}],"responses":{"200":{"description":"Successful operation","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/PaginatedResult"},{"type":"object","properties":{"content":{"type":"array","items":{"$ref":"#/components/schemas/SystemVolumeConfiguration"}}}}]}}}},"400":{"$ref":"#/components/responses/BadRequestError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"description":"Forbidden - Access is denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"}}}},"500":{"$ref":"#/components/responses/InternalServerError"}},"security":[{"bearerAuth":[]}],"x-codeSamples":[{"lang":"CURL","label":"CURL","source":"curl --location 'https://api.emma.ms/external/v1/system-volumes-configs' \\\n--header 'Accept: application/json' \\\n--header 'Authorization: Bearer YOUR-BEARER-TOKEN' "}]}},"/v1/volumes":{"get":{"tags":["Volumes"],"summary":"Get list of volumes","description":"Returns a list of volumes within the project.\n","operationId":"GetVolumes","responses":{"200":{"description":"Successful operation","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Volume"}}}}},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"description":"Forbidden - Access is denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"}}}},"500":{"$ref":"#/components/responses/InternalServerError"}},"security":[{"bearerAuth":[]}],"x-codeSamples":[{"lang":"CURL","label":"CURL","source":"curl --location 'https://api.emma.ms/external/v1/volumes' \\\n--header 'Accept: application/json' \\\n--header 'Authorization: Bearer YOUR-BEARER-TOKEN'"}]},"post":{"tags":["Volumes"],"summary":"Create volume","description":"This method creates a volume according to the specified parameters.\nTo create a volume, follow these steps:\n1. Select a data center using the `/v1/data-centers` endpoint. The data center determines the provider and location of the volume.\n2. Select an available configuration for the volume using the `/v1/volumes-configs` endpoint.\n3. (optional) Specify the `attachedToId` field with existing virtual machine id to attach new volume to this virtual machine\n","operationId":"VolumeCreate","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VolumeCreate"}}}},"responses":{"200":{"description":"Volume created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Volume"}}}},"400":{"$ref":"#/components/responses/BadRequestError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"description":"Forbidden - Access is denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"}}}},"422":{"$ref":"#/components/responses/UnprocessableEntityError"},"500":{"$ref":"#/components/responses/InternalServerError"}},"security":[{"bearerAuth":[]}],"x-codeSamples":[{"lang":"CURL","label":"CURL","source":"curl --location 'https://api.emma.ms/external/v1/volumes' \\\n--header 'Content-Type: application/json' \\\n--header 'Accept: application/json' \\\n--header 'Authorization: Bearer YOUR-BEARER-TOKEN' \\\n--data '{\n  \"dataCenterId\": \"aws-eu-west-2\",\n  \"volumeType\": \"ssd\", \n  \"volumeGb\": 256,\n  \"attachedToId\": 11098 \n}'"}]}},"/v1/volumes/{volumeId}":{"get":{"tags":["Volumes"],"summary":"Get volume by id","description":"This endpoint returns a volume by ID.\n","operationId":"GetVolume","parameters":[{"$ref":"#/components/parameters/volumeId"}],"responses":{"200":{"description":"Successful operation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Volume"}}}},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"description":"Forbidden - Access is denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"}}}},"404":{"$ref":"#/components/responses/NotFoundError"},"500":{"$ref":"#/components/responses/InternalServerError"}},"security":[{"bearerAuth":[]}],"x-codeSamples":[{"lang":"CURL","label":"CURL","source":"curl --location 'https://api.emma.ms/external/v1/volumes/{volumeId}' \\\n--header 'Accept: application/json' \\\n--header 'Authorization: Bearer YOUR-BEARER-TOKEN'  "}]},"delete":{"tags":["Volumes"],"summary":"Delete volume","description":"This method deletes a volume.\n","operationId":"VolumeDelete","parameters":[{"$ref":"#/components/parameters/volumeId"}],"responses":{"200":{"description":"Successful operation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Volume"}}}},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"description":"Forbidden - Access is denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"}}}},"404":{"$ref":"#/components/responses/NotFoundError"},"500":{"$ref":"#/components/responses/InternalServerError"}},"security":[{"bearerAuth":[]}],"x-codeSamples":[{"lang":"CURL","label":"CURL","source":"curl --location --request DELETE 'https://api.emma.ms/external/v1/volumes/{volumeId}' \\\n--header 'Accept: application/json' \\\n--header 'Authorization: Bearer YOUR-BEARER-TOKEN'"}]}},"/v1/volumes/{volumeId}/actions":{"post":{"tags":["Volumes"],"summary":"Perform actions with a volume","description":"This method increases the size of the specified volume.\n","operationId":"VolumeActions","parameters":[{"$ref":"#/components/parameters/volumeId"}],"requestBody":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/VolumeEdit"}]}}}},"responses":{"200":{"description":"Successful operation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Volume"}}}},"400":{"$ref":"#/components/responses/BadRequestError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"description":"Forbidden - Access is denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"}}}},"404":{"$ref":"#/components/responses/NotFoundError"},"500":{"$ref":"#/components/responses/InternalServerError"}},"security":[{"bearerAuth":[]}],"x-codeSamples":[{"lang":"CURL","label":"CURL","source":"curl --location 'https://api.emma.ms/external/v1/volumes/{volumeId}/actions' \\\n--header 'Content-Type: application/json' \\\n--header 'Accept: application/json' \\\n--header 'Authorization: Bearer YOUR-BEARER-TOKEN' \\\n--data '{\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n  \"action\": \"edit\"\n}'"}]}},"/v1/spots-configs":{"get":{"tags":["Compute instances configurations"],"summary":"List of available configurations for spot instance creation","description":"When creating spot instances you need to provide the desired hardware configurations. These configurations include CPU, CPU type, RAM, volume size, volume type, and optionally GPU accelerator. Different cloud providers offer various configurations in different data centers. Therefore, before creating any compute instance, you need to verify the available configurations.\n\nUse this endpoint as a reference for available configurations for spot instances. You can search the available configurations by different parameters (provider, location, data center, cloud network type, CPU, CPU type, RAM, volume size, volume type, price, and GPU accelerator type).\n\nWhen you find an appropriate configuration, provide the hardware parameters in the endpoint for creating or editing a spot instance.\n","operationId":"GetSpotConfigs","parameters":[{"$ref":"#/components/parameters/acceleratorTypeId"},{"$ref":"#/components/parameters/acceleratorsMin"},{"$ref":"#/components/parameters/acceleratorsMax"},{"$ref":"#/components/parameters/providerIdQuery"},{"$ref":"#/components/parameters/locationIdQuery"},{"$ref":"#/components/parameters/dataCenterIdQuery"},{"$ref":"#/components/parameters/cloudNetworkType"},{"$ref":"#/components/parameters/vCpuType"},{"$ref":"#/components/parameters/vCpu"},{"$ref":"#/components/parameters/vCpuMin"},{"$ref":"#/components/parameters/vCpuMax"},{"$ref":"#/components/parameters/ramGb"},{"$ref":"#/components/parameters/ramGbMin"},{"$ref":"#/components/parameters/ramGbMax"},{"$ref":"#/components/parameters/volumeGb"},{"$ref":"#/components/parameters/volumeGbMin"},{"$ref":"#/components/parameters/volumeGbMax"},{"$ref":"#/components/parameters/volumeType"},{"$ref":"#/components/parameters/priceMin"},{"$ref":"#/components/parameters/priceMax"},{"$ref":"#/components/parameters/pageQuery"},{"$ref":"#/components/parameters/sizeQuery"},{"$ref":"#/components/parameters/projectIdQuery"}],"responses":{"200":{"description":"Successful operation","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/PaginatedResult"},{"type":"object","properties":{"content":{"type":"array","items":{"$ref":"#/components/schemas/VmConfiguration"}}}}]}}}},"400":{"$ref":"#/components/responses/BadRequestError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"description":"Forbidden - Access is denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"}}}},"500":{"$ref":"#/components/responses/InternalServerError"}},"security":[{"bearerAuth":[]}],"x-codeSamples":[{"lang":"CURL","label":"CURL","source":"curl --location 'https://api.emma.ms/external/v1/spots-configs' \\\n--header 'Accept: application/json' \\\n--header 'Authorization: Bearer YOUR-BEARER-TOKEN'"}]}},"/v1/kubernetes-configs":{"get":{"tags":["Compute instances configurations"],"summary":"List of available configurations for Kubernetes cluster node","description":"Returns the list of available hardware configurations that can be used for Kubernetes cluster worker nodes.\n\nEach configuration defines the compute resources available for a node, including:\n- CPU count\n- CPU type\n- RAM size\n- system disk size\n- system disk type\n- optional GPU configuration\n\nAvailable configurations depend on the cloud provider and data center. Therefore, they must be retrieved before creating or updating a Kubernetes cluster.\n\nThis endpoint allows searching and filtering configurations using parameters listed in the **Parameters** section.\n\nThe selected configuration should be used when calling the **Kubernetes cluster creation** or **cluster update** endpoints, where these parameters define the specification of worker nodes.\n","operationId":"GetKuberNodesConfigs","parameters":[{"$ref":"#/components/parameters/providerIdQuery"},{"$ref":"#/components/parameters/locationIdQuery"},{"$ref":"#/components/parameters/acceleratorTypeId"},{"$ref":"#/components/parameters/acceleratorsMin"},{"$ref":"#/components/parameters/acceleratorsMax"},{"$ref":"#/components/parameters/k8sConnectionType"},{"$ref":"#/components/parameters/dataCenterIdQuery"},{"$ref":"#/components/parameters/vCpuType"},{"$ref":"#/components/parameters/vCpu"},{"$ref":"#/components/parameters/vCpuMin"},{"$ref":"#/components/parameters/vCpuMax"},{"$ref":"#/components/parameters/ramGb"},{"$ref":"#/components/parameters/ramGbMin"},{"$ref":"#/components/parameters/ramGbMax"},{"$ref":"#/components/parameters/volumeGb"},{"$ref":"#/components/parameters/volumeGbMin"},{"$ref":"#/components/parameters/volumeGbMax"},{"$ref":"#/components/parameters/volumeType"},{"$ref":"#/components/parameters/priceMin"},{"$ref":"#/components/parameters/priceMax"},{"$ref":"#/components/parameters/pageQuery"},{"$ref":"#/components/parameters/sizeQuery"},{"$ref":"#/components/parameters/projectIdQuery"}],"responses":{"200":{"description":"Successful operation","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/PaginatedResult"},{"type":"object","properties":{"content":{"type":"array","items":{"$ref":"#/components/schemas/K8sNodeConfiguration"}}}}]}}}},"400":{"$ref":"#/components/responses/BadRequestError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"description":"Forbidden - Access is denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"}}}},"500":{"$ref":"#/components/responses/InternalServerError"}},"security":[{"bearerAuth":[]}],"x-codeSamples":[{"lang":"CURL","label":"CURL","source":"curl --location 'https://api.emma.ms/external/v1/kubernetes-configs' \\\n--header 'Accept: application/json' \\\n--header 'Authorization: Bearer YOUR-BEARER-TOKEN'"}]}},"/v1/workflow-templates":{"get":{"tags":["Workflows"],"summary":"List of available workflow templates","description":"This method returns a list of available workflow templates that can be used to create and run workflows. Workflow templates are predefined blueprints for workflows that include a set of tasks and their dependencies. They serve as a starting point for creating workflows, allowing users to quickly set up and execute common processes without having to define each task from scratch.\n\nPagination is optional: omitting `page` and `size` returns the first page with `size = 50`.\n","operationId":"GetWorkflowTemplates","parameters":[{"$ref":"#/components/parameters/pageQuery"},{"$ref":"#/components/parameters/sizeQuery"},{"$ref":"#/components/parameters/name.like"},{"$ref":"#/components/parameters/__filter.tag"},{"$ref":"#/components/parameters/__filter.tag.ne"},{"$ref":"#/components/parameters/status"},{"$ref":"#/components/parameters/status.ne"},{"$ref":"#/components/parameters/sortQuery"}],"responses":{"200":{"description":"Successful operation","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/PaginatedResult"},{"type":"object","properties":{"content":{"type":"array","items":{"$ref":"#/components/schemas/WorkflowTemplate"}}}}]}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequestError"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizedError"}}}},"403":{"description":"Forbidden - Access is denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFoundError"}}}},"500":{"$ref":"#/components/responses/InternalServerError"},"503":{"description":"InternalError","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalErrorResponse"}}}},"504":{"description":"Timeout","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TimeoutResponse"}}}}},"security":[{"bearerAuth":[]}],"x-codeSamples":[{"lang":"CURL","label":"CURL","source":"curl --location 'https://api.emma.ms/external/v1/workflow-templates?page=0&size=50' \\\n--header 'Accept: application/json' \\\n--header 'Authorization: Bearer YOUR-BEARER-TOKEN'"}]},"post":{"tags":["Workflows"],"summary":"Create a workflow template","description":"This method creates a new workflow template. A workflow template is a predefined blueprint for a workflow that includes a set of tasks and their dependencies. It serves as a starting point for creating workflows, allowing users to quickly set up and execute common processes without having to define each task from scratch.\n","operationId":"CreateWorkflowTemplate","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkflowTemplateCreate"}}}},"responses":{"201":{"description":"Workflow template created successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkflowTemplate"}}}},"400":{"description":"Bad request. A duplicate template name within the company is also reported as `400`\n(creation), unlike renaming through `PUT`, which reports `409`.\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequestError"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizedError"}}}},"403":{"description":"Forbidden - Access is denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFoundError"}}}},"500":{"$ref":"#/components/responses/InternalServerError"},"503":{"description":"InternalError","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalErrorResponse"}}}},"504":{"description":"Timeout","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TimeoutResponse"}}}}},"security":[{"bearerAuth":[]}],"x-codeSamples":[{"lang":"CURL","label":"CURL","source":"curl --location 'https://api.emma.ms/external/v1/workflow-templates' \\\n--header 'Content-Type: application/json' \\\n--header 'Accept: application/json' \\\n--header 'Authorization: Bearer YOUR-BEARER-TOKEN' \\\n--data '{\n  \"name\": \"Deploy Application\",\n  \"description\": \"Workflow to deploy an application using a shell script\",\n  \"status\": \"UNPUBLISHED\",\n  \"resourceTypes\": [\"COMPUTE\"],\n  \"resourceParams\": [\n    {\n      \"name\": \"minCpuCores\",\n      \"value\": \"1\"\n  },\n{\n  \"name\": \"minRamSizeGb\",\n  \"value\": \"48\"\n},\n{\n  \"name\": \"minVolumeSizeGb\",\n  \"value\": \"300\"\n}\n],\n  \"tags\": [\n{\n  \"tagId\": \"1\",\n  \"key\": \"env\",\n  \"value\": \"prod\"\n},\n{\n  \"tagId\": \"2\",\n  \"key\": \"team\",\n  \"value\": \"platform\"\n}\n],\n\"contentType\": \"Shell\",\n\"content\": \"#!/bin/bash\\n\\necho\\ncd $DEPLOY_PATH\\n./deploy.sh\\n\",\n\"contentParams\": [\n    {\n        \"name\": \"DEPLOY_PATH\",\n        \"defaultValue\": \"/opt/app\",\n        \"mandatory\": true,\n        \"description\": \"Path to the application root on the target host.\"\n    },\n    {\n        \"name\": \"DEPLOY_TOKEN\",\n        \"defaultValue\": \"s3cr3t-token-value\",\n        \"mandatory\": true,\n        \"isSecret\": true,\n        \"defaultValueChanged\": true,\n        \"description\": \"Auth token used by the deployment script.\"\n    }\n]\n  }'"}]}},"/v1/workflow-templates/{id}":{"get":{"tags":["Workflows"],"summary":"Get a workflow template by ID","description":"This method retrieves a workflow template by its ID. A workflow template is a predefined blueprint for a workflow that includes a set of tasks and their dependencies. It serves as a starting point for creating workflows, allowing users to quickly set up and execute common processes without having to define each task from scratch.\n","operationId":"GetWorkflowTemplate","parameters":[{"$ref":"#/components/parameters/workflowTemplateId"}],"responses":{"200":{"description":"Successful operation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkflowTemplate"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequestError"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizedError"}}}},"403":{"description":"Forbidden - Access is denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFoundError"}}}},"500":{"$ref":"#/components/responses/InternalServerError"},"503":{"description":"InternalError","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalErrorResponse"}}}},"504":{"description":"Timeout","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TimeoutResponse"}}}}},"security":[{"bearerAuth":[]}],"x-codeSamples":[{"lang":"CURL","label":"CURL","source":"curl --location 'https://api.emma.ms/external/v1/workflow-templates/3' \\\n--header 'Accept: application/json' \\\n--header 'Authorization: Bearer YOUR-BEARER-TOKEN'"}]},"put":{"tags":["Workflows"],"summary":"Update a workflow template","description":"This method updates an existing workflow template. A workflow template is a predefined blueprint for a workflow that includes a set of tasks and their dependencies. It serves as a starting point for creating workflows, allowing users to quickly set up and execute common processes without having to define each task from scratch.\n\nThe name must be unique among the company's non-deleted workflow templates. Renaming to a name held by another template returns `409`; submitting the template's own name is allowed. Names of deleted templates become available for reuse. The comparison is exact and case-sensitive.\n","operationId":"UpdateWorkflowTemplate","parameters":[{"$ref":"#/components/parameters/workflowTemplateId"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkflowTemplateCreate"}}}},"responses":{"200":{"description":"Workflow template updated successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkflowTemplate"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequestError"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizedError"}}}},"403":{"description":"Forbidden - Access is denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFoundError"}}}},"409":{"description":"Conflict — another non-deleted workflow template of the company already uses the requested name","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConflictError"}}}},"422":{"description":"Unprocessable entity","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnprocessableEntityError"}}}},"500":{"$ref":"#/components/responses/InternalServerError"},"503":{"description":"InternalError","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalErrorResponse"}}}},"504":{"description":"Timeout","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TimeoutResponse"}}}}},"security":[{"bearerAuth":[]}],"x-codeSamples":[{"lang":"CURL","label":"CURL","source":"curl --location 'https://api.emma.ms/external/v1/workflow-templates/3' \\\n--header 'Content-Type: application/json' \\\n--header 'Accept: application/json' \\\n--header 'Authorization: Bearer YOUR-BEARER-TOKEN' \\\n--data '{\n  \"name\": \"Deploy Application\",\n  \"description\": \"Workflow to deploy an application using a shell script\",\n  \"status\": \"UNPUBLISHED\",\n  \"resourceTypes\": [\"COMPUTE\",\"SPOT_COMPUTE\"],\n  \"forceDeleteOldest\": false,\n  \"resourceParams\": [\n    {\n      \"name\": \"minCpuCores\",\n      \"value\": \"1\"\n  },\n{\n  \"name\": \"minRamSizeGb\",\n  \"value\": \"48\"\n},\n{\n  \"name\": \"minVolumeSizeGb\",\n  \"value\": \"300\"\n}\n],\n  \"tags\": [\n{\n  \"tagId\": \"1\",\n  \"key\": \"env\",\n  \"value\": \"prod\"\n},\n{\n  \"tagId\": \"2\",\n  \"key\": \"team\",\n  \"value\": \"platform\"\n}\n],\n\"contentType\": \"Shell\",\n\"content\": \"#!/bin/bash\\n\\necho\\ncd $DEPLOY_PATH\\n./deploy.sh\\n\",\n\"contentParams\": [\n    {\n        \"name\": \"DEPLOY_PATH\",\n        \"defaultValue\": \"/opt/app\",\n        \"mandatory\": true,\n        \"description\": \"Path to the application root on the target host.\"\n    },\n    {\n        \"name\": \"DEPLOY_TOKEN\",\n        \"defaultValue\": \"s3cr3t-token-value\",\n        \"mandatory\": true,\n        \"isSecret\": true,\n        \"defaultValueChanged\": true,\n        \"description\": \"Auth token used by the deployment script.\"\n    }\n]\n  }'"}]},"delete":{"tags":["Workflows"],"summary":"Delete a workflow template","description":"This method deletes a workflow template. A workflow template is a predefined blueprint for a workflow that includes a set of tasks and their dependencies. It serves as a starting point for creating workflows, allowing users to quickly set up and execute common processes without having to define each task from scratch.\n","operationId":"DeleteWorkflowTemplate","parameters":[{"$ref":"#/components/parameters/workflowTemplateId"}],"responses":{"204":{"description":"Workflow template deleted successfully"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequestError"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizedError"}}}},"403":{"description":"Forbidden - Access is denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFoundError"}}}},"500":{"$ref":"#/components/responses/InternalServerError"},"503":{"description":"InternalError","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalErrorResponse"}}}},"504":{"description":"Timeout","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TimeoutResponse"}}}}},"security":[{"bearerAuth":[]}],"x-codeSamples":[{"lang":"CURL","label":"CURL","source":"curl --location --request DELETE 'https://api.emma.ms/external/v1/workflow-templates/3' \\\n--header 'Accept: application/json' \\\n--header 'Authorization: Bearer YOUR-BEARER-TOKEN'"}]}},"/v1/workflow-templates/{id}/actions":{"post":{"tags":["Workflows"],"summary":"Perform an action on a workflow template","description":"Performs an action on an existing workflow template. The only supported action is `copy`.\n\n`copy` creates a new template in the caller's company from the source template and returns it. The copy is not an exact duplicate:\n\n- the name is derived from the source as `{sourceName}-{suffix}-copy`, where `{suffix}` is generated until the name is free within the company;\n- `status` is always `UNPUBLISHED`, regardless of the source status;\n- `isDefault` is always `false`, so a copy of a platform template becomes an ordinary template owned by the caller's company;\n- resource parameters, content, content parameters and tags are copied; tag keys that do not yet exist in the caller's company are created;\n- values of non-secret content parameters are copied; values of secret parameters are **not** copied — such parameters arrive with `hasDefaultValue = false` and must be re-entered by the owner before the workflow can be executed;\n- when workflow versioning is enabled, the copy starts its own history with a single active version `v1`; the source's version history is not copied.\n","operationId":"PerformWorkflowTemplateAction","parameters":[{"$ref":"#/components/parameters/workflowTemplateId"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkflowTemplateActionRequest"}}}},"responses":{"201":{"description":"Workflow template created successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkflowTemplate"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequestError"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizedError"}}}},"403":{"description":"Forbidden - Access is denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFoundError"}}}},"422":{"description":"Unprocessable entity","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnprocessableEntityError"}}}},"500":{"$ref":"#/components/responses/InternalServerError"},"503":{"description":"InternalError","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalErrorResponse"}}}},"504":{"description":"Timeout","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TimeoutResponse"}}}}},"security":[{"bearerAuth":[]}],"x-codeSamples":[{"lang":"CURL","label":"CURL","source":"curl --location 'https://api.emma.ms/external/v1/workflow-templates/3/actions' \\\n--header 'Content-Type: application/json' \\\n--header 'Accept: application/json' \\\n--header 'Authorization: Bearer YOUR-BEARER-TOKEN' \\\n--data '{ \"action\": \"copy\" }'"}]}},"/v1/workflow-templates/{id}/versions":{"get":{"tags":["Workflows"],"summary":"List of available workflow template versions","description":"Returns the full version history of the workflow template, sorted by `createdAt` descending by default. \n\nEach item includes `isActive` to identify the current active version, and `secretsChanged` to indicate versions where a secret parameter's value was rewritten.\n","operationId":"GetWorkflowTemplateVersions","parameters":[{"$ref":"#/components/parameters/workflowTemplateId"}],"responses":{"200":{"description":"Successful operation","content":{"application/json":{"schema":{"type":"object","properties":{"activeVersionId":{"type":"integer","description":"ID of the currently active version of the workflow template — the version used when creating instances from this workflow. A template that has any version has exactly one active version.\n\n`null` when the template has no versions at all, and `content` is then an empty array. This is the permanent state of built-in default templates (`isDefault = true`): they are excluded from versioning and cannot be edited, so a version is never created for them. It is also the state of templates created before versioning was enabled and not yet covered by the one-off backfill.\n","example":123,"nullable":true},"content":{"type":"array","description":"List of workflow template versions, sorted by `createdAt` descending.","items":{"$ref":"#/components/schemas/WorkflowTemplateVersionListItem"}}},"required":["content"]}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequestError"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizedError"}}}},"403":{"description":"Forbidden - Access is denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFoundError"}}}},"500":{"$ref":"#/components/responses/InternalServerError"},"503":{"description":"InternalError","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalErrorResponse"}}}},"504":{"description":"Timeout","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TimeoutResponse"}}}}},"security":[{"bearerAuth":[]}],"x-codeSamples":[{"lang":"CURL","label":"CURL","source":"curl --location 'https://api.emma.ms/external/v1/workflow-templates/123/versions' \\\n--header 'Accept: application/json' \\\n--header 'Authorization: Bearer YOUR-BEARER-TOKEN'"}]}},"/v1/workflow-templates/{id}/versions/{versionId}":{"get":{"tags":["Workflows"],"summary":"Get a workflow template version by ID","description":"Returns the full immutable snapshot of a specific version, including all fields captured at the time of the save (`name`, `description`, `status`, `resourceTypes`, `resourceParams`, `tags`, `contentType`, `content`, `isContentValid`, `contentParams`) plus the version-level metadata (`isActive`, `secretsChanged`, `createdAt`, `createdBy*`). Secret content parameter values are never returned — `defaultValue` is always `null` for parameters with `isSecret = true`; use `hasDefaultValue = true` to detect that a stored secret exists.\n","operationId":"GetWorkflowTemplateVersion","parameters":[{"$ref":"#/components/parameters/workflowTemplateId"},{"$ref":"#/components/parameters/workflowTemplateVersionId"}],"responses":{"200":{"description":"Successful operation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkflowTemplateVersion"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequestError"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizedError"}}}},"403":{"description":"Forbidden - Access is denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFoundError"}}}},"500":{"$ref":"#/components/responses/InternalServerError"},"503":{"description":"InternalError","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalErrorResponse"}}}},"504":{"description":"Timeout","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TimeoutResponse"}}}}},"security":[{"bearerAuth":[]}],"x-codeSamples":[{"lang":"CURL","label":"CURL","source":"curl --location 'https://api.emma.ms/external/v1/workflow-templates/3/versions/123' \\\n--header 'Accept: application/json' \\\n--header 'Authorization: Bearer YOUR-BEARER-TOKEN'"}]},"delete":{"tags":["Workflows"],"summary":"Delete a workflow version","description":"This method deletes a workflow version. The active version cannot be deleted.\n\nA template that has any versions always has exactly one active version, so its last remaining version is by definition the active one and cannot be deleted either — a template can never be left with zero versions this way.\n","operationId":"DeleteWorkflowTemplateVersion","parameters":[{"$ref":"#/components/parameters/workflowTemplateId"},{"$ref":"#/components/parameters/workflowTemplateVersionId"}],"responses":{"204":{"description":"Workflow version deleted successfully"},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequestError"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizedError"}}}},"403":{"description":"Forbidden - Access is denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFoundError"}}}},"409":{"description":"Conflict — the version is active. Activate another version first (restore it, or save the template to create a new active version), then delete this one.\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConflictError"}}}},"500":{"$ref":"#/components/responses/InternalServerError"},"503":{"description":"InternalError","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalErrorResponse"}}}},"504":{"description":"Timeout","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TimeoutResponse"}}}}},"security":[{"bearerAuth":[]}],"x-codeSamples":[{"lang":"CURL","label":"CURL","source":"curl --location --request DELETE 'https://api.emma.ms/external/v1/workflow-templates/3/versions/123' \\\n--header 'Accept: application/json' \\\n--header 'Authorization: Bearer YOUR-BEARER-TOKEN'"}]},"patch":{"tags":["Workflows"],"summary":"Update a workflow version name","description":"Updates the name of an existing version. \n\nNames are validated against the pattern: length 2-20 characters, alphanumerics plus `.`, `_`, `-`. Duplicate names within the same workflow template are allowed.\n","operationId":"RenameWorkflowTemplateVersion","parameters":[{"$ref":"#/components/parameters/workflowTemplateId"},{"$ref":"#/components/parameters/workflowTemplateVersionId"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkflowTemplateVersionRename"}}}},"responses":{"200":{"description":"Workflow version name updated successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkflowTemplateVersionListItem"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequestError"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizedError"}}}},"403":{"description":"Forbidden - Access is denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFoundError"}}}},"500":{"$ref":"#/components/responses/InternalServerError"},"503":{"description":"InternalError","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalErrorResponse"}}}},"504":{"description":"Timeout","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TimeoutResponse"}}}}},"security":[{"bearerAuth":[]}],"x-codeSamples":[{"lang":"CURL","label":"CURL","source":"curl --location 'https://api.emma.ms/external/v1/workflow-templates/3/versions/123' \\\n--header 'Content-Type: application/json' \\\n--header 'Accept: application/json' \\\n--header 'Authorization: Bearer YOUR-BEARER-TOKEN' \\\n--data '{\n  \"name\": \"MongoDB-8.3\"\n  }'"}]}},"/v1/workflow-templates/{id}/versions/{versionId}/actions":{"post":{"tags":["Workflows"],"summary":"Perform actions with a workflow version","description":"Executes \"Restore\" action on the specified workflow version.\n\nRestoring creates a new active version from the selected version's snapshot. The new version receives an auto-generated name; use `PATCH` to assign a custom name.\n\nA workflow template can contain up to 20 versions. If the limit is reached, retry the request with `forceDeleteOldest = true` to delete the oldest non-active version as part of the same operation. The restore is rejected if the oldest non-active version is the one being restored.\n","operationId":"WorkflowVersionActions","parameters":[{"$ref":"#/components/parameters/workflowTemplateId"},{"$ref":"#/components/parameters/workflowTemplateVersionId"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkflowTemplateVersionRestore"}}}},"responses":{"200":{"description":"Workflow version restored successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkflowTemplateVersion"}}}},"400":{"$ref":"#/components/responses/BadRequestError"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"description":"Forbidden - Access is denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"}}}},"404":{"$ref":"#/components/responses/NotFoundError"},"409":{"description":"Conflict. Returned in four distinct situations:\n\n- the version is already the active one, so restoring it would change nothing;\n- the template has reached the limit of 20 versions and `forceDeleteOldest` was not set — retry with `forceDeleteOldest = true`;\n- `forceDeleteOldest = true` was sent, but the oldest non-active version is the very version being restored, so no room can be freed — delete another version manually first, then retry;\n- the template name captured in the snapshot is already used by another non-deleted template of the company — rename that template and retry.\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConflictError"}}}},"500":{"$ref":"#/components/responses/InternalServerError"},"503":{"description":"InternalError","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalErrorResponse"}}}},"504":{"description":"Timeout","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TimeoutResponse"}}}}},"security":[{"bearerAuth":[]}],"x-codeSamples":[{"lang":"CURL","label":"CURL","source":"curl --location 'https://api.emma.ms/external/v1/workflow-templates/3/versions/123/actions' \\\n--header 'Content-Type: application/json' \\\n--header 'Accept: application/json' \\\n--header 'Authorization: Bearer YOUR-BEARER-TOKEN' \\\n--data '{\"action\": \"restore\", \"forceDeleteOldest\": true}'"}]}}},"components":{"schemas":{"WorkflowTemplateCreate":{"type":"object","properties":{"name":{"type":"string","description":"Name of the workflow template","example":"Example Workflow Template","maxLength":50},"description":{"type":"string","description":"Description of the workflow template","example":"This is an example workflow template.","maxLength":1000,"nullable":true},"contentType":{"type":"string","description":"Format of the content field, only Shell is supported for now","enum":["Shell"],"example":"Shell"},"content":{"type":"string","description":"Content of the workflow template. For Shell contentType, it includes shell commands to execute.","example":"echo Hello, World!"},"status":{"type":"string","description":"Status of the workflow template. Can be PUBLISHED or UNPUBLISHED","enum":["PUBLISHED","UNPUBLISHED"],"example":"PUBLISHED"},"resourceTypes":{"type":"array","description":"Types of the resource. Use this instead of the deprecated resourceType. At least one of resourceTypes or resourceType is required.","example":["COMPUTE"],"items":{"type":"string","enum":["COMPUTE","SPOT_COMPUTE"]}},"resourceType":{"type":"string","deprecated":true,"description":"Deprecated — use resourceTypes. At least one of resourceTypes or resourceType is required.","enum":["COMPUTE","SPOT_COMPUTE"],"example":"COMPUTE"},"resourceParams":{"type":"array","description":"Parameters of the resource limitation. The parameters depend on the resource type and include parameters for compute instance.","items":{"$ref":"#/components/schemas/ResourceParamCreate"}},"tags":{"type":"array","description":"List of tags assigned to the workflow template","items":{"$ref":"#/components/schemas/TagCreate"}},"contentParams":{"type":"array","description":"List of parameters extracted from the content. These parameters can be used to fill in the blanks in the content when creating a workflow from the template.","items":{"$ref":"#/components/schemas/ContentParam"}},"isContentValid":{"type":"boolean","description":"Whether the content passed validation. Optional on write; defaults to true when omitted. Must be true when status is PUBLISHED.","example":true},"contentExecutionTimeout":{"type":"integer","description":"Maximum script execution time in minutes (1–30). Defaults to 10 when omitted.","example":10,"maximum":30,"minimum":1},"forceDeleteOldest":{"type":"boolean","description":"PUT only, ignored on POST. When `true` and the workflow template has reached the 20-version limit, the server soft-deletes the oldest non-active version as part of the save. Otherwise, the request fails with 409 CONFLICT. Ignored on POST\n","example":false,"nullable":true}},"required":["content","contentParams","contentType","name","resourceParams","status","tags"]},"WorkflowTemplate":{"type":"object","properties":{"id":{"type":"integer","description":"ID of the workflow template","example":123},"name":{"type":"string","description":"Name of the workflow template","example":"Sample Workflow Template"},"description":{"type":"string","description":"Description of the workflow template","example":"This is a sample workflow template for demonstration purposes.","nullable":true},"createdAt":{"type":"string","description":"Date and time of the workflow template creation (ISO-8601, UTC, with milliseconds)","example":"2026-06-26T21:44:05.345Z"},"createdByName":{"type":"string","description":"Name of the user who created the workflow template","example":"Automation User"},"createdById":{"type":"integer","description":"ID of the user who created the workflow template","example":123},"modifiedAt":{"type":"string","description":"Date and time when the workflow template was last edited (ISO-8601, UTC, with milliseconds)","example":"2026-07-07T07:38:16.285Z"},"modifiedByName":{"type":"string","description":"Name of the user who last edited the workflow template","example":"Automation User"},"modifiedById":{"type":"integer","description":"ID of the user who last edited the workflow template","example":123},"isDeleted":{"type":"boolean","description":"Indicates whether the workflow template is deleted","example":false},"status":{"type":"string","description":"Status of the workflow template. Can be PUBLISHED or UNPUBLISHED","enum":["PUBLISHED","UNPUBLISHED"],"example":"PUBLISHED"},"resourceTypes":{"type":"array","description":"Types of the resource.","example":["COMPUTE"],"items":{"type":"string","enum":["COMPUTE","SPOT_COMPUTE"]}},"resourceType":{"type":"string","deprecated":true,"description":"Deprecated — use resourceTypes. Mirrors the first resource type; present for backward compatibility. Null when no resource type is set.","enum":["COMPUTE","SPOT_COMPUTE"],"example":"COMPUTE","nullable":true},"activeVersionId":{"type":"integer","description":"ID of the active workflow version. `null` when the template has no versions — permanently so for built-in default templates (`isDefault = true`), which are excluded from versioning, and until the one-off backfill covers templates created before versioning was enabled.\n","example":123,"nullable":true},"activeVersionName":{"type":"string","description":"Name of the active workflow version. `null` under the same conditions as `activeVersionId`.\n","example":"v1","nullable":true},"resourceParams":{"type":"array","description":"Parameters of the resource limitation. The parameters depend on the resource type and include parameters for compute instance.","items":{"$ref":"#/components/schemas/ResourceParam"}},"tags":{"type":"array","description":"List of tags assigned to the workflow template","items":{"$ref":"#/components/schemas/Tag"}},"contentType":{"type":"string","description":"Format of the content field, only Shell is supported for now","enum":["Shell"],"example":"Shell"},"content":{"type":"string","description":"Content of the workflow template. For Shell contentType, it includes shell commands to execute.","example":"echo Hello, World!"},"isContentValid":{"type":"boolean","description":"Indicates whether the content of the workflow template is valid. The content is validated against the contentType, e.g. for Shell contentType, the content is validated to be correct shell commands.","example":true},"contentParams":{"type":"array","description":"List of parameters extracted from the content. These parameters can be used to fill in the blanks in the content when creating a workflow from the template.","items":{"$ref":"#/components/schemas/ContentParam"}},"contentExecutionTimeout":{"type":"integer","description":"Maximum script execution time in minutes (1–30). Defaults to 10 when omitted on create/update.","example":10,"maximum":30,"minimum":1},"isDefault":{"type":"boolean","description":"Indicates whether this is a built-in default (system-provided) workflow template.","example":false}},"required":["content","contentExecutionTimeout","contentParams","contentType","createdAt","createdById","createdByName","id","isContentValid","isDefault","isDeleted","modifiedAt","modifiedById","modifiedByName","name","resourceParams","resourceTypes","status","tags"]},"WorkflowTemplateVersionListItem":{"type":"object","properties":{"id":{"type":"integer","description":"ID of the version.","example":123},"name":{"type":"string","description":"Name of the version.","example":"v1"},"createdAt":{"type":"string","description":"Date and time of the version creation.","example":"2026-11-26T14:54:11"},"createdById":{"type":"integer","description":"ID of the user or service application that initiated creation of the version.","example":543},"createdByName":{"type":"string","description":"Name of the user or service application that initiated creation of the version.","example":"Automation User"},"isActive":{"type":"boolean","description":"Indicates whether the version is active.","example":false},"secretsChanged":{"type":"boolean","description":"Indicates whether the secrets were changed in this version.","example":false},"sequenceNumber":{"type":"integer","description":"A sequential number assigned to each version in creation order.","example":7},"restoredFrom":{"type":"integer","description":"ID of the source version. Present only if this version was created by restoring another version; null otherwise.","example":123,"nullable":true},"restoredFromName":{"type":"string","description":"Name of the source version. Present only if this version was created by restoring another version; null otherwise.","example":"v11","nullable":true}},"required":["createdAt","createdById","createdByName","id","isActive","name","secretsChanged","sequenceNumber"]},"WorkflowTemplateVersion":{"type":"object","properties":{"id":{"type":"integer","description":"ID of the workflow template version","example":123},"name":{"type":"string","description":"Name of the workflow version","example":"v1"},"createdAt":{"type":"string","description":"Date and time of the version creation.","example":"2026-11-26T14:54:11"},"createdById":{"type":"integer","description":"ID of the user or service application that initiated creation of the version.","example":543},"createdByName":{"type":"string","description":"Name of the user or service application that initiated creation of the version.","example":"Automation User"},"isActive":{"type":"boolean","description":"Indicates whether the workflow version is active","example":false},"secretsChanged":{"type":"boolean","description":"Indicates whether the secrets were changed in this version.","example":false},"tagsRestorable":{"type":"boolean","description":"Indicates whether all tags in the snapshot can be restored. `true` if every tag still exists in the company, `false` if at least one has been deleted and cannot be restored.\n\n`null` when restorability was not determined — the snapshot holds no tags at all, or the check could not be completed. Treat `null` as \"unknown\", not as `false`.\n","example":true,"nullable":true},"sequenceNumber":{"type":"integer","description":"A sequential number assigned to each version in creation order.","example":7},"restoredFrom":{"type":"integer","description":"ID of the source version. Present only if this version was created by restoring another version; null otherwise.","example":123,"nullable":true},"restoredFromName":{"type":"string","description":"Name of the source version. Present only if this version was created by restoring another version; null otherwise.","example":"v11","nullable":true},"snapshot":{"$ref":"#/components/schemas/WorkflowTemplateSnapshot"}},"required":["createdAt","createdById","createdByName","id","isActive","name","secretsChanged","sequenceNumber","snapshot"]},"WorkflowTemplateVersionRename":{"type":"object","properties":{"name":{"type":"string","description":"New name for the workflow version. Length 2–20 characters. Allowed characters — alphanumerics, `.`, `_`, `-`.\n","example":"MongoDB-8.3","maxLength":20,"minLength":2,"pattern":"^[A-Za-z0-9._-]{2,20}$"}},"required":["name"]},"WorkflowTemplateVersionRestore":{"type":"object","properties":{"action":{"type":"string","description":"`restore` — creates a new active version from this version's snapshot. The new version gets a server-generated name and is not a byte-for-byte duplicate: secret parameters come back with `hasDefaultValue = false` (secret values are never restored) and Vault-backed parameters get a fresh `vaultVersion`. The previous active version remains in history with `isActive = false`.\n","enum":["restore"],"example":"restore"},"forceDeleteOldest":{"type":"boolean","description":"Indicates whether the oldest version may be deleted if the 20-version limit is reached. By default - false","example":false,"nullable":true}},"required":["action"]},"WorkflowTemplateSnapshot":{"type":"object","properties":{"name":{"type":"string","description":"Name of the workflow template as captured in this version's snapshot.","example":"Deploy MongoDB"},"description":{"type":"string","description":"Description of the workflow template as captured in this version's snapshot.","example":"Deploy MongoDB from a shell script.","nullable":true},"status":{"type":"string","description":"Status of the workflow template at the time this version was saved.","enum":["PUBLISHED","UNPUBLISHED"],"example":"PUBLISHED"},"resourceTypes":{"type":"array","description":"Types of the resources, as captured in this version's snapshot.","example":["COMPUTE"],"items":{"type":"string","enum":["COMPUTE","SPOT_COMPUTE"]}},"resourceParams":{"type":"array","description":"Resource limitation parameters as captured in this version's snapshot.","items":{"type":"object","properties":{"name":{"type":"string","description":"Name of the resource parameter.","example":"minCpuCores"},"value":{"type":"string","description":"Value of the resource parameter.","example":"4"}}}},"tags":{"type":"array","description":"Tags as captured in this version's snapshot.","items":{"type":"object","properties":{"tagId":{"type":"string","example":"123"},"key":{"type":"string","example":"environment"},"value":{"type":"string","example":"production"}}}},"contentType":{"type":"string","description":"Format of the content field.","enum":["Shell"],"example":"Shell"},"content":{"type":"string","description":"Shell script content as captured in this version's snapshot.","example":"echo Hello, World!"},"isContentValid":{"type":"boolean","description":"Indicates whether the content of this version was valid at save time.","example":true},"contentParams":{"type":"array","description":"Content parameters as captured in this version's snapshot. Default values for secret parameters are not stored.","items":{"$ref":"#/components/schemas/ContentParam"}},"contentExecutionTimeout":{"type":"integer","description":"Maximum script execution time in minutes (1–30), as captured in this version's snapshot.","example":10,"maximum":30,"minimum":1},"isDefault":{"type":"boolean","description":"Indicates whether this is a built-in default (system-provided) workflow template, as captured in this version's snapshot.","example":false}},"required":["content","contentType","name","resourceTypes","status"]},"ContentParam":{"type":"object","properties":{"id":{"type":"integer","format":"int64","description":"Stable server-assigned parameter id. Returned on read; echo it back on create/update so the backend matches params by id (preserves the stored value across a rename). Null for a newly added param.\n","readOnly":false,"nullable":true},"name":{"type":"string","description":"Name of the content parameter, e.g. command1, command2.","example":"command1","maxLength":50},"defaultValue":{"type":"string","description":"Value of the content parameter.\nOn request: actual value submitted by user (plaintext).\nOn response: for isSecret=false — the current value; inside a version snapshot, the value as of that version (resolved by the pinned `vaultVersion`). For isSecret=true — always null (write-only, the secret is never returned). The internal Vault path is never returned.\n","example":"echo Hello, World!","nullable":true},"mandatory":{"type":"boolean","description":"Indicates whether the content parameter is mandatory to fill in when creating","example":true},"description":{"type":"string","description":"Human-readable description of the content parameter.","example":"Database password used by the deployment script.","maxLength":200,"nullable":true},"isSecret":{"type":"boolean","description":"If true, the parameter value is treated as a secret: stored in Vault, never returned in responses (defaultValue is always null on read), write-only on update.\nIf false or null — regular parameter, value is visible on read.\n\nTransitions on update:\n- false → true (without new defaultValue): the existing plaintext value is preserved and becomes secret-protected on subsequent reads (defaultValue returned as null, hasDefaultValue=true).\n- false → true (with new defaultValue): the new value is stored in Vault and protected.\n- true → false (without new defaultValue): the stored secret is cleared (soft-deleted from Vault); defaultValue returns null and hasDefaultValue=false. The previous secret is NEVER exposed on read.\n- true → false (with new defaultValue): the new value replaces the stored secret and is returned as a regular value going forward.\n","example":false,"nullable":true},"hasDefaultValue":{"type":"boolean","description":"Response-only. True if a stored default value exists for this parameter.\nFor secrets (defaultValue is always null on read) use this flag to detect a stored value — e.g. to show a masked placeholder in UI or to allow deploy of a mandatory secret-parameter without re-entering the value.\nIgnored on request.\n","example":true,"readOnly":true,"nullable":true},"defaultValueChanged":{"type":"boolean","description":"Request-only. Set true if the user edited defaultValue in this request.\nFor isSecret=true: false/null means \"keep stored value\" (Vault is not touched); true means apply the submitted defaultValue (null clears, value writes).\nFor isSecret=false: the flag has no effect; defaultValue is applied directly (null clears the stored value, a value replaces it).\nNot returned in responses.\n","example":false,"writeOnly":true,"nullable":true},"vaultVersion":{"type":"integer","description":"Vault version the parameter's value is pinned to. For internal use only, ignored on write.\n\nReturned only inside a version snapshot (`WorkflowTemplateVersion.snapshot.contentParams`), where it is always present but may be `null` for a parameter with no pinned version. The live workflow template endpoints never return this field.\n","example":1,"readOnly":true,"nullable":true}},"required":["mandatory","name"]},"AcceleratorType":{"type":"object","properties":{"id":{"type":"string","description":"Accelerator type ID","example":"b3f5a4cb-4e3c-4c63-8c68-e1bd96b7ae1a"},"acceleratorType":{"type":"string","description":"GPU accelerator type","example":"NVIDIA T4"}}},"Credentials":{"type":"object","properties":{"clientId":{"type":"string","description":"Client ID from the Service application in the project","example":"ad6f8c5c-223f-4102-8664-8044b84864e2"},"clientSecret":{"type":"string","description":"Client secret from the Service application in the project","example":"e0eb8a09-b7fe-4acc-a72b-79ce0dd26068"}},"required":["clientId","clientSecret"]},"DataCenter":{"type":"object","properties":{"id":{"type":"string","description":"ID of the cloud provider's data center","example":"aws-us-west-1"},"name":{"type":"string","description":"Name of the cloud provider's data center","example":"eu-north-1"},"providerId":{"type":"integer","description":"ID of the cloud provider that owns the datacenter","example":5},"providerName":{"type":"string","description":"Name of the cloud provider that owns the datacenter","example":"AWS"},"locationId":{"type":"integer","description":"ID of the data center location","example":15},"locationName":{"type":"string","description":"Name of the data center location (city or state)","example":"Stockholm"}}},"KubernetesListResponse":{"type":"array","example":[{"id":108182,"createdAt":"2026-03-13T08:22:47.05","createdById":2394,"createdByName":"Automation User","modifiedAt":"2026-03-13T08:39:48.078","modifiedByName":"Automation User","modifiedById":2394,"name":"default-k8s-managed-cluster-name","version":"1.35","deploymentLocation":"eu","k8sConnectionType":"direct_connect","domainName":null,"status":"ACTIVE","controlPlaneStatus":"ACTIVE","cost":{"unit":"MONTHS","currency":"EUR","price":399.089284},"nodeGroups":[{"name":"Nodes","nodes":[{"id":108183,"createdAt":"2026-03-13T08:22:47.059","name":"cffjqu-node","status":"POWERED_ON","instanceType":"on_demand","nodeStatus":"ACTIVE","provider":{"id":79,"name":"AWS"},"location":{"id":6,"name":"London","country":"United Kingdom","continent":"Europe","region":"EMEA","latitude":51.50735,"longitude":-0.1277583},"dataCenter":{"id":"aws-eu-west-2","name":"eu-west-2","providerName":"AWS","providerId":79,"locationId":6,"locationName":"London"},"os":{"id":48,"family":"Linux","type":"Ubuntu","architecture":"x86-64","version":"24.04"},"cloudNetworkType":"multi-cloud","vCpuType":"hpc","vCpu":4,"ramGb":16,"disks":[{"id":108184,"name":"volume-9k61k2","sizeGb":128,"typeId":2,"type":"ssd","isBootable":true}],"networks":[{"id":108284,"ip":"10.112.17.28","networkTypeId":2,"networkType":"PRIVATE","ipVersion":null},{"id":108285,"ip":"18.132.41.135","networkTypeId":1,"networkType":"PUBLIC","ipVersion":null}],"cost":{"unit":"MONTHS","currency":"EUR","price":399.089284},"securityGroup":{"id":1764,"name":"sg-567387"},"accelerator":{"acceleratorTypeId":"53b7db26-4a1b-42f7-97a5-592edd685c5a","acceleratorType":"T4","accelerators":1,"totalGpuMemoryGb":16},"localDisks":[{"sizeTb":0.125,"typeId":1,"type":"ssd-plus"}]}],"status":"ACTIVE","scalingPolicy":"SCALE_UP_ONLY"}],"autoscalingConfigs":[{"groupName":"nodegroup-vqq","dataCenterId":"aws-eu-north-1","minimumNodes":1,"maximumNodes":5,"targetNodes":1,"minimumVCpus":1,"maximumVCpus":null,"targetVCpus":null,"nodeGroupPriceLimit":50,"useOnDemandInstancesInsteadOfSpots":true,"spotPercent":50,"spotMarkup":5,"userLabels":[{"key":"workload","value":"batch"}],"configurationPriorities":[{"vCpuType":"shared","vCpu":2,"ramGb":4,"volumeGb":16,"volumeType":"ssd","priority":"high"}],"limitsNotice":null}]}],"items":{"type":"object","properties":{"id":{"type":"integer","description":"ID of the Kubernetes cluster","example":108182},"createdAt":{"type":"string","description":"Date and time of the Kubernetes cluster creation","example":"2026-03-13T08:22:47.05"},"createdById":{"type":"integer","description":"ID of the user who created the Kubernetes cluster","example":2394},"createdByName":{"type":"string","description":"Name of the user who created the Kubernetes cluster","example":"Automation User"},"modifiedAt":{"type":"string","description":"Date and time when the Kubernetes cluster was last edited","example":"2026-03-13T08:39:48.078"},"modifiedByName":{"type":"string","description":"Name of the user who last edited the Kubernetes cluster","example":"Automation User"},"modifiedById":{"type":"integer","description":"ID of the user who last edited the Kubernetes cluster","example":2394},"name":{"type":"string","description":"Name of the Kubernetes cluster","example":"default-k8s-managed-cluster-name"},"version":{"type":"string","description":"Version of the Kubernetes cluster","example":"1.35"},"deploymentLocation":{"type":"string","description":"Deployment region of the Kubernetes cluster","enum":["eu","us"],"example":"eu"},"k8sConnectionType":{"type":"string","description":"Kubernetes connection type","enum":["direct_connect","internet_connect"],"example":"direct_connect"},"domainName":{"type":"string","description":"Domain attached to the Kubernetes cluster","nullable":true,"example":null},"status":{"type":"string","description":"Status of the Kubernetes cluster","example":"ACTIVE"},"controlPlaneStatus":{"type":"string","description":"Control plane status","enum":["CREATING","ACTIVE","UPDATING","DEGRADED","UNHEALTHY","FAILED","DESTRUCTION"],"example":"ACTIVE"},"cost":{"type":"object","description":"Total cost of the Kubernetes cluster for the period","properties":{"unit":{"type":"string","description":"Cost period","example":"MONTHS"},"currency":{"type":"string","description":"Currency of the cost","example":"EUR"},"price":{"type":"number","description":"Cost for the period","example":399.089284}}},"nodeGroups":{"type":"array","description":"List of the worker node groups","items":{"type":"object","properties":{"name":{"type":"string","description":"Name of the worker node group","example":"Nodes"},"nodes":{"type":"array","description":"List of the worker nodes","items":{"type":"object","properties":{"id":{"type":"integer","description":"ID of the worker node","example":108183},"createdAt":{"type":"string","description":"Date and time when the worker node was created","example":"2026-03-13T08:22:47.059"},"name":{"type":"string","description":"Name of the worker node","example":"cffjqu-node"},"status":{"type":"string","description":"Status of the worker node","enum":["POWERED_ON","POWERED_OFF","BUSY","DRAFT"],"example":"POWERED_ON"},"instanceType":{"type":"string","description":"How the node's VM was purchased. A `spot` node is cheaper, but the provider may reclaim it at any time and the platform then recreates it. Absent when the purchase mode cannot be resolved — read that as `on_demand`.","enum":["on_demand","spot"],"example":"spot"},"nodeStatus":{"type":"string","description":"Worker node lifecycle status","enum":["PROVISIONING","JOINING","ACTIVE","PENDING","DELETING","FAILED"],"example":"ACTIVE"},"provider":{"type":"object","properties":{"id":{"type":"integer","description":"ID of the cloud provider of the worker node","example":79},"name":{"type":"string","description":"Name of the cloud provider of the worker node","example":"AWS"}}},"location":{"type":"object","properties":{"id":{"type":"integer","description":"Location ID of the worker node","example":6},"name":{"type":"string","description":"Location name of the worker node","example":"London"},"country":{"type":"string","description":"Country of the worker node location","example":"United Kingdom"},"continent":{"type":"string","description":"Name of the geographical continent","example":"Europe"},"region":{"type":"string","description":"Name of the geographical region","example":"EMEA"},"latitude":{"type":"number","format":"double","description":"Approximate latitude of the geographical location","example":51.50735},"longitude":{"type":"number","format":"double","description":"Approximate longitude of the geographical location","example":-0.1277583}}},"dataCenter":{"type":"object","properties":{"id":{"type":"string","description":"ID of the cloud provider's data center","example":"aws-eu-west-2"},"name":{"type":"string","description":"Name of the cloud provider's data center","example":"eu-west-2"},"providerName":{"type":"string","description":"Name of the cloud provider","example":"AWS"},"providerId":{"type":"integer","description":"ID of the cloud provider","example":79},"locationId":{"type":"integer","description":"Location ID","example":6},"locationName":{"type":"string","description":"Location name","example":"London"}}},"os":{"type":"object","properties":{"id":{"type":"integer","description":"ID of the operating system","example":48},"family":{"type":"string","description":"Family of the operating system","example":"Linux"},"type":{"type":"string","description":"Type of the operating system","example":"Ubuntu"},"architecture":{"type":"string","description":"Architecture of the operating system","example":"x86-64"},"version":{"type":"string","description":"Version of the operating system","example":"24.04"}}},"cloudNetworkType":{"type":"string","description":"Type of the cloud network","enum":["multi-cloud","default"],"example":"multi-cloud"},"vCpuType":{"type":"string","description":"Type of the virtual Central Processing Unit","enum":["shared","standard","hpc"],"example":"hpc"},"vCpu":{"type":"integer","description":"Number of virtual Central Processing Units (vCPUs)","example":4},"ramGb":{"type":"integer","description":"Capacity of the RAM in gigabytes","example":16},"disks":{"type":"array","description":"Volumes attached","items":{"type":"object","properties":{"id":{"type":"integer","description":"Volume ID","example":108184},"name":{"type":"string","description":"Volume name","example":"volume-9k61k2"},"sizeGb":{"type":"integer","description":"Volume size in gigabytes","example":128},"typeId":{"type":"integer","description":"ID of the volume type","example":2},"type":{"type":"string","description":"Volume type","example":"ssd"},"isBootable":{"type":"boolean","description":"Indicates whether the volume is bootable or not","example":true},"deviceIdentifier":{"type":"string","description":"Device identifier of the volume as seen by the operating system","example":"/dev/sda","nullable":true}}}},"networks":{"type":"array","description":"Public and private networks","items":{"type":"object","properties":{"id":{"type":"integer","description":"Network ID","example":108284},"ip":{"type":"string","description":"Network IP. Null for nodes that have not yet received an IP address (e.g. PENDING or FAILED nodes).","example":"10.112.17.28","nullable":true},"networkTypeId":{"type":"integer","description":"ID of the network type","example":2},"networkType":{"type":"string","description":"Network type","example":"PRIVATE"},"ipVersion":{"type":"string","description":"IP version","nullable":true,"example":null}}}},"cost":{"type":"object","properties":{"unit":{"type":"string","description":"Period","example":"MONTHS"},"currency":{"type":"string","description":"Currency of the cost","example":"EUR"},"price":{"type":"number","description":"Cost for the period","example":399.089284}}},"securityGroup":{"type":"object","properties":{"id":{"type":"integer","description":"ID of the security group","example":1764},"name":{"type":"string","description":"Name of the security group","example":"sg-567387"}},"nullable":true},"accelerator":{"type":"object","properties":{"acceleratorTypeId":{"type":"string","description":"GPU accelerator type ID","example":"53b7db26-4a1b-42f7-97a5-592edd685c5a"},"acceleratorType":{"type":"string","description":"GPU accelerator type","example":"T4"},"accelerators":{"type":"number","description":"Quantity of GPU accelerators","example":1},"totalGpuMemoryGb":{"type":"integer","description":"Total GPU memory","example":16}},"nullable":true},"localDisks":{"type":"array","description":"Local SSD storage directly attached to the host","items":{"type":"object","properties":{"sizeTb":{"type":"number","description":"Volume size in TB","example":0.125},"typeId":{"type":"integer","description":"ID of the volume type","example":1,"nullable":true},"type":{"type":"string","description":"Volume type","example":"ssd-plus"}}},"nullable":true}}}},"status":{"type":"string","description":"Node group (ASG) runtime status. Null for static (non-autoscaling) node groups.","enum":["CREATING","ACTIVE","SCALING_UP","SCALING_DOWN","READY","UNHEALTHY","DESTRUCTION"],"example":"UNHEALTHY","nullable":true},"scalingPolicy":{"type":"string","description":"Autoscaling policy applied to the node group. Null for static node groups.","enum":["ENABLED","SCALE_UP_ONLY","SCALE_DOWN_ONLY","DISABLED"],"example":"SCALE_UP_ONLY","nullable":true}}}},"autoscalingConfigs":{"type":"array","description":"Configurations of the autoscaling group","example":[],"items":{"type":"object","properties":{"groupName":{"type":"string","description":"Name of the autoscaling group","example":"nodegroup"},"dataCenterId":{"type":"string","description":"ID of the data center","example":"aws-us-west-1"},"minimumNodes":{"type":"integer","description":"Minimum number of nodes. Required when using node-count based autoscaling. Must be null if `minimumVCpus` is set.","example":1},"maximumNodes":{"type":"integer","description":"Maximum number of nodes. Required when using node-count based autoscaling. Must be null if `maximumVCpus` is set.","example":2},"targetNodes":{"type":"integer","deprecated":true,"description":"Deprecated alias of minOnDemandCount (former desired total node count). Used only when minOnDemandCount is not provided.","example":1},"minimumVCpus":{"type":"integer","description":"Minimum number of vCPUs. Required when using vCPU-count based autoscaling. Must be null if `minimumNodes` is set.","nullable":true,"example":null},"maximumVCpus":{"type":"integer","description":"Maximum number of vCPUs. Required when using vCPU-count based autoscaling. Must be null if `maximumNodes` is set.","nullable":true,"example":null},"targetVCpus":{"type":"integer","deprecated":true,"description":"Deprecated alias of minOnDemandCount (former desired total vCPU count). Used only when minOnDemandCount is not provided.","nullable":true,"example":null},"minOnDemandCount":{"type":"integer","description":"Minimum guaranteed number of on-demand (non-spot) units in the group — nodes for node-count scaling, vCPUs for vCPU-count scaling. Allowed range is 0..maximum. It constrains the composition of the existing nodes, not the group size. Defaults to 0 (or to the deprecated target field when provided).","example":1,"nullable":true},"nodeGroupPriceLimit":{"type":"number","description":"Price limit of the autoscaling group","example":5,"nullable":true},"useOnDemandInstancesInsteadOfSpots":{"type":"boolean","description":"Use on-demand compute instances instead of spot compute instances","example":true},"spotPercent":{"type":"integer","description":"Percentage of spot instances in the autoscaling group","example":5},"spotMarkup":{"type":"number","description":"Extra markup to the spot instance price","example":5},"userLabels":{"type":"array","description":"ASG label applied to nodes created by this autoscaling group","items":{"type":"object","properties":{"key":{"type":"string","description":"ASG label key","example":"workload"},"value":{"type":"string","description":"ASG label value. Required and non-nullable; empty string is allowed.","example":"batch","minLength":0}},"required":["key","value"]},"nullable":true},"configurationPriorities":{"type":"array","description":"Compute instance configurations with priorities","items":{"type":"object","properties":{"vCpuType":{"type":"string","description":"Type of the virtual Central Processing Unit (vCPU)","enum":["shared","standard","hpc"],"example":"shared"},"vCpu":{"type":"integer","description":"Number of virtual Central Processing Units (vCPUs)","example":2},"ramGb":{"type":"integer","description":"Capacity of the RAM in gigabytes","example":4},"volumeGb":{"type":"integer","description":"Capacity of the volume in gigabytes","example":16},"volumeType":{"type":"string","description":"Volume type","enum":["ssd","ssd-plus"],"example":"ssd"},"priority":{"type":"string","description":"Configuration priority","enum":["high","med","low"],"example":"high"}}}},"limitsNotice":{"type":"string","description":"Limits notice message","nullable":true}}},"nullable":true}}}},"KubernetesGetResponse":{"type":"object","example":{"id":108182,"createdAt":"2026-03-13T08:22:47.05","createdById":2394,"createdByName":"Automation User","modifiedAt":"2026-03-13T08:39:48.078","modifiedByName":"Automation User","modifiedById":2394,"name":"default-k8s-managed-cluster-name","version":"1.35","deploymentLocation":"eu","k8sConnectionType":"direct_connect","domainName":null,"status":"ACTIVE","controlPlaneStatus":"ACTIVE","cost":{"unit":"MONTHS","currency":"EUR","price":399.089284},"nodeGroups":[{"name":"Nodes","nodes":[{"id":108183,"createdAt":"2026-03-13T08:22:47.059","name":"cffjqu-node","status":"POWERED_ON","instanceType":"on_demand","nodeStatus":"ACTIVE","provider":{"id":79,"name":"AWS"},"location":{"id":6,"name":"London","country":"United Kingdom","continent":"Europe","region":"EMEA","latitude":51.50735,"longitude":-0.1277583},"dataCenter":{"id":"aws-eu-west-2","name":"eu-west-2","providerName":"AWS","providerId":79,"locationId":6,"locationName":"London"},"os":{"id":48,"family":"Linux","type":"Ubuntu","architecture":"x86-64","version":"24.04"},"cloudNetworkType":"multi-cloud","vCpuType":"hpc","vCpu":4,"ramGb":16,"disks":[{"id":108184,"name":"volume-9k61k2","sizeGb":128,"typeId":2,"type":"ssd","isBootable":true}],"networks":[{"id":108284,"ip":"10.112.17.28","networkTypeId":2,"networkType":"PRIVATE","ipVersion":null},{"id":108285,"ip":"18.132.41.135","networkTypeId":1,"networkType":"PUBLIC","ipVersion":null}],"cost":{"unit":"MONTHS","currency":"EUR","price":399.089284},"securityGroup":{"id":1764,"name":"sg-uat"},"accelerator":{"acceleratorTypeId":"53b7db26-4a1b-42f7-97a5-592edd685c5a","acceleratorType":"T4","accelerators":1,"totalGpuMemoryGb":16},"localDisks":[{"sizeTb":0.125,"typeId":1,"type":"ssd-plus"}]}],"status":"ACTIVE","scalingPolicy":"SCALE_UP_ONLY"}],"autoscalingConfigs":[{"groupName":"autoscalenodegroup-j6bj","dataCenterId":"aws-eu-west-1","minimumNodes":1,"maximumNodes":5,"targetNodes":1,"minimumVCpus":null,"maximumVCpus":null,"targetVCpus":null,"nodeGroupPriceLimit":50,"useOnDemandInstancesInsteadOfSpots":false,"spotPercent":50,"spotMarkup":5,"userLabels":[{"key":"workload","value":"batch"}],"configurationPriorities":[{"vCpuType":"shared","vCpu":2,"ramGb":4,"volumeGb":16,"volumeType":"ssd","priority":"high"}],"limitsNotice":null}]},"properties":{"id":{"type":"integer","description":"ID of the Kubernetes cluster","example":108182},"createdAt":{"type":"string","description":"Date and time of the Kubernetes cluster creation","example":"2026-03-13T08:22:47.05"},"createdById":{"type":"integer","description":"ID of the user who created the Kubernetes cluster","example":2394},"createdByName":{"type":"string","description":"Name of the user who created the Kubernetes cluster","example":"Automation User"},"modifiedAt":{"type":"string","description":"Date and time when the Kubernetes cluster was last edited","example":"2026-03-13T08:39:48.078"},"modifiedByName":{"type":"string","description":"Name of the user who last edited the Kubernetes cluster","example":"Automation User"},"modifiedById":{"type":"integer","description":"ID of the user who last edited the Kubernetes cluster","example":2394},"name":{"type":"string","description":"Name of the Kubernetes cluster","example":"default-k8s-managed-cluster-name"},"version":{"type":"string","description":"Version of the Kubernetes cluster","example":"1.35"},"deploymentLocation":{"type":"string","description":"Deployment region of the Kubernetes cluster","enum":["eu","us"],"example":"eu"},"k8sConnectionType":{"type":"string","description":"Kubernetes connection type","enum":["direct_connect","internet_connect"],"example":"direct_connect"},"domainName":{"type":"string","description":"Domain attached to the Kubernetes cluster","nullable":true,"example":null},"status":{"type":"string","description":"Status of the Kubernetes cluster","example":"ACTIVE"},"controlPlaneStatus":{"type":"string","description":"Control plane status","enum":["CREATING","ACTIVE","UPDATING","DEGRADED","UNHEALTHY","FAILED","DESTRUCTION"],"example":"ACTIVE"},"cost":{"type":"object","description":"Total cost of the Kubernetes cluster for the period","properties":{"unit":{"type":"string","description":"Cost period","example":"MONTHS"},"currency":{"type":"string","description":"Currency of the cost","example":"EUR"},"price":{"type":"number","description":"Cost for the period","example":399.089284}}},"nodeGroups":{"type":"array","description":"List of the worker node groups","items":{"type":"object","properties":{"name":{"type":"string","description":"Name of the worker node group","example":"Nodes"},"nodes":{"type":"array","description":"List of the worker nodes","items":{"type":"object","properties":{"id":{"type":"integer","description":"ID of the worker node","example":108183},"createdAt":{"type":"string","description":"Date and time when the worker node was created","example":"2026-03-13T08:22:47.059"},"name":{"type":"string","description":"Name of the worker node","example":"cffjqu-node"},"status":{"type":"string","description":"Status of the worker node","enum":["POWERED_ON","POWERED_OFF","BUSY","DRAFT"],"example":"POWERED_ON"},"instanceType":{"type":"string","description":"How the node's VM was purchased. A `spot` node is cheaper, but the provider may reclaim it at any time and the platform then recreates it. Absent when the purchase mode cannot be resolved — read that as `on_demand`.","enum":["on_demand","spot"],"example":"spot"},"nodeStatus":{"type":"string","description":"Worker node lifecycle status","enum":["PROVISIONING","JOINING","ACTIVE","PENDING","DELETING","FAILED"],"example":"ACTIVE"},"provider":{"type":"object","description":"Cloud provider of the worker node","properties":{"id":{"type":"integer","description":"ID of the cloud provider of the worker node","example":79},"name":{"type":"string","description":"Name of the cloud provider of the worker node","example":"AWS"}}},"location":{"type":"object","description":"Geographic location where the worker node is deployed","properties":{"id":{"type":"integer","description":"Location ID of the worker node","example":6},"name":{"type":"string","description":"Location name of the worker node","example":"London"},"country":{"type":"string","description":"Country of the worker node location","example":"United Kingdom"},"continent":{"type":"string","description":"Name of the geographical continent","example":"Europe"},"region":{"type":"string","description":"Name of the geographical region","example":"EMEA"},"latitude":{"type":"number","format":"double","description":"Approximate latitude of the geographical location","example":51.50735},"longitude":{"type":"number","format":"double","description":"Approximate longitude of the geographical location","example":-0.1277583}}},"dataCenter":{"type":"object","description":"Data center where the worker node is deployed","properties":{"id":{"type":"string","description":"ID of the cloud provider's data center","example":"aws-eu-west-2"},"name":{"type":"string","description":"Name of the cloud provider's data center","example":"eu-west-2"},"providerName":{"type":"string","description":"Name of the cloud provider","example":"AWS"},"providerId":{"type":"integer","description":"ID of the cloud provider","example":79},"locationId":{"type":"integer","description":"Location ID","example":6},"locationName":{"type":"string","description":"Location name","example":"London"}}},"os":{"type":"object","description":"Operating system","properties":{"id":{"type":"integer","description":"ID of the operating system","example":48},"family":{"type":"string","description":"Family of the operating system","example":"Linux"},"type":{"type":"string","description":"Type of the operating system","example":"Ubuntu"},"architecture":{"type":"string","description":"Architecture of the operating system","example":"x86-64"},"version":{"type":"string","description":"Version of the operating system","example":"24.04"}}},"cloudNetworkType":{"type":"string","description":"Type of the cloud network","enum":["multi-cloud","default"],"example":"multi-cloud"},"vCpuType":{"type":"string","description":"Type of the virtual Central Processing Unit","enum":["shared","standard","hpc"],"example":"hpc"},"vCpu":{"type":"integer","description":"Number of virtual Central Processing Units (vCPUs)","example":4},"ramGb":{"type":"integer","description":"Capacity of the RAM in gigabytes","example":16},"disks":{"type":"array","description":"Volumes attached","items":{"type":"object","properties":{"id":{"type":"integer","description":"Volume ID","example":108184},"name":{"type":"string","description":"Volume name","example":"volume-9k61k2"},"sizeGb":{"type":"integer","description":"Volume size in gigabytes","example":128},"typeId":{"type":"integer","description":"ID of the volume type","example":2},"type":{"type":"string","description":"Volume type","example":"ssd"},"isBootable":{"type":"boolean","description":"Indicates whether the volume is bootable or not","example":true},"deviceIdentifier":{"type":"string","description":"Device identifier of the volume as seen by the operating system","example":"/dev/sda","nullable":true}}}},"networks":{"type":"array","description":"Public and private networks","items":{"type":"object","properties":{"id":{"type":"integer","description":"Network ID","example":108284},"ip":{"type":"string","description":"Network IP. Null for nodes that have not yet received an IP address (e.g. PENDING or FAILED nodes).","example":"10.112.17.28","nullable":true},"networkTypeId":{"type":"integer","description":"ID of the network type","example":2},"networkType":{"type":"string","description":"Network type","example":"PRIVATE"},"ipVersion":{"type":"string","description":"IP version","nullable":true,"example":null}}}},"cost":{"type":"object","description":"Total cost of the worker node for the period","properties":{"unit":{"type":"string","description":"Period","example":"MONTHS"},"currency":{"type":"string","description":"Currency of the cost","example":"EUR"},"price":{"type":"number","description":"Cost for the period","example":399.089284}}},"securityGroup":{"type":"object","description":"Security group of the worker node","properties":{"id":{"type":"integer","description":"ID of the security group","example":1764},"name":{"type":"string","description":"Name of the security group","example":"sg-uat"}},"nullable":true},"accelerator":{"type":"object","description":"GPU accelerator","properties":{"acceleratorTypeId":{"type":"string","description":"GPU accelerator type ID","example":"53b7db26-4a1b-42f7-97a5-592edd685c5a"},"acceleratorType":{"type":"string","description":"GPU accelerator type","example":"T4"},"accelerators":{"type":"number","description":"Quantity of GPU accelerators","example":1},"totalGpuMemoryGb":{"type":"integer","description":"Total GPU memory","example":16}},"nullable":true},"localDisks":{"type":"array","description":"Local SSD storage directly attached to the host","items":{"type":"object","properties":{"sizeTb":{"type":"number","description":"Volume size in TB","example":0.125},"typeId":{"type":"integer","description":"ID of the volume type","example":1,"nullable":true},"type":{"type":"string","description":"Volume type","example":"ssd-plus"}}},"nullable":true}}}},"status":{"type":"string","description":"Node group (ASG) runtime status. Null for static (non-autoscaling) node groups.","enum":["CREATING","ACTIVE","SCALING_UP","SCALING_DOWN","READY","UNHEALTHY","DESTRUCTION"],"example":"UNHEALTHY","nullable":true},"scalingPolicy":{"type":"string","description":"Autoscaling policy applied to the node group. Null for static node groups.","enum":["ENABLED","SCALE_UP_ONLY","SCALE_DOWN_ONLY","DISABLED"],"example":"SCALE_UP_ONLY","nullable":true}}}},"autoscalingConfigs":{"type":"array","description":"Configurations of the autoscaling group","example":[],"items":{"type":"object","properties":{"groupName":{"type":"string","description":"Name of the autoscaling group","example":"nodegroup"},"dataCenterId":{"type":"string","description":"ID of the data center","example":"aws-us-west-1"},"minimumNodes":{"type":"integer","description":"Minimum number of nodes. Required when using node-count based autoscaling. Must be null if `minimumVCpus` is set.","example":1,"nullable":true},"maximumNodes":{"type":"integer","description":"Maximum number of nodes.Required when using node-count based autoscaling. Must be null if `maximumVCpus` is set.","example":2,"nullable":true},"targetNodes":{"type":"integer","deprecated":true,"description":"Target number of nodes. Required when using node-count based autoscaling. Must be null if `targetVCpus` is set.","example":1,"nullable":true},"minimumVCpus":{"type":"integer","description":"Minimum number of vCPUs. Required when using vCPU-count based autoscaling. Must be null if `minimumNodes` is set.","nullable":true,"example":null},"maximumVCpus":{"type":"integer","description":"Maximum number of vCPUs. Required when using vCPU-count based autoscaling. Must be null if `maximumNodes` is set.","nullable":true,"example":null},"targetVCpus":{"type":"integer","deprecated":true,"description":"Target number of vCPUs. Required when using vCPU-count based autoscaling. Must be null if `targetNodes` is set.","nullable":true,"example":null},"minOnDemandCount":{"type":"integer","description":"Minimum guaranteed number of on-demand (non-spot) units in the group — nodes for node-count scaling, vCPUs for vCPU-count scaling. Allowed range is 0..maximum. It constrains the composition of the existing nodes, not the group size. Defaults to 0 (or to the deprecated target field when provided).","example":1,"nullable":true},"nodeGroupPriceLimit":{"type":"number","description":"Price limit of the autoscaling group","example":5,"nullable":true},"useOnDemandInstancesInsteadOfSpots":{"type":"boolean","description":"Use on-demand compute instances instead of spot compute instances","example":true},"spotPercent":{"type":"integer","description":"Percentage of spot instances in the autoscaling group","example":5},"spotMarkup":{"type":"number","description":"Extra markup to the spot instance price","example":5},"userLabels":{"type":"array","description":"ASG labels applied to nodes created by this autoscaling group","items":{"type":"object","properties":{"key":{"type":"string","description":"ASG label key","example":"workload"},"value":{"type":"string","description":"ASG label value. Required and non-nullable; empty string is allowed.","example":"batch","minLength":0}},"required":["key","value"]},"nullable":true},"configurationPriorities":{"type":"array","description":"Compute instance configurations with priorities","items":{"type":"object","properties":{"vCpuType":{"type":"string","description":"Type of the virtual Central Processing Unit (vCPU)","enum":["shared","standard","hpc"],"example":"shared"},"vCpu":{"type":"integer","description":"Number of virtual Central Processing Units (vCPUs)","example":2},"ramGb":{"type":"integer","description":"Capacity of the RAM in gigabytes","example":4},"volumeGb":{"type":"integer","description":"Capacity of the volume in gigabytes","example":16},"volumeType":{"type":"string","description":"Volume type","enum":["ssd","ssd-plus"],"example":"ssd"},"priority":{"type":"string","description":"Configuration priority","enum":["high","med","low"],"example":"high"}}}},"limitsNotice":{"type":"string","description":"Limits notice message","nullable":true}}},"nullable":true}}},"KubernetesCreateRequest":{"type":"object","example":{"deploymentLocation":"eu","k8sVersion":"1.35","projectName":"automation-project","name":"default-k8s-managed-cluster-name","k8sConnectionType":"internet_connect","workerNodes":[{"name":"vm-automation-co2ep","providerId":75,"locationId":78,"dataCenterId":"gcp-europe-west4-a","osId":48,"osType":"Ubuntu","osVersion":"24.04","cloudNetworkTypes":["default"],"vCpuType":"standard","vCpu":4,"ramGb":16,"volumeGb":32,"volumeType":"ssd","acceleratorTypeId":"7bf9d828-e3e8-496f-9901-9045640bb287","accelerators":1,"instanceType":"on_demand"}],"autoscalingConfigs":[{"groupName":"autoscalenodegroup-j6bj","dataCenterId":"aws-eu-west-1","minimumNodes":1,"maximumNodes":5,"targetNodes":1,"useOnDemandInstancesInsteadOfSpots":false,"spotPercent":50,"spotMarkup":5,"userLabels":[{"key":"workload","value":"batch"}],"configurationPriorities":[{"ramGb":4,"volumeGb":16,"volumeType":"ssd","priority":"high","vCpuType":"shared","vCpu":2}]}]},"properties":{"deploymentLocation":{"type":"string","description":"Deployment location","enum":["eu","us"],"example":"eu"},"k8sVersion":{"type":"string","description":"Kubernetes version","example":"1.35"},"projectName":{"type":"string","description":"Project name","example":"automation-project"},"name":{"type":"string","description":"Kubernetes cluster name","example":"default-k8s-managed-cluster-name"},"k8sConnectionType":{"type":"string","description":"Kubernetes connection type","enum":["direct_connect","internet_connect"],"example":"internet_connect"},"workerNodes":{"type":"array","description":"List of worker nodes.","items":{"type":"object","properties":{"name":{"type":"string","description":"Worker node name","example":"vm-automation-co2ep"},"providerId":{"type":"integer","description":"Provider ID","example":75},"locationId":{"type":"integer","description":"Location ID","example":78},"dataCenterId":{"type":"string","description":"Data center ID","example":"gcp-europe-west4-a"},"osId":{"type":"integer","description":"Operating system ID","example":48},"osType":{"type":"string","description":"Operating system type","example":"Ubuntu"},"osVersion":{"type":"string","description":"Operating system version","example":"24.04"},"cloudNetworkTypes":{"type":"array","description":"Cloud network types","items":{"type":"string","example":"default"}},"vCpuType":{"type":"string","description":"Type of the virtual Central Processing Unit (vCPU)","enum":["shared","standard","hpc"],"example":"standard"},"vCpu":{"type":"integer","description":"Number of virtual Central Processing Units (vCPUs)","example":4},"ramGb":{"type":"integer","description":"Capacity of the RAM in gigabytes","example":16},"volumeGb":{"type":"integer","description":"Capacity of the volume in gigabytes","example":32},"volumeType":{"type":"string","description":"Volume type","enum":["ssd","ssd-plus"],"example":"ssd"},"acceleratorTypeId":{"type":"string","description":"GPU accelerator type identifier","example":"7bf9d828-e3e8-496f-9901-9045640bb287"},"accelerators":{"type":"integer","description":"Number of GPUs for the node configuration","example":1},"instanceType":{"type":"string","default":"on_demand","description":"How the node's VM is purchased. A spot instance is cheaper, but the provider may reclaim it at any time and the platform then recreates the node. At least one `on_demand` node is required per cluster.","enum":["on_demand","spot"],"example":"on_demand"}},"required":["dataCenterId","name","ramGb","vCpu","vCpuType","volumeGb","volumeType"]},"nullable":true},"autoscalingConfigs":{"type":"array","description":"Configurations of the autoscaling group. If `workerNodes` is omitted or empty, `autoscalingConfigs` must contain at least one group. Each group must have either node-count scaling fields (`minimumNodes`, `maximumNodes`, `targetNodes`) or vCPU-count scaling fields (`minimumVCpus`, `maximumVCpus`, `targetVCpus`) — but not both and not neither.","items":{"type":"object","properties":{"groupName":{"type":"string","description":"Name of the autoscaling group","example":"autoscalenodegroup-j6bj"},"dataCenterId":{"type":"string","description":"ID of the data center","example":"aws-eu-west-1"},"minimumNodes":{"type":"integer","description":"Minimum number of nodes","example":1},"maximumNodes":{"type":"integer","description":"Maximum number of nodes","example":5},"targetNodes":{"type":"integer","deprecated":true,"description":"Deprecated alias of minOnDemandCount (former desired total node count). Used only when minOnDemandCount is not provided.","example":1},"minimumVCpus":{"type":"integer","description":"Minimum number of vCPUs.Required when using vCPU-count based autoscaling. Must be null if `minimumNodes` is set.","nullable":true,"example":null},"maximumVCpus":{"type":"integer","description":"Maximum number of vCPUs. Required when using vCPU-count based autoscaling. Must be null if `maximumNodes` is set.","nullable":true,"example":null},"targetVCpus":{"type":"integer","deprecated":true,"description":"Deprecated alias of minOnDemandCount (former desired total vCPU count). Used only when minOnDemandCount is not provided.","nullable":true,"example":null},"minOnDemandCount":{"type":"integer","description":"Minimum guaranteed number of on-demand (non-spot) units in the group — nodes for node-count scaling, vCPUs for vCPU-count scaling. Allowed range is 0..maximum. It constrains the composition of the existing nodes, not the group size. Defaults to 0 (or to the deprecated target field when provided).","example":1,"nullable":true},"useOnDemandInstancesInsteadOfSpots":{"type":"boolean","description":"Use on-demand compute instances instead of spot compute instances","example":false},"spotPercent":{"type":"integer","description":"Percentage of spot instances in the autoscaling group","example":50},"spotMarkup":{"type":"number","description":"Extra markup to the spot instance price","example":5},"userLabels":{"type":"array","description":"ASG labels applied to nodes created by this autoscaling group","items":{"type":"object","properties":{"key":{"type":"string","description":"ASG label key","example":"workload"},"value":{"type":"string","description":"ASG label value","example":"batch"}},"required":["key","value"]},"nullable":true},"configurationPriorities":{"type":"array","description":"Compute instance configurations with priorities","items":{"type":"object","properties":{"ramGb":{"type":"integer","description":"Capacity of the RAM in gigabytes","example":4},"volumeGb":{"type":"integer","description":"Capacity of the volume in gigabytes","example":16},"volumeType":{"type":"string","description":"Volume type","enum":["ssd","ssd-plus"],"example":"ssd"},"priority":{"type":"string","description":"Configuration priority","enum":["high","med","low"],"example":"high"},"vCpuType":{"type":"string","description":"Type of the virtual Central Processing Unit (vCPU)","enum":["shared","standard","hpc"],"example":"shared"},"vCpu":{"type":"integer","description":"Number of virtual Central Processing Units (vCPUs)","example":2}}}}}},"nullable":true}},"required":["deploymentLocation","k8sConnectionType","name"]},"KubernetesCreateResponse":{"type":"object","example":{"id":108301,"createdAt":"2026-03-13T16:14:01.833","createdById":2427,"createdByName":"Automation User","modifiedAt":"2026-03-13T16:14:01.833","modifiedByName":"Automation User","modifiedById":2427,"name":"default-k8s-managed-cluster-name","version":"1.35","deploymentLocation":"eu","k8sConnectionType":"internet_connect","domainName":null,"status":"ENV_DEPLOYMENT","controlPlaneStatus":"CREATING","cost":{"unit":"MONTHS","currency":"EUR","price":472.576455288452},"nodeGroups":[{"name":"Nodes","nodes":[{"id":108302,"createdAt":"2026-03-13T16:14:01.882","name":"hrvwax-dfdotq-vm-automation-co2ep","status":"DRAFT","instanceType":"on_demand","nodeStatus":"ACTIVE","provider":{"id":78,"name":"GCP"},"location":{"id":78,"name":"Eemshaven","country":"Netherlands","continent":"Europe","region":"EMEA","latitude":53.442333,"longitude":6.8253303},"dataCenter":{"id":"gcp-europe-west4-a","name":"europe-west4-a","providerName":"GCP","providerId":78,"locationId":78,"locationName":"Eemshaven"},"os":{"id":48,"family":"Linux","type":"Ubuntu","architecture":"x86-64","version":"24.04"},"cloudNetworkType":"default","vCpuType":"standard","vCpu":4,"ramGb":16,"disks":[{"id":108303,"name":"volume-ax8keo","sizeGb":32,"typeId":2,"type":"ssd","isBootable":true}],"networks":null,"cost":{"unit":"MONTHS","currency":"EUR","price":472.576455},"securityGroup":null,"accelerator":{"acceleratorTypeId":"7bf9d828-e3e8-496f-9901-9045640bb287","acceleratorType":"NVIDIA L4","accelerators":1,"totalGpuMemoryGb":24},"localDisks":null}],"status":"ACTIVE","scalingPolicy":"SCALE_UP_ONLY"}],"autoscalingConfigs":[{"groupName":"autoscalenodegroup-j6bj","dataCenterId":"aws-eu-west-1","minimumNodes":1,"maximumNodes":5,"targetNodes":1,"minimumVCpus":null,"maximumVCpus":null,"targetVCpus":null,"nodeGroupPriceLimit":50,"useOnDemandInstancesInsteadOfSpots":false,"spotPercent":50,"spotMarkup":5,"userLabels":[{"key":"workload","value":"batch"}],"configurationPriorities":[{"vCpuType":"shared","vCpu":2,"ramGb":4,"volumeGb":16,"volumeType":"ssd","priority":"high"}],"limitsNotice":null}]},"properties":{"id":{"type":"integer","description":"ID of the Kubernetes cluster","example":108301},"createdAt":{"type":"string","description":"Date and time of the Kubernetes cluster creation","example":"2026-03-13T16:14:01.833"},"createdByName":{"type":"string","description":"Name of the user who created the Kubernetes cluster","example":"Automation User"},"createdById":{"type":"integer","description":"ID of the user who created the Kubernetes cluster","example":2427},"modifiedAt":{"type":"string","description":"Date and time when the Kubernetes cluster was last edited","example":"2026-03-13T16:14:01.833"},"modifiedByName":{"type":"string","description":"Name of the user who last edited the Kubernetes cluster","example":"Automation User"},"modifiedById":{"type":"integer","description":"ID of the user who last edited the Kubernetes cluster","example":2427},"name":{"type":"string","description":"Name of the Kubernetes cluster","example":"default-k8s-managed-cluster-name"},"version":{"type":"string","description":"Version of the Kubernetes cluster","example":"1.35"},"deploymentLocation":{"type":"string","description":"Deployment region of the Kubernetes cluster. Currently, only Europe (eu) is available.","enum":["eu","us"],"example":"eu"},"k8sConnectionType":{"type":"string","description":"Specifies the network connectivity type for the cluster. Immutable: set at creation only. To change, delete and create a new cluster.","enum":["direct_connect","internet_connect"],"example":"internet_connect","readOnly":true},"status":{"type":"string","description":"Status of the Kubernetes cluster","example":"CREATING"},"cost":{"type":"object","description":"Total cost of the Kubernetes cluster for the period","properties":{"unit":{"type":"string","description":"Cost period","example":"MONTHS"},"currency":{"type":"string","description":"Currency of the cost","example":"EUR"},"price":{"type":"number","description":"Cost for the period","example":472.576455288452}}},"controlPlaneStatus":{"type":"string","description":"Control Plane Status. The Control Plane status provides information about the health and functionality of various components that are part of the Control Plane.","enum":["CREATING","ACTIVE","UPDATING","DEGRADED","UNHEALTHY","FAILED","DESTRUCTION"],"example":"CREATING"},"domainName":{"type":"string","description":"Domain attached to the Kubernetes cluster","nullable":true,"example":null},"nodeGroups":{"type":"array","description":"List of the worker node groups","items":{"type":"object","properties":{"name":{"type":"string","description":"Name of the worker node group","example":"Nodes"},"nodes":{"type":"array","description":"List of the worker nodes","items":{"type":"object","properties":{"id":{"type":"integer","description":"ID of the worker node","example":108302},"createdAt":{"type":"string","description":"Date and time when the worker node was created","example":"2026-03-13T16:14:01.882"},"name":{"type":"string","description":"Name of the worker node","example":"hrvwax-dfdotq-vm-automation-co2ep"},"status":{"type":"string","description":"Status of the worker node","enum":["POWERED_ON","POWERED_OFF","BUSY","DRAFT"],"example":"DRAFT"},"instanceType":{"type":"string","description":"How the node's VM was purchased. A `spot` node is cheaper, but the provider may reclaim it at any time and the platform then recreates it. Absent when the purchase mode cannot be resolved — read that as `on_demand`.","enum":["on_demand","spot"],"example":"spot"},"nodeStatus":{"type":"string","description":"Worker node lifecycle status","enum":["PROVISIONING","JOINING","ACTIVE","PENDING","DELETING","FAILED"],"example":"ACTIVE"},"provider":{"type":"object","description":"Cloud provider of the worker node","properties":{"id":{"type":"integer","description":"ID of the cloud provider of the worker node","example":78},"name":{"type":"string","description":"Name of the cloud provider of the worker node","example":"GCP"}}},"location":{"type":"object","description":"Geographic location where the worker node is deployed","properties":{"id":{"type":"integer","description":"Location ID of the worker node","example":78},"name":{"type":"string","description":"Location name (city or state) of the worker node","example":"Eemshaven"},"country":{"type":"string","description":"Country of the worker node location","example":"Netherlands"},"continent":{"type":"string","description":"Name of the geographical continent","example":"Europe"},"region":{"type":"string","description":"Name of the geographical region","example":"EMEA"},"latitude":{"type":"number","format":"double","description":"Approximate latitude of the geographical location","example":53.442333},"longitude":{"type":"number","format":"double","description":"Approximate longitude of the geographical location","example":6.8253303}}},"dataCenter":{"type":"object","description":"Data center where the worker node is deployed","properties":{"id":{"type":"string","description":"ID of the cloud provider's data center where the worker node is deployed","example":"gcp-europe-west4-a"},"name":{"type":"string","description":"Name of the cloud provider's data center where the worker node is deployed","example":"europe-west4-a"},"providerId":{"type":"integer","description":"ID of the cloud provider","example":78},"providerName":{"type":"string","description":"Name of the cloud provider","example":"GCP"},"locationId":{"type":"integer","description":"Location ID","example":78},"locationName":{"type":"string","description":"Location Name (city or state)","example":"Eemshaven"}}},"os":{"type":"object","description":"Operating system","properties":{"id":{"type":"integer","description":"ID of the operating system","example":48},"family":{"type":"string","description":"Family of the operating system","example":"Linux"},"architecture":{"type":"string","description":"Architecture of the operating system","example":"x86-64"},"type":{"type":"string","description":"Type of the operating system","example":"Ubuntu"},"version":{"type":"string","description":"Version of the operating system","example":"24.04"}}},"vCpu":{"type":"integer","description":"Number of virtual Central Processing Units (vCPUs)","example":4},"vCpuType":{"type":"string","description":"Type of the virtual Central Processing Unit","enum":["shared","standard","hpc"],"example":"standard"},"cloudNetworkType":{"type":"string","description":"Type of the cloud network (multi-cloud, isolated)","enum":["multi-cloud","default"],"example":"default"},"ramGb":{"type":"integer","description":"Capacity of the RAM in gigabytes","example":16},"disks":{"type":"array","description":"Volumes attached","items":{"type":"object","properties":{"id":{"type":"integer","description":"Volume ID","example":108303},"name":{"type":"string","description":"Volume name","example":"volume-ax8keo"},"sizeGb":{"type":"integer","description":"Volume size in gigabytes","example":32},"typeId":{"type":"integer","description":"ID of the volume type","example":2},"type":{"type":"string","description":"Volume type","example":"ssd"},"isBootable":{"type":"boolean","description":"Indicates whether the volume is bootable or not","example":true},"deviceIdentifier":{"type":"string","description":"Device identifier of the volume as seen by the operating system","example":"/dev/sda","nullable":true}}}},"networks":{"type":"array","description":"Public and private networks","items":{"type":"object","properties":{"id":{"type":"integer","description":"Network ID","example":9826},"ip":{"type":"string","description":"Network IP. Null for nodes that have not yet received an IP address (e.g. PENDING or FAILED nodes).","example":"10.106.0.2","nullable":true},"networkTypeId":{"type":"integer","description":"ID of the network type","example":2},"networkType":{"type":"string","description":"Network type","example":"PRIVATE"},"ipVersion":{"type":"string","description":"IP version","nullable":true,"example":null}}},"nullable":true,"example":null},"securityGroup":{"type":"object","description":"Security group of the worker node","properties":{"id":{"type":"integer","description":"ID of the security group","example":208},"name":{"type":"string","description":"Name of the security group","example":"default"}},"nullable":true,"example":null},"localDisks":{"type":"array","description":"Local SSD storage directly attached to the host. Data is ephemeral and will be lost when the VM is stopped or deleted.","items":{"type":"object","properties":{"sizeTb":{"type":"number","description":"Volume size in TB","example":0.125},"typeId":{"type":"integer","description":"ID of the volume type","nullable":true,"example":null},"type":{"type":"string","description":"Volume type","example":"ssd-plus"}}},"nullable":true,"example":null},"accelerator":{"type":"object","description":"GPU accelerator","properties":{"acceleratorTypeId":{"type":"string","description":"GPU accelerator type ID","example":"7bf9d828-e3e8-496f-9901-9045640bb287"},"acceleratorType":{"type":"string","description":"GPU accelerator type","example":"NVIDIA L4"},"accelerators":{"type":"number","description":"Quantity of GPU accelerators","example":1},"totalGpuMemoryGb":{"type":"integer","description":"Total GPU memory (GPU)","example":24}},"nullable":true},"cost":{"type":"object","description":"Total cost of the worker node for the period","properties":{"unit":{"type":"string","description":"Period","example":"MONTHS"},"currency":{"type":"string","description":"Currency of the cost","example":"EUR"},"price":{"type":"number","description":"Cost for the period","example":472.576455}}}}}},"status":{"type":"string","description":"Node group (ASG) runtime status. Null for static (non-autoscaling) node groups.","enum":["CREATING","ACTIVE","SCALING_UP","SCALING_DOWN","READY","UNHEALTHY","DESTRUCTION"],"example":"UNHEALTHY","nullable":true},"scalingPolicy":{"type":"string","description":"Autoscaling policy applied to the node group. Null for static node groups.","enum":["ENABLED","SCALE_UP_ONLY","SCALE_DOWN_ONLY","DISABLED"],"example":"SCALE_UP_ONLY","nullable":true}}}},"autoscalingConfigs":{"type":"array","description":"Configurations of the autoscaling group","example":[],"items":{"type":"object","properties":{"groupName":{"type":"string","description":"Name of the autoscaling group","example":"autoscalenodegroup-j6bj"},"dataCenterId":{"type":"string","description":"ID of the data center","example":"aws-eu-west-1"},"minimumNodes":{"type":"integer","description":"Minimum number of nodes","example":1},"maximumNodes":{"type":"integer","description":"Maximum number of nodes","example":5},"targetNodes":{"type":"integer","deprecated":true,"description":"Deprecated alias of minOnDemandCount (former desired total node count). Used only when minOnDemandCount is not provided.","example":1},"minimumVCpus":{"type":"integer","description":"Minimum number of vCPUs. Required when using vCPU-count based autoscaling. Must be null if `minimumNodes` is set.","nullable":true,"example":null},"maximumVCpus":{"type":"integer","description":"Maximum number of vCPUs. Required when using vCPU-count based autoscaling. Must be null if `maximumNodes` is set.","nullable":true,"example":null},"targetVCpus":{"type":"integer","deprecated":true,"description":"Target number of vCPUs","nullable":true,"example":null},"minOnDemandCount":{"type":"integer","description":"Minimum guaranteed number of on-demand (non-spot) units in the group — nodes for node-count scaling, vCPUs for vCPU-count scaling. Allowed range is 0..maximum. It constrains the composition of the existing nodes, not the group size. Defaults to 0 (or to the deprecated target field when provided).","example":1,"nullable":true},"nodeGroupPriceLimit":{"type":"number","description":"Price limit of the autoscaling group","nullable":true,"example":null},"useOnDemandInstancesInsteadOfSpots":{"type":"boolean","description":"Use on-demand compute instances instead of spot compute instances","example":false},"spotPercent":{"type":"integer","description":"Percentage of spot instances in the autoscaling group","example":50},"spotMarkup":{"type":"number","description":"Extra markup to the spot instance price","example":5},"userLabels":{"type":"array","description":"ASG labels applied to nodes created by this autoscaling group","items":{"type":"object","properties":{"key":{"type":"string","description":"ASG label key","example":"workload"},"value":{"type":"string","description":"ASG label value. Required and non-nullable; empty string is allowed.","example":"batch","minLength":0}},"required":["key","value"]},"nullable":true},"configurationPriorities":{"type":"array","description":"Compute instance configurations with priorities","items":{"type":"object","properties":{"vCpuType":{"type":"string","description":"Type of the virtual Central Processing Unit (vCPU)","enum":["shared","standard","hpc"],"example":"shared"},"vCpu":{"type":"integer","description":"Number of virtual Central Processing Units (vCPUs)","example":2},"ramGb":{"type":"integer","description":"Capacity of the RAM in gigabytes","example":4},"volumeGb":{"type":"integer","description":"Capacity of the volume in gigabytes","example":16},"volumeType":{"type":"string","description":"Volume type","enum":["ssd","ssd-plus"],"example":"ssd"},"priority":{"type":"string","description":"Configuration priority","enum":["high","med","low"],"example":"high"}}}},"limitsNotice":{"type":"string","description":"Limits notice message","nullable":true}}},"nullable":true}}},"KubernetesUpdateRequest":{"type":"object","properties":{"workerNodes":{"type":"array","description":"List of the worker nodes. May be omitted when the cluster is updated with autoscaling groups only.","items":{"type":"object","properties":{"id":{"type":"integer","description":"ID of the kubernetes worker node","example":108380},"name":{"type":"string","description":"Name of the worker node","example":"lsydyf-node"},"dataCenterId":{"type":"string","description":"ID of the data center","example":"gcp-europe-west4-a"},"vCpuType":{"type":"string","description":"Type of the virtual Central Processing Unit (vCPU)","enum":["shared","standard","hpc"],"example":"standard"},"vCpu":{"type":"integer","description":"Number of virtual Central Processing Units (vCPUs)","example":4},"ramGb":{"type":"integer","description":"Capacity of the RAM in gigabytes","example":16},"volumeType":{"type":"string","description":"Volume type","enum":["ssd","ssd-plus"],"example":"ssd"},"volumeGb":{"type":"integer","description":"Capacity of the volume in gigabytes","example":32},"acceleratorTypeId":{"type":"string","description":"GPU accelerator type identifier (from the UI accelerator dictionary).","example":"7bf9d828-e3e8-496f-9901-9045640bb287"},"accelerators":{"type":"number","format":"double","description":"Number of GPUs for the node configuration.","example":1},"instanceType":{"type":"string","default":"on_demand","description":"How the node's VM is purchased. Only read for a node being added — a node kept by `id` keeps how it was bought. At least one `on_demand` node is required per cluster.","enum":["on_demand","spot"],"example":"on_demand"}},"required":["dataCenterId","name","ramGb","vCpu","vCpuType","volumeGb","volumeType"]}},"autoscalingConfigs":{"type":"array","description":"Configurations of the autoscaling group. If `workerNodes` is omitted or empty, `autoscalingConfigs` must contain at least one group. Each group must have either node-count scaling fields (`minimumNodes`, `maximumNodes`, `targetNodes`) or vCPU-count scaling fields (`minimumVCpus`, `maximumVCpus`, `targetVCpus`) — but not both and not neither.","items":{"type":"object","properties":{"groupName":{"type":"string","description":"Group name","example":"autonodegroup"},"dataCenterId":{"type":"string","description":"ID of the data center","example":"gcp-europe-west1-b"},"minimumNodes":{"type":"integer","description":"Minimum number of nodes. Required when using node-count based autoscaling. Must be null if `minimumVCpus` is set.","example":1},"maximumNodes":{"type":"integer","description":"Maximum number of nodes. Required when using node-count based autoscaling. Must be null if `maximumVCpus` is set.","example":2},"targetNodes":{"type":"integer","deprecated":true,"description":"Deprecated alias of minOnDemandCount (former desired total node count). Used only when minOnDemandCount is not provided.","example":1},"minimumVCpus":{"type":"integer","description":"Minimum number of vCPUs. Required when using vCPU-count based autoscaling. Must be null if `minimumNodes` is set.","nullable":true,"example":null},"maximumVCpus":{"type":"integer","description":"Maximum number of vCPUs. Required when using vCPU-count based autoscaling. Must be null if `maximumNodes` is set.","nullable":true,"example":null},"targetVCpus":{"type":"integer","deprecated":true,"description":"Deprecated alias of minOnDemandCount (former desired total vCPU count). Used only when minOnDemandCount is not provided.","nullable":true,"example":null},"minOnDemandCount":{"type":"integer","description":"Minimum guaranteed number of on-demand (non-spot) units in the group — nodes for node-count scaling, vCPUs for vCPU-count scaling. Allowed range is 0..maximum. It constrains the composition of the existing nodes, not the group size. Defaults to 0 (or to the deprecated target field when provided).","example":1,"nullable":true},"nodeGroupPriceLimit":{"type":"number","description":"Price limit of the autoscaling group","example":50},"useOnDemandInstancesInsteadOfSpots":{"type":"boolean","description":"Use on-demand compute instances instead of spot compute instances","example":true},"spotPercent":{"type":"integer","description":"Percentage of spot instances in the autoscaling group","example":50},"spotMarkup":{"type":"number","description":"Extra markup to the spot instance price","example":5},"userLabels":{"type":"array","description":"ASG label applied to nodes created by this autoscaling group","items":{"type":"object","properties":{"key":{"type":"string","description":"ASG label key","example":"workload"},"value":{"type":"string","description":"ASG label value","example":"batch"}},"required":["key","value"]},"nullable":true},"configurationPriorities":{"type":"array","description":"Compute instance configurations with priorities","items":{"type":"object","properties":{"vCpuType":{"type":"string","description":"Type of the virtual Central Processing Unit (vCPU)","enum":["shared","standard","hpc"],"example":"shared"},"vCpu":{"type":"integer","description":"Number of virtual Central Processing Units (vCPUs)","example":2},"ramGb":{"type":"integer","description":"Capacity of the RAM in gigabytes","example":4},"volumeGb":{"type":"integer","description":"Capacity of the volume in gigabytes","example":16},"volumeType":{"type":"string","description":"Volume type","enum":["ssd","ssd-plus"],"example":"ssd"},"priority":{"type":"string","description":"Configuration priority","enum":["high","med","low"],"example":"high"}}}}},"required":["configurationPriorities","dataCenterId","groupName","useOnDemandInstancesInsteadOfSpots"]},"nullable":true}}},"KubernetesUpdateResponse":{"type":"object","example":{"id":108379,"createdAt":"2026-03-16T07:54:14.066","createdById":2394,"createdByName":"Automation User","modifiedAt":"2026-03-16T08:09:34.354","modifiedByName":"Automation User","modifiedById":2427,"name":"default-k8s-managed-cluster-name","version":"1.35","deploymentLocation":"eu","k8sConnectionType":"direct_connect","domainName":null,"status":"ENV_DEPLOYMENT","controlPlaneStatus":"CREATING","cost":{"unit":"MONTHS","currency":"EUR","price":77.4160050040314},"nodeGroups":[{"name":"autonodegroup","nodes":[{"id":108406,"createdAt":"2026-03-16T09:21:45.235","name":"pfpuyr-autonodegroup","status":"DRAFT","instanceType":"on_demand","nodeStatus":"ACTIVE","provider":{"id":78,"name":"GCP"},"location":{"id":77,"name":"St. Ghislain","country":"Belgium","continent":"Europe","region":"EMEA","latitude":50.44816,"longitude":3.81886},"dataCenter":{"id":"gcp-europe-west1-b","name":"europe-west1-b","providerName":"GCP","providerId":78,"locationId":77,"locationName":"St. Ghislain"},"os":{"id":48,"family":"Linux","type":"Ubuntu","architecture":"x86-64","version":"24.04"},"cloudNetworkType":"multi-cloud","vCpuType":"shared","vCpu":2,"ramGb":4,"disks":[{"id":108407,"name":"volume-bz0b1n","sizeGb":16,"typeId":2,"type":"ssd","isBootable":true}],"networks":null,"cost":{"unit":"MONTHS","currency":"EUR","price":38.708004},"securityGroup":null,"accelerator":null,"localDisks":null}],"status":"CREATING","scalingPolicy":"ENABLED"},{"name":"Nodes","nodes":[{"id":108380,"createdAt":"2026-03-16T07:54:14.085","name":"lsydyf-node","status":"DRAFT","instanceType":"on_demand","nodeStatus":"ACTIVE","provider":{"id":78,"name":"GCP"},"location":{"id":77,"name":"St. Ghislain","country":"Belgium","continent":"Europe","region":"EMEA","latitude":50.44816,"longitude":3.81886},"dataCenter":{"id":"gcp-europe-west1-b","name":"europe-west1-b","providerName":"GCP","providerId":78,"locationId":77,"locationName":"St. Ghislain"},"os":{"id":48,"family":"Linux","type":"Ubuntu","architecture":"x86-64","version":"24.04"},"cloudNetworkType":"multi-cloud","vCpuType":"shared","vCpu":2,"ramGb":4,"disks":[{"id":108381,"name":"volume-kivy61","sizeGb":16,"typeId":2,"type":"ssd","isBootable":true}],"networks":null,"cost":{"unit":"MONTHS","currency":"EUR","price":28257},"securityGroup":null,"accelerator":null,"localDisks":null}],"status":"ACTIVE","scalingPolicy":"SCALE_UP_ONLY"}],"autoscalingConfigs":[{"groupName":"autonodegroup","dataCenterId":"gcp-europe-west1-b","minimumNodes":1,"maximumNodes":2,"targetNodes":1,"minimumVCpus":1,"maximumVCpus":null,"targetVCpus":null,"nodeGroupPriceLimit":50,"useOnDemandInstancesInsteadOfSpots":true,"spotPercent":50,"spotMarkup":0,"userLabels":[{"key":"workload","value":"batch"}],"configurationPriorities":[{"vCpuType":"shared","vCpu":2,"ramGb":4,"volumeGb":16,"volumeType":"ssd","priority":"high"}],"limitsNotice":null}]},"properties":{"id":{"type":"integer","description":"Kubernetes cluster ID"},"createdAt":{"type":"string","format":"date-time","description":"Cluster creation date and time"},"createdById":{"type":"integer","description":"ID of the user who created the cluster"},"createdByName":{"type":"string","description":"Name of the user who created the cluster"},"modifiedAt":{"type":"string","format":"date-time","description":"Cluster last modification date and time"},"modifiedByName":{"type":"string","description":"Name of the user who last modified the cluster"},"modifiedById":{"type":"integer","description":"ID of the user who last modified the cluster"},"name":{"type":"string","description":"Cluster name"},"version":{"type":"string","description":"Kubernetes version"},"deploymentLocation":{"type":"string","description":"Deployment location"},"k8sConnectionType":{"type":"string","description":"Kubernetes connection type","enum":["direct_connect","internet_connect"]},"domainName":{"type":"string","description":"Cluster domain name","nullable":true},"status":{"type":"string","description":"Cluster status"},"controlPlaneStatus":{"type":"string","description":"Control plane status","enum":["CREATING","ACTIVE","UPDATING","DEGRADED","UNHEALTHY","FAILED","DESTRUCTION"],"example":"ACTIVE"},"cost":{"type":"object","properties":{"unit":{"type":"string","description":"Billing unit"},"currency":{"type":"string","description":"Currency code"},"price":{"type":"number","format":"double","description":"Cost amount"}},"required":["currency","price","unit"]},"nodeGroups":{"type":"array","description":"List of cluster node groups","items":{"type":"object","properties":{"name":{"type":"string","description":"Node group name"},"nodes":{"type":"array","description":"List of nodes in the node group","items":{"type":"object","properties":{"id":{"type":"integer","description":"Node ID"},"createdAt":{"type":"string","format":"date-time","description":"Node creation date and time"},"name":{"type":"string","description":"Node name"},"status":{"type":"string","description":"Node status"},"instanceType":{"type":"string","description":"How the node's VM was purchased. A `spot` node is cheaper, but the provider may reclaim it at any time and the platform then recreates it. Absent when the purchase mode cannot be resolved — read that as `on_demand`.","enum":["on_demand","spot"],"example":"spot"},"nodeStatus":{"type":"string","description":"Worker node lifecycle status","enum":["PROVISIONING","JOINING","ACTIVE","PENDING","DELETING","FAILED"],"example":"PROVISIONING"},"provider":{"type":"object","properties":{"id":{"type":"integer","description":"Provider ID"},"name":{"type":"string","description":"Provider name"}},"required":["id","name"]},"location":{"type":"object","properties":{"id":{"type":"integer","description":"Location ID"},"name":{"type":"string","description":"Location name"},"country":{"type":"string","description":"Country"},"continent":{"type":"string","description":"Continent"},"region":{"type":"string","description":"Region"},"latitude":{"type":"number","format":"double","description":"Latitude"},"longitude":{"type":"number","format":"double","description":"Longitude"}},"required":["continent","country","id","latitude","longitude","name","region"]},"dataCenter":{"type":"object","properties":{"id":{"type":"string","description":"Data center ID"},"name":{"type":"string","description":"Data center name"},"providerName":{"type":"string","description":"Provider name"},"providerId":{"type":"integer","description":"Provider ID"},"locationId":{"type":"integer","description":"Location ID"},"locationName":{"type":"string","description":"Location name"}},"required":["id","locationId","locationName","name","providerId","providerName"]},"os":{"type":"object","properties":{"id":{"type":"integer","description":"Operating system ID"},"family":{"type":"string","description":"OS family"},"type":{"type":"string","description":"OS type"},"architecture":{"type":"string","description":"OS architecture"},"version":{"type":"string","description":"OS version"}},"required":["architecture","family","id","type","version"]},"cloudNetworkType":{"type":"string","description":"Cloud network type","enum":["default","multi-cloud"]},"vCpuType":{"type":"string","description":"Type of the virtual Central Processing Unit (vCPU)","enum":["shared","standard","hpc"]},"vCpu":{"type":"integer","description":"Number of virtual Central Processing Units (vCPUs)"},"ramGb":{"type":"integer","description":"Capacity of the RAM in gigabytes"},"disks":{"type":"array","description":"List of attached disks","items":{"type":"object","properties":{"id":{"type":"integer","description":"Disk ID"},"name":{"type":"string","description":"Disk name"},"sizeGb":{"type":"integer","description":"Disk size in gigabytes"},"typeId":{"type":"integer","description":"Disk type ID"},"type":{"type":"string","description":"Disk type","enum":["ssd","ssd-plus"]},"isBootable":{"type":"boolean","description":"Whether the disk is bootable"},"deviceIdentifier":{"type":"string","description":"Device identifier of the volume as seen by the operating system","example":"/dev/sda","nullable":true}},"required":["id","isBootable","name","sizeGb","type","typeId"]}},"networks":{"type":"array","description":"List of attached networks","items":{"type":"object"},"nullable":true},"cost":{"type":"object","properties":{"unit":{"type":"string","description":"Billing unit"},"currency":{"type":"string","description":"Currency code"},"price":{"type":"number","format":"double","description":"Cost amount"}},"required":["currency","price","unit"]},"securityGroup":{"type":"object","description":"Security group attached to the node","nullable":true},"accelerator":{"type":"object","description":"Accelerator attached to the node","nullable":true},"localDisks":{"type":"array","description":"Local disks attached to the node","items":{"type":"object"},"nullable":true}},"required":["cloudNetworkType","cost","createdAt","dataCenter","disks","id","location","name","os","provider","ramGb","status","vCpu","vCpuType"]}},"status":{"type":"string","description":"Node group (ASG) runtime status. Null for static (non-autoscaling) node groups.","enum":["CREATING","ACTIVE","SCALING_UP","SCALING_DOWN","READY","UNHEALTHY","DESTRUCTION"],"example":"UNHEALTHY","nullable":true},"scalingPolicy":{"type":"string","description":"Autoscaling policy applied to the node group. Null for static node groups.","enum":["ENABLED","SCALE_UP_ONLY","SCALE_DOWN_ONLY","DISABLED"],"example":"SCALE_UP_ONLY","nullable":true}},"required":["name","nodes"]}},"autoscalingConfigs":{"type":"array","description":"Configurations of autoscaling groups","items":{"type":"object","properties":{"groupName":{"type":"string","description":"Group name"},"dataCenterId":{"type":"string","description":"ID of the data center"},"minimumNodes":{"type":"integer","description":"Minimum number of nodes"},"maximumNodes":{"type":"integer","description":"Maximum number of nodes"},"targetNodes":{"type":"integer","deprecated":true,"description":"Target number of nodes"},"minimumVCpus":{"type":"integer","description":"Minimum number of vCPUs. Required when using vCPU-count based autoscaling. Must be null if `minimumNodes` is set.","nullable":true},"maximumVCpus":{"type":"integer","description":"Maximum number of vCPUs. Required when using vCPU-count based autoscaling. Must be null if `maximumNodes` is set.","nullable":true},"targetVCpus":{"type":"integer","deprecated":true,"description":"Target number of vCPUs","nullable":true},"minOnDemandCount":{"type":"integer","description":"Minimum guaranteed number of on-demand (non-spot) units in the group — nodes for node-count scaling, vCPUs for vCPU-count scaling. Allowed range is 0..maximum. It constrains the composition of the existing nodes, not the group size. Defaults to 0 (or to the deprecated target field when provided).","example":1,"nullable":true},"nodeGroupPriceLimit":{"type":"number","format":"double","description":"Price limit of the autoscaling group","nullable":true},"useOnDemandInstancesInsteadOfSpots":{"type":"boolean","description":"Use on-demand compute instances instead of spot compute instances"},"spotPercent":{"type":"integer","description":"Percentage of spot instances in the autoscaling group"},"spotMarkup":{"type":"number","format":"double","description":"Extra markup to the spot instance price"},"userLabels":{"type":"array","description":"ASG labels applied to nodes created by this autoscaling group","items":{"type":"object","properties":{"key":{"type":"string","description":"ASG label key","example":"workload"},"value":{"type":"string","description":"ASG label value. Required and non-nullable; empty string is allowed.","example":"batch","minLength":0}},"required":["key","value"]},"nullable":true},"configurationPriorities":{"type":"array","description":"Compute instance configurations with priorities","items":{"type":"object","properties":{"vCpuType":{"type":"string","description":"Type of the virtual Central Processing Unit (vCPU)","enum":["shared","standard","hpc"]},"vCpu":{"type":"integer","description":"Number of virtual Central Processing Units (vCPUs)"},"ramGb":{"type":"integer","description":"Capacity of the RAM in gigabytes"},"volumeGb":{"type":"integer","description":"Capacity of the volume in gigabytes"},"volumeType":{"type":"string","description":"Volume type","enum":["ssd","ssd-plus"]},"priority":{"type":"string","description":"Configuration priority","enum":["high","med","low"]}},"required":["priority","ramGb","vCpu","vCpuType","volumeGb","volumeType"]}},"limitsNotice":{"type":"string","description":"Limits notice message","nullable":true}},"required":["configurationPriorities","dataCenterId","groupName","maximumNodes","minimumNodes","nodeGroupPriceLimit","spotMarkup","spotPercent","targetNodes","useOnDemandInstancesInsteadOfSpots"]}}},"required":["autoscalingConfigs","controlPlaneStatus","cost","createdAt","createdById","createdByName","deploymentLocation","id","k8sConnectionType","modifiedAt","modifiedById","modifiedByName","name","nodeGroups","status","version"]},"KubernetesDelete":{"type":"object","example":{"id":108379,"createdAt":"2026-03-16T07:54:14.066","createdById":2394,"createdByName":"Automation User","modifiedAt":"2026-03-16T09:25:07.374","modifiedByName":"Automation User","modifiedById":2427,"name":"default-k8s-managed-cluster-name","version":"1.35","deploymentLocation":"eu","k8sConnectionType":"direct_connect","domainName":null,"status":"ACTIVE","controlPlaneStatus":"ACTIVE","cost":{"unit":"MONTHS","currency":"EUR","price":80.204436},"nodeGroups":[{"name":"Nodes","nodes":[{"id":108380,"createdAt":"2026-03-16T07:54:14.085","name":"lsydyf-node","status":"POWERED_ON","instanceType":"on_demand","nodeStatus":"ACTIVE","provider":{"id":78,"name":"GCP"},"location":{"id":77,"name":"St. Ghislain","country":"Belgium","continent":"Europe","region":"EMEA","latitude":50.44816,"longitude":3.81886},"dataCenter":{"id":"gcp-europe-west1-b","name":"europe-west1-b","providerName":"GCP","providerId":78,"locationId":77,"locationName":"St. Ghislain"},"os":{"id":48,"family":"Linux","type":"Ubuntu","architecture":"x86-64","version":"24.04"},"cloudNetworkType":"multi-cloud","vCpuType":"shared","vCpu":2,"ramGb":4,"disks":[{"id":108381,"name":"volume-kivy61","sizeGb":16,"typeId":2,"type":"ssd","isBootable":true}],"networks":[{"id":108480,"ip":"10.64.55.13","networkTypeId":2,"networkType":"PRIVATE","ipVersion":null},{"id":108481,"ip":"35.206.184.231","networkTypeId":1,"networkType":"PUBLIC","ipVersion":null}],"cost":{"unit":"MONTHS","currency":"EUR","price":40.102218},"securityGroup":{"id":1764,"name":"sg-uat"},"accelerator":null,"localDisks":null}],"status":"ACTIVE","scalingPolicy":"SCALE_UP_ONLY"},{"name":"autonodegroup","nodes":[{"id":108406,"createdAt":"2026-03-16T09:21:45.235","name":"pfpuyr-autonodegroup","status":"POWERED_ON","instanceType":"on_demand","nodeStatus":"ACTIVE","provider":{"id":78,"name":"GCP"},"location":{"id":77,"name":"St. Ghislain","country":"Belgium","continent":"Europe","region":"EMEA","latitude":50.44816,"longitude":3.81886},"dataCenter":{"id":"gcp-europe-west1-b","name":"europe-west1-b","providerName":"GCP","providerId":78,"locationId":77,"locationName":"St. Ghislain"},"os":{"id":48,"family":"Linux","type":"Ubuntu","architecture":"x86-64","version":"24.04"},"cloudNetworkType":"multi-cloud","vCpuType":"shared","vCpu":2,"ramGb":4,"disks":[{"id":108407,"name":"volume-bz0b1n","sizeGb":16,"typeId":2,"type":"ssd","isBootable":true}],"networks":[{"id":108504,"ip":"10.64.55.14","networkTypeId":2,"networkType":"PRIVATE","ipVersion":null},{"id":108505,"ip":"35.210.87.96","networkTypeId":1,"networkType":"PUBLIC","ipVersion":null}],"cost":{"unit":"MONTHS","currency":"EUR","price":40.102218},"securityGroup":{"id":1764,"name":"sg-uat"},"accelerator":null,"localDisks":null}],"status":"ACTIVE","scalingPolicy":"ENABLED"}],"autoscalingConfigs":[{"groupName":"autonodegroup","dataCenterId":"gcp-europe-west1-b","minimumNodes":1,"maximumNodes":2,"targetNodes":1,"minimumVCpus":1,"maximumVCpus":null,"targetVCpus":null,"nodeGroupPriceLimit":50,"useOnDemandInstancesInsteadOfSpots":true,"spotPercent":50,"spotMarkup":0,"userLabels":[{"key":"workload","value":"batch"}],"configurationPriorities":[{"vCpuType":"shared","vCpu":2,"ramGb":4,"volumeGb":16,"volumeType":"ssd","priority":"high"}],"limitsNotice":null}]},"properties":{"id":{"type":"integer","description":"Kubernetes cluster ID"},"createdAt":{"type":"string","format":"date-time","description":"Cluster creation date and time"},"createdById":{"type":"integer","description":"ID of the user who created the cluster"},"createdByName":{"type":"string","description":"Name of the user who created the cluster"},"modifiedAt":{"type":"string","format":"date-time","description":"Cluster last modification date and time"},"modifiedByName":{"type":"string","description":"Name of the user who last modified the cluster"},"modifiedById":{"type":"integer","description":"ID of the user who last modified the cluster"},"name":{"type":"string","description":"Cluster name"},"version":{"type":"string","description":"Kubernetes version"},"deploymentLocation":{"type":"string","description":"Deployment location"},"k8sConnectionType":{"type":"string","description":"Kubernetes connection type","enum":["direct_connect","internet_connect"]},"domainName":{"type":"string","description":"Cluster domain name","nullable":true},"status":{"type":"string","description":"Cluster status"},"controlPlaneStatus":{"type":"string","description":"Control plane status","enum":["CREATING","ACTIVE","UPDATING","DEGRADED","UNHEALTHY","FAILED","DESTRUCTION"],"example":"ACTIVE"},"cost":{"type":"object","properties":{"unit":{"type":"string","description":"Billing unit"},"currency":{"type":"string","description":"Currency code"},"price":{"type":"number","format":"double","description":"Cost amount"}}},"nodeGroups":{"type":"array","description":"List of cluster node groups","items":{"type":"object","properties":{"name":{"type":"string","description":"Node group name"},"nodes":{"type":"array","description":"List of nodes in the node group","items":{"type":"object","properties":{"id":{"type":"integer","description":"Node ID"},"createdAt":{"type":"string","format":"date-time","description":"Node creation date and time"},"name":{"type":"string","description":"Node name"},"status":{"type":"string","description":"Node status"},"instanceType":{"type":"string","description":"How the node's VM was purchased. A `spot` node is cheaper, but the provider may reclaim it at any time and the platform then recreates it. Absent when the purchase mode cannot be resolved — read that as `on_demand`.","enum":["on_demand","spot"],"example":"spot"},"nodeStatus":{"type":"string","description":"Worker node lifecycle status","enum":["PROVISIONING","JOINING","ACTIVE","PENDING","DELETING","FAILED"],"example":"ACTIVE"},"provider":{"type":"object","properties":{"id":{"type":"integer","description":"Provider ID"},"name":{"type":"string","description":"Provider name"}}},"location":{"type":"object","properties":{"id":{"type":"integer","description":"Location ID"},"name":{"type":"string","description":"Location name"},"country":{"type":"string","description":"Country"},"continent":{"type":"string","description":"Continent"},"region":{"type":"string","description":"Region"},"latitude":{"type":"number","format":"double","description":"Latitude"},"longitude":{"type":"number","format":"double","description":"Longitude"}}},"dataCenter":{"type":"object","properties":{"id":{"type":"string","description":"Data center ID"},"name":{"type":"string","description":"Data center name"},"providerName":{"type":"string","description":"Provider name"},"providerId":{"type":"integer","description":"Provider ID"},"locationId":{"type":"integer","description":"Location ID"},"locationName":{"type":"string","description":"Location name"}}},"os":{"type":"object","properties":{"id":{"type":"integer","description":"Operating system ID"},"family":{"type":"string","description":"OS family"},"type":{"type":"string","description":"OS type"},"architecture":{"type":"string","description":"OS architecture"},"version":{"type":"string","description":"OS version"}}},"cloudNetworkType":{"type":"string","description":"Cloud network type","enum":["default","multi-cloud"]},"vCpuType":{"type":"string","description":"Type of the virtual Central Processing Unit (vCPU)","enum":["shared","standard","hpc"]},"vCpu":{"type":"integer","description":"Number of virtual Central Processing Units (vCPUs)"},"ramGb":{"type":"integer","description":"Capacity of the RAM in gigabytes"},"disks":{"type":"array","description":"List of attached disks","items":{"type":"object","properties":{"id":{"type":"integer","description":"Disk ID"},"name":{"type":"string","description":"Disk name"},"sizeGb":{"type":"integer","description":"Disk size in gigabytes"},"typeId":{"type":"integer","description":"Disk type ID"},"type":{"type":"string","description":"Disk type","enum":["ssd","ssd-plus"]},"isBootable":{"type":"boolean","description":"Whether the disk is bootable"},"deviceIdentifier":{"type":"string","description":"Device identifier of the volume as seen by the operating system","example":"/dev/sda","nullable":true}}}},"networks":{"type":"array","description":"List of attached networks","items":{"type":"object","properties":{"id":{"type":"integer","description":"Network ID"},"ip":{"type":"string","description":"IP address. Null for nodes that have not yet received an IP address.","nullable":true},"networkTypeId":{"type":"integer","description":"Network type ID"},"networkType":{"type":"string","description":"Network type"},"ipVersion":{"type":"string","description":"IP version","nullable":true}}}},"cost":{"type":"object","properties":{"unit":{"type":"string","description":"Billing unit"},"currency":{"type":"string","description":"Currency code"},"price":{"type":"number","format":"double","description":"Cost amount"}}},"securityGroup":{"type":"object","properties":{"id":{"type":"integer","description":"Security group ID"},"name":{"type":"string","description":"Security group name"}},"nullable":true},"accelerator":{"type":"object","description":"Accelerator attached to the node","nullable":true},"localDisks":{"type":"array","description":"Local disks attached to the node","items":{"type":"object"},"nullable":true}}}},"status":{"type":"string","description":"Node group (ASG) runtime status. Null for static (non-autoscaling) node groups.","enum":["CREATING","ACTIVE","SCALING_UP","SCALING_DOWN","READY","UNHEALTHY","DESTRUCTION"],"example":"UNHEALTHY","nullable":true},"scalingPolicy":{"type":"string","description":"Autoscaling policy applied to the node group. Null for static node groups.","enum":["ENABLED","SCALE_UP_ONLY","SCALE_DOWN_ONLY","DISABLED"],"example":"SCALE_UP_ONLY","nullable":true}}}},"autoscalingConfigs":{"type":"array","description":"Configurations of autoscaling groups","items":{"type":"object","properties":{"groupName":{"type":"string","description":"Group name"},"dataCenterId":{"type":"string","description":"ID of the data center"},"minimumNodes":{"type":"integer","description":"Minimum number of nodes. Required when using node-count based autoscaling. Must be null if `minimumVCpus` is set."},"maximumNodes":{"type":"integer","description":"Maximum number of nodes. Required when using node-count based autoscaling. Must be null if `maximumVCpus` is set."},"targetNodes":{"type":"integer","deprecated":true,"description":"Target number of nodes. Required when using node-count based autoscaling. Must be null if `targetVCpus` is set."},"minimumVCpus":{"type":"integer","description":"Minimum number of vCPUs. Required when using vCPU-count based autoscaling. Must be null if `minimumNodes` is set.","nullable":true},"maximumVCpus":{"type":"integer","description":"Maximum number of vCPUs. Required when using vCPU-count based autoscaling. Must be null if `maximumNodes` is set.","nullable":true},"targetVCpus":{"type":"integer","deprecated":true,"description":"Target number of vCPUs. Required when using vCPU-count based autoscaling. Must be null if `targetNodes` is set.","nullable":true},"minOnDemandCount":{"type":"integer","description":"Minimum guaranteed number of on-demand (non-spot) units in the group — nodes for node-count scaling, vCPUs for vCPU-count scaling. Allowed range is 0..maximum. It constrains the composition of the existing nodes, not the group size. Defaults to 0 (or to the deprecated target field when provided).","example":1,"nullable":true},"nodeGroupPriceLimit":{"type":"number","format":"double","description":"Price limit of the autoscaling group","nullable":true},"useOnDemandInstancesInsteadOfSpots":{"type":"boolean","description":"Use on-demand compute instances instead of spot compute instances"},"spotPercent":{"type":"integer","description":"Percentage of spot instances in the autoscaling group"},"spotMarkup":{"type":"number","format":"double","description":"Extra markup to the spot instance price"},"userLabels":{"type":"array","description":"ASG labels applied to nodes created by this autoscaling group","items":{"type":"object","properties":{"key":{"type":"string","description":"ASG label key","example":"workload"},"value":{"type":"string","description":"ASG label value. Required and non-nullable; empty string is allowed.","example":"batch","minLength":0}},"required":["key","value"]},"nullable":true},"configurationPriorities":{"type":"array","description":"Compute instance configurations with priorities","items":{"type":"object","properties":{"vCpuType":{"type":"string","description":"Type of the virtual Central Processing Unit (vCPU)","enum":["shared","standard","hpc"]},"vCpu":{"type":"integer","description":"Number of virtual Central Processing Units (vCPUs)"},"ramGb":{"type":"integer","description":"Capacity of the RAM in gigabytes"},"volumeGb":{"type":"integer","description":"Capacity of the volume in gigabytes"},"volumeType":{"type":"string","description":"Volume type","enum":["ssd","ssd-plus"]},"priority":{"type":"string","description":"Configuration priority","enum":["high","med","low"]}}}},"limitsNotice":{"type":"string","description":"Limits notice message","nullable":true}}}}}},"KubernetesNodeLabel":{"type":"object","properties":{"key":{"type":"string","description":"Kubernetes label key","example":"emma.ms/pool"},"value":{"type":"string","description":"Kubernetes label value","example":"batch"}},"required":["key","value"]},"KubernetesNodeTaint":{"type":"object","properties":{"key":{"type":"string","description":"Kubernetes taint key","example":"dedicated"},"value":{"type":"string","description":"Kubernetes taint value","example":"batch","nullable":true},"effect":{"type":"string","description":"Kubernetes taint effect","enum":["NoSchedule","PreferNoSchedule","NoExecute"],"example":"NoSchedule"}},"required":["effect","key"]},"KubernetesNodesAddRequest":{"type":"object","properties":{"nodes":{"type":"array","description":"Worker nodes to add to the cluster","items":{"type":"object","properties":{"name":{"type":"string","description":"Name of the worker node","example":"worker-extra"},"dataCenterId":{"type":"string","description":"ID of the data center","example":"gcp-europe-west4-a"},"vCpuType":{"type":"string","description":"Type of the virtual Central Processing Unit (vCPU)","enum":["shared","standard","hpc"],"example":"shared"},"vCpu":{"type":"integer","description":"Number of virtual Central Processing Units (vCPUs)","example":2},"ramGb":{"type":"integer","description":"Capacity of the RAM in gigabytes","example":4},"volumeType":{"type":"string","description":"Volume type","enum":["ssd","ssd-plus"],"example":"ssd"},"volumeGb":{"type":"integer","description":"Capacity of the volume in gigabytes","example":16},"acceleratorTypeId":{"type":"string","description":"GPU accelerator type identifier (from the UI accelerator dictionary).","example":"7bf9d828-e3e8-496f-9901-9045640bb287"},"accelerators":{"type":"integer","description":"Number of GPUs for the node configuration.","example":1},"instanceType":{"type":"string","default":"on_demand","description":"How the node's VM is purchased. A spot instance is cheaper, but the provider may reclaim it at any time and the platform then recreates the node. At least one `on_demand` node is required per cluster.","enum":["on_demand","spot"],"example":"on_demand"},"labels":{"type":"array","description":"Kubernetes labels applied to the node after it joins the cluster","items":{"$ref":"#/components/schemas/KubernetesNodeLabel"},"nullable":true},"taints":{"type":"array","description":"Kubernetes taints applied to the node after it joins the cluster (max 16, no duplicate key+effect)","items":{"$ref":"#/components/schemas/KubernetesNodeTaint"},"nullable":true}},"required":["dataCenterId","name","ramGb","vCpu","vCpuType","volumeGb","volumeType"]},"minItems":1}},"required":["nodes"]},"KubernetesNodesPatchRequest":{"type":"object","properties":{"nodes":{"type":"array","description":"Per-node label/taint updates","items":{"type":"object","properties":{"id":{"type":"integer","description":"ID of the kubernetes worker node","example":108380},"labels":{"type":"array","description":"New full set of Kubernetes labels; keys present before but absent now are removed","items":{"$ref":"#/components/schemas/KubernetesNodeLabel"},"nullable":true},"taints":{"type":"array","description":"New full set of Kubernetes taints; taints present before but absent now are removed","items":{"$ref":"#/components/schemas/KubernetesNodeTaint"},"nullable":true}},"required":["id"]},"minItems":1}},"required":["nodes"]},"KubernetesNodeGetResponse":{"type":"object","properties":{"id":{"type":"integer","description":"ID of the worker node","example":108183},"createdAt":{"type":"string","description":"Date and time when the worker node was created","example":"2026-03-13T08:22:47.059"},"name":{"type":"string","description":"Name of the worker node","example":"cffjqu-node"},"status":{"type":"string","description":"Status of the worker node","enum":["POWERED_ON","POWERED_OFF","BUSY","DRAFT"],"example":"POWERED_ON"},"instanceType":{"type":"string","description":"How the node's VM was purchased. A `spot` node is cheaper, but the provider may reclaim it at any time and the platform then recreates it. Absent when the purchase mode cannot be resolved — read that as `on_demand`.","enum":["on_demand","spot"],"example":"spot"},"nodeStatus":{"type":"string","description":"Worker node lifecycle status","enum":["PROVISIONING","JOINING","ACTIVE","PENDING","DELETING","FAILED"],"example":"ACTIVE"},"provider":{"type":"object","description":"Cloud provider of the worker node","properties":{"id":{"type":"integer","description":"ID of the cloud provider of the worker node","example":79},"name":{"type":"string","description":"Name of the cloud provider of the worker node","example":"AWS"}}},"location":{"type":"object","description":"Geographic location where the worker node is deployed","properties":{"id":{"type":"integer","description":"Location ID of the worker node","example":6},"name":{"type":"string","description":"Location name of the worker node","example":"London"},"country":{"type":"string","description":"Country of the worker node location","example":"United Kingdom"},"continent":{"type":"string","description":"Name of the geographical continent","example":"Europe"},"region":{"type":"string","description":"Name of the geographical region","example":"EMEA"},"latitude":{"type":"number","format":"double","description":"Approximate latitude of the geographical location","example":51.50735},"longitude":{"type":"number","format":"double","description":"Approximate longitude of the geographical location","example":-0.1277583}}},"dataCenter":{"type":"object","description":"Data center where the worker node is deployed","properties":{"id":{"type":"string","description":"ID of the cloud provider's data center","example":"aws-eu-west-2"},"name":{"type":"string","description":"Name of the cloud provider's data center","example":"eu-west-2"},"providerName":{"type":"string","description":"Name of the cloud provider","example":"AWS"},"providerId":{"type":"integer","description":"ID of the cloud provider","example":79},"locationId":{"type":"integer","description":"Location ID","example":6},"locationName":{"type":"string","description":"Location name","example":"London"}}},"os":{"type":"object","description":"Operating system","properties":{"id":{"type":"integer","description":"ID of the operating system","example":48},"family":{"type":"string","description":"Family of the operating system","example":"Linux"},"type":{"type":"string","description":"Type of the operating system","example":"Ubuntu"},"architecture":{"type":"string","description":"Architecture of the operating system","example":"x86-64"},"version":{"type":"string","description":"Version of the operating system","example":"24.04"}}},"cloudNetworkType":{"type":"string","description":"Type of the cloud network","enum":["multi-cloud","default"],"example":"multi-cloud"},"vCpuType":{"type":"string","description":"Type of the virtual Central Processing Unit","enum":["shared","standard","hpc"],"example":"hpc"},"vCpu":{"type":"integer","description":"Number of virtual Central Processing Units (vCPUs)","example":4},"ramGb":{"type":"integer","description":"Capacity of the RAM in gigabytes","example":16},"disks":{"type":"array","description":"Volumes attached","items":{"type":"object","properties":{"id":{"type":"integer","description":"Volume ID","example":108184},"name":{"type":"string","description":"Volume name","example":"volume-9k61k2"},"sizeGb":{"type":"integer","description":"Volume size in gigabytes","example":128},"typeId":{"type":"integer","description":"ID of the volume type","example":2},"type":{"type":"string","description":"Volume type","example":"ssd"},"isBootable":{"type":"boolean","description":"Indicates whether the volume is bootable or not","example":true},"deviceIdentifier":{"type":"string","description":"Device identifier of the volume as seen by the operating system","example":"/dev/sda","nullable":true}}}},"networks":{"type":"array","description":"Public and private networks","items":{"type":"object","properties":{"id":{"type":"integer","description":"Network ID","example":108284},"ip":{"type":"string","description":"Network IP. Null for nodes that have not yet received an IP address (e.g. PENDING or FAILED nodes).","example":"10.112.17.28","nullable":true},"networkTypeId":{"type":"integer","description":"ID of the network type","example":2},"networkType":{"type":"string","description":"Network type","example":"PRIVATE"},"ipVersion":{"type":"string","description":"IP version","nullable":true,"example":null}}}},"cost":{"type":"object","description":"Total cost of the worker node for the period","properties":{"unit":{"type":"string","description":"Period","example":"MONTHS"},"currency":{"type":"string","description":"Currency of the cost","example":"EUR"},"price":{"type":"number","description":"Cost for the period","example":399.089284}}},"securityGroup":{"type":"object","description":"Security group of the worker node","properties":{"id":{"type":"integer","description":"ID of the security group","example":1764},"name":{"type":"string","description":"Name of the security group","example":"sg-uat"}},"nullable":true},"accelerator":{"type":"object","description":"GPU accelerator","properties":{"acceleratorTypeId":{"type":"string","description":"GPU accelerator type ID","example":"53b7db26-4a1b-42f7-97a5-592edd685c5a"},"acceleratorType":{"type":"string","description":"GPU accelerator type","example":"T4"},"accelerators":{"type":"integer","description":"Quantity of GPU accelerators","example":1},"totalGpuMemoryGb":{"type":"integer","description":"Total GPU memory","example":16}},"nullable":true},"localDisks":{"type":"array","description":"Local SSD storage directly attached to the host","items":{"type":"object","properties":{"sizeTb":{"type":"number","description":"Volume size in TB","example":0.125},"typeId":{"type":"integer","description":"ID of the volume type","example":1,"nullable":true},"type":{"type":"string","description":"Volume type","example":"ssd-plus"}}},"nullable":true}}},"KubernetesAutoscalingConfig":{"type":"object","properties":{"groupName":{"type":"string","description":"Group name","example":"autonodegroup"},"dataCenterId":{"type":"string","description":"ID of the data center","example":"gcp-europe-west1-b"},"minimumNodes":{"type":"integer","description":"Minimum number of nodes. Required when using node-count based autoscaling. Must be null if `minimumVCpus` is set.","example":1},"maximumNodes":{"type":"integer","description":"Maximum number of nodes. Required when using node-count based autoscaling. Must be null if `maximumVCpus` is set.","example":2},"targetNodes":{"type":"integer","deprecated":true,"description":"Deprecated alias of minOnDemandCount (former desired total node count). Used only when minOnDemandCount is not provided. Must be null if `targetVCpus` is set.","example":1},"minimumVCpus":{"type":"integer","description":"Minimum number of vCPUs. Required when using vCPU-count based autoscaling. Must be null if `minimumNodes` is set.","nullable":true,"example":null},"maximumVCpus":{"type":"integer","description":"Maximum number of vCPUs. Required when using vCPU-count based autoscaling. Must be null if `maximumNodes` is set.","nullable":true,"example":null},"targetVCpus":{"type":"integer","deprecated":true,"description":"Deprecated alias of minOnDemandCount (former desired total vCPU count). Used only when minOnDemandCount is not provided. Must be null if `targetNodes` is set.","nullable":true,"example":null},"minOnDemandCount":{"type":"integer","description":"Minimum guaranteed number of on-demand (non-spot) units in the group — nodes for node-count scaling, vCPUs for vCPU-count scaling. Allowed range is 0..maximum. It constrains the composition of the existing nodes, not the group size. Defaults to 0 (or to the deprecated target field when provided).","example":1,"nullable":true},"nodeGroupPriceLimit":{"type":"number","description":"Price limit of the autoscaling group","example":50},"useOnDemandInstancesInsteadOfSpots":{"type":"boolean","description":"Use on-demand compute instances instead of spot compute instances","example":true},"spotPercent":{"type":"integer","description":"Percentage of spot instances in the autoscaling group","example":50},"spotMarkup":{"type":"number","description":"Extra markup to the spot instance price","example":5},"userLabels":{"type":"array","description":"ASG label applied to nodes created by this autoscaling group","items":{"type":"object","properties":{"key":{"type":"string","description":"ASG label key","example":"workload"},"value":{"type":"string","description":"ASG label value","example":"batch"}},"required":["key","value"]},"nullable":true},"configurationPriorities":{"type":"array","description":"Compute instance configurations with priorities","items":{"type":"object","properties":{"vCpuType":{"type":"string","description":"Type of the virtual Central Processing Unit (vCPU)","enum":["shared","standard","hpc"],"example":"shared"},"vCpu":{"type":"integer","description":"Number of virtual Central Processing Units (vCPUs)","example":2},"ramGb":{"type":"integer","description":"Capacity of the RAM in gigabytes","example":4},"volumeGb":{"type":"integer","description":"Capacity of the volume in gigabytes","example":16},"volumeType":{"type":"string","description":"Volume type","enum":["ssd","ssd-plus"],"example":"ssd"},"priority":{"type":"string","description":"Configuration priority","enum":["high","med","low"],"example":"high"}}}}},"required":["configurationPriorities","dataCenterId","groupName","useOnDemandInstancesInsteadOfSpots"]},"KubernetesGroupsAddRequest":{"type":"object","properties":{"groups":{"type":"array","description":"Autoscaling groups to add to the cluster","items":{"$ref":"#/components/schemas/KubernetesAutoscalingConfig"},"minItems":1}},"required":["groups"]},"KubernetesGroupsPatchRequest":{"type":"object","properties":{"groups":{"type":"array","description":"Autoscaling groups to update, matched by groupName; groups not mentioned stay untouched","items":{"$ref":"#/components/schemas/KubernetesAutoscalingConfig"},"minItems":1}},"required":["groups"]},"Location":{"type":"object","properties":{"id":{"type":"integer","description":"ID of the geographical location","example":18},"name":{"type":"string","description":"Name of the geographical location (city or state)","example":"London"},"country":{"type":"string","description":"Name of the country where the geographical location is situated","example":"United Kingdom"},"continent":{"type":"string","description":"Name of the geographical continent","example":"Asia"},"region":{"type":"string","description":"Name of the geographical region","example":"EMEA"},"latitude":{"type":"number","format":"double","description":"Approximate latitude of the geographical location","example":51.50735},"longitude":{"type":"number","format":"double","description":"Approximate longitude of the geographical location","example":-0.1277583}}},"MultiCloudNetwork":{"type":"object","properties":{"directConnect":{"type":"object","description":"Multi-cloud network with direct connection","properties":{"networks":{"type":"array","description":"Network within macro region (AMER, EMEA, or APAC).","items":{"type":"object","properties":{"id":{"type":"string","description":"Network ID","example":"6bb37055-1ac2-452b-9005-aded1a5d66eb"},"macroRegion":{"type":"string","description":"Macro region of the network","enum":["emea","amer","apac"],"example":"emea"},"connectivityCenter":{"type":"object","description":"Connectivity center where the connection point is located.","properties":{"id":{"type":"integer","description":"Connectivity center ID","example":3},"name":{"type":"string","description":"Connectivity center location","example":"Frankfurt"}}},"bandwidth":{"type":"object","description":"Bandwidth and rate limit configuration for the network.","properties":{"rateLimit":{"type":"number","description":"Maximum allowed throughput for the connection.","example":1},"unit":{"type":"string","description":"Unit for rateLimit.","enum":["Mbps","Gbps"],"example":"Gbps"}}},"cost":{"type":"object","description":"Pricing information for the network connection.","properties":{"unit":{"type":"string","description":"Billing period for the price.","enum":["MONTH","YEAR"],"example":"MONTH"},"currency":{"type":"string","description":"Currency code","example":"EUR"},"price":{"type":"number","description":"Price for the given billing unit.","example":600}}},"status":{"type":"string","description":"Operational status of the network.","enum":["enabled","disabled","enabling","disabling"],"example":"disabled"},"cloudConnects":{"type":"array","description":"Cloud provider connections available from this Direct Connect network.","items":{"type":"object","description":"A cloud provider connection attached to a Direct Connect network.","properties":{"id":{"type":"string","description":"Unique identifier of the cloud connection.","example":"499d17d4-bf63-496a-a7cd-1829ddd40b06"},"provider":{"type":"object","description":"Cloud provider for this connection.","properties":{"id":{"type":"integer","description":"Numeric identifier of the cloud provider.","example":5},"name":{"type":"string","description":"Cloud provider name.","example":"AZURE"}}},"bandwidth":{"type":"object","description":"Bandwidth and rate limit configuration for the cloud connection.","properties":{"rateLimit":{"type":"integer","description":"Maximum allowed throughput for the cloud connection.","example":100},"unit":{"type":"string","description":"Unit for rateLimit.","enum":["Mbps","Gbps"],"example":"Mbps"}}},"cost":{"type":"object","description":"Pricing information for the cloud connection.","properties":{"unit":{"type":"string","description":"Billing period for the price.","example":"MONTH"},"currency":{"type":"string","description":"Currency code","example":"EUR"},"price":{"type":"number","description":"Price for the given billing unit.","example":200}}},"status":{"type":"string","description":"Operational status of the cloud connection.","enum":["enabled","disabled","enabling","disabling"],"example":"disabled"}}}}}}},"crossRegionConnects":{"type":"array","description":"Cross-region links between networks in different macro regions.","items":{"type":"object","description":"A cross-region connection linking two or more macro regions.","properties":{"id":{"type":"string","description":"Unique identifier of the cross-region connection.","example":"a961184d-f902-4d4a-a70f-e4113531000e"},"networks":{"type":"array","description":"Network endpoints participating in the cross-region connection.","example":[{"id":"6bb37055-1ac2-452b-9005-aded1a5d66eb","macroRegion":"emea"},{"id":"54cc8364-4167-4141-850e-6f644c9a280d","macroRegion":"amer"}],"items":{"type":"object","properties":{"id":{"type":"string","description":"Network ID.","example":"6bb37055-1ac2-452b-9005-aded1a5d66eb"},"macroRegion":{"type":"string","description":"Macro region of the referenced network (AMER, EMEA, or APAC).","enum":["emea","amer","apac"],"example":"emea"}}}},"bandwidth":{"type":"object","description":"Bandwidth and rate limit configuration for the cross-region connection.","properties":{"rateLimit":{"type":"integer","description":"Maximum allowed throughput for the cross-region connection.","example":100},"unit":{"type":"string","description":"Unit for rateLimit.","enum":["Mbps","Gbps"],"example":"Mbps"}}},"cost":{"type":"object","description":"Pricing information for the cross-region connection.","properties":{"unit":{"type":"string","description":"Billing period for the price.","example":"MONTH"},"currency":{"type":"string","description":"Currency code","example":"EUR"},"price":{"type":"number","description":"Price for the given billing unit.","example":200}}},"status":{"type":"string","description":"Operational status of the cross-region connection.","enum":["enabled","disabled"],"example":"disabled"}}}}}}}},"McnDirectNetworkEnable":{"type":"object","description":"Enable a Direct Connect network in a macro region.","properties":{"networkType":{"type":"string","description":"Network connectivity type. Only Direct Connect is supported here.","enum":["direct-connect"],"example":"direct-connect"},"macroRegion":{"type":"string","description":"Macro region that identifies the target network.","enum":["emea","amer","apac"],"example":"emea"},"connectivityCenterId":{"type":"integer","description":"Connectivity Center identifier (city) selected when the network is created. Required for enabling a network.","example":13},"action":{"type":"string","description":"Action to apply to the target resource.","enum":["enable-network"],"example":"enable-network"}},"required":["action","connectivityCenterId","macroRegion","networkType"]},"McnDirectNetworkDisable":{"type":"object","description":"Disable a Direct Connect network in a macro region.","properties":{"networkType":{"type":"string","description":"Network connectivity type for this request. Only Direct Connect is supported here.","enum":["direct-connect"],"example":"direct-connect"},"macroRegion":{"type":"string","description":"Macro region that identifies the target network.","enum":["emea","amer","apac"],"example":"emea"},"action":{"type":"string","description":"Action to apply to the target resource.","enum":["disable-network"],"example":"disable-network"}},"required":["action","macroRegion","networkType"]},"McnDirectCloudConnectAction":{"type":"object","additionalProperties":false,"description":"Enable or disable a cloud connection within a Direct Connect network for a macro region.","properties":{"networkType":{"type":"string","description":"Network connectivity type for this request. Only Direct Connect is supported here.","enum":["direct-connect"],"example":"direct-connect"},"macroRegion":{"type":"string","description":"Macro region that identifies the parent network containing the cloud connection.","enum":["emea","amer","apac"],"example":"emea"},"cloudConnectionProvider":{"type":"string","description":"Cloud provider of the cloud connection to be enabled or disabled.","enum":["aws","gcp","azure"],"example":"aws"},"action":{"type":"string","description":"Action to apply to the target resource.","enum":["enable-cloud-connect","disable-cloud-connect"],"example":"enable-cloud-connect"}},"required":["action","cloudConnectionProvider","macroRegion","networkType"]},"McnDirectCrossConnectAction":{"type":"object","additionalProperties":false,"description":"Enable or disable a cross-region connection between two macro regions for Direct Connect.","properties":{"networkType":{"type":"string","description":"Network connectivity type for this request. Only Direct Connect is supported here.","enum":["direct-connect"],"example":"direct-connect"},"macroRegions":{"type":"array","description":"Exactly two macro regions that form the cross-region connection to be enabled or disabled.","items":{"type":"string","description":"Macro region code.","enum":["emea","amer","apac"],"example":"emea"},"maxItems":2,"minItems":2,"uniqueItems":true},"action":{"type":"string","description":"Action to apply to the target resource.","enum":["enable-cross-region-connect","disable-cross-region-connect"],"example":"enable-cross-region-connect"}},"required":["action","macroRegions","networkType"]},"OperatingSystem":{"type":"object","properties":{"id":{"type":"integer","description":"Operating system ID","example":18},"family":{"type":"string","description":"Operating system family","example":"Linux"},"type":{"type":"string","description":"Operating system type","example":"Ubuntu"},"architecture":{"type":"string","description":"Operating system architecture","example":"x86-64"},"version":{"type":"string","description":"Operating system version","example":"18.04"},"options":{"type":"string","description":"Operating system variant label (\"Clean\" for the base variant, or a driver/GPU label such as \"Deep Learning Base OSS Nvidia Driver GPU AMI\" for variants)","example":"Deep Learning Base OSS Nvidia Driver GPU AMI"}}},"Provider":{"type":"object","properties":{"id":{"type":"integer","description":"ID of the cloud provider","example":5},"name":{"type":"string","description":"Name of the cloud provider","example":"GCP"}}},"RefreshToken":{"type":"object","properties":{"refreshToken":{"type":"string","description":"Refresh token. You can obtain a refresh token from the `/v1/issue-token` endpoint","example":"ad6f8c5js6dkj;s43dv3jljhf9fxej4236235tgdgrthreth8044b84864e2"}},"required":["refreshToken"]},"SecurityGroup":{"type":"object","properties":{"id":{"type":"integer","description":"Security group id","example":5},"name":{"type":"string","description":"Security group name","example":"default"},"createdById":{"type":"integer","description":"ID of the user who created the security group","example":123},"createdByName":{"type":"string","description":"Name of the user who created the security group","example":"Jack Rur"},"modifiedById":{"type":"integer","description":"ID of the user who last edited the security group","example":123},"modifiedByName":{"type":"string","description":"Name of the user who last edited the security group","example":"Jack Rur"},"createdAt":{"type":"string","description":"Date and time of the security group's creation","example":"2023-08-31T09:26:19.347+00:00"},"modifiedAt":{"type":"string","description":"Date and time of the security group's last update","example":"2023-08-31T09:26:19.347+00:00"},"synchronizationStatus":{"type":"string","description":"Synchronization status of the security group. When you make changes in the rules the changes are propagated to the respective provider’s security groups. While this is happening the security groups have the status Synchronizing. After it is done the status changes to Synchronized. When another VM is added to the security group it will not be synchronized at first with the other VMs, therefore the status will be Desynchronized.","enum":["SYNCHRONIZED","DESYNCHRONIZED","SYNCHRONIZING"]},"recomposingStatus":{"type":"string","description":"Recomposing status of the security group. When a new Virtual machine is added to the Security group it starts a synchronization process. During this process the Security group will have a Recomposing status.","enum":["RECOMPOSED","RECOMPOSING"]},"lastModificationErrorDescription":{"type":"string","description":"Text of the error when the Security group was last edited","example":"Unable to update security group"},"rules":{"type":"array","description":"List of the inbound and outbound rules in the Security group","items":{"$ref":"#/components/schemas/SecurityGroupRule"}}}},"SecurityGroupRequest":{"type":"object","properties":{"name":{"type":"string","description":"Name of the security group","example":"new_default"},"rules":{"type":"array","description":"List of the inbound and outbound rules in the Security group","items":{"$ref":"#/components/schemas/SecurityGroupRuleRequest"}}},"required":["name","rules"]},"SecurityGroupInstanceAdd":{"type":"object","properties":{"instanceId":{"type":"integer","description":"ID of the compute instance to be added to the Security group","example":8003}}},"SecurityGroupRule":{"type":"object","properties":{"type":{"type":"string","description":"Type of the security group rule","example":"Custom TCP"},"policy":{"type":"string","description":"Rule policy (all rules are allowing)","example":"ALLOW"},"direction":{"type":"string","description":"Direction of the network traffic: inbound or outbound.\n","example":"INBOUND"},"protocol":{"type":"string","description":"Network protocol of the rule","example":"TCP"},"ports":{"type":"string","description":"Allowed port or port range","example":"30321"},"ipRange":{"type":"string","description":"Allowed IP or IP range","example":"0.0.0.0/0"},"isMutable":{"type":"boolean","description":"Indicates if the rule can be edited. Some security group rules are added by default, cannot be changed, and are marked as immutable.","example":true}}},"SecurityGroupRuleRequest":{"type":"object","properties":{"direction":{"type":"string","description":"Direction of the network traffic","enum":["INBOUND","OUTBOUND"],"example":"INBOUND"},"protocol":{"type":"string","description":"Network protocol","enum":["all","TCP","UDP","ICMP"],"example":"TCP"},"ports":{"type":"string","description":"Allowed port or port range","example":"1-30321"},"ipRange":{"type":"string","description":"Allowed IP or IP range","example":"0.0.0.0/0"}},"required":["direction","ipRange","ports","protocol"]},"SpotCreate":{"type":"object","properties":{"name":{"type":"string","description":"Name of the spot instance","example":"spot-default"},"dataCenterId":{"type":"string","description":"ID of the provider's data center","example":"aws-us-west-1"},"osId":{"type":"integer","description":"ID of the operating system","example":35},"cloudNetworkType":{"type":"string","description":"Type of the cloud network","enum":["isolated","multi-cloud","default"],"example":"multi-cloud"},"vCpuType":{"type":"string","description":"Type of the Central Processing Units (vCPUs)","enum":["shared","standard","hpc"],"example":"shared"},"vCpu":{"type":"integer","description":"Number of virtual Central Processing Units (vCPUs)","example":4},"ramGb":{"type":"integer","description":"Capacity of the RAM in gigabytes","example":2},"volumeType":{"type":"string","description":"Volume type","enum":["ssd","ssd-plus"],"example":"ssd"},"volumeGb":{"type":"integer","description":"Capacity of the volume in gigabytes","example":16},"sshKeyId":{"type":"integer","description":"SSH-key ID","example":124,"nullable":true},"userPassword":{"type":"string","description":"User password","example":"m#P52s@ap$V","nullable":true},"securityGroupId":{"type":"integer","description":"ID of the security group","example":208},"acceleratorTypeId":{"type":"string","description":"GPU accelerator type identifier. Obtain from the acceleratorTypeId field in the GET /v1/spots-configs response. Required when creating a GPU spot instance.","example":"7bf9d828-e3e8-496f-9901-9045640bb287","nullable":true},"accelerators":{"type":"number","description":"Number of GPU accelerators. Must match the value from the selected configuration in GET /v1/spots-configs. Required when acceleratorTypeId is specified.","example":1,"nullable":true},"price":{"type":"number","description":"Offer price of the spot instance","example":0.002635},"initScript":{"type":"string","description":"Optional bash script to execute after the spot instance is created.\nSupported for Linux operating systems only — providing initScript for a Windows osId returns 422.\n","example":"#!/bin/bash\napt-get update && apt-get install -y curl","maxLength":10000,"nullable":true},"installSystemKey":{"type":"boolean","description":"Install the emma system SSH key on the spot instance.\nNot supported for Windows operating system or VMware provider.\n","example":false,"nullable":true}},"required":["cloudNetworkType","dataCenterId","name","osId","price","ramGb","vCpu","vCpuType","volumeGb","volumeType"]},"SpotReboot":{"type":"object","properties":{"action":{"type":"string","description":"Action with the spot instance - reboot","enum":["reboot"],"example":"reboot"}},"required":["action"]},"SpotRename":{"type":"object","properties":{"action":{"type":"string","description":"Action with the spot instance - rename","enum":["rename"],"example":"rename"},"name":{"type":"string","description":"A new name of the spot instance","example":"some-new-name"}},"required":["action","name"]},"SpotStart":{"type":"object","properties":{"action":{"type":"string","description":"Action with the spot instance - start","enum":["start"],"example":"start"}},"required":["action"]},"SpotShutdown":{"type":"object","properties":{"action":{"type":"string","description":"Action with the spot instance - shutdown","enum":["shutdown"],"example":"shutdown"}},"required":["action"]},"SpotChangePrice":{"type":"object","properties":{"action":{"type":"string","description":"Action with the spot instance - changeprice","enum":["changeprice"],"example":"changeprice"},"newSpotPrice":{"type":"number","description":"New price for the spot instance","example":0.1}},"required":["action","newSpotPrice"]},"SshKey":{"type":"object","properties":{"id":{"type":"integer","description":"SSH key ID","example":60},"name":{"type":"string","description":"SSH key name","example":"mykey"},"key":{"type":"string","description":"SSH public key","example":"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDMwmR5qB5VU9X4VYQJjXDT3qketmrrqEABSNAEEkfTtOtIZrKJmMST9bEus/5FFm9b5w5unyZaW39PUe/QDrxwB8Y3b+DTyA1LcRzd2UhCQsybh9DKbDb+HX0lKrgIeUkadwIq5gE2nx3VBQUifa2BGYC7b+FtFLjtHaOwWIvuQC7AYozCB+B69P3q8tK0D9UXlLyGGsBe8MYjl0mV9IumWS7WBz2VDqLhAvFIzpcERVstepLM9Y4mePpDhfQqt85MRIrqTWikhZExwbRmbSFCZHPi85Os2oxSHoXH1NMSBNEt3yJB4Cn5f2nBV45ysd0HcQmn7eLmRPzbkmhfYoOL Lego%20Group@localhost"},"fingerprint":{"type":"string","description":"SSH key fingerprint","example":"f2:60:34:c8:34:b2:a3:da:22:f9:12:f9:03:f0:33:c0"},"keyType":{"type":"string","description":"SSH key type (RSA or ED25519)","example":"RSA"},"createdAt":{"type":"string","description":"Date and time when the SSH key was created","example":"2021-11-26T14:54:11"},"createdByName":{"type":"string","description":"Name of the user who created the SSH key","example":"Automation User"},"createdById":{"type":"integer","description":"ID of the user who created the SSH key","example":123}}},"SshKeyGenerated":{"type":"object","properties":{"id":{"type":"integer","description":"SSH key ID","example":60},"name":{"type":"string","description":"SSH key name","example":"mykey"},"key":{"type":"string","description":"SSH public key","example":"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDMwmR5qB5VU9X4VYQJjXDT3qketmrrqEABSNAEEkfTtOtIZrKJmMST9bEus/5FFm9b5w5unyZaW39PUe/QDrxwB8Y3b+DTyA1LcRzd2UhCQsybh9DKbDb+HX0lKrgIeUkadwIq5gE2nx3VBQUifa2BGYC7b+FtFLjtHaOwWIvuQC7AYozCB+B69P3q8tK0D9UXlLyGGsBe8MYjl0mV9IumWS7WBz2VDqLhAvFIzpcERVstepLM9Y4mePpDhfQqt85MRIrqTWikhZExwbRmbSFCZHPi85Os2oxSHoXH1NMSBNEt3yJB4Cn5f2nBV45ysd0HcQmn7eLmRPzbkmhfYoOL Lego%20Group@localhost"},"fingerprint":{"type":"string","description":"SSH key fingerprint","example":"f2:60:34:c8:34:b2:a3:da:22:f9:12:f9:03:f0:33:c0"},"keyType":{"type":"string","description":"SSH key type (RSA or ED25519)","example":"RSA"},"privateKey":{"type":"string","description":"SSH private key","example":"-----BEGIN RSA PRIVATE KEY-----MIIEpAIBAAKCAQEA72Raj49bugh+eX+tUWmHUT+KKzYNcvBs8F+/GTHHRcUwcYhs-----END RSA PRIVATE KEY-----"},"createdAt":{"type":"string","description":"Date and time when the SSH key was created","example":"2021-11-26T14:54:11"},"createdByName":{"type":"string","description":"Name of the user who created the SSH key","example":"Automation User"},"createdById":{"type":"integer","description":"ID of the user who created the SSH key","example":123}}},"SshKeyCreate":{"type":"object","properties":{"name":{"type":"string","description":"SSH key name","example":"mykey"},"keyType":{"type":"string","description":"SSH key type (RSA or ED25519)","enum":["RSA","ED25519"],"example":"RSA"}},"required":["keyType","name"]},"SshKeyImport":{"type":"object","properties":{"name":{"type":"string","description":"SSH key name","example":"mykey"},"key":{"type":"string","description":"SSH public key","example":"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDMwmR5qB5VU9X4VYQJjXDT3qketmrrqEABSNAEEkfTtOtIZrKJmMST9bEus/5FFm9b5w5unyZaW39PUe/QDrxwB8Y3b+DTyA1LcRzd2UhCQsybh9DKbDb+HX0lKrgIeUkadwIq5gE2nx3VBQUifa2BGYC7b+FtFLjtHaOwWIvuQC7AYozCB+B69P3q8tK0D9UXlLyGGsBe8MYjl0mV9IumWS7WBz2VDqLhAvFIzpcERVstepLM9Y4mePpDhfQqt85MRIrqTWikhZExwbRmbSFCZHPi85Os2oxSHoXH1NMSBNEt3yJB4Cn5f2nBV45ysd0HcQmn7eLmRPzbkmhfYoOL Lego%20Group@localhost"}},"required":["key","name"]},"SshKeyUpdate":{"type":"object","properties":{"name":{"type":"string","description":"SSH key name","example":"mykey"}},"required":["name"]},"Subnetwork":{"type":"object","properties":{"id":{"type":"string","description":"Subnetwork id","example":"d6ffb3db-4940-4979-94f3-68b11a018d98"},"name":{"type":"string","description":"Subnetwork name","example":"default"},"dataCenterId":{"type":"string","description":"ID of the cloud provider's data center","example":"gcore-frankfurt"},"subnetworkPrefix":{"type":"string","description":"The prefix for the subnetwork IP address range","example":"192.168.0.0"},"subnetworkSize":{"type":"integer","description":"The net mask size for the subnetwork","example":24},"resources":{"type":"array","description":"List of entities in the subnetwork","items":{"type":"object","properties":{"id":{"type":"integer","description":"ID of the entity","example":22},"resourceType":{"type":"string","description":"Type of the entity","example":"vm"}}}},"status":{"type":"string","description":"Subnetwork status","example":"active"}}},"SubnetworkCreate":{"type":"object","properties":{"name":{"type":"string","description":"Subnetwork name","example":"subnetwork-name"},"dataCenterId":{"type":"string","description":"ID of the cloud provider's data center","example":"gcore-frankfurt"},"subnetworkPrefix":{"type":"string","description":"The prefix for the subnetwork IP address range","example":"192.168.0.0"},"subnetworkSize":{"type":"integer","description":"The net mask size for the subnetwork","example":24}},"required":["dataCenterId","subnetworkSize"]},"SubnetworkEdit":{"type":"object","properties":{"name":{"type":"string","description":"Subnetwork name","example":"subnetwork-name"}}},"Tag":{"type":"object","properties":{"tagId":{"type":"string","format":"uuid","description":"tag id"},"key":{"type":"string","description":"tag key","example":"env"},"value":{"type":"string","description":"tag key value","example":"dev","nullable":true}},"required":["key","tagId"]},"TagCreate":{"type":"object","properties":{"tagId":{"type":"string","description":"Existing tag id — echo it back on update to match/preserve the stored tag. Omit (or null) for a newly added tag; the backend assigns the id.\n","nullable":true},"key":{"type":"string","description":"tag key","example":"env"},"value":{"type":"string","description":"tag key value","example":"dev","nullable":true}},"required":["key"]},"Token":{"type":"object","properties":{"otherClaims":{"type":"object","description":""},"accessToken":{"type":"string","description":"Access token","example":"eyJhbGcih3In0.eyJleHAiOjE3MDA2Mzc4NjksImlhdCI6MTcwMDYzNzU2OSwianRpIjoiYTMwOGRhMDItYmIwNy00MjVkLTk2NzUtNzFiMjczNzdkMjYxIiwiaXNzIjoiaHR0cHM6Ly9hdXRoLmVtbWEubXMvYXV0aC9yZWFsbXMvZW1tYSIsImF1ZCI6ImFjY291bnQiLCJzdWIiOiIzMDg1YzdlOS1kYjExLT.VCXC-D43-8zp7FVYSNgbbz8KUASAWlFcCqj6wJwif_FReGSIofgDoya54bIBPEugVq0Is7TmbBaXCzkEEASxkMxrCg7r6-7XBWC3P5w8It8Kc-wdVRgjVGSnzz4B8hA"},"expiresIn":{"type":"integer","description":"Seconds until access token expiration","example":300},"refreshExpiresIn":{"type":"integer","description":"Seconds until refresh token expiration","example":1800},"refreshToken":{"type":"string","description":"Refresh token","example":"eyJhIwOGIyYi00YzgwLTQ5NTQtODY4Ni02YmY2OWJiYjg0ZjcifQ.eyJleHAiOjE3MDA2MzkzNjksImlhdCI6MTcwMDYzNzU2OSwianRpIjoiYTIxMjRmZWQtODA5MS00ZDAyLTljtYXBpIiwic2Vzc2lvbl9zdGF0ZSI6IjMzZmNlMWQzLWM1MWUtNDY5Zi1iMmNiLTQ0YzY3YjRmNTEyZSIsInNjb3BlIjoidXNlckF0dHJpYnV0ZSBw"},"tokenType":{"type":"string","description":"Token type","example":"Bearer"},"idToken":{"type":"integer","description":"","nullable":true,"example":null},"notBeforePolicy":{"type":"integer","description":"Timestamp before which the token is not valid","example":1668610246},"sessionState":{"type":"string","description":"","example":"33fce1d3-c51e-469f-b2cb-44c67b4f512e"}}},"Vm":{"type":"object","properties":{"id":{"type":"integer","description":"ID of the virtual machine","example":8100},"createdAt":{"type":"string","description":"Date and time when the virtual machine was created","example":"2021-11-26T14:54:11"},"createdByName":{"type":"string","description":"Name of the user who created the virtual machine","example":"Automation User"},"createdById":{"type":"integer","description":"ID of the user who created the virtual machine","example":123},"modifiedAt":{"type":"string","description":"Date and time when the virtual machine was last edited","example":"2021-11-26T14:54:11"},"modifiedByName":{"type":"string","description":"Name of the user who last edited the virtual machine","example":"Automation User"},"modifiedById":{"type":"integer","description":"ID of the user who last edited the virtual machine","example":123},"name":{"type":"string","description":"Name of the virtual machine","example":"vm-default-e08149hp"},"projectId":{"type":"integer","description":"Project ID","example":933},"status":{"type":"string","description":"Status of the virtual machine","enum":["POWERED_ON","POWERED_OFF","BUSY","DRAFT","FAILED_CREATION"],"example":"POWERED_ON"},"provider":{"type":"object","properties":{"id":{"type":"integer","description":"ID of the cloud provider","example":22},"name":{"type":"string","description":"Name of the cloud provider","example":"Digital Ocean"}}},"location":{"type":"object","properties":{"id":{"type":"integer","description":"ID of the data center location","example":6},"name":{"type":"string","description":"Name of the data center location (city or state)","example":"London"},"country":{"type":"string","description":"Country of the data center location","example":"United Kingdom"},"continent":{"type":"string","description":"Name of the geographical continent","example":"Asia"},"region":{"type":"string","description":"Name of the geographical region","example":"EMEA"},"latitude":{"type":"number","format":"double","description":"Approximate latitude of the geographical location","example":51.50735},"longitude":{"type":"number","format":"double","description":"Approximate longitude of the geographical location","example":-0.1277583}}},"dataCenter":{"type":"object","properties":{"id":{"type":"string","description":"Data center ID","example":"aws-ap-south-1"},"name":{"type":"string","description":"Data center name","example":"eu-north-1"},"providerId":{"type":"integer","description":"ID of the cloud provider","example":5},"providerName":{"type":"string","description":"Name of the cloud provider","example":"DO"},"locationId":{"type":"integer","description":"ID of the data center location","example":35},"locationName":{"type":"string","description":"Name of the data center location","example":"Pune"}}},"os":{"type":"object","properties":{"id":{"type":"integer","description":"ID of the operating system","example":35},"family":{"type":"string","description":"Family of the operating system","example":"Linux"},"architecture":{"type":"string","description":"Architecture of the operating system","example":"x86-64"},"type":{"type":"string","description":"Type of the operating system","example":"Ubuntu"},"version":{"type":"string","description":"Version of the operating system","example":"22.04"}}},"vCpu":{"type":"integer","description":"Number of virtual Central Processing Units (vCPUs)","example":1},"vCpuType":{"type":"string","description":"Type of virtual Central Processing Units (vCPUs)","enum":["shared","standard","hpc"],"example":"shared"},"cloudNetworkType":{"type":"string","description":"Cloud network type","enum":["isolated","multi-cloud","default"],"example":"multi-cloud"},"ramGb":{"type":"integer","description":"Capacity of the RAM in gigabytes","example":2},"disks":{"type":"array","description":"List of volumes","items":{"type":"object","properties":{"id":{"type":"integer","description":"Volume ID","example":5819},"sizeGb":{"type":"integer","description":"Volume size in gigabytes","example":250},"typeId":{"type":"integer","description":"ID of the volume type","example":2},"type":{"type":"string","description":"Volume type","enum":["hdd","ssd","ssd-plus"],"example":"ssd"},"isBootable":{"type":"boolean","description":"Indicates whether the volume is bootable or not","example":true},"deviceIdentifier":{"type":"string","description":"Device identifier of the volume as seen by the operating system","example":"/dev/sda","nullable":true}}}},"localDisks":{"type":"array","description":"Local SSD storage directly attached to the host. Data is ephemeral and will be lost when the VM is stopped or deleted.","items":{"type":"object","properties":{"sizeTb":{"type":"number","description":"Volume size in TB","example":5},"typeId":{"type":"integer","description":"ID of the volume type","example":2},"type":{"type":"string","description":"Volume type","example":"ssd-plus"}}},"nullable":true},"accelerator":{"type":"object","description":"GPU accelerator","properties":{"acceleratorTypeId":{"type":"string","description":"GPU accelerator type ID","example":"b3f5a4cb-4e3c-4c63-8c68-e1bd96b7ae1a"},"acceleratorType":{"type":"string","description":"GPU accelerator type","example":"NVIDIA A100"},"accelerators":{"type":"number","description":"Quantity of GPU accelerators","example":4},"totalGpuMemoryGb":{"type":"integer","description":"Total GPU memory (GPU)","example":320}},"nullable":true},"networks":{"type":"array","description":"","example":[{"id":9825,"ip":"10.106.0.2","ipVersion":4,"networkTypeId":2,"networkType":"PRIVATE"},{"id":9826,"ip":"134.122.100.131","ipVersion":4,"networkTypeId":1,"networkType":"PUBLIC"},{"id":9827,"ip":"2001:0db8:85a3:0000:0000:8a2e:0370:7334","ipVersion":6,"networkTypeId":1,"networkType":"PUBLIC"}],"items":{"type":"object","properties":{"id":{"type":"integer","description":"Network ID","example":9826},"ip":{"type":"string","description":"IPv4 or IPv6 address","example":"10.106.0.2"},"ipVersion":{"type":"number","description":"IP version","example":4},"networkTypeId":{"type":"integer","description":"ID of the network type","example":2},"networkType":{"type":"string","description":"Network type","example":"PRIVATE"}}}},"securityGroup":{"type":"object","properties":{"id":{"type":"integer","description":"ID of the security group","example":208},"name":{"type":"string","description":"Name of the security group","example":"default"}}},"subnetwork":{"type":"object","properties":{"id":{"type":"string","description":"ID of the subnetwork","example":"d6ffb3db-4940-4979-94f3-68b11a018d98"},"name":{"type":"string","description":"Name of the subnetwork","example":"subnetwork-name"}}},"sshKeyId":{"type":"integer","description":"SSH key ID","example":123,"nullable":true},"userName":{"type":"string","description":"User name","example":"root","nullable":true},"userPassword":{"type":"string","description":"User password","example":"m#P52s@ap$V","nullable":true},"cost":{"type":"object","properties":{"unit":{"type":"string","description":"Cost period","example":"MONTHS"},"currency":{"type":"string","description":"Currency of cost","example":"EUR"},"price":{"type":"number","description":"Cost of the virtual machine for the period","example":5.479952}}},"tags":{"type":"array","items":{"$ref":"#/components/schemas/Tag"},"nullable":true},"systemKeyInstalled":{"type":"boolean","description":"Indicates whether the emma system SSH key is installed on the virtual machine","example":true},"workflowExecutionInfo":{"$ref":"#/components/schemas/VmWorkflowExecution"}}},"VmCreate":{"type":"object","properties":{"name":{"type":"string","description":"Virtual machine name","example":"vm-test1"},"dataCenterId":{"type":"string","description":"ID of the provider's data center","example":"aws-us-west-1"},"osId":{"type":"integer","description":"ID of the operating system","example":5},"cloudNetworkType":{"type":"string","description":"Type of the cloud network","enum":["isolated","multi-cloud","default"],"example":"multi-cloud"},"vCpuType":{"type":"string","description":"Type of virtual Central Processing Units (vCPUs)","enum":["shared","standard","hpc"],"example":"shared"},"vCpu":{"type":"integer","description":"Number of virtual Central Processing Units (vCPUs)","example":2},"ramGb":{"type":"integer","description":"Capacity of the RAM in gigabytes","example":4},"volumeType":{"type":"string","description":"Volume type","enum":["ssd","ssd-plus"],"example":"ssd"},"volumeGb":{"type":"integer","description":"Capacity of the volume in gigabytes","example":16},"acceleratorTypeId":{"type":"string","description":"GPU accelerator type ID","example":"b3f5a4cb-4e3c-4c63-8c68-e1bd96b7ae1a"},"accelerators":{"type":"number","description":"Quantity of GPU accelerators","example":4},"sshKeyId":{"type":"integer","description":"SSH-key ID","example":124,"nullable":true},"userPassword":{"type":"string","description":"User password for the Windows virtual machine. Not required for the AWS and GCP virtual machines.","example":"m#P52s@ap$V","nullable":true},"securityGroupId":{"type":"integer","description":"ID of the security group","example":208},"subnetworkId":{"type":"string","description":"ID of the subnetwork","example":"d6ffb3db-4940-4979-94f3-68b11a018d98"},"privateIp":{"type":"string","description":"IP address within the subnetwork range","example":"192.168.0.2"},"ipAddressing":{"type":"string","description":"IP addressing, ipv4 or dual stack (ipv4 + ipv6)","enum":["ipv4","dual_stack"],"example":"ipv4"},"initScript":{"type":"string","description":"Optional bash script to execute after the virtual machine is created.\nSupported for Linux operating systems only — providing initScript for a Windows osId returns 422.\n","example":"#!/bin/bash\napt-get update && apt-get install -y curl","maxLength":10000,"nullable":true},"installSystemKey":{"type":"boolean","description":"Install the emma system SSH key on the virtual machine.\nNot supported for Windows operating system or VMware provider.\n","example":false,"nullable":true}},"required":["cloudNetworkType","dataCenterId","name","osId","ramGb","vCpu","vCpuType","volumeGb","volumeType"]},"VmStart":{"type":"object","properties":{"action":{"type":"string","description":"Action with a virtual machine","enum":["start"],"example":"start"}},"required":["action"]},"VmShutdown":{"type":"object","properties":{"action":{"type":"string","description":"Action with a virtual machine","enum":["shutdown"],"example":"shutdown"}},"required":["action"]},"VmReboot":{"type":"object","properties":{"action":{"type":"string","description":"Action with a virtual machine","enum":["reboot"],"example":"reboot"}},"required":["action"]},"VmRename":{"type":"object","properties":{"action":{"type":"string","description":"Action with a virtual machine","enum":["rename"],"example":"rename"},"name":{"type":"string","description":"A new name of the virtual machine","example":"some-new-name"}},"required":["action","name"]},"VmTransfer":{"type":"object","properties":{"action":{"type":"string","description":"Action with a virtual machine","enum":["transfer"],"example":"transfer"},"dataCenterId":{"type":"string","description":"ID of the provider's data center","example":"aws-us-west-1"},"isKeepOriginalInstance":{"type":"boolean","default":true,"description":"Indicate if it is necessary to keep the original instance","example":true}},"required":["action","dataCenterId"]},"VmClone":{"type":"object","properties":{"action":{"type":"string","description":"Action with a virtual machine","enum":["clone"],"example":"clone"},"name":{"type":"string","description":"Name of the virtual machine","example":"vm-default-name"}},"required":["action","name"]},"VmEditHardware":{"type":"object","properties":{"action":{"type":"string","description":"Action with a virtual machine","enum":["edithardware"],"example":"edithardware"},"vCpu":{"type":"integer","description":"Number of virtual Central Processing Units (vCPUs)","example":4},"vCpuType":{"type":"string","description":"Type of virtual Central Processing Units (vCPUs)","enum":["shared","standard","hpc"],"example":"shared"},"ramGb":{"type":"integer","description":"Capacity of the RAM in gigabytes","example":16},"volumeGb":{"type":"integer","description":"Capacity of the volume in gigabytes","example":500}},"required":["action","ramGb","vCpu","volumeGb"]},"VmResizeCompute":{"type":"object","properties":{"action":{"type":"string","description":"Action with a virtual machine.\n\n**Note:** To retrieve available configurations for DigitalOcean system volumes, use the `edithardware` action\n","enum":["resizecompute"],"example":"resizecompute"},"vCpu":{"type":"integer","description":"Number of virtual Central Processing Units (vCPUs)","example":4},"vCpuType":{"type":"string","description":"Type of virtual Central Processing Units (vCPUs)","enum":["shared","standard","hpc"],"example":"shared"},"ramGb":{"type":"integer","description":"Capacity of the RAM in gigabytes","example":16},"accelerators":{"type":"number","description":"Quantity of GPU accelerators. Optional for non-GPU virtual machines. Required for GPU virtual machines.","example":4}},"required":["action","ramGb","vCpu","vCpuType"]},"VmConfiguration":{"type":"object","properties":{"id":{"type":"string","description":"Configuration ID","example":"0935c792-a45b-46bb-b42d-4d47956ea1ae"},"providerId":{"type":"integer","description":"ID of the cloud provider","example":5},"providerName":{"type":"string","description":"Name of the cloud provider","example":"GCP"},"locationId":{"type":"integer","description":"Location ID","example":6},"locationName":{"type":"string","description":"Location name (city or state)","example":"London"},"dataCenterId":{"type":"string","description":"ID of the data center","example":"aws-us-west-1"},"dataCenterName":{"type":"string","description":"Name of the data center","example":"europe-west2"},"osId":{"type":"integer","description":"ID of the operating system","example":35},"osType":{"type":"string","description":"Type of the operating system","example":"Ubuntu"},"osVersion":{"type":"string","description":"Version of the operating system","example":"18.04"},"cloudNetworkTypes":{"type":"array","description":"List of the cloud network types","example":["default","multi-cloud","isolated"],"items":{"type":"string"}},"vCpuType":{"type":"string","description":"Type of virtual Central Processing Units (vCPUs)","example":"Standard"},"vCpu":{"type":"integer","description":"Number of virtual Central Processing Units (vCPUs)","example":4},"ramGb":{"type":"integer","description":"Capacity of the RAM in gigabytes","example":16},"volumeGb":{"type":"integer","description":"Capacity of the volume in gigabytes","example":500},"volumeType":{"type":"string","description":"Volume type","example":"ssd"},"accelerator":{"description":"GPU accelerator","properties":{"acceleratorTypeId":{"type":"string","description":"Accelerator type ID","example":"b3f5a4cb-4e3c-4c63-8c68-e1bd96b7ae1a"},"acceleratorType":{"type":"string","description":"GPU accelerator type","example":"NVIDIA A100"},"accelerators":{"type":"number","description":"Quantity of GPU accelerators","example":4},"totalGpuMemoryGb":{"type":"integer","description":"Total GPU memory (GB)","example":320}}},"localDisks":{"description":"Local SSD storage directly attached to the host. Data is ephemeral and will be lost when the VM is stopped or deleted.","properties":{"disks":{"type":"integer","description":"Number of local disks attached to the VM","example":2},"sizeTb":{"type":"number","description":"Size of a single disk in TB","example":25},"totalSizeTb":{"type":"number","description":"Total capacity (all disks combined), in TB","example":50},"type":{"type":"string","description":"Disk type","example":"ssd-plus"}}},"cost":{"description":"Cost of the configuration","properties":{"unit":{"type":"string","description":"Cost period","example":"MONTHS"},"currency":{"type":"string","description":"Currency of the cost","example":"EUR"},"pricePerUnit":{"type":"number","description":"Cost for the period","example":5.479952}}}}},"K8sNodeConfiguration":{"type":"object","properties":{"id":{"type":"string","description":"Configuration ID","example":"0935c792-a45b-46bb-b42d-4d47956ea1ae"},"providerId":{"type":"integer","description":"ID of the cloud provider","example":79},"providerName":{"type":"string","description":"Name of the cloud provider","example":"AWS"},"locationId":{"type":"integer","description":"Location ID","example":6},"locationName":{"type":"string","description":"Location name (city or state)","example":"EU (London)"},"dataCenterId":{"type":"string","description":"ID of the data center","example":"aws-eu-west-2"},"dataCenterName":{"type":"string","description":"Name of the data center","example":"EU (London)"},"osId":{"type":"integer","description":"ID of the operating system","example":48},"osType":{"type":"string","description":"Type of the operating system","example":"Ubuntu"},"osVersion":{"type":"string","description":"Version of the operating system","example":"24.04"},"cloudNetworkTypes":{"type":"array","description":"List of the cloud network types","example":["default"],"items":{"type":"string"}},"vCpuType":{"type":"string","description":"Type of virtual Central Processing Units (vCPUs)","example":"hpc"},"vCpu":{"type":"integer","description":"Number of virtual Central Processing Units (vCPUs)","example":4},"ramGb":{"type":"integer","description":"Capacity of the RAM in gigabytes","example":16},"volumeGb":{"type":"integer","description":"Capacity of the volume in gigabytes","example":128},"volumeType":{"type":"string","description":"Volume type","example":"ssd"},"accelerator":{"description":"GPU accelerator","properties":{"acceleratorTypeId":{"type":"string","description":"Accelerator type ID","example":"53b7db26-4a1b-42f7-97a5-592edd685c5a"},"acceleratorType":{"type":"string","description":"GPU accelerator type","example":"NVIDIA T4"},"accelerators":{"type":"number","description":"Quantity of GPU accelerators","example":1},"totalGpuMemoryGb":{"type":"integer","description":"Total GPU memory (GB)","example":16}}},"localDisks":{"description":"Local SSD storage directly attached to the host. Data is ephemeral and will be lost when the VM is stopped or deleted.","properties":{"disks":{"type":"integer","description":"Number of local disks attached to the VM","example":1},"sizeTb":{"type":"number","description":"Size of a single disk in TB","example":0.125},"totalSizeTb":{"type":"number","description":"Total capacity (all disks combined), in TB","example":0.125},"type":{"type":"string","description":"Disk type","example":"ssd-plus"}}},"cost":{"description":"Cost of the configuration","properties":{"unit":{"type":"string","description":"Cost period","example":"MONTHS"},"currency":{"type":"string","description":"Currency of the cost","example":"EUR"},"pricePerUnit":{"type":"number","description":"Cost for the period","example":399.089287}}}}},"SpotVm":{"type":"object","properties":{"id":{"type":"integer","description":"ID of the virtual machine","example":8100},"createdAt":{"type":"string","description":"Date and time when the virtual machine was created","example":"2021-11-26T14:54:11"},"createdByName":{"type":"string","description":"Name of the user who created the virtual machine","example":"Automation User"},"createdById":{"type":"integer","description":"ID of the user who created the virtual machine","example":123},"modifiedAt":{"type":"string","description":"Date and time when the virtual machine was last edited","example":"2021-11-26T14:54:11"},"modifiedByName":{"type":"string","description":"Name of the user who last edited the virtual machine","example":"Automation User"},"modifiedById":{"type":"integer","description":"ID of the user who last edited the virtual machine","example":123},"name":{"type":"string","description":"Name of the virtual machine","example":"vm-default-e08149hp"},"projectId":{"type":"integer","description":"Project ID","example":933},"status":{"type":"string","description":"Status of the virtual machine","enum":["POWERED_ON","POWERED_OFF","BUSY","DRAFT"],"example":"POWERED_ON"},"provider":{"type":"object","properties":{"id":{"type":"integer","description":"ID of the cloud provider","example":22},"name":{"type":"string","description":"Name of the cloud provider","example":"GCP"}}},"location":{"type":"object","properties":{"id":{"type":"integer","description":"ID of the data center location","example":6},"name":{"type":"string","description":"Name of the data center location (city or state)","example":"London"},"country":{"type":"string","description":"Country of the data center location","example":"United Kingdom"},"continent":{"type":"string","description":"Name of the geographical continent","example":"Asia"},"region":{"type":"string","description":"Name of the geographical region","example":"EMEA"},"latitude":{"type":"number","format":"double","description":"Approximate latitude of the geographical location","example":51.50735},"longitude":{"type":"number","format":"double","description":"Approximate longitude of the geographical location","example":-0.1277583}}},"dataCenter":{"type":"object","properties":{"id":{"type":"string","description":"Data center ID","example":"aws-ap-south-1"},"name":{"type":"string","description":"Data center name","example":"eu-north-1"},"providerId":{"type":"integer","description":"ID of the cloud provider","example":5},"providerName":{"type":"string","description":"Name of the cloud provider","example":"GCP"},"locationId":{"type":"integer","description":"ID of the data center location","example":35},"locationName":{"type":"string","description":"Name of the data center location","example":"Pune"}}},"os":{"type":"object","properties":{"id":{"type":"integer","description":"ID of the operating system","example":35},"family":{"type":"string","description":"Family of the operating system","example":"Linux"},"architecture":{"type":"string","description":"Architecture of the operating system","example":"x86-64"},"type":{"type":"string","description":"Type of the operating system","example":"Ubuntu"},"version":{"type":"string","description":"Version of the operating system","example":"22.04"}}},"vCpu":{"type":"integer","description":"Number of virtual Central Processing Units (vCPUs)","example":1},"vCpuType":{"type":"string","description":"Type of virtual Central Processing Units (vCPUs)","enum":["shared","standard","hpc"],"example":"shared"},"cloudNetworkType":{"type":"string","description":"Cloud network type","enum":["isolated","multi-cloud","default"],"example":"multi-cloud"},"ramGb":{"type":"integer","description":"Capacity of the RAM in gigabytes","example":2},"disks":{"type":"array","description":"List of volumes","items":{"type":"object","properties":{"id":{"type":"integer","description":"Volume ID","example":5819},"name":{"type":"string","description":"Volume name","example":"volume-12fg45t"},"sizeGb":{"type":"integer","description":"Volume size in gigabytes","example":250},"typeId":{"type":"integer","description":"ID of the volume type","example":2},"type":{"type":"string","description":"Volume type","example":"ssd"},"isBootable":{"type":"boolean","description":"Indicates whether the volume is bootable or not","example":true},"deviceIdentifier":{"type":"string","description":"Device identifier of the volume as seen by the operating system","example":"/dev/sda","nullable":true}}}},"networks":{"type":"array","description":"","example":[{"id":9826,"ip":"10.106.0.2","networkTypeId":2,"networkType":"PRIVATE"},{"id":9825,"ip":"134.122.100.131","networkTypeId":1,"networkType":"PUBLIC"}],"items":{"type":"object","properties":{"id":{"type":"integer","description":"Network ID","example":9826},"ip":{"type":"string","description":"Network IP","example":"10.106.0.2"},"networkTypeId":{"type":"integer","description":"ID of the network type","example":2},"networkType":{"type":"string","description":"Network type","example":"PRIVATE"}}}},"securityGroup":{"type":"object","properties":{"id":{"type":"integer","description":"ID of the security group","example":208},"name":{"type":"string","description":"Name of the security group","example":"default"}}},"sshKeyId":{"type":"integer","description":"SSH key ID","example":123},"userName":{"type":"string","description":"User name","example":"root"},"userPassword":{"type":"string","description":"Administrator password in the Windows operating system","example":"jsa7235!Hjk"},"cost":{"type":"object","properties":{"unit":{"type":"string","description":"Cost period","example":"HOURS"},"currency":{"type":"string","description":"Currency of cost","example":"EUR"},"price":{"type":"number","description":"Cost of the spot instance for the period","example":0.002952},"minPrice":{"type":"number","description":"Minimal cost of the spot instance for the period","example":0.002952},"maxPrice":{"type":"number","description":"Maximal cost of the spot instance for the period","example":0.003152}}},"localDisks":{"type":"array","description":"Local SSD storage directly attached to the host machine. Size is reported in terabytes (TB). Data is ephemeral and will be lost when the spot instance is stopped or deleted.","items":{"type":"object","properties":{"sizeTb":{"type":"number","description":"Volume size in TB","example":5},"typeId":{"type":"integer","description":"ID of the volume type","example":2},"type":{"type":"string","description":"Volume type","example":"ssd-plus"}}},"nullable":true},"accelerator":{"type":"object","description":"GPU accelerator attached to the spot instance. Present only for GPU-enabled spot instances. null for standard (non-GPU) instances.","properties":{"acceleratorTypeId":{"type":"string","description":"GPU accelerator type ID","example":"53b7db26-4a1b-42f7-97a5-592edd685c5a"},"acceleratorType":{"type":"string","description":"GPU accelerator type","example":"T4"},"accelerators":{"type":"number","description":"Quantity of GPU accelerators","example":1},"totalGpuMemoryGb":{"type":"integer","description":"Total GPU memory","example":16}},"nullable":true},"tags":{"type":"array","items":{"$ref":"#/components/schemas/Tag"},"nullable":true},"systemKeyInstalled":{"type":"boolean","description":"Indicates whether the emma system SSH key is installed on the spot instance","example":true},"workflowExecutionInfo":{"$ref":"#/components/schemas/VmWorkflowExecution"}}},"SystemVolumeConfiguration":{"type":"object","properties":{"providerId":{"type":"integer","description":"ID of the cloud provider","example":5},"providerName":{"type":"string","description":"Name of the cloud provider","example":"GCP"},"locationId":{"type":"integer","description":"Location ID","example":6},"locationName":{"type":"string","description":"Location name (city or state)","example":"London"},"dataCenterId":{"type":"string","description":"ID of the data center","example":"aws-us-west-1"},"dataCenterName":{"type":"string","description":"Name of the data center","example":"europe-west2"},"volumeGb":{"type":"integer","description":"Capacity of the volume in gigabytes","example":500},"volumeType":{"type":"string","description":"Volume type","enum":["ssd","ssd-plus"],"example":"ssd"},"cost":{"type":"object","description":"Cost of the configuration","properties":{"unit":{"type":"string","description":"Cost period","example":"MONTHS"},"currency":{"type":"string","description":"Currency of the cost","example":"EUR"},"pricePerUnit":{"type":"number","description":"Cost for the period","example":5.479952}}}}},"VmResizeConfiguration":{"type":"object","properties":{"vCpuType":{"type":"string","description":"Type of virtual Central Processing Units (vCPUs)","example":"Standard"},"vCpu":{"type":"integer","description":"Number of virtual Central Processing Units (vCPUs)","example":4},"ramGb":{"type":"integer","description":"Capacity of the RAM in gigabytes","example":16},"providerComputeType":{"type":"string","description":"Provider-specific compute type identifier","example":"Standard_D4s_v3"},"accelerator":{"description":"GPU accelerator","properties":{"acceleratorTypeId":{"type":"string","description":"Accelerator type ID","example":"b3f5a4cb-4e3c-4c63-8c68-e1bd96b7ae1a"},"acceleratorType":{"type":"string","description":"GPU accelerator type","example":"NVIDIA A100"},"accelerators":{"type":"number","description":"Quantity of GPU accelerators","example":4},"totalGpuMemoryGb":{"type":"integer","description":"Total GPU memory (GB)","example":320}}},"cost":{"type":"object","description":"Cost of the configuration","properties":{"unit":{"type":"string","description":"Cost period","example":"MONTHS"},"currency":{"type":"string","description":"Currency of the cost","example":"EUR"},"pricePerUnit":{"type":"number","description":"Cost for the period","example":5.479952}}}}},"Volume":{"type":"object","properties":{"id":{"type":"integer","description":"Volume ID","example":5819},"name":{"type":"string","description":"Volume name","example":"volume-1ay48j"},"attachedToId":{"type":"integer","description":"Compute instance ID that the volume is currently attached to","example":5806},"projectId":{"type":"integer","description":"Project ID","example":933},"sizeGb":{"type":"integer","description":"Volume size in gigabytes","example":250},"type":{"type":"string","description":"Volume type","enum":["hdd","ssd","ssd-plus"],"example":"ssd"},"isSystem":{"type":"boolean","description":"Indicates whether the volume contains OS or not","example":true},"status":{"type":"string","description":"Status of the volume","enum":["DRAFT","BUSY","AVAILABLE","ACTIVE","FAILED","DELETED"],"example":"ACTIVE"},"provider":{"type":"object","properties":{"id":{"type":"integer","description":"ID of the cloud provider","example":12},"name":{"type":"string","description":"Name of the cloud provider","example":"AWS"}}},"location":{"type":"object","properties":{"id":{"type":"integer","description":"ID of the data center location","example":6},"name":{"type":"string","description":"Name of the data center location (city or state)","example":"London"},"country":{"type":"string","description":"Country of the data center location","example":"United Kingdom"},"continent":{"type":"string","description":"Name of the geographical continent","example":"Europe"},"region":{"type":"string","description":"Name of the geographical region","example":"EMEA"},"latitude":{"type":"number","format":"double","description":"Approximate latitude of the geographical location","example":51.50735},"longitude":{"type":"number","format":"double","description":"Approximate longitude of the geographical location","example":-0.1277583}}},"dataCenter":{"type":"object","properties":{"id":{"type":"string","description":"Data center ID","example":"aws-eu-west-2"},"name":{"type":"string","description":"Data center name","example":"eu-west-2"},"providerId":{"type":"integer","description":"ID of the cloud provider","example":12},"providerName":{"type":"string","description":"Name of the cloud provider","example":"AWS"},"locationId":{"type":"integer","description":"ID of the data center location","example":6},"locationName":{"type":"string","description":"Name of the data center location","example":"London"}}},"createdAt":{"type":"string","description":"Date and time when the volume was created","example":"2021-11-26T14:54:11"},"createdByName":{"type":"string","description":"Name of the user who created the volume","example":"Automation User"},"createdById":{"type":"integer","description":"ID of the user who created the volume","example":123},"modifiedAt":{"type":"string","description":"Date and time when the volume was last edited","example":"2021-11-26T14:54:11"},"modifiedByName":{"type":"string","description":"Name of the user who last edited the volume","example":"Automation User"},"modifiedById":{"type":"integer","description":"ID of the user who last edited the volume","example":123},"cost":{"type":"object","properties":{"unit":{"type":"string","description":"Cost period","example":"MONTHS"},"currency":{"type":"string","description":"Currency of cost","example":"EUR"},"price":{"type":"number","description":"Cost of the volume for the period","example":5.479952}}},"deviceIdentifier":{"type":"string","description":"Device identifier of the volume as seen by the operating system","example":"/dev/sda","nullable":true}}},"VolumeConfiguration":{"type":"object","properties":{"providerId":{"type":"integer","description":"ID of the cloud provider","example":5},"providerName":{"type":"string","description":"Name of the cloud provider","example":"GCP"},"locationId":{"type":"integer","description":"Location ID","example":6},"locationName":{"type":"string","description":"Location name (city or state)","example":"London"},"dataCenterId":{"type":"string","description":"ID of the data center","example":"aws-us-west-1"},"dataCenterName":{"type":"string","description":"Name of the data center","example":"europe-west2"},"volumeGb":{"type":"integer","description":"Capacity of the volume in gigabytes","example":500},"volumeType":{"type":"string","description":"Volume type","enum":["hdd","ssd","ssd-plus"],"example":"ssd"},"cost":{"type":"object","description":"Cost of the configuration","properties":{"unit":{"type":"string","description":"Cost period","example":"MONTHS"},"currency":{"type":"string","description":"Currency of the cost","example":"EUR"},"pricePerUnit":{"type":"number","description":"Cost for the period","example":5.479952}}}}},"VolumeCreate":{"type":"object","properties":{"dataCenterId":{"type":"string","description":"ID of the data center","example":"aws-us-west-1"},"volumeGb":{"type":"integer","description":"Capacity of the volume in gigabytes","example":500},"volumeType":{"type":"string","description":"Volume type","enum":["hdd","ssd","ssd-plus"],"example":"ssd"},"attachedToId":{"type":"integer","description":"Target virtual machine for attaching the volume","example":51080}},"required":["dataCenterId","volumeGb","volumeType"]},"VolumeAttach":{"type":"object","properties":{"action":{"type":"string","description":"Action with a virtual machine","enum":["attach"],"example":"attach"},"volumeId":{"type":"integer","description":"Volume ID to attach to the virtual machine","example":532689}},"required":["action","volumeId"]},"VolumeDetach":{"type":"object","properties":{"action":{"type":"string","description":"Action with a virtual machine","enum":["detach"],"example":"detach"},"volumeId":{"type":"integer","description":"Volume ID to detach from the virtual machine","example":532689}},"required":["action","volumeId"]},"VolumeEdit":{"type":"object","properties":{"action":{"type":"string","description":"Action with a volume\n\n**Note:** To retrieve available configurations for DigitalOcean system volumes, use the VM `edithardware` action\n","enum":["edit"],"example":"edit"},"volumeGb":{"type":"integer","description":"Capacity of the volume in gigabytes","example":250}},"required":["action","volumeGb"]},"PaginatedResult":{"type":"object","properties":{"totalPages":{"type":"integer","format":"int32","description":"Total number of pages available"},"totalElements":{"type":"integer","format":"int64","description":"Total number of elements across all pages"},"size":{"type":"integer","format":"int32","description":"Number of elements per page"},"content":{"type":"array","description":"List of elements on the current page","items":{}},"number":{"type":"integer","format":"int32","description":"Current page number (0-based index)"},"sort":{"$ref":"#/components/schemas/SortObject"},"last":{"type":"boolean","description":"Indicates if this is the last page"},"first":{"type":"boolean","description":"Indicates if this is the first page"},"numberOfElements":{"type":"integer","format":"int32","description":"Number of elements on the current page"},"pageable":{"$ref":"#/components/schemas/PageableObject"},"empty":{"type":"boolean","description":"Indicates if the page is empty"}}},"PageableObject":{"type":"object","description":"Pageable object containing pagination information","properties":{"offset":{"type":"integer","format":"int64","description":"Offset of the first element on the page"},"sort":{"$ref":"#/components/schemas/SortObject"},"pageSize":{"type":"integer","format":"int32","description":"Number of elements per page"},"pageNumber":{"type":"integer","format":"int32","description":"Current page number (0-based index)"},"paged":{"type":"boolean","description":"Indicates if pagination is applied"},"unpaged":{"type":"boolean","description":"Indicates if pagination is not applied"}}},"SortObject":{"type":"object","description":"Sorting criteria for the elements","properties":{"empty":{"type":"boolean","description":"Indicates if the sorting criteria is empty"},"unsorted":{"type":"boolean","description":"Indicates if the elements are unsorted"},"sorted":{"type":"boolean","description":"Indicates if the elements are sorted"}}},"BadRequestError":{"properties":{"code":{"type":"string","description":"Error code","example":"BAD_REQUEST"},"message":{"type":"string","description":"Error message","example":"Bad request"}},"required":["code","message"]},"NotFoundError":{"properties":{"code":{"type":"string","description":"Error code","example":"NOT_FOUND"},"message":{"type":"string","description":"Error message","example":"Not found"}},"required":["code","message"]},"TimeoutResponse":{"properties":{"code":{"type":"string","description":"Error code","example":"Timeout"},"message":{"type":"string","description":"Error message","example":"The system did not respond in time."}},"required":["code","message"]},"InternalErrorResponse":{"properties":{"code":{"type":"string","description":"Error code","example":"InternalError"},"message":{"type":"string","description":"Error message","example":"Action rejected"}},"required":["code","message"]},"UnauthorizedError":{"properties":{"code":{"type":"string","description":"Error code","example":"UNAUTHORIZED"},"message":{"type":"string","description":"Error message","example":"Token is not provided"}},"required":["code","message"]},"ForbiddenError":{"properties":{"code":{"type":"string","description":"Error code","example":"FORBIDDEN"},"message":{"type":"string","description":"Error message","example":"Access is denied. You do not have the necessary permissions to perform this action."}},"required":["code","message"]},"ConflictError":{"properties":{"code":{"type":"string","description":"Error code","example":"CONFLICT"},"message":{"type":"string","description":"Error message","example":"Unable to update entity"}},"required":["code","message"]},"ConnectivityCenter":{"type":"object","description":"Connectivity center","properties":{"id":{"type":"integer","description":"Connectivity center ID","example":1},"location":{"type":"string","description":"Connectivity center location","example":"London"},"macroRegion":{"type":"string","description":"Macro region of the connectivity center","enum":["emea","amer","apac"],"example":"emea"},"networkType":{"type":"string","description":"Network type supported by the connectivity center","enum":["direct-connect"],"example":"direct-connect"}},"required":["id","location","macroRegion","networkType"]},"UnprocessableEntityError":{"properties":{"code":{"type":"string","description":"Error code","example":"UNPROCESSABLE_ENTITY"},"message":{"type":"string","description":"Error message","example":"Unprocessable entity"}},"required":["code","message"]},"InternalServerError":{"type":"object","properties":{"code":{"type":"string","description":"Error code","example":"INTERNAL_SERVER_ERROR"},"message":{"type":"string","description":"Error message","example":"Internal server error"}},"required":["code","message"]},"VmWorkflowExecution":{"type":"object","description":"Workflow execution that provisioned the virtual machine","properties":{"executionId":{"type":"string","format":"uuid","description":"Id of the workflow execution"},"workflowTemplateId":{"type":"integer","format":"int64","description":"Id of the workflow template that was executed; returned even after the template has been deleted","example":123,"nullable":true},"workflowTemplateName":{"type":"string","description":"Name of the workflow template","example":"install-lamp"},"workflowExists":{"type":"boolean","description":"Whether the workflow template still exists; false when it was deleted, in which case clients must not render a link to the template","example":true},"status":{"type":"string","description":"Status of the workflow execution","enum":["PENDING","RUNNING","SUCCESS","FAILED"]},"versionId":{"type":"integer","format":"int64","description":"ID of the workflow version used to create the instance"},"versionName":{"type":"string","description":"Name of the workflow version used to create the instance","example":"v3"},"versionExists":{"type":"boolean","description":"Whether the workflow version still exists; false when it was deleted, in which case clients must not render a link to the template","example":true}},"nullable":true},"ResourceParam":{"type":"object","properties":{"name":{"type":"string","description":"Name of the resource parameter, e.g. minCpuCores, minRamSizeGb, minVolumeSizeGb (and their max* counterparts).","example":"minCpuCores"},"value":{"type":"string","description":"Value of the resource parameter","example":"4"}},"required":["name","value"]},"ResourceParamCreate":{"type":"object","properties":{"name":{"type":"string","description":"Name of the resource parameter, e.g. minCpuCores, minRamSizeGb, minVolumeSizeGb (and their max* counterparts).","enum":["minCpuCores","maxCpuCores","minRamSizeGb","maxRamSizeGb","minVolumeSizeGb","maxVolumeSizeGb"],"example":"minCpuCores"},"value":{"type":"string","description":"Value of the resource parameter","example":"4"}},"required":["name","value"]},"WorkflowTemplateActionRequest":{"type":"object","properties":{"action":{"type":"string","description":"Action to perform on the workflow template. Currently only `copy` is supported (creates a duplicate of the template). Accepted case-insensitively; serialized in lowercase.\n","enum":["copy"],"example":"copy"}},"required":["action"]}},"responses":{"BadRequestError":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequestError"}}}},"UnauthorizedError":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizedError"}}}},"ForbiddenError":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"}}}},"NotFoundError":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFoundError"}}}},"ConflictError":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConflictError"}}}},"UnprocessableEntityError":{"description":"Unprocessable entity","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnprocessableEntityError"}}}},"InternalServerError":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalServerError"}}}}},"parameters":{"acceleratorTypeId":{"name":"acceleratorTypeId","in":"query","description":"GPU accelerator type ID","schema":{"type":"string"}},"acceleratorsMax":{"name":"acceleratorsMax","in":"query","description":"Maximum quantity of GPU accelerators","schema":{"type":"number"}},"acceleratorsMin":{"name":"acceleratorsMin","in":"query","description":"Minimum quantity of GPU accelerators","schema":{"type":"number"}},"attachedToId":{"name":"attachedToId","in":"query","description":"ID of the linked instance","schema":{"type":"integer"}},"k8sConnectionType":{"name":"k8sConnectionType","in":"query","description":"Type of Kubernetes cluster network connectivity","required":true,"schema":{"type":"string","enum":["direct_connect","internet_connect"],"example":"internet_connect"}},"cloudNetworkType":{"name":"cloudNetworkType","in":"query","description":"Type of cloud network","schema":{"type":"string","enum":["isolated","multi-cloud"],"example":"multi-cloud"}},"connectivityCenterId":{"name":"id","in":"path","description":"Connectivity center ID","required":true,"schema":{"type":"integer","example":1}},"dataCenterId":{"name":"dataCenterId","in":"path","description":"ID of the cloud provider's data center","required":true,"schema":{"type":"string","example":"aws-us-west-1"}},"dataCenterName":{"name":"dataCenterName","in":"query","description":"Name of the cloud provider's data center","required":false,"schema":{"type":"string","example":"eu-north-1"}},"dataCenterIdQuery":{"name":"dataCenterId","in":"query","description":"ID of the cloud provider's data center","schema":{"type":"string","example":"aws-us-west-1"}},"dataVolumeType":{"name":"volumeType","in":"query","description":"Volume type of the data volume","schema":{"type":"string","enum":["hdd","ssd","ssd-plus"],"example":"ssd"}},"kubernetesId":{"name":"kubernetesId","in":"path","description":"ID of the Kubernetes cluster","required":true,"schema":{"type":"integer"}},"locationFilter":{"name":"location","in":"query","description":"Filter by location using equality. Can be repeated to apply OR logic.\nExample:\n`?location=Frankfurt&location=Paris`\n","required":false,"schema":{"type":"string","example":"Frankfurt"}},"locationLikeFilter":{"name":"location.like","in":"query","description":"Filter by location using contains operator.","required":false,"schema":{"type":"string","example":"Frank"}},"locationNeFilter":{"name":"location.ne","in":"query","description":"Filter by location using not equal operator.","required":false,"schema":{"type":"string","example":"London"}},"locationNlikeFilter":{"name":"location.nlike","in":"query","description":"Filter by location using does not contain operator.","required":false,"schema":{"type":"string","example":"don"}},"locationId":{"name":"locationId","in":"path","description":"ID of the geographic location","required":true,"schema":{"type":"integer"}},"locationName":{"name":"name","in":"query","description":"Name of the geographic location","required":false,"schema":{"type":"string","example":"Stockholm"}},"locationIdQuery":{"name":"locationId","in":"query","description":"ID of the geographic location","schema":{"type":"integer","example":6}},"macroRegion":{"name":"macroRegion","in":"query","description":"Macro region filter","required":false,"schema":{"type":"string","enum":["EMEA","AMER","APAC"],"example":"EMEA"}},"macroRegionFilter":{"name":"macroRegion","in":"query","description":"Filter by macro region using equality. Can be repeated to apply OR logic.\n\nExample:\n`?macroRegion=emea&macroRegion=amer`\n","required":false,"schema":{"type":"string","enum":["emea","amer","apac"],"example":"emea"}},"networkType":{"name":"networkType","in":"query","description":"Multi-cloud network type","required":false,"schema":{"type":"string","enum":["direct-connect"],"example":"direct-connect"}},"networkTypeFilter":{"name":"networkType","in":"query","description":"Filter by network type using equality.","required":false,"schema":{"type":"string","enum":["direct-connect"],"example":"direct-connect"}},"networkTypeNeFilter":{"name":"networkType.ne","in":"query","description":"Filter by network type using not equal operator.","required":false,"schema":{"type":"string","enum":["direct-connect"],"example":"direct-connect"}},"operatingSystemId":{"name":"operatingSystemId","in":"path","description":"ID of the operating system","required":true,"schema":{"type":"integer"}},"osType":{"name":"type","in":"query","description":"Type of the operating system","schema":{"type":"string","example":"Ubuntu"}},"osArchitecture":{"name":"architecture","in":"query","description":"Architecture of the operating system","schema":{"type":"string","example":"x86-64"}},"osVersion":{"name":"version","in":"query","description":"Version of the operating system","schema":{"type":"string","example":"18.04"}},"pageQuery":{"name":"page","in":"query","description":"Page number","schema":{"type":"integer","example":0}},"pageQueryRequired":{"name":"page","in":"query","description":"Page number","required":true,"schema":{"type":"integer","example":0}},"priceMin":{"name":"priceMin","in":"query","description":"Minimum price of the compute instance","schema":{"type":"number"}},"priceMax":{"name":"priceMax","in":"query","description":"Maximum price of the compute instance","schema":{"type":"number"}},"providerId":{"name":"providerId","in":"path","description":"ID of the cloud provider","required":true,"schema":{"type":"integer"}},"providerIdQuery":{"name":"providerId","in":"query","description":"ID of the cloud provider","schema":{"type":"integer","example":5}},"providerName":{"name":"providerName","in":"query","description":"Name of the cloud provider","required":false,"schema":{"type":"string","example":"GCP"}},"ramGb":{"name":"ramGb","in":"query","description":"RAM of the compute instance in gigabytes","schema":{"type":"integer","example":16}},"ramGbMin":{"name":"ramGbMin","in":"query","description":"Minimum RAM of the compute instance in gigabytes","schema":{"type":"integer","example":4}},"ramGbMax":{"name":"ramGbMax","in":"query","description":"Maximum RAM of the compute instance in gigabytes","schema":{"type":"integer","example":32}},"securityGroupId":{"name":"securityGroupId","in":"path","description":"ID of the security group","required":true,"schema":{"type":"integer"}},"securityGroupRuleId":{"name":"securityGroupRuleId","in":"path","description":"ID of the rule in the security group","required":true,"schema":{"type":"integer"}},"sizeQuery":{"name":"size","in":"query","description":"Query size","schema":{"type":"integer","example":100}},"sizeQueryRequired":{"name":"size","in":"query","description":"Query size","required":true,"schema":{"type":"integer","example":100}},"sortQuery":{"name":"sort","in":"query","description":"Sorting criteria in the format `field,direction` (e.g. `createdAt,desc`).\nRepeat the parameter for multiple sort fields. Default: `createdAt,desc`.\nAllowed fields: name, createdAt, status, resourceTypes, isDefault.\nNote: sorting by `resourceTypes` orders by the canonical set of resource types (each value lower-cased, then sorted), so templates with the same set of types group together.\n","required":false,"schema":{"type":"array","items":{"type":"string","example":"createdAt,desc"}}},"spotInstanceId":{"name":"spotInstanceId","in":"path","description":"ID of the spot instance","required":true,"schema":{"type":"integer"}},"sshKeyId":{"name":"sshKeyId","in":"path","description":"SSH key ID","required":true,"schema":{"type":"integer"}},"subnetworkId":{"name":"subnetworkId","in":"path","description":"Subnetwork ID","required":true,"schema":{"type":"string"}},"vCpu":{"name":"vCpu","in":"query","description":"virtual Central Processing Units (vCPUs) for the compute instance","schema":{"type":"integer","example":4}},"vCpuMin":{"name":"vCpuMin","in":"query","description":"Minimum number of vCPUs for the compute instance","schema":{"type":"integer","example":2}},"vCpuMax":{"name":"vCpuMax","in":"query","description":"Maximum number of vCPUs for the compute instance","schema":{"type":"integer","example":8}},"vCpuType":{"name":"vCpuType","in":"query","description":"Type of vCPUs for the compute instance","schema":{"type":"string","enum":["shared","standard","hpc"],"example":"standard"}},"isBootable":{"name":"isBootable","in":"query","description":"If the volume is bootable","required":true,"schema":{"type":"boolean","example":false}},"vmId":{"name":"vmId","in":"path","description":"ID of the virtual machine","required":true,"schema":{"type":"integer"}},"vmIdQuery":{"name":"vmId","in":"query","description":"ID of the virtual machine","schema":{"type":"integer"}},"volumeGb":{"name":"volumeGb","in":"query","description":"Volume size of the compute instance in gigabytes","schema":{"type":"integer","example":500}},"volumeId":{"name":"volumeId","in":"path","description":"ID of the volume","required":true,"schema":{"type":"integer"}},"volumeGbMin":{"name":"volumeGbMin","in":"query","description":"Minimum volume size of the compute instance in gigabytes","schema":{"type":"integer","example":16}},"volumeGbMax":{"name":"volumeGbMax","in":"query","description":"Maximum volume size of the compute instance in gigabytes","schema":{"type":"integer","example":1000}},"volumeType":{"name":"volumeType","in":"query","description":"Volume type of the compute instance","schema":{"type":"string","enum":["ssd","ssd-plus"],"example":"ssd"}},"projectIdQuery":{"name":"projectId","in":"query","description":"Unused, created for future API extention. Will be ignored if used.","required":false,"schema":{"type":"integer"}},"workflowTemplateId":{"name":"id","in":"path","description":"ID of the workflow template","required":true,"schema":{"type":"integer"}},"name.like":{"name":"name.like","in":"query","description":"Filter workflow templates by name using partial match","required":false,"schema":{"type":"string","example":"Deploy"}},"__filter.tag":{"name":"__filter.tag","in":"query","description":"Filter workflow templates by tag key and value. For example, __filter.tag=env:prod will return workflow templates with tag key \"env\" and value \"prod\", __filter.tag=env:* will return workflow templates with tag key \"env\" and any value","required":false,"schema":{"type":"string","example":"env:prod"}},"__filter.tag.ne":{"name":"__filter.tag.ne","in":"query","description":"Exclude workflow templates by tag key and value. For example, __filter.tag.ne=env:prod will exclude workflow templates with tag key \"env\" and value \"prod\", __filter.tag.ne=env:* will exclude workflow templates with tag key \"env\" and any value","required":false,"schema":{"type":"string","example":"env:prod"}},"status":{"name":"status","in":"query","description":"Filter workflow templates by status","required":false,"schema":{"type":"string","enum":["PUBLISHED","UNPUBLISHED"],"example":"PUBLISHED"}},"status.ne":{"name":"status.ne","in":"query","description":"Exclude workflow templates by status","required":false,"schema":{"type":"string","enum":["PUBLISHED","UNPUBLISHED"],"example":"UNPUBLISHED"}},"kubernetesNodeIdsQuery":{"name":"nodeId","in":"query","description":"IDs of the worker nodes to remove. Can be repeated; duplicates collapse.","required":true,"schema":{"type":"array","items":{"type":"integer"}}},"kubernetesNodeId":{"name":"nodeId","in":"path","description":"ID of the Kubernetes worker node","required":true,"schema":{"type":"integer"}},"kubernetesGroupNamesQuery":{"name":"groupName","in":"query","description":"Names of the autoscaling groups to remove. Can be repeated; duplicates collapse.","required":true,"schema":{"type":"array","items":{"type":"string"}}},"workflowTemplateVersionId":{"name":"versionId","in":"path","description":"ID of the workflow template version","required":true,"schema":{"type":"integer"}}},"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT"}}}}