Create an installation package. This is an async call that returns the distribution ID; it does not mean that the creation succeeded. To confirm the package has been created, check the status of the distribution by running the Get Distribution Status API.
Required license: Cortex XDR Prevent or Cortex XDR Pro per Endpoint
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/distributions/create'
-d
''
import http.client
conn = http.client.HTTPSConnection("api-yourfqdn")
payload = "{\"request_data\":{\"name\":\"string\",\"platform\":\"windows\",\"package_type\":\"string\",\"agent_version\":\"string\",\"windows_version\":\"string\",\"linux_version\":\"string\",\"macos_version\":\"string\",\"deployment_platform\":\"string\",\"default_namespace\":\"string\",\"node_selector\":{\"property1\":null,\"property2\":null},\"proxy\":[\"string\"],\"cluster_name\":\"string\",\"run_on_master_node\":true,\"run_on_all_nodes\":true}}"
headers = {
'Authorization': "SOME_STRING_VALUE",
'x-xdr-auth-id': "SOME_STRING_VALUE",
'content-type': "application/json"
}
conn.request("POST", "/public_api/v1/distributions/create", 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/distributions/create")
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\",\"platform\":\"windows\",\"package_type\":\"string\",\"agent_version\":\"string\",\"windows_version\":\"string\",\"linux_version\":\"string\",\"macos_version\":\"string\",\"deployment_platform\":\"string\",\"default_namespace\":\"string\",\"node_selector\":{\"property1\":null,\"property2\":null},\"proxy\":[\"string\"],\"cluster_name\":\"string\",\"run_on_master_node\":true,\"run_on_all_nodes\":true}}"
response = http.request(request)
puts response.read_bodyconst data = JSON.stringify({
"request_data": {
"name": "string",
"platform": "windows",
"package_type": "string",
"agent_version": "string",
"windows_version": "string",
"linux_version": "string",
"macos_version": "string",
"deployment_platform": "string",
"default_namespace": "string",
"node_selector": {
"property1": null,
"property2": null
},
"proxy": [
"string"
],
"cluster_name": "string",
"run_on_master_node": true,
"run_on_all_nodes": true
}
});
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/distributions/create");
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/distributions/create")
.header("Authorization", "SOME_STRING_VALUE")
.header("x-xdr-auth-id", "SOME_STRING_VALUE")
.header("content-type", "application/json")
.body("{\"request_data\":{\"name\":\"string\",\"platform\":\"windows\",\"package_type\":\"string\",\"agent_version\":\"string\",\"windows_version\":\"string\",\"linux_version\":\"string\",\"macos_version\":\"string\",\"deployment_platform\":\"string\",\"default_namespace\":\"string\",\"node_selector\":{\"property1\":null,\"property2\":null},\"proxy\":[\"string\"],\"cluster_name\":\"string\",\"run_on_master_node\":true,\"run_on_all_nodes\":true}}")
.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",
"platform": "windows",
"package_type": "string",
"agent_version": "string",
"windows_version": "string",
"linux_version": "string",
"macos_version": "string",
"deployment_platform": "string",
"default_namespace": "string",
"node_selector": [
"property1": ,
"property2":
],
"proxy": ["string"],
"cluster_name": "string",
"run_on_master_node": true,
"run_on_all_nodes": true
]] as [String : Any]
let postData = JSONSerialization.data(withJSONObject: parameters, options: [])
let request = NSMutableURLRequest(url: NSURL(string: "https://api-yourfqdn/public_api/v1/distributions/create")! 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/distributions/create",
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\",\"platform\":\"windows\",\"package_type\":\"string\",\"agent_version\":\"string\",\"windows_version\":\"string\",\"linux_version\":\"string\",\"macos_version\":\"string\",\"deployment_platform\":\"string\",\"default_namespace\":\"string\",\"node_selector\":{\"property1\":null,\"property2\":null},\"proxy\":[\"string\"],\"cluster_name\":\"string\",\"run_on_master_node\":true,\"run_on_all_nodes\":true}}",
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/distributions/create");
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\",\"platform\":\"windows\",\"package_type\":\"string\",\"agent_version\":\"string\",\"windows_version\":\"string\",\"linux_version\":\"string\",\"macos_version\":\"string\",\"deployment_platform\":\"string\",\"default_namespace\":\"string\",\"node_selector\":{\"property1\":null,\"property2\":null},\"proxy\":[\"string\"],\"cluster_name\":\"string\",\"run_on_master_node\":true,\"run_on_all_nodes\":true}}");
CURLcode ret = curl_easy_perform(hnd);var client = new RestClient("https://api-yourfqdn/public_api/v1/distributions/create");
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\",\"platform\":\"windows\",\"package_type\":\"string\",\"agent_version\":\"string\",\"windows_version\":\"string\",\"linux_version\":\"string\",\"macos_version\":\"string\",\"deployment_platform\":\"string\",\"default_namespace\":\"string\",\"node_selector\":{\"property1\":null,\"property2\":null},\"proxy\":[\"string\"],\"cluster_name\":\"string\",\"run_on_master_node\":true,\"run_on_all_nodes\":true}}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);request_dataobjectrequired
namestringThe name of the installation package.
The name of the installation package.
platformstring (Enum)The installation platform.
The installation platform.
package_typestringA string representing the type of package to create. Each JSON object must contain one of the following keywords:
standalone: Installation for a new agent. When using this, you must include the platform field with one of the following values: windows, linux, macos, android, kubernetes, helm.
upgrade: Upgrade of an agent from ESM. When using this, you must include the agent_version field with one of the following values: windows_version, linux_version, or macos_version.
A string representing the type of package to create. Each JSON object must contain one of the following keywords:
standalone: Installation for a new agent. When using this, you must include theplatformfield with one of the following values:windows,linux,macos,android,kubernetes,helm.upgrade: Upgrade of an agent from ESM. When using this, you must include theagent_versionfield with one of the following values:windows_version,linux_version, ormacos_version.
agent_versionstringUse agent_version when creating a standalone installer. The value should be the agent version number.
Use agent_version when creating a standalone installer. The value should be the agent version number.
windows_versionstringUse windows_version when creating an upgrade package. The value is the relevant version number.
Use windows_version when creating an upgrade package. The value is the relevant version number.
linux_versionstringUse linux_version when creating an upgrade package. The value is the relevant version number.
Use linux_version when creating an upgrade package. The value is the relevant version number.
macos_versionstringUse macos_version when creating an upgrade package. The value is the relevant version number.
Use macos_version when creating an upgrade package. The value is the relevant version number.
deployment_platformstringWhen the package_type is kubernetes or helm, use the deployment_platform to indicate the type of platform. Valid values include:
standard
openshift
gcos
bottlerocket
gke_autopilot
When the package_type is kubernetes or helm, use the deployment_platform to indicate the type of platform. Valid values include:
standardopenshiftgcosbottlerocketgke_autopilot
default_namespacestringThe default namespace
The default namespace
node_selectorobjectThe node selector in the following format:
`"node_selector": {"key": "val"}'
The node selector in the following format: `"node_selector": {"key": "val"}'
Additional propertiesobject
proxyarray[string]
cluster_namestringCluster name
Cluster name
run_on_master_nodebooleanWhether or not to run on the master node.
Whether or not to run on the master node.
run_on_all_nodesbooleanWhether or not to run on all nodes.
Whether or not to run on all nodes.
{
"request_data": {
"name": "<installation package name>",
"platform": "windows",
"package_type": "standalone",
"agent_version": "windows_version"
}
}{
"request_data": {
"name": "<installation package name>",
"package_type": "upgrade",
"agent_version": "windows_version"
}
}{
"request_data": {
"name": "PAPI Dist K8s",
"description": "Created using PAPI",
"endpoint_tags": [
"new-tag"
],
"package_type": "kubernetes",
"platform": "linux",
"agent_version": "8.8.0.10594",
"deployment_platform": "standard",
"default_namespace": "cortex-xdr",
"node_selector": {
"key": "val"
},
"proxy": [
"10.10.10.1:8080"
],
"cluster_name": "some_name",
"run_on_master_node": true,
"run_on_all_nodes": false
}
}