Roll a policy back to a version
curl --request POST \
--url https://api.example.com/api/auth/api-keys/{user_id}/policy/rollback \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '{
"version": 123
}'import requests
url = "https://api.example.com/api/auth/api-keys/{user_id}/policy/rollback"
payload = { "version": 123 }
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({version: 123})
};
fetch('https://api.example.com/api/auth/api-keys/{user_id}/policy/rollback', 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/auth/api-keys/{user_id}/policy/rollback",
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([
'version' => 123
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-api-key: <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://api.example.com/api/auth/api-keys/{user_id}/policy/rollback"
payload := strings.NewReader("{\n \"version\": 123\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-api-key", "<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://api.example.com/api/auth/api-keys/{user_id}/policy/rollback")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"version\": 123\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/api/auth/api-keys/{user_id}/policy/rollback")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"version\": 123\n}"
response = http.request(request)
puts response.read_body{
"data": "<unknown>"
}{
"error": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}access-control
Roll a policy back to a version
Re-point the enforced policy to a prior version. Store-first: the target version body is read from the history, written to the enforced store (the authority) FIRST; on that success the cache-invalidation key is bumped immediately so enforcement follows, then the durable history pointer is advanced. Admin-only: a non-admin caller is denied 403 so it can never roll back another user’s (or its own) enforced policy. 404 if the version is absent or the user has no live key.
POST
/
api
/
auth
/
api-keys
/
{user_id}
/
policy
/
rollback
Roll a policy back to a version
curl --request POST \
--url https://api.example.com/api/auth/api-keys/{user_id}/policy/rollback \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '{
"version": 123
}'import requests
url = "https://api.example.com/api/auth/api-keys/{user_id}/policy/rollback"
payload = { "version": 123 }
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({version: 123})
};
fetch('https://api.example.com/api/auth/api-keys/{user_id}/policy/rollback', 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/auth/api-keys/{user_id}/policy/rollback",
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([
'version' => 123
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-api-key: <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://api.example.com/api/auth/api-keys/{user_id}/policy/rollback"
payload := strings.NewReader("{\n \"version\": 123\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-api-key", "<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://api.example.com/api/auth/api-keys/{user_id}/policy/rollback")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"version\": 123\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/api/auth/api-keys/{user_id}/policy/rollback")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"version\": 123\n}"
response = http.request(request)
puts response.read_body{
"data": "<unknown>"
}{
"error": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}⌘I

