curl --request PATCH \
--url https://api.openworklabs.com/v1/audit/settings \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"captureOn": true,
"expectedRevision": 0
}
'import requests
url = "https://api.openworklabs.com/v1/audit/settings"
payload = {
"captureOn": True,
"expectedRevision": 0
}
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({captureOn: true, expectedRevision: 0})
};
fetch('https://api.openworklabs.com/v1/audit/settings', 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.openworklabs.com/v1/audit/settings",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'captureOn' => true,
'expectedRevision' => 0
]),
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.openworklabs.com/v1/audit/settings"
payload := strings.NewReader("{\n \"captureOn\": true,\n \"expectedRevision\": 0\n}")
req, _ := http.NewRequest("PATCH", 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.patch("https://api.openworklabs.com/v1/audit/settings")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"captureOn\": true,\n \"expectedRevision\": 0\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.openworklabs.com/v1/audit/settings")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"captureOn\": true,\n \"expectedRevision\": 0\n}"
response = http.request(request)
puts response.read_body{
"entitlement": {
"enabled": true,
"source": "enterprise_plan"
},
"captureOn": true,
"captureAvailable": true,
"policy": {
"organizationId": "<string>",
"revision": 123,
"source": "cloud",
"enabled": true,
"categories": [
"change"
],
"allowance": 0,
"excessMode": "delete_oldest",
"effectiveAt": "2023-11-07T05:31:56Z",
"captureStartedAt": "2023-11-07T05:31:56Z",
"attachmentWindowSeconds": 43200
},
"captureEnabled": true,
"retainedOperations": 0,
"eventCount": 0,
"logicalBytes": 0,
"oldestAvailableAt": "2023-11-07T05:31:56Z",
"measuredAt": "2023-11-07T05:31:56Z",
"billing": "disabled",
"cleanup": "dry_run",
"drains": "not_configured"
}{
"error": "invalid_request",
"details": [
{
"message": "<string>",
"path": [
"<string>"
]
}
],
"message": "<string>",
"capability": "<string>"
}{
"error": "unauthorized"
}{
"error": "enterprise_plan_required",
"feature": "<string>",
"message": "<string>"
}{
"error": "forbidden",
"reason": "<string>",
"message": "<string>"
}{
"error": "organization_not_found"
}{
"error": "audit_policy_changed"
}{
"error": "audit_cursor_expired"
}{
"error": "audit_unavailable"
}Set organization audit capture
Fresh organization administrator authorization, the auditLogs feature on for the organization and visibility required. Only captureOn and expectedRevision are accepted. Enabling requires Enterprise or explicit installation entitlement and capture rollout availability. A missing policy is initialized with server-owned temporary defaults; expectedRevision=0 is accepted only by the initializing request. Explicit OFF initializes and disables atomically, never publishing intermediate ON. Disabling remains available after entitlement loss while flagged. Revision conflicts require refresh; matching no-ops do not record duplicate events. Changes and immutable lifecycle evidence commit atomically. Existing capacity configuration and retained history are unchanged.
curl --request PATCH \
--url https://api.openworklabs.com/v1/audit/settings \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"captureOn": true,
"expectedRevision": 0
}
'import requests
url = "https://api.openworklabs.com/v1/audit/settings"
payload = {
"captureOn": True,
"expectedRevision": 0
}
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({captureOn: true, expectedRevision: 0})
};
fetch('https://api.openworklabs.com/v1/audit/settings', 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.openworklabs.com/v1/audit/settings",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'captureOn' => true,
'expectedRevision' => 0
]),
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.openworklabs.com/v1/audit/settings"
payload := strings.NewReader("{\n \"captureOn\": true,\n \"expectedRevision\": 0\n}")
req, _ := http.NewRequest("PATCH", 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.patch("https://api.openworklabs.com/v1/audit/settings")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"captureOn\": true,\n \"expectedRevision\": 0\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.openworklabs.com/v1/audit/settings")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"captureOn\": true,\n \"expectedRevision\": 0\n}"
response = http.request(request)
puts response.read_body{
"entitlement": {
"enabled": true,
"source": "enterprise_plan"
},
"captureOn": true,
"captureAvailable": true,
"policy": {
"organizationId": "<string>",
"revision": 123,
"source": "cloud",
"enabled": true,
"categories": [
"change"
],
"allowance": 0,
"excessMode": "delete_oldest",
"effectiveAt": "2023-11-07T05:31:56Z",
"captureStartedAt": "2023-11-07T05:31:56Z",
"attachmentWindowSeconds": 43200
},
"captureEnabled": true,
"retainedOperations": 0,
"eventCount": 0,
"logicalBytes": 0,
"oldestAvailableAt": "2023-11-07T05:31:56Z",
"measuredAt": "2023-11-07T05:31:56Z",
"billing": "disabled",
"cleanup": "dry_run",
"drains": "not_configured"
}{
"error": "invalid_request",
"details": [
{
"message": "<string>",
"path": [
"<string>"
]
}
],
"message": "<string>",
"capability": "<string>"
}{
"error": "unauthorized"
}{
"error": "enterprise_plan_required",
"feature": "<string>",
"message": "<string>"
}{
"error": "forbidden",
"reason": "<string>",
"message": "<string>"
}{
"error": "organization_not_found"
}{
"error": "audit_policy_changed"
}{
"error": "audit_cursor_expired"
}{
"error": "audit_unavailable"
}Authorizations
Organization API key passed as the x-api-key header. The raw key is the header value; do not prefix it with Bearer.
Body
Response
Latest audit policy, entitlement and retained usage.
Show child attributes
Show child attributes
Show child attributes
Show child attributes
-9007199254740991 <= x <= 9007199254740991-9007199254740991 <= x <= 9007199254740991-9007199254740991 <= x <= 9007199254740991^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$"disabled""dry_run""not_configured"Was this page helpful?