PingOne Platform APIs

Update RADIUS Gateway

 

PUT {{apiPath}}/environments/{{envID}}/gateways/{{gatewayID}}

You can use the PUT {{apiPath}}/environments/{{envID}}/gateways/{{gatewayID}} operation to update the details of an existing RADIUS gateway in your environment.

Points to note about the body of the request:

  • When updating a RADIUS gateway, you must include all the parameters that are required when creating a RADIUS gateway, even if you are not modifying their values.

  • You cannot change the type of a gateway in an update call.

Prerequisites

Request Model

For descriptions of the general parameters in the body of the request, refer to Gateway base data model.

Property Type Required?

description

String

Optional

enabled

Boolean

Required

name

String

Required

For descriptions of the RADIUS-specific parameters in the body of the request, refer to Gateway RADIUS data model.

Property Type Required?

davinci.policy.id

String

Required

defaultSharedSecret

String

Optional

networkPolicyServer

Object

Optional

networkPolicyServer.ip

String

Required

networkPolicyServer.port

Integer

Required

radiusClients

Object[]

Required

radiusClients.blastRadiusMitigation

Object

Optional

radiusClients.blastRadiusMitigation.limitProxyState

Boolean

Optional

radiusClients.blastRadiusMitigation.requireMsgAuth

Boolean

Optional

radiusClients.ip

String[]

Required

radiusClients.sharedSecret

String[]

Optional

Headers

Authorization      Bearer {{accessToken}}

Content-Type      application/json

Body

raw ( application/json )

{
    "name": "New RADIUS Gateway",
    "description": "Gateway with updated Davinci flow policy ID",
    "type": "RADIUS",
    "radiusClients": [
        {
            "ip": "127.0.0.1",
            "sharedSecret": null
        }
    ],
    "defaultSharedSecret": "secret",
    "davinci": {
        "policy": {
            "id": "567a3443878d406e3fb22f5307059e0b"
        }
    }
}

Example Request

  • cURL

  • C#

  • Go

  • HTTP

  • Java

  • jQuery

  • NodeJS

  • Python

  • PHP

  • Ruby

  • Swift

curl --location --globoff --request PUT '{{apiPath}}/environments/{{envID}}/gateways/{{gatewayID}}' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {{accessToken}}' \
--data '{
    "name": "New RADIUS Gateway",
    "description": "Gateway with updated Davinci flow policy ID",
    "type": "RADIUS",
    "radiusClients": [
        {
            "ip": "127.0.0.1",
            "sharedSecret": null
        }
    ],
    "defaultSharedSecret": "secret",
    "davinci": {
        "policy": {
            "id": "567a3443878d406e3fb22f5307059e0b"
        }
    }
}'
var options = new RestClientOptions("{{apiPath}}/environments/{{envID}}/gateways/{{gatewayID}}")
{
  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"": ""New RADIUS Gateway""," + "\n" +
@"    ""description"": ""Gateway with updated Davinci flow policy ID""," + "\n" +
@"    ""type"": ""RADIUS""," + "\n" +
@"    ""radiusClients"": [" + "\n" +
@"        {" + "\n" +
@"            ""ip"": ""127.0.0.1""," + "\n" +
@"            ""sharedSecret"": null" + "\n" +
@"        }" + "\n" +
@"    ]," + "\n" +
@"    ""defaultSharedSecret"": ""secret""," + "\n" +
@"    ""davinci"": {" + "\n" +
@"        ""policy"": {" + "\n" +
@"            ""id"": ""567a3443878d406e3fb22f5307059e0b""" + "\n" +
@"        }" + "\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}}/gateways/{{gatewayID}}"
  method := "PUT"

  payload := strings.NewReader(`{
    "name": "New RADIUS Gateway",
    "description": "Gateway with updated Davinci flow policy ID",
    "type": "RADIUS",
    "radiusClients": [
        {
            "ip": "127.0.0.1",
            "sharedSecret": null
        }
    ],
    "defaultSharedSecret": "secret",
    "davinci": {
        "policy": {
            "id": "567a3443878d406e3fb22f5307059e0b"
        }
    }
}`)

  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}}/gateways/{{gatewayID}} HTTP/1.1
Host: {{apiPath}}
Content-Type: application/json
Authorization: Bearer {{accessToken}}

{
    "name": "New RADIUS Gateway",
    "description": "Gateway with updated Davinci flow policy ID",
    "type": "RADIUS",
    "radiusClients": [
        {
            "ip": "127.0.0.1",
            "sharedSecret": null
        }
    ],
    "defaultSharedSecret": "secret",
    "davinci": {
        "policy": {
            "id": "567a3443878d406e3fb22f5307059e0b"
        }
    }
}
OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\n    \"name\": \"New RADIUS Gateway\",\n    \"description\": \"Gateway with updated Davinci flow policy ID\",\n    \"type\": \"RADIUS\",\n    \"radiusClients\": [\n        {\n            \"ip\": \"127.0.0.1\",\n            \"sharedSecret\": null\n        }\n    ],\n    \"defaultSharedSecret\": \"secret\",\n    \"davinci\": {\n        \"policy\": {\n            \"id\": \"567a3443878d406e3fb22f5307059e0b\"\n        }\n    }\n}");
Request request = new Request.Builder()
  .url("{{apiPath}}/environments/{{envID}}/gateways/{{gatewayID}}")
  .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}}/gateways/{{gatewayID}}",
  "method": "PUT",
  "timeout": 0,
  "headers": {
    "Content-Type": "application/json",
    "Authorization": "Bearer {{accessToken}}"
  },
  "data": JSON.stringify({
    "name": "New RADIUS Gateway",
    "description": "Gateway with updated Davinci flow policy ID",
    "type": "RADIUS",
    "radiusClients": [
      {
        "ip": "127.0.0.1",
        "sharedSecret": null
      }
    ],
    "defaultSharedSecret": "secret",
    "davinci": {
      "policy": {
        "id": "567a3443878d406e3fb22f5307059e0b"
      }
    }
  }),
};

