Get revision detail
curl --request GET \
--url https://cloud-api.phala.com/api/v1/apps/{app_id}/revisions/{revision_id}import requests
url = "https://cloud-api.phala.com/api/v1/apps/{app_id}/revisions/{revision_id}"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://cloud-api.phala.com/api/v1/apps/{app_id}/revisions/{revision_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://cloud-api.phala.com/api/v1/apps/{app_id}/revisions/{revision_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://cloud-api.phala.com/api/v1/apps/{app_id}/revisions/{revision_id}"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://cloud-api.phala.com/api/v1/apps/{app_id}/revisions/{revision_id}")
.asString();require 'uri'
require 'net/http'
url = URI("https://cloud-api.phala.com/api/v1/apps/{app_id}/revisions/{revision_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body{
"revision_id": "<string>",
"app_id": "<string>",
"vm_uuid": "<string>",
"compose_hash": "<string>",
"compose_file": {},
"encrypted_env": "<string>",
"user_config": "<string>",
"created_at": "<string>",
"trace_id": "<string>",
"operation_type": "<string>",
"triggered_by": {
"object_type": "user",
"id": "usr_0123abcd",
"username": "<string>",
"avatar_url": "<string>"
},
"cvm": {
"vm_uuid": "<string>",
"object_type": "cvm",
"app_id": "<string>",
"name": "<string>"
},
"workspace": {
"id": "wks_0123abcd",
"name": "<string>",
"object_type": "workspace",
"slug": "<string>",
"avatar_url": "<string>"
}
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}Apps
Get revision detail
Returns full revision data including compose file, encrypted env, and user config.
GET
/
api
/
v1
/
apps
/
{app_id}
/
revisions
/
{revision_id}
Get revision detail
curl --request GET \
--url https://cloud-api.phala.com/api/v1/apps/{app_id}/revisions/{revision_id}import requests
url = "https://cloud-api.phala.com/api/v1/apps/{app_id}/revisions/{revision_id}"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://cloud-api.phala.com/api/v1/apps/{app_id}/revisions/{revision_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://cloud-api.phala.com/api/v1/apps/{app_id}/revisions/{revision_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://cloud-api.phala.com/api/v1/apps/{app_id}/revisions/{revision_id}"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://cloud-api.phala.com/api/v1/apps/{app_id}/revisions/{revision_id}")
.asString();require 'uri'
require 'net/http'
url = URI("https://cloud-api.phala.com/api/v1/apps/{app_id}/revisions/{revision_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body{
"revision_id": "<string>",
"app_id": "<string>",
"vm_uuid": "<string>",
"compose_hash": "<string>",
"compose_file": {},
"encrypted_env": "<string>",
"user_config": "<string>",
"created_at": "<string>",
"trace_id": "<string>",
"operation_type": "<string>",
"triggered_by": {
"object_type": "user",
"id": "usr_0123abcd",
"username": "<string>",
"avatar_url": "<string>"
},
"cvm": {
"vm_uuid": "<string>",
"object_type": "cvm",
"app_id": "<string>",
"name": "<string>"
},
"workspace": {
"id": "wks_0123abcd",
"name": "<string>",
"object_type": "workspace",
"slug": "<string>",
"avatar_url": "<string>"
}
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}Query Parameters
Return compose_file as string instead of dict
Response
Revision detail with compose file
Full revision detail with configuration data.
Revision record identifier (hashid of snowflake_id)
Hex app identifier
CVM UUID
SHA-256 hash of compose file
Docker compose content (dict or raw string)
Hex-encoded encrypted environment variables
JSON user configuration string
Revision timestamp (ISO 8601)
Request trace ID for debugging
Operation: deploy, update, restart, etc.
User who triggered the operation
Show child attributes
Show child attributes
CVM reference
Show child attributes
Show child attributes
Workspace reference
Show child attributes
Show child attributes
Was this page helpful?

