---
title: Update AITM Predictor
description: This request updates an existing Adversary-in-the-Middle (AitM) predictor, providing an updated list of domains.
component: pingone-api
page_id: pingone-api:protect:risk-predictors/update_aitm_predictor
canonical_url: https://developer.pingidentity.com/pingone-api/protect/risk-predictors/update_aitm_predictor.html
section_ids:
  prerequisites: Prerequisites
  headers: Headers
  body: Body
  example-request: Example Request
  example-response: Example Response
---

# Update AITM Predictor

##

```none
PUT {{apiPath}}/v1/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](#risk-predictors) for important overview information.

> **Collapse: Request Model**
>
> Refer to [Risk Predictors](#risk-predictors) for the complete data models.
>
> **Base data model**
>
> | Property      | Type    | Required? |
> | ------------- | ------- | --------- |
> | `compactName` | String  | Required  |
> | `name`        | String  | Required  |
> | `type`        | String  | Required  |
> | `whiteList`   | List\[] | Optional  |

### Headers

Authorization      Bearer {{accessToken}}

Content-Type      application/json

### Body

raw ( application/json )

```json
{
  "name": "Adversary In The Middle",
  "compactName": "adversaryInTheMiddle",
  "type": "ADVERSARY_IN_THE_MIDDLE",
  "domainWhiteList": [
    "example.com"
    ]
}
```

##

### Example Request

* cURL

* C#

* Go

* HTTP

* Java

* jQuery

* NodeJS

* Python

* PHP

* Ruby

* Swift

```shell
curl --location --globoff --request PUT '{{apiPath}}/v1/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"
    ]
}'
```

```csharp
var options = new RestClientOptions("{{apiPath}}/v1/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);
```

```golang
package main

import (
  "fmt"
  "strings"
  "net/http"
  "io"
)

func main() {

  url := "{{apiPath}}/v1/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))
}
```

```http
PUT /v1/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"
    ]
}
```

```java
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}}/v1/environments/{{envID}}/riskPredictors/{{aitmPredictorID}}")
  .method("PUT", body)
  .addHeader("Content-Type", "application/json")
  .addHeader("Authorization", "Bearer {{accessToken}}")
  .build();
Response response = client.newCall(request).execute();
```

```javascript
var settings = {
  "url": "{{apiPath}}/v1/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);
});
```

```javascript
var request = require('request');
var options = {
  'method': 'PUT',
  'url': '{{apiPath}}/v1/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);
});
```

```python
import requests
import json

url = "{{apiPath}}/v1/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
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('{{apiPath}}/v1/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();
}
```

```ruby
require "uri"
require "json"
require "net/http"

url = URI("{{apiPath}}/v1/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
```

```swift
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}}/v1/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

```json
{
    "_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
    }
}
```
