/templates/{template_id}/update
curl --request POST \
--url https://api.shadeform.ai/v1/templates/{template_id}/update \
--header 'Content-Type: application/json' \
--header 'X-API-KEY: <api-key>' \
--data '
{
"name": "My Template",
"description": "A template for ML workloads",
"public": true,
"auto_delete": {
"date_threshold": "2006-01-02T15:04:05-07:00",
"spend_threshold": "3.14"
},
"alert": {
"date_threshold": "2006-01-02T15:04:05-07:00",
"spend_threshold": "3.14"
},
"volume_mount": {
"auto": true
},
"tags": [
"ml",
"pytorch"
],
"envs": [
{
"name": "HUGGING_FACE_HUB_TOKEN",
"value": "hugging_face_api_token"
}
],
"networking": {
"ufw_rules": [
{
"rule": "allow",
"from_ip": "192.168.1.0/24",
"to_ip": "10.0.0.0/8",
"port": "80",
"proto": "tcp"
}
]
}
}
'import requests
url = "https://api.shadeform.ai/v1/templates/{template_id}/update"
payload = {
"name": "My Template",
"description": "A template for ML workloads",
"public": True,
"auto_delete": {
"date_threshold": "2006-01-02T15:04:05-07:00",
"spend_threshold": "3.14"
},
"alert": {
"date_threshold": "2006-01-02T15:04:05-07:00",
"spend_threshold": "3.14"
},
"volume_mount": { "auto": True },
"tags": ["ml", "pytorch"],
"envs": [
{
"name": "HUGGING_FACE_HUB_TOKEN",
"value": "hugging_face_api_token"
}
],
"networking": { "ufw_rules": [
{
"rule": "allow",
"from_ip": "192.168.1.0/24",
"to_ip": "10.0.0.0/8",
"port": "80",
"proto": "tcp"
}
] }
}
headers = {
"X-API-KEY": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-API-KEY': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: 'My Template',
description: 'A template for ML workloads',
public: true,
auto_delete: {date_threshold: '2006-01-02T15:04:05-07:00', spend_threshold: '3.14'},
alert: {date_threshold: '2006-01-02T15:04:05-07:00', spend_threshold: '3.14'},
volume_mount: {auto: true},
tags: ['ml', 'pytorch'],
envs: [{name: 'HUGGING_FACE_HUB_TOKEN', value: 'hugging_face_api_token'}],
networking: {
ufw_rules: [
{
rule: 'allow',
from_ip: '192.168.1.0/24',
to_ip: '10.0.0.0/8',
port: '80',
proto: 'tcp'
}
]
}
})
};
fetch('https://api.shadeform.ai/v1/templates/{template_id}/update', 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.shadeform.ai/v1/templates/{template_id}/update",
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([
'name' => 'My Template',
'description' => 'A template for ML workloads',
'public' => true,
'auto_delete' => [
'date_threshold' => '2006-01-02T15:04:05-07:00',
'spend_threshold' => '3.14'
],
'alert' => [
'date_threshold' => '2006-01-02T15:04:05-07:00',
'spend_threshold' => '3.14'
],
'volume_mount' => [
'auto' => true
],
'tags' => [
'ml',
'pytorch'
],
'envs' => [
[
'name' => 'HUGGING_FACE_HUB_TOKEN',
'value' => 'hugging_face_api_token'
]
],
'networking' => [
'ufw_rules' => [
[
'rule' => 'allow',
'from_ip' => '192.168.1.0/24',
'to_ip' => '10.0.0.0/8',
'port' => '80',
'proto' => 'tcp'
]
]
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-API-KEY: <api-key>"
],
]);
$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.shadeform.ai/v1/templates/{template_id}/update"
payload := strings.NewReader("{\n \"name\": \"My Template\",\n \"description\": \"A template for ML workloads\",\n \"public\": true,\n \"auto_delete\": {\n \"date_threshold\": \"2006-01-02T15:04:05-07:00\",\n \"spend_threshold\": \"3.14\"\n },\n \"alert\": {\n \"date_threshold\": \"2006-01-02T15:04:05-07:00\",\n \"spend_threshold\": \"3.14\"\n },\n \"volume_mount\": {\n \"auto\": true\n },\n \"tags\": [\n \"ml\",\n \"pytorch\"\n ],\n \"envs\": [\n {\n \"name\": \"HUGGING_FACE_HUB_TOKEN\",\n \"value\": \"hugging_face_api_token\"\n }\n ],\n \"networking\": {\n \"ufw_rules\": [\n {\n \"rule\": \"allow\",\n \"from_ip\": \"192.168.1.0/24\",\n \"to_ip\": \"10.0.0.0/8\",\n \"port\": \"80\",\n \"proto\": \"tcp\"\n }\n ]\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-API-KEY", "<api-key>")
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.shadeform.ai/v1/templates/{template_id}/update")
.header("X-API-KEY", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"My Template\",\n \"description\": \"A template for ML workloads\",\n \"public\": true,\n \"auto_delete\": {\n \"date_threshold\": \"2006-01-02T15:04:05-07:00\",\n \"spend_threshold\": \"3.14\"\n },\n \"alert\": {\n \"date_threshold\": \"2006-01-02T15:04:05-07:00\",\n \"spend_threshold\": \"3.14\"\n },\n \"volume_mount\": {\n \"auto\": true\n },\n \"tags\": [\n \"ml\",\n \"pytorch\"\n ],\n \"envs\": [\n {\n \"name\": \"HUGGING_FACE_HUB_TOKEN\",\n \"value\": \"hugging_face_api_token\"\n }\n ],\n \"networking\": {\n \"ufw_rules\": [\n {\n \"rule\": \"allow\",\n \"from_ip\": \"192.168.1.0/24\",\n \"to_ip\": \"10.0.0.0/8\",\n \"port\": \"80\",\n \"proto\": \"tcp\"\n }\n ]\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.shadeform.ai/v1/templates/{template_id}/update")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-API-KEY"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"My Template\",\n \"description\": \"A template for ML workloads\",\n \"public\": true,\n \"auto_delete\": {\n \"date_threshold\": \"2006-01-02T15:04:05-07:00\",\n \"spend_threshold\": \"3.14\"\n },\n \"alert\": {\n \"date_threshold\": \"2006-01-02T15:04:05-07:00\",\n \"spend_threshold\": \"3.14\"\n },\n \"volume_mount\": {\n \"auto\": true\n },\n \"tags\": [\n \"ml\",\n \"pytorch\"\n ],\n \"envs\": [\n {\n \"name\": \"HUGGING_FACE_HUB_TOKEN\",\n \"value\": \"hugging_face_api_token\"\n }\n ],\n \"networking\": {\n \"ufw_rules\": [\n {\n \"rule\": \"allow\",\n \"from_ip\": \"192.168.1.0/24\",\n \"to_ip\": \"10.0.0.0/8\",\n \"port\": \"80\",\n \"proto\": \"tcp\"\n }\n ]\n }\n}"
response = http.request(request)
puts response.read_bodyTemplates
/templates/{template_id}/update
Update an existing template
POST
/
templates
/
{template_id}
/
update
/templates/{template_id}/update
curl --request POST \
--url https://api.shadeform.ai/v1/templates/{template_id}/update \
--header 'Content-Type: application/json' \
--header 'X-API-KEY: <api-key>' \
--data '
{
"name": "My Template",
"description": "A template for ML workloads",
"public": true,
"auto_delete": {
"date_threshold": "2006-01-02T15:04:05-07:00",
"spend_threshold": "3.14"
},
"alert": {
"date_threshold": "2006-01-02T15:04:05-07:00",
"spend_threshold": "3.14"
},
"volume_mount": {
"auto": true
},
"tags": [
"ml",
"pytorch"
],
"envs": [
{
"name": "HUGGING_FACE_HUB_TOKEN",
"value": "hugging_face_api_token"
}
],
"networking": {
"ufw_rules": [
{
"rule": "allow",
"from_ip": "192.168.1.0/24",
"to_ip": "10.0.0.0/8",
"port": "80",
"proto": "tcp"
}
]
}
}
'import requests
url = "https://api.shadeform.ai/v1/templates/{template_id}/update"
payload = {
"name": "My Template",
"description": "A template for ML workloads",
"public": True,
"auto_delete": {
"date_threshold": "2006-01-02T15:04:05-07:00",
"spend_threshold": "3.14"
},
"alert": {
"date_threshold": "2006-01-02T15:04:05-07:00",
"spend_threshold": "3.14"
},
"volume_mount": { "auto": True },
"tags": ["ml", "pytorch"],
"envs": [
{
"name": "HUGGING_FACE_HUB_TOKEN",
"value": "hugging_face_api_token"
}
],
"networking": { "ufw_rules": [
{
"rule": "allow",
"from_ip": "192.168.1.0/24",
"to_ip": "10.0.0.0/8",
"port": "80",
"proto": "tcp"
}
] }
}
headers = {
"X-API-KEY": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-API-KEY': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: 'My Template',
description: 'A template for ML workloads',
public: true,
auto_delete: {date_threshold: '2006-01-02T15:04:05-07:00', spend_threshold: '3.14'},
alert: {date_threshold: '2006-01-02T15:04:05-07:00', spend_threshold: '3.14'},
volume_mount: {auto: true},
tags: ['ml', 'pytorch'],
envs: [{name: 'HUGGING_FACE_HUB_TOKEN', value: 'hugging_face_api_token'}],
networking: {
ufw_rules: [
{
rule: 'allow',
from_ip: '192.168.1.0/24',
to_ip: '10.0.0.0/8',
port: '80',
proto: 'tcp'
}
]
}
})
};
fetch('https://api.shadeform.ai/v1/templates/{template_id}/update', 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.shadeform.ai/v1/templates/{template_id}/update",
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([
'name' => 'My Template',
'description' => 'A template for ML workloads',
'public' => true,
'auto_delete' => [
'date_threshold' => '2006-01-02T15:04:05-07:00',
'spend_threshold' => '3.14'
],
'alert' => [
'date_threshold' => '2006-01-02T15:04:05-07:00',
'spend_threshold' => '3.14'
],
'volume_mount' => [
'auto' => true
],
'tags' => [
'ml',
'pytorch'
],
'envs' => [
[
'name' => 'HUGGING_FACE_HUB_TOKEN',
'value' => 'hugging_face_api_token'
]
],
'networking' => [
'ufw_rules' => [
[
'rule' => 'allow',
'from_ip' => '192.168.1.0/24',
'to_ip' => '10.0.0.0/8',
'port' => '80',
'proto' => 'tcp'
]
]
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-API-KEY: <api-key>"
],
]);
$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.shadeform.ai/v1/templates/{template_id}/update"
payload := strings.NewReader("{\n \"name\": \"My Template\",\n \"description\": \"A template for ML workloads\",\n \"public\": true,\n \"auto_delete\": {\n \"date_threshold\": \"2006-01-02T15:04:05-07:00\",\n \"spend_threshold\": \"3.14\"\n },\n \"alert\": {\n \"date_threshold\": \"2006-01-02T15:04:05-07:00\",\n \"spend_threshold\": \"3.14\"\n },\n \"volume_mount\": {\n \"auto\": true\n },\n \"tags\": [\n \"ml\",\n \"pytorch\"\n ],\n \"envs\": [\n {\n \"name\": \"HUGGING_FACE_HUB_TOKEN\",\n \"value\": \"hugging_face_api_token\"\n }\n ],\n \"networking\": {\n \"ufw_rules\": [\n {\n \"rule\": \"allow\",\n \"from_ip\": \"192.168.1.0/24\",\n \"to_ip\": \"10.0.0.0/8\",\n \"port\": \"80\",\n \"proto\": \"tcp\"\n }\n ]\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-API-KEY", "<api-key>")
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.shadeform.ai/v1/templates/{template_id}/update")
.header("X-API-KEY", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"My Template\",\n \"description\": \"A template for ML workloads\",\n \"public\": true,\n \"auto_delete\": {\n \"date_threshold\": \"2006-01-02T15:04:05-07:00\",\n \"spend_threshold\": \"3.14\"\n },\n \"alert\": {\n \"date_threshold\": \"2006-01-02T15:04:05-07:00\",\n \"spend_threshold\": \"3.14\"\n },\n \"volume_mount\": {\n \"auto\": true\n },\n \"tags\": [\n \"ml\",\n \"pytorch\"\n ],\n \"envs\": [\n {\n \"name\": \"HUGGING_FACE_HUB_TOKEN\",\n \"value\": \"hugging_face_api_token\"\n }\n ],\n \"networking\": {\n \"ufw_rules\": [\n {\n \"rule\": \"allow\",\n \"from_ip\": \"192.168.1.0/24\",\n \"to_ip\": \"10.0.0.0/8\",\n \"port\": \"80\",\n \"proto\": \"tcp\"\n }\n ]\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.shadeform.ai/v1/templates/{template_id}/update")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-API-KEY"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"My Template\",\n \"description\": \"A template for ML workloads\",\n \"public\": true,\n \"auto_delete\": {\n \"date_threshold\": \"2006-01-02T15:04:05-07:00\",\n \"spend_threshold\": \"3.14\"\n },\n \"alert\": {\n \"date_threshold\": \"2006-01-02T15:04:05-07:00\",\n \"spend_threshold\": \"3.14\"\n },\n \"volume_mount\": {\n \"auto\": true\n },\n \"tags\": [\n \"ml\",\n \"pytorch\"\n ],\n \"envs\": [\n {\n \"name\": \"HUGGING_FACE_HUB_TOKEN\",\n \"value\": \"hugging_face_api_token\"\n }\n ],\n \"networking\": {\n \"ufw_rules\": [\n {\n \"rule\": \"allow\",\n \"from_ip\": \"192.168.1.0/24\",\n \"to_ip\": \"10.0.0.0/8\",\n \"port\": \"80\",\n \"proto\": \"tcp\"\n }\n ]\n }\n}"
response = http.request(request)
puts response.read_bodyAuthorizations
Path Parameters
The template ID
Body
application/json
Name of the template
Example:
"My Template"
Description of the template
Example:
"A template for ML workloads"
Whether the template is publicly available
Example:
true
Defines automatic actions after the instance becomes active.
Show child attributes
Show child attributes
Set a date or spend threshold to automatically delete the instance
Show child attributes
Show child attributes
Alert configuration
Show child attributes
Show child attributes
Volume mount configuration
Show child attributes
Show child attributes
Tags associated with the template
Example:
["ml", "pytorch"]
Environment variables for the template
Show child attributes
Show child attributes
Network and firewall configuration
Show child attributes
Show child attributes
Response
200
Template updated successfully
⌘I