curl --request POST \
--url https://api.example.com/api/policies/v2/deployments/{deploymentId}/remediation-policies:dryRun \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"bundle": {
"deployment_slug": "my-org",
"policies": [
{
"name": "Block high-confidence criticals",
"filters": {
"mode": "all",
"conditions": [
{
"type": "severity",
"values": [
"critical",
"high"
],
"mode": "any"
}
]
},
"actions": [
{
"type": "block",
"config": {}
}
],
"slug": "block-high-confidence-criticals",
"description": "<string>",
"active": true
}
]
}
}
'import requests
url = "https://api.example.com/api/policies/v2/deployments/{deploymentId}/remediation-policies:dryRun"
payload = { "bundle": {
"deployment_slug": "my-org",
"policies": [
{
"name": "Block high-confidence criticals",
"filters": {
"mode": "all",
"conditions": [
{
"type": "severity",
"values": ["critical", "high"],
"mode": "any"
}
]
},
"actions": [
{
"type": "block",
"config": {}
}
],
"slug": "block-high-confidence-criticals",
"description": "<string>",
"active": True
}
]
} }
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({
bundle: {
deployment_slug: 'my-org',
policies: [
{
name: 'Block high-confidence criticals',
filters: {
mode: 'all',
conditions: [{type: 'severity', values: ['critical', 'high'], mode: 'any'}]
},
actions: [{type: 'block', config: {}}],
slug: 'block-high-confidence-criticals',
description: '<string>',
active: true
}
]
}
})
};
fetch('https://api.example.com/api/policies/v2/deployments/{deploymentId}/remediation-policies:dryRun', 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/policies/v2/deployments/{deploymentId}/remediation-policies:dryRun",
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([
'bundle' => [
'deployment_slug' => 'my-org',
'policies' => [
[
'name' => 'Block high-confidence criticals',
'filters' => [
'mode' => 'all',
'conditions' => [
[
'type' => 'severity',
'values' => [
'critical',
'high'
],
'mode' => 'any'
]
]
],
'actions' => [
[
'type' => 'block',
'config' => [
]
]
],
'slug' => 'block-high-confidence-criticals',
'description' => '<string>',
'active' => true
]
]
]
]),
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/api/policies/v2/deployments/{deploymentId}/remediation-policies:dryRun"
payload := strings.NewReader("{\n \"bundle\": {\n \"deployment_slug\": \"my-org\",\n \"policies\": [\n {\n \"name\": \"Block high-confidence criticals\",\n \"filters\": {\n \"mode\": \"all\",\n \"conditions\": [\n {\n \"type\": \"severity\",\n \"values\": [\n \"critical\",\n \"high\"\n ],\n \"mode\": \"any\"\n }\n ]\n },\n \"actions\": [\n {\n \"type\": \"block\",\n \"config\": {}\n }\n ],\n \"slug\": \"block-high-confidence-criticals\",\n \"description\": \"<string>\",\n \"active\": true\n }\n ]\n }\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/api/policies/v2/deployments/{deploymentId}/remediation-policies:dryRun")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"bundle\": {\n \"deployment_slug\": \"my-org\",\n \"policies\": [\n {\n \"name\": \"Block high-confidence criticals\",\n \"filters\": {\n \"mode\": \"all\",\n \"conditions\": [\n {\n \"type\": \"severity\",\n \"values\": [\n \"critical\",\n \"high\"\n ],\n \"mode\": \"any\"\n }\n ]\n },\n \"actions\": [\n {\n \"type\": \"block\",\n \"config\": {}\n }\n ],\n \"slug\": \"block-high-confidence-criticals\",\n \"description\": \"<string>\",\n \"active\": true\n }\n ]\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/api/policies/v2/deployments/{deploymentId}/remediation-policies:dryRun")
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 \"bundle\": {\n \"deployment_slug\": \"my-org\",\n \"policies\": [\n {\n \"name\": \"Block high-confidence criticals\",\n \"filters\": {\n \"mode\": \"all\",\n \"conditions\": [\n {\n \"type\": \"severity\",\n \"values\": [\n \"critical\",\n \"high\"\n ],\n \"mode\": \"any\"\n }\n ]\n },\n \"actions\": [\n {\n \"type\": \"block\",\n \"config\": {}\n }\n ],\n \"slug\": \"block-high-confidence-criticals\",\n \"description\": \"<string>\",\n \"active\": true\n }\n ]\n }\n}"
response = http.request(request)
puts response.read_body{
"creates": [
{
"kind": "RemediationPolicy",
"key": {
"slug": "block-high-confidence-criticals"
},
"before": {
"name": "Block high-confidence criticals",
"filters": {
"mode": "all",
"conditions": [
{
"type": "severity",
"values": [
"critical",
"high"
],
"mode": "any"
}
]
},
"actions": [
{
"type": "block",
"config": {}
}
],
"slug": "block-high-confidence-criticals",
"description": "<string>",
"active": true
},
"after": {
"name": "Block high-confidence criticals",
"filters": {
"mode": "all",
"conditions": [
{
"type": "severity",
"values": [
"critical",
"high"
],
"mode": "any"
}
]
},
"actions": [
{
"type": "block",
"config": {}
}
],
"slug": "block-high-confidence-criticals",
"description": "<string>",
"active": true
}
}
],
"updates": [
{
"kind": "RemediationPolicy",
"key": {
"slug": "block-high-confidence-criticals"
},
"before": {
"name": "Block high-confidence criticals",
"filters": {
"mode": "all",
"conditions": [
{
"type": "severity",
"values": [
"critical",
"high"
],
"mode": "any"
}
]
},
"actions": [
{
"type": "block",
"config": {}
}
],
"slug": "block-high-confidence-criticals",
"description": "<string>",
"active": true
},
"after": {
"name": "Block high-confidence criticals",
"filters": {
"mode": "all",
"conditions": [
{
"type": "severity",
"values": [
"critical",
"high"
],
"mode": "any"
}
]
},
"actions": [
{
"type": "block",
"config": {}
}
],
"slug": "block-high-confidence-criticals",
"description": "<string>",
"active": true
}
}
],
"deletes": [
{
"kind": "RemediationPolicy",
"key": {
"slug": "block-high-confidence-criticals"
},
"before": {
"name": "Block high-confidence criticals",
"filters": {
"mode": "all",
"conditions": [
{
"type": "severity",
"values": [
"critical",
"high"
],
"mode": "any"
}
]
},
"actions": [
{
"type": "block",
"config": {}
}
],
"slug": "block-high-confidence-criticals",
"description": "<string>",
"active": true
},
"after": {
"name": "Block high-confidence criticals",
"filters": {
"mode": "all",
"conditions": [
{
"type": "severity",
"values": [
"critical",
"high"
],
"mode": "any"
}
]
},
"actions": [
{
"type": "block",
"config": {}
}
],
"slug": "block-high-confidence-criticals",
"description": "<string>",
"active": true
}
}
],
"state_version": "d4c3b2a1",
"validation_errors": [
{
"code": "UNSUPPORTED_ACTION_TYPE",
"message": "<string>",
"policy_slug": "<string>",
"context": {}
}
]
}Preview a remediation policies apply
Validates a candidate remediation policies bundle and returns the diff a strict apply would produce, without changing anything. The response includes the state_version the diff was computed against; send that exact value as If-Match on the follow-up PUT to guarantee you apply the diff you previewed.
curl --request POST \
--url https://api.example.com/api/policies/v2/deployments/{deploymentId}/remediation-policies:dryRun \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"bundle": {
"deployment_slug": "my-org",
"policies": [
{
"name": "Block high-confidence criticals",
"filters": {
"mode": "all",
"conditions": [
{
"type": "severity",
"values": [
"critical",
"high"
],
"mode": "any"
}
]
},
"actions": [
{
"type": "block",
"config": {}
}
],
"slug": "block-high-confidence-criticals",
"description": "<string>",
"active": true
}
]
}
}
'import requests
url = "https://api.example.com/api/policies/v2/deployments/{deploymentId}/remediation-policies:dryRun"
payload = { "bundle": {
"deployment_slug": "my-org",
"policies": [
{
"name": "Block high-confidence criticals",
"filters": {
"mode": "all",
"conditions": [
{
"type": "severity",
"values": ["critical", "high"],
"mode": "any"
}
]
},
"actions": [
{
"type": "block",
"config": {}
}
],
"slug": "block-high-confidence-criticals",
"description": "<string>",
"active": True
}
]
} }
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({
bundle: {
deployment_slug: 'my-org',
policies: [
{
name: 'Block high-confidence criticals',
filters: {
mode: 'all',
conditions: [{type: 'severity', values: ['critical', 'high'], mode: 'any'}]
},
actions: [{type: 'block', config: {}}],
slug: 'block-high-confidence-criticals',
description: '<string>',
active: true
}
]
}
})
};
fetch('https://api.example.com/api/policies/v2/deployments/{deploymentId}/remediation-policies:dryRun', 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/policies/v2/deployments/{deploymentId}/remediation-policies:dryRun",
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([
'bundle' => [
'deployment_slug' => 'my-org',
'policies' => [
[
'name' => 'Block high-confidence criticals',
'filters' => [
'mode' => 'all',
'conditions' => [
[
'type' => 'severity',
'values' => [
'critical',
'high'
],
'mode' => 'any'
]
]
],
'actions' => [
[
'type' => 'block',
'config' => [
]
]
],
'slug' => 'block-high-confidence-criticals',
'description' => '<string>',
'active' => true
]
]
]
]),
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/api/policies/v2/deployments/{deploymentId}/remediation-policies:dryRun"
payload := strings.NewReader("{\n \"bundle\": {\n \"deployment_slug\": \"my-org\",\n \"policies\": [\n {\n \"name\": \"Block high-confidence criticals\",\n \"filters\": {\n \"mode\": \"all\",\n \"conditions\": [\n {\n \"type\": \"severity\",\n \"values\": [\n \"critical\",\n \"high\"\n ],\n \"mode\": \"any\"\n }\n ]\n },\n \"actions\": [\n {\n \"type\": \"block\",\n \"config\": {}\n }\n ],\n \"slug\": \"block-high-confidence-criticals\",\n \"description\": \"<string>\",\n \"active\": true\n }\n ]\n }\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/api/policies/v2/deployments/{deploymentId}/remediation-policies:dryRun")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"bundle\": {\n \"deployment_slug\": \"my-org\",\n \"policies\": [\n {\n \"name\": \"Block high-confidence criticals\",\n \"filters\": {\n \"mode\": \"all\",\n \"conditions\": [\n {\n \"type\": \"severity\",\n \"values\": [\n \"critical\",\n \"high\"\n ],\n \"mode\": \"any\"\n }\n ]\n },\n \"actions\": [\n {\n \"type\": \"block\",\n \"config\": {}\n }\n ],\n \"slug\": \"block-high-confidence-criticals\",\n \"description\": \"<string>\",\n \"active\": true\n }\n ]\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/api/policies/v2/deployments/{deploymentId}/remediation-policies:dryRun")
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 \"bundle\": {\n \"deployment_slug\": \"my-org\",\n \"policies\": [\n {\n \"name\": \"Block high-confidence criticals\",\n \"filters\": {\n \"mode\": \"all\",\n \"conditions\": [\n {\n \"type\": \"severity\",\n \"values\": [\n \"critical\",\n \"high\"\n ],\n \"mode\": \"any\"\n }\n ]\n },\n \"actions\": [\n {\n \"type\": \"block\",\n \"config\": {}\n }\n ],\n \"slug\": \"block-high-confidence-criticals\",\n \"description\": \"<string>\",\n \"active\": true\n }\n ]\n }\n}"
response = http.request(request)
puts response.read_body{
"creates": [
{
"kind": "RemediationPolicy",
"key": {
"slug": "block-high-confidence-criticals"
},
"before": {
"name": "Block high-confidence criticals",
"filters": {
"mode": "all",
"conditions": [
{
"type": "severity",
"values": [
"critical",
"high"
],
"mode": "any"
}
]
},
"actions": [
{
"type": "block",
"config": {}
}
],
"slug": "block-high-confidence-criticals",
"description": "<string>",
"active": true
},
"after": {
"name": "Block high-confidence criticals",
"filters": {
"mode": "all",
"conditions": [
{
"type": "severity",
"values": [
"critical",
"high"
],
"mode": "any"
}
]
},
"actions": [
{
"type": "block",
"config": {}
}
],
"slug": "block-high-confidence-criticals",
"description": "<string>",
"active": true
}
}
],
"updates": [
{
"kind": "RemediationPolicy",
"key": {
"slug": "block-high-confidence-criticals"
},
"before": {
"name": "Block high-confidence criticals",
"filters": {
"mode": "all",
"conditions": [
{
"type": "severity",
"values": [
"critical",
"high"
],
"mode": "any"
}
]
},
"actions": [
{
"type": "block",
"config": {}
}
],
"slug": "block-high-confidence-criticals",
"description": "<string>",
"active": true
},
"after": {
"name": "Block high-confidence criticals",
"filters": {
"mode": "all",
"conditions": [
{
"type": "severity",
"values": [
"critical",
"high"
],
"mode": "any"
}
]
},
"actions": [
{
"type": "block",
"config": {}
}
],
"slug": "block-high-confidence-criticals",
"description": "<string>",
"active": true
}
}
],
"deletes": [
{
"kind": "RemediationPolicy",
"key": {
"slug": "block-high-confidence-criticals"
},
"before": {
"name": "Block high-confidence criticals",
"filters": {
"mode": "all",
"conditions": [
{
"type": "severity",
"values": [
"critical",
"high"
],
"mode": "any"
}
]
},
"actions": [
{
"type": "block",
"config": {}
}
],
"slug": "block-high-confidence-criticals",
"description": "<string>",
"active": true
},
"after": {
"name": "Block high-confidence criticals",
"filters": {
"mode": "all",
"conditions": [
{
"type": "severity",
"values": [
"critical",
"high"
],
"mode": "any"
}
]
},
"actions": [
{
"type": "block",
"config": {}
}
],
"slug": "block-high-confidence-criticals",
"description": "<string>",
"active": true
}
}
],
"state_version": "d4c3b2a1",
"validation_errors": [
{
"code": "UNSUPPORTED_ACTION_TYPE",
"message": "<string>",
"policy_slug": "<string>",
"context": {}
}
]
}Authorizations
Get access to data with your API token. Example header:
Authorization: Bearer 2991e2fb4b540fe75b8f90677b0b892b6314e4961cb001fe6eb452eee248a628
The token can be provisioned from the Tokens section in your Settings, and requires explicitly enabling Web API access.
Path Parameters
The unique numerical identifier for the deployment.
1234
Body
The candidate bundle to diff against the current state.
Show child attributes
Show child attributes
Response
OK
Remediation policies that the apply would create.
Show child attributes
Show child attributes
Remediation policies that the apply would update.
Show child attributes
Show child attributes
Remediation policies that the apply would delete.
Show child attributes
Show child attributes
The state_version the diff was computed against. Send this exact value as the If-Match header on the follow-up PUT.
"d4c3b2a1"
Validation problems with the candidate bundle. When non-empty, the diff fields are empty and a strict apply would be rejected.
Show child attributes
Show child attributes
Was this page helpful?