curl --request POST \
--url https://pria.praxislxp.com/api/user/agentspace/{projectId}/deployments/{serviceId}/publish \
--header 'Content-Type: application/json' \
--header 'x-access-token: <api-key>' \
--data '
{
"expectedHead": {
"revisionId": "",
"generation": 0
}
}
'import requests
url = "https://pria.praxislxp.com/api/user/agentspace/{projectId}/deployments/{serviceId}/publish"
payload = { "expectedHead": {
"revisionId": "",
"generation": 0
} }
headers = {
"x-access-token": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-access-token': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({expectedHead: {revisionId: '', generation: 0}})
};
fetch('https://pria.praxislxp.com/api/user/agentspace/{projectId}/deployments/{serviceId}/publish', 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://pria.praxislxp.com/api/user/agentspace/{projectId}/deployments/{serviceId}/publish",
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([
'expectedHead' => [
'revisionId' => '',
'generation' => 0
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-access-token: <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://pria.praxislxp.com/api/user/agentspace/{projectId}/deployments/{serviceId}/publish"
payload := strings.NewReader("{\n \"expectedHead\": {\n \"revisionId\": \"\",\n \"generation\": 0\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-access-token", "<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://pria.praxislxp.com/api/user/agentspace/{projectId}/deployments/{serviceId}/publish")
.header("x-access-token", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"expectedHead\": {\n \"revisionId\": \"\",\n \"generation\": 0\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://pria.praxislxp.com/api/user/agentspace/{projectId}/deployments/{serviceId}/publish")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-access-token"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"expectedHead\": {\n \"revisionId\": \"\",\n \"generation\": 0\n }\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"ok": true,
"code": "<string>",
"action": "publish",
"publishedHead": {
"revisionId": "<string>",
"generation": 123,
"publishedAt": "2023-11-07T05:31:56Z"
},
"current": {
"revisionId": "<string>",
"generation": 123,
"publishedAt": "2023-11-07T05:31:56Z"
},
"url": "<string>"
}{
"success": false,
"message": "not-found"
}Publish the revision served by a READY release service (expected-head CAS)
Promotes the service’s revision to the project’s published head only when the artifact is sealed, the service is ready, and the current head still equals expectedHead. Requires publish rights (owner or listed editor). A lost race answers 200 with ok:false, code:HEAD_CONFLICT and the current head.
curl --request POST \
--url https://pria.praxislxp.com/api/user/agentspace/{projectId}/deployments/{serviceId}/publish \
--header 'Content-Type: application/json' \
--header 'x-access-token: <api-key>' \
--data '
{
"expectedHead": {
"revisionId": "",
"generation": 0
}
}
'import requests
url = "https://pria.praxislxp.com/api/user/agentspace/{projectId}/deployments/{serviceId}/publish"
payload = { "expectedHead": {
"revisionId": "",
"generation": 0
} }
headers = {
"x-access-token": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-access-token': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({expectedHead: {revisionId: '', generation: 0}})
};
fetch('https://pria.praxislxp.com/api/user/agentspace/{projectId}/deployments/{serviceId}/publish', 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://pria.praxislxp.com/api/user/agentspace/{projectId}/deployments/{serviceId}/publish",
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([
'expectedHead' => [
'revisionId' => '',
'generation' => 0
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-access-token: <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://pria.praxislxp.com/api/user/agentspace/{projectId}/deployments/{serviceId}/publish"
payload := strings.NewReader("{\n \"expectedHead\": {\n \"revisionId\": \"\",\n \"generation\": 0\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-access-token", "<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://pria.praxislxp.com/api/user/agentspace/{projectId}/deployments/{serviceId}/publish")
.header("x-access-token", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"expectedHead\": {\n \"revisionId\": \"\",\n \"generation\": 0\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://pria.praxislxp.com/api/user/agentspace/{projectId}/deployments/{serviceId}/publish")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-access-token"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"expectedHead\": {\n \"revisionId\": \"\",\n \"generation\": 0\n }\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"ok": true,
"code": "<string>",
"action": "publish",
"publishedHead": {
"revisionId": "<string>",
"generation": 123,
"publishedAt": "2023-11-07T05:31:56Z"
},
"current": {
"revisionId": "<string>",
"generation": 123,
"publishedAt": "2023-11-07T05:31:56Z"
},
"url": "<string>"
}{
"success": false,
"message": "not-found"
}Authorizations
JWT token passed in x-access-token header
Body
The published head the caller observed. The CAS wins only if it still matches (revisionId + generation).
Show child attributes
Show child attributes
Response
Outcome
Typed operational outcome. ok:false carries a closed code (HEAD_CONFLICT with current, ARTIFACT_NOT_SEALED, SERVICE_NOT_READY, NOT_A_PRIOR_HEAD, SERVING_PUBLISHED_HEAD, STALE_GENERATION with currentGeneration, GUEST_UNAVAILABLE, GUEST_STOP_FAILED); a lost CAS is reported, never retried blindly.
Was this page helpful?