curl --request PUT \
--url https://api.example.com/api/v1/environments/{id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'If-Match: <if-match>' \
--data '
{
"image": {
"docker": "<string>",
"dockerfile": {
"type": "inline",
"value": "<string>"
}
},
"resources": {
"cpu": 123,
"memory": "<string>",
"disk": "<string>"
},
"network": {
"allow": [
"<string>"
]
},
"lifecycle": {
"preserve": true,
"stop_on_terminal": true,
"auto_stop": "<string>"
},
"labels": {},
"env": {},
"cwd": "/srv/fabro/workspaces/team-a"
}
'import requests
url = "https://api.example.com/api/v1/environments/{id}"
payload = {
"image": {
"docker": "<string>",
"dockerfile": {
"type": "inline",
"value": "<string>"
}
},
"resources": {
"cpu": 123,
"memory": "<string>",
"disk": "<string>"
},
"network": { "allow": ["<string>"] },
"lifecycle": {
"preserve": True,
"stop_on_terminal": True,
"auto_stop": "<string>"
},
"labels": {},
"env": {},
"cwd": "/srv/fabro/workspaces/team-a"
}
headers = {
"If-Match": "<if-match>",
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {
'If-Match': '<if-match>',
Authorization: 'Bearer <token>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
image: {docker: '<string>', dockerfile: {type: 'inline', value: '<string>'}},
resources: {cpu: 123, memory: '<string>', disk: '<string>'},
network: {allow: ['<string>']},
lifecycle: {preserve: true, stop_on_terminal: true, auto_stop: '<string>'},
labels: {},
env: {},
cwd: '/srv/fabro/workspaces/team-a'
})
};
fetch('https://api.example.com/api/v1/environments/{id}', 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.example.com/api/v1/environments/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'image' => [
'docker' => '<string>',
'dockerfile' => [
'type' => 'inline',
'value' => '<string>'
]
],
'resources' => [
'cpu' => 123,
'memory' => '<string>',
'disk' => '<string>'
],
'network' => [
'allow' => [
'<string>'
]
],
'lifecycle' => [
'preserve' => true,
'stop_on_terminal' => true,
'auto_stop' => '<string>'
],
'labels' => [
],
'env' => [
],
'cwd' => '/srv/fabro/workspaces/team-a'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json",
"If-Match: <if-match>"
],
]);
$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.example.com/api/v1/environments/{id}"
payload := strings.NewReader("{\n \"image\": {\n \"docker\": \"<string>\",\n \"dockerfile\": {\n \"type\": \"inline\",\n \"value\": \"<string>\"\n }\n },\n \"resources\": {\n \"cpu\": 123,\n \"memory\": \"<string>\",\n \"disk\": \"<string>\"\n },\n \"network\": {\n \"allow\": [\n \"<string>\"\n ]\n },\n \"lifecycle\": {\n \"preserve\": true,\n \"stop_on_terminal\": true,\n \"auto_stop\": \"<string>\"\n },\n \"labels\": {},\n \"env\": {},\n \"cwd\": \"/srv/fabro/workspaces/team-a\"\n}")
req, _ := http.NewRequest("PUT", url, payload)
req.Header.Add("If-Match", "<if-match>")
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.put("https://api.example.com/api/v1/environments/{id}")
.header("If-Match", "<if-match>")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"image\": {\n \"docker\": \"<string>\",\n \"dockerfile\": {\n \"type\": \"inline\",\n \"value\": \"<string>\"\n }\n },\n \"resources\": {\n \"cpu\": 123,\n \"memory\": \"<string>\",\n \"disk\": \"<string>\"\n },\n \"network\": {\n \"allow\": [\n \"<string>\"\n ]\n },\n \"lifecycle\": {\n \"preserve\": true,\n \"stop_on_terminal\": true,\n \"auto_stop\": \"<string>\"\n },\n \"labels\": {},\n \"env\": {},\n \"cwd\": \"/srv/fabro/workspaces/team-a\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/api/v1/environments/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["If-Match"] = '<if-match>'
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"image\": {\n \"docker\": \"<string>\",\n \"dockerfile\": {\n \"type\": \"inline\",\n \"value\": \"<string>\"\n }\n },\n \"resources\": {\n \"cpu\": 123,\n \"memory\": \"<string>\",\n \"disk\": \"<string>\"\n },\n \"network\": {\n \"allow\": [\n \"<string>\"\n ]\n },\n \"lifecycle\": {\n \"preserve\": true,\n \"stop_on_terminal\": true,\n \"auto_stop\": \"<string>\"\n },\n \"labels\": {},\n \"env\": {},\n \"cwd\": \"/srv/fabro/workspaces/team-a\"\n}"
response = http.request(request)
puts response.read_body{
"id": "docker",
"revision": "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef",
"image": {
"docker": "<string>",
"dockerfile": {
"type": "inline",
"value": "<string>"
}
},
"resources": {
"cpu": 123,
"memory": "<string>",
"disk": "<string>"
},
"network": {
"allow": [
"<string>"
]
},
"lifecycle": {
"preserve": true,
"stop_on_terminal": true,
"auto_stop": "<string>"
},
"labels": {},
"env": {},
"cwd": "/srv/fabro/workspaces/team-a"
}{
"errors": [
{
"status": "404",
"title": "Not Found",
"detail": "Run not found.",
"code": "access_token_expired",
"request_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
],
"request_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"leftover_env_keys": [
"<string>"
],
"removed_env_keys": [
"<string>"
]
}{
"errors": [
{
"status": "404",
"title": "Not Found",
"detail": "Run not found.",
"code": "access_token_expired",
"request_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
],
"request_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"leftover_env_keys": [
"<string>"
],
"removed_env_keys": [
"<string>"
]
}{
"errors": [
{
"status": "404",
"title": "Not Found",
"detail": "Run not found.",
"code": "access_token_expired",
"request_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
],
"request_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"leftover_env_keys": [
"<string>"
],
"removed_env_keys": [
"<string>"
]
}{
"errors": [
{
"status": "404",
"title": "Not Found",
"detail": "Run not found.",
"code": "access_token_expired",
"request_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
],
"request_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"leftover_env_keys": [
"<string>"
],
"removed_env_keys": [
"<string>"
]
}{
"errors": [
{
"status": "404",
"title": "Not Found",
"detail": "Run not found.",
"code": "access_token_expired",
"request_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
],
"request_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"leftover_env_keys": [
"<string>"
],
"removed_env_keys": [
"<string>"
]
}{
"errors": [
{
"status": "404",
"title": "Not Found",
"detail": "Run not found.",
"code": "access_token_expired",
"request_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
],
"request_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"leftover_env_keys": [
"<string>"
],
"removed_env_keys": [
"<string>"
]
}Replace environment
Replaces an environment definition when If-Match matches the current
environment revision. The path id is authoritative; the request body
omits id.
curl --request PUT \
--url https://api.example.com/api/v1/environments/{id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'If-Match: <if-match>' \
--data '
{
"image": {
"docker": "<string>",
"dockerfile": {
"type": "inline",
"value": "<string>"
}
},
"resources": {
"cpu": 123,
"memory": "<string>",
"disk": "<string>"
},
"network": {
"allow": [
"<string>"
]
},
"lifecycle": {
"preserve": true,
"stop_on_terminal": true,
"auto_stop": "<string>"
},
"labels": {},
"env": {},
"cwd": "/srv/fabro/workspaces/team-a"
}
'import requests
url = "https://api.example.com/api/v1/environments/{id}"
payload = {
"image": {
"docker": "<string>",
"dockerfile": {
"type": "inline",
"value": "<string>"
}
},
"resources": {
"cpu": 123,
"memory": "<string>",
"disk": "<string>"
},
"network": { "allow": ["<string>"] },
"lifecycle": {
"preserve": True,
"stop_on_terminal": True,
"auto_stop": "<string>"
},
"labels": {},
"env": {},
"cwd": "/srv/fabro/workspaces/team-a"
}
headers = {
"If-Match": "<if-match>",
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {
'If-Match': '<if-match>',
Authorization: 'Bearer <token>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
image: {docker: '<string>', dockerfile: {type: 'inline', value: '<string>'}},
resources: {cpu: 123, memory: '<string>', disk: '<string>'},
network: {allow: ['<string>']},
lifecycle: {preserve: true, stop_on_terminal: true, auto_stop: '<string>'},
labels: {},
env: {},
cwd: '/srv/fabro/workspaces/team-a'
})
};
fetch('https://api.example.com/api/v1/environments/{id}', 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.example.com/api/v1/environments/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'image' => [
'docker' => '<string>',
'dockerfile' => [
'type' => 'inline',
'value' => '<string>'
]
],
'resources' => [
'cpu' => 123,
'memory' => '<string>',
'disk' => '<string>'
],
'network' => [
'allow' => [
'<string>'
]
],
'lifecycle' => [
'preserve' => true,
'stop_on_terminal' => true,
'auto_stop' => '<string>'
],
'labels' => [
],
'env' => [
],
'cwd' => '/srv/fabro/workspaces/team-a'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json",
"If-Match: <if-match>"
],
]);
$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.example.com/api/v1/environments/{id}"
payload := strings.NewReader("{\n \"image\": {\n \"docker\": \"<string>\",\n \"dockerfile\": {\n \"type\": \"inline\",\n \"value\": \"<string>\"\n }\n },\n \"resources\": {\n \"cpu\": 123,\n \"memory\": \"<string>\",\n \"disk\": \"<string>\"\n },\n \"network\": {\n \"allow\": [\n \"<string>\"\n ]\n },\n \"lifecycle\": {\n \"preserve\": true,\n \"stop_on_terminal\": true,\n \"auto_stop\": \"<string>\"\n },\n \"labels\": {},\n \"env\": {},\n \"cwd\": \"/srv/fabro/workspaces/team-a\"\n}")
req, _ := http.NewRequest("PUT", url, payload)
req.Header.Add("If-Match", "<if-match>")
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.put("https://api.example.com/api/v1/environments/{id}")
.header("If-Match", "<if-match>")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"image\": {\n \"docker\": \"<string>\",\n \"dockerfile\": {\n \"type\": \"inline\",\n \"value\": \"<string>\"\n }\n },\n \"resources\": {\n \"cpu\": 123,\n \"memory\": \"<string>\",\n \"disk\": \"<string>\"\n },\n \"network\": {\n \"allow\": [\n \"<string>\"\n ]\n },\n \"lifecycle\": {\n \"preserve\": true,\n \"stop_on_terminal\": true,\n \"auto_stop\": \"<string>\"\n },\n \"labels\": {},\n \"env\": {},\n \"cwd\": \"/srv/fabro/workspaces/team-a\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/api/v1/environments/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["If-Match"] = '<if-match>'
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"image\": {\n \"docker\": \"<string>\",\n \"dockerfile\": {\n \"type\": \"inline\",\n \"value\": \"<string>\"\n }\n },\n \"resources\": {\n \"cpu\": 123,\n \"memory\": \"<string>\",\n \"disk\": \"<string>\"\n },\n \"network\": {\n \"allow\": [\n \"<string>\"\n ]\n },\n \"lifecycle\": {\n \"preserve\": true,\n \"stop_on_terminal\": true,\n \"auto_stop\": \"<string>\"\n },\n \"labels\": {},\n \"env\": {},\n \"cwd\": \"/srv/fabro/workspaces/team-a\"\n}"
response = http.request(request)
puts response.read_body{
"id": "docker",
"revision": "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef",
"image": {
"docker": "<string>",
"dockerfile": {
"type": "inline",
"value": "<string>"
}
},
"resources": {
"cpu": 123,
"memory": "<string>",
"disk": "<string>"
},
"network": {
"allow": [
"<string>"
]
},
"lifecycle": {
"preserve": true,
"stop_on_terminal": true,
"auto_stop": "<string>"
},
"labels": {},
"env": {},
"cwd": "/srv/fabro/workspaces/team-a"
}{
"errors": [
{
"status": "404",
"title": "Not Found",
"detail": "Run not found.",
"code": "access_token_expired",
"request_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
],
"request_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"leftover_env_keys": [
"<string>"
],
"removed_env_keys": [
"<string>"
]
}{
"errors": [
{
"status": "404",
"title": "Not Found",
"detail": "Run not found.",
"code": "access_token_expired",
"request_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
],
"request_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"leftover_env_keys": [
"<string>"
],
"removed_env_keys": [
"<string>"
]
}{
"errors": [
{
"status": "404",
"title": "Not Found",
"detail": "Run not found.",
"code": "access_token_expired",
"request_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
],
"request_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"leftover_env_keys": [
"<string>"
],
"removed_env_keys": [
"<string>"
]
}{
"errors": [
{
"status": "404",
"title": "Not Found",
"detail": "Run not found.",
"code": "access_token_expired",
"request_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
],
"request_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"leftover_env_keys": [
"<string>"
],
"removed_env_keys": [
"<string>"
]
}{
"errors": [
{
"status": "404",
"title": "Not Found",
"detail": "Run not found.",
"code": "access_token_expired",
"request_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
],
"request_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"leftover_env_keys": [
"<string>"
],
"removed_env_keys": [
"<string>"
]
}{
"errors": [
{
"status": "404",
"title": "Not Found",
"detail": "Run not found.",
"code": "access_token_expired",
"request_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
],
"request_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"leftover_env_keys": [
"<string>"
],
"removed_env_keys": [
"<string>"
]
}Authorizations
Raw dev token passed as Authorization: Bearer fabro_dev_... when server.auth.methods includes dev-token.
Headers
Current resource revision used for optimistic concurrency, as returned in the ETag response header.
Path Parameters
Unique environment identifier.
^[a-z0-9][a-z0-9-]{0,62}$Body
Request body for replacing a server-managed environment. The path id is authoritative.
Desired environment provider.
local, docker, daytona REST-safe environment image settings. Dockerfile sources are inline-only; local paths are rejected by the REST API.
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Local-provider command working directory for this environment. Docker and Daytona ignore this value.
"/srv/fabro/workspaces/team-a"
Response
Environment replaced
Public server-managed environment definition.
^[a-z0-9][a-z0-9-]{0,62}$"docker"
Stable revision used with If-Match for optimistic concurrency.
^[0-9a-f]{64}$"0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef"
Desired environment provider.
local, docker, daytona REST-safe environment image settings. Dockerfile sources are inline-only; local paths are rejected by the REST API.
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Local-provider command working directory for this environment. Docker and Daytona ignore this value.
"/srv/fabro/workspaces/team-a"