Update AITM Predictor
PUT {{apiPath}}/environments/{{envID}}/riskPredictors/{{aitmPredictorID}}
This request updates an existing Adversary-in-the-Middle (AitM) predictor, providing an updated list of domains.
The whiteList parameter is used to specify the domains.
Note that while the predictor is identified by the predictor ID in the URL of the request, the following parameters are also required in order for the request to succeed: name, compactName, type.
Prerequisites
-
Refer to Risk Predictors for important overview information.
Request Model
Refer to Risk Predictors for the complete data models.
Base data model
| Property | Type | Required? |
|---|---|---|
|
String |
Required |
|
String |
Required |
|
String |
Required |
|
List[] |
Optional |
Example Request
-
cURL
-
C#
-
Go
-
HTTP
-
Java
-
jQuery
-
NodeJS
-
Python
-
PHP
-
Ruby
-
Swift
curl --location --globoff --request PUT '{{apiPath}}/environments/{{envID}}/riskPredictors/{{aitmPredictorID}}' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {{accessToken}}' \
--data '{
"name": "Adversary In The Middle",
"compactName": "adversaryInTheMiddle",
"type": "ADVERSARY_IN_THE_MIDDLE",
"domainWhiteList": [
"example.com"
]
}'
var options = new RestClientOptions("{{apiPath}}/environments/{{envID}}/riskPredictors/{{aitmPredictorID}}")
{
MaxTimeout = -1,
};
var client = new RestClient(options);
var request = new RestRequest("", Method.Put);
request.AddHeader("Content-Type", "application/json");
request.AddHeader("Authorization", "Bearer {{accessToken}}");
var body = @"{" + "\n" +
@" ""name"": ""Adversary In The Middle""," + "\n" +
@" ""compactName"": ""adversaryInTheMiddle""," + "\n" +
@" ""type"": ""ADVERSARY_IN_THE_MIDDLE""," + "\n" +
@" ""domainWhiteList"": [" + "\n" +
@" ""example.com""" + "\n" +
@" ]" + "\n" +
@"}";
request.AddStringBody(body, DataFormat.Json);
RestResponse response = await client.ExecuteAsync(request);
Console.WriteLine(response.Content);
package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "{{apiPath}}/environments/{{envID}}/riskPredictors/{{aitmPredictorID}}"
method := "PUT"
payload := strings.NewReader(`{
"name": "Adversary In The Middle",
"compactName": "adversaryInTheMiddle",
"type": "ADVERSARY_IN_THE_MIDDLE",
"domainWhiteList": [
"example.com"
]
}`)
client := &http.Client {
}
req, err := http.NewRequest(method, url, payload)
if err != nil {
fmt.Println(err)
return
}
req.Header.Add("Content-Type", "application/json")
req.Header.Add("Authorization", "Bearer {{accessToken}}")
res, err := client.Do(req)
if err != nil {
fmt.Println(err)
return
}
defer res.Body.Close()
body, err := io.ReadAll(res.Body)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(string(body))
}
PUT /environments/{{envID}}/riskPredictors/{{aitmPredictorID}} HTTP/1.1
Host: {{apiPath}}
Content-Type: application/json
Authorization: Bearer {{accessToken}}
{
"name": "Adversary In The Middle",
"compactName": "adversaryInTheMiddle",
"type": "ADVERSARY_IN_THE_MIDDLE",
"domainWhiteList": [
"example.com"
]
}
OkHttpClient client = new OkHttpClient().newBuilder()
.build();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\n \"name\": \"Adversary In The Middle\",\n \"compactName\": \"adversaryInTheMiddle\",\n \"type\": \"ADVERSARY_IN_THE_MIDDLE\",\n \"domainWhiteList\": [\n \"example.com\"\n ]\n}");
Request request = new Request.Builder()
.url("{{apiPath}}/environments/{{envID}}/riskPredictors/{{aitmPredictorID}}")
.method("PUT", body)
.addHeader("Content-Type", "application/json")
.addHeader("Authorization", "Bearer {{accessToken}}")
.build();
Response response = client.newCall(request).execute();
var settings = {
"url": "{{apiPath}}/environments/{{envID}}/riskPredictors/{{aitmPredictorID}}",
"method": "PUT",
"timeout": 0,
"headers": {
"Content-Type": "application/json",
"Authorization": "Bearer {{accessToken}}"
},
"data": JSON.stringify({
"name": "Adversary In The Middle",
"compactName": "adversaryInTheMiddle",
"type": "ADVERSARY_IN_THE_MIDDLE",
"domainWhiteList": [
"example.com"
]
}),
};
$.ajax(settings).done(function (response) {
console.log(response);
});
var request = require('request');
var options = {
'method': 'PUT',
'url': '{{apiPath}}/environments/{{envID}}/riskPredictors/{{aitmPredictorID}}',
'headers': {
'Content-Type': 'application/json',
'Authorization': 'Bearer {{accessToken}}'
},
body: JSON.stringify({
"name": "Adversary In The Middle",
"compactName": "adversaryInTheMiddle",
"type": "ADVERSARY_IN_THE_MIDDLE",
"domainWhiteList": [
"example.com"
]
})
};
request(options, function (error, response) {
if (error) throw new Error(error);
console.log(response.body);
});
import requests
import json
url = "{{apiPath}}/environments/{{envID}}/riskPredictors/{{aitmPredictorID}}"
payload = json.dumps({
"name": "Adversary In The Middle",
"compactName": "adversaryInTheMiddle",
"type": "ADVERSARY_IN_THE_MIDDLE",
"domainWhiteList": [
"example.com"
]
})
headers = {
'Content-Type': 'application/json',
'Authorization': 'Bearer {{accessToken}}'
}
response = requests.request("PUT", url, headers=headers, data=payload)
print(response.text)
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('{{apiPath}}/environments/{{envID}}/riskPredictors/{{aitmPredictorID}}');
$request->setMethod(HTTP_Request2::METHOD_PUT);
$request->setConfig(array(
'follow_redirects' => TRUE
));
$request->setHeader(array(
'Content-Type' => 'application/json',
'Authorization' => 'Bearer {{accessToken}}'
));
$request->setBody('{\n "name": "Adversary In The Middle",\n "compactName": "adversaryInTheMiddle",\n "type": "ADVERSARY_IN_THE_MIDDLE",\n "domainWhiteList": [\n "example.com"\n ]\n}');
try {
$response = $request->send();
if ($response->getStatus() == 200) {
echo $response->getBody();
}
else {
echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
$response->getReasonPhrase();
}
}
catch(HTTP_Request2_Exception $e) {
echo 'Error: ' . $e->getMessage();
}
require "uri"
require "json"
require "net/http"
url = URI("{{apiPath}}/environments/{{envID}}/riskPredictors/{{aitmPredictorID}}")
http = Net::HTTP.new(url.host, url.port);
request = Net::HTTP::Put.new(url)
request["Content-Type"] = "application/json"
request["Authorization"] = "Bearer {{accessToken}}"
request.body = JSON.dump({
"name": "Adversary In The Middle",
"compactName": "adversaryInTheMiddle",
"type": "ADVERSARY_IN_THE_MIDDLE",
"domainWhiteList": [
"example.com"
]
})
response = http.request(request)
puts response.read_body
let parameters = "{\n \"name\": \"Adversary In The Middle\",\n \"compactName\": \"adversaryInTheMiddle\",\n \"type\": \"ADVERSARY_IN_THE_MIDDLE\",\n \"domainWhiteList\": [\n \"example.com\"\n ]\n}"
let postData = parameters.data(using: .utf8)
var request = URLRequest(url: URL(string: "{{apiPath}}/environments/{{envID}}/riskPredictors/{{aitmPredictorID}}")!,timeoutInterval: Double.infinity)
request.addValue("application/json", forHTTPHeaderField: "Content-Type")
request.addValue("Bearer {{accessToken}}", forHTTPHeaderField: "Authorization")
request.httpMethod = "PUT"
request.httpBody = postData
let task = URLSession.shared.dataTask(with: request) { data, response, error in
guard let data = data else {
print(String(describing: error))
return
}
print(String(data: data, encoding: .utf8)!)
}
task.resume()
Example Response
200 OK
{
"_links": {
"self": {
"href": "https://api.pingone.eu/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6/riskPredictors/7a6e027b-8d24-039b-055a-1d4994050d52"
},
"environment": {
"href": "https://api.pingone.eu/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6"
}
},
"id": "7a6e027b-8d24-039b-055a-1d4994050d52",
"environment": {
"id": "abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6"
},
"createdAt": "2021-05-12T13:11:50.960Z",
"createdBy": "SYSTEM_GENERATED",
"updatedAt": "2024-01-24T16:49:11.532Z",
"name": "Adversary In The Middle",
"compactName": "adversaryInTheMiddle",
"licensed": true,
"domainWhiteList": [
"example.com"
],
"type": "ADVERSARY_IN_THE_MIDDLE",
"condition": {
"scores": [
{
"name": "HIGH",
"value": "HIGH"
},
{
"name": "MEDIUM",
"value": "MEDIUM"
},
{
"name": "LOW",
"value": "LOW"
}
]
},
"deletable": false,
"tooltip": "predictor.tooltip.adversary.in.the.middle",
"default": {
"weight": 5,
"score": 80,
"result": {
"type": "VALUE"
},
"evaluated": true
}
}