$.ajax(settings).done(function (response) {
  console.log(response);
});
var request = require('request');
var options = {
  'method': 'PUT',
  'url': '{{apiPath}}/environments/{{envID}}/gateways/{{gatewayID}}',
  'headers': {
    'Content-Type': 'application/json',
    'Authorization': 'Bearer {{accessToken}}'
  },
  body: JSON.stringify({
    "name": "New RADIUS Gateway",
    "description": "Gateway with updated Davinci flow policy ID",
    "type": "RADIUS",
    "radiusClients": [
      {
        "ip": "127.0.0.1",
        "sharedSecret": null
      }
    ],
    "defaultSharedSecret": "secret",
    "davinci": {
      "policy": {
        "id": "567a3443878d406e3fb22f5307059e0b"
      }
    }
  })

};
request(options, function (error, response) {
  if (error) throw new Error(error);
  console.log(response.body);
});
import requests
import json

url = "{{apiPath}}/environments/{{envID}}/gateways/{{gatewayID}}"

payload = json.dumps({
  "name": "New RADIUS Gateway",
  "description": "Gateway with updated Davinci flow policy ID",
  "type": "RADIUS",
  "radiusClients": [
    {
      "ip": "127.0.0.1",
      "sharedSecret": None
    }
  ],
  "defaultSharedSecret": "secret",
  "davinci": {
    "policy": {
      "id": "567a3443878d406e3fb22f5307059e0b"
    }
  }
})
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}}/gateways/{{gatewayID}}');
$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": "New RADIUS Gateway",\n    "description": "Gateway with updated Davinci flow policy ID",\n    "type": "RADIUS",\n    "radiusClients": [\n        {\n            "ip": "127.0.0.1",\n            "sharedSecret": null\n        }\n    ],\n    "defaultSharedSecret": "secret",\n    "davinci": {\n        "policy": {\n            "id": "567a3443878d406e3fb22f5307059e0b"\n        }\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}}/gateways/{{gatewayID}}")

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": "New RADIUS Gateway",
  "description": "Gateway with updated Davinci flow policy ID",
  "type": "RADIUS",
  "radiusClients": [
    {
      "ip": "127.0.0.1",
      "sharedSecret": "__RUBY\#%0NULL__"
    }
  ],
  "defaultSharedSecret": "secret",
  "davinci": {
    "policy": {
      "id": "567a3443878d406e3fb22f5307059e0b"
    }
  }
})

response = http.request(request)
puts response.read_body
let parameters = "{\n    \"name\": \"New RADIUS Gateway\",\n    \"description\": \"Gateway with updated Davinci flow policy ID\",\n    \"type\": \"RADIUS\",\n    \"radiusClients\": [\n        {\n            \"ip\": \"127.0.0.1\",\n            \"sharedSecret\": null\n        }\n    ],\n    \"defaultSharedSecret\": \"secret\",\n    \"davinci\": {\n        \"policy\": {\n            \"id\": \"567a3443878d406e3fb22f5307059e0b\"\n        }\n    }\n}"
let postData = parameters.data(using: .utf8)

var request = URLRequest(url: URL(string: "{{apiPath}}/environments/{{envID}}/gateways/{{gatewayID}}")!,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.com/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6/gateways/c512b7ce-6700-4c3b-a73d-791062165789"
        },
        "environment": {
            "href": "https://api.pingone.com/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6"
        },
        "instances": {
            "href": "https://api.pingone.com/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6/gateways/c512b7ce-6700-4c3b-a73d-791062165789/instances"
        },
        "credentials": {
            "href": "https://api.pingone.com/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6/gateways/c512b7ce-6700-4c3b-a73d-791062165789/credentials"
        }
    },
    "id": "c512b7ce-6700-4c3b-a73d-791062165789",
    "environment": {
        "id": "abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6"
    },
    "name": "New RADIUS Gateway",
    "description": "Gateway with updated Davinci flow policy ID",
    "type": "RADIUS",
    "enabled": true,
    "supportedVersions": [
        {
            "version": "1.1.1",
            "image": "pingidentity/pingone-radius-gateway:1.1.1",
            "recommended": true,
            "latest": true
        },
        {
            "version": "1.1.0",
            "image": "pingidentity/pingone-radius-gateway:1.1.0",
            "supportEndsOn": "2024-11-30T00:00:00.000Z",
            "daysUntilSupportEnds": 217
        },
        {
            "version": "1.1.0",
            "image": "gcr.io/ping-identity/pingone/pingone-radius-gateway:1.1.0",
            "supportEndsOn": "2024-11-30T00:00:00.000Z",
            "daysUntilSupportEnds": 217
        }
    ],
    "currentAlerts": [
        {
            "category": "No Instances Connected",
            "detail": "No gateway instances are connected. All operations that require access to this gateway will fail.",
            "severity": "ERROR"
        }
    ],
    "radiusClients": [
        {
            "ip": "127.0.0.1"
        }
    ],
    "davinci": {
        "policy": {
            "id": "567a3443878d406e3fb22f5307059e0b"
        }
    },
    "defaultSharedSecret": "secret"
}