curl --request POST \
--url https://api.io.solutions/enterprise/v1/io-cloud/caas/deploy \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"resource_private_name": "<string>",
"duration_hours": 123,
"gpus_per_container": 123,
"hardware_id": 123,
"location_ids": [
123
],
"container_config": {},
"registry_config": {},
"replica_count": 123,
"entrypoint": [
"<string>"
],
"traffic_port": 123,
"env_variables": {},
"secret_env_variables": {},
"args": [
"<string>"
],
"image_url": "<string>",
"registry_username": "<string>",
"registry_secret": "<string>"
}
'import requests
url = "https://api.io.solutions/enterprise/v1/io-cloud/caas/deploy"
payload = {
"resource_private_name": "<string>",
"duration_hours": 123,
"gpus_per_container": 123,
"hardware_id": 123,
"location_ids": [123],
"container_config": {},
"registry_config": {},
"replica_count": 123,
"entrypoint": ["<string>"],
"traffic_port": 123,
"env_variables": {},
"secret_env_variables": {},
"args": ["<string>"],
"image_url": "<string>",
"registry_username": "<string>",
"registry_secret": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
resource_private_name: '<string>',
duration_hours: 123,
gpus_per_container: 123,
hardware_id: 123,
location_ids: [123],
container_config: {},
registry_config: {},
replica_count: 123,
entrypoint: ['<string>'],
traffic_port: 123,
env_variables: {},
secret_env_variables: {},
args: ['<string>'],
image_url: '<string>',
registry_username: '<string>',
registry_secret: '<string>'
})
};
fetch('https://api.io.solutions/enterprise/v1/io-cloud/caas/deploy', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.io.solutions/enterprise/v1/io-cloud/caas/deploy",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'resource_private_name' => '<string>',
'duration_hours' => 123,
'gpus_per_container' => 123,
'hardware_id' => 123,
'location_ids' => [
123
],
'container_config' => [
],
'registry_config' => [
],
'replica_count' => 123,
'entrypoint' => [
'<string>'
],
'traffic_port' => 123,
'env_variables' => [
],
'secret_env_variables' => [
],
'args' => [
'<string>'
],
'image_url' => '<string>',
'registry_username' => '<string>',
'registry_secret' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.io.solutions/enterprise/v1/io-cloud/caas/deploy"
payload := strings.NewReader("{\n \"resource_private_name\": \"<string>\",\n \"duration_hours\": 123,\n \"gpus_per_container\": 123,\n \"hardware_id\": 123,\n \"location_ids\": [\n 123\n ],\n \"container_config\": {},\n \"registry_config\": {},\n \"replica_count\": 123,\n \"entrypoint\": [\n \"<string>\"\n ],\n \"traffic_port\": 123,\n \"env_variables\": {},\n \"secret_env_variables\": {},\n \"args\": [\n \"<string>\"\n ],\n \"image_url\": \"<string>\",\n \"registry_username\": \"<string>\",\n \"registry_secret\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.io.solutions/enterprise/v1/io-cloud/caas/deploy")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"resource_private_name\": \"<string>\",\n \"duration_hours\": 123,\n \"gpus_per_container\": 123,\n \"hardware_id\": 123,\n \"location_ids\": [\n 123\n ],\n \"container_config\": {},\n \"registry_config\": {},\n \"replica_count\": 123,\n \"entrypoint\": [\n \"<string>\"\n ],\n \"traffic_port\": 123,\n \"env_variables\": {},\n \"secret_env_variables\": {},\n \"args\": [\n \"<string>\"\n ],\n \"image_url\": \"<string>\",\n \"registry_username\": \"<string>\",\n \"registry_secret\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.io.solutions/enterprise/v1/io-cloud/caas/deploy")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"resource_private_name\": \"<string>\",\n \"duration_hours\": 123,\n \"gpus_per_container\": 123,\n \"hardware_id\": 123,\n \"location_ids\": [\n 123\n ],\n \"container_config\": {},\n \"registry_config\": {},\n \"replica_count\": 123,\n \"entrypoint\": [\n \"<string>\"\n ],\n \"traffic_port\": 123,\n \"env_variables\": {},\n \"secret_env_variables\": {},\n \"args\": [\n \"<string>\"\n ],\n \"image_url\": \"<string>\",\n \"registry_username\": \"<string>\",\n \"registry_secret\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"status": "string",
"deployment_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
}"string"{
"detail": [
{
"loc": [
"string",
0
],
"msg": "string",
"type": "string"
}
]
}Deploy a Container
This endpoint is used to deploy a CaaS cluster on IO.NET infrastructure. The container must expose an HTTP server on a single port, and it must run within a single node.
curl --request POST \
--url https://api.io.solutions/enterprise/v1/io-cloud/caas/deploy \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"resource_private_name": "<string>",
"duration_hours": 123,
"gpus_per_container": 123,
"hardware_id": 123,
"location_ids": [
123
],
"container_config": {},
"registry_config": {},
"replica_count": 123,
"entrypoint": [
"<string>"
],
"traffic_port": 123,
"env_variables": {},
"secret_env_variables": {},
"args": [
"<string>"
],
"image_url": "<string>",
"registry_username": "<string>",
"registry_secret": "<string>"
}
'import requests
url = "https://api.io.solutions/enterprise/v1/io-cloud/caas/deploy"
payload = {
"resource_private_name": "<string>",
"duration_hours": 123,
"gpus_per_container": 123,
"hardware_id": 123,
"location_ids": [123],
"container_config": {},
"registry_config": {},
"replica_count": 123,
"entrypoint": ["<string>"],
"traffic_port": 123,
"env_variables": {},
"secret_env_variables": {},
"args": ["<string>"],
"image_url": "<string>",
"registry_username": "<string>",
"registry_secret": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
resource_private_name: '<string>',
duration_hours: 123,
gpus_per_container: 123,
hardware_id: 123,
location_ids: [123],
container_config: {},
registry_config: {},
replica_count: 123,
entrypoint: ['<string>'],
traffic_port: 123,
env_variables: {},
secret_env_variables: {},
args: ['<string>'],
image_url: '<string>',
registry_username: '<string>',
registry_secret: '<string>'
})
};
fetch('https://api.io.solutions/enterprise/v1/io-cloud/caas/deploy', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.io.solutions/enterprise/v1/io-cloud/caas/deploy",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'resource_private_name' => '<string>',
'duration_hours' => 123,
'gpus_per_container' => 123,
'hardware_id' => 123,
'location_ids' => [
123
],
'container_config' => [
],
'registry_config' => [
],
'replica_count' => 123,
'entrypoint' => [
'<string>'
],
'traffic_port' => 123,
'env_variables' => [
],
'secret_env_variables' => [
],
'args' => [
'<string>'
],
'image_url' => '<string>',
'registry_username' => '<string>',
'registry_secret' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.io.solutions/enterprise/v1/io-cloud/caas/deploy"
payload := strings.NewReader("{\n \"resource_private_name\": \"<string>\",\n \"duration_hours\": 123,\n \"gpus_per_container\": 123,\n \"hardware_id\": 123,\n \"location_ids\": [\n 123\n ],\n \"container_config\": {},\n \"registry_config\": {},\n \"replica_count\": 123,\n \"entrypoint\": [\n \"<string>\"\n ],\n \"traffic_port\": 123,\n \"env_variables\": {},\n \"secret_env_variables\": {},\n \"args\": [\n \"<string>\"\n ],\n \"image_url\": \"<string>\",\n \"registry_username\": \"<string>\",\n \"registry_secret\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.io.solutions/enterprise/v1/io-cloud/caas/deploy")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"resource_private_name\": \"<string>\",\n \"duration_hours\": 123,\n \"gpus_per_container\": 123,\n \"hardware_id\": 123,\n \"location_ids\": [\n 123\n ],\n \"container_config\": {},\n \"registry_config\": {},\n \"replica_count\": 123,\n \"entrypoint\": [\n \"<string>\"\n ],\n \"traffic_port\": 123,\n \"env_variables\": {},\n \"secret_env_variables\": {},\n \"args\": [\n \"<string>\"\n ],\n \"image_url\": \"<string>\",\n \"registry_username\": \"<string>\",\n \"registry_secret\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.io.solutions/enterprise/v1/io-cloud/caas/deploy")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"resource_private_name\": \"<string>\",\n \"duration_hours\": 123,\n \"gpus_per_container\": 123,\n \"hardware_id\": 123,\n \"location_ids\": [\n 123\n ],\n \"container_config\": {},\n \"registry_config\": {},\n \"replica_count\": 123,\n \"entrypoint\": [\n \"<string>\"\n ],\n \"traffic_port\": 123,\n \"env_variables\": {},\n \"secret_env_variables\": {},\n \"args\": [\n \"<string>\"\n ],\n \"image_url\": \"<string>\",\n \"registry_username\": \"<string>\",\n \"registry_secret\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"status": "string",
"deployment_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
}"string"{
"detail": [
{
"loc": [
"string",
0
],
"msg": "string",
"type": "string"
}
]
}Authorizations
The access token received from the authorization server in the OAuth 2.0 flow.
Body
Must be a unique string identifying the deployment.
Duration of the deployment in hours.
Must be set to 8.
Use values from the Inventory Browsing API.
Array of region/location IDs. Use values from the Inventory Browsing API.
Configuration of the container to deploy. See below.
Docker image registry credentials and image details. See below.
Number of container replicas to run.
Array of strings in exec form that overrides the container’s default entrypoint. Example: ["python3", "-m", "my.app"].
Port on which the container exposes its HTTP service. Used for internal health checks.
Key-value pairs of environment variables.
Same as env_variables, but securely stored. Only visible in actual deployments.
Array of strings to append to the entrypoint. Must contain at least one item.
Full Docker image path (e.g., ghcr.io/org/image:tag).
Username for container registry.
Access token or password for container registry.