Get Folder Rules and ETag
curl --request GET \
--url https://blob.vertracloud.app/v1/rulesimport requests
url = "https://blob.vertracloud.app/v1/rules"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://blob.vertracloud.app/v1/rules', 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://blob.vertracloud.app/v1/rules",
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://blob.vertracloud.app/v1/rules"
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://blob.vertracloud.app/v1/rules")
.asString();require 'uri'
require 'net/http'
url = URI("https://blob.vertracloud.app/v1/rules")
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{
"response": {
"rules": [
{
"prefix": "tmp/",
"delete_after_days": 30,
"active_from": "2026-10-15T12:00:00.000Z",
"created_at": "2026-10-14T12:00:00.000Z"
}
],
"etag": "v3"
}
}
Folder rules
Get Folder Rules and ETag
Returns the folder rules of the account and the etag to send back when you replace them.
GET
/
v1
/
rules
Get Folder Rules and ETag
curl --request GET \
--url https://blob.vertracloud.app/v1/rulesimport requests
url = "https://blob.vertracloud.app/v1/rules"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://blob.vertracloud.app/v1/rules', 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://blob.vertracloud.app/v1/rules",
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://blob.vertracloud.app/v1/rules"
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://blob.vertracloud.app/v1/rules")
.asString();require 'uri'
require 'net/http'
url = URI("https://blob.vertracloud.app/v1/rules")
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{
"response": {
"rules": [
{
"prefix": "tmp/",
"delete_after_days": 30,
"active_from": "2026-10-15T12:00:00.000Z",
"created_at": "2026-10-14T12:00:00.000Z"
}
],
"etag": "v3"
}
}
Returns every folder rule of the account and the
etag of the list. Read the list before you change it, and send the etag back in If-Match on Replace all rules.
Scope: blob:read.
string
The workspace ID, when the blob belongs to a workspace. The call acts on the blob of the workspace owner and needs the
blob:read workspace permission (blob:manage on routes that change data). Leave it out to act on your own blob.Example request
curl "https://blob.vertracloud.app/v1/rules" \
-H "Authorization: Bearer $VERTRA_API_KEY"
Response
object
The rule list and its etag.
Show properties
Show properties
object[]
Folder rules. The longest matching prefix applies.
string
Folder prefix, always stored with a trailing
/.string
Default visibility of new objects in the folder.
number
Default expiration of each new object, in seconds.
number
Largest accepted file in bytes, 512 B to 10 GB.
string[]
Accepted extensions, 1–50, lowercase, without the dot.
string
Default
cache_control of new objects.number
Objects are deleted this many days after they’re uploaded, 1–3650.
string
When
delete_after_days starts to apply, set by the platform (24 hours after the rule is saved).string
ISO 8601 time the rule was created.
string
Version of the whole rule list. Send it back in
If-Match when you replace the list.{
"response": {
"rules": [
{
"prefix": "tmp/",
"delete_after_days": 30,
"active_from": "2026-10-15T12:00:00.000Z",
"created_at": "2026-10-14T12:00:00.000Z"
}
],
"etag": "v3"
}
}
Error Responses
string
The error code indicating the reason for failure. Possible values:
AUTH_TOKEN_MISSING(401): NoAuthorizationheader was sent.API_KEY_INVALID(401): The API key doesn’t exist, was revoked, or its secret doesn’t match.API_KEY_SCOPE_DENIED(403): The key lacks the scope this route needs (blob:readorblob:write);details.requirednames it.WORKSPACE_PERMISSION_DENIED(403): Only withworkspace_id: you’re not a member, or your role lacks the blob permission.WORKSPACE_NOT_FOUND(404): Only withworkspace_id: no workspace with that ID, or you’re not a member.
{
"code": "AUTH_TOKEN_MISSING"
}
{
"code": "API_KEY_SCOPE_DENIED"
}
{
"code": "WORKSPACE_NOT_FOUND"
}