cURL
curl --request POST \
--url https://api.example.com/v1/volumes/{volume_id}:publish \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"volume_id": "<string>",
"push_id": "<string>"
}
'import requests
url = "https://api.example.com/v1/volumes/{volume_id}:publish"
payload = {
"volume_id": "<string>",
"push_id": "<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({volume_id: '<string>', push_id: '<string>'})
};
fetch('https://api.example.com/v1/volumes/{volume_id}: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://api.example.com/v1/volumes/{volume_id}: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([
'volume_id' => '<string>',
'push_id' => '<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.example.com/v1/volumes/{volume_id}:publish"
payload := strings.NewReader("{\n \"volume_id\": \"<string>\",\n \"push_id\": \"<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.example.com/v1/volumes/{volume_id}:publish")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"volume_id\": \"<string>\",\n \"push_id\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/v1/volumes/{volume_id}:publish")
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 \"volume_id\": \"<string>\",\n \"push_id\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"version": {
"volume_id": "<string>",
"version_digest": "<string>",
"parent_version_digest": "<string>",
"size_bytes": "<string>",
"file_count": "<string>",
"created_by": "<string>",
"created_at": "<string>"
}
}{
"code": "<string>",
"message": "<string>",
"details": {
"quota": {
"metric": "<string>",
"limit": 123,
"current": 123,
"reserved": 123,
"retry_after_seconds": 123
}
},
"request_id": "<string>"
}{
"code": "<string>",
"message": "<string>",
"details": {
"quota": {
"metric": "<string>",
"limit": 123,
"current": 123,
"reserved": 123,
"retry_after_seconds": 123
}
},
"request_id": "<string>"
}VolumeService
Post v1volumes :publish
Publish the pushed content as the volume’s next version. The server validates the uploaded manifest, verifies every referenced blob is present with its declared size, and only then mints the version and moves the volume’s current-version pointer — atomically, so a version is never observable half-published. Publishing content identical to the current version returns the current version instead of minting a duplicate, which also makes retrying a publish safe.
POST
/
v1
/
volumes
/
{volume_id}
:publish
cURL
curl --request POST \
--url https://api.example.com/v1/volumes/{volume_id}:publish \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"volume_id": "<string>",
"push_id": "<string>"
}
'import requests
url = "https://api.example.com/v1/volumes/{volume_id}:publish"
payload = {
"volume_id": "<string>",
"push_id": "<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({volume_id: '<string>', push_id: '<string>'})
};
fetch('https://api.example.com/v1/volumes/{volume_id}: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://api.example.com/v1/volumes/{volume_id}: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([
'volume_id' => '<string>',
'push_id' => '<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.example.com/v1/volumes/{volume_id}:publish"
payload := strings.NewReader("{\n \"volume_id\": \"<string>\",\n \"push_id\": \"<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.example.com/v1/volumes/{volume_id}:publish")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"volume_id\": \"<string>\",\n \"push_id\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/v1/volumes/{volume_id}:publish")
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 \"volume_id\": \"<string>\",\n \"push_id\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"version": {
"volume_id": "<string>",
"version_digest": "<string>",
"parent_version_digest": "<string>",
"size_bytes": "<string>",
"file_count": "<string>",
"created_by": "<string>",
"created_at": "<string>"
}
}{
"code": "<string>",
"message": "<string>",
"details": {
"quota": {
"metric": "<string>",
"limit": 123,
"current": 123,
"reserved": 123,
"retry_after_seconds": 123
}
},
"request_id": "<string>"
}{
"code": "<string>",
"message": "<string>",
"details": {
"quota": {
"metric": "<string>",
"limit": 123,
"current": 123,
"reserved": 123,
"retry_after_seconds": 123
}
},
"request_id": "<string>"
}Authorizations
Hiloop API key sent as an HTTP Bearer token.
Path Parameters
The volume to publish the version on.
Body
application/json
Response
OK
The published version, now the volume's current version.
Show child attributes
Show child attributes
⌘I