This endpoint allows users to create a new issue exception by providing the necessary details. Users can only create one exception at a time.
-
The request must include the following required fields:
namerulejustification_textjustification_categoryexpiration_tsapprover_email
-
Optional fields:
external_exception_id
If the tenant has approval required enabled, the approver_email field is mandatory and the exception will be created with Pending Status status. Otherwise, the exception is Self Approved automatically.
The requestor_name and requestor_email fields are automatically populated from the API key context.
Required permission: Exception Management Admin View/Edit, Exception Approver Admin View/Edit
Required license: Cortex XSIAM Premium or Cortex XSIAM Enterprise or Cortex XSIAM NG SIEM or Cortex XSIAM Enterprise Plus.
For the complete list of fields you can use as SEARCH_FIELD in the rule parameter, see Issue exception supported fields.
Authorization
String
required
{api_key}
{api_key}
authorization_example
x-xdr-auth-id
String
required
{api_key_id}
{api_key_id}
xXdrAuthId_example
curl -X 'POST'
-H
'Accept: application/json'
-H
'Content-Type: application/json'
-H
'Authorization: authorization_example'
-H
'x-xdr-auth-id: xXdrAuthId_example'
'https://api-yourfqdn/public_api/v1/issue_exceptions/'
-d
''
import http.client
conn = http.client.HTTPSConnection("api-yourfqdn")
payload = "{\"request_data\":{\"name\":\"string\",\"external_exception_id\":\"string\",\"rule\":\"string\",\"justification_text\":\"string\",\"justification_category\":\"COMPENSATING_CONTROL\",\"approval_justification\":\"string\",\"approver_email\":\"string\",\"expiration_ts\":\"2019-08-24T14:15:22Z\"}}"
headers = {
'Authorization': "SOME_STRING_VALUE",
'x-xdr-auth-id': "SOME_STRING_VALUE",
'content-type': "application/json"
}
conn.request("POST", "/public_api/v1/issue_exceptions/", payload, headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))require 'uri'
require 'net/http'
require 'openssl'
url = URI("https://api-yourfqdn/public_api/v1/issue_exceptions/")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'SOME_STRING_VALUE'
request["x-xdr-auth-id"] = 'SOME_STRING_VALUE'
request["content-type"] = 'application/json'
request.body = "{\"request_data\":{\"name\":\"string\",\"external_exception_id\":\"string\",\"rule\":\"string\",\"justification_text\":\"string\",\"justification_category\":\"COMPENSATING_CONTROL\",\"approval_justification\":\"string\",\"approver_email\":\"string\",\"expiration_ts\":\"2019-08-24T14:15:22Z\"}}"
response = http.request(request)
puts response.read_bodyconst data = JSON.stringify({
"request_data": {
"name": "string",
"external_exception_id": "string",
"rule": "string",
"justification_text": "string",
"justification_category": "COMPENSATING_CONTROL",
"approval_justification": "string",
"approver_email": "string",
"expiration_ts": "2019-08-24T14:15:22Z"
}
});
const xhr = new XMLHttpRequest();
xhr.withCredentials = true;
xhr.addEventListener("readystatechange", function () {
if (this.readyState === this.DONE) {
console.log(this.responseText);
}
});
xhr.open("POST", "https://api-yourfqdn/public_api/v1/issue_exceptions/");
xhr.setRequestHeader("Authorization", "SOME_STRING_VALUE");
xhr.setRequestHeader("x-xdr-auth-id", "SOME_STRING_VALUE");
xhr.setRequestHeader("content-type", "application/json");
xhr.send(data);HttpResponse<String> response = Unirest.post("https://api-yourfqdn/public_api/v1/issue_exceptions/")
.header("Authorization", "SOME_STRING_VALUE")
.header("x-xdr-auth-id", "SOME_STRING_VALUE")
.header("content-type", "application/json")
.body("{\"request_data\":{\"name\":\"string\",\"external_exception_id\":\"string\",\"rule\":\"string\",\"justification_text\":\"string\",\"justification_category\":\"COMPENSATING_CONTROL\",\"approval_justification\":\"string\",\"approver_email\":\"string\",\"expiration_ts\":\"2019-08-24T14:15:22Z\"}}")
.asString();import Foundation
let headers = [
"Authorization": "SOME_STRING_VALUE",
"x-xdr-auth-id": "SOME_STRING_VALUE",
"content-type": "application/json"
]
let parameters = ["request_data": [
"name": "string",
"external_exception_id": "string",
"rule": "string",
"justification_text": "string",
"justification_category": "COMPENSATING_CONTROL",
"approval_justification": "string",
"approver_email": "string",
"expiration_ts": "2019-08-24T14:15:22Z"
]] as [String : Any]
let postData = JSONSerialization.data(withJSONObject: parameters, options: [])
let request = NSMutableURLRequest(url: NSURL(string: "https://api-yourfqdn/public_api/v1/issue_exceptions/")! as URL,
cachePolicy: .useProtocolCachePolicy,
timeoutInterval: 10.0)
request.httpMethod = "POST"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data
let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
if (error != nil) {
print(error)
} else {
let httpResponse = response as? HTTPURLResponse
print(httpResponse)
}
})
dataTask.resume()<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api-yourfqdn/public_api/v1/issue_exceptions/",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => "{\"request_data\":{\"name\":\"string\",\"external_exception_id\":\"string\",\"rule\":\"string\",\"justification_text\":\"string\",\"justification_category\":\"COMPENSATING_CONTROL\",\"approval_justification\":\"string\",\"approver_email\":\"string\",\"expiration_ts\":\"2019-08-24T14:15:22Z\"}}",
CURLOPT_HTTPHEADER => [
"Authorization: SOME_STRING_VALUE",
"content-type: application/json",
"x-xdr-auth-id: SOME_STRING_VALUE"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}CURL *hnd = curl_easy_init();
curl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, "POST");
curl_easy_setopt(hnd, CURLOPT_URL, "https://api-yourfqdn/public_api/v1/issue_exceptions/");
struct curl_slist *headers = NULL;
headers = curl_slist_append(headers, "Authorization: SOME_STRING_VALUE");
headers = curl_slist_append(headers, "x-xdr-auth-id: SOME_STRING_VALUE");
headers = curl_slist_append(headers, "content-type: application/json");
curl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);
curl_easy_setopt(hnd, CURLOPT_POSTFIELDS, "{\"request_data\":{\"name\":\"string\",\"external_exception_id\":\"string\",\"rule\":\"string\",\"justification_text\":\"string\",\"justification_category\":\"COMPENSATING_CONTROL\",\"approval_justification\":\"string\",\"approver_email\":\"string\",\"expiration_ts\":\"2019-08-24T14:15:22Z\"}}");
CURLcode ret = curl_easy_perform(hnd);var client = new RestClient("https://api-yourfqdn/public_api/v1/issue_exceptions/");
var request = new RestRequest(Method.POST);
request.AddHeader("Authorization", "SOME_STRING_VALUE");
request.AddHeader("x-xdr-auth-id", "SOME_STRING_VALUE");
request.AddHeader("content-type", "application/json");
request.AddParameter("application/json", "{\"request_data\":{\"name\":\"string\",\"external_exception_id\":\"string\",\"rule\":\"string\",\"justification_text\":\"string\",\"justification_category\":\"COMPENSATING_CONTROL\",\"approval_justification\":\"string\",\"approver_email\":\"string\",\"expiration_ts\":\"2019-08-24T14:15:22Z\"}}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);request_dataobjectRequest data for creating a new issue exception.
Request data for creating a new issue exception.
namestringrequiredHuman-readable name for the exception
Human-readable name for the exception
external_exception_idstringOptional external tracking ID for the exception
Optional external tracking ID for the exception
rulestringrequiredJSON-encoded filter rule defining which issues this exception applies to. Uses the standard Cortex filter format with AND/OR structure. The value of each SEARCH_FIELD must be one of the supported field names — see Issue exception supported fields for the complete list.
JSON-encoded filter rule defining which issues this exception applies to. Uses the standard Cortex filter format with AND/OR structure. The value of each SEARCH_FIELD must be one of the supported field names — see Issue exception supported fields for the complete list.
justification_textstringrequiredFree-text justification explaining why this exception is needed
Free-text justification explaining why this exception is needed
justification_categorystring (Enum)requiredCategory of justification for the exception
Category of justification for the exception
approval_justificationstringFree-text justification explaining why this exception is approved or rejected
Free-text justification explaining why this exception is approved or rejected
approver_emailstringrequiredEmail of the designated approver. Required when the tenant has approval workflow enabled. Must match a registered approver.
Email of the designated approver. Required when the tenant has approval workflow enabled. Must match a registered approver.
expiration_tsstringrequireddate-timeExpiration date/time for the exception. Accepts ISO 8601 date-time or date-only format. Date-only values are normalized to end-of-day UTC (23:59:59).
Expiration date/time for the exception. Accepts ISO 8601 date-time or date-only format. Date-only values are normalized to end-of-day UTC (23:59:59).
{
"request_data": {
"name": "CVE-2024-1234 Exception for legacy hosts",
"rule": "{\"filter\":{\"AND\":[{\"SEARCH_FIELD\":\"cve_id\",\"SEARCH_TYPE\":\"EQ\",\"SEARCH_VALUE\":\"CVE-2024-1234\"}]}}",
"justification_text": "Legacy hosts scheduled for decommission in Q2",
"justification_category": "RISK_ACCEPTED",
"approver_email": "security-lead@example.com",
"expiration_ts": "2025-06-30"
}
}{
"request_data": {
"name": "Compensating control for CVE-2024-5678",
"external_exception_id": "JIRA-SEC-4567",
"rule": "{\"filter\":{\"AND\":[{\"SEARCH_FIELD\":\"cve_id\",\"SEARCH_TYPE\":\"EQ\",\"SEARCH_VALUE\":\"CVE-2024-5678\"}]}}",
"justification_text": "WAF rule deployed as compensating control",
"justification_category": "COMPENSATING_CONTROL",
"approver_email": "security-lead@example.com",
"expiration_ts": "2025-12-31T23:59:59Z"
}
}{
"request_data": {
"name": "CVE-2024-1234 Exception for legacy hosts",
"rule": "{\"filter\":{\"AND\":[{\"SEARCH_FIELD\":\"cve_id\",\"SEARCH_TYPE\":\"EQ\",\"SEARCH_VALUE\":\"CVE-2024-1234\"}]}}",
"justification_text": "Legacy hosts scheduled for decommission in Q2",
"justification_category": "RISK_ACCEPTED",
"expiration_ts": "2025-06-30"
}
}