curl --request PUT \
--url https://api.example.com/api/policies/v2/deployments/{deploymentId}/remediation-policies \
--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"
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.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
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', 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",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
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"
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("PUT", 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.put("https://api.example.com/api/policies/v2/deployments/{deploymentId}/remediation-policies")
.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")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.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{
"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
}
]
},
"state_version": "f8e7d6c5"
}Apply remediation policies
Strictly applies a candidate remediation policies bundle: the submitted list replaces the current state, and policies absent from it are deleted. Requires the current state_version in the If-Match header; responds 428 when the header is missing and 409 with the current state_version when it is stale. The apply is atomic for the bundle. System-managed policies are unaffected; submitting a policy whose slug collides with one responds 409 with code RESERVED_SLUG.
curl --request PUT \
--url https://api.example.com/api/policies/v2/deployments/{deploymentId}/remediation-policies \
--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"
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.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
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', 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",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
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"
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("PUT", 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.put("https://api.example.com/api/policies/v2/deployments/{deploymentId}/remediation-policies")
.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")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.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{
"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
}
]
},
"state_version": "f8e7d6c5"
}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 bundle to apply. It replaces the current state: policies absent from it are deleted.
Show child attributes
Show child attributes
Was this page helpful?