PingOne Platform APIs

Update Decision Endpoint

 

PUT {{apiPath}}/environments/{{envID}}/decisionEndpoints/{{decisionEndpointID}}

Updating a policy decision endpoint is essentially the same as a create operation: it associates an endpoint with a specific policy version, or it defines it as always up-to-date. In the former case, the policy configuration is fetched from the Policy Editor Service and stored locally; in the latter case, no policy configuration is stored.

An existing endpoint may be reconfigured from a fixed policy version to a status of always up-to-date, or from always up-to-date to a fixed version.

The PUT {{apiPath}}/environments/{{envID}}/decisionEndpoints/{{decisionEndpointID}} modifies the attributes of the specified policy decision endpoint resource. The sample shows an update to the name, description, authorizationVersion, and recentDecisionsEnabled attributes.

Prerequisites

Request Model

For property descriptions, refer to Policy decision service data model

Property Type? Required?

alternateId

UUID

Optional

authorizationVersion.id

UUID

Optional

description

String

Required

id

UUID

Required

name

String

Required

owned

Boolean

Optional

policyId

UUID

Optional

recentDecisionsEnabled

Boolean

Optional

recordRecentRequests

Boolean

Required

Headers

Authorization      Bearer {{accessToken}}

Content-Type      application/json

Body

raw ( application/json )

{
    "name": "Prod Endpoint",
    "description": "Endpoint for use in production",
    "authorizationVersion": {
        "id": "{{authorizationVersionID}}"
    },
    "recentDecisionsEnabled": false,
    "owned": true,
    "alternateId": "1234567890"
}

Example Request

  • cURL

  • C#

  • Go

  • HTTP

  • Java

  • jQuery

  • NodeJS

  • Python

  • PHP

  • Ruby

  • Swift

curl --location --globoff --request PUT '{{apiPath}}/environments/{{envID}}/decisionEndpoints/{{decisionEndpointID}}' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {{accessToken}}' \
--data '{
    "name": "Prod Endpoint",
    "description": "Endpoint for use in production",
    "authorizationVersion": {
        "id": "{{authorizationVersionID}}"
    },
    "recentDecisionsEnabled": false,
    "owned": true,
    "alternateId": "1234567890"
}'
var options = new RestClientOptions("{{apiPath}}/environments/{{envID}}/decisionEndpoints/{{decisionEndpointID}}")
{
  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"": ""Prod Endpoint""," + "\n" +
@"    ""description"": ""Endpoint for use in production""," + "\n" +
@"    ""authorizationVersion"": {" + "\n" +
@"        ""id"": ""{{authorizationVersionID}}""" + "\n" +
@"    }," + "\n" +
@"    ""recentDecisionsEnabled"": false," + "\n" +
@"    ""owned"": true," + "\n" +
@"    ""alternateId"": ""1234567890""" + "\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}}/decisionEndpoints/{{decisionEndpointID}}"
  method := "PUT"

  payload := strings.NewReader(`{
    "name": "Prod Endpoint",
    "description": "Endpoint for use in production",
    "authorizationVersion": {
        "id": "{{authorizationVersionID}}"
    },
    "recentDecisionsEnabled": false,
    "owned": true,
    "alternateId": "1234567890"
}`)

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

{
    "name": "Prod Endpoint",
    "description": "Endpoint for use in production",
    "authorizationVersion": {
        "id": "{{authorizationVersionID}}"
    },
    "recentDecisionsEnabled": false,
    "owned": true,
    "alternateId": "1234567890"
}
OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\n    \"name\": \"Prod Endpoint\",\n    \"description\": \"Endpoint for use in production\",\n    \"authorizationVersion\": {\n        \"id\": \"{{authorizationVersionID}}\"\n    },\n    \"recentDecisionsEnabled\": false,\n    \"owned\": true,\n    \"alternateId\": \"1234567890\"\n}");
Request request = new Request.Builder()
  .url("{{apiPath}}/environments/{{envID}}/decisionEndpoints/{{decisionEndpointID}}")
  .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}}/decisionEndpoints/{{decisionEndpointID}}",
  "method": "PUT",
  "timeout": 0,
  "headers": {
    "Content-Type": "application/json",
    "Authorization": "Bearer {{accessToken}}"
  },
  "data": JSON.stringify({
    "name": "Prod Endpoint",
    "description": "Endpoint for use in production",
    "authorizationVersion": {
      "id": "{{authorizationVersionID}}"
    },
    "recentDecisionsEnabled": false,
    "owned": true,
    "alternateId": "1234567890"
  }),
};

$.ajax(settings).done(function (response) {
  console.log(response);
});
var request = require('request');
var options = {
  'method': 'PUT',
  'url': '{{apiPath}}/environments/{{envID}}/decisionEndpoints/{{decisionEndpointID}}',
  'headers': {
    'Content-Type': 'application/json',
    'Authorization': 'Bearer {{accessToken}}'
  },
  body: JSON.stringify({
    "name": "Prod Endpoint",
    "description": "Endpoint for use in production",
    "authorizationVersion": {
      "id": "{{authorizationVersionID}}"
    },
    "recentDecisionsEnabled": false,
    "owned": true,
    "alternateId": "1234567890"
  })

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

url = "{{apiPath}}/environments/{{envID}}/decisionEndpoints/{{decisionEndpointID}}"

payload = json.dumps({
  "name": "Prod Endpoint",
  "description": "Endpoint for use in production",
  "authorizationVersion": {
    "id": "{{authorizationVersionID}}"
  },
  "recentDecisionsEnabled": False,
  "owned": True,
  "alternateId": "1234567890"
})
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}}/decisionEndpoints/{{decisionEndpointID}}');
$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": "Prod Endpoint",\n    "description": "Endpoint for use in production",\n    "authorizationVersion": {\n        "id": "{{authorizationVersionID}}"\n    },\n    "recentDecisionsEnabled": false,\n    "owned": true,\n    "alternateId": "1234567890"\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}}/decisionEndpoints/{{decisionEndpointID}}")

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": "Prod Endpoint",
  "description": "Endpoint for use in production",
  "authorizationVersion": {
    "id": "{{authorizationVersionID}}"
  },
  "recentDecisionsEnabled": false,
  "owned": true,
  "alternateId": "1234567890"
})

response = http.request(request)
puts response.read_body
let parameters = "{\n    \"name\": \"Prod Endpoint\",\n    \"description\": \"Endpoint for use in production\",\n    \"authorizationVersion\": {\n        \"id\": \"{{authorizationVersionID}}\"\n    },\n    \"recentDecisionsEnabled\": false,\n    \"owned\": true,\n    \"alternateId\": \"1234567890\"\n}"
let postData = parameters.data(using: .utf8)

var request = URLRequest(url: URL(string: "{{apiPath}}/environments/{{envID}}/decisionEndpoints/{{decisionEndpointID}}")!,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/decisionEndpoints/bcb106be-96fa-4479-b3ee-dbd7666e4da2"
        },
        "authorizationVersion": {
            "href": "https://api.pingone.com/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6/authorizationVersions/d7437c70-3082-11ee-80bd-adfbbca2bf5b"
        },
        "environment": {
            "href": "https://api.pingone.com/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6"
        }
    },
    "id": "bcb106be-96fa-4479-b3ee-dbd7666e4da2",
    "name": "Prod Endpoint 1",
    "description": "Endpoint for use in production",
    "authorizationVersion": {
        "id": "d7437c70-3082-11ee-80bd-adfbbca2bf5b"
    },
    "recordRecentRequests": false,
    "owned": false
